From 67878c934c687daf4c62f08c29e2aaa5b2c27b91 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Wed, 19 Aug 2015 17:46:01 +0900 Subject: [PATCH 001/164] adding tests for JSX attributes/closing bracket --- tests/cases/fourslash/formattingJsxElements.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/cases/fourslash/formattingJsxElements.ts b/tests/cases/fourslash/formattingJsxElements.ts index d0c77804ed5..3219fb396b9 100644 --- a/tests/cases/fourslash/formattingJsxElements.ts +++ b/tests/cases/fourslash/formattingJsxElements.ts @@ -10,10 +10,24 @@ //// ) ////} //// +////function () { +//// return
/*danglingBraketAutoformat*/ +////
+////} format.document(); goTo.marker("autoformat"); verify.currentLineContentIs(' Hello, World!'); goTo.marker("indent"); -verify.indentationIs(12); \ No newline at end of file +verify.indentationIs(12); + +goTo.marker("attrAutoformat"); +verify.currentLineContentIs(' className="">'); +goTo.marker("attrIndent"); +verify.indentationIs(8); +goTo.marker("danglingBracketAutoformat") +verify.currentLineContentIs(" >"); \ No newline at end of file From 2677b3fa2624c82c56843ac8b1109a3aecfa59ee Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 22 Aug 2015 03:37:48 +0900 Subject: [PATCH 002/164] fixing autoformat not working with empty JsxText --- src/services/formatting/formatting.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 66cdbd53750..c508d8696ad 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -360,7 +360,9 @@ namespace ts.formatting { range: TextRange, inheritedIndentation: number): number { - if (rangeOverlapsWithStartEnd(range, startPos, endPos)) { + if (rangeOverlapsWithStartEnd(range, startPos, endPos) || + rangeContainsStartEnd(range, startPos, endPos) /* Not to miss zero-range nodes e.g. JsxText */) { + if (inheritedIndentation !== Constants.Unknown) { return inheritedIndentation; } @@ -387,7 +389,10 @@ namespace ts.formatting { let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { - if (isSomeBlock(node.kind)) { + if (isIndentPreventedChildNode(parent.kind, node.kind)) { + indentation = parentDynamicIndentation.getIndentation(); + } + else if (isSomeBlock(node.kind)) { // blocks should be indented in // - other blocks // - source file @@ -1016,6 +1021,14 @@ namespace ts.formatting { return false; } + function isIndentPreventedChildNode(parent: SyntaxKind, child: SyntaxKind) { + switch (parent) { + case SyntaxKind.JsxElement: { + return child === SyntaxKind.JsxClosingElement; + } + } + } + function getOpenTokenForList(node: Node, list: Node[]) { switch (node.kind) { case SyntaxKind.Constructor: From eae30fd3de440dda52843b48f0929b24cf9a2651 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 22 Aug 2015 03:39:15 +0900 Subject: [PATCH 003/164] adding JSX closing tag/attribute/expression test --- src/services/formatting/smartIndenter.ts | 2 + .../cases/fourslash/formattingJsxElements.ts | 39 ++++++++++++++++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index c7f762fea64..30211e0a910 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -429,6 +429,8 @@ namespace ts.formatting { case SyntaxKind.ArrayBindingPattern: case SyntaxKind.ObjectBindingPattern: case SyntaxKind.JsxElement: + case SyntaxKind.JsxOpeningElement: + case SyntaxKind.JsxExpression: return true; } return false; diff --git a/tests/cases/fourslash/formattingJsxElements.ts b/tests/cases/fourslash/formattingJsxElements.ts index 3219fb396b9..3b98e7b5ca4 100644 --- a/tests/cases/fourslash/formattingJsxElements.ts +++ b/tests/cases/fourslash/formattingJsxElements.ts @@ -6,7 +6,7 @@ ////
////Hello, World!/*autoformat*/ /////*indent*/ -////
+//// /*closingTagAutoformat*/ //// ) ////} //// @@ -14,20 +14,49 @@ //// return
/*danglingBraketAutoformat*/ +////id={ +////"abc" + "cde"/*expressionAutoformat*/ +/////*expressionIndent*/ +////} +//// >/*danglingBracketAutoformat*/ ////
////} - +//// +////let h5 =
+/////*childJsxElementAutoformat*/ +/////*childJsxElementIndent*/ +/////*grandchildJsxElementAutoformat*/ +/////*containedClosingTagAutoformat*/ +////
format.document(); goTo.marker("autoformat"); verify.currentLineContentIs(' Hello, World!'); goTo.marker("indent"); verify.indentationIs(12); +goTo.marker("closingTagAutoformat"); +verify.currentLineContentIs(" "); goTo.marker("attrAutoformat"); -verify.currentLineContentIs(' className="">'); +verify.currentLineContentIs(' className=""'); goTo.marker("attrIndent"); verify.indentationIs(8); +goTo.marker("expressionAutoformat"); +verify.currentLineContentIs(' "abc" + "cde"'); +goTo.marker("expressionIndent"); +verify.indentationIs(12); + + goTo.marker("danglingBracketAutoformat") -verify.currentLineContentIs(" >"); \ No newline at end of file +// TODO: verify.currentLineContentIs(" >"); +verify.currentLineContentIs(" >"); + + +goTo.marker("childJsxElementAutoformat"); +verify.currentLineContentIs(" "); +goTo.marker("childJsxElementIndent"); +verify.indentationIs(8); +goTo.marker("grandchildJsxElementAutoformat"); +verify.currentLineContentIs(" "); +goTo.marker("containedClosingTagAutoformat"); +verify.currentLineContentIs(" "); \ No newline at end of file From 060828c8b9b4747a83c89ca22bf8f2fd4695162f Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 22 Aug 2015 21:35:58 +0900 Subject: [PATCH 004/164] partially move getIndentationToken into new function --- src/services/formatting/formatting.ts | 42 +++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index c508d8696ad..0b1d08e8b05 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -389,7 +389,7 @@ namespace ts.formatting { let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { - if (isIndentPreventedChildNode(parent.kind, node.kind)) { + if (isIndentPreventedCoreComponent(node.kind)) { indentation = parentDynamicIndentation.getIndentation(); } else if (isSomeBlock(node.kind)) { @@ -479,21 +479,12 @@ namespace ts.formatting { return indentation; } } - switch (kind) { - // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent - case SyntaxKind.OpenBraceToken: - case SyntaxKind.CloseBraceToken: - case SyntaxKind.OpenBracketToken: - case SyntaxKind.CloseBracketToken: - case SyntaxKind.OpenParenToken: - case SyntaxKind.CloseParenToken: - case SyntaxKind.ElseKeyword: - case SyntaxKind.WhileKeyword: - case SyntaxKind.AtToken: - 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; + if (isIndentPreventedCoreComponent(kind)) { + return indentation; + } + else { + // 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; } }, getIndentation: () => indentation, @@ -1021,11 +1012,20 @@ namespace ts.formatting { return false; } - function isIndentPreventedChildNode(parent: SyntaxKind, child: SyntaxKind) { - switch (parent) { - case SyntaxKind.JsxElement: { - return child === SyntaxKind.JsxClosingElement; - } + function isIndentPreventedCoreComponent(child: SyntaxKind) { + switch (child) { + // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent + case SyntaxKind.OpenBraceToken: + case SyntaxKind.CloseBraceToken: + case SyntaxKind.OpenBracketToken: + case SyntaxKind.CloseBracketToken: + case SyntaxKind.OpenParenToken: + case SyntaxKind.CloseParenToken: + case SyntaxKind.ElseKeyword: + case SyntaxKind.WhileKeyword: + case SyntaxKind.AtToken: + case SyntaxKind.JsxClosingElement: + return true; } } From 56fc7ec68d5117224c64d25ddf89a6fdcbce3fdf Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 22 Aug 2015 22:24:31 +0900 Subject: [PATCH 005/164] revert 060828c --- src/services/formatting/formatting.ts | 32 +++++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 0b1d08e8b05..9a91c85db0b 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -389,7 +389,7 @@ namespace ts.formatting { let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { - if (isIndentPreventedCoreComponent(node.kind)) { + if (isIndentPreventedChildNode(parent.kind, node.kind)) { indentation = parentDynamicIndentation.getIndentation(); } else if (isSomeBlock(node.kind)) { @@ -479,12 +479,21 @@ namespace ts.formatting { return indentation; } } - if (isIndentPreventedCoreComponent(kind)) { - return indentation; - } - else { - // 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; + switch (kind) { + // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent + case SyntaxKind.OpenBraceToken: + case SyntaxKind.CloseBraceToken: + case SyntaxKind.OpenBracketToken: + case SyntaxKind.CloseBracketToken: + case SyntaxKind.OpenParenToken: + case SyntaxKind.CloseParenToken: + case SyntaxKind.ElseKeyword: + case SyntaxKind.WhileKeyword: + case SyntaxKind.AtToken: + 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; } }, getIndentation: () => indentation, @@ -1012,6 +1021,14 @@ namespace ts.formatting { return false; } + function isIndentPreventedChildNode(parent: SyntaxKind, child: SyntaxKind) { + switch (parent) { + case SyntaxKind.JsxElement: { + return child === SyntaxKind.JsxClosingElement; + } + } + } + function isIndentPreventedCoreComponent(child: SyntaxKind) { switch (child) { // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent @@ -1027,6 +1044,7 @@ namespace ts.formatting { case SyntaxKind.JsxClosingElement: return true; } + return false; } function getOpenTokenForList(node: Node, list: Node[]) { From 92e3b3b5faad8531d381e54c5856879b29d6d3c0 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Wed, 26 Aug 2015 01:06:37 +0900 Subject: [PATCH 006/164] remove isIndentPreventedChildNode --- src/services/formatting/formatting.ts | 29 ++------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 9a91c85db0b..a3b32099cca 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -389,7 +389,8 @@ namespace ts.formatting { let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { - if (isIndentPreventedChildNode(parent.kind, node.kind)) { + if (parent.kind === SyntaxKind.JsxElement && node.kind === SyntaxKind.JsxClosingElement) { + // JsxClosingElement should not be indented indentation = parentDynamicIndentation.getIndentation(); } else if (isSomeBlock(node.kind)) { @@ -1021,32 +1022,6 @@ namespace ts.formatting { return false; } - function isIndentPreventedChildNode(parent: SyntaxKind, child: SyntaxKind) { - switch (parent) { - case SyntaxKind.JsxElement: { - return child === SyntaxKind.JsxClosingElement; - } - } - } - - function isIndentPreventedCoreComponent(child: SyntaxKind) { - switch (child) { - // open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent - case SyntaxKind.OpenBraceToken: - case SyntaxKind.CloseBraceToken: - case SyntaxKind.OpenBracketToken: - case SyntaxKind.CloseBracketToken: - case SyntaxKind.OpenParenToken: - case SyntaxKind.CloseParenToken: - case SyntaxKind.ElseKeyword: - case SyntaxKind.WhileKeyword: - case SyntaxKind.AtToken: - case SyntaxKind.JsxClosingElement: - return true; - } - return false; - } - function getOpenTokenForList(node: Node, list: Node[]) { switch (node.kind) { case SyntaxKind.Constructor: From 2c395e6819efdbca9c76c3d7182c8d4f91908be4 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Thu, 8 Oct 2015 02:48:10 +0900 Subject: [PATCH 007/164] trimWhitespacesInEmptyLineTrivia --- src/services/formatting/formatting.ts | 51 +++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 4a7033c6f3e..08a84c83483 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -121,7 +121,7 @@ namespace ts.formatting { function findOutermostParent(position: number, expectedTokenKind: SyntaxKind, sourceFile: SourceFile): Node { let precedingToken = findPrecedingToken(position, sourceFile); - + // when it is claimed that trigger character was typed at given position // we verify that there is a token with a matching kind whose end is equal to position (because the character was just typed). // If this condition is not hold - then trigger character was typed in some other context, @@ -151,7 +151,7 @@ namespace ts.formatting { return current; } - + // Returns true if node is a element in some list in parent // i.e. parent is class declaration with the list of members and node is one of members. function isListElement(parent: Node, node: Node): boolean { @@ -198,7 +198,7 @@ namespace ts.formatting { if (!errors.length) { return rangeHasNoErrors; } - + // pick only errors that fall in range let sorted = errors .filter(d => rangeOverlapsWithStartEnd(originalRange, d.start, d.start + d.length)) @@ -340,6 +340,12 @@ namespace ts.formatting { let delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); processNode(enclosingNode, enclosingNode, startLine, undecoratedStartLine, initialIndentation, delta); } + else { + let leadingTrivia = formattingScanner.readTokenInfo(undefined).leadingTrivia; + if (leadingTrivia) { + trimWhitespacesInEmptyLineTrivia(leadingTrivia, true); + } + } formattingScanner.close(); @@ -445,7 +451,7 @@ namespace ts.formatting { if ((node).asteriskToken) { return SyntaxKind.AsteriskToken; } - // fall-through + // fall-through case SyntaxKind.PropertyDeclaration: case SyntaxKind.Parameter: @@ -555,6 +561,13 @@ namespace ts.formatting { consumeTokenAndAdvanceScanner(tokenInfo, node, nodeDynamicIndentation); } + if (!formattingScanner.isOnToken()) { + let leadingTrivia = formattingScanner.readTokenInfo(node).leadingTrivia; + if (leadingTrivia) { + trimWhitespacesInEmptyLineTrivia(leadingTrivia, true); + } + } + function processChildNode( child: Node, inheritedIndentation: number, @@ -686,6 +699,7 @@ namespace ts.formatting { let indentToken = false; if (currentTokenInfo.leadingTrivia) { + trimWhitespacesInEmptyLineTrivia(currentTokenInfo.leadingTrivia, formattingScanner.lastTrailingTriviaWasNewLine()); processTrivia(currentTokenInfo.leadingTrivia, parent, childContextNode, dynamicIndentation); } @@ -838,8 +852,8 @@ namespace ts.formatting { // We need to trim trailing whitespace between the tokens if they were on different lines, and no rule was applied to put them on the same line trimTrailingWhitespaces = - (rule.Operation.Action & (RuleAction.NewLine | RuleAction.Space)) && - rule.Flag !== RuleFlags.CanDeleteNewLines; + (rule.Operation.Action & (RuleAction.NewLine | RuleAction.Space)) && + rule.Flag !== RuleFlags.CanDeleteNewLines; } else { trimTrailingWhitespaces = true; @@ -949,6 +963,31 @@ namespace ts.formatting { } } + function trimWhitespacesInEmptyLineTrivia(trivia: TextRangeWithKind[], lastTraviaWasNewLine: boolean) { + let targetCandidate: TextRangeWithKind; + + for (let triviaItem of trivia) { + switch (triviaItem.kind) { + case SyntaxKind.WhitespaceTrivia: + targetCandidate = lastTraviaWasNewLine ? triviaItem : undefined; + break; + case SyntaxKind.NewLineTrivia: + if (targetCandidate) { + recordDelete(targetCandidate.pos, targetCandidate.end - targetCandidate.pos); + targetCandidate = undefined; + } + break; + default: + targetCandidate = undefined; + break; + } + lastTraviaWasNewLine = triviaItem.kind === SyntaxKind.NewLineTrivia; + } + if (targetCandidate && targetCandidate.end === sourceFile.end) { + recordDelete(targetCandidate.pos, targetCandidate.end - targetCandidate.pos); + } + } + function newTextChange(start: number, len: number, newText: string): TextChange { return { span: createTextSpan(start, len), newText } } From 790bb21b127261fe06524ff12c8067a35d26cec1 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Fri, 9 Oct 2015 16:38:16 +0900 Subject: [PATCH 008/164] trimTrailingWhitespacesForRemainingRange --- src/services/formatting/formatting.ts | 45 +++++----------- .../fourslash/formatDocumentWithTrivia.ts | 51 +++++++++++++++++++ 2 files changed, 63 insertions(+), 33 deletions(-) create mode 100644 tests/cases/fourslash/formatDocumentWithTrivia.ts diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 08a84c83483..7c81f3c91b3 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -340,10 +340,12 @@ namespace ts.formatting { let delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); processNode(enclosingNode, enclosingNode, startLine, undecoratedStartLine, initialIndentation, delta); } - else { + + if (!formattingScanner.isOnToken()) { let leadingTrivia = formattingScanner.readTokenInfo(undefined).leadingTrivia; if (leadingTrivia) { - trimWhitespacesInEmptyLineTrivia(leadingTrivia, true); + processTrivia(leadingTrivia, enclosingNode, enclosingNode, undefined); + trimTrailingWhitespacesForRemainingRange(); } } @@ -561,13 +563,6 @@ namespace ts.formatting { consumeTokenAndAdvanceScanner(tokenInfo, node, nodeDynamicIndentation); } - if (!formattingScanner.isOnToken()) { - let leadingTrivia = formattingScanner.readTokenInfo(node).leadingTrivia; - if (leadingTrivia) { - trimWhitespacesInEmptyLineTrivia(leadingTrivia, true); - } - } - function processChildNode( child: Node, inheritedIndentation: number, @@ -699,7 +694,6 @@ namespace ts.formatting { let indentToken = false; if (currentTokenInfo.leadingTrivia) { - trimWhitespacesInEmptyLineTrivia(currentTokenInfo.leadingTrivia, formattingScanner.lastTrailingTriviaWasNewLine()); processTrivia(currentTokenInfo.leadingTrivia, parent, childContextNode, dynamicIndentation); } @@ -852,7 +846,7 @@ namespace ts.formatting { // We need to trim trailing whitespace between the tokens if they were on different lines, and no rule was applied to put them on the same line trimTrailingWhitespaces = - (rule.Operation.Action & (RuleAction.NewLine | RuleAction.Space)) && + (rule.Operation.Action & (RuleAction.NewLine | RuleAction.Space | RuleAction.Ignore)) && rule.Flag !== RuleFlags.CanDeleteNewLines; } else { @@ -963,29 +957,14 @@ namespace ts.formatting { } } - function trimWhitespacesInEmptyLineTrivia(trivia: TextRangeWithKind[], lastTraviaWasNewLine: boolean) { - let targetCandidate: TextRangeWithKind; - - for (let triviaItem of trivia) { - switch (triviaItem.kind) { - case SyntaxKind.WhitespaceTrivia: - targetCandidate = lastTraviaWasNewLine ? triviaItem : undefined; - break; - case SyntaxKind.NewLineTrivia: - if (targetCandidate) { - recordDelete(targetCandidate.pos, targetCandidate.end - targetCandidate.pos); - targetCandidate = undefined; - } - break; - default: - targetCandidate = undefined; - break; - } - lastTraviaWasNewLine = triviaItem.kind === SyntaxKind.NewLineTrivia; - } - if (targetCandidate && targetCandidate.end === sourceFile.end) { - recordDelete(targetCandidate.pos, targetCandidate.end - targetCandidate.pos); + function trimTrailingWhitespacesForRemainingRange() { + let startPosition = previousRange ? previousRange.end : originalRange.pos; + let startLine = sourceFile.getLineAndCharacterOfPosition(startPosition).line; + let endLine = sourceFile.getLineAndCharacterOfPosition(originalRange.end).line; + if (originalRange.end === sourceFile.end) { + endLine++; } + trimTrailingWhitespacesForLines(startLine, endLine, previousRange); } function newTextChange(start: number, len: number, newText: string): TextChange { diff --git a/tests/cases/fourslash/formatDocumentWithTrivia.ts b/tests/cases/fourslash/formatDocumentWithTrivia.ts new file mode 100644 index 00000000000..d51677be81d --- /dev/null +++ b/tests/cases/fourslash/formatDocumentWithTrivia.ts @@ -0,0 +1,51 @@ +/// + +//// +////// whitespace below +//// +////// whitespace above +//// +////let x; +//// +////// abc +//// +////let y; +//// +////// whitespace above again +//// +////while (true) { +//// while (true) { +//// } +//// +//// // whitespace above +////} +//// +////// whitespace above again +//// +//// + +format.document(); + +verify.currentFileContentIs(` +// whitespace below + +// whitespace above + +let x; + +// abc + +let y; + +// whitespace above again + +while (true) { + while (true) { + } + + // whitespace above +} + +// whitespace above again + +`); From 13d2a729c984813cfb9f128dcb122e07f5c41273 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Fri, 9 Oct 2015 16:40:47 +0900 Subject: [PATCH 009/164] restore fall-through indentation --- 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 7c81f3c91b3..d3555578cbe 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -453,7 +453,7 @@ namespace ts.formatting { if ((node).asteriskToken) { return SyntaxKind.AsteriskToken; } - // fall-through + // fall-through case SyntaxKind.PropertyDeclaration: case SyntaxKind.Parameter: From 6580f877e7a44c4dadeddf24923ebe7caf3f0bd1 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 10 Oct 2015 16:38:10 +0900 Subject: [PATCH 010/164] trim the whole last line when it has whitespaces only --- src/services/formatting/formatting.ts | 38 +++++++++++++++++++++------ 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index d3555578cbe..48914147e82 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -946,22 +946,44 @@ namespace ts.formatting { continue; } - let pos = lineEndPosition; - while (pos >= lineStartPosition && isWhiteSpace(sourceFile.text.charCodeAt(pos))) { - pos--; - } - if (pos !== lineEndPosition) { - Debug.assert(pos === lineStartPosition || !isWhiteSpace(sourceFile.text.charCodeAt(pos))); - recordDelete(pos + 1, lineEndPosition - pos); + let whitespaceStart = getTrailingWhitespaceStartPosition(lineStartPosition, lineEndPosition); + if (whitespaceStart !== -1) { + recordDelete(whitespaceStart, lineEndPosition + 1 - whitespaceStart); } } } + /** + * @param start The position of the first character in range + * @param end The position of the last character in range + */ + function getTrailingWhitespaceStartPosition(start: number, end: number) { + let pos = end; + while (pos >= start && isWhiteSpace(sourceFile.text.charCodeAt(pos))) { + pos--; + } + if (pos !== end) { + // pos must be out of range or non-whitespace + Debug.assert(pos === start - 1 || !isWhiteSpace(sourceFile.text.charCodeAt(pos))); + return pos + 1; + } + return -1; + } + + /** + * Trimming will be done for lines after the previous range + */ function trimTrailingWhitespacesForRemainingRange() { let startPosition = previousRange ? previousRange.end : originalRange.pos; + let startLine = sourceFile.getLineAndCharacterOfPosition(startPosition).line; let endLine = sourceFile.getLineAndCharacterOfPosition(originalRange.end).line; - if (originalRange.end === sourceFile.end) { + + let endLineStartPosition = getStartPositionOfLine(endLine, sourceFile); + let endLineEndPosition = getEndLinePosition(endLine, sourceFile); + + if (getTrailingWhitespaceStartPosition(endLineStartPosition, endLineEndPosition) === endLineStartPosition) { + // Trim the whole last line when it has whitespaces only endLine++; } trimTrailingWhitespacesForLines(startLine, endLine, previousRange); From 82bed69123ec40430bedf28ea01293c394d8b04a Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 10 Oct 2015 16:41:54 +0900 Subject: [PATCH 011/164] last line whitespace test --- tests/cases/fourslash/formatSelectionWithTrivia2.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 tests/cases/fourslash/formatSelectionWithTrivia2.ts diff --git a/tests/cases/fourslash/formatSelectionWithTrivia2.ts b/tests/cases/fourslash/formatSelectionWithTrivia2.ts new file mode 100644 index 00000000000..06b43009a22 --- /dev/null +++ b/tests/cases/fourslash/formatSelectionWithTrivia2.ts @@ -0,0 +1,10 @@ +/// + +/////*begin*/; +//// +/////*end*/ +//// + +format.selection('begin', 'end'); + +verify.currentFileContentIs(";\n\n\n "); From de89459162c322d19de450a6915207d9e26a7df6 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 16:19:40 -0800 Subject: [PATCH 012/164] add new rule --- Jakefile.js | 16 ++-------- scripts/tslint/noIncrementDecrementRule.ts | 35 ++++++++++++++++++++++ tslint.json | 3 +- 3 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 scripts/tslint/noIncrementDecrementRule.ts diff --git a/Jakefile.js b/Jakefile.js index 398b897097d..c6f364fe77f 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -108,17 +108,6 @@ var serverCoreSources = [ return path.join(serverDirectory, f); }); -var scriptSources = [ - "tslint/booleanTriviaRule.ts", - "tslint/nextLineRule.ts", - "tslint/noNullRule.ts", - "tslint/preferConstRule.ts", - "tslint/typeOperatorSpacingRule.ts", - "tslint/noInOperatorRule.ts" -].map(function (f) { - return path.join(scriptsDirectory, f); -}); - var serverSources = serverCoreSources.concat(servicesSources); var languageServiceLibrarySources = [ @@ -877,7 +866,8 @@ var tslintRules = ([ "preferConstRule", "booleanTriviaRule", "typeOperatorSpacingRule", - "noInOperatorRule" + "noInOperatorRule", + "noIncrementDecrementRule" ]); var tslintRulesFiles = tslintRules.map(function(p) { return path.join(tslintRuleDir, p + ".ts"); @@ -923,7 +913,7 @@ function lintFileAsync(options, path, cb) { var lintTargets = compilerSources .concat(harnessCoreSources) .concat(serverCoreSources) - .concat(scriptSources); + .concat(tslintRulesFiles); desc("Runs tslint on the compiler sources"); task("lint", ["build-rules"], function() { diff --git a/scripts/tslint/noIncrementDecrementRule.ts b/scripts/tslint/noIncrementDecrementRule.ts new file mode 100644 index 00000000000..f3b8f26f9f9 --- /dev/null +++ b/scripts/tslint/noIncrementDecrementRule.ts @@ -0,0 +1,35 @@ +import * as Lint from "tslint/lib/lint"; +import * as ts from "typescript"; + + +export class Rule extends Lint.Rules.AbstractRule { + public static FAILURE_STRING = "Don't use '++' or '--' operators outside for for loops or statements - prefer '+= 1' and '-= 1'."; + + public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { + return this.applyWithWalker(new IncrementDecrementWalker(sourceFile, this.getOptions())); + } +} + +class IncrementDecrementWalker extends Lint.RuleWalker { + + visitPostfixUnaryExpression(node: ts.PostfixUnaryExpression) { + super.visitPostfixUnaryExpression(node); + if (node.operator === ts.SyntaxKind.PlusPlusToken || node.operator == ts.SyntaxKind.MinusMinusToken) { + this.visitIncrementDecrement(node); + } + } + + visitPrefixUnaryExpression(node: ts.PrefixUnaryExpression) { + super.visitPrefixUnaryExpression(node); + if (node.operator === ts.SyntaxKind.PlusPlusToken || node.operator == ts.SyntaxKind.MinusMinusToken) { + this.visitIncrementDecrement(node); + } + } + + visitIncrementDecrement(node: ts.UnaryExpression) { + if (node.parent && (node.parent.kind === ts.SyntaxKind.ExpressionStatement || node.parent.kind === ts.SyntaxKind.ForStatement)) { + return; + } + this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); + } +} diff --git a/tslint.json b/tslint.json index 9b010d9a896..a0b08594c88 100644 --- a/tslint.json +++ b/tslint.json @@ -41,6 +41,7 @@ "boolean-trivia": true, "type-operator-spacing": true, "prefer-const": true, - "no-in-operator": true + "no-in-operator": true, + "no-increment-decrement": true } } From 3fba14ed6acf219c1ac4ab6fc94eea00e3dc1545 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 16:20:31 -0800 Subject: [PATCH 013/164] rule text fix --- scripts/tslint/noIncrementDecrementRule.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tslint/noIncrementDecrementRule.ts b/scripts/tslint/noIncrementDecrementRule.ts index f3b8f26f9f9..25b18b61ae9 100644 --- a/scripts/tslint/noIncrementDecrementRule.ts +++ b/scripts/tslint/noIncrementDecrementRule.ts @@ -3,7 +3,7 @@ import * as ts from "typescript"; export class Rule extends Lint.Rules.AbstractRule { - public static FAILURE_STRING = "Don't use '++' or '--' operators outside for for loops or statements - prefer '+= 1' and '-= 1'."; + public static FAILURE_STRING = "Don't use '++' or '--' operators outside for loops or statements - prefer '+= 1' and '-= 1'."; public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { return this.applyWithWalker(new IncrementDecrementWalker(sourceFile, this.getOptions())); From a69825e84e7e08a5a05e00fc4d19ec613968c1eb Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 16:27:19 -0800 Subject: [PATCH 014/164] tweak rules --- scripts/tslint/noIncrementDecrementRule.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/tslint/noIncrementDecrementRule.ts b/scripts/tslint/noIncrementDecrementRule.ts index 25b18b61ae9..c8655f0933d 100644 --- a/scripts/tslint/noIncrementDecrementRule.ts +++ b/scripts/tslint/noIncrementDecrementRule.ts @@ -3,7 +3,8 @@ import * as ts from "typescript"; export class Rule extends Lint.Rules.AbstractRule { - public static FAILURE_STRING = "Don't use '++' or '--' operators outside for loops or statements - prefer '+= 1' and '-= 1'."; + public static POSTFIX_FAILURE_STRING = "Don't use '++' or '--' postfix operators outside statements, for loops, or element access expressions."; + public static PREFIX_FAILURE_STRING = "Don't use '++' or '--' prefix operators."; public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { return this.applyWithWalker(new IncrementDecrementWalker(sourceFile, this.getOptions())); @@ -22,14 +23,14 @@ class IncrementDecrementWalker extends Lint.RuleWalker { visitPrefixUnaryExpression(node: ts.PrefixUnaryExpression) { super.visitPrefixUnaryExpression(node); if (node.operator === ts.SyntaxKind.PlusPlusToken || node.operator == ts.SyntaxKind.MinusMinusToken) { - this.visitIncrementDecrement(node); + this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.PREFIX_FAILURE_STRING)); } } visitIncrementDecrement(node: ts.UnaryExpression) { - if (node.parent && (node.parent.kind === ts.SyntaxKind.ExpressionStatement || node.parent.kind === ts.SyntaxKind.ForStatement)) { + if (node.parent && (node.parent.kind === ts.SyntaxKind.ExpressionStatement || node.parent.kind === ts.SyntaxKind.ForStatement || node.parent.kind === ts.SyntaxKind.ElementAccessExpression)) { return; } - this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); + this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.POSTFIX_FAILURE_STRING)); } } From 06badd0e0d334d5496a79a4b39f25d4cafffe053 Mon Sep 17 00:00:00 2001 From: Yui T Date: Tue, 8 Dec 2015 18:53:37 -0800 Subject: [PATCH 015/164] Update tests --- tests/cases/fourslash/tsxCompletion11.ts | 7 ++++++ tests/cases/fourslash/tsxCompletion12.ts | 8 +++++++ tests/cases/fourslash/tsxCompletion13.ts | 8 +++++++ tests/cases/fourslash/tsxCompletion14.ts | 8 +++++++ tests/cases/fourslash/tsxCompletion15.ts | 9 +++++++ tests/cases/fourslash/tsxCompletion16.ts | 7 ++++++ tests/cases/fourslash/tsxCompletion17.ts | 8 +++++++ tests/cases/fourslash/tsxCompletion18.ts | 30 ++++++++++++++++++++++++ tests/cases/fourslash/tsxQuickInfo1.ts | 18 ++++++++++++++ tests/cases/fourslash/tsxQuickInfo2.ts | 24 +++++++++++++++++++ 10 files changed, 127 insertions(+) create mode 100644 tests/cases/fourslash/tsxCompletion11.ts create mode 100644 tests/cases/fourslash/tsxCompletion12.ts create mode 100644 tests/cases/fourslash/tsxCompletion13.ts create mode 100644 tests/cases/fourslash/tsxCompletion14.ts create mode 100644 tests/cases/fourslash/tsxCompletion15.ts create mode 100644 tests/cases/fourslash/tsxCompletion16.ts create mode 100644 tests/cases/fourslash/tsxCompletion17.ts create mode 100644 tests/cases/fourslash/tsxCompletion18.ts create mode 100644 tests/cases/fourslash/tsxQuickInfo1.ts create mode 100644 tests/cases/fourslash/tsxQuickInfo2.ts diff --git a/tests/cases/fourslash/tsxCompletion11.ts b/tests/cases/fourslash/tsxCompletion11.ts new file mode 100644 index 00000000000..70626a84791 --- /dev/null +++ b/tests/cases/fourslash/tsxCompletion11.ts @@ -0,0 +1,7 @@ +/// + +//@Filename: file.tsx +//// var x1 = + +//@Filename: file.tsx +//// var x1 =
+ +//@Filename: file.tsx +//// class MyElement {} +//// var x1 = + +//@Filename: file.tsx +//// class MyElement {} +//// var x1 = + +//@Filename: file.tsx +//// class MyElement {} +//// var x1 = + +//@Filename: file.tsx +//// var x1 = + +//@Filename: file.tsx +//// var x1 = + +//@Filename: file.tsx +//// var x =
+////

+//// +//// +//// + +goTo.marker("1"); +verify.memberListCount(1); +verify.completionListContains('h1'); + +goTo.marker("2"); +verify.memberListCount(1); +verify.completionListContains('div'); + +goTo.marker("3"); +verify.memberListCount(0); + +goTo.marker("4"); +verify.memberListCount(1); +verify.completionListContains('div'); + +goTo.marker("5"); +verify.memberListCount(0); + +goTo.marker("6"); +verify.memberListCount(1); +verify.completionListContains('div'); \ No newline at end of file diff --git a/tests/cases/fourslash/tsxQuickInfo1.ts b/tests/cases/fourslash/tsxQuickInfo1.ts new file mode 100644 index 00000000000..b1db1eb4a47 --- /dev/null +++ b/tests/cases/fourslash/tsxQuickInfo1.ts @@ -0,0 +1,18 @@ +/// + +//@Filename: file.tsx +//// var x1 = +//// class MyElement {} +//// var z = + +goTo.marker("1"); +verify.quickInfoIs("any", undefined); + +goTo.marker("2"); +verify.quickInfoIs("any", undefined);; + +goTo.marker("3"); +verify.quickInfoIs("class MyElement", undefined);; + +goTo.marker("4"); +verify.quickInfoIs("class MyElement", undefined);; \ No newline at end of file diff --git a/tests/cases/fourslash/tsxQuickInfo2.ts b/tests/cases/fourslash/tsxQuickInfo2.ts new file mode 100644 index 00000000000..0eb7a5100c4 --- /dev/null +++ b/tests/cases/fourslash/tsxQuickInfo2.ts @@ -0,0 +1,24 @@ +/// + +//@Filename: file.tsx +//// declare module JSX { +//// interface Element { } +//// interface IntrinsicElements { +//// div: any +//// } +//// } +//// var x1 = +//// class MyElement {} +//// var z = + +goTo.marker("1"); +verify.quickInfoIs("(property) JSX.IntrinsicElements.div: any", undefined); + +goTo.marker("2"); +verify.quickInfoIs("(property) JSX.IntrinsicElements.div: any", undefined);; + +goTo.marker("3"); +verify.quickInfoIs("class MyElement", undefined);; + +goTo.marker("4"); +verify.quickInfoIs("class MyElement", undefined);; \ No newline at end of file From 48894e5023d94770a8d2422d8f0d9d937372f5bd Mon Sep 17 00:00:00 2001 From: Yui T Date: Tue, 8 Dec 2015 18:54:29 -0800 Subject: [PATCH 016/164] Don't include completion in opening tag, include name of opening in closing tag --- src/compiler/checker.ts | 8 ++++++-- src/compiler/types.ts | 3 ++- src/services/services.ts | 40 ++++++++++++++++++++++++++++++++-------- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 30d4818592b..f02520b24fd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -61,6 +61,7 @@ namespace ts { getTypeCount: () => typeCount, isUndefinedSymbol: symbol => symbol === undefinedSymbol, isArgumentsSymbol: symbol => symbol === argumentsSymbol, + isUnknownSymbol: symbol => symbol === unknownSymbol, getDiagnostics, getGlobalDiagnostics, @@ -7979,6 +7980,7 @@ namespace ts { if (compilerOptions.noImplicitAny) { error(node, Diagnostics.JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists, JsxNames.IntrinsicElements); } + return unknownSymbol; } } @@ -14574,7 +14576,7 @@ namespace ts { return false; } - function getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[] { + function getSymbolsInScope(location: Node, meaning: SymbolFlags, includeAllGlobalSymbols: boolean): Symbol[] { const symbols: SymbolTable = {}; let memberFlags: NodeFlags = 0; @@ -14637,7 +14639,9 @@ namespace ts { location = location.parent; } - copySymbols(globals, meaning); + if (includeAllGlobalSymbols) { + copySymbols(globals, meaning); + } } /** diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 9411437c981..eb93ceee093 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1717,7 +1717,7 @@ namespace ts { getBaseTypes(type: InterfaceType): ObjectType[]; getReturnTypeOfSignature(signature: Signature): Type; - getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; + getSymbolsInScope(location: Node, meaning: SymbolFlags, includeAllGlobalSymbols: boolean): Symbol[]; getSymbolAtLocation(node: Node): Symbol; getShorthandAssignmentValueSymbol(location: Node): Symbol; getTypeAtLocation(node: Node): Type; @@ -1733,6 +1733,7 @@ namespace ts { isImplementationOfOverload(node: FunctionLikeDeclaration): boolean; isUndefinedSymbol(symbol: Symbol): boolean; isArgumentsSymbol(symbol: Symbol): boolean; + isUnknownSymbol(symbol: Symbol): boolean; getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number; isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean; diff --git a/src/services/services.ts b/src/services/services.ts index a9dda549ead..7e12a521a4d 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3099,6 +3099,7 @@ namespace ts { } else if (kind === SyntaxKind.SlashToken && contextToken.parent.kind === SyntaxKind.JsxClosingElement) { isStartingCloseTag = true; + location = contextToken; } } } @@ -3113,7 +3114,9 @@ namespace ts { } else if (isRightOfOpenTag) { let tagSymbols = typeChecker.getJsxIntrinsicTagNames(); - if (tryGetGlobalSymbols()) { + // If the currect cursor is inside JSX opening tag, the only meaningful completions are those of JSX.IntrinsicElements or users defined React.Component + // If the services can't find those symbols, then show nothing instead of including all the global symbols in the completion list. + if (tryGetGlobalSymbols(/*includeAllGlobalSymbols*/false)) { symbols = tagSymbols.concat(symbols.filter(s => !!(s.flags & SymbolFlags.Value))); } else { @@ -3123,8 +3126,12 @@ namespace ts { isNewIdentifierLocation = false; } else if (isStartingCloseTag) { - let tagName = (contextToken.parent.parent).openingElement.tagName; - symbols = [typeChecker.getSymbolAtLocation(tagName)]; + const tagName = (contextToken.parent.parent).openingElement.tagName; + const tagSymbol = typeChecker.getSymbolAtLocation(tagName); + + if (!typeChecker.isUnknownSymbol(tagSymbol)) { + symbols = [tagSymbol]; + } isMemberCompletion = true; isNewIdentifierLocation = false; @@ -3133,7 +3140,7 @@ namespace ts { // For JavaScript or TypeScript, if we're not after a dot, then just try to get the // global symbols in scope. These results should be valid for either language as // the set of symbols that can be referenced from this location. - if (!tryGetGlobalSymbols()) { + if (!tryGetGlobalSymbols(/*includeAllGlobalSymbols*/true)) { return undefined; } } @@ -3193,7 +3200,7 @@ namespace ts { } } - function tryGetGlobalSymbols(): boolean { + function tryGetGlobalSymbols(includeAllGlobalSymbols: boolean): boolean { let objectLikeContainer: ObjectLiteralExpression | BindingPattern; let namedImportsOrExports: NamedImportsOrExports; let jsxContainer: JsxOpeningLikeElement; @@ -3264,7 +3271,7 @@ namespace ts { /// TODO filter meaning based on the current context let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias; - symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings); + symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings, includeAllGlobalSymbols); return true; } @@ -3831,7 +3838,23 @@ namespace ts { } else { if (!symbols || symbols.length === 0) { - return undefined; + if (sourceFile.languageVariant === LanguageVariant.JSX && + location.parent && location.parent.kind === SyntaxKind.JsxClosingElement) { + // In the TypeScript JSX element, if such element is not defined. When users query for completion at closing tag, + // instead of simply giving unknown value, the completion will return the tag-name of an associated opening-element. + // For example: + // var x =
completion list at "1" will contain "div" with type any + const tagName = (location.parent.parent).openingElement.tagName; + entries.push({ + name: (tagName).text, + kind: undefined, + kindModifiers: undefined, + sortText: "0", + }); + } + else { + return undefined; + } } getCompletionEntriesFromSymbols(symbols, entries); @@ -3907,6 +3930,7 @@ namespace ts { function getCompletionEntriesFromSymbols(symbols: Symbol[], entries: CompletionEntry[]): Map { let start = new Date().getTime(); let uniqueNames: Map = {}; + if (symbols) { for (let symbol of symbols) { let entry = createCompletionEntry(symbol, location); @@ -4439,7 +4463,7 @@ namespace ts { let typeChecker = program.getTypeChecker(); let symbol = typeChecker.getSymbolAtLocation(node); - if (!symbol) { + if (!symbol || typeChecker.isUnknownSymbol(symbol)) { // Try getting just type at this position and show switch (node.kind) { case SyntaxKind.Identifier: From 0c699ad474983302bdfd38b3c1925df92ca07dc1 Mon Sep 17 00:00:00 2001 From: Yui T Date: Tue, 8 Dec 2015 18:54:52 -0800 Subject: [PATCH 017/164] Update baseline from returning with unknownSymbol --- .../jsxEmitAttributeWithPreserve.symbols | 1 + tests/baselines/reference/jsxHash.symbols | 34 +++++++++++++++ .../reference/jsxImportInAttribute.symbols | 1 + .../reference/jsxReactTestSuite.symbols | 42 +++++++++++++++++++ .../reference/keywordInJsxIdentifier.symbols | 4 ++ .../reference/tsxElementResolution13.symbols | 1 + .../reference/tsxElementResolution14.symbols | 1 + .../reference/tsxElementResolution5.symbols | 1 + .../reference/tsxExternalModuleEmit1.symbols | 2 + tests/baselines/reference/tsxNoJsx.symbols | 6 +-- .../baselines/reference/tsxTypeErrors.symbols | 4 ++ 11 files changed, 94 insertions(+), 3 deletions(-) diff --git a/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols b/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols index 4ffadb8e888..82eceb8e637 100644 --- a/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols +++ b/tests/baselines/reference/jsxEmitAttributeWithPreserve.symbols @@ -4,5 +4,6 @@ declare var React: any; >React : Symbol(React, Decl(jsxEmitAttributeWithPreserve.tsx, 1, 11)) +>foo : Symbol(unknown) >data : Symbol(unknown) diff --git a/tests/baselines/reference/jsxHash.symbols b/tests/baselines/reference/jsxHash.symbols index 8a6ad0849f0..ddba4832d2c 100644 --- a/tests/baselines/reference/jsxHash.symbols +++ b/tests/baselines/reference/jsxHash.symbols @@ -1,34 +1,68 @@ === tests/cases/compiler/jsxHash.tsx === var t02 = {0}#; >t02 : Symbol(t02, Decl(jsxHash.tsx, 0, 3)) +>a : Symbol(unknown) +>a : Symbol(unknown) var t03 = #{0}; >t03 : Symbol(t03, Decl(jsxHash.tsx, 1, 3)) +>a : Symbol(unknown) +>a : Symbol(unknown) var t04 = #{0}#; >t04 : Symbol(t04, Decl(jsxHash.tsx, 2, 3)) +>a : Symbol(unknown) +>a : Symbol(unknown) var t05 = #; >t05 : Symbol(t05, Decl(jsxHash.tsx, 3, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t06 = #; >t06 : Symbol(t06, Decl(jsxHash.tsx, 4, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t07 = ##; >t07 : Symbol(t07, Decl(jsxHash.tsx, 5, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t08 = #; >t08 : Symbol(t08, Decl(jsxHash.tsx, 6, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t09 = ##; >t09 : Symbol(t09, Decl(jsxHash.tsx, 7, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t10 = #; >t10 : Symbol(t10, Decl(jsxHash.tsx, 8, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t11 = #; >t11 : Symbol(t11, Decl(jsxHash.tsx, 9, 3)) +>a : Symbol(unknown) +>i : Symbol(unknown) +>a : Symbol(unknown) var t12 = #; >t12 : Symbol(t12, Decl(jsxHash.tsx, 10, 3)) +>a : Symbol(unknown) +>a : Symbol(unknown) diff --git a/tests/baselines/reference/jsxImportInAttribute.symbols b/tests/baselines/reference/jsxImportInAttribute.symbols index 845001b22c0..252b5cc98e4 100644 --- a/tests/baselines/reference/jsxImportInAttribute.symbols +++ b/tests/baselines/reference/jsxImportInAttribute.symbols @@ -8,6 +8,7 @@ let x = Test; // emit test_1.default >Test : Symbol(Test, Decl(consumer.tsx, 1, 6)) ; // ? +>anything : Symbol(unknown) >attr : Symbol(unknown) >Test : Symbol(Test, Decl(consumer.tsx, 1, 6)) diff --git a/tests/baselines/reference/jsxReactTestSuite.symbols b/tests/baselines/reference/jsxReactTestSuite.symbols index b86054ac560..cca1dae915b 100644 --- a/tests/baselines/reference/jsxReactTestSuite.symbols +++ b/tests/baselines/reference/jsxReactTestSuite.symbols @@ -37,21 +37,36 @@ declare var hasOwnProperty:any; >hasOwnProperty : Symbol(hasOwnProperty, Decl(jsxReactTestSuite.tsx, 12, 11))
text
; +>div : Symbol(unknown) +>div : Symbol(unknown)
+>div : Symbol(unknown) + {this.props.children}
; +>div : Symbol(unknown)
+>div : Symbol(unknown) +

+>div : Symbol(unknown) +>br : Symbol(unknown) +>div : Symbol(unknown) + {foo}
{bar}
>Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) >foo : Symbol(foo, Decl(jsxReactTestSuite.tsx, 7, 11)) +>br : Symbol(unknown) >bar : Symbol(bar, Decl(jsxReactTestSuite.tsx, 8, 11)) >Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11))
+>br : Symbol(unknown) +
; +>div : Symbol(unknown) @@ -74,6 +89,8 @@ var x = >x : Symbol(x, Decl(jsxReactTestSuite.tsx, 10, 11), Decl(jsxReactTestSuite.tsx, 35, 3))
div : Symbol(unknown) + attr1={ >attr1 : Symbol(unknown) @@ -97,41 +114,64 @@ var x = >attr4 : Symbol(unknown)
; +>div : Symbol(unknown) (
+>div : Symbol(unknown) + {/* A comment at the beginning */} {/* A second comment at the beginning */} +>span : Symbol(unknown) + {/* A nested comment */} +>span : Symbol(unknown) + {/* A sandwiched comment */}
+>br : Symbol(unknown) + {/* A comment at the end */} {/* A second comment at the end */}
+>div : Symbol(unknown) + ); (
div : Symbol(unknown) + /* a multi-line comment */ attr1="foo"> >attr1 : Symbol(unknown) span : Symbol(unknown) + attr2="bar" >attr2 : Symbol(unknown) />
+>div : Symbol(unknown) + );
 
; +>div : Symbol(unknown) +>div : Symbol(unknown)
 
; +>div : Symbol(unknown) +>div : Symbol(unknown) testing; +>hasOwnProperty : Symbol(unknown) +>hasOwnProperty : Symbol(unknown) ; >Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) @@ -158,6 +198,7 @@ var x = >sound : Symbol(unknown) ; +>font-face : Symbol(unknown) ; >Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) @@ -165,6 +206,7 @@ var x = >y : Symbol(y, Decl(jsxReactTestSuite.tsx, 9, 11)) ; +>x-component : Symbol(unknown) ; >Component : Symbol(Component, Decl(jsxReactTestSuite.tsx, 2, 11)) diff --git a/tests/baselines/reference/keywordInJsxIdentifier.symbols b/tests/baselines/reference/keywordInJsxIdentifier.symbols index 874d7801a7f..3cb977bee81 100644 --- a/tests/baselines/reference/keywordInJsxIdentifier.symbols +++ b/tests/baselines/reference/keywordInJsxIdentifier.symbols @@ -4,14 +4,18 @@ declare var React: any; >React : Symbol(React, Decl(keywordInJsxIdentifier.tsx, 1, 11)) ; +>foo : Symbol(unknown) >class-id : Symbol(unknown) ; +>foo : Symbol(unknown) >class : Symbol(unknown) ; +>foo : Symbol(unknown) >class-id : Symbol(unknown) ; +>foo : Symbol(unknown) >class : Symbol(unknown) diff --git a/tests/baselines/reference/tsxElementResolution13.symbols b/tests/baselines/reference/tsxElementResolution13.symbols index 94758b291ac..4b6a5b4f4e7 100644 --- a/tests/baselines/reference/tsxElementResolution13.symbols +++ b/tests/baselines/reference/tsxElementResolution13.symbols @@ -22,5 +22,6 @@ var obj1: Obj1; >Obj1 : Symbol(Obj1, Decl(file.tsx, 3, 1)) ; // Error +>obj1 : Symbol(unknown) >x : Symbol(unknown) diff --git a/tests/baselines/reference/tsxElementResolution14.symbols b/tests/baselines/reference/tsxElementResolution14.symbols index 2400ef620eb..a605606b1ed 100644 --- a/tests/baselines/reference/tsxElementResolution14.symbols +++ b/tests/baselines/reference/tsxElementResolution14.symbols @@ -17,5 +17,6 @@ var obj1: Obj1; >Obj1 : Symbol(Obj1, Decl(file.tsx, 2, 1)) ; // OK +>obj1 : Symbol(unknown) >x : Symbol(unknown) diff --git a/tests/baselines/reference/tsxElementResolution5.symbols b/tests/baselines/reference/tsxElementResolution5.symbols index 461ffd78aaa..e0fc1147083 100644 --- a/tests/baselines/reference/tsxElementResolution5.symbols +++ b/tests/baselines/reference/tsxElementResolution5.symbols @@ -8,5 +8,6 @@ declare module JSX { // OK, but implicit any
; +>div : Symbol(unknown) >n : Symbol(unknown) diff --git a/tests/baselines/reference/tsxExternalModuleEmit1.symbols b/tests/baselines/reference/tsxExternalModuleEmit1.symbols index 5e8eb2fed4e..129edcca0d1 100644 --- a/tests/baselines/reference/tsxExternalModuleEmit1.symbols +++ b/tests/baselines/reference/tsxExternalModuleEmit1.symbols @@ -44,6 +44,8 @@ export class Button extends React.Component { >render : Symbol(render, Decl(button.tsx, 2, 55)) return ; +>button : Symbol(unknown) +>button : Symbol(unknown) } } diff --git a/tests/baselines/reference/tsxNoJsx.symbols b/tests/baselines/reference/tsxNoJsx.symbols index 6744c2edb10..4492e83cf10 100644 --- a/tests/baselines/reference/tsxNoJsx.symbols +++ b/tests/baselines/reference/tsxNoJsx.symbols @@ -1,5 +1,5 @@ === tests/cases/conformance/jsx/tsxNoJsx.tsx === -No type information for this code.; -No type information for this code. -No type information for this code. \ No newline at end of file +; +>nope : Symbol(unknown) + diff --git a/tests/baselines/reference/tsxTypeErrors.symbols b/tests/baselines/reference/tsxTypeErrors.symbols index 94399b95d1f..2b87e994477 100644 --- a/tests/baselines/reference/tsxTypeErrors.symbols +++ b/tests/baselines/reference/tsxTypeErrors.symbols @@ -3,11 +3,13 @@ // A built-in element (OK) var a1 =
; >a1 : Symbol(a1, Decl(tsxTypeErrors.tsx, 2, 3)) +>div : Symbol(unknown) >id : Symbol(unknown) // A built-in element with a mistyped property (error) var a2 = >a2 : Symbol(a2, Decl(tsxTypeErrors.tsx, 5, 3)) +>img : Symbol(unknown) >srce : Symbol(unknown) // A built-in element with a badly-typed attribute value (error) @@ -17,12 +19,14 @@ var thing = { oops: 100 }; var a3 =
>a3 : Symbol(a3, Decl(tsxTypeErrors.tsx, 9, 3)) +>div : Symbol(unknown) >id : Symbol(unknown) >thing : Symbol(thing, Decl(tsxTypeErrors.tsx, 8, 3)) // Mistyped html name (error) var e1 = >e1 : Symbol(e1, Decl(tsxTypeErrors.tsx, 12, 3)) +>imag : Symbol(unknown) >src : Symbol(unknown) // A custom type From 593503f6d57bee8452fccdb42d0350d2d70a51fa Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Wed, 9 Dec 2015 23:34:13 +0900 Subject: [PATCH 018/164] move blocker to nodeWillIndentChild --- src/services/formatting/smartIndenter.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index fc2650b3b38..8e0fef884e7 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -450,10 +450,9 @@ namespace ts.formatting { case SyntaxKind.ConditionalExpression: case SyntaxKind.ArrayBindingPattern: case SyntaxKind.ObjectBindingPattern: - case SyntaxKind.JsxElement: case SyntaxKind.JsxOpeningElement: case SyntaxKind.JsxSelfClosingElement: - case SyntaxKind.JsxExpression: + case SyntaxKind.JsxExpression: case SyntaxKind.MethodSignature: case SyntaxKind.CallSignature: case SyntaxKind.ConstructSignature: @@ -469,6 +468,7 @@ namespace ts.formatting { return false; } + /* @internal */ export function nodeWillIndentChild(parent: TextRangeWithKind, child: TextRangeWithKind, indentByDefault: boolean) { let childKind = child ? child.kind : SyntaxKind.Unknown; switch (parent.kind) { @@ -486,6 +486,8 @@ namespace ts.formatting { case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: return childKind !== SyntaxKind.Block; + case SyntaxKind.JsxElement: + return childKind !== SyntaxKind.JsxClosingElement; } // No explicit rule for given nodes so the result will follow the default value argument return indentByDefault; From 9e3ee5d716d439b40fe0f6838141e9890fe77c46 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Wed, 9 Dec 2015 23:42:49 +0900 Subject: [PATCH 019/164] remove whitespace --- 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 4bb3d13f653..4e48a4bf4f2 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -359,7 +359,7 @@ namespace ts.formatting { parentStartLine: number, range: TextRange, inheritedIndentation: number): number { - + if (rangeOverlapsWithStartEnd(range, startPos, endPos) || rangeContainsStartEnd(range, startPos, endPos) /* Not to miss zero-range nodes e.g. JsxText */) { From e28272235c52b3fb0f2691ca92c435f6b4c95a8f Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 13:35:27 -0800 Subject: [PATCH 020/164] Test case for destructuring of variable statement --- ...alidationDestructuringVariableStatement.js | 35 ++ ...ationDestructuringVariableStatement.js.map | 2 + ...structuringVariableStatement.sourcemap.txt | 373 ++++++++++++++++++ ...tionDestructuringVariableStatement.symbols | 69 ++++ ...dationDestructuringVariableStatement.types | 82 ++++ ...alidationDestructuringVariableStatement.ts | 20 + 6 files changed, 581 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js new file mode 100644 index 00000000000..4bd4feab384 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js @@ -0,0 +1,35 @@ +//// [sourceMapValidationDestructuringVariableStatement.ts] +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +var { name: nameA } = robotA; +var { name: nameB, skill: skillB } = robotB; +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} + +//// [sourceMapValidationDestructuringVariableStatement.js] +var hello = "hello"; +var robotA = { name: "mower", skill: "mowing" }; +var robotB = { name: "trimmer", skill: "trimming" }; +var nameA = robotA.name; +var nameB = robotB.name, skillB = robotB.skill; +var _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatement.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map new file mode 100644 index 00000000000..e46d89596d2 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatement.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAY,KAAK,GAAK,MAAM,KAAA,CAAC;AAC7B,IAAY,KAAK,GAAoB,MAAM,OAAjB,MAAM,GAAK,MAAM,MAAA,CAAC;AAC5C,IAAI,KAAiC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,EAAlE,KAAK,YAAS,MAAM,WAA8C,CAAC;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt new file mode 100644 index 00000000000..ff8d54e5e6a --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt @@ -0,0 +1,373 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatement.js +mapUrl: sourceMapValidationDestructuringVariableStatement.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatement.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.js +sourceFile:sourceMapValidationDestructuringVariableStatement.ts +------------------------------------------------------------------- +>>>var hello = "hello"; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >interface Robot { + > name: string; + > skill: string; + >} + >declare var console: { + > log(msg: string): void; + >} + > +2 >var +3 > hello +4 > = +5 > "hello" +6 > ; +1 >Emitted(1, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(8, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(8, 13) + SourceIndex(0) +5 >Emitted(1, 20) Source(8, 20) + SourceIndex(0) +6 >Emitted(1, 21) Source(8, 21) + SourceIndex(0) +--- +>>>var robotA = { name: "mower", skill: "mowing" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^-> +1-> + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1->Emitted(2, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(9, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(9, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(9, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(9, 29) + SourceIndex(0) +8 >Emitted(2, 29) Source(9, 36) + SourceIndex(0) +9 >Emitted(2, 31) Source(9, 38) + SourceIndex(0) +10>Emitted(2, 36) Source(9, 43) + SourceIndex(0) +11>Emitted(2, 38) Source(9, 45) + SourceIndex(0) +12>Emitted(2, 46) Source(9, 53) + SourceIndex(0) +13>Emitted(2, 48) Source(9, 55) + SourceIndex(0) +14>Emitted(2, 49) Source(9, 56) + SourceIndex(0) +--- +>>>var robotB = { name: "trimmer", skill: "trimming" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^ +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > { +6 > name +7 > : +8 > "trimmer" +9 > , +10> skill +11> : +12> "trimming" +13> } +14> ; +1->Emitted(3, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(10, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(10, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(10, 21) + SourceIndex(0) +5 >Emitted(3, 16) Source(10, 23) + SourceIndex(0) +6 >Emitted(3, 20) Source(10, 27) + SourceIndex(0) +7 >Emitted(3, 22) Source(10, 29) + SourceIndex(0) +8 >Emitted(3, 31) Source(10, 38) + SourceIndex(0) +9 >Emitted(3, 33) Source(10, 40) + SourceIndex(0) +10>Emitted(3, 38) Source(10, 45) + SourceIndex(0) +11>Emitted(3, 40) Source(10, 47) + SourceIndex(0) +12>Emitted(3, 50) Source(10, 57) + SourceIndex(0) +13>Emitted(3, 52) Source(10, 59) + SourceIndex(0) +14>Emitted(3, 53) Source(10, 60) + SourceIndex(0) +--- +>>>var nameA = robotA.name; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^ +6 > ^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >var { name: +3 > nameA +4 > } = +5 > robotA +6 > +7 > ; +1 >Emitted(4, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(11, 13) + SourceIndex(0) +3 >Emitted(4, 10) Source(11, 18) + SourceIndex(0) +4 >Emitted(4, 13) Source(11, 23) + SourceIndex(0) +5 >Emitted(4, 19) Source(11, 29) + SourceIndex(0) +6 >Emitted(4, 24) Source(11, 29) + SourceIndex(0) +7 >Emitted(4, 25) Source(11, 30) + SourceIndex(0) +--- +>>>var nameB = robotB.name, skillB = robotB.skill; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^ +6 > ^^^^^^^ +7 > ^^^^^^ +8 > ^^^ +9 > ^^^^^^ +10> ^^^^^^ +11> ^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var { name: +3 > nameB +4 > , skill: skillB } = +5 > robotB +6 > +7 > skillB +8 > } = +9 > robotB +10> +11> ; +1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 13) + SourceIndex(0) +3 >Emitted(5, 10) Source(12, 18) + SourceIndex(0) +4 >Emitted(5, 13) Source(12, 38) + SourceIndex(0) +5 >Emitted(5, 19) Source(12, 44) + SourceIndex(0) +6 >Emitted(5, 26) Source(12, 27) + SourceIndex(0) +7 >Emitted(5, 32) Source(12, 33) + SourceIndex(0) +8 >Emitted(5, 35) Source(12, 38) + SourceIndex(0) +9 >Emitted(5, 41) Source(12, 44) + SourceIndex(0) +10>Emitted(5, 47) Source(12, 44) + SourceIndex(0) +11>Emitted(5, 48) Source(12, 45) + SourceIndex(0) +--- +>>>var _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^^ +14> ^^^^^ +15> ^^^^^^^^^^^^ +16> ^^^^^^ +17> ^^^^^^^^^^^ +18> ^ +1-> + > +2 >var +3 > { name: nameC, skill: skillC } = +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> +14> nameC +15> , skill: +16> skillC +17> } = { name: "Edger", skill: "cutting edges" } +18> ; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 10) Source(13, 38) + SourceIndex(0) +4 >Emitted(6, 12) Source(13, 40) + SourceIndex(0) +5 >Emitted(6, 16) Source(13, 44) + SourceIndex(0) +6 >Emitted(6, 18) Source(13, 46) + SourceIndex(0) +7 >Emitted(6, 25) Source(13, 53) + SourceIndex(0) +8 >Emitted(6, 27) Source(13, 55) + SourceIndex(0) +9 >Emitted(6, 32) Source(13, 60) + SourceIndex(0) +10>Emitted(6, 34) Source(13, 62) + SourceIndex(0) +11>Emitted(6, 49) Source(13, 77) + SourceIndex(0) +12>Emitted(6, 51) Source(13, 79) + SourceIndex(0) +13>Emitted(6, 53) Source(13, 13) + SourceIndex(0) +14>Emitted(6, 58) Source(13, 18) + SourceIndex(0) +15>Emitted(6, 70) Source(13, 27) + SourceIndex(0) +16>Emitted(6, 76) Source(13, 33) + SourceIndex(0) +17>Emitted(6, 87) Source(13, 79) + SourceIndex(0) +18>Emitted(6, 88) Source(13, 80) + SourceIndex(0) +--- +>>>if (nameA == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 3) Source(14, 3) + SourceIndex(0) +3 >Emitted(7, 4) Source(14, 4) + SourceIndex(0) +4 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) +5 >Emitted(7, 10) Source(14, 10) + SourceIndex(0) +6 >Emitted(7, 14) Source(14, 14) + SourceIndex(0) +7 >Emitted(7, 19) Source(14, 19) + SourceIndex(0) +8 >Emitted(7, 20) Source(14, 20) + SourceIndex(0) +9 >Emitted(7, 21) Source(14, 21) + SourceIndex(0) +10>Emitted(7, 22) Source(14, 22) + SourceIndex(0) +--- +>>> console.log(skillB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillB +7 > ) +8 > ; +1->Emitted(8, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(15, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(15, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(15, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(15, 17) + SourceIndex(0) +6 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +7 >Emitted(8, 24) Source(15, 24) + SourceIndex(0) +8 >Emitted(8, 25) Source(15, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(16, 2) + SourceIndex(0) +--- +>>>else { +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >else +3 > +4 > { +1->Emitted(10, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(10, 6) Source(17, 6) + SourceIndex(0) +4 >Emitted(10, 7) Source(17, 7) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(11, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(11, 12) Source(18, 12) + SourceIndex(0) +3 >Emitted(11, 13) Source(18, 13) + SourceIndex(0) +4 >Emitted(11, 16) Source(18, 16) + SourceIndex(0) +5 >Emitted(11, 17) Source(18, 17) + SourceIndex(0) +6 >Emitted(11, 22) Source(18, 22) + SourceIndex(0) +7 >Emitted(11, 23) Source(18, 23) + SourceIndex(0) +8 >Emitted(11, 24) Source(18, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(19, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatement.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols new file mode 100644 index 00000000000..3d8e925d8b3 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.symbols @@ -0,0 +1,69 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.ts === +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 0)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 1, 17)) +} +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatement.ts, 5, 8)) +} +var hello = "hello"; +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement.ts, 7, 3)) + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatement.ts, 8, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 8, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 8, 36)) + +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatement.ts, 9, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 9, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 9, 38)) + +var { name: nameA } = robotA; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatement.ts, 10, 5)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatement.ts, 8, 3)) + +var { name: nameB, skill: skillB } = robotB; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatement.ts, 11, 5)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 1, 17)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatement.ts, 11, 18)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatement.ts, 9, 3)) + +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 38)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 5)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 53)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 18)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 38)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 53)) + +if (nameA == nameB) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatement.ts, 10, 5)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatement.ts, 11, 5)) + + console.log(skillB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 22)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatement.ts, 11, 18)) +} +else { + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement.ts, 4, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatement.ts, 12, 5)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.types new file mode 100644 index 00000000000..82a2ffe88f6 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.types @@ -0,0 +1,82 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.ts === +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +var hello = "hello"; +>hello : string +>"hello" : string + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +>robotB : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +var { name: nameA } = robotA; +>name : any +>nameA : string +>robotA : Robot + +var { name: nameB, skill: skillB } = robotB; +>name : any +>nameB : string +>skill : any +>skillB : string +>robotB : Robot + +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +>name : any +>nameC : string +>skill : any +>skillC : string +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +if (nameA == nameB) { +>nameA == nameB : boolean +>nameA : string +>nameB : string + + console.log(skillB); +>console.log(skillB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillB : string +} +else { + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.ts new file mode 100644 index 00000000000..88e49498f60 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatement.ts @@ -0,0 +1,20 @@ +// @sourcemap: true +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +var { name: nameA } = robotA; +var { name: nameB, skill: skillB } = robotB; +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} \ No newline at end of file From 4ebf5695a70e813cea337add0585f84437e5ea4a Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 3 Dec 2015 14:20:25 -0800 Subject: [PATCH 021/164] Better sourcemaps for destructuring --- src/compiler/emitter.ts | 62 ++++++-- src/compiler/sourcemap.ts | 12 +- src/compiler/utilities.ts | 2 +- ...ationDestructuringVariableStatement.js.map | 2 +- ...structuringVariableStatement.sourcemap.txt | 142 ++++++------------ 5 files changed, 101 insertions(+), 119 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index a73d7374b59..ab5e6bfb774 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -464,8 +464,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const writer = createTextWriter(newLine); const { write, writeTextOfNode, writeLine, increaseIndent, decreaseIndent } = writer; - const sourceMap = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? createSourceMapWriter(host, writer) : getNullSourceMapWriter(); - const { setSourceFile, emitStart, emitEnd, emitPos } = sourceMap; + let sourceMap = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? createSourceMapWriter(host, writer) : getNullSourceMapWriter(); + let { setSourceFile, emitStart, emitEnd, emitPos } = sourceMap; let currentSourceFile: SourceFile; let currentText: string; @@ -512,6 +512,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi /** If removeComments is true, no leading-comments needed to be emitted **/ const emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos: number) { } : emitLeadingCommentsOfPositionWorker; + const setSourceMapWriterEmit = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? changeSourceMapEmit : function (writer: SourceMapWriter) { }; + const moduleEmitDelegates: Map<(node: SourceFile, emitRelativePathAsModuleName?: boolean) => void> = { [ModuleKind.ES6]: emitES6Module, [ModuleKind.AMD]: emitAMDModule, @@ -2573,7 +2575,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi leftHandSideExpression.argumentExpression.kind !== SyntaxKind.StringLiteral) { const tempArgumentExpression = createAndRecordTempVariable(TempFlags._i); (synthesizedLHS).argumentExpression = tempArgumentExpression; - emitAssignment(tempArgumentExpression, leftHandSideExpression.argumentExpression, /*shouldEmitCommaBeforeAssignment*/ true); + emitAssignment(tempArgumentExpression, leftHandSideExpression.argumentExpression, /*shouldEmitCommaBeforeAssignment*/ true, leftHandSideExpression.expression); } else { (synthesizedLHS).argumentExpression = leftHandSideExpression.argumentExpression; @@ -3728,7 +3730,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi * @param value an expression as a right-hand-side operand of the assignment * @param shouldEmitCommaBeforeAssignment a boolean indicating whether to prefix an assignment with comma */ - function emitAssignment(name: Identifier, value: Expression, shouldEmitCommaBeforeAssignment: boolean) { + function emitAssignment(name: Identifier, value: Expression, shouldEmitCommaBeforeAssignment: boolean, nodeForSourceMap: TextRange) { if (shouldEmitCommaBeforeAssignment) { write(", "); } @@ -3744,15 +3746,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === SyntaxKind.VariableDeclaration || name.parent.kind === SyntaxKind.BindingElement); - if (isVariableDeclarationOrBindingElement) { - emitModuleMemberName(name.parent); - } - else { - emit(name); - } + emitStart(nodeForSourceMap); + withTemporaryNoSourceMap(() => { + if (isVariableDeclarationOrBindingElement) { + emitModuleMemberName(name.parent); + } + else { + emit(name); + } - write(" = "); - emit(value); + write(" = "); + emit(value); + }); + emitEnd(nodeForSourceMap, /*stopOverridingSpan*/true); if (exportChanged) { write(")"); @@ -3770,7 +3776,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (!canDefineTempVariablesInPlace) { recordTempDeclaration(identifier); } - emitAssignment(identifier, expression, shouldEmitCommaBeforeAssignment); + emitAssignment(identifier, expression, shouldEmitCommaBeforeAssignment, expression); return identifier; } @@ -3929,7 +3935,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitArrayLiteralAssignment(target, value); } else { - emitAssignment(target, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0); + // TODO + emitAssignment(target, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, { pos: -1, end: -1 }); emitCount++; } } @@ -3999,7 +4006,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } else { - emitAssignment(target.name, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0); + let nodeForSourceMap: Node; + // If binding element is part of binding pattern with single element, use binding pattern + if (target.kind === SyntaxKind.BindingElement && (target.parent).elements.length === 1) { + nodeForSourceMap = (target.parent.parent.kind === SyntaxKind.VariableDeclaration || target.parent.parent.kind === SyntaxKind.Parameter) ? + target.parent.parent : // Set sourcemap as whole variable declaration + target.parent; // Only binding Pattern + } + else { + nodeForSourceMap = target; // Binding Element + } + emitAssignment(target.name, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, nodeForSourceMap); emitCount++; } } @@ -7434,6 +7451,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } + function changeSourceMapEmit(writer: SourceMapWriter) { + sourceMap = writer; + emitStart = writer.emitStart; + emitEnd = writer.emitEnd; + emitPos = writer.emitPos; + setSourceFile = writer.setSourceFile; + } + + function withTemporaryNoSourceMap(callback: () => void) { + const prevSourceMap = sourceMap; + setSourceMapWriterEmit(getNullSourceMapWriter()); + callback(); + setSourceMapWriterEmit(prevSourceMap); + } + function isSpecializedCommentHandling(node: Node): boolean { switch (node.kind) { // All of these entities are emitted in a specialized fashion. As such, we allow diff --git a/src/compiler/sourcemap.ts b/src/compiler/sourcemap.ts index d98dc233c16..982c37e3fe8 100644 --- a/src/compiler/sourcemap.ts +++ b/src/compiler/sourcemap.ts @@ -7,7 +7,7 @@ namespace ts { setSourceFile(sourceFile: SourceFile): void; emitPos(pos: number): void; emitStart(range: TextRange): void; - emitEnd(range: TextRange): void; + emitEnd(range: TextRange, stopOverridingSpan?: boolean): void; getText(): string; getSourceMappingURL(): string; initialize(filePath: string, sourceMapFilePath: string, sourceFiles: SourceFile[], isBundledEmit: boolean): void; @@ -23,7 +23,7 @@ namespace ts { getSourceMapData(): SourceMapData { return undefined; }, setSourceFile(sourceFile: SourceFile): void { }, emitStart(range: TextRange): void { }, - emitEnd(range: TextRange): void { }, + emitEnd(range: TextRange, stopOverridingSpan?: boolean): void { }, emitPos(pos: number): void { }, getText(): string { return undefined; }, getSourceMappingURL(): string { return undefined; }, @@ -39,6 +39,7 @@ namespace ts { const compilerOptions = host.getCompilerOptions(); let currentSourceFile: SourceFile; let sourceMapDir: string; // The directory in which sourcemap will be + let stopOverridingSpan = false; // Current source map file and its index in the sources list let sourceMapSourceIndex: number; @@ -220,8 +221,10 @@ namespace ts { sourceColumn: sourceLinePos.character, sourceIndex: sourceMapSourceIndex }; + + stopOverridingSpan = false; } - else { + else if (!stopOverridingSpan) { // Take the new pos instead since there is no change in emittedLine and column since last location lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; @@ -234,8 +237,9 @@ namespace ts { emitPos(range.pos !== -1 ? skipTrivia(currentSourceFile.text, rangeHasDecorators ? (range as Node).decorators.end : range.pos) : -1); } - function emitEnd(range: TextRange) { + function emitEnd(range: TextRange, stopOverridingEnd?: boolean) { emitPos(range.end); + stopOverridingSpan = stopOverridingEnd; } function setSourceFile(sourceFile: SourceFile) { diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 95bf4ff7fa3..0f0f50719c1 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1616,7 +1616,7 @@ namespace ts { return node.kind === SyntaxKind.QualifiedName; } - export function nodeIsSynthesized(node: Node): boolean { + export function nodeIsSynthesized(node: Node | TextRange): boolean { return node.pos === -1; } diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map index e46d89596d2..b70ebc3bc1d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatement.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAY,KAAK,GAAK,MAAM,KAAA,CAAC;AAC7B,IAAY,KAAK,GAAoB,MAAM,OAAjB,MAAM,GAAK,MAAM,MAAA,CAAC;AAC5C,IAAI,KAAiC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,EAAlE,KAAK,YAAS,MAAM,WAA8C,CAAC;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAI,mBAAwB,CAAC;AAC7B,IAAM,mBAAW,EAAE,qBAAa,CAAY;AAC5C,IAAqC,8CAAyC,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt index ff8d54e5e6a..36f31e00216 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt @@ -130,121 +130,67 @@ sourceFile:sourceMapValidationDestructuringVariableStatement.ts >>>var nameA = robotA.name; 1 > 2 >^^^^ -3 > ^^^^^ -4 > ^^^ -5 > ^^^^^^ -6 > ^^^^^ -7 > ^ -8 > ^^^^^^^^^^^^^^^^^^^^^^^^-> +3 > ^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > > -2 >var { name: -3 > nameA -4 > } = -5 > robotA -6 > -7 > ; +2 >var +3 > { name: nameA } = robotA +4 > ; 1 >Emitted(4, 1) Source(11, 1) + SourceIndex(0) -2 >Emitted(4, 5) Source(11, 13) + SourceIndex(0) -3 >Emitted(4, 10) Source(11, 18) + SourceIndex(0) -4 >Emitted(4, 13) Source(11, 23) + SourceIndex(0) -5 >Emitted(4, 19) Source(11, 29) + SourceIndex(0) -6 >Emitted(4, 24) Source(11, 29) + SourceIndex(0) -7 >Emitted(4, 25) Source(11, 30) + SourceIndex(0) +2 >Emitted(4, 5) Source(11, 5) + SourceIndex(0) +3 >Emitted(4, 24) Source(11, 29) + SourceIndex(0) +4 >Emitted(4, 25) Source(11, 30) + SourceIndex(0) --- >>>var nameB = robotB.name, skillB = robotB.skill; 1-> 2 >^^^^ -3 > ^^^^^ -4 > ^^^ -5 > ^^^^^^ -6 > ^^^^^^^ -7 > ^^^^^^ -8 > ^^^ -9 > ^^^^^^ -10> ^^^^^^ -11> ^ -12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +3 > ^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1-> > -2 >var { name: -3 > nameB -4 > , skill: skillB } = -5 > robotB -6 > -7 > skillB -8 > } = -9 > robotB -10> -11> ; +2 >var { +3 > name: nameB +4 > , +5 > skill: skillB +6 > } = robotB; 1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) -2 >Emitted(5, 5) Source(12, 13) + SourceIndex(0) -3 >Emitted(5, 10) Source(12, 18) + SourceIndex(0) -4 >Emitted(5, 13) Source(12, 38) + SourceIndex(0) -5 >Emitted(5, 19) Source(12, 44) + SourceIndex(0) -6 >Emitted(5, 26) Source(12, 27) + SourceIndex(0) -7 >Emitted(5, 32) Source(12, 33) + SourceIndex(0) -8 >Emitted(5, 35) Source(12, 38) + SourceIndex(0) -9 >Emitted(5, 41) Source(12, 44) + SourceIndex(0) -10>Emitted(5, 47) Source(12, 44) + SourceIndex(0) -11>Emitted(5, 48) Source(12, 45) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 7) + SourceIndex(0) +3 >Emitted(5, 24) Source(12, 18) + SourceIndex(0) +4 >Emitted(5, 26) Source(12, 20) + SourceIndex(0) +5 >Emitted(5, 47) Source(12, 33) + SourceIndex(0) +6 >Emitted(5, 48) Source(12, 45) + SourceIndex(0) --- >>>var _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; 1-> 2 >^^^^ -3 > ^^^^^ -4 > ^^ -5 > ^^^^ -6 > ^^ -7 > ^^^^^^^ -8 > ^^ -9 > ^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^ -12> ^^ -13> ^^ -14> ^^^^^ -15> ^^^^^^^^^^^^ -16> ^^^^^^ -17> ^^^^^^^^^^^ -18> ^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^ 1-> > -2 >var -3 > { name: nameC, skill: skillC } = -4 > { -5 > name -6 > : -7 > "Edger" -8 > , -9 > skill -10> : -11> "cutting edges" -12> } -13> -14> nameC -15> , skill: -16> skillC -17> } = { name: "Edger", skill: "cutting edges" } -18> ; +2 >var { name: nameC, skill: skillC } = +3 > { name: "Edger", skill: "cutting edges" } +4 > +5 > name: nameC +6 > , +7 > skill: skillC +8 > } = { name: "Edger", skill: "cutting edges" }; 1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) -2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) -3 >Emitted(6, 10) Source(13, 38) + SourceIndex(0) -4 >Emitted(6, 12) Source(13, 40) + SourceIndex(0) -5 >Emitted(6, 16) Source(13, 44) + SourceIndex(0) -6 >Emitted(6, 18) Source(13, 46) + SourceIndex(0) -7 >Emitted(6, 25) Source(13, 53) + SourceIndex(0) -8 >Emitted(6, 27) Source(13, 55) + SourceIndex(0) -9 >Emitted(6, 32) Source(13, 60) + SourceIndex(0) -10>Emitted(6, 34) Source(13, 62) + SourceIndex(0) -11>Emitted(6, 49) Source(13, 77) + SourceIndex(0) -12>Emitted(6, 51) Source(13, 79) + SourceIndex(0) -13>Emitted(6, 53) Source(13, 13) + SourceIndex(0) -14>Emitted(6, 58) Source(13, 18) + SourceIndex(0) -15>Emitted(6, 70) Source(13, 27) + SourceIndex(0) -16>Emitted(6, 76) Source(13, 33) + SourceIndex(0) -17>Emitted(6, 87) Source(13, 79) + SourceIndex(0) -18>Emitted(6, 88) Source(13, 80) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 38) + SourceIndex(0) +3 >Emitted(6, 51) Source(13, 79) + SourceIndex(0) +4 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) +5 >Emitted(6, 68) Source(13, 18) + SourceIndex(0) +6 >Emitted(6, 70) Source(13, 20) + SourceIndex(0) +7 >Emitted(6, 87) Source(13, 33) + SourceIndex(0) +8 >Emitted(6, 88) Source(13, 80) + SourceIndex(0) --- >>>if (nameA == nameB) { 1 > From b497cbc63521d78ddeab17d07cf54578f170333b Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 3 Dec 2015 16:28:38 -0800 Subject: [PATCH 022/164] Test case for nested object binding pattern in variable statement --- ...ableStatementNestedObjectBindingPattern.js | 38 ++ ...StatementNestedObjectBindingPattern.js.map | 2 + ...ntNestedObjectBindingPattern.sourcemap.txt | 371 ++++++++++++++++++ ...tatementNestedObjectBindingPattern.symbols | 89 +++++ ...eStatementNestedObjectBindingPattern.types | 107 +++++ ...ableStatementNestedObjectBindingPattern.ts | 24 ++ 6 files changed, 631 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js new file mode 100644 index 00000000000..4988514324b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js @@ -0,0 +1,38 @@ +//// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts] +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; + +var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; +var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; +var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + +if (nameB == nameB) { + console.log(nameC); +} +else { + console.log(nameC); +} + +//// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js] +var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +var robotB = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +var _a = robotA.skills, primaryA = _a.primary, secondaryA = _a.secondary; +var nameB = robotB.name, _b = robotB.skills, primaryB = _b.primary, secondaryB = _b.secondary; +var _c = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, nameC = _c.name, _d = _c.skills, primaryB = _d.primary, secondaryB = _d.secondary; +if (nameB == nameB) { + console.log(nameC); +} +else { + console.log(nameC); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map new file mode 100644 index 00000000000..19d3843a9dc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAE9F,IAAI,oBAAY,qBAAiB,EAAE,yBAAqB,CAAc;AACtE,IAAM,mBAAW,sBAAY,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAA4E,mFAA8E,EAApJ,eAAW,kBAAY,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..15045ba9e71 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt @@ -0,0 +1,371 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js +mapUrl: sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js +sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts +------------------------------------------------------------------- +>>>var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +23> ^^^^^^^-> +1 >declare var console: { + > log(msg: string): void; + >} + >interface Robot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1 >Emitted(1, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(11, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(11, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(11, 21) + SourceIndex(0) +5 >Emitted(1, 16) Source(11, 23) + SourceIndex(0) +6 >Emitted(1, 20) Source(11, 27) + SourceIndex(0) +7 >Emitted(1, 22) Source(11, 29) + SourceIndex(0) +8 >Emitted(1, 29) Source(11, 36) + SourceIndex(0) +9 >Emitted(1, 31) Source(11, 38) + SourceIndex(0) +10>Emitted(1, 37) Source(11, 44) + SourceIndex(0) +11>Emitted(1, 39) Source(11, 46) + SourceIndex(0) +12>Emitted(1, 41) Source(11, 48) + SourceIndex(0) +13>Emitted(1, 48) Source(11, 55) + SourceIndex(0) +14>Emitted(1, 50) Source(11, 57) + SourceIndex(0) +15>Emitted(1, 58) Source(11, 65) + SourceIndex(0) +16>Emitted(1, 60) Source(11, 67) + SourceIndex(0) +17>Emitted(1, 69) Source(11, 76) + SourceIndex(0) +18>Emitted(1, 71) Source(11, 78) + SourceIndex(0) +19>Emitted(1, 77) Source(11, 84) + SourceIndex(0) +20>Emitted(1, 79) Source(11, 86) + SourceIndex(0) +21>Emitted(1, 81) Source(11, 88) + SourceIndex(0) +22>Emitted(1, 82) Source(11, 89) + SourceIndex(0) +--- +>>>var robotB = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^^^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > { +6 > name +7 > : +8 > "trimmer" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "trimming" +16> , +17> secondary +18> : +19> "edging" +20> } +21> } +22> ; +1->Emitted(2, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(12, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(12, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(12, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(12, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(12, 29) + SourceIndex(0) +8 >Emitted(2, 31) Source(12, 38) + SourceIndex(0) +9 >Emitted(2, 33) Source(12, 40) + SourceIndex(0) +10>Emitted(2, 39) Source(12, 46) + SourceIndex(0) +11>Emitted(2, 41) Source(12, 48) + SourceIndex(0) +12>Emitted(2, 43) Source(12, 50) + SourceIndex(0) +13>Emitted(2, 50) Source(12, 57) + SourceIndex(0) +14>Emitted(2, 52) Source(12, 59) + SourceIndex(0) +15>Emitted(2, 62) Source(12, 69) + SourceIndex(0) +16>Emitted(2, 64) Source(12, 71) + SourceIndex(0) +17>Emitted(2, 73) Source(12, 80) + SourceIndex(0) +18>Emitted(2, 75) Source(12, 82) + SourceIndex(0) +19>Emitted(2, 83) Source(12, 90) + SourceIndex(0) +20>Emitted(2, 85) Source(12, 92) + SourceIndex(0) +21>Emitted(2, 87) Source(12, 94) + SourceIndex(0) +22>Emitted(2, 88) Source(12, 95) + SourceIndex(0) +--- +>>>var _a = robotA.skills, primaryA = _a.primary, secondaryA = _a.secondary; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >var +3 > { skills: { +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +7 > } } = robotA; +1 >Emitted(3, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(14, 5) + SourceIndex(0) +3 >Emitted(3, 25) Source(14, 17) + SourceIndex(0) +4 >Emitted(3, 46) Source(14, 34) + SourceIndex(0) +5 >Emitted(3, 48) Source(14, 36) + SourceIndex(0) +6 >Emitted(3, 73) Source(14, 57) + SourceIndex(0) +7 >Emitted(3, 74) Source(14, 71) + SourceIndex(0) +--- +>>>var nameB = robotB.name, _b = robotB.skills, primaryB = _b.primary, secondaryB = _b.secondary; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var { +3 > name: nameB +4 > , skills: { +5 > primary: primaryB +6 > , +7 > secondary: secondaryB +8 > } } = robotB; +1->Emitted(4, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(15, 7) + SourceIndex(0) +3 >Emitted(4, 24) Source(15, 18) + SourceIndex(0) +4 >Emitted(4, 46) Source(15, 30) + SourceIndex(0) +5 >Emitted(4, 67) Source(15, 47) + SourceIndex(0) +6 >Emitted(4, 69) Source(15, 49) + SourceIndex(0) +7 >Emitted(4, 94) Source(15, 70) + SourceIndex(0) +8 >Emitted(4, 95) Source(15, 84) + SourceIndex(0) +--- +>>>var _c = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, nameC = _c.name, _d = _c.skills, primaryB = _d.primary, secondaryB = _d.secondary; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^^^^^^^^^^^^^^^^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^ +1-> + > +2 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = +3 > { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } +4 > +5 > name: nameC +6 > , skills: { +7 > primary: primaryB +8 > , +9 > secondary: secondaryB +10> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +1->Emitted(5, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(16, 77) + SourceIndex(0) +3 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) +4 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) +5 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) +6 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) +7 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) +8 >Emitted(5, 146) Source(16, 49) + SourceIndex(0) +9 >Emitted(5, 171) Source(16, 70) + SourceIndex(0) +10>Emitted(5, 172) Source(16, 156) + SourceIndex(0) +--- +>>>if (nameB == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameB +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(6, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(6, 3) Source(18, 3) + SourceIndex(0) +3 >Emitted(6, 4) Source(18, 4) + SourceIndex(0) +4 >Emitted(6, 5) Source(18, 5) + SourceIndex(0) +5 >Emitted(6, 10) Source(18, 10) + SourceIndex(0) +6 >Emitted(6, 14) Source(18, 14) + SourceIndex(0) +7 >Emitted(6, 19) Source(18, 19) + SourceIndex(0) +8 >Emitted(6, 20) Source(18, 20) + SourceIndex(0) +9 >Emitted(6, 21) Source(18, 21) + SourceIndex(0) +10>Emitted(6, 22) Source(18, 22) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(7, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(7, 12) Source(19, 12) + SourceIndex(0) +3 >Emitted(7, 13) Source(19, 13) + SourceIndex(0) +4 >Emitted(7, 16) Source(19, 16) + SourceIndex(0) +5 >Emitted(7, 17) Source(19, 17) + SourceIndex(0) +6 >Emitted(7, 22) Source(19, 22) + SourceIndex(0) +7 >Emitted(7, 23) Source(19, 23) + SourceIndex(0) +8 >Emitted(7, 24) Source(19, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^-> +1 > + > +2 >} +1 >Emitted(8, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(8, 2) Source(20, 2) + SourceIndex(0) +--- +>>>else { +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >else +3 > +4 > { +1->Emitted(9, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(9, 6) Source(21, 6) + SourceIndex(0) +4 >Emitted(9, 7) Source(21, 7) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(10, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(22, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(22, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(22, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(22, 17) + SourceIndex(0) +6 >Emitted(10, 22) Source(22, 22) + SourceIndex(0) +7 >Emitted(10, 23) Source(22, 23) + SourceIndex(0) +8 >Emitted(10, 24) Source(22, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(23, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols new file mode 100644 index 00000000000..09b66f24ad8 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.symbols @@ -0,0 +1,89 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 3, 17)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 4, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 5, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 6, 24)) + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 10, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 10, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 10, 36)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 10, 46)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 10, 65)) + +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 11, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 11, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 11, 38)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 11, 48)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 11, 69)) + +var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 4, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 5, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 13, 15)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 6, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 13, 34)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 10, 3)) + +var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 3, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 5)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 4, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 5, 13)) +>primaryB : Symbol(primaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 28), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 28)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 6, 24)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 47), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 47)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 11, 3)) + +var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 77)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 92)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 102)) +>primaryB : Symbol(primaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 28), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 28)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 121)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 47), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 47)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 77)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 92)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 102)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 121)) + +if (nameB == nameB) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 5)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 14, 5)) + + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 5)) +} +else { + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 0, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts, 15, 5)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.types new file mode 100644 index 00000000000..1101b01b1a7 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.types @@ -0,0 +1,107 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +>robotB : Robot +>Robot : Robot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + +var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>robotA : Robot + +var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; +>name : any +>nameB : string +>skills : any +>primary : any +>primaryB : string +>secondary : any +>secondaryB : string +>robotB : Robot + +var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +>name : any +>nameC : string +>skills : any +>primary : any +>primaryB : string +>secondary : any +>secondaryB : string +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + +if (nameB == nameB) { +>nameB == nameB : boolean +>nameB : string +>nameB : string + + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} +else { + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts new file mode 100644 index 00000000000..a40e5f11ebb --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts @@ -0,0 +1,24 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; + +var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; +var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; +var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + +if (nameB == nameB) { + console.log(nameC); +} +else { + console.log(nameC); +} \ No newline at end of file From 8af2160922aeadd7c2e024438fff88fda078cf05 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 3 Dec 2015 16:41:58 -0800 Subject: [PATCH 023/164] Make nested object literal destructuring pattern better --- src/compiler/emitter.ts | 9 +- src/compiler/sourcemap.ts | 9 ++ src/compiler/utilities.ts | 7 ++ ...StatementNestedObjectBindingPattern.js.map | 2 +- ...ntNestedObjectBindingPattern.sourcemap.txt | 113 ++++++++++-------- 5 files changed, 85 insertions(+), 55 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index ab5e6bfb774..d46d9d47210 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1979,16 +1979,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function createPropertyAccessExpression(expression: Expression, name: Identifier): PropertyAccessExpression { - const result = createSynthesizedNode(SyntaxKind.PropertyAccessExpression); + const result = createSourceMappedSynthesizedNode(SyntaxKind.PropertyAccessExpression, name); result.expression = parenthesizeForAccess(expression); result.dotToken = createSynthesizedNode(SyntaxKind.DotToken); result.name = name; - return result; } function createElementAccessExpression(expression: Expression, argumentExpression: Expression): ElementAccessExpression { - const result = createSynthesizedNode(SyntaxKind.ElementAccessExpression); + const result = createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, argumentExpression); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; @@ -2016,7 +2015,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return expr; } - const node = createSynthesizedNode(SyntaxKind.ParenthesizedExpression); + const node = createSourceMappedSynthesizedNode(SyntaxKind.ParenthesizedExpression, expr); node.expression = expr; return node; } @@ -3862,7 +3861,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { // We create a synthetic copy of the identifier in order to avoid the rewriting that might // otherwise occur when the identifier is emitted. - index = createSynthesizedNode(propName.kind); + index = createSourceMappedSynthesizedNode(propName.kind, propName); (index).text = (propName).text; } diff --git a/src/compiler/sourcemap.ts b/src/compiler/sourcemap.ts index 982c37e3fe8..680c48cfaa4 100644 --- a/src/compiler/sourcemap.ts +++ b/src/compiler/sourcemap.ts @@ -232,12 +232,21 @@ namespace ts { } } + function getSourceMapRange(range: TextRange) { + while ((range as SynthesizedNode).sourceMapNode) { + range = (range as SynthesizedNode).sourceMapNode; + } + return range; + } + function emitStart(range: TextRange) { + range = getSourceMapRange(range); const rangeHasDecorators = !!(range as Node).decorators; emitPos(range.pos !== -1 ? skipTrivia(currentSourceFile.text, rangeHasDecorators ? (range as Node).decorators.end : range.pos) : -1); } function emitEnd(range: TextRange, stopOverridingEnd?: boolean) { + range = getSourceMapRange(range); emitPos(range.end); stopOverridingSpan = stopOverridingEnd; } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 0f0f50719c1..03cdf26a4ad 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -12,6 +12,7 @@ namespace ts { leadingCommentRanges?: CommentRange[]; trailingCommentRanges?: CommentRange[]; startsOnNewLine: boolean; + sourceMapNode?: Node; } export function getDeclarationOfKind(symbol: Symbol, kind: SyntaxKind): Declaration { @@ -1626,6 +1627,12 @@ namespace ts { return node; } + export function createSourceMappedSynthesizedNode(kind: SyntaxKind, sourceMapNode: Node, startsOnNewLine?: boolean): Node { + const synthesizedNode = createSynthesizedNode(kind, startsOnNewLine); + synthesizedNode.sourceMapNode = sourceMapNode; + return synthesizedNode; + } + export function createSynthesizedNodeArray(): NodeArray { const array = >[]; array.pos = -1; diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map index 19d3843a9dc..6723a44d68b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAE9F,IAAI,oBAAY,qBAAiB,EAAE,yBAAqB,CAAc;AACtE,IAAM,mBAAW,sBAAY,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAA4E,mFAA8E,EAApJ,eAAW,kBAAY,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAE9F,IAAM,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACtE,IAAM,mBAAW,EAAE,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAA4E,mFAA8E,EAApJ,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt index 15045ba9e71..085104bad32 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt @@ -159,56 +159,65 @@ sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingP >>>var _a = robotA.skills, primaryA = _a.primary, secondaryA = _a.secondary; 1 > 2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^ -4 > ^^^^^^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ -7 > ^ -8 > ^^^^^^^^^^^^^^^^^^^^^^-> +3 > ^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^ +9 > ^^^^^^^^^^^^^^^^^^^^^^-> 1 > > > -2 >var -3 > { skills: { -4 > primary: primaryA -5 > , -6 > secondary: secondaryA -7 > } } = robotA; +2 >var { +3 > skills +4 > : { +5 > primary: primaryA +6 > , +7 > secondary: secondaryA +8 > } } = robotA; 1 >Emitted(3, 1) Source(14, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(14, 5) + SourceIndex(0) -3 >Emitted(3, 25) Source(14, 17) + SourceIndex(0) -4 >Emitted(3, 46) Source(14, 34) + SourceIndex(0) -5 >Emitted(3, 48) Source(14, 36) + SourceIndex(0) -6 >Emitted(3, 73) Source(14, 57) + SourceIndex(0) -7 >Emitted(3, 74) Source(14, 71) + SourceIndex(0) +2 >Emitted(3, 5) Source(14, 7) + SourceIndex(0) +3 >Emitted(3, 23) Source(14, 13) + SourceIndex(0) +4 >Emitted(3, 25) Source(14, 17) + SourceIndex(0) +5 >Emitted(3, 46) Source(14, 34) + SourceIndex(0) +6 >Emitted(3, 48) Source(14, 36) + SourceIndex(0) +7 >Emitted(3, 73) Source(14, 57) + SourceIndex(0) +8 >Emitted(3, 74) Source(14, 71) + SourceIndex(0) --- >>>var nameB = robotB.name, _b = robotB.skills, primaryB = _b.primary, secondaryB = _b.secondary; 1-> 2 >^^^^ 3 > ^^^^^^^^^^^^^^^^^^^ -4 > ^^^^^^^^^^^^^^^^^^^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1-> > 2 >var { 3 > name: nameB -4 > , skills: { -5 > primary: primaryB -6 > , -7 > secondary: secondaryB -8 > } } = robotB; +4 > , +5 > skills +6 > : { +7 > primary: primaryB +8 > , +9 > secondary: secondaryB +10> } } = robotB; 1->Emitted(4, 1) Source(15, 1) + SourceIndex(0) 2 >Emitted(4, 5) Source(15, 7) + SourceIndex(0) 3 >Emitted(4, 24) Source(15, 18) + SourceIndex(0) -4 >Emitted(4, 46) Source(15, 30) + SourceIndex(0) -5 >Emitted(4, 67) Source(15, 47) + SourceIndex(0) -6 >Emitted(4, 69) Source(15, 49) + SourceIndex(0) -7 >Emitted(4, 94) Source(15, 70) + SourceIndex(0) -8 >Emitted(4, 95) Source(15, 84) + SourceIndex(0) +4 >Emitted(4, 26) Source(15, 20) + SourceIndex(0) +5 >Emitted(4, 44) Source(15, 26) + SourceIndex(0) +6 >Emitted(4, 46) Source(15, 30) + SourceIndex(0) +7 >Emitted(4, 67) Source(15, 47) + SourceIndex(0) +8 >Emitted(4, 69) Source(15, 49) + SourceIndex(0) +9 >Emitted(4, 94) Source(15, 70) + SourceIndex(0) +10>Emitted(4, 95) Source(15, 84) + SourceIndex(0) --- >>>var _c = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, nameC = _c.name, _d = _c.skills, primaryB = _d.primary, secondaryB = _d.secondary; 1-> @@ -216,32 +225,38 @@ sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingP 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 > ^^ 5 > ^^^^^^^^^^^^^^^ -6 > ^^^^^^^^^^^^^^^^^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ -10> ^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^ 1-> > 2 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = 3 > { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } 4 > 5 > name: nameC -6 > , skills: { -7 > primary: primaryB -8 > , -9 > secondary: secondaryB -10> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +6 > , +7 > skills +8 > : { +9 > primary: primaryB +10> , +11> secondary: secondaryB +12> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; 1->Emitted(5, 1) Source(16, 1) + SourceIndex(0) 2 >Emitted(5, 5) Source(16, 77) + SourceIndex(0) 3 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) 4 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) 5 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) -6 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) -7 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) -8 >Emitted(5, 146) Source(16, 49) + SourceIndex(0) -9 >Emitted(5, 171) Source(16, 70) + SourceIndex(0) -10>Emitted(5, 172) Source(16, 156) + SourceIndex(0) +6 >Emitted(5, 107) Source(16, 20) + SourceIndex(0) +7 >Emitted(5, 121) Source(16, 26) + SourceIndex(0) +8 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) +9 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) +10>Emitted(5, 146) Source(16, 49) + SourceIndex(0) +11>Emitted(5, 171) Source(16, 70) + SourceIndex(0) +12>Emitted(5, 172) Source(16, 156) + SourceIndex(0) --- >>>if (nameB == nameB) { 1 > From 7acc51c7a728adabc86e8b08f4dfbfc04398da30 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 3 Dec 2015 16:42:14 -0800 Subject: [PATCH 024/164] Tests for parameter object binding pattern --- ...tructuringParameterObjectBindingPattern.js | 53 ++ ...turingParameterObjectBindingPattern.js.map | 2 + ...arameterObjectBindingPattern.sourcemap.txt | 472 ++++++++++++++++++ ...uringParameterObjectBindingPattern.symbols | 91 ++++ ...cturingParameterObjectBindingPattern.types | 113 +++++ ...tructuringParameterObjectBindingPattern.ts | 29 ++ 6 files changed, 760 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js new file mode 100644 index 00000000000..4a56f449ecc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js @@ -0,0 +1,53 @@ +//// [sourceMapValidationDestructuringParameterObjectBindingPattern.ts] +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; + +function foo1({ name: nameA }: Robot) { + console.log(nameA); +} +function foo2({ name: nameB, skill: skillB }: Robot) { + console.log(nameB); +} +function foo3({ name }: Robot) { + console.log(name); +} + +foo1(robotA); +foo1({ name: "Edger", skill: "cutting edges" }); + +foo2(robotA); +foo2({ name: "Edger", skill: "cutting edges" }); + +foo3(robotA); +foo3({ name: "Edger", skill: "cutting edges" }); + + +//// [sourceMapValidationDestructuringParameterObjectBindingPattern.js] +var hello = "hello"; +var robotA = { name: "mower", skill: "mowing" }; +function foo1(_a) { + var nameA = _a.name; + console.log(nameA); +} +function foo2(_a) { + var nameB = _a.name, skillB = _a.skill; + console.log(nameB); +} +function foo3(_a) { + var name = _a.name; + console.log(name); +} +foo1(robotA); +foo1({ name: "Edger", skill: "cutting edges" }); +foo2(robotA); +foo2({ name: "Edger", skill: "cutting edges" }); +foo3(robotA); +foo3({ name: "Edger", skill: "cutting edges" }); +//# sourceMappingURL=sourceMapValidationDestructuringParameterObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map new file mode 100644 index 00000000000..9290f57f89d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParameterObjectBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParameterObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterObjectBindingPattern.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAEvD,cAAc,EAAsB;QAAtB,eAAsB;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAqC;QAAnC,eAAW,EAAE,iBAAa;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAe;QAAf,cAAe;IACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..63eea72d8a0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt @@ -0,0 +1,472 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParameterObjectBindingPattern.js +mapUrl: sourceMapValidationDestructuringParameterObjectBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParameterObjectBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.js +sourceFile:sourceMapValidationDestructuringParameterObjectBindingPattern.ts +------------------------------------------------------------------- +>>>var hello = "hello"; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >interface Robot { + > name: string; + > skill: string; + >} + >declare var console: { + > log(msg: string): void; + >} + > +2 >var +3 > hello +4 > = +5 > "hello" +6 > ; +1 >Emitted(1, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(8, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(8, 13) + SourceIndex(0) +5 >Emitted(1, 20) Source(8, 20) + SourceIndex(0) +6 >Emitted(1, 21) Source(8, 21) + SourceIndex(0) +--- +>>>var robotA = { name: "mower", skill: "mowing" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +1-> + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1->Emitted(2, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(9, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(9, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(9, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(9, 29) + SourceIndex(0) +8 >Emitted(2, 29) Source(9, 36) + SourceIndex(0) +9 >Emitted(2, 31) Source(9, 38) + SourceIndex(0) +10>Emitted(2, 36) Source(9, 43) + SourceIndex(0) +11>Emitted(2, 38) Source(9, 45) + SourceIndex(0) +12>Emitted(2, 46) Source(9, 53) + SourceIndex(0) +13>Emitted(2, 48) Source(9, 55) + SourceIndex(0) +14>Emitted(2, 49) Source(9, 56) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > { name: nameA }: Robot +1 >Emitted(3, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(3, 15) Source(11, 15) + SourceIndex(0) +3 >Emitted(3, 17) Source(11, 37) + SourceIndex(0) +--- +>>> var nameA = _a.name; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^-> +1-> +2 > { name: nameA }: Robot +1->Emitted(4, 9) Source(11, 15) + SourceIndex(0) +2 >Emitted(4, 24) Source(11, 37) + SourceIndex(0) +--- +>>> console.log(nameA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1->Emitted(5, 5) Source(12, 5) + SourceIndex(0) +2 >Emitted(5, 12) Source(12, 12) + SourceIndex(0) +3 >Emitted(5, 13) Source(12, 13) + SourceIndex(0) +4 >Emitted(5, 16) Source(12, 16) + SourceIndex(0) +5 >Emitted(5, 17) Source(12, 17) + SourceIndex(0) +6 >Emitted(5, 22) Source(12, 22) + SourceIndex(0) +7 >Emitted(5, 23) Source(12, 23) + SourceIndex(0) +8 >Emitted(5, 24) Source(12, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(13, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >function foo2( +3 > { name: nameB, skill: skillB }: Robot +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 15) Source(14, 15) + SourceIndex(0) +3 >Emitted(7, 17) Source(14, 52) + SourceIndex(0) +--- +>>> var nameB = _a.name, skillB = _a.skill; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameB +3 > , +4 > skill: skillB +1->Emitted(8, 9) Source(14, 17) + SourceIndex(0) +2 >Emitted(8, 24) Source(14, 28) + SourceIndex(0) +3 >Emitted(8, 26) Source(14, 30) + SourceIndex(0) +4 >Emitted(8, 43) Source(14, 43) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > }: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(9, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(9, 12) Source(15, 12) + SourceIndex(0) +3 >Emitted(9, 13) Source(15, 13) + SourceIndex(0) +4 >Emitted(9, 16) Source(15, 16) + SourceIndex(0) +5 >Emitted(9, 17) Source(15, 17) + SourceIndex(0) +6 >Emitted(9, 22) Source(15, 22) + SourceIndex(0) +7 >Emitted(9, 23) Source(15, 23) + SourceIndex(0) +8 >Emitted(9, 24) Source(15, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(10, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(10, 2) Source(16, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^-> +1-> + > +2 >function foo3( +3 > { name }: Robot +1->Emitted(11, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(11, 15) Source(17, 15) + SourceIndex(0) +3 >Emitted(11, 17) Source(17, 30) + SourceIndex(0) +--- +>>> var name = _a.name; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^-> +1-> +2 > { name }: Robot +1->Emitted(12, 9) Source(17, 15) + SourceIndex(0) +2 >Emitted(12, 23) Source(17, 30) + SourceIndex(0) +--- +>>> console.log(name); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^ +7 > ^ +8 > ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > name +7 > ) +8 > ; +1->Emitted(13, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(13, 12) Source(18, 12) + SourceIndex(0) +3 >Emitted(13, 13) Source(18, 13) + SourceIndex(0) +4 >Emitted(13, 16) Source(18, 16) + SourceIndex(0) +5 >Emitted(13, 17) Source(18, 17) + SourceIndex(0) +6 >Emitted(13, 21) Source(18, 21) + SourceIndex(0) +7 >Emitted(13, 22) Source(18, 22) + SourceIndex(0) +8 >Emitted(13, 23) Source(18, 23) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(14, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(14, 2) Source(19, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(15, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(15, 6) Source(21, 6) + SourceIndex(0) +4 >Emitted(15, 12) Source(21, 12) + SourceIndex(0) +5 >Emitted(15, 13) Source(21, 13) + SourceIndex(0) +6 >Emitted(15, 14) Source(21, 14) + SourceIndex(0) +--- +>>>foo1({ name: "Edger", skill: "cutting edges" }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^ +1-> + > +2 >foo1 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> ) +14> ; +1->Emitted(16, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(16, 6) Source(22, 6) + SourceIndex(0) +4 >Emitted(16, 8) Source(22, 8) + SourceIndex(0) +5 >Emitted(16, 12) Source(22, 12) + SourceIndex(0) +6 >Emitted(16, 14) Source(22, 14) + SourceIndex(0) +7 >Emitted(16, 21) Source(22, 21) + SourceIndex(0) +8 >Emitted(16, 23) Source(22, 23) + SourceIndex(0) +9 >Emitted(16, 28) Source(22, 28) + SourceIndex(0) +10>Emitted(16, 30) Source(22, 30) + SourceIndex(0) +11>Emitted(16, 45) Source(22, 45) + SourceIndex(0) +12>Emitted(16, 47) Source(22, 47) + SourceIndex(0) +13>Emitted(16, 48) Source(22, 48) + SourceIndex(0) +14>Emitted(16, 49) Source(22, 49) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(17, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(17, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(17, 6) Source(24, 6) + SourceIndex(0) +4 >Emitted(17, 12) Source(24, 12) + SourceIndex(0) +5 >Emitted(17, 13) Source(24, 13) + SourceIndex(0) +6 >Emitted(17, 14) Source(24, 14) + SourceIndex(0) +--- +>>>foo2({ name: "Edger", skill: "cutting edges" }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^ +1-> + > +2 >foo2 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> ) +14> ; +1->Emitted(18, 1) Source(25, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(25, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(25, 6) + SourceIndex(0) +4 >Emitted(18, 8) Source(25, 8) + SourceIndex(0) +5 >Emitted(18, 12) Source(25, 12) + SourceIndex(0) +6 >Emitted(18, 14) Source(25, 14) + SourceIndex(0) +7 >Emitted(18, 21) Source(25, 21) + SourceIndex(0) +8 >Emitted(18, 23) Source(25, 23) + SourceIndex(0) +9 >Emitted(18, 28) Source(25, 28) + SourceIndex(0) +10>Emitted(18, 30) Source(25, 30) + SourceIndex(0) +11>Emitted(18, 45) Source(25, 45) + SourceIndex(0) +12>Emitted(18, 47) Source(25, 47) + SourceIndex(0) +13>Emitted(18, 48) Source(25, 48) + SourceIndex(0) +14>Emitted(18, 49) Source(25, 49) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(19, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(27, 6) + SourceIndex(0) +4 >Emitted(19, 12) Source(27, 12) + SourceIndex(0) +5 >Emitted(19, 13) Source(27, 13) + SourceIndex(0) +6 >Emitted(19, 14) Source(27, 14) + SourceIndex(0) +--- +>>>foo3({ name: "Edger", skill: "cutting edges" }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo3 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> ) +14> ; +1->Emitted(20, 1) Source(28, 1) + SourceIndex(0) +2 >Emitted(20, 5) Source(28, 5) + SourceIndex(0) +3 >Emitted(20, 6) Source(28, 6) + SourceIndex(0) +4 >Emitted(20, 8) Source(28, 8) + SourceIndex(0) +5 >Emitted(20, 12) Source(28, 12) + SourceIndex(0) +6 >Emitted(20, 14) Source(28, 14) + SourceIndex(0) +7 >Emitted(20, 21) Source(28, 21) + SourceIndex(0) +8 >Emitted(20, 23) Source(28, 23) + SourceIndex(0) +9 >Emitted(20, 28) Source(28, 28) + SourceIndex(0) +10>Emitted(20, 30) Source(28, 30) + SourceIndex(0) +11>Emitted(20, 45) Source(28, 45) + SourceIndex(0) +12>Emitted(20, 47) Source(28, 47) + SourceIndex(0) +13>Emitted(20, 48) Source(28, 48) + SourceIndex(0) +14>Emitted(20, 49) Source(28, 49) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParameterObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols new file mode 100644 index 00000000000..9b810165c1b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.symbols @@ -0,0 +1,91 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.ts === +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 0)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 1, 17)) +} +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 5, 8)) +} +var hello = "hello"; +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 7, 3)) + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 36)) + +function foo1({ name: nameA }: Robot) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 55)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 10, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 0)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 10, 15)) +} +function foo2({ name: nameB, skill: skillB }: Robot) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 12, 1)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 13, 15)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 1, 17)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 13, 28)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 0)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 13, 15)) +} +function foo3({ name }: Robot) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 15, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 16, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 0, 0)) + + console.log(name); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 4, 22)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 16, 15)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 55)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 3)) + +foo1({ name: "Edger", skill: "cutting edges" }); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 55)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 21, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 21, 21)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 12, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 3)) + +foo2({ name: "Edger", skill: "cutting edges" }); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 12, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 24, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 24, 21)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 15, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 8, 3)) + +foo3({ name: "Edger", skill: "cutting edges" }); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 15, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 27, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPattern.ts, 27, 21)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.types new file mode 100644 index 00000000000..894cd714c73 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.types @@ -0,0 +1,113 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.ts === +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +var hello = "hello"; +>hello : string +>"hello" : string + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +function foo1({ name: nameA }: Robot) { +>foo1 : ({ name: nameA }: Robot) => void +>name : any +>nameA : string +>Robot : Robot + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameA : string +} +function foo2({ name: nameB, skill: skillB }: Robot) { +>foo2 : ({ name: nameB, skill: skillB }: Robot) => void +>name : any +>nameB : string +>skill : any +>skillB : string +>Robot : Robot + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameB : string +} +function foo3({ name }: Robot) { +>foo3 : ({ name }: Robot) => void +>name : string +>Robot : Robot + + console.log(name); +>console.log(name) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>name : string +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ({ name: nameA }: Robot) => void +>robotA : Robot + +foo1({ name: "Edger", skill: "cutting edges" }); +>foo1({ name: "Edger", skill: "cutting edges" }) : void +>foo1 : ({ name: nameA }: Robot) => void +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ({ name: nameB, skill: skillB }: Robot) => void +>robotA : Robot + +foo2({ name: "Edger", skill: "cutting edges" }); +>foo2({ name: "Edger", skill: "cutting edges" }) : void +>foo2 : ({ name: nameB, skill: skillB }: Robot) => void +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ({ name }: Robot) => void +>robotA : Robot + +foo3({ name: "Edger", skill: "cutting edges" }); +>foo3({ name: "Edger", skill: "cutting edges" }) : void +>foo3 : ({ name }: Robot) => void +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.ts new file mode 100644 index 00000000000..0f52806dd16 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPattern.ts @@ -0,0 +1,29 @@ +// @sourcemap: true +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; + +function foo1({ name: nameA }: Robot) { + console.log(nameA); +} +function foo2({ name: nameB, skill: skillB }: Robot) { + console.log(nameB); +} +function foo3({ name }: Robot) { + console.log(name); +} + +foo1(robotA); +foo1({ name: "Edger", skill: "cutting edges" }); + +foo2(robotA); +foo2({ name: "Edger", skill: "cutting edges" }); + +foo3(robotA); +foo3({ name: "Edger", skill: "cutting edges" }); From ad73ab2c16a3a43d664b7fbc3d6516638c0c86c2 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 3 Dec 2015 16:51:11 -0800 Subject: [PATCH 025/164] Test cases for nested object binding pattern in parameter declaration --- ...ringParameterNestedObjectBindingPattern.js | 54 ++ ...ParameterNestedObjectBindingPattern.js.map | 2 + ...erNestedObjectBindingPattern.sourcemap.txt | 578 ++++++++++++++++++ ...arameterNestedObjectBindingPattern.symbols | 112 ++++ ...gParameterNestedObjectBindingPattern.types | 141 +++++ ...ringParameterNestedObjectBindingPattern.ts | 31 + 6 files changed, 918 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js new file mode 100644 index 00000000000..4c7c0d6307b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js @@ -0,0 +1,54 @@ +//// [sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts] +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + +function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + console.log(primaryA); +} +function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + console.log(secondaryB); +} +function foo3({ skills }: Robot) { + console.log(skills.primary); +} + +foo1(robotA); +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo2(robotA); +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo3(robotA); +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + + +//// [sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js] +var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function foo1(_a) { + var _b = _a.skills, primaryA = _b.primary, secondaryA = _b.secondary; + console.log(primaryA); +} +function foo2(_a) { + var nameC = _a.name, _b = _a.skills, primaryB = _b.primary, secondaryB = _b.secondary; + console.log(secondaryB); +} +function foo3(_a) { + var skills = _a.skills; + console.log(skills.primary); +} +foo1(robotA); +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +foo2(robotA); +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +foo3(robotA); +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +//# sourceMappingURL=sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map new file mode 100644 index 00000000000..7bc982e7e46 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AAExF,cAAc,EAA+D;QAA7D,cAAM,EAAI,qBAAiB,EAAE,yBAAqB;IAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,cAAc,EAA4E;QAA1E,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB;IAC3E,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AACD,cAAc,EAAiB;QAAjB,kBAAiB;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..720057d3f79 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt @@ -0,0 +1,578 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js +mapUrl: sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js +sourceFile:sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts +------------------------------------------------------------------- +>>>var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +1 >declare var console: { + > log(msg: string): void; + >} + >interface Robot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1 >Emitted(1, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(11, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(11, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(11, 21) + SourceIndex(0) +5 >Emitted(1, 16) Source(11, 23) + SourceIndex(0) +6 >Emitted(1, 20) Source(11, 27) + SourceIndex(0) +7 >Emitted(1, 22) Source(11, 29) + SourceIndex(0) +8 >Emitted(1, 29) Source(11, 36) + SourceIndex(0) +9 >Emitted(1, 31) Source(11, 38) + SourceIndex(0) +10>Emitted(1, 37) Source(11, 44) + SourceIndex(0) +11>Emitted(1, 39) Source(11, 46) + SourceIndex(0) +12>Emitted(1, 41) Source(11, 48) + SourceIndex(0) +13>Emitted(1, 48) Source(11, 55) + SourceIndex(0) +14>Emitted(1, 50) Source(11, 57) + SourceIndex(0) +15>Emitted(1, 58) Source(11, 65) + SourceIndex(0) +16>Emitted(1, 60) Source(11, 67) + SourceIndex(0) +17>Emitted(1, 69) Source(11, 76) + SourceIndex(0) +18>Emitted(1, 71) Source(11, 78) + SourceIndex(0) +19>Emitted(1, 77) Source(11, 84) + SourceIndex(0) +20>Emitted(1, 79) Source(11, 86) + SourceIndex(0) +21>Emitted(1, 81) Source(11, 88) + SourceIndex(0) +22>Emitted(1, 82) Source(11, 89) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > { skills: { primary: primaryA, secondary: secondaryA } }: Robot +1 >Emitted(2, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(2, 15) Source(13, 15) + SourceIndex(0) +3 >Emitted(2, 17) Source(13, 78) + SourceIndex(0) +--- +>>> var _b = _a.skills, primaryA = _b.primary, secondaryA = _b.secondary; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills +3 > : { +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1->Emitted(3, 9) Source(13, 17) + SourceIndex(0) +2 >Emitted(3, 23) Source(13, 23) + SourceIndex(0) +3 >Emitted(3, 25) Source(13, 27) + SourceIndex(0) +4 >Emitted(3, 46) Source(13, 44) + SourceIndex(0) +5 >Emitted(3, 48) Source(13, 46) + SourceIndex(0) +6 >Emitted(3, 73) Source(13, 67) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } }: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(4, 5) Source(14, 5) + SourceIndex(0) +2 >Emitted(4, 12) Source(14, 12) + SourceIndex(0) +3 >Emitted(4, 13) Source(14, 13) + SourceIndex(0) +4 >Emitted(4, 16) Source(14, 16) + SourceIndex(0) +5 >Emitted(4, 17) Source(14, 17) + SourceIndex(0) +6 >Emitted(4, 25) Source(14, 25) + SourceIndex(0) +7 >Emitted(4, 26) Source(14, 26) + SourceIndex(0) +8 >Emitted(4, 27) Source(14, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(15, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >function foo2( +3 > { name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot +1->Emitted(6, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(6, 15) Source(16, 15) + SourceIndex(0) +3 >Emitted(6, 17) Source(16, 91) + SourceIndex(0) +--- +>>> var nameC = _a.name, _b = _a.skills, primaryB = _b.primary, secondaryB = _b.secondary; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameC +3 > , +4 > skills +5 > : { +6 > primary: primaryB +7 > , +8 > secondary: secondaryB +1->Emitted(7, 9) Source(16, 17) + SourceIndex(0) +2 >Emitted(7, 24) Source(16, 28) + SourceIndex(0) +3 >Emitted(7, 26) Source(16, 30) + SourceIndex(0) +4 >Emitted(7, 40) Source(16, 36) + SourceIndex(0) +5 >Emitted(7, 42) Source(16, 40) + SourceIndex(0) +6 >Emitted(7, 63) Source(16, 57) + SourceIndex(0) +7 >Emitted(7, 65) Source(16, 59) + SourceIndex(0) +8 >Emitted(7, 90) Source(16, 80) + SourceIndex(0) +--- +>>> console.log(secondaryB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^ +7 > ^ +8 > ^ +1 > } }: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > secondaryB +7 > ) +8 > ; +1 >Emitted(8, 5) Source(17, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(17, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(17, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(17, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(17, 17) + SourceIndex(0) +6 >Emitted(8, 27) Source(17, 27) + SourceIndex(0) +7 >Emitted(8, 28) Source(17, 28) + SourceIndex(0) +8 >Emitted(8, 29) Source(17, 29) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(18, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^-> +1-> + > +2 >function foo3( +3 > { skills }: Robot +1->Emitted(10, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(10, 15) Source(19, 15) + SourceIndex(0) +3 >Emitted(10, 17) Source(19, 32) + SourceIndex(0) +--- +>>> var skills = _a.skills; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^-> +1-> +2 > { skills }: Robot +1->Emitted(11, 9) Source(19, 15) + SourceIndex(0) +2 >Emitted(11, 27) Source(19, 32) + SourceIndex(0) +--- +>>> console.log(skills.primary); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^^^^^^^ +9 > ^ +10> ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > skills +7 > . +8 > primary +9 > ) +10> ; +1->Emitted(12, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(20, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(20, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(20, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(20, 17) + SourceIndex(0) +6 >Emitted(12, 23) Source(20, 23) + SourceIndex(0) +7 >Emitted(12, 24) Source(20, 24) + SourceIndex(0) +8 >Emitted(12, 31) Source(20, 31) + SourceIndex(0) +9 >Emitted(12, 32) Source(20, 32) + SourceIndex(0) +10>Emitted(12, 33) Source(20, 33) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(21, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(14, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(14, 6) Source(23, 6) + SourceIndex(0) +4 >Emitted(14, 12) Source(23, 12) + SourceIndex(0) +5 >Emitted(14, 13) Source(23, 13) + SourceIndex(0) +6 >Emitted(14, 14) Source(23, 14) + SourceIndex(0) +--- +>>>foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^^^ +15> ^^ +16> ^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^ +21> ^ +22> ^ +1-> + > +2 >foo1 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skills +10> : +11> { +12> primary +13> : +14> "edging" +15> , +16> secondary +17> : +18> "branch trimming" +19> } +20> } +21> ) +22> ; +1->Emitted(15, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(15, 6) Source(24, 6) + SourceIndex(0) +4 >Emitted(15, 8) Source(24, 8) + SourceIndex(0) +5 >Emitted(15, 12) Source(24, 12) + SourceIndex(0) +6 >Emitted(15, 14) Source(24, 14) + SourceIndex(0) +7 >Emitted(15, 21) Source(24, 21) + SourceIndex(0) +8 >Emitted(15, 23) Source(24, 23) + SourceIndex(0) +9 >Emitted(15, 29) Source(24, 29) + SourceIndex(0) +10>Emitted(15, 31) Source(24, 31) + SourceIndex(0) +11>Emitted(15, 33) Source(24, 33) + SourceIndex(0) +12>Emitted(15, 40) Source(24, 40) + SourceIndex(0) +13>Emitted(15, 42) Source(24, 42) + SourceIndex(0) +14>Emitted(15, 50) Source(24, 50) + SourceIndex(0) +15>Emitted(15, 52) Source(24, 52) + SourceIndex(0) +16>Emitted(15, 61) Source(24, 61) + SourceIndex(0) +17>Emitted(15, 63) Source(24, 63) + SourceIndex(0) +18>Emitted(15, 80) Source(24, 80) + SourceIndex(0) +19>Emitted(15, 82) Source(24, 82) + SourceIndex(0) +20>Emitted(15, 84) Source(24, 84) + SourceIndex(0) +21>Emitted(15, 85) Source(24, 85) + SourceIndex(0) +22>Emitted(15, 86) Source(24, 86) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(16, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(16, 6) Source(26, 6) + SourceIndex(0) +4 >Emitted(16, 12) Source(26, 12) + SourceIndex(0) +5 >Emitted(16, 13) Source(26, 13) + SourceIndex(0) +6 >Emitted(16, 14) Source(26, 14) + SourceIndex(0) +--- +>>>foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^^^ +15> ^^ +16> ^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^ +21> ^ +22> ^ +1-> + > +2 >foo2 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skills +10> : +11> { +12> primary +13> : +14> "edging" +15> , +16> secondary +17> : +18> "branch trimming" +19> } +20> } +21> ) +22> ; +1->Emitted(17, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(17, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(17, 6) Source(27, 6) + SourceIndex(0) +4 >Emitted(17, 8) Source(27, 8) + SourceIndex(0) +5 >Emitted(17, 12) Source(27, 12) + SourceIndex(0) +6 >Emitted(17, 14) Source(27, 14) + SourceIndex(0) +7 >Emitted(17, 21) Source(27, 21) + SourceIndex(0) +8 >Emitted(17, 23) Source(27, 23) + SourceIndex(0) +9 >Emitted(17, 29) Source(27, 29) + SourceIndex(0) +10>Emitted(17, 31) Source(27, 31) + SourceIndex(0) +11>Emitted(17, 33) Source(27, 33) + SourceIndex(0) +12>Emitted(17, 40) Source(27, 40) + SourceIndex(0) +13>Emitted(17, 42) Source(27, 42) + SourceIndex(0) +14>Emitted(17, 50) Source(27, 50) + SourceIndex(0) +15>Emitted(17, 52) Source(27, 52) + SourceIndex(0) +16>Emitted(17, 61) Source(27, 61) + SourceIndex(0) +17>Emitted(17, 63) Source(27, 63) + SourceIndex(0) +18>Emitted(17, 80) Source(27, 80) + SourceIndex(0) +19>Emitted(17, 82) Source(27, 82) + SourceIndex(0) +20>Emitted(17, 84) Source(27, 84) + SourceIndex(0) +21>Emitted(17, 85) Source(27, 85) + SourceIndex(0) +22>Emitted(17, 86) Source(27, 86) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(18, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(29, 6) + SourceIndex(0) +4 >Emitted(18, 12) Source(29, 12) + SourceIndex(0) +5 >Emitted(18, 13) Source(29, 13) + SourceIndex(0) +6 >Emitted(18, 14) Source(29, 14) + SourceIndex(0) +--- +>>>foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^^^ +15> ^^ +16> ^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^ +21> ^ +22> ^ +23> ^^^^^^^^^-> +1-> + > +2 >foo3 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skills +10> : +11> { +12> primary +13> : +14> "edging" +15> , +16> secondary +17> : +18> "branch trimming" +19> } +20> } +21> ) +22> ; +1->Emitted(19, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(30, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(30, 6) + SourceIndex(0) +4 >Emitted(19, 8) Source(30, 8) + SourceIndex(0) +5 >Emitted(19, 12) Source(30, 12) + SourceIndex(0) +6 >Emitted(19, 14) Source(30, 14) + SourceIndex(0) +7 >Emitted(19, 21) Source(30, 21) + SourceIndex(0) +8 >Emitted(19, 23) Source(30, 23) + SourceIndex(0) +9 >Emitted(19, 29) Source(30, 29) + SourceIndex(0) +10>Emitted(19, 31) Source(30, 31) + SourceIndex(0) +11>Emitted(19, 33) Source(30, 33) + SourceIndex(0) +12>Emitted(19, 40) Source(30, 40) + SourceIndex(0) +13>Emitted(19, 42) Source(30, 42) + SourceIndex(0) +14>Emitted(19, 50) Source(30, 50) + SourceIndex(0) +15>Emitted(19, 52) Source(30, 52) + SourceIndex(0) +16>Emitted(19, 61) Source(30, 61) + SourceIndex(0) +17>Emitted(19, 63) Source(30, 63) + SourceIndex(0) +18>Emitted(19, 80) Source(30, 80) + SourceIndex(0) +19>Emitted(19, 82) Source(30, 82) + SourceIndex(0) +20>Emitted(19, 84) Source(30, 84) + SourceIndex(0) +21>Emitted(19, 85) Source(30, 85) + SourceIndex(0) +22>Emitted(19, 86) Source(30, 86) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols new file mode 100644 index 00000000000..3b2a89b2bda --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.symbols @@ -0,0 +1,112 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 3, 17)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 4, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 5, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 6, 24)) + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 36)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 46)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 65)) + +function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 88)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 4, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 5, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 12, 25)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 6, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 12, 44)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 2, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 12, 25)) +} +function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 14, 1)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 3, 17)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 15, 15)) +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 4, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 5, 13)) +>primaryB : Symbol(primaryB, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 15, 38)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 6, 24)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 15, 57)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 2, 1)) + + console.log(secondaryB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 15, 57)) +} +function foo3({ skills }: Robot) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 17, 1)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 18, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 2, 1)) + + console.log(skills.primary); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 0, 22)) +>skills.primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 5, 13)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 18, 15)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 5, 13)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 88)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 3)) + +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 88)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 23, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 23, 21)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 23, 31)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 23, 50)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 14, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 3)) + +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 14, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 26, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 26, 21)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 26, 31)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 26, 50)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 17, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 10, 3)) + +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 17, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 29, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 29, 21)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 29, 31)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts, 29, 50)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.types new file mode 100644 index 00000000000..029e47cd3a0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.types @@ -0,0 +1,141 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { +>foo1 : ({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) => void +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>Robot : Robot + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>primaryA : string +} +function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { +>foo2 : ({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) => void +>name : any +>nameC : string +>skills : any +>primary : any +>primaryB : string +>secondary : any +>secondaryB : string +>Robot : Robot + + console.log(secondaryB); +>console.log(secondaryB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>secondaryB : string +} +function foo3({ skills }: Robot) { +>foo3 : ({ skills }: Robot) => void +>skills : { primary: string; secondary: string; } +>Robot : Robot + + console.log(skills.primary); +>console.log(skills.primary) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skills.primary : string +>skills : { primary: string; secondary: string; } +>primary : string +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) => void +>robotA : Robot + +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) : void +>foo1 : ({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) => void +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) => void +>robotA : Robot + +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) : void +>foo2 : ({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) => void +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ({ skills }: Robot) => void +>robotA : Robot + +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) : void +>foo3 : ({ skills }: Robot) => void +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts new file mode 100644 index 00000000000..062acd823ac --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts @@ -0,0 +1,31 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + +function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + console.log(primaryA); +} +function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + console.log(secondaryB); +} +function foo3({ skills }: Robot) { + console.log(skills.primary); +} + +foo1(robotA); +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo2(robotA); +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo3(robotA); +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); From 0532e8cb1199e5d9768d47cd09719952491a4216 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 4 Dec 2015 13:07:47 -0800 Subject: [PATCH 026/164] Test cases for variable statement with array binding pattern --- ...ingVariableStatementArrayBindingPattern.js | 35 ++ ...ariableStatementArrayBindingPattern.js.map | 2 + ...StatementArrayBindingPattern.sourcemap.txt | 298 ++++++++++++++++++ ...riableStatementArrayBindingPattern.symbols | 57 ++++ ...VariableStatementArrayBindingPattern.types | 76 +++++ ...ingVariableStatementArrayBindingPattern.ts | 21 ++ 6 files changed, 489 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js new file mode 100644 index 00000000000..fea40d4b900 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js @@ -0,0 +1,35 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts] +declare var console: { + log(msg: string): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; + + +let [, nameA] = robotA; +let [numberB] = robotB; +let [numberA2, nameA2, skillA2] = robotA; + +let [numberC2] = [3, "edging", "Trimming edges"]; +let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; + +let [numberA3, ...robotAInfo] = robotA; + +if (nameA == nameA2) { + console.log(skillA2); +} + +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var nameA = robotA[1]; +var numberB = robotB[0]; +var numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2]; +var numberC2 = [3, "edging", "Trimming edges"][0]; +var _a = [3, "edging", "Trimming edges"], numberC = _a[0], nameC = _a[1], skillC = _a[2]; +var numberA3 = robotA[0], robotAInfo = robotA.slice(1); +if (nameA == nameA2) { + console.log(skillA2); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map new file mode 100644 index 00000000000..e3912822214 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAO,iBAAK,CAAW;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAA+B,oCAA+B,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..519fcb1c334 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt @@ -0,0 +1,298 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js +mapUrl: sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js +sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: string): void; + >} + >type Robot = [number, string, string]; + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(5, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(5, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(5, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(5, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(5, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(5, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(5, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(5, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(5, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(5, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(6, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(6, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(6, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(6, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(6, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(6, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(6, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(6, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(6, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(6, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(6, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(6, 48) + SourceIndex(0) +--- +>>>var nameA = robotA[1]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^-> +1 > + > + > + > +2 >let [, +3 > nameA +4 > ] = robotA; +1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 8) + SourceIndex(0) +3 >Emitted(3, 22) Source(9, 13) + SourceIndex(0) +4 >Emitted(3, 23) Source(9, 24) + SourceIndex(0) +--- +>>>var numberB = robotB[0]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >let +3 > [numberB] = robotB +4 > ; +1->Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(10, 5) + SourceIndex(0) +3 >Emitted(4, 24) Source(10, 23) + SourceIndex(0) +4 >Emitted(4, 25) Source(10, 24) + SourceIndex(0) +--- +>>>var numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^ +8 > ^ +1-> + > +2 >let [ +3 > numberA2 +4 > , +5 > nameA2 +6 > , +7 > skillA2 +8 > ] = robotA; +1->Emitted(5, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(11, 6) + SourceIndex(0) +3 >Emitted(5, 25) Source(11, 14) + SourceIndex(0) +4 >Emitted(5, 27) Source(11, 16) + SourceIndex(0) +5 >Emitted(5, 45) Source(11, 22) + SourceIndex(0) +6 >Emitted(5, 47) Source(11, 24) + SourceIndex(0) +7 >Emitted(5, 66) Source(11, 31) + SourceIndex(0) +8 >Emitted(5, 67) Source(11, 42) + SourceIndex(0) +--- +>>>var numberC2 = [3, "edging", "Trimming edges"][0]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >let +3 > [numberC2] = [3, "edging", "Trimming edges"] +4 > ; +1 >Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 50) Source(13, 49) + SourceIndex(0) +4 >Emitted(6, 51) Source(13, 50) + SourceIndex(0) +--- +>>>var _a = [3, "edging", "Trimming edges"], numberC = _a[0], nameC = _a[1], skillC = _a[2]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^ +1-> + > +2 >let [numberC, nameC, skillC] = +3 > [3, "edging", "Trimming edges"] +4 > +5 > numberC +6 > , +7 > nameC +8 > , +9 > skillC +10> ] = [3, "edging", "Trimming edges"]; +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 32) + SourceIndex(0) +3 >Emitted(7, 41) Source(14, 63) + SourceIndex(0) +4 >Emitted(7, 43) Source(14, 6) + SourceIndex(0) +5 >Emitted(7, 58) Source(14, 13) + SourceIndex(0) +6 >Emitted(7, 60) Source(14, 15) + SourceIndex(0) +7 >Emitted(7, 73) Source(14, 20) + SourceIndex(0) +8 >Emitted(7, 75) Source(14, 22) + SourceIndex(0) +9 >Emitted(7, 89) Source(14, 28) + SourceIndex(0) +10>Emitted(7, 90) Source(14, 64) + SourceIndex(0) +--- +>>>var numberA3 = robotA[0], robotAInfo = robotA.slice(1); +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^ +1 > + > + > +2 >let [ +3 > numberA3 +4 > , +5 > ...robotAInfo +6 > ] = robotA; +1 >Emitted(8, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(16, 6) + SourceIndex(0) +3 >Emitted(8, 25) Source(16, 14) + SourceIndex(0) +4 >Emitted(8, 27) Source(16, 16) + SourceIndex(0) +5 >Emitted(8, 55) Source(16, 29) + SourceIndex(0) +6 >Emitted(8, 56) Source(16, 40) + SourceIndex(0) +--- +>>>if (nameA == nameA2) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameA2 +8 > ) +9 > +10> { +1 >Emitted(9, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(9, 3) Source(18, 3) + SourceIndex(0) +3 >Emitted(9, 4) Source(18, 4) + SourceIndex(0) +4 >Emitted(9, 5) Source(18, 5) + SourceIndex(0) +5 >Emitted(9, 10) Source(18, 10) + SourceIndex(0) +6 >Emitted(9, 14) Source(18, 14) + SourceIndex(0) +7 >Emitted(9, 20) Source(18, 20) + SourceIndex(0) +8 >Emitted(9, 21) Source(18, 21) + SourceIndex(0) +9 >Emitted(9, 22) Source(18, 22) + SourceIndex(0) +10>Emitted(9, 23) Source(18, 23) + SourceIndex(0) +--- +>>> console.log(skillA2); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillA2 +7 > ) +8 > ; +1->Emitted(10, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(19, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(19, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(19, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(19, 17) + SourceIndex(0) +6 >Emitted(10, 24) Source(19, 24) + SourceIndex(0) +7 >Emitted(10, 25) Source(19, 25) + SourceIndex(0) +8 >Emitted(10, 26) Source(19, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(20, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.symbols new file mode 100644 index 00000000000..943f9e1c400 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.symbols @@ -0,0 +1,57 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 2, 1)) + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 4, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 2, 1)) + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 5, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 2, 1)) + + +let [, nameA] = robotA; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 8, 6)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 4, 3)) + +let [numberB] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 9, 5)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 5, 3)) + +let [numberA2, nameA2, skillA2] = robotA; +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 10, 5)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 10, 14)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 10, 22)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 4, 3)) + +let [numberC2] = [3, "edging", "Trimming edges"]; +>numberC2 : Symbol(numberC2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 12, 5)) + +let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; +>numberC : Symbol(numberC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 13, 5)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 13, 13)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 13, 20)) + +let [numberA3, ...robotAInfo] = robotA; +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 15, 5)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 15, 14)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 4, 3)) + +if (nameA == nameA2) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 8, 6)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 10, 14)) + + console.log(skillA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 0, 22)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts, 10, 22)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types new file mode 100644 index 00000000000..73006f4ec45 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.types @@ -0,0 +1,76 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + + +let [, nameA] = robotA; +> : undefined +>nameA : string +>robotA : [number, string, string] + +let [numberB] = robotB; +>numberB : number +>robotB : [number, string, string] + +let [numberA2, nameA2, skillA2] = robotA; +>numberA2 : number +>nameA2 : string +>skillA2 : string +>robotA : [number, string, string] + +let [numberC2] = [3, "edging", "Trimming edges"]; +>numberC2 : number +>[3, "edging", "Trimming edges"] : [number, string, string] +>3 : number +>"edging" : string +>"Trimming edges" : string + +let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; +>numberC : number +>nameC : string +>skillC : string +>[3, "edging", "Trimming edges"] : [number, string, string] +>3 : number +>"edging" : string +>"Trimming edges" : string + +let [numberA3, ...robotAInfo] = robotA; +>numberA3 : number +>robotAInfo : (number | string)[] +>robotA : [number, string, string] + +if (nameA == nameA2) { +>nameA == nameA2 : boolean +>nameA : string +>nameA2 : string + + console.log(skillA2); +>console.log(skillA2) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillA2 : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts new file mode 100644 index 00000000000..3ac03143aa2 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts @@ -0,0 +1,21 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; + + +let [, nameA] = robotA; +let [numberB] = robotB; +let [numberA2, nameA2, skillA2] = robotA; + +let [numberC2] = [3, "edging", "Trimming edges"]; +let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; + +let [numberA3, ...robotAInfo] = robotA; + +if (nameA == nameA2) { + console.log(skillA2); +} \ No newline at end of file From 7c618a494ddf0e755394297c9cdd8148ca3b5319 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 4 Dec 2015 13:18:31 -0800 Subject: [PATCH 027/164] Better the sourcemap for array binding pattern --- src/compiler/emitter.ts | 22 ++++++++++++++++++- ...ariableStatementArrayBindingPattern.js.map | 2 +- ...StatementArrayBindingPattern.sourcemap.txt | 10 ++++----- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index d46d9d47210..1170ed7325a 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -4007,7 +4007,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { let nodeForSourceMap: Node; // If binding element is part of binding pattern with single element, use binding pattern - if (target.kind === SyntaxKind.BindingElement && (target.parent).elements.length === 1) { + if (target.kind === SyntaxKind.BindingElement && hasSingleBindingElement(target.parent)) { nodeForSourceMap = (target.parent.parent.kind === SyntaxKind.VariableDeclaration || target.parent.parent.kind === SyntaxKind.Parameter) ? target.parent.parent : // Set sourcemap as whole variable declaration target.parent; // Only binding Pattern @@ -4018,6 +4018,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitAssignment(target.name, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, nodeForSourceMap); emitCount++; } + + function hasSingleBindingElement(pattern: BindingPattern) { + if (pattern.kind === SyntaxKind.ObjectBindingPattern) { + return pattern.elements.length === 1; + } + + let hasFoundEmittingElement = false; + for (const element of pattern.elements) { + if (element.kind !== SyntaxKind.OmittedExpression) { + if (hasFoundEmittingElement) { + // More than one elements are going to be emitted + return false; + } + hasFoundEmittingElement = true; + } + } + + // If we found exactly one emitting element + return hasFoundEmittingElement; + } } } diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map index e3912822214..ff3efc97078 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAO,iBAAK,CAAW;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAA+B,oCAA+B,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAI,iBAAkB,CAAC;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAA+B,oCAA+B,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt index 519fcb1c334..557043581c3 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt @@ -100,12 +100,12 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern. > > > -2 >let [, -3 > nameA -4 > ] = robotA; +2 >let +3 > [, nameA] = robotA +4 > ; 1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(9, 8) + SourceIndex(0) -3 >Emitted(3, 22) Source(9, 13) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 22) Source(9, 23) + SourceIndex(0) 4 >Emitted(3, 23) Source(9, 24) + SourceIndex(0) --- >>>var numberB = robotB[0]; From 7945de4cd387bdd05da666c39a1d360bf904d29f Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 4 Dec 2015 13:19:33 -0800 Subject: [PATCH 028/164] Test case for nested array binding pattern --- ...ngVariableStatementArrayBindingPattern2.js | 34 ++ ...riableStatementArrayBindingPattern2.js.map | 2 + ...tatementArrayBindingPattern2.sourcemap.txt | 327 ++++++++++++++++++ ...iableStatementArrayBindingPattern2.symbols | 58 ++++ ...ariableStatementArrayBindingPattern2.types | 84 +++++ ...ngVariableStatementArrayBindingPattern2.ts | 20 ++ 6 files changed, 525 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js new file mode 100644 index 00000000000..b93acc66a10 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js @@ -0,0 +1,34 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts] +declare var console: { + log(msg: string): void; +} +type MultiSkilledRobot = [string, [string, string]]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let [, skillA] = multiRobotA; +let [nameMB] = multiRobotB; +let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + +let [nameMC] = ["roomba", ["vaccum", "mopping"]]; +let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + +let [...multiRobotAInfo] = multiRobotA; + +if (nameMB == nameMA) { + console.log(skillA[0] + skillA[1]); +} + +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js] +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var skillA = multiRobotA[1]; +var nameMB = multiRobotB[0]; +var nameMA = multiRobotA[0], _a = multiRobotA[1], primarySkillA = _a[0], secondarySkillA = _a[1]; +var nameMC = ["roomba", ["vaccum", "mopping"]][0]; +var _b = ["roomba", ["vaccum", "mopping"]], nameMC2 = _b[0], _c = _b[1], primarySkillC = _c[0], secondarySkillC = _c[1]; +var multiRobotAInfo = multiRobotA.slice(0); +if (nameMB == nameMA) { + console.log(skillA[0] + skillA[1]); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map new file mode 100644 index 00000000000..6730b69d03b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,uBAAwB,CAAC;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,uBAAG,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAkD,sCAAiC,EAA9E,eAAO,cAAG,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt new file mode 100644 index 00000000000..2c8b903bf3c --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt @@ -0,0 +1,327 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js +mapUrl: sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js +sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts +------------------------------------------------------------------- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1 >declare var console: { + > log(msg: string): void; + >} + >type MultiSkilledRobot = [string, [string, string]]; + > +2 >var +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 16) Source(5, 16) + SourceIndex(0) +4 >Emitted(1, 19) Source(5, 38) + SourceIndex(0) +5 >Emitted(1, 20) Source(5, 39) + SourceIndex(0) +6 >Emitted(1, 27) Source(5, 46) + SourceIndex(0) +7 >Emitted(1, 29) Source(5, 48) + SourceIndex(0) +8 >Emitted(1, 30) Source(5, 49) + SourceIndex(0) +9 >Emitted(1, 38) Source(5, 57) + SourceIndex(0) +10>Emitted(1, 40) Source(5, 59) + SourceIndex(0) +11>Emitted(1, 42) Source(5, 61) + SourceIndex(0) +12>Emitted(1, 43) Source(5, 62) + SourceIndex(0) +13>Emitted(1, 44) Source(5, 63) + SourceIndex(0) +14>Emitted(1, 45) Source(5, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >var +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(2, 1) Source(6, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(6, 5) + SourceIndex(0) +3 >Emitted(2, 16) Source(6, 16) + SourceIndex(0) +4 >Emitted(2, 19) Source(6, 38) + SourceIndex(0) +5 >Emitted(2, 20) Source(6, 39) + SourceIndex(0) +6 >Emitted(2, 29) Source(6, 48) + SourceIndex(0) +7 >Emitted(2, 31) Source(6, 50) + SourceIndex(0) +8 >Emitted(2, 32) Source(6, 51) + SourceIndex(0) +9 >Emitted(2, 42) Source(6, 61) + SourceIndex(0) +10>Emitted(2, 44) Source(6, 63) + SourceIndex(0) +11>Emitted(2, 52) Source(6, 71) + SourceIndex(0) +12>Emitted(2, 53) Source(6, 72) + SourceIndex(0) +13>Emitted(2, 54) Source(6, 73) + SourceIndex(0) +14>Emitted(2, 55) Source(6, 74) + SourceIndex(0) +--- +>>>var skillA = multiRobotA[1]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^-> +1 > + > + > +2 >let +3 > [, skillA] = multiRobotA +4 > ; +1 >Emitted(3, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(3, 28) Source(8, 29) + SourceIndex(0) +4 >Emitted(3, 29) Source(8, 30) + SourceIndex(0) +--- +>>>var nameMB = multiRobotB[0]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >let +3 > [nameMB] = multiRobotB +4 > ; +1->Emitted(4, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(4, 28) Source(9, 27) + SourceIndex(0) +4 >Emitted(4, 29) Source(9, 28) + SourceIndex(0) +--- +>>>var nameMA = multiRobotA[0], _a = multiRobotA[1], primarySkillA = _a[0], secondarySkillA = _a[1]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^ +1-> + > +2 >let [ +3 > nameMA +4 > , [ +5 > primarySkillA +6 > , +7 > secondarySkillA +8 > ]] = multiRobotA; +1->Emitted(5, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(10, 6) + SourceIndex(0) +3 >Emitted(5, 28) Source(10, 12) + SourceIndex(0) +4 >Emitted(5, 51) Source(10, 15) + SourceIndex(0) +5 >Emitted(5, 72) Source(10, 28) + SourceIndex(0) +6 >Emitted(5, 74) Source(10, 30) + SourceIndex(0) +7 >Emitted(5, 97) Source(10, 45) + SourceIndex(0) +8 >Emitted(5, 98) Source(10, 62) + SourceIndex(0) +--- +>>>var nameMC = ["roomba", ["vaccum", "mopping"]][0]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >let +3 > [nameMC] = ["roomba", ["vaccum", "mopping"]] +4 > ; +1 >Emitted(6, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(6, 50) Source(12, 49) + SourceIndex(0) +4 >Emitted(6, 51) Source(12, 50) + SourceIndex(0) +--- +>>>var _b = ["roomba", ["vaccum", "mopping"]], nameMC2 = _b[0], _c = _b[1], primarySkillC = _c[0], secondarySkillC = _c[1]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^ +10> ^ +1-> + > +2 >let [nameMC2, [primarySkillC, secondarySkillC]] = +3 > ["roomba", ["vaccum", "mopping"]] +4 > +5 > nameMC2 +6 > , [ +7 > primarySkillC +8 > , +9 > secondarySkillC +10> ]] = ["roomba", ["vaccum", "mopping"]]; +1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(13, 51) + SourceIndex(0) +3 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) +4 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) +5 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) +6 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) +7 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) +8 >Emitted(7, 97) Source(13, 31) + SourceIndex(0) +9 >Emitted(7, 120) Source(13, 46) + SourceIndex(0) +10>Emitted(7, 121) Source(13, 85) + SourceIndex(0) +--- +>>>var multiRobotAInfo = multiRobotA.slice(0); +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +1 > + > + > +2 >let +3 > [...multiRobotAInfo] = multiRobotA +4 > ; +1 >Emitted(8, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(8, 43) Source(15, 39) + SourceIndex(0) +4 >Emitted(8, 44) Source(15, 40) + SourceIndex(0) +--- +>>>if (nameMB == nameMA) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^^ +6 > ^^^^ +7 > ^^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameMB +6 > == +7 > nameMA +8 > ) +9 > +10> { +1 >Emitted(9, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(9, 3) Source(17, 3) + SourceIndex(0) +3 >Emitted(9, 4) Source(17, 4) + SourceIndex(0) +4 >Emitted(9, 5) Source(17, 5) + SourceIndex(0) +5 >Emitted(9, 11) Source(17, 11) + SourceIndex(0) +6 >Emitted(9, 15) Source(17, 15) + SourceIndex(0) +7 >Emitted(9, 21) Source(17, 21) + SourceIndex(0) +8 >Emitted(9, 22) Source(17, 22) + SourceIndex(0) +9 >Emitted(9, 23) Source(17, 23) + SourceIndex(0) +10>Emitted(9, 24) Source(17, 24) + SourceIndex(0) +--- +>>> console.log(skillA[0] + skillA[1]); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +9 > ^ +10> ^^^ +11> ^^^^^^ +12> ^ +13> ^ +14> ^ +15> ^ +16> ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillA +7 > [ +8 > 0 +9 > ] +10> + +11> skillA +12> [ +13> 1 +14> ] +15> ) +16> ; +1->Emitted(10, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(18, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(18, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(18, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(18, 17) + SourceIndex(0) +6 >Emitted(10, 23) Source(18, 23) + SourceIndex(0) +7 >Emitted(10, 24) Source(18, 24) + SourceIndex(0) +8 >Emitted(10, 25) Source(18, 25) + SourceIndex(0) +9 >Emitted(10, 26) Source(18, 26) + SourceIndex(0) +10>Emitted(10, 29) Source(18, 29) + SourceIndex(0) +11>Emitted(10, 35) Source(18, 35) + SourceIndex(0) +12>Emitted(10, 36) Source(18, 36) + SourceIndex(0) +13>Emitted(10, 37) Source(18, 37) + SourceIndex(0) +14>Emitted(10, 38) Source(18, 38) + SourceIndex(0) +15>Emitted(10, 39) Source(18, 39) + SourceIndex(0) +16>Emitted(10, 40) Source(18, 40) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(19, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.symbols new file mode 100644 index 00000000000..d2a61e2a5ef --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.symbols @@ -0,0 +1,58 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 1, 8)) +} +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 2, 1)) + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 4, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 2, 1)) + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 5, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 2, 1)) + +let [, skillA] = multiRobotA; +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 7, 6)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 4, 3)) + +let [nameMB] = multiRobotB; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 8, 5)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 5, 3)) + +let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 9, 5)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 9, 14)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 9, 28)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 4, 3)) + +let [nameMC] = ["roomba", ["vaccum", "mopping"]]; +>nameMC : Symbol(nameMC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 11, 5)) + +let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; +>nameMC2 : Symbol(nameMC2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 12, 5)) +>primarySkillC : Symbol(primarySkillC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 12, 15)) +>secondarySkillC : Symbol(secondarySkillC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 12, 29)) + +let [...multiRobotAInfo] = multiRobotA; +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 14, 5)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 4, 3)) + +if (nameMB == nameMA) { +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 8, 5)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 9, 5)) + + console.log(skillA[0] + skillA[1]); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 0, 22)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 7, 6)) +>0 : Symbol(0) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts, 7, 6)) +>1 : Symbol(1) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.types new file mode 100644 index 00000000000..57d4b271c2f --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.types @@ -0,0 +1,84 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +let [, skillA] = multiRobotA; +> : undefined +>skillA : [string, string] +>multiRobotA : [string, [string, string]] + +let [nameMB] = multiRobotB; +>nameMB : string +>multiRobotB : [string, [string, string]] + +let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>multiRobotA : [string, [string, string]] + +let [nameMC] = ["roomba", ["vaccum", "mopping"]]; +>nameMC : string +>["roomba", ["vaccum", "mopping"]] : [string, string[]] +>"roomba" : string +>["vaccum", "mopping"] : string[] +>"vaccum" : string +>"mopping" : string + +let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; +>nameMC2 : string +>primarySkillC : string +>secondarySkillC : string +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + +let [...multiRobotAInfo] = multiRobotA; +>multiRobotAInfo : (string | [string, string])[] +>multiRobotA : [string, [string, string]] + +if (nameMB == nameMA) { +>nameMB == nameMA : boolean +>nameMB : string +>nameMA : string + + console.log(skillA[0] + skillA[1]); +>console.log(skillA[0] + skillA[1]) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillA[0] + skillA[1] : string +>skillA[0] : string +>skillA : [string, string] +>0 : number +>skillA[1] : string +>skillA : [string, string] +>1 : number +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts new file mode 100644 index 00000000000..27497f2c220 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts @@ -0,0 +1,20 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +type MultiSkilledRobot = [string, [string, string]]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let [, skillA] = multiRobotA; +let [nameMB] = multiRobotB; +let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + +let [nameMC] = ["roomba", ["vaccum", "mopping"]]; +let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + +let [...multiRobotAInfo] = multiRobotA; + +if (nameMB == nameMA) { + console.log(skillA[0] + skillA[1]); +} \ No newline at end of file From de7626356c68df3bf2ba55616e80b8aebcdb6ca1 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 4 Dec 2015 13:41:10 -0800 Subject: [PATCH 029/164] Better the destructuring of nested array binding pattern --- src/compiler/emitter.ts | 6 +- ...riableStatementArrayBindingPattern2.js.map | 2 +- ...tatementArrayBindingPattern2.sourcemap.txt | 72 +++++++++++-------- 3 files changed, 46 insertions(+), 34 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 1170ed7325a..06272bbb3a7 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1986,8 +1986,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return result; } - function createElementAccessExpression(expression: Expression, argumentExpression: Expression): ElementAccessExpression { - const result = createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, argumentExpression); + function createElementAccessExpression(expression: Expression, argumentExpression: Expression, sourceMapNode?: Node): ElementAccessExpression { + const result = createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, sourceMapNode || argumentExpression); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; @@ -3996,7 +3996,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else if (element.kind !== SyntaxKind.OmittedExpression) { if (!element.dotDotDotToken) { // Rewrite element to a declaration that accesses array element at index i - emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); + emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i), element)); } else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map index 6730b69d03b..c588d92c53d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,uBAAwB,CAAC;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,uBAAG,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAkD,sCAAiC,EAA9E,eAAO,cAAG,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,uBAAwB,CAAC;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAkD,sCAAiC,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt index 2c8b903bf3c..a81a55e629a 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt @@ -139,28 +139,34 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 1-> 2 >^^^^ 3 > ^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^^^^^^^^^^^^^^^^^^^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^ +10> ^ 1-> > 2 >let [ 3 > nameMA -4 > , [ -5 > primarySkillA -6 > , -7 > secondarySkillA -8 > ]] = multiRobotA; +4 > , +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA +10> ]] = multiRobotA; 1->Emitted(5, 1) Source(10, 1) + SourceIndex(0) 2 >Emitted(5, 5) Source(10, 6) + SourceIndex(0) 3 >Emitted(5, 28) Source(10, 12) + SourceIndex(0) -4 >Emitted(5, 51) Source(10, 15) + SourceIndex(0) -5 >Emitted(5, 72) Source(10, 28) + SourceIndex(0) -6 >Emitted(5, 74) Source(10, 30) + SourceIndex(0) -7 >Emitted(5, 97) Source(10, 45) + SourceIndex(0) -8 >Emitted(5, 98) Source(10, 62) + SourceIndex(0) +4 >Emitted(5, 30) Source(10, 14) + SourceIndex(0) +5 >Emitted(5, 49) Source(10, 46) + SourceIndex(0) +6 >Emitted(5, 51) Source(10, 15) + SourceIndex(0) +7 >Emitted(5, 72) Source(10, 28) + SourceIndex(0) +8 >Emitted(5, 74) Source(10, 30) + SourceIndex(0) +9 >Emitted(5, 97) Source(10, 45) + SourceIndex(0) +10>Emitted(5, 98) Source(10, 62) + SourceIndex(0) --- >>>var nameMC = ["roomba", ["vaccum", "mopping"]][0]; 1 > @@ -185,32 +191,38 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 > ^^ 5 > ^^^^^^^^^^^^^^^ -6 > ^^^^^^^^^^^^^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^ -10> ^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^ +12> ^ 1-> > 2 >let [nameMC2, [primarySkillC, secondarySkillC]] = 3 > ["roomba", ["vaccum", "mopping"]] 4 > 5 > nameMC2 -6 > , [ -7 > primarySkillC -8 > , -9 > secondarySkillC -10> ]] = ["roomba", ["vaccum", "mopping"]]; +6 > , +7 > [primarySkillC, secondarySkillC] +8 > +9 > primarySkillC +10> , +11> secondarySkillC +12> ]] = ["roomba", ["vaccum", "mopping"]]; 1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) 2 >Emitted(7, 5) Source(13, 51) + SourceIndex(0) 3 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) 4 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) 5 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) -6 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) -7 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) -8 >Emitted(7, 97) Source(13, 31) + SourceIndex(0) -9 >Emitted(7, 120) Source(13, 46) + SourceIndex(0) -10>Emitted(7, 121) Source(13, 85) + SourceIndex(0) +6 >Emitted(7, 62) Source(13, 15) + SourceIndex(0) +7 >Emitted(7, 72) Source(13, 47) + SourceIndex(0) +8 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) +9 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) +10>Emitted(7, 97) Source(13, 31) + SourceIndex(0) +11>Emitted(7, 120) Source(13, 46) + SourceIndex(0) +12>Emitted(7, 121) Source(13, 85) + SourceIndex(0) --- >>>var multiRobotAInfo = multiRobotA.slice(0); 1 > From bdcdd67fb2ddcc25299396be7e65fe593871b414 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 4 Dec 2015 13:48:16 -0800 Subject: [PATCH 030/164] Test case for parameter array binding pattern --- ...tructuringParametertArrayBindingPattern.js | 62 ++ ...turingParametertArrayBindingPattern.js.map | 2 + ...arametertArrayBindingPattern.sourcemap.txt | 558 ++++++++++++++++++ ...uringParametertArrayBindingPattern.symbols | 94 +++ ...cturingParametertArrayBindingPattern.types | 127 ++++ ...tructuringParametertArrayBindingPattern.ts | 34 ++ 6 files changed, 877 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js new file mode 100644 index 00000000000..faa7b8dcde9 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js @@ -0,0 +1,62 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPattern.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; + +function foo1([, nameA]: Robot) { + console.log(nameA); +} + +function foo2([numberB]: Robot) { + console.log(numberB); +} + +function foo3([numberA2, nameA2, skillA2]: Robot) { + console.log(nameA2); +} + +function foo4([numberA3, ...robotAInfo]: Robot) { + console.log(robotAInfo); +} + +foo1(robotA); +foo1([2, "trimmer", "trimming"]); + +foo2(robotA); +foo2([2, "trimmer", "trimming"]); + +foo3(robotA); +foo3([2, "trimmer", "trimming"]); + +foo4(robotA); +foo4([2, "trimmer", "trimming"]); + +//// [sourceMapValidationDestructuringParametertArrayBindingPattern.js] +var robotA = [1, "mower", "mowing"]; +function foo1(_a) { + var nameA = _a[1]; + console.log(nameA); +} +function foo2(_a) { + var numberB = _a[0]; + console.log(numberB); +} +function foo3(_a) { + var numberA2 = _a[0], nameA2 = _a[1], skillA2 = _a[2]; + console.log(nameA2); +} +function foo4(_a) { + var numberA3 = _a[0], robotAInfo = _a.slice(1); + console.log(robotAInfo); +} +foo1(robotA); +foo1([2, "trimmer", "trimming"]); +foo2(robotA); +foo2([2, "trimmer", "trimming"]); +foo3(robotA); +foo3([2, "trimmer", "trimming"]); +foo4(robotA); +foo4([2, "trimmer", "trimming"]); +//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map new file mode 100644 index 00000000000..fe1498a5876 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3C,cAAc,EAAgB;QAAhB,aAAgB;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,cAAc,EAAgB;QAAhB,eAAgB;IAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,cAAc,EAAkC;QAAjC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAgC;QAA/B,gBAAQ,EAAE,wBAAa;IAClC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..345f8488718 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt @@ -0,0 +1,558 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParametertArrayBindingPattern.js +mapUrl: sourceMapValidationDestructuringParametertArrayBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParametertArrayBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.js +sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(5, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(5, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(5, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(5, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(5, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(5, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(5, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(5, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(5, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(5, 44) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > [, nameA]: Robot +1 >Emitted(2, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(2, 15) Source(7, 15) + SourceIndex(0) +3 >Emitted(2, 17) Source(7, 31) + SourceIndex(0) +--- +>>> var nameA = _a[1]; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^-> +1-> +2 > [, nameA]: Robot +1->Emitted(3, 9) Source(7, 15) + SourceIndex(0) +2 >Emitted(3, 22) Source(7, 31) + SourceIndex(0) +--- +>>> console.log(nameA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1->Emitted(4, 5) Source(8, 5) + SourceIndex(0) +2 >Emitted(4, 12) Source(8, 12) + SourceIndex(0) +3 >Emitted(4, 13) Source(8, 13) + SourceIndex(0) +4 >Emitted(4, 16) Source(8, 16) + SourceIndex(0) +5 >Emitted(4, 17) Source(8, 17) + SourceIndex(0) +6 >Emitted(4, 22) Source(8, 22) + SourceIndex(0) +7 >Emitted(4, 23) Source(8, 23) + SourceIndex(0) +8 >Emitted(4, 24) Source(8, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(9, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^-> +1-> + > + > +2 >function foo2( +3 > [numberB]: Robot +1->Emitted(6, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(6, 15) Source(11, 15) + SourceIndex(0) +3 >Emitted(6, 17) Source(11, 31) + SourceIndex(0) +--- +>>> var numberB = _a[0]; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^^-> +1-> +2 > [numberB]: Robot +1->Emitted(7, 9) Source(11, 15) + SourceIndex(0) +2 >Emitted(7, 24) Source(11, 31) + SourceIndex(0) +--- +>>> console.log(numberB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1->Emitted(8, 5) Source(12, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(12, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(12, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(12, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(12, 17) + SourceIndex(0) +6 >Emitted(8, 24) Source(12, 24) + SourceIndex(0) +7 >Emitted(8, 25) Source(12, 25) + SourceIndex(0) +8 >Emitted(8, 26) Source(12, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(13, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo3( +3 > [numberA2, nameA2, skillA2]: Robot +1->Emitted(10, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(10, 15) Source(15, 15) + SourceIndex(0) +3 >Emitted(10, 17) Source(15, 49) + SourceIndex(0) +--- +>>> var numberA2 = _a[0], nameA2 = _a[1], skillA2 = _a[2]; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +1-> +2 > numberA2 +3 > , +4 > nameA2 +5 > , +6 > skillA2 +1->Emitted(11, 9) Source(15, 16) + SourceIndex(0) +2 >Emitted(11, 25) Source(15, 24) + SourceIndex(0) +3 >Emitted(11, 27) Source(15, 26) + SourceIndex(0) +4 >Emitted(11, 41) Source(15, 32) + SourceIndex(0) +5 >Emitted(11, 43) Source(15, 34) + SourceIndex(0) +6 >Emitted(11, 58) Source(15, 41) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(12, 5) Source(16, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(16, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(16, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(16, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(16, 17) + SourceIndex(0) +6 >Emitted(12, 23) Source(16, 23) + SourceIndex(0) +7 >Emitted(12, 24) Source(16, 24) + SourceIndex(0) +8 >Emitted(12, 25) Source(16, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(17, 2) + SourceIndex(0) +--- +>>>function foo4(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo4( +3 > [numberA3, ...robotAInfo]: Robot +1->Emitted(14, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(14, 15) Source(19, 15) + SourceIndex(0) +3 >Emitted(14, 17) Source(19, 47) + SourceIndex(0) +--- +>>> var numberA3 = _a[0], robotAInfo = _a.slice(1); +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > numberA3 +3 > , +4 > ...robotAInfo +1->Emitted(15, 9) Source(19, 16) + SourceIndex(0) +2 >Emitted(15, 25) Source(19, 24) + SourceIndex(0) +3 >Emitted(15, 27) Source(19, 26) + SourceIndex(0) +4 >Emitted(15, 51) Source(19, 39) + SourceIndex(0) +--- +>>> console.log(robotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > robotAInfo +7 > ) +8 > ; +1 >Emitted(16, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(20, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(20, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(20, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(20, 17) + SourceIndex(0) +6 >Emitted(16, 27) Source(20, 27) + SourceIndex(0) +7 >Emitted(16, 28) Source(20, 28) + SourceIndex(0) +8 >Emitted(16, 29) Source(20, 29) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(21, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(18, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(23, 6) + SourceIndex(0) +4 >Emitted(18, 12) Source(23, 12) + SourceIndex(0) +5 >Emitted(18, 13) Source(23, 13) + SourceIndex(0) +6 >Emitted(18, 14) Source(23, 14) + SourceIndex(0) +--- +>>>foo1([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +1-> + > +2 >foo1 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(19, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(24, 6) + SourceIndex(0) +4 >Emitted(19, 7) Source(24, 7) + SourceIndex(0) +5 >Emitted(19, 8) Source(24, 8) + SourceIndex(0) +6 >Emitted(19, 10) Source(24, 10) + SourceIndex(0) +7 >Emitted(19, 19) Source(24, 19) + SourceIndex(0) +8 >Emitted(19, 21) Source(24, 21) + SourceIndex(0) +9 >Emitted(19, 31) Source(24, 31) + SourceIndex(0) +10>Emitted(19, 32) Source(24, 32) + SourceIndex(0) +11>Emitted(19, 33) Source(24, 33) + SourceIndex(0) +12>Emitted(19, 34) Source(24, 34) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(20, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(20, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(20, 6) Source(26, 6) + SourceIndex(0) +4 >Emitted(20, 12) Source(26, 12) + SourceIndex(0) +5 >Emitted(20, 13) Source(26, 13) + SourceIndex(0) +6 >Emitted(20, 14) Source(26, 14) + SourceIndex(0) +--- +>>>foo2([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +1-> + > +2 >foo2 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(21, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(21, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(21, 6) Source(27, 6) + SourceIndex(0) +4 >Emitted(21, 7) Source(27, 7) + SourceIndex(0) +5 >Emitted(21, 8) Source(27, 8) + SourceIndex(0) +6 >Emitted(21, 10) Source(27, 10) + SourceIndex(0) +7 >Emitted(21, 19) Source(27, 19) + SourceIndex(0) +8 >Emitted(21, 21) Source(27, 21) + SourceIndex(0) +9 >Emitted(21, 31) Source(27, 31) + SourceIndex(0) +10>Emitted(21, 32) Source(27, 32) + SourceIndex(0) +11>Emitted(21, 33) Source(27, 33) + SourceIndex(0) +12>Emitted(21, 34) Source(27, 34) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(22, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(22, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(22, 6) Source(29, 6) + SourceIndex(0) +4 >Emitted(22, 12) Source(29, 12) + SourceIndex(0) +5 >Emitted(22, 13) Source(29, 13) + SourceIndex(0) +6 >Emitted(22, 14) Source(29, 14) + SourceIndex(0) +--- +>>>foo3([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +1-> + > +2 >foo3 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(23, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(23, 5) Source(30, 5) + SourceIndex(0) +3 >Emitted(23, 6) Source(30, 6) + SourceIndex(0) +4 >Emitted(23, 7) Source(30, 7) + SourceIndex(0) +5 >Emitted(23, 8) Source(30, 8) + SourceIndex(0) +6 >Emitted(23, 10) Source(30, 10) + SourceIndex(0) +7 >Emitted(23, 19) Source(30, 19) + SourceIndex(0) +8 >Emitted(23, 21) Source(30, 21) + SourceIndex(0) +9 >Emitted(23, 31) Source(30, 31) + SourceIndex(0) +10>Emitted(23, 32) Source(30, 32) + SourceIndex(0) +11>Emitted(23, 33) Source(30, 33) + SourceIndex(0) +12>Emitted(23, 34) Source(30, 34) + SourceIndex(0) +--- +>>>foo4(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo4 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(24, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(24, 5) Source(32, 5) + SourceIndex(0) +3 >Emitted(24, 6) Source(32, 6) + SourceIndex(0) +4 >Emitted(24, 12) Source(32, 12) + SourceIndex(0) +5 >Emitted(24, 13) Source(32, 13) + SourceIndex(0) +6 >Emitted(24, 14) Source(32, 14) + SourceIndex(0) +--- +>>>foo4([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo4 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(25, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) +3 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) +4 >Emitted(25, 7) Source(33, 7) + SourceIndex(0) +5 >Emitted(25, 8) Source(33, 8) + SourceIndex(0) +6 >Emitted(25, 10) Source(33, 10) + SourceIndex(0) +7 >Emitted(25, 19) Source(33, 19) + SourceIndex(0) +8 >Emitted(25, 21) Source(33, 21) + SourceIndex(0) +9 >Emitted(25, 31) Source(33, 31) + SourceIndex(0) +10>Emitted(25, 32) Source(33, 32) + SourceIndex(0) +11>Emitted(25, 33) Source(33, 33) + SourceIndex(0) +12>Emitted(25, 34) Source(33, 34) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.symbols new file mode 100644 index 00000000000..a1370b132c2 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.symbols @@ -0,0 +1,94 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 2, 1)) + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 2, 1)) + +function foo1([, nameA]: Robot) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 43)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 6, 16)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 2, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 6, 16)) +} + +function foo2([numberB]: Robot) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 8, 1)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 10, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 2, 1)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 10, 15)) +} + +function foo3([numberA2, nameA2, skillA2]: Robot) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 12, 1)) +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 14, 15)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 14, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 14, 32)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 2, 1)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 14, 24)) +} + +function foo4([numberA3, ...robotAInfo]: Robot) { +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 16, 1)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 18, 15)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 18, 24)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 2, 1)) + + console.log(robotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 0, 22)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 18, 24)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 43)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 3)) + +foo1([2, "trimmer", "trimming"]); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 43)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 8, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 3)) + +foo2([2, "trimmer", "trimming"]); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 8, 1)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 12, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 3)) + +foo3([2, "trimmer", "trimming"]); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 12, 1)) + +foo4(robotA); +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 16, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 4, 3)) + +foo4([2, "trimmer", "trimming"]); +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern.ts, 16, 1)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types new file mode 100644 index 00000000000..9c695f1c0dd --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types @@ -0,0 +1,127 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +function foo1([, nameA]: Robot) { +>foo1 : ([, nameA]: [number, string, string]) => void +> : undefined +>nameA : string +>Robot : [number, string, string] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} + +function foo2([numberB]: Robot) { +>foo2 : ([numberB]: [number, string, string]) => void +>numberB : number +>Robot : [number, string, string] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} + +function foo3([numberA2, nameA2, skillA2]: Robot) { +>foo3 : ([numberA2, nameA2, skillA2]: [number, string, string]) => void +>numberA2 : number +>nameA2 : string +>skillA2 : string +>Robot : [number, string, string] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} + +function foo4([numberA3, ...robotAInfo]: Robot) { +>foo4 : ([numberA3, ...robotAInfo]: [number, string, string]) => void +>numberA3 : number +>robotAInfo : (number | string)[] +>Robot : [number, string, string] + + console.log(robotAInfo); +>console.log(robotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>robotAInfo : (number | string)[] +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ([, nameA]: [number, string, string]) => void +>robotA : [number, string, string] + +foo1([2, "trimmer", "trimming"]); +>foo1([2, "trimmer", "trimming"]) : void +>foo1 : ([, nameA]: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ([numberB]: [number, string, string]) => void +>robotA : [number, string, string] + +foo2([2, "trimmer", "trimming"]); +>foo2([2, "trimmer", "trimming"]) : void +>foo2 : ([numberB]: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ([numberA2, nameA2, skillA2]: [number, string, string]) => void +>robotA : [number, string, string] + +foo3([2, "trimmer", "trimming"]); +>foo3([2, "trimmer", "trimming"]) : void +>foo3 : ([numberA2, nameA2, skillA2]: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +foo4(robotA); +>foo4(robotA) : void +>foo4 : ([numberA3, ...robotAInfo]: [number, string, string]) => void +>robotA : [number, string, string] + +foo4([2, "trimmer", "trimming"]); +>foo4([2, "trimmer", "trimming"]) : void +>foo4 : ([numberA3, ...robotAInfo]: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.ts new file mode 100644 index 00000000000..731dc7f2657 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern.ts @@ -0,0 +1,34 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; + +function foo1([, nameA]: Robot) { + console.log(nameA); +} + +function foo2([numberB]: Robot) { + console.log(numberB); +} + +function foo3([numberA2, nameA2, skillA2]: Robot) { + console.log(nameA2); +} + +function foo4([numberA3, ...robotAInfo]: Robot) { + console.log(robotAInfo); +} + +foo1(robotA); +foo1([2, "trimmer", "trimming"]); + +foo2(robotA); +foo2([2, "trimmer", "trimming"]); + +foo3(robotA); +foo3([2, "trimmer", "trimming"]); + +foo4(robotA); +foo4([2, "trimmer", "trimming"]); \ No newline at end of file From 6f896836b8457ffe67d4e8705c0c753957dd5f59 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 4 Dec 2015 13:53:40 -0800 Subject: [PATCH 031/164] Test cases for nested array binding pattern destructuring in parameters --- ...ructuringParametertArrayBindingPattern2.js | 62 ++ ...uringParametertArrayBindingPattern2.js.map | 2 + ...rametertArrayBindingPattern2.sourcemap.txt | 588 ++++++++++++++++++ ...ringParametertArrayBindingPattern2.symbols | 93 +++ ...turingParametertArrayBindingPattern2.types | 131 ++++ ...ructuringParametertArrayBindingPattern2.ts | 34 + 6 files changed, 910 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js new file mode 100644 index 00000000000..0aa302e0990 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js @@ -0,0 +1,62 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPattern2.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [string, [string, string]]; +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; + +function foo1([, skillA]: Robot) { + console.log(skillA); +} + +function foo2([nameMB]: Robot) { + console.log(nameMB); +} + +function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + console.log(nameMA); +} + +function foo4([...multiRobotAInfo]: Robot) { + console.log(multiRobotAInfo); +} + +foo1(robotA); +foo1(["roomba", ["vaccum", "mopping"]]); + +foo2(robotA); +foo2(["roomba", ["vaccum", "mopping"]]); + +foo3(robotA); +foo3(["roomba", ["vaccum", "mopping"]]); + +foo4(robotA); +foo4(["roomba", ["vaccum", "mopping"]]); + +//// [sourceMapValidationDestructuringParametertArrayBindingPattern2.js] +var robotA = ["trimmer", ["trimming", "edging"]]; +function foo1(_a) { + var skillA = _a[1]; + console.log(skillA); +} +function foo2(_a) { + var nameMB = _a[0]; + console.log(nameMB); +} +function foo3(_a) { + var nameMA = _a[0], _b = _a[1], primarySkillA = _b[0], secondarySkillA = _b[1]; + console.log(nameMA); +} +function foo4(_a) { + var multiRobotAInfo = _a.slice(0); + console.log(multiRobotAInfo); +} +foo1(robotA); +foo1(["roomba", ["vaccum", "mopping"]]); +foo2(robotA); +foo2(["roomba", ["vaccum", "mopping"]]); +foo3(robotA); +foo3(["roomba", ["vaccum", "mopping"]]); +foo4(robotA); +foo4(["roomba", ["vaccum", "mopping"]]); +//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map new file mode 100644 index 00000000000..aa8ada6f3ba --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,cAAc,EAAiB;QAAjB,cAAiB;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAe;QAAf,cAAe;IACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAiD;QAAhD,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA2B;QAA3B,6BAA2B;IACrC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt new file mode 100644 index 00000000000..e20536be8e9 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt @@ -0,0 +1,588 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParametertArrayBindingPattern2.js +mapUrl: sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParametertArrayBindingPattern2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.js +sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts +------------------------------------------------------------------- +>>>var robotA = ["trimmer", ["trimming", "edging"]]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [string, [string, string]]; + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(5, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(5, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(5, 22) + SourceIndex(0) +6 >Emitted(1, 24) Source(5, 31) + SourceIndex(0) +7 >Emitted(1, 26) Source(5, 33) + SourceIndex(0) +8 >Emitted(1, 27) Source(5, 34) + SourceIndex(0) +9 >Emitted(1, 37) Source(5, 44) + SourceIndex(0) +10>Emitted(1, 39) Source(5, 46) + SourceIndex(0) +11>Emitted(1, 47) Source(5, 54) + SourceIndex(0) +12>Emitted(1, 48) Source(5, 55) + SourceIndex(0) +13>Emitted(1, 49) Source(5, 56) + SourceIndex(0) +14>Emitted(1, 50) Source(5, 57) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > [, skillA]: Robot +1 >Emitted(2, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(2, 15) Source(7, 15) + SourceIndex(0) +3 >Emitted(2, 17) Source(7, 32) + SourceIndex(0) +--- +>>> var skillA = _a[1]; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^^-> +1-> +2 > [, skillA]: Robot +1->Emitted(3, 9) Source(7, 15) + SourceIndex(0) +2 >Emitted(3, 23) Source(7, 32) + SourceIndex(0) +--- +>>> console.log(skillA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > skillA +7 > ) +8 > ; +1->Emitted(4, 5) Source(8, 5) + SourceIndex(0) +2 >Emitted(4, 12) Source(8, 12) + SourceIndex(0) +3 >Emitted(4, 13) Source(8, 13) + SourceIndex(0) +4 >Emitted(4, 16) Source(8, 16) + SourceIndex(0) +5 >Emitted(4, 17) Source(8, 17) + SourceIndex(0) +6 >Emitted(4, 23) Source(8, 23) + SourceIndex(0) +7 >Emitted(4, 24) Source(8, 24) + SourceIndex(0) +8 >Emitted(4, 25) Source(8, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(9, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^-> +1-> + > + > +2 >function foo2( +3 > [nameMB]: Robot +1->Emitted(6, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(6, 15) Source(11, 15) + SourceIndex(0) +3 >Emitted(6, 17) Source(11, 30) + SourceIndex(0) +--- +>>> var nameMB = _a[0]; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^^-> +1-> +2 > [nameMB]: Robot +1->Emitted(7, 9) Source(11, 15) + SourceIndex(0) +2 >Emitted(7, 23) Source(11, 30) + SourceIndex(0) +--- +>>> console.log(nameMB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1->) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMB +7 > ) +8 > ; +1->Emitted(8, 5) Source(12, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(12, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(12, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(12, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(12, 17) + SourceIndex(0) +6 >Emitted(8, 23) Source(12, 23) + SourceIndex(0) +7 >Emitted(8, 24) Source(12, 24) + SourceIndex(0) +8 >Emitted(8, 25) Source(12, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(13, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo3( +3 > [nameMA, [primarySkillA, secondarySkillA]]: Robot +1->Emitted(10, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(10, 15) Source(15, 15) + SourceIndex(0) +3 >Emitted(10, 17) Source(15, 64) + SourceIndex(0) +--- +>>> var nameMA = _a[0], _b = _a[1], primarySkillA = _b[0], secondarySkillA = _b[1]; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > nameMA +3 > , +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA +1->Emitted(11, 9) Source(15, 16) + SourceIndex(0) +2 >Emitted(11, 23) Source(15, 22) + SourceIndex(0) +3 >Emitted(11, 25) Source(15, 24) + SourceIndex(0) +4 >Emitted(11, 35) Source(15, 56) + SourceIndex(0) +5 >Emitted(11, 37) Source(15, 25) + SourceIndex(0) +6 >Emitted(11, 58) Source(15, 38) + SourceIndex(0) +7 >Emitted(11, 60) Source(15, 40) + SourceIndex(0) +8 >Emitted(11, 83) Source(15, 55) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]]: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(12, 5) Source(16, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(16, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(16, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(16, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(16, 17) + SourceIndex(0) +6 >Emitted(12, 23) Source(16, 23) + SourceIndex(0) +7 >Emitted(12, 24) Source(16, 24) + SourceIndex(0) +8 >Emitted(12, 25) Source(16, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(17, 2) + SourceIndex(0) +--- +>>>function foo4(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo4( +3 > [...multiRobotAInfo]: Robot +1->Emitted(14, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(14, 15) Source(19, 15) + SourceIndex(0) +3 >Emitted(14, 17) Source(19, 42) + SourceIndex(0) +--- +>>> var multiRobotAInfo = _a.slice(0); +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [...multiRobotAInfo]: Robot +1->Emitted(15, 9) Source(19, 15) + SourceIndex(0) +2 >Emitted(15, 38) Source(19, 42) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(16, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(20, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(20, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(20, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(20, 17) + SourceIndex(0) +6 >Emitted(16, 32) Source(20, 32) + SourceIndex(0) +7 >Emitted(16, 33) Source(20, 33) + SourceIndex(0) +8 >Emitted(16, 34) Source(20, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(21, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(18, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(23, 6) + SourceIndex(0) +4 >Emitted(18, 12) Source(23, 12) + SourceIndex(0) +5 >Emitted(18, 13) Source(23, 13) + SourceIndex(0) +6 >Emitted(18, 14) Source(23, 14) + SourceIndex(0) +--- +>>>foo1(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >foo1 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(19, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(24, 6) + SourceIndex(0) +4 >Emitted(19, 7) Source(24, 7) + SourceIndex(0) +5 >Emitted(19, 15) Source(24, 15) + SourceIndex(0) +6 >Emitted(19, 17) Source(24, 17) + SourceIndex(0) +7 >Emitted(19, 18) Source(24, 18) + SourceIndex(0) +8 >Emitted(19, 26) Source(24, 26) + SourceIndex(0) +9 >Emitted(19, 28) Source(24, 28) + SourceIndex(0) +10>Emitted(19, 37) Source(24, 37) + SourceIndex(0) +11>Emitted(19, 38) Source(24, 38) + SourceIndex(0) +12>Emitted(19, 39) Source(24, 39) + SourceIndex(0) +13>Emitted(19, 40) Source(24, 40) + SourceIndex(0) +14>Emitted(19, 41) Source(24, 41) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(20, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(20, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(20, 6) Source(26, 6) + SourceIndex(0) +4 >Emitted(20, 12) Source(26, 12) + SourceIndex(0) +5 >Emitted(20, 13) Source(26, 13) + SourceIndex(0) +6 >Emitted(20, 14) Source(26, 14) + SourceIndex(0) +--- +>>>foo2(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >foo2 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(21, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(21, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(21, 6) Source(27, 6) + SourceIndex(0) +4 >Emitted(21, 7) Source(27, 7) + SourceIndex(0) +5 >Emitted(21, 15) Source(27, 15) + SourceIndex(0) +6 >Emitted(21, 17) Source(27, 17) + SourceIndex(0) +7 >Emitted(21, 18) Source(27, 18) + SourceIndex(0) +8 >Emitted(21, 26) Source(27, 26) + SourceIndex(0) +9 >Emitted(21, 28) Source(27, 28) + SourceIndex(0) +10>Emitted(21, 37) Source(27, 37) + SourceIndex(0) +11>Emitted(21, 38) Source(27, 38) + SourceIndex(0) +12>Emitted(21, 39) Source(27, 39) + SourceIndex(0) +13>Emitted(21, 40) Source(27, 40) + SourceIndex(0) +14>Emitted(21, 41) Source(27, 41) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(22, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(22, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(22, 6) Source(29, 6) + SourceIndex(0) +4 >Emitted(22, 12) Source(29, 12) + SourceIndex(0) +5 >Emitted(22, 13) Source(29, 13) + SourceIndex(0) +6 >Emitted(22, 14) Source(29, 14) + SourceIndex(0) +--- +>>>foo3(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >foo3 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(23, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(23, 5) Source(30, 5) + SourceIndex(0) +3 >Emitted(23, 6) Source(30, 6) + SourceIndex(0) +4 >Emitted(23, 7) Source(30, 7) + SourceIndex(0) +5 >Emitted(23, 15) Source(30, 15) + SourceIndex(0) +6 >Emitted(23, 17) Source(30, 17) + SourceIndex(0) +7 >Emitted(23, 18) Source(30, 18) + SourceIndex(0) +8 >Emitted(23, 26) Source(30, 26) + SourceIndex(0) +9 >Emitted(23, 28) Source(30, 28) + SourceIndex(0) +10>Emitted(23, 37) Source(30, 37) + SourceIndex(0) +11>Emitted(23, 38) Source(30, 38) + SourceIndex(0) +12>Emitted(23, 39) Source(30, 39) + SourceIndex(0) +13>Emitted(23, 40) Source(30, 40) + SourceIndex(0) +14>Emitted(23, 41) Source(30, 41) + SourceIndex(0) +--- +>>>foo4(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo4 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(24, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(24, 5) Source(32, 5) + SourceIndex(0) +3 >Emitted(24, 6) Source(32, 6) + SourceIndex(0) +4 >Emitted(24, 12) Source(32, 12) + SourceIndex(0) +5 >Emitted(24, 13) Source(32, 13) + SourceIndex(0) +6 >Emitted(24, 14) Source(32, 14) + SourceIndex(0) +--- +>>>foo4(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo4 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(25, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) +3 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) +4 >Emitted(25, 7) Source(33, 7) + SourceIndex(0) +5 >Emitted(25, 15) Source(33, 15) + SourceIndex(0) +6 >Emitted(25, 17) Source(33, 17) + SourceIndex(0) +7 >Emitted(25, 18) Source(33, 18) + SourceIndex(0) +8 >Emitted(25, 26) Source(33, 26) + SourceIndex(0) +9 >Emitted(25, 28) Source(33, 28) + SourceIndex(0) +10>Emitted(25, 37) Source(33, 37) + SourceIndex(0) +11>Emitted(25, 38) Source(33, 38) + SourceIndex(0) +12>Emitted(25, 39) Source(33, 39) + SourceIndex(0) +13>Emitted(25, 40) Source(33, 40) + SourceIndex(0) +14>Emitted(25, 41) Source(33, 41) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.symbols new file mode 100644 index 00000000000..26797210f4b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.symbols @@ -0,0 +1,93 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 1, 8)) +} +type Robot = [string, [string, string]]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 2, 1)) + +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 2, 1)) + +function foo1([, skillA]: Robot) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 56)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 6, 16)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 2, 1)) + + console.log(skillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 6, 16)) +} + +function foo2([nameMB]: Robot) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 8, 1)) +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 10, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 2, 1)) + + console.log(nameMB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 10, 15)) +} + +function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 12, 1)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 14, 15)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 14, 24)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 14, 38)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 2, 1)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 14, 15)) +} + +function foo4([...multiRobotAInfo]: Robot) { +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 16, 1)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 18, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 2, 1)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 18, 15)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 56)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 3)) + +foo1(["roomba", ["vaccum", "mopping"]]); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 56)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 8, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 3)) + +foo2(["roomba", ["vaccum", "mopping"]]); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 8, 1)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 12, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 3)) + +foo3(["roomba", ["vaccum", "mopping"]]); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 12, 1)) + +foo4(robotA); +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 16, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 4, 3)) + +foo4(["roomba", ["vaccum", "mopping"]]); +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPattern2.ts, 16, 1)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types new file mode 100644 index 00000000000..b3e09d962c3 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types @@ -0,0 +1,131 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [string, [string, string]]; +>Robot : [string, [string, string]] + +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; +>robotA : [string, [string, string]] +>Robot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +function foo1([, skillA]: Robot) { +>foo1 : ([, skillA]: [string, [string, string]]) => void +> : undefined +>skillA : [string, string] +>Robot : [string, [string, string]] + + console.log(skillA); +>console.log(skillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>skillA : [string, string] +} + +function foo2([nameMB]: Robot) { +>foo2 : ([nameMB]: [string, [string, string]]) => void +>nameMB : string +>Robot : [string, [string, string]] + + console.log(nameMB); +>console.log(nameMB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMB : string +} + +function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { +>foo3 : ([nameMA, [primarySkillA, secondarySkillA]]: [string, [string, string]]) => void +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>Robot : [string, [string, string]] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +function foo4([...multiRobotAInfo]: Robot) { +>foo4 : ([...multiRobotAInfo]: [string, [string, string]]) => void +>multiRobotAInfo : (string | [string, string])[] +>Robot : [string, [string, string]] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ([, skillA]: [string, [string, string]]) => void +>robotA : [string, [string, string]] + +foo1(["roomba", ["vaccum", "mopping"]]); +>foo1(["roomba", ["vaccum", "mopping"]]) : void +>foo1 : ([, skillA]: [string, [string, string]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ([nameMB]: [string, [string, string]]) => void +>robotA : [string, [string, string]] + +foo2(["roomba", ["vaccum", "mopping"]]); +>foo2(["roomba", ["vaccum", "mopping"]]) : void +>foo2 : ([nameMB]: [string, [string, string]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ([nameMA, [primarySkillA, secondarySkillA]]: [string, [string, string]]) => void +>robotA : [string, [string, string]] + +foo3(["roomba", ["vaccum", "mopping"]]); +>foo3(["roomba", ["vaccum", "mopping"]]) : void +>foo3 : ([nameMA, [primarySkillA, secondarySkillA]]: [string, [string, string]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + +foo4(robotA); +>foo4(robotA) : void +>foo4 : ([...multiRobotAInfo]: [string, [string, string]]) => void +>robotA : [string, [string, string]] + +foo4(["roomba", ["vaccum", "mopping"]]); +>foo4(["roomba", ["vaccum", "mopping"]]) : void +>foo4 : ([...multiRobotAInfo]: [string, [string, string]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.ts b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.ts new file mode 100644 index 00000000000..07c2a24e70e --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPattern2.ts @@ -0,0 +1,34 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [string, [string, string]]; +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; + +function foo1([, skillA]: Robot) { + console.log(skillA); +} + +function foo2([nameMB]: Robot) { + console.log(nameMB); +} + +function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + console.log(nameMA); +} + +function foo4([...multiRobotAInfo]: Robot) { + console.log(multiRobotAInfo); +} + +foo1(robotA); +foo1(["roomba", ["vaccum", "mopping"]]); + +foo2(robotA); +foo2(["roomba", ["vaccum", "mopping"]]); + +foo3(robotA); +foo3(["roomba", ["vaccum", "mopping"]]); + +foo4(robotA); +foo4(["roomba", ["vaccum", "mopping"]]); \ No newline at end of file From c0f9de6d2cdbc0099943e7493e8c412bd449e56a Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 13:55:13 -0800 Subject: [PATCH 032/164] Test case for ForOf statement with object binding pattern --- ...nDestructuringForOfObjectBindingPattern.js | 130 ++ ...tructuringForOfObjectBindingPattern.js.map | 2 + ...ingForOfObjectBindingPattern.sourcemap.txt | 1809 +++++++++++++++++ ...ructuringForOfObjectBindingPattern.symbols | 259 +++ ...structuringForOfObjectBindingPattern.types | 329 +++ ...nDestructuringForOfObjectBindingPattern.ts | 68 + 6 files changed, 2597 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js new file mode 100644 index 00000000000..247e23ff1f1 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js @@ -0,0 +1,130 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPattern.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +for (let {name: nameA } of robots) { + console.log(nameA); +} +for (let {name: nameA } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + +for (let {name: nameA, skill: skillA } of robots) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} + +//// [sourceMapValidationDestructuringForOfObjectBindingPattern.js] +var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +function getRobots() { + return robots; +} +function getMultiRobots() { + return multiRobots; +} +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + var nameA = robots_1[_i].name; + console.log(nameA); +} +for (var _a = 0, _b = getRobots(); _a < _b.length; _a++) { + var nameA = _b[_a].name; + console.log(nameA); +} +for (var _c = 0, _d = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _c < _d.length; _c++) { + var nameA = _d[_c].name; + console.log(nameA); +} +for (var _e = 0, multiRobots_1 = multiRobots; _e < multiRobots_1.length; _e++) { + var _f = multiRobots_1[_e].skills, primaryA = _f.primary, secondaryA = _f.secondary; + console.log(primaryA); +} +for (var _g = 0, _h = getMultiRobots(); _g < _h.length; _g++) { + var _j = _h[_g].skills, primaryA = _j.primary, secondaryA = _j.secondary; + console.log(primaryA); +} +for (var _k = 0, _l = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _k < _l.length; _k++) { + var _m = _l[_k].skills, primaryA = _m.primary, secondaryA = _m.secondary; + console.log(primaryA); +} +for (var _o = 0, robots_2 = robots; _o < robots_2.length; _o++) { + var _p = robots_2[_o], nameA = _p.name, skillA = _p.skill; + console.log(nameA); +} +for (var _q = 0, _r = getRobots(); _q < _r.length; _q++) { + var _s = _r[_q], nameA = _s.name, skillA = _s.skill; + console.log(nameA); +} +for (var _t = 0, _u = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _t < _u.length; _t++) { + var _v = _u[_t], nameA = _v.name, skillA = _v.skill; + console.log(nameA); +} +for (var _w = 0, multiRobots_2 = multiRobots; _w < multiRobots_2.length; _w++) { + var _x = multiRobots_2[_w], nameA = _x.name, _y = _x.skills, primaryA = _y.primary, secondaryA = _y.secondary; + console.log(nameA); +} +for (var _z = 0, _0 = getMultiRobots(); _z < _0.length; _z++) { + var _1 = _0[_z], nameA = _1.name, _2 = _1.skills, primaryA = _2.primary, secondaryA = _2.secondary; + console.log(nameA); +} +for (var _3 = 0, _4 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _3 < _4.length; _3++) { + var _5 = _4[_3], nameA = _5.name, _6 = _5.skills, primaryA = _6.primary, secondaryA = _6.secondary; + console.log(nameA); +} +//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map new file mode 100644 index 00000000000..3f8182d4376 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..42b9853cc09 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt @@ -0,0 +1,1809 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfObjectBindingPattern.js +mapUrl: sourceMapValidationDestructuringForOfObjectBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfObjectBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.js +sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts +------------------------------------------------------------------- +>>>var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^^ +13> ^^^^^^^^ +14> ^^ +15> ^^ +16> ^^ +17> ^^^^ +18> ^^ +19> ^^^^^^^^^ +20> ^^ +21> ^^^^^ +22> ^^ +23> ^^^^^^^^^^ +24> ^^ +25> ^ +26> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > + > +2 >let +3 > robots +4 > : Robot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skill +12> : +13> "mowing" +14> } +15> , +16> { +17> name +18> : +19> "trimmer" +20> , +21> skill +22> : +23> "trimming" +24> } +25> ] +26> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(17, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(17, 23) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 24) + SourceIndex(0) +6 >Emitted(1, 17) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 30) + SourceIndex(0) +8 >Emitted(1, 23) Source(17, 32) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 39) + SourceIndex(0) +10>Emitted(1, 32) Source(17, 41) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 46) + SourceIndex(0) +12>Emitted(1, 39) Source(17, 48) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 56) + SourceIndex(0) +14>Emitted(1, 49) Source(17, 58) + SourceIndex(0) +15>Emitted(1, 51) Source(17, 60) + SourceIndex(0) +16>Emitted(1, 53) Source(17, 62) + SourceIndex(0) +17>Emitted(1, 57) Source(17, 66) + SourceIndex(0) +18>Emitted(1, 59) Source(17, 68) + SourceIndex(0) +19>Emitted(1, 68) Source(17, 77) + SourceIndex(0) +20>Emitted(1, 70) Source(17, 79) + SourceIndex(0) +21>Emitted(1, 75) Source(17, 84) + SourceIndex(0) +22>Emitted(1, 77) Source(17, 86) + SourceIndex(0) +23>Emitted(1, 87) Source(17, 96) + SourceIndex(0) +24>Emitted(1, 89) Source(17, 98) + SourceIndex(0) +25>Emitted(1, 90) Source(17, 99) + SourceIndex(0) +26>Emitted(1, 91) Source(17, 100) + SourceIndex(0) +--- +>>>var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^^ +12> ^^ +13> ^^ +14> ^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^^^^^^^^ +19> ^^ +20> ^^^^^^ +21> ^^ +22> ^^ +1 > + > +2 >let +3 > multiRobots +4 > : MultiRobot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skills +12> : +13> { +14> primary +15> : +16> "mowing" +17> , +18> secondary +19> : +20> "none" +21> } +22> } +1 >Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 16) Source(18, 16) + SourceIndex(0) +4 >Emitted(2, 19) Source(18, 33) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 34) + SourceIndex(0) +6 >Emitted(2, 22) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 40) + SourceIndex(0) +8 >Emitted(2, 28) Source(18, 42) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 49) + SourceIndex(0) +10>Emitted(2, 37) Source(18, 51) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 57) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 59) + SourceIndex(0) +13>Emitted(2, 47) Source(18, 61) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 68) + SourceIndex(0) +15>Emitted(2, 56) Source(18, 70) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 78) + SourceIndex(0) +17>Emitted(2, 66) Source(18, 80) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 89) + SourceIndex(0) +19>Emitted(2, 77) Source(18, 91) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 97) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 99) + SourceIndex(0) +22>Emitted(2, 87) Source(18, 101) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +1 >^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^ +1 >, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> ; +1 >Emitted(3, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(3, 7) Source(19, 7) + SourceIndex(0) +3 >Emitted(3, 11) Source(19, 11) + SourceIndex(0) +4 >Emitted(3, 13) Source(19, 13) + SourceIndex(0) +5 >Emitted(3, 22) Source(19, 22) + SourceIndex(0) +6 >Emitted(3, 24) Source(19, 24) + SourceIndex(0) +7 >Emitted(3, 30) Source(19, 30) + SourceIndex(0) +8 >Emitted(3, 32) Source(19, 32) + SourceIndex(0) +9 >Emitted(3, 34) Source(19, 34) + SourceIndex(0) +10>Emitted(3, 41) Source(19, 41) + SourceIndex(0) +11>Emitted(3, 43) Source(19, 43) + SourceIndex(0) +12>Emitted(3, 53) Source(19, 53) + SourceIndex(0) +13>Emitted(3, 55) Source(19, 55) + SourceIndex(0) +14>Emitted(3, 64) Source(19, 64) + SourceIndex(0) +15>Emitted(3, 66) Source(19, 66) + SourceIndex(0) +16>Emitted(3, 74) Source(19, 74) + SourceIndex(0) +17>Emitted(3, 76) Source(19, 76) + SourceIndex(0) +18>Emitted(3, 78) Source(19, 78) + SourceIndex(0) +19>Emitted(3, 79) Source(19, 79) + SourceIndex(0) +20>Emitted(3, 80) Source(19, 80) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +1 >Emitted(4, 1) Source(21, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(22, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(22, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(22, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(22, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(23, 2) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(7, 1) Source(25, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(8, 5) Source(26, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(26, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(26, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(26, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(26, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(27, 2) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > (let {name: nameA } of +5 > robots +6 > +7 > robots +8 > +9 > let {name: nameA } +10> +11> let {name: nameA } of robots +12> ) +1->Emitted(10, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(10, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(10, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(10, 6) Source(29, 28) + SourceIndex(0) +5 >Emitted(10, 16) Source(29, 34) + SourceIndex(0) +6 >Emitted(10, 18) Source(29, 28) + SourceIndex(0) +7 >Emitted(10, 35) Source(29, 34) + SourceIndex(0) +8 >Emitted(10, 37) Source(29, 6) + SourceIndex(0) +9 >Emitted(10, 57) Source(29, 24) + SourceIndex(0) +10>Emitted(10, 59) Source(29, 6) + SourceIndex(0) +11>Emitted(10, 63) Source(29, 34) + SourceIndex(0) +12>Emitted(10, 64) Source(29, 35) + SourceIndex(0) +--- +>>> var nameA = robots_1[_i].name; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > {name: nameA } +1 >Emitted(11, 5) Source(29, 6) + SourceIndex(0) +2 >Emitted(11, 9) Source(29, 10) + SourceIndex(0) +3 >Emitted(11, 34) Source(29, 24) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(12, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(12, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(12, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(12, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(13, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for (var _a = 0, _b = getRobots(); _a < _b.length; _a++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > (let {name: nameA } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> let {name: nameA } +12> +13> let {name: nameA } of getRobots() +14> ) +1->Emitted(14, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(14, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(14, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(14, 6) Source(32, 28) + SourceIndex(0) +5 >Emitted(14, 16) Source(32, 39) + SourceIndex(0) +6 >Emitted(14, 18) Source(32, 28) + SourceIndex(0) +7 >Emitted(14, 23) Source(32, 28) + SourceIndex(0) +8 >Emitted(14, 32) Source(32, 37) + SourceIndex(0) +9 >Emitted(14, 34) Source(32, 39) + SourceIndex(0) +10>Emitted(14, 36) Source(32, 6) + SourceIndex(0) +11>Emitted(14, 50) Source(32, 24) + SourceIndex(0) +12>Emitted(14, 52) Source(32, 6) + SourceIndex(0) +13>Emitted(14, 56) Source(32, 39) + SourceIndex(0) +14>Emitted(14, 57) Source(32, 40) + SourceIndex(0) +--- +>>> var nameA = _b[_a].name; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > {name: nameA } +1 >Emitted(15, 5) Source(32, 6) + SourceIndex(0) +2 >Emitted(15, 9) Source(32, 10) + SourceIndex(0) +3 >Emitted(15, 28) Source(32, 24) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(16, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(16, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(16, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(16, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(17, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _c = 0, _d = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _c < _d.length; _c++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > (let {name: nameA } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> let {name: nameA } +30> +31> let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(18, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(18, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(18, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(18, 6) Source(35, 28) + SourceIndex(0) +5 >Emitted(18, 16) Source(35, 104) + SourceIndex(0) +6 >Emitted(18, 18) Source(35, 28) + SourceIndex(0) +7 >Emitted(18, 24) Source(35, 29) + SourceIndex(0) +8 >Emitted(18, 26) Source(35, 31) + SourceIndex(0) +9 >Emitted(18, 30) Source(35, 35) + SourceIndex(0) +10>Emitted(18, 32) Source(35, 37) + SourceIndex(0) +11>Emitted(18, 39) Source(35, 44) + SourceIndex(0) +12>Emitted(18, 41) Source(35, 46) + SourceIndex(0) +13>Emitted(18, 46) Source(35, 51) + SourceIndex(0) +14>Emitted(18, 48) Source(35, 53) + SourceIndex(0) +15>Emitted(18, 56) Source(35, 61) + SourceIndex(0) +16>Emitted(18, 58) Source(35, 63) + SourceIndex(0) +17>Emitted(18, 60) Source(35, 65) + SourceIndex(0) +18>Emitted(18, 62) Source(35, 67) + SourceIndex(0) +19>Emitted(18, 66) Source(35, 71) + SourceIndex(0) +20>Emitted(18, 68) Source(35, 73) + SourceIndex(0) +21>Emitted(18, 77) Source(35, 82) + SourceIndex(0) +22>Emitted(18, 79) Source(35, 84) + SourceIndex(0) +23>Emitted(18, 84) Source(35, 89) + SourceIndex(0) +24>Emitted(18, 86) Source(35, 91) + SourceIndex(0) +25>Emitted(18, 96) Source(35, 101) + SourceIndex(0) +26>Emitted(18, 98) Source(35, 103) + SourceIndex(0) +27>Emitted(18, 99) Source(35, 104) + SourceIndex(0) +28>Emitted(18, 101) Source(35, 6) + SourceIndex(0) +29>Emitted(18, 115) Source(35, 24) + SourceIndex(0) +30>Emitted(18, 117) Source(35, 6) + SourceIndex(0) +31>Emitted(18, 121) Source(35, 104) + SourceIndex(0) +32>Emitted(18, 122) Source(35, 105) + SourceIndex(0) +--- +>>> var nameA = _d[_c].name; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > {name: nameA } +1 >Emitted(19, 5) Source(35, 6) + SourceIndex(0) +2 >Emitted(19, 9) Source(35, 10) + SourceIndex(0) +3 >Emitted(19, 28) Source(35, 24) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(20, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(20, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(20, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(20, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(20, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(20, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(20, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(20, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(21, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for (var _e = 0, multiRobots_1 = multiRobots; _e < multiRobots_1.length; _e++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { skills: { primary: primaryA, secondary: secondaryA } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > let { skills: { primary: primaryA, secondary: secondaryA } } +10> +11> let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots +12> ) +1->Emitted(22, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(22, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(22, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(22, 6) Source(38, 70) + SourceIndex(0) +5 >Emitted(22, 16) Source(38, 81) + SourceIndex(0) +6 >Emitted(22, 18) Source(38, 70) + SourceIndex(0) +7 >Emitted(22, 45) Source(38, 81) + SourceIndex(0) +8 >Emitted(22, 47) Source(38, 6) + SourceIndex(0) +9 >Emitted(22, 72) Source(38, 66) + SourceIndex(0) +10>Emitted(22, 74) Source(38, 6) + SourceIndex(0) +11>Emitted(22, 78) Source(38, 81) + SourceIndex(0) +12>Emitted(22, 79) Source(38, 82) + SourceIndex(0) +--- +>>> var _f = multiRobots_1[_e].skills, primaryA = _f.primary, secondaryA = _f.secondary; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { +3 > skills +4 > : { +5 > primary: primaryA +6 > , +7 > secondary: secondaryA +1->Emitted(23, 5) Source(38, 6) + SourceIndex(0) +2 >Emitted(23, 9) Source(38, 12) + SourceIndex(0) +3 >Emitted(23, 38) Source(38, 18) + SourceIndex(0) +4 >Emitted(23, 40) Source(38, 22) + SourceIndex(0) +5 >Emitted(23, 61) Source(38, 39) + SourceIndex(0) +6 >Emitted(23, 63) Source(38, 41) + SourceIndex(0) +7 >Emitted(23, 88) Source(38, 62) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(24, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(24, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(24, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(24, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(24, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(24, 25) Source(39, 25) + SourceIndex(0) +7 >Emitted(24, 26) Source(39, 26) + SourceIndex(0) +8 >Emitted(24, 27) Source(39, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(25, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for (var _g = 0, _h = getMultiRobots(); _g < _h.length; _g++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { skills: { primary: primaryA, secondary: secondaryA } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> let { skills: { primary: primaryA, secondary: secondaryA } } +12> +13> let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots() +14> ) +1->Emitted(26, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(26, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(26, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(26, 6) Source(41, 70) + SourceIndex(0) +5 >Emitted(26, 16) Source(41, 86) + SourceIndex(0) +6 >Emitted(26, 18) Source(41, 70) + SourceIndex(0) +7 >Emitted(26, 23) Source(41, 70) + SourceIndex(0) +8 >Emitted(26, 37) Source(41, 84) + SourceIndex(0) +9 >Emitted(26, 39) Source(41, 86) + SourceIndex(0) +10>Emitted(26, 41) Source(41, 6) + SourceIndex(0) +11>Emitted(26, 55) Source(41, 66) + SourceIndex(0) +12>Emitted(26, 57) Source(41, 6) + SourceIndex(0) +13>Emitted(26, 61) Source(41, 86) + SourceIndex(0) +14>Emitted(26, 62) Source(41, 87) + SourceIndex(0) +--- +>>> var _j = _h[_g].skills, primaryA = _j.primary, secondaryA = _j.secondary; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { +3 > skills +4 > : { +5 > primary: primaryA +6 > , +7 > secondary: secondaryA +1->Emitted(27, 5) Source(41, 6) + SourceIndex(0) +2 >Emitted(27, 9) Source(41, 12) + SourceIndex(0) +3 >Emitted(27, 27) Source(41, 18) + SourceIndex(0) +4 >Emitted(27, 29) Source(41, 22) + SourceIndex(0) +5 >Emitted(27, 50) Source(41, 39) + SourceIndex(0) +6 >Emitted(27, 52) Source(41, 41) + SourceIndex(0) +7 >Emitted(27, 77) Source(41, 62) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(28, 5) Source(42, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(42, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(42, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(42, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(42, 17) + SourceIndex(0) +6 >Emitted(28, 25) Source(42, 25) + SourceIndex(0) +7 >Emitted(28, 26) Source(42, 26) + SourceIndex(0) +8 >Emitted(28, 27) Source(42, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(29, 2) Source(43, 2) + SourceIndex(0) +--- +>>>for (var _k = 0, _l = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { skills: { primary: primaryA, secondary: secondaryA } } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(30, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(44, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(44, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(44, 70) + SourceIndex(0) +5 >Emitted(30, 16) Source(45, 79) + SourceIndex(0) +6 >Emitted(30, 18) Source(44, 70) + SourceIndex(0) +7 >Emitted(30, 24) Source(44, 71) + SourceIndex(0) +8 >Emitted(30, 26) Source(44, 73) + SourceIndex(0) +9 >Emitted(30, 30) Source(44, 77) + SourceIndex(0) +10>Emitted(30, 32) Source(44, 79) + SourceIndex(0) +11>Emitted(30, 39) Source(44, 86) + SourceIndex(0) +12>Emitted(30, 41) Source(44, 88) + SourceIndex(0) +13>Emitted(30, 47) Source(44, 94) + SourceIndex(0) +14>Emitted(30, 49) Source(44, 96) + SourceIndex(0) +15>Emitted(30, 51) Source(44, 98) + SourceIndex(0) +16>Emitted(30, 58) Source(44, 105) + SourceIndex(0) +17>Emitted(30, 60) Source(44, 107) + SourceIndex(0) +18>Emitted(30, 68) Source(44, 115) + SourceIndex(0) +19>Emitted(30, 70) Source(44, 117) + SourceIndex(0) +20>Emitted(30, 79) Source(44, 126) + SourceIndex(0) +21>Emitted(30, 81) Source(44, 128) + SourceIndex(0) +22>Emitted(30, 87) Source(44, 134) + SourceIndex(0) +23>Emitted(30, 89) Source(44, 136) + SourceIndex(0) +24>Emitted(30, 91) Source(44, 138) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _k < _l.length; _k++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^ +24> ^ +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> let { skills: { primary: primaryA, secondary: secondaryA } } +22> +23> let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(31, 5) Source(45, 5) + SourceIndex(0) +2 >Emitted(31, 7) Source(45, 7) + SourceIndex(0) +3 >Emitted(31, 11) Source(45, 11) + SourceIndex(0) +4 >Emitted(31, 13) Source(45, 13) + SourceIndex(0) +5 >Emitted(31, 22) Source(45, 22) + SourceIndex(0) +6 >Emitted(31, 24) Source(45, 24) + SourceIndex(0) +7 >Emitted(31, 30) Source(45, 30) + SourceIndex(0) +8 >Emitted(31, 32) Source(45, 32) + SourceIndex(0) +9 >Emitted(31, 34) Source(45, 34) + SourceIndex(0) +10>Emitted(31, 41) Source(45, 41) + SourceIndex(0) +11>Emitted(31, 43) Source(45, 43) + SourceIndex(0) +12>Emitted(31, 53) Source(45, 53) + SourceIndex(0) +13>Emitted(31, 55) Source(45, 55) + SourceIndex(0) +14>Emitted(31, 64) Source(45, 64) + SourceIndex(0) +15>Emitted(31, 66) Source(45, 66) + SourceIndex(0) +16>Emitted(31, 74) Source(45, 74) + SourceIndex(0) +17>Emitted(31, 76) Source(45, 76) + SourceIndex(0) +18>Emitted(31, 78) Source(45, 78) + SourceIndex(0) +19>Emitted(31, 79) Source(45, 79) + SourceIndex(0) +20>Emitted(31, 81) Source(44, 6) + SourceIndex(0) +21>Emitted(31, 95) Source(44, 66) + SourceIndex(0) +22>Emitted(31, 97) Source(44, 6) + SourceIndex(0) +23>Emitted(31, 101) Source(45, 79) + SourceIndex(0) +24>Emitted(31, 102) Source(45, 80) + SourceIndex(0) +--- +>>> var _m = _l[_k].skills, primaryA = _m.primary, secondaryA = _m.secondary; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let { +3 > skills +4 > : { +5 > primary: primaryA +6 > , +7 > secondary: secondaryA +1 >Emitted(32, 5) Source(44, 6) + SourceIndex(0) +2 >Emitted(32, 9) Source(44, 12) + SourceIndex(0) +3 >Emitted(32, 27) Source(44, 18) + SourceIndex(0) +4 >Emitted(32, 29) Source(44, 22) + SourceIndex(0) +5 >Emitted(32, 50) Source(44, 39) + SourceIndex(0) +6 >Emitted(32, 52) Source(44, 41) + SourceIndex(0) +7 >Emitted(32, 77) Source(44, 62) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(33, 5) Source(46, 5) + SourceIndex(0) +2 >Emitted(33, 12) Source(46, 12) + SourceIndex(0) +3 >Emitted(33, 13) Source(46, 13) + SourceIndex(0) +4 >Emitted(33, 16) Source(46, 16) + SourceIndex(0) +5 >Emitted(33, 17) Source(46, 17) + SourceIndex(0) +6 >Emitted(33, 25) Source(46, 25) + SourceIndex(0) +7 >Emitted(33, 26) Source(46, 26) + SourceIndex(0) +8 >Emitted(33, 27) Source(46, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(34, 2) Source(47, 2) + SourceIndex(0) +--- +>>>for (var _o = 0, robots_2 = robots; _o < robots_2.length; _o++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > (let {name: nameA, skill: skillA } of +5 > robots +6 > +7 > robots +8 > +9 > let {name: nameA, skill: skillA } +10> +11> let {name: nameA, skill: skillA } of robots +12> ) +1->Emitted(35, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(35, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(35, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(35, 6) Source(49, 43) + SourceIndex(0) +5 >Emitted(35, 16) Source(49, 49) + SourceIndex(0) +6 >Emitted(35, 18) Source(49, 43) + SourceIndex(0) +7 >Emitted(35, 35) Source(49, 49) + SourceIndex(0) +8 >Emitted(35, 37) Source(49, 6) + SourceIndex(0) +9 >Emitted(35, 57) Source(49, 39) + SourceIndex(0) +10>Emitted(35, 59) Source(49, 6) + SourceIndex(0) +11>Emitted(35, 63) Source(49, 49) + SourceIndex(0) +12>Emitted(35, 64) Source(49, 50) + SourceIndex(0) +--- +>>> var _p = robots_2[_o], nameA = _p.name, skillA = _p.skill; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +1 > +2 > let { +3 > name: nameA +4 > , +5 > skill: skillA +1 >Emitted(36, 5) Source(49, 6) + SourceIndex(0) +2 >Emitted(36, 28) Source(49, 11) + SourceIndex(0) +3 >Emitted(36, 43) Source(49, 22) + SourceIndex(0) +4 >Emitted(36, 45) Source(49, 24) + SourceIndex(0) +5 >Emitted(36, 62) Source(49, 37) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(37, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(37, 22) Source(50, 22) + SourceIndex(0) +7 >Emitted(37, 23) Source(50, 23) + SourceIndex(0) +8 >Emitted(37, 24) Source(50, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(38, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for (var _q = 0, _r = getRobots(); _q < _r.length; _q++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA, skill: skillA } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> let {name: nameA, skill: skillA } +12> +13> let {name: nameA, skill: skillA } of getRobots() +14> ) +1->Emitted(39, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(52, 43) + SourceIndex(0) +5 >Emitted(39, 16) Source(52, 54) + SourceIndex(0) +6 >Emitted(39, 18) Source(52, 43) + SourceIndex(0) +7 >Emitted(39, 23) Source(52, 43) + SourceIndex(0) +8 >Emitted(39, 32) Source(52, 52) + SourceIndex(0) +9 >Emitted(39, 34) Source(52, 54) + SourceIndex(0) +10>Emitted(39, 36) Source(52, 6) + SourceIndex(0) +11>Emitted(39, 50) Source(52, 39) + SourceIndex(0) +12>Emitted(39, 52) Source(52, 6) + SourceIndex(0) +13>Emitted(39, 56) Source(52, 54) + SourceIndex(0) +14>Emitted(39, 57) Source(52, 55) + SourceIndex(0) +--- +>>> var _s = _r[_q], nameA = _s.name, skillA = _s.skill; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +1-> +2 > let { +3 > name: nameA +4 > , +5 > skill: skillA +1->Emitted(40, 5) Source(52, 6) + SourceIndex(0) +2 >Emitted(40, 22) Source(52, 11) + SourceIndex(0) +3 >Emitted(40, 37) Source(52, 22) + SourceIndex(0) +4 >Emitted(40, 39) Source(52, 24) + SourceIndex(0) +5 >Emitted(40, 56) Source(52, 37) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(41, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(41, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(41, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(41, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(41, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(41, 22) Source(53, 22) + SourceIndex(0) +7 >Emitted(41, 23) Source(53, 23) + SourceIndex(0) +8 >Emitted(41, 24) Source(53, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(42, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for (var _t = 0, _u = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _t < _u.length; _t++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > (let {name: nameA, skill: skillA } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> let {name: nameA, skill: skillA } +30> +31> let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(43, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(43, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(43, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(43, 6) Source(55, 43) + SourceIndex(0) +5 >Emitted(43, 16) Source(55, 119) + SourceIndex(0) +6 >Emitted(43, 18) Source(55, 43) + SourceIndex(0) +7 >Emitted(43, 24) Source(55, 44) + SourceIndex(0) +8 >Emitted(43, 26) Source(55, 46) + SourceIndex(0) +9 >Emitted(43, 30) Source(55, 50) + SourceIndex(0) +10>Emitted(43, 32) Source(55, 52) + SourceIndex(0) +11>Emitted(43, 39) Source(55, 59) + SourceIndex(0) +12>Emitted(43, 41) Source(55, 61) + SourceIndex(0) +13>Emitted(43, 46) Source(55, 66) + SourceIndex(0) +14>Emitted(43, 48) Source(55, 68) + SourceIndex(0) +15>Emitted(43, 56) Source(55, 76) + SourceIndex(0) +16>Emitted(43, 58) Source(55, 78) + SourceIndex(0) +17>Emitted(43, 60) Source(55, 80) + SourceIndex(0) +18>Emitted(43, 62) Source(55, 82) + SourceIndex(0) +19>Emitted(43, 66) Source(55, 86) + SourceIndex(0) +20>Emitted(43, 68) Source(55, 88) + SourceIndex(0) +21>Emitted(43, 77) Source(55, 97) + SourceIndex(0) +22>Emitted(43, 79) Source(55, 99) + SourceIndex(0) +23>Emitted(43, 84) Source(55, 104) + SourceIndex(0) +24>Emitted(43, 86) Source(55, 106) + SourceIndex(0) +25>Emitted(43, 96) Source(55, 116) + SourceIndex(0) +26>Emitted(43, 98) Source(55, 118) + SourceIndex(0) +27>Emitted(43, 99) Source(55, 119) + SourceIndex(0) +28>Emitted(43, 101) Source(55, 6) + SourceIndex(0) +29>Emitted(43, 115) Source(55, 39) + SourceIndex(0) +30>Emitted(43, 117) Source(55, 6) + SourceIndex(0) +31>Emitted(43, 121) Source(55, 119) + SourceIndex(0) +32>Emitted(43, 122) Source(55, 120) + SourceIndex(0) +--- +>>> var _v = _u[_t], nameA = _v.name, skillA = _v.skill; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +1 > +2 > let { +3 > name: nameA +4 > , +5 > skill: skillA +1 >Emitted(44, 5) Source(55, 6) + SourceIndex(0) +2 >Emitted(44, 22) Source(55, 11) + SourceIndex(0) +3 >Emitted(44, 37) Source(55, 22) + SourceIndex(0) +4 >Emitted(44, 39) Source(55, 24) + SourceIndex(0) +5 >Emitted(44, 56) Source(55, 37) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(45, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(45, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(45, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(45, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(45, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(45, 22) Source(56, 22) + SourceIndex(0) +7 >Emitted(45, 23) Source(56, 23) + SourceIndex(0) +8 >Emitted(45, 24) Source(56, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(46, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for (var _w = 0, multiRobots_2 = multiRobots; _w < multiRobots_2.length; _w++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +10> +11> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots +12> ) +1->Emitted(47, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(47, 4) Source(58, 4) + SourceIndex(0) +3 >Emitted(47, 5) Source(58, 5) + SourceIndex(0) +4 >Emitted(47, 6) Source(58, 82) + SourceIndex(0) +5 >Emitted(47, 16) Source(58, 93) + SourceIndex(0) +6 >Emitted(47, 18) Source(58, 82) + SourceIndex(0) +7 >Emitted(47, 45) Source(58, 93) + SourceIndex(0) +8 >Emitted(47, 47) Source(58, 6) + SourceIndex(0) +9 >Emitted(47, 72) Source(58, 78) + SourceIndex(0) +10>Emitted(47, 74) Source(58, 6) + SourceIndex(0) +11>Emitted(47, 78) Source(58, 93) + SourceIndex(0) +12>Emitted(47, 79) Source(58, 94) + SourceIndex(0) +--- +>>> var _x = multiRobots_2[_w], nameA = _x.name, _y = _x.skills, primaryA = _y.primary, secondaryA = _y.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { +3 > name: nameA +4 > , +5 > skills +6 > : { +7 > primary: primaryA +8 > , +9 > secondary: secondaryA +1->Emitted(48, 5) Source(58, 6) + SourceIndex(0) +2 >Emitted(48, 33) Source(58, 11) + SourceIndex(0) +3 >Emitted(48, 48) Source(58, 22) + SourceIndex(0) +4 >Emitted(48, 50) Source(58, 24) + SourceIndex(0) +5 >Emitted(48, 64) Source(58, 30) + SourceIndex(0) +6 >Emitted(48, 66) Source(58, 34) + SourceIndex(0) +7 >Emitted(48, 87) Source(58, 51) + SourceIndex(0) +8 >Emitted(48, 89) Source(58, 53) + SourceIndex(0) +9 >Emitted(48, 114) Source(58, 74) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(49, 5) Source(59, 5) + SourceIndex(0) +2 >Emitted(49, 12) Source(59, 12) + SourceIndex(0) +3 >Emitted(49, 13) Source(59, 13) + SourceIndex(0) +4 >Emitted(49, 16) Source(59, 16) + SourceIndex(0) +5 >Emitted(49, 17) Source(59, 17) + SourceIndex(0) +6 >Emitted(49, 22) Source(59, 22) + SourceIndex(0) +7 >Emitted(49, 23) Source(59, 23) + SourceIndex(0) +8 >Emitted(49, 24) Source(59, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(50, 2) Source(60, 2) + SourceIndex(0) +--- +>>>for (var _z = 0, _0 = getMultiRobots(); _z < _0.length; _z++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +12> +13> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots() +14> ) +1->Emitted(51, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(51, 4) Source(61, 4) + SourceIndex(0) +3 >Emitted(51, 5) Source(61, 5) + SourceIndex(0) +4 >Emitted(51, 6) Source(61, 82) + SourceIndex(0) +5 >Emitted(51, 16) Source(61, 98) + SourceIndex(0) +6 >Emitted(51, 18) Source(61, 82) + SourceIndex(0) +7 >Emitted(51, 23) Source(61, 82) + SourceIndex(0) +8 >Emitted(51, 37) Source(61, 96) + SourceIndex(0) +9 >Emitted(51, 39) Source(61, 98) + SourceIndex(0) +10>Emitted(51, 41) Source(61, 6) + SourceIndex(0) +11>Emitted(51, 55) Source(61, 78) + SourceIndex(0) +12>Emitted(51, 57) Source(61, 6) + SourceIndex(0) +13>Emitted(51, 61) Source(61, 98) + SourceIndex(0) +14>Emitted(51, 62) Source(61, 99) + SourceIndex(0) +--- +>>> var _1 = _0[_z], nameA = _1.name, _2 = _1.skills, primaryA = _2.primary, secondaryA = _2.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { +3 > name: nameA +4 > , +5 > skills +6 > : { +7 > primary: primaryA +8 > , +9 > secondary: secondaryA +1->Emitted(52, 5) Source(61, 6) + SourceIndex(0) +2 >Emitted(52, 22) Source(61, 11) + SourceIndex(0) +3 >Emitted(52, 37) Source(61, 22) + SourceIndex(0) +4 >Emitted(52, 39) Source(61, 24) + SourceIndex(0) +5 >Emitted(52, 53) Source(61, 30) + SourceIndex(0) +6 >Emitted(52, 55) Source(61, 34) + SourceIndex(0) +7 >Emitted(52, 76) Source(61, 51) + SourceIndex(0) +8 >Emitted(52, 78) Source(61, 53) + SourceIndex(0) +9 >Emitted(52, 103) Source(61, 74) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(53, 5) Source(62, 5) + SourceIndex(0) +2 >Emitted(53, 12) Source(62, 12) + SourceIndex(0) +3 >Emitted(53, 13) Source(62, 13) + SourceIndex(0) +4 >Emitted(53, 16) Source(62, 16) + SourceIndex(0) +5 >Emitted(53, 17) Source(62, 17) + SourceIndex(0) +6 >Emitted(53, 22) Source(62, 22) + SourceIndex(0) +7 >Emitted(53, 23) Source(62, 23) + SourceIndex(0) +8 >Emitted(53, 24) Source(62, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(54, 2) Source(63, 2) + SourceIndex(0) +--- +>>>for (var _3 = 0, _4 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(55, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(55, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(55, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(55, 6) Source(64, 82) + SourceIndex(0) +5 >Emitted(55, 16) Source(65, 79) + SourceIndex(0) +6 >Emitted(55, 18) Source(64, 82) + SourceIndex(0) +7 >Emitted(55, 24) Source(64, 83) + SourceIndex(0) +8 >Emitted(55, 26) Source(64, 85) + SourceIndex(0) +9 >Emitted(55, 30) Source(64, 89) + SourceIndex(0) +10>Emitted(55, 32) Source(64, 91) + SourceIndex(0) +11>Emitted(55, 39) Source(64, 98) + SourceIndex(0) +12>Emitted(55, 41) Source(64, 100) + SourceIndex(0) +13>Emitted(55, 47) Source(64, 106) + SourceIndex(0) +14>Emitted(55, 49) Source(64, 108) + SourceIndex(0) +15>Emitted(55, 51) Source(64, 110) + SourceIndex(0) +16>Emitted(55, 58) Source(64, 117) + SourceIndex(0) +17>Emitted(55, 60) Source(64, 119) + SourceIndex(0) +18>Emitted(55, 68) Source(64, 127) + SourceIndex(0) +19>Emitted(55, 70) Source(64, 129) + SourceIndex(0) +20>Emitted(55, 79) Source(64, 138) + SourceIndex(0) +21>Emitted(55, 81) Source(64, 140) + SourceIndex(0) +22>Emitted(55, 87) Source(64, 146) + SourceIndex(0) +23>Emitted(55, 89) Source(64, 148) + SourceIndex(0) +24>Emitted(55, 91) Source(64, 150) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _3 < _4.length; _3++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^ +24> ^ +25> ^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +22> +23> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(56, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(56, 7) Source(65, 7) + SourceIndex(0) +3 >Emitted(56, 11) Source(65, 11) + SourceIndex(0) +4 >Emitted(56, 13) Source(65, 13) + SourceIndex(0) +5 >Emitted(56, 22) Source(65, 22) + SourceIndex(0) +6 >Emitted(56, 24) Source(65, 24) + SourceIndex(0) +7 >Emitted(56, 30) Source(65, 30) + SourceIndex(0) +8 >Emitted(56, 32) Source(65, 32) + SourceIndex(0) +9 >Emitted(56, 34) Source(65, 34) + SourceIndex(0) +10>Emitted(56, 41) Source(65, 41) + SourceIndex(0) +11>Emitted(56, 43) Source(65, 43) + SourceIndex(0) +12>Emitted(56, 53) Source(65, 53) + SourceIndex(0) +13>Emitted(56, 55) Source(65, 55) + SourceIndex(0) +14>Emitted(56, 64) Source(65, 64) + SourceIndex(0) +15>Emitted(56, 66) Source(65, 66) + SourceIndex(0) +16>Emitted(56, 74) Source(65, 74) + SourceIndex(0) +17>Emitted(56, 76) Source(65, 76) + SourceIndex(0) +18>Emitted(56, 78) Source(65, 78) + SourceIndex(0) +19>Emitted(56, 79) Source(65, 79) + SourceIndex(0) +20>Emitted(56, 81) Source(64, 6) + SourceIndex(0) +21>Emitted(56, 95) Source(64, 78) + SourceIndex(0) +22>Emitted(56, 97) Source(64, 6) + SourceIndex(0) +23>Emitted(56, 101) Source(65, 79) + SourceIndex(0) +24>Emitted(56, 102) Source(65, 80) + SourceIndex(0) +--- +>>> var _5 = _4[_3], nameA = _5.name, _6 = _5.skills, primaryA = _6.primary, secondaryA = _6.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { +3 > name: nameA +4 > , +5 > skills +6 > : { +7 > primary: primaryA +8 > , +9 > secondary: secondaryA +1->Emitted(57, 5) Source(64, 6) + SourceIndex(0) +2 >Emitted(57, 22) Source(64, 11) + SourceIndex(0) +3 >Emitted(57, 37) Source(64, 22) + SourceIndex(0) +4 >Emitted(57, 39) Source(64, 24) + SourceIndex(0) +5 >Emitted(57, 53) Source(64, 30) + SourceIndex(0) +6 >Emitted(57, 55) Source(64, 34) + SourceIndex(0) +7 >Emitted(57, 76) Source(64, 51) + SourceIndex(0) +8 >Emitted(57, 78) Source(64, 53) + SourceIndex(0) +9 >Emitted(57, 103) Source(64, 74) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(58, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(58, 12) Source(66, 12) + SourceIndex(0) +3 >Emitted(58, 13) Source(66, 13) + SourceIndex(0) +4 >Emitted(58, 16) Source(66, 16) + SourceIndex(0) +5 >Emitted(58, 17) Source(66, 17) + SourceIndex(0) +6 >Emitted(58, 22) Source(66, 22) + SourceIndex(0) +7 >Emitted(58, 23) Source(66, 23) + SourceIndex(0) +8 >Emitted(58, 24) Source(66, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(59, 2) Source(67, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols new file mode 100644 index 00000000000..8fef1fabd6d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.symbols @@ -0,0 +1,259 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 10, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 11, 24)) + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 24)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 39)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 60)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 77)) + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 34)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 49)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 59)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 78)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 53)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 79)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 3)) +} + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 22, 1)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 3)) +} + +for (let {name: nameA } of robots) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 28, 10)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 28, 10)) +} +for (let {name: nameA } of getRobots()) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 31, 10)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 31, 10)) +} +for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 29)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 10)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 29)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 44)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 65)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 82)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 34, 10)) +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 37, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 37, 39)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 37, 20)) +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 40, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 40, 39)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 22, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 40, 20)) +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 86)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 96)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 115)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 39)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 71)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 86)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 96)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 115)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 44, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 44, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 44, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 44, 53)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 43, 20)) +} + +for (let {name: nameA, skill: skillA } of robots) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 48, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 48, 22)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 48, 10)) +} +for (let {name: nameA, skill: skillA } of getRobots()) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 51, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 51, 22)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 51, 10)) +} +for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 44)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 10)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 59)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 22)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 44)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 59)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 80)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 97)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 54, 10)) +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 57, 10)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 57, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 57, 51)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 17, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 57, 10)) +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 60, 10)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 60, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 60, 51)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 22, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 60, 10)) +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 83)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 10)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 98)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 108)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 127)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 51)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 83)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 98)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 108)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 127)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 64, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 64, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 64, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 64, 53)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern.ts, 63, 10)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.types new file mode 100644 index 00000000000..17c060225dc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.types @@ -0,0 +1,329 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Robot[] +>Robot : Robot +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + +function getRobots() { +>getRobots : () => Robot[] + + return robots; +>robots : Robot[] +} + +function getMultiRobots() { +>getMultiRobots : () => MultiRobot[] + + return multiRobots; +>multiRobots : MultiRobot[] +} + +for (let {name: nameA } of robots) { +>name : any +>nameA : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA } of getRobots()) { +>name : any +>nameA : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : any +>nameA : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>multiRobots : MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for (let {name: nameA, skill: skillA } of robots) { +>name : any +>nameA : string +>skill : any +>skillA : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skill: skillA } of getRobots()) { +>name : any +>nameA : string +>skill : any +>skillA : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : any +>nameA : string +>skill : any +>skillA : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>name : any +>nameA : string +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>multiRobots : MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>name : any +>nameA : string +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>name : any +>nameA : string +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.ts new file mode 100644 index 00000000000..df822f89bc0 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern.ts @@ -0,0 +1,68 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +for (let {name: nameA } of robots) { + console.log(nameA); +} +for (let {name: nameA } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + +for (let {name: nameA, skill: skillA } of robots) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} \ No newline at end of file From edd55ddf51489db808842a8576dfa479ab37e792 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 13:27:17 -0800 Subject: [PATCH 033/164] Make the source map of "for of" destructuring - object binding pattern better --- src/compiler/emitter.ts | 10 +- ...tructuringForOfObjectBindingPattern.js.map | 2 +- ...ingForOfObjectBindingPattern.sourcemap.txt | 374 ++++++++++-------- 3 files changed, 212 insertions(+), 174 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 06272bbb3a7..4487695a2af 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3315,21 +3315,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("; "); // _i < _a.length; - emitStart(node.initializer); + emitStart(node.expression); emitNodeWithoutSourceMap(counter); write(" < "); emitNodeWithCommentsAndWithoutSourcemap(rhsReference); write(".length"); - emitEnd(node.initializer); + emitEnd(node.expression); write("; "); // _i++) - emitStart(node.initializer); + emitStart(node.expression); emitNodeWithoutSourceMap(counter); write("++"); - emitEnd(node.initializer); + emitEnd(node.expression); emitToken(SyntaxKind.CloseParenToken, node.expression.end); // Body @@ -3339,7 +3339,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // Initialize LHS // let v = _a[_i]; - const rhsIterationValue = createElementAccessExpression(rhsReference, counter); + const rhsIterationValue = createElementAccessExpression(rhsReference, counter, node.initializer); emitStart(node.initializer); if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { write("var "); diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map index 3f8182d4376..12bfa47171a 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt index 42b9853cc09..513ff6ea2a9 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt @@ -331,9 +331,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > 7 > robots 8 > -9 > let {name: nameA } +9 > robots 10> -11> let {name: nameA } of robots +11> robots 12> ) 1->Emitted(10, 1) Source(29, 1) + SourceIndex(0) 2 >Emitted(10, 4) Source(29, 4) + SourceIndex(0) @@ -342,9 +342,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 5 >Emitted(10, 16) Source(29, 34) + SourceIndex(0) 6 >Emitted(10, 18) Source(29, 28) + SourceIndex(0) 7 >Emitted(10, 35) Source(29, 34) + SourceIndex(0) -8 >Emitted(10, 37) Source(29, 6) + SourceIndex(0) -9 >Emitted(10, 57) Source(29, 24) + SourceIndex(0) -10>Emitted(10, 59) Source(29, 6) + SourceIndex(0) +8 >Emitted(10, 37) Source(29, 28) + SourceIndex(0) +9 >Emitted(10, 57) Source(29, 34) + SourceIndex(0) +10>Emitted(10, 59) Source(29, 28) + SourceIndex(0) 11>Emitted(10, 63) Source(29, 34) + SourceIndex(0) 12>Emitted(10, 64) Source(29, 35) + SourceIndex(0) --- @@ -419,9 +419,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 8 > getRobots 9 > () 10> -11> let {name: nameA } +11> getRobots() 12> -13> let {name: nameA } of getRobots() +13> getRobots() 14> ) 1->Emitted(14, 1) Source(32, 1) + SourceIndex(0) 2 >Emitted(14, 4) Source(32, 4) + SourceIndex(0) @@ -432,9 +432,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 7 >Emitted(14, 23) Source(32, 28) + SourceIndex(0) 8 >Emitted(14, 32) Source(32, 37) + SourceIndex(0) 9 >Emitted(14, 34) Source(32, 39) + SourceIndex(0) -10>Emitted(14, 36) Source(32, 6) + SourceIndex(0) -11>Emitted(14, 50) Source(32, 24) + SourceIndex(0) -12>Emitted(14, 52) Source(32, 6) + SourceIndex(0) +10>Emitted(14, 36) Source(32, 28) + SourceIndex(0) +11>Emitted(14, 50) Source(32, 39) + SourceIndex(0) +12>Emitted(14, 52) Source(32, 28) + SourceIndex(0) 13>Emitted(14, 56) Source(32, 39) + SourceIndex(0) 14>Emitted(14, 57) Source(32, 40) + SourceIndex(0) --- @@ -545,9 +545,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 26> } 27> ] 28> -29> let {name: nameA } +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] 30> -31> let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] 32> ) 1->Emitted(18, 1) Source(35, 1) + SourceIndex(0) 2 >Emitted(18, 4) Source(35, 4) + SourceIndex(0) @@ -576,9 +576,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 25>Emitted(18, 96) Source(35, 101) + SourceIndex(0) 26>Emitted(18, 98) Source(35, 103) + SourceIndex(0) 27>Emitted(18, 99) Source(35, 104) + SourceIndex(0) -28>Emitted(18, 101) Source(35, 6) + SourceIndex(0) -29>Emitted(18, 115) Source(35, 24) + SourceIndex(0) -30>Emitted(18, 117) Source(35, 6) + SourceIndex(0) +28>Emitted(18, 101) Source(35, 28) + SourceIndex(0) +29>Emitted(18, 115) Source(35, 104) + SourceIndex(0) +30>Emitted(18, 117) Source(35, 28) + SourceIndex(0) 31>Emitted(18, 121) Source(35, 104) + SourceIndex(0) 32>Emitted(18, 122) Source(35, 105) + SourceIndex(0) --- @@ -650,9 +650,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > 7 > multiRobots 8 > -9 > let { skills: { primary: primaryA, secondary: secondaryA } } +9 > multiRobots 10> -11> let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots +11> multiRobots 12> ) 1->Emitted(22, 1) Source(38, 1) + SourceIndex(0) 2 >Emitted(22, 4) Source(38, 4) + SourceIndex(0) @@ -661,9 +661,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 5 >Emitted(22, 16) Source(38, 81) + SourceIndex(0) 6 >Emitted(22, 18) Source(38, 70) + SourceIndex(0) 7 >Emitted(22, 45) Source(38, 81) + SourceIndex(0) -8 >Emitted(22, 47) Source(38, 6) + SourceIndex(0) -9 >Emitted(22, 72) Source(38, 66) + SourceIndex(0) -10>Emitted(22, 74) Source(38, 6) + SourceIndex(0) +8 >Emitted(22, 47) Source(38, 70) + SourceIndex(0) +9 >Emitted(22, 72) Source(38, 81) + SourceIndex(0) +10>Emitted(22, 74) Source(38, 70) + SourceIndex(0) 11>Emitted(22, 78) Source(38, 81) + SourceIndex(0) 12>Emitted(22, 79) Source(38, 82) + SourceIndex(0) --- @@ -751,9 +751,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 8 > getMultiRobots 9 > () 10> -11> let { skills: { primary: primaryA, secondary: secondaryA } } +11> getMultiRobots() 12> -13> let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots() +13> getMultiRobots() 14> ) 1->Emitted(26, 1) Source(41, 1) + SourceIndex(0) 2 >Emitted(26, 4) Source(41, 4) + SourceIndex(0) @@ -764,9 +764,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 7 >Emitted(26, 23) Source(41, 70) + SourceIndex(0) 8 >Emitted(26, 37) Source(41, 84) + SourceIndex(0) 9 >Emitted(26, 39) Source(41, 86) + SourceIndex(0) -10>Emitted(26, 41) Source(41, 6) + SourceIndex(0) -11>Emitted(26, 55) Source(41, 66) + SourceIndex(0) -12>Emitted(26, 57) Source(41, 6) + SourceIndex(0) +10>Emitted(26, 41) Source(41, 70) + SourceIndex(0) +11>Emitted(26, 55) Source(41, 86) + SourceIndex(0) +12>Emitted(26, 57) Source(41, 70) + SourceIndex(0) 13>Emitted(26, 61) Source(41, 86) + SourceIndex(0) 14>Emitted(26, 62) Source(41, 87) + SourceIndex(0) --- @@ -950,9 +950,10 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 18> } 19> ] 20> -21> let { skills: { primary: primaryA, secondary: secondaryA } } +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] 22> -23> let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] 24> ) 1->Emitted(31, 5) Source(45, 5) + SourceIndex(0) @@ -974,9 +975,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 17>Emitted(31, 76) Source(45, 76) + SourceIndex(0) 18>Emitted(31, 78) Source(45, 78) + SourceIndex(0) 19>Emitted(31, 79) Source(45, 79) + SourceIndex(0) -20>Emitted(31, 81) Source(44, 6) + SourceIndex(0) -21>Emitted(31, 95) Source(44, 66) + SourceIndex(0) -22>Emitted(31, 97) Source(44, 6) + SourceIndex(0) +20>Emitted(31, 81) Source(44, 70) + SourceIndex(0) +21>Emitted(31, 95) Source(45, 79) + SourceIndex(0) +22>Emitted(31, 97) Source(44, 70) + SourceIndex(0) 23>Emitted(31, 101) Source(45, 79) + SourceIndex(0) 24>Emitted(31, 102) Source(45, 80) + SourceIndex(0) --- @@ -1061,9 +1062,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > 7 > robots 8 > -9 > let {name: nameA, skill: skillA } +9 > robots 10> -11> let {name: nameA, skill: skillA } of robots +11> robots 12> ) 1->Emitted(35, 1) Source(49, 1) + SourceIndex(0) 2 >Emitted(35, 4) Source(49, 4) + SourceIndex(0) @@ -1072,28 +1073,34 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 5 >Emitted(35, 16) Source(49, 49) + SourceIndex(0) 6 >Emitted(35, 18) Source(49, 43) + SourceIndex(0) 7 >Emitted(35, 35) Source(49, 49) + SourceIndex(0) -8 >Emitted(35, 37) Source(49, 6) + SourceIndex(0) -9 >Emitted(35, 57) Source(49, 39) + SourceIndex(0) -10>Emitted(35, 59) Source(49, 6) + SourceIndex(0) +8 >Emitted(35, 37) Source(49, 43) + SourceIndex(0) +9 >Emitted(35, 57) Source(49, 49) + SourceIndex(0) +10>Emitted(35, 59) Source(49, 43) + SourceIndex(0) 11>Emitted(35, 63) Source(49, 49) + SourceIndex(0) 12>Emitted(35, 64) Source(49, 50) + SourceIndex(0) --- >>> var _p = robots_2[_o], nameA = _p.name, skillA = _p.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ 1 > -2 > let { -3 > name: nameA -4 > , -5 > skill: skillA +2 > +3 > let {name: nameA, skill: skillA } +4 > +5 > name: nameA +6 > , +7 > skill: skillA 1 >Emitted(36, 5) Source(49, 6) + SourceIndex(0) -2 >Emitted(36, 28) Source(49, 11) + SourceIndex(0) -3 >Emitted(36, 43) Source(49, 22) + SourceIndex(0) -4 >Emitted(36, 45) Source(49, 24) + SourceIndex(0) -5 >Emitted(36, 62) Source(49, 37) + SourceIndex(0) +2 >Emitted(36, 9) Source(49, 6) + SourceIndex(0) +3 >Emitted(36, 26) Source(49, 39) + SourceIndex(0) +4 >Emitted(36, 28) Source(49, 11) + SourceIndex(0) +5 >Emitted(36, 43) Source(49, 22) + SourceIndex(0) +6 >Emitted(36, 45) Source(49, 24) + SourceIndex(0) +7 >Emitted(36, 62) Source(49, 37) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1156,9 +1163,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 8 > getRobots 9 > () 10> -11> let {name: nameA, skill: skillA } +11> getRobots() 12> -13> let {name: nameA, skill: skillA } of getRobots() +13> getRobots() 14> ) 1->Emitted(39, 1) Source(52, 1) + SourceIndex(0) 2 >Emitted(39, 4) Source(52, 4) + SourceIndex(0) @@ -1169,28 +1176,34 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 7 >Emitted(39, 23) Source(52, 43) + SourceIndex(0) 8 >Emitted(39, 32) Source(52, 52) + SourceIndex(0) 9 >Emitted(39, 34) Source(52, 54) + SourceIndex(0) -10>Emitted(39, 36) Source(52, 6) + SourceIndex(0) -11>Emitted(39, 50) Source(52, 39) + SourceIndex(0) -12>Emitted(39, 52) Source(52, 6) + SourceIndex(0) +10>Emitted(39, 36) Source(52, 43) + SourceIndex(0) +11>Emitted(39, 50) Source(52, 54) + SourceIndex(0) +12>Emitted(39, 52) Source(52, 43) + SourceIndex(0) 13>Emitted(39, 56) Source(52, 54) + SourceIndex(0) 14>Emitted(39, 57) Source(52, 55) + SourceIndex(0) --- >>> var _s = _r[_q], nameA = _s.name, skillA = _s.skill; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ 1-> -2 > let { -3 > name: nameA -4 > , -5 > skill: skillA +2 > +3 > let {name: nameA, skill: skillA } +4 > +5 > name: nameA +6 > , +7 > skill: skillA 1->Emitted(40, 5) Source(52, 6) + SourceIndex(0) -2 >Emitted(40, 22) Source(52, 11) + SourceIndex(0) -3 >Emitted(40, 37) Source(52, 22) + SourceIndex(0) -4 >Emitted(40, 39) Source(52, 24) + SourceIndex(0) -5 >Emitted(40, 56) Source(52, 37) + SourceIndex(0) +2 >Emitted(40, 9) Source(52, 6) + SourceIndex(0) +3 >Emitted(40, 20) Source(52, 39) + SourceIndex(0) +4 >Emitted(40, 22) Source(52, 11) + SourceIndex(0) +5 >Emitted(40, 37) Source(52, 22) + SourceIndex(0) +6 >Emitted(40, 39) Source(52, 24) + SourceIndex(0) +7 >Emitted(40, 56) Source(52, 37) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1288,9 +1301,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 26> } 27> ] 28> -29> let {name: nameA, skill: skillA } +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] 30> -31> let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] 32> ) 1->Emitted(43, 1) Source(55, 1) + SourceIndex(0) 2 >Emitted(43, 4) Source(55, 4) + SourceIndex(0) @@ -1319,28 +1332,34 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 25>Emitted(43, 96) Source(55, 116) + SourceIndex(0) 26>Emitted(43, 98) Source(55, 118) + SourceIndex(0) 27>Emitted(43, 99) Source(55, 119) + SourceIndex(0) -28>Emitted(43, 101) Source(55, 6) + SourceIndex(0) -29>Emitted(43, 115) Source(55, 39) + SourceIndex(0) -30>Emitted(43, 117) Source(55, 6) + SourceIndex(0) +28>Emitted(43, 101) Source(55, 43) + SourceIndex(0) +29>Emitted(43, 115) Source(55, 119) + SourceIndex(0) +30>Emitted(43, 117) Source(55, 43) + SourceIndex(0) 31>Emitted(43, 121) Source(55, 119) + SourceIndex(0) 32>Emitted(43, 122) Source(55, 120) + SourceIndex(0) --- >>> var _v = _u[_t], nameA = _v.name, skillA = _v.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ 1 > -2 > let { -3 > name: nameA -4 > , -5 > skill: skillA +2 > +3 > let {name: nameA, skill: skillA } +4 > +5 > name: nameA +6 > , +7 > skill: skillA 1 >Emitted(44, 5) Source(55, 6) + SourceIndex(0) -2 >Emitted(44, 22) Source(55, 11) + SourceIndex(0) -3 >Emitted(44, 37) Source(55, 22) + SourceIndex(0) -4 >Emitted(44, 39) Source(55, 24) + SourceIndex(0) -5 >Emitted(44, 56) Source(55, 37) + SourceIndex(0) +2 >Emitted(44, 9) Source(55, 6) + SourceIndex(0) +3 >Emitted(44, 20) Source(55, 39) + SourceIndex(0) +4 >Emitted(44, 22) Source(55, 11) + SourceIndex(0) +5 >Emitted(44, 37) Source(55, 22) + SourceIndex(0) +6 >Emitted(44, 39) Source(55, 24) + SourceIndex(0) +7 >Emitted(44, 56) Source(55, 37) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1399,9 +1418,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > 7 > multiRobots 8 > -9 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +9 > multiRobots 10> -11> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots +11> multiRobots 12> ) 1->Emitted(47, 1) Source(58, 1) + SourceIndex(0) 2 >Emitted(47, 4) Source(58, 4) + SourceIndex(0) @@ -1410,40 +1429,46 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 5 >Emitted(47, 16) Source(58, 93) + SourceIndex(0) 6 >Emitted(47, 18) Source(58, 82) + SourceIndex(0) 7 >Emitted(47, 45) Source(58, 93) + SourceIndex(0) -8 >Emitted(47, 47) Source(58, 6) + SourceIndex(0) -9 >Emitted(47, 72) Source(58, 78) + SourceIndex(0) -10>Emitted(47, 74) Source(58, 6) + SourceIndex(0) +8 >Emitted(47, 47) Source(58, 82) + SourceIndex(0) +9 >Emitted(47, 72) Source(58, 93) + SourceIndex(0) +10>Emitted(47, 74) Source(58, 82) + SourceIndex(0) 11>Emitted(47, 78) Source(58, 93) + SourceIndex(0) 12>Emitted(47, 79) Source(58, 94) + SourceIndex(0) --- >>> var _x = multiRobots_2[_w], nameA = _x.name, _y = _x.skills, primaryA = _y.primary, secondaryA = _y.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > let { -3 > name: nameA -4 > , -5 > skills -6 > : { -7 > primary: primaryA -8 > , -9 > secondary: secondaryA +2 > +3 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +4 > +5 > name: nameA +6 > , +7 > skills +8 > : { +9 > primary: primaryA +10> , +11> secondary: secondaryA 1->Emitted(48, 5) Source(58, 6) + SourceIndex(0) -2 >Emitted(48, 33) Source(58, 11) + SourceIndex(0) -3 >Emitted(48, 48) Source(58, 22) + SourceIndex(0) -4 >Emitted(48, 50) Source(58, 24) + SourceIndex(0) -5 >Emitted(48, 64) Source(58, 30) + SourceIndex(0) -6 >Emitted(48, 66) Source(58, 34) + SourceIndex(0) -7 >Emitted(48, 87) Source(58, 51) + SourceIndex(0) -8 >Emitted(48, 89) Source(58, 53) + SourceIndex(0) -9 >Emitted(48, 114) Source(58, 74) + SourceIndex(0) +2 >Emitted(48, 9) Source(58, 6) + SourceIndex(0) +3 >Emitted(48, 31) Source(58, 78) + SourceIndex(0) +4 >Emitted(48, 33) Source(58, 11) + SourceIndex(0) +5 >Emitted(48, 48) Source(58, 22) + SourceIndex(0) +6 >Emitted(48, 50) Source(58, 24) + SourceIndex(0) +7 >Emitted(48, 64) Source(58, 30) + SourceIndex(0) +8 >Emitted(48, 66) Source(58, 34) + SourceIndex(0) +9 >Emitted(48, 87) Source(58, 51) + SourceIndex(0) +10>Emitted(48, 89) Source(58, 53) + SourceIndex(0) +11>Emitted(48, 114) Source(58, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1506,9 +1531,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 8 > getMultiRobots 9 > () 10> -11> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +11> getMultiRobots() 12> -13> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots() +13> getMultiRobots() 14> ) 1->Emitted(51, 1) Source(61, 1) + SourceIndex(0) 2 >Emitted(51, 4) Source(61, 4) + SourceIndex(0) @@ -1519,40 +1544,46 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 7 >Emitted(51, 23) Source(61, 82) + SourceIndex(0) 8 >Emitted(51, 37) Source(61, 96) + SourceIndex(0) 9 >Emitted(51, 39) Source(61, 98) + SourceIndex(0) -10>Emitted(51, 41) Source(61, 6) + SourceIndex(0) -11>Emitted(51, 55) Source(61, 78) + SourceIndex(0) -12>Emitted(51, 57) Source(61, 6) + SourceIndex(0) +10>Emitted(51, 41) Source(61, 82) + SourceIndex(0) +11>Emitted(51, 55) Source(61, 98) + SourceIndex(0) +12>Emitted(51, 57) Source(61, 82) + SourceIndex(0) 13>Emitted(51, 61) Source(61, 98) + SourceIndex(0) 14>Emitted(51, 62) Source(61, 99) + SourceIndex(0) --- >>> var _1 = _0[_z], nameA = _1.name, _2 = _1.skills, primaryA = _2.primary, secondaryA = _2.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > let { -3 > name: nameA -4 > , -5 > skills -6 > : { -7 > primary: primaryA -8 > , -9 > secondary: secondaryA +2 > +3 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +4 > +5 > name: nameA +6 > , +7 > skills +8 > : { +9 > primary: primaryA +10> , +11> secondary: secondaryA 1->Emitted(52, 5) Source(61, 6) + SourceIndex(0) -2 >Emitted(52, 22) Source(61, 11) + SourceIndex(0) -3 >Emitted(52, 37) Source(61, 22) + SourceIndex(0) -4 >Emitted(52, 39) Source(61, 24) + SourceIndex(0) -5 >Emitted(52, 53) Source(61, 30) + SourceIndex(0) -6 >Emitted(52, 55) Source(61, 34) + SourceIndex(0) -7 >Emitted(52, 76) Source(61, 51) + SourceIndex(0) -8 >Emitted(52, 78) Source(61, 53) + SourceIndex(0) -9 >Emitted(52, 103) Source(61, 74) + SourceIndex(0) +2 >Emitted(52, 9) Source(61, 6) + SourceIndex(0) +3 >Emitted(52, 20) Source(61, 78) + SourceIndex(0) +4 >Emitted(52, 22) Source(61, 11) + SourceIndex(0) +5 >Emitted(52, 37) Source(61, 22) + SourceIndex(0) +6 >Emitted(52, 39) Source(61, 24) + SourceIndex(0) +7 >Emitted(52, 53) Source(61, 30) + SourceIndex(0) +8 >Emitted(52, 55) Source(61, 34) + SourceIndex(0) +9 >Emitted(52, 76) Source(61, 51) + SourceIndex(0) +10>Emitted(52, 78) Source(61, 53) + SourceIndex(0) +11>Emitted(52, 103) Source(61, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1712,9 +1743,10 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 18> } 19> ] 20> -21> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] 22> -23> let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] 24> ) 1->Emitted(56, 5) Source(65, 5) + SourceIndex(0) @@ -1736,40 +1768,46 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 17>Emitted(56, 76) Source(65, 76) + SourceIndex(0) 18>Emitted(56, 78) Source(65, 78) + SourceIndex(0) 19>Emitted(56, 79) Source(65, 79) + SourceIndex(0) -20>Emitted(56, 81) Source(64, 6) + SourceIndex(0) -21>Emitted(56, 95) Source(64, 78) + SourceIndex(0) -22>Emitted(56, 97) Source(64, 6) + SourceIndex(0) +20>Emitted(56, 81) Source(64, 82) + SourceIndex(0) +21>Emitted(56, 95) Source(65, 79) + SourceIndex(0) +22>Emitted(56, 97) Source(64, 82) + SourceIndex(0) 23>Emitted(56, 101) Source(65, 79) + SourceIndex(0) 24>Emitted(56, 102) Source(65, 80) + SourceIndex(0) --- >>> var _5 = _4[_3], nameA = _5.name, _6 = _5.skills, primaryA = _6.primary, secondaryA = _6.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > let { -3 > name: nameA -4 > , -5 > skills -6 > : { -7 > primary: primaryA -8 > , -9 > secondary: secondaryA +2 > +3 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +4 > +5 > name: nameA +6 > , +7 > skills +8 > : { +9 > primary: primaryA +10> , +11> secondary: secondaryA 1->Emitted(57, 5) Source(64, 6) + SourceIndex(0) -2 >Emitted(57, 22) Source(64, 11) + SourceIndex(0) -3 >Emitted(57, 37) Source(64, 22) + SourceIndex(0) -4 >Emitted(57, 39) Source(64, 24) + SourceIndex(0) -5 >Emitted(57, 53) Source(64, 30) + SourceIndex(0) -6 >Emitted(57, 55) Source(64, 34) + SourceIndex(0) -7 >Emitted(57, 76) Source(64, 51) + SourceIndex(0) -8 >Emitted(57, 78) Source(64, 53) + SourceIndex(0) -9 >Emitted(57, 103) Source(64, 74) + SourceIndex(0) +2 >Emitted(57, 9) Source(64, 6) + SourceIndex(0) +3 >Emitted(57, 20) Source(64, 78) + SourceIndex(0) +4 >Emitted(57, 22) Source(64, 11) + SourceIndex(0) +5 >Emitted(57, 37) Source(64, 22) + SourceIndex(0) +6 >Emitted(57, 39) Source(64, 24) + SourceIndex(0) +7 >Emitted(57, 53) Source(64, 30) + SourceIndex(0) +8 >Emitted(57, 55) Source(64, 34) + SourceIndex(0) +9 >Emitted(57, 76) Source(64, 51) + SourceIndex(0) +10>Emitted(57, 78) Source(64, 53) + SourceIndex(0) +11>Emitted(57, 103) Source(64, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ From d8701c437cc8d8d22dd7763ca47c814375d37677 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 14:12:04 -0800 Subject: [PATCH 034/164] Test case for For Of statement with array binding pattern --- ...onDestructuringForOfArrayBindingPattern.js | 207 ++ ...structuringForOfArrayBindingPattern.js.map | 2 + ...ringForOfArrayBindingPattern.sourcemap.txt | 2733 +++++++++++++++++ ...tructuringForOfArrayBindingPattern.symbols | 323 ++ ...estructuringForOfArrayBindingPattern.types | 389 +++ ...onDestructuringForOfArrayBindingPattern.ts | 96 + 6 files changed, 3750 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js new file mode 100644 index 00000000000..daf39ece7be --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js @@ -0,0 +1,207 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPattern.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +for (let [, nameA] of robots) { + console.log(nameA); +} +for (let [, nameA] of getRobots()) { + console.log(nameA); +} +for (let [, nameA] of [robotA, robotB]) { + console.log(nameA); +} +for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for (let [numberB] of robots) { + console.log(numberB); +} +for (let [numberB] of getRobots()) { + console.log(numberB); +} +for (let [numberB] of [robotA, robotB]) { + console.log(numberB); +} +for (let [nameB] of multiRobots) { + console.log(nameB); +} +for (let [nameB] of getMultiRobots()) { + console.log(nameB); +} +for (let [nameB] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for (let [numberA2, nameA2, skillA2] of robots) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] of getRobots()) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + console.log(nameA2); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for (let [numberA3, ...robotAInfo] of robots) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} +for (let [...multiRobotAInfo] of multiRobots) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] of getMultiRobots()) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + console.log(multiRobotAInfo); +} + +//// [sourceMapValidationDestructuringForOfArrayBindingPattern.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var robots = [robotA, robotB]; +function getRobots() { + return robots; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + var _a = robots_1[_i], nameA = _a[1]; + console.log(nameA); +} +for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { + var _d = _c[_b], nameA = _d[1]; + console.log(nameA); +} +for (var _e = 0, _f = [robotA, robotB]; _e < _f.length; _e++) { + var _g = _f[_e], nameA = _g[1]; + console.log(nameA); +} +for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { + var _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; + console.log(primarySkillA); +} +for (var _l = 0, _m = getMultiRobots(); _l < _m.length; _l++) { + var _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; + console.log(primarySkillA); +} +for (var _q = 0, _r = [multiRobotA, multiRobotB]; _q < _r.length; _q++) { + var _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; + console.log(primarySkillA); +} +for (var _u = 0, robots_2 = robots; _u < robots_2.length; _u++) { + var numberB = robots_2[_u][0]; + console.log(numberB); +} +for (var _v = 0, _w = getRobots(); _v < _w.length; _v++) { + var numberB = _w[_v][0]; + console.log(numberB); +} +for (var _x = 0, _y = [robotA, robotB]; _x < _y.length; _x++) { + var numberB = _y[_x][0]; + console.log(numberB); +} +for (var _z = 0, multiRobots_2 = multiRobots; _z < multiRobots_2.length; _z++) { + var nameB = multiRobots_2[_z][0]; + console.log(nameB); +} +for (var _0 = 0, _1 = getMultiRobots(); _0 < _1.length; _0++) { + var nameB = _1[_0][0]; + console.log(nameB); +} +for (var _2 = 0, _3 = [multiRobotA, multiRobotB]; _2 < _3.length; _2++) { + var nameB = _3[_2][0]; + console.log(nameB); +} +for (var _4 = 0, robots_3 = robots; _4 < robots_3.length; _4++) { + var _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; + console.log(nameA2); +} +for (var _6 = 0, _7 = getRobots(); _6 < _7.length; _6++) { + var _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; + console.log(nameA2); +} +for (var _9 = 0, _10 = [robotA, robotB]; _9 < _10.length; _9++) { + var _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; + console.log(nameA2); +} +for (var _12 = 0, multiRobots_3 = multiRobots; _12 < multiRobots_3.length; _12++) { + var _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; + console.log(nameMA); +} +for (var _15 = 0, _16 = getMultiRobots(); _15 < _16.length; _15++) { + var _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; + console.log(nameMA); +} +for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { + var _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; + console.log(nameMA); +} +for (var _23 = 0, robots_4 = robots; _23 < robots_4.length; _23++) { + var _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); + console.log(numberA3); +} +for (var _25 = 0, _26 = getRobots(); _25 < _26.length; _25++) { + var _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); + console.log(numberA3); +} +for (var _28 = 0, _29 = [robotA, robotB]; _28 < _29.length; _28++) { + var _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); + console.log(numberA3); +} +for (var _31 = 0, multiRobots_4 = multiRobots; _31 < multiRobots_4.length; _31++) { + var multiRobotAInfo = multiRobots_4[_31].slice(0); + console.log(multiRobotAInfo); +} +for (var _32 = 0, _33 = getMultiRobots(); _32 < _33.length; _32++) { + var multiRobotAInfo = _33[_32].slice(0); + console.log(multiRobotAInfo); +} +for (var _34 = 0, _35 = [multiRobotA, multiRobotB]; _34 < _35.length; _34++) { + var multiRobotAInfo = _35[_34].slice(0); + console.log(multiRobotAInfo); +} +//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map new file mode 100644 index 00000000000..a49d45f78b8 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..4ca415fdaee --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt @@ -0,0 +1,2733 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfArrayBindingPattern.js +mapUrl: sourceMapValidationDestructuringForOfArrayBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfArrayBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.js +sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +1-> + > +2 >let +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(8, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(8, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(8, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(8, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(8, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(8, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(8, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(8, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(8, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(8, 48) + SourceIndex(0) +--- +>>>var robots = [robotA, robotB]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^^ +8 > ^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > robots +4 > = +5 > [ +6 > robotA +7 > , +8 > robotB +9 > ] +10> ; +1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(9, 14) + SourceIndex(0) +5 >Emitted(3, 15) Source(9, 15) + SourceIndex(0) +6 >Emitted(3, 21) Source(9, 21) + SourceIndex(0) +7 >Emitted(3, 23) Source(9, 23) + SourceIndex(0) +8 >Emitted(3, 29) Source(9, 29) + SourceIndex(0) +9 >Emitted(3, 30) Source(9, 30) + SourceIndex(0) +10>Emitted(3, 31) Source(9, 31) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(11, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(11, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) +3 >Emitted(7, 16) Source(14, 16) + SourceIndex(0) +4 >Emitted(7, 19) Source(14, 38) + SourceIndex(0) +5 >Emitted(7, 20) Source(14, 39) + SourceIndex(0) +6 >Emitted(7, 27) Source(14, 46) + SourceIndex(0) +7 >Emitted(7, 29) Source(14, 48) + SourceIndex(0) +8 >Emitted(7, 30) Source(14, 49) + SourceIndex(0) +9 >Emitted(7, 38) Source(14, 57) + SourceIndex(0) +10>Emitted(7, 40) Source(14, 59) + SourceIndex(0) +11>Emitted(7, 42) Source(14, 61) + SourceIndex(0) +12>Emitted(7, 43) Source(14, 62) + SourceIndex(0) +13>Emitted(7, 44) Source(14, 63) + SourceIndex(0) +14>Emitted(7, 45) Source(14, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(8, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(8, 16) Source(15, 16) + SourceIndex(0) +4 >Emitted(8, 19) Source(15, 38) + SourceIndex(0) +5 >Emitted(8, 20) Source(15, 39) + SourceIndex(0) +6 >Emitted(8, 29) Source(15, 48) + SourceIndex(0) +7 >Emitted(8, 31) Source(15, 50) + SourceIndex(0) +8 >Emitted(8, 32) Source(15, 51) + SourceIndex(0) +9 >Emitted(8, 42) Source(15, 61) + SourceIndex(0) +10>Emitted(8, 44) Source(15, 63) + SourceIndex(0) +11>Emitted(8, 52) Source(15, 71) + SourceIndex(0) +12>Emitted(8, 53) Source(15, 72) + SourceIndex(0) +13>Emitted(8, 54) Source(15, 73) + SourceIndex(0) +14>Emitted(8, 55) Source(15, 74) + SourceIndex(0) +--- +>>>var multiRobots = [multiRobotA, multiRobotB]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > multiRobots +4 > = +5 > [ +6 > multiRobotA +7 > , +8 > multiRobotB +9 > ] +10> ; +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(16, 5) + SourceIndex(0) +3 >Emitted(9, 16) Source(16, 16) + SourceIndex(0) +4 >Emitted(9, 19) Source(16, 19) + SourceIndex(0) +5 >Emitted(9, 20) Source(16, 20) + SourceIndex(0) +6 >Emitted(9, 31) Source(16, 31) + SourceIndex(0) +7 >Emitted(9, 33) Source(16, 33) + SourceIndex(0) +8 >Emitted(9, 44) Source(16, 44) + SourceIndex(0) +9 >Emitted(9, 45) Source(16, 45) + SourceIndex(0) +10>Emitted(9, 46) Source(16, 46) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(10, 1) Source(17, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(11, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(11, 11) Source(18, 11) + SourceIndex(0) +3 >Emitted(11, 12) Source(18, 12) + SourceIndex(0) +4 >Emitted(11, 23) Source(18, 23) + SourceIndex(0) +5 >Emitted(11, 24) Source(18, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(19, 2) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > (let [, nameA] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 4) Source(21, 4) + SourceIndex(0) +3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +4 >Emitted(13, 6) Source(21, 23) + SourceIndex(0) +5 >Emitted(13, 16) Source(21, 29) + SourceIndex(0) +6 >Emitted(13, 18) Source(21, 23) + SourceIndex(0) +7 >Emitted(13, 35) Source(21, 29) + SourceIndex(0) +8 >Emitted(13, 37) Source(21, 23) + SourceIndex(0) +9 >Emitted(13, 57) Source(21, 29) + SourceIndex(0) +10>Emitted(13, 59) Source(21, 23) + SourceIndex(0) +11>Emitted(13, 63) Source(21, 29) + SourceIndex(0) +12>Emitted(13, 64) Source(21, 30) + SourceIndex(0) +--- +>>> var _a = robots_1[_i], nameA = _a[1]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +1 > +2 > +3 > let [, nameA] +4 > +5 > [, nameA] +1 >Emitted(14, 5) Source(21, 6) + SourceIndex(0) +2 >Emitted(14, 9) Source(21, 6) + SourceIndex(0) +3 >Emitted(14, 26) Source(21, 19) + SourceIndex(0) +4 >Emitted(14, 28) Source(21, 10) + SourceIndex(0) +5 >Emitted(14, 41) Source(21, 19) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(15, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(15, 12) Source(22, 12) + SourceIndex(0) +3 >Emitted(15, 13) Source(22, 13) + SourceIndex(0) +4 >Emitted(15, 16) Source(22, 16) + SourceIndex(0) +5 >Emitted(15, 17) Source(22, 17) + SourceIndex(0) +6 >Emitted(15, 22) Source(22, 22) + SourceIndex(0) +7 >Emitted(15, 23) Source(22, 23) + SourceIndex(0) +8 >Emitted(15, 24) Source(22, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(16, 2) Source(23, 2) + SourceIndex(0) +--- +>>>for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > (let [, nameA] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(17, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(17, 4) Source(24, 4) + SourceIndex(0) +3 >Emitted(17, 5) Source(24, 5) + SourceIndex(0) +4 >Emitted(17, 6) Source(24, 23) + SourceIndex(0) +5 >Emitted(17, 16) Source(24, 34) + SourceIndex(0) +6 >Emitted(17, 18) Source(24, 23) + SourceIndex(0) +7 >Emitted(17, 23) Source(24, 23) + SourceIndex(0) +8 >Emitted(17, 32) Source(24, 32) + SourceIndex(0) +9 >Emitted(17, 34) Source(24, 34) + SourceIndex(0) +10>Emitted(17, 36) Source(24, 23) + SourceIndex(0) +11>Emitted(17, 50) Source(24, 34) + SourceIndex(0) +12>Emitted(17, 52) Source(24, 23) + SourceIndex(0) +13>Emitted(17, 56) Source(24, 34) + SourceIndex(0) +14>Emitted(17, 57) Source(24, 35) + SourceIndex(0) +--- +>>> var _d = _c[_b], nameA = _d[1]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +1 > +2 > +3 > let [, nameA] +4 > +5 > [, nameA] +1 >Emitted(18, 5) Source(24, 6) + SourceIndex(0) +2 >Emitted(18, 9) Source(24, 6) + SourceIndex(0) +3 >Emitted(18, 20) Source(24, 19) + SourceIndex(0) +4 >Emitted(18, 22) Source(24, 10) + SourceIndex(0) +5 >Emitted(18, 35) Source(24, 19) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(25, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(25, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(25, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(25, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(25, 17) + SourceIndex(0) +6 >Emitted(19, 22) Source(25, 22) + SourceIndex(0) +7 >Emitted(19, 23) Source(25, 23) + SourceIndex(0) +8 >Emitted(19, 24) Source(25, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(20, 2) Source(26, 2) + SourceIndex(0) +--- +>>>for (var _e = 0, _f = [robotA, robotB]; _e < _f.length; _e++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > (let [, nameA] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(21, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(27, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(27, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(27, 23) + SourceIndex(0) +5 >Emitted(21, 16) Source(27, 39) + SourceIndex(0) +6 >Emitted(21, 18) Source(27, 23) + SourceIndex(0) +7 >Emitted(21, 24) Source(27, 24) + SourceIndex(0) +8 >Emitted(21, 30) Source(27, 30) + SourceIndex(0) +9 >Emitted(21, 32) Source(27, 32) + SourceIndex(0) +10>Emitted(21, 38) Source(27, 38) + SourceIndex(0) +11>Emitted(21, 39) Source(27, 39) + SourceIndex(0) +12>Emitted(21, 41) Source(27, 23) + SourceIndex(0) +13>Emitted(21, 55) Source(27, 39) + SourceIndex(0) +14>Emitted(21, 57) Source(27, 23) + SourceIndex(0) +15>Emitted(21, 61) Source(27, 39) + SourceIndex(0) +16>Emitted(21, 62) Source(27, 40) + SourceIndex(0) +--- +>>> var _g = _f[_e], nameA = _g[1]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +1 > +2 > +3 > let [, nameA] +4 > +5 > [, nameA] +1 >Emitted(22, 5) Source(27, 6) + SourceIndex(0) +2 >Emitted(22, 9) Source(27, 6) + SourceIndex(0) +3 >Emitted(22, 20) Source(27, 19) + SourceIndex(0) +4 >Emitted(22, 22) Source(27, 10) + SourceIndex(0) +5 >Emitted(22, 35) Source(27, 19) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(23, 5) Source(28, 5) + SourceIndex(0) +2 >Emitted(23, 12) Source(28, 12) + SourceIndex(0) +3 >Emitted(23, 13) Source(28, 13) + SourceIndex(0) +4 >Emitted(23, 16) Source(28, 16) + SourceIndex(0) +5 >Emitted(23, 17) Source(28, 17) + SourceIndex(0) +6 >Emitted(23, 22) Source(28, 22) + SourceIndex(0) +7 >Emitted(23, 23) Source(28, 23) + SourceIndex(0) +8 >Emitted(23, 24) Source(28, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(24, 2) Source(29, 2) + SourceIndex(0) +--- +>>>for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, [primarySkillA, secondarySkillA]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(25, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(25, 4) Source(30, 4) + SourceIndex(0) +3 >Emitted(25, 5) Source(30, 5) + SourceIndex(0) +4 >Emitted(25, 6) Source(30, 50) + SourceIndex(0) +5 >Emitted(25, 16) Source(30, 61) + SourceIndex(0) +6 >Emitted(25, 18) Source(30, 50) + SourceIndex(0) +7 >Emitted(25, 45) Source(30, 61) + SourceIndex(0) +8 >Emitted(25, 47) Source(30, 50) + SourceIndex(0) +9 >Emitted(25, 72) Source(30, 61) + SourceIndex(0) +10>Emitted(25, 74) Source(30, 50) + SourceIndex(0) +11>Emitted(25, 78) Source(30, 61) + SourceIndex(0) +12>Emitted(25, 79) Source(30, 62) + SourceIndex(0) +--- +>>> var _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [, [primarySkillA, secondarySkillA]] +4 > +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA +1->Emitted(26, 5) Source(30, 6) + SourceIndex(0) +2 >Emitted(26, 9) Source(30, 6) + SourceIndex(0) +3 >Emitted(26, 31) Source(30, 46) + SourceIndex(0) +4 >Emitted(26, 33) Source(30, 13) + SourceIndex(0) +5 >Emitted(26, 43) Source(30, 45) + SourceIndex(0) +6 >Emitted(26, 45) Source(30, 14) + SourceIndex(0) +7 >Emitted(26, 66) Source(30, 27) + SourceIndex(0) +8 >Emitted(26, 68) Source(30, 29) + SourceIndex(0) +9 >Emitted(26, 91) Source(30, 44) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(27, 5) Source(31, 5) + SourceIndex(0) +2 >Emitted(27, 12) Source(31, 12) + SourceIndex(0) +3 >Emitted(27, 13) Source(31, 13) + SourceIndex(0) +4 >Emitted(27, 16) Source(31, 16) + SourceIndex(0) +5 >Emitted(27, 17) Source(31, 17) + SourceIndex(0) +6 >Emitted(27, 30) Source(31, 30) + SourceIndex(0) +7 >Emitted(27, 31) Source(31, 31) + SourceIndex(0) +8 >Emitted(27, 32) Source(31, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(28, 2) Source(32, 2) + SourceIndex(0) +--- +>>>for (var _l = 0, _m = getMultiRobots(); _l < _m.length; _l++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, [primarySkillA, secondarySkillA]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(29, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(29, 4) Source(33, 4) + SourceIndex(0) +3 >Emitted(29, 5) Source(33, 5) + SourceIndex(0) +4 >Emitted(29, 6) Source(33, 50) + SourceIndex(0) +5 >Emitted(29, 16) Source(33, 66) + SourceIndex(0) +6 >Emitted(29, 18) Source(33, 50) + SourceIndex(0) +7 >Emitted(29, 23) Source(33, 50) + SourceIndex(0) +8 >Emitted(29, 37) Source(33, 64) + SourceIndex(0) +9 >Emitted(29, 39) Source(33, 66) + SourceIndex(0) +10>Emitted(29, 41) Source(33, 50) + SourceIndex(0) +11>Emitted(29, 55) Source(33, 66) + SourceIndex(0) +12>Emitted(29, 57) Source(33, 50) + SourceIndex(0) +13>Emitted(29, 61) Source(33, 66) + SourceIndex(0) +14>Emitted(29, 62) Source(33, 67) + SourceIndex(0) +--- +>>> var _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [, [primarySkillA, secondarySkillA]] +4 > +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA +1->Emitted(30, 5) Source(33, 6) + SourceIndex(0) +2 >Emitted(30, 9) Source(33, 6) + SourceIndex(0) +3 >Emitted(30, 20) Source(33, 46) + SourceIndex(0) +4 >Emitted(30, 22) Source(33, 13) + SourceIndex(0) +5 >Emitted(30, 32) Source(33, 45) + SourceIndex(0) +6 >Emitted(30, 34) Source(33, 14) + SourceIndex(0) +7 >Emitted(30, 55) Source(33, 27) + SourceIndex(0) +8 >Emitted(30, 57) Source(33, 29) + SourceIndex(0) +9 >Emitted(30, 80) Source(33, 44) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(34, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(34, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(34, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(34, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(34, 17) + SourceIndex(0) +6 >Emitted(31, 30) Source(34, 30) + SourceIndex(0) +7 >Emitted(31, 31) Source(34, 31) + SourceIndex(0) +8 >Emitted(31, 32) Source(34, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(32, 2) Source(35, 2) + SourceIndex(0) +--- +>>>for (var _q = 0, _r = [multiRobotA, multiRobotB]; _q < _r.length; _q++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, [primarySkillA, secondarySkillA]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(33, 1) Source(36, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(36, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(36, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(36, 50) + SourceIndex(0) +5 >Emitted(33, 16) Source(36, 76) + SourceIndex(0) +6 >Emitted(33, 18) Source(36, 50) + SourceIndex(0) +7 >Emitted(33, 24) Source(36, 51) + SourceIndex(0) +8 >Emitted(33, 35) Source(36, 62) + SourceIndex(0) +9 >Emitted(33, 37) Source(36, 64) + SourceIndex(0) +10>Emitted(33, 48) Source(36, 75) + SourceIndex(0) +11>Emitted(33, 49) Source(36, 76) + SourceIndex(0) +12>Emitted(33, 51) Source(36, 50) + SourceIndex(0) +13>Emitted(33, 65) Source(36, 76) + SourceIndex(0) +14>Emitted(33, 67) Source(36, 50) + SourceIndex(0) +15>Emitted(33, 71) Source(36, 76) + SourceIndex(0) +16>Emitted(33, 72) Source(36, 77) + SourceIndex(0) +--- +>>> var _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [, [primarySkillA, secondarySkillA]] +4 > +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA +1->Emitted(34, 5) Source(36, 6) + SourceIndex(0) +2 >Emitted(34, 9) Source(36, 6) + SourceIndex(0) +3 >Emitted(34, 20) Source(36, 46) + SourceIndex(0) +4 >Emitted(34, 22) Source(36, 13) + SourceIndex(0) +5 >Emitted(34, 32) Source(36, 45) + SourceIndex(0) +6 >Emitted(34, 34) Source(36, 14) + SourceIndex(0) +7 >Emitted(34, 55) Source(36, 27) + SourceIndex(0) +8 >Emitted(34, 57) Source(36, 29) + SourceIndex(0) +9 >Emitted(34, 80) Source(36, 44) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(35, 5) Source(37, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(37, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(37, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(37, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(37, 17) + SourceIndex(0) +6 >Emitted(35, 30) Source(37, 30) + SourceIndex(0) +7 >Emitted(35, 31) Source(37, 31) + SourceIndex(0) +8 >Emitted(35, 32) Source(37, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(36, 2) Source(38, 2) + SourceIndex(0) +--- +>>>for (var _u = 0, robots_2 = robots; _u < robots_2.length; _u++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > (let [numberB] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(37, 1) Source(40, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(40, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(40, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(40, 23) + SourceIndex(0) +5 >Emitted(37, 16) Source(40, 29) + SourceIndex(0) +6 >Emitted(37, 18) Source(40, 23) + SourceIndex(0) +7 >Emitted(37, 35) Source(40, 29) + SourceIndex(0) +8 >Emitted(37, 37) Source(40, 23) + SourceIndex(0) +9 >Emitted(37, 57) Source(40, 29) + SourceIndex(0) +10>Emitted(37, 59) Source(40, 23) + SourceIndex(0) +11>Emitted(37, 63) Source(40, 29) + SourceIndex(0) +12>Emitted(37, 64) Source(40, 30) + SourceIndex(0) +--- +>>> var numberB = robots_2[_u][0]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [numberB] +1 >Emitted(38, 5) Source(40, 6) + SourceIndex(0) +2 >Emitted(38, 9) Source(40, 10) + SourceIndex(0) +3 >Emitted(38, 34) Source(40, 19) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(39, 5) Source(41, 5) + SourceIndex(0) +2 >Emitted(39, 12) Source(41, 12) + SourceIndex(0) +3 >Emitted(39, 13) Source(41, 13) + SourceIndex(0) +4 >Emitted(39, 16) Source(41, 16) + SourceIndex(0) +5 >Emitted(39, 17) Source(41, 17) + SourceIndex(0) +6 >Emitted(39, 24) Source(41, 24) + SourceIndex(0) +7 >Emitted(39, 25) Source(41, 25) + SourceIndex(0) +8 >Emitted(39, 26) Source(41, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(40, 2) Source(42, 2) + SourceIndex(0) +--- +>>>for (var _v = 0, _w = getRobots(); _v < _w.length; _v++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > (let [numberB] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(41, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(41, 4) Source(43, 4) + SourceIndex(0) +3 >Emitted(41, 5) Source(43, 5) + SourceIndex(0) +4 >Emitted(41, 6) Source(43, 23) + SourceIndex(0) +5 >Emitted(41, 16) Source(43, 34) + SourceIndex(0) +6 >Emitted(41, 18) Source(43, 23) + SourceIndex(0) +7 >Emitted(41, 23) Source(43, 23) + SourceIndex(0) +8 >Emitted(41, 32) Source(43, 32) + SourceIndex(0) +9 >Emitted(41, 34) Source(43, 34) + SourceIndex(0) +10>Emitted(41, 36) Source(43, 23) + SourceIndex(0) +11>Emitted(41, 50) Source(43, 34) + SourceIndex(0) +12>Emitted(41, 52) Source(43, 23) + SourceIndex(0) +13>Emitted(41, 56) Source(43, 34) + SourceIndex(0) +14>Emitted(41, 57) Source(43, 35) + SourceIndex(0) +--- +>>> var numberB = _w[_v][0]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [numberB] +1 >Emitted(42, 5) Source(43, 6) + SourceIndex(0) +2 >Emitted(42, 9) Source(43, 10) + SourceIndex(0) +3 >Emitted(42, 28) Source(43, 19) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(43, 5) Source(44, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(44, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(44, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(44, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(44, 17) + SourceIndex(0) +6 >Emitted(43, 24) Source(44, 24) + SourceIndex(0) +7 >Emitted(43, 25) Source(44, 25) + SourceIndex(0) +8 >Emitted(43, 26) Source(44, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(44, 2) Source(45, 2) + SourceIndex(0) +--- +>>>for (var _x = 0, _y = [robotA, robotB]; _x < _y.length; _x++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > (let [numberB] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(45, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(46, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(46, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(46, 23) + SourceIndex(0) +5 >Emitted(45, 16) Source(46, 39) + SourceIndex(0) +6 >Emitted(45, 18) Source(46, 23) + SourceIndex(0) +7 >Emitted(45, 24) Source(46, 24) + SourceIndex(0) +8 >Emitted(45, 30) Source(46, 30) + SourceIndex(0) +9 >Emitted(45, 32) Source(46, 32) + SourceIndex(0) +10>Emitted(45, 38) Source(46, 38) + SourceIndex(0) +11>Emitted(45, 39) Source(46, 39) + SourceIndex(0) +12>Emitted(45, 41) Source(46, 23) + SourceIndex(0) +13>Emitted(45, 55) Source(46, 39) + SourceIndex(0) +14>Emitted(45, 57) Source(46, 23) + SourceIndex(0) +15>Emitted(45, 61) Source(46, 39) + SourceIndex(0) +16>Emitted(45, 62) Source(46, 40) + SourceIndex(0) +--- +>>> var numberB = _y[_x][0]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [numberB] +1 >Emitted(46, 5) Source(46, 6) + SourceIndex(0) +2 >Emitted(46, 9) Source(46, 10) + SourceIndex(0) +3 >Emitted(46, 28) Source(46, 19) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(47, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(47, 24) Source(47, 24) + SourceIndex(0) +7 >Emitted(47, 25) Source(47, 25) + SourceIndex(0) +8 >Emitted(47, 26) Source(47, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(48, 2) Source(48, 2) + SourceIndex(0) +--- +>>>for (var _z = 0, multiRobots_2 = multiRobots; _z < multiRobots_2.length; _z++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > (let [nameB] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(49, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(49, 21) + SourceIndex(0) +5 >Emitted(49, 16) Source(49, 32) + SourceIndex(0) +6 >Emitted(49, 18) Source(49, 21) + SourceIndex(0) +7 >Emitted(49, 45) Source(49, 32) + SourceIndex(0) +8 >Emitted(49, 47) Source(49, 21) + SourceIndex(0) +9 >Emitted(49, 72) Source(49, 32) + SourceIndex(0) +10>Emitted(49, 74) Source(49, 21) + SourceIndex(0) +11>Emitted(49, 78) Source(49, 32) + SourceIndex(0) +12>Emitted(49, 79) Source(49, 33) + SourceIndex(0) +--- +>>> var nameB = multiRobots_2[_z][0]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [nameB] +1 >Emitted(50, 5) Source(49, 6) + SourceIndex(0) +2 >Emitted(50, 9) Source(49, 10) + SourceIndex(0) +3 >Emitted(50, 37) Source(49, 17) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(51, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(51, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(51, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(51, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(51, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(51, 22) Source(50, 22) + SourceIndex(0) +7 >Emitted(51, 23) Source(50, 23) + SourceIndex(0) +8 >Emitted(51, 24) Source(50, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(52, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for (var _0 = 0, _1 = getMultiRobots(); _0 < _1.length; _0++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > (let [nameB] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(53, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(53, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(53, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(53, 6) Source(52, 21) + SourceIndex(0) +5 >Emitted(53, 16) Source(52, 37) + SourceIndex(0) +6 >Emitted(53, 18) Source(52, 21) + SourceIndex(0) +7 >Emitted(53, 23) Source(52, 21) + SourceIndex(0) +8 >Emitted(53, 37) Source(52, 35) + SourceIndex(0) +9 >Emitted(53, 39) Source(52, 37) + SourceIndex(0) +10>Emitted(53, 41) Source(52, 21) + SourceIndex(0) +11>Emitted(53, 55) Source(52, 37) + SourceIndex(0) +12>Emitted(53, 57) Source(52, 21) + SourceIndex(0) +13>Emitted(53, 61) Source(52, 37) + SourceIndex(0) +14>Emitted(53, 62) Source(52, 38) + SourceIndex(0) +--- +>>> var nameB = _1[_0][0]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [nameB] +1 >Emitted(54, 5) Source(52, 6) + SourceIndex(0) +2 >Emitted(54, 9) Source(52, 10) + SourceIndex(0) +3 >Emitted(54, 26) Source(52, 17) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(55, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(55, 22) Source(53, 22) + SourceIndex(0) +7 >Emitted(55, 23) Source(53, 23) + SourceIndex(0) +8 >Emitted(55, 24) Source(53, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(56, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for (var _2 = 0, _3 = [multiRobotA, multiRobotB]; _2 < _3.length; _2++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > (let [nameB] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(57, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(55, 21) + SourceIndex(0) +5 >Emitted(57, 16) Source(55, 47) + SourceIndex(0) +6 >Emitted(57, 18) Source(55, 21) + SourceIndex(0) +7 >Emitted(57, 24) Source(55, 22) + SourceIndex(0) +8 >Emitted(57, 35) Source(55, 33) + SourceIndex(0) +9 >Emitted(57, 37) Source(55, 35) + SourceIndex(0) +10>Emitted(57, 48) Source(55, 46) + SourceIndex(0) +11>Emitted(57, 49) Source(55, 47) + SourceIndex(0) +12>Emitted(57, 51) Source(55, 21) + SourceIndex(0) +13>Emitted(57, 65) Source(55, 47) + SourceIndex(0) +14>Emitted(57, 67) Source(55, 21) + SourceIndex(0) +15>Emitted(57, 71) Source(55, 47) + SourceIndex(0) +16>Emitted(57, 72) Source(55, 48) + SourceIndex(0) +--- +>>> var nameB = _3[_2][0]; +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [nameB] +1 >Emitted(58, 5) Source(55, 6) + SourceIndex(0) +2 >Emitted(58, 9) Source(55, 10) + SourceIndex(0) +3 >Emitted(58, 26) Source(55, 17) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(59, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(59, 22) Source(56, 22) + SourceIndex(0) +7 >Emitted(59, 23) Source(56, 23) + SourceIndex(0) +8 >Emitted(59, 24) Source(56, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(60, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for (var _4 = 0, robots_3 = robots; _4 < robots_3.length; _4++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let [numberA2, nameA2, skillA2] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(61, 1) Source(59, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(59, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(59, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(59, 41) + SourceIndex(0) +5 >Emitted(61, 16) Source(59, 47) + SourceIndex(0) +6 >Emitted(61, 18) Source(59, 41) + SourceIndex(0) +7 >Emitted(61, 35) Source(59, 47) + SourceIndex(0) +8 >Emitted(61, 37) Source(59, 41) + SourceIndex(0) +9 >Emitted(61, 57) Source(59, 47) + SourceIndex(0) +10>Emitted(61, 59) Source(59, 41) + SourceIndex(0) +11>Emitted(61, 63) Source(59, 47) + SourceIndex(0) +12>Emitted(61, 64) Source(59, 48) + SourceIndex(0) +--- +>>> var _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [numberA2, nameA2, skillA2] +4 > +5 > numberA2 +6 > , +7 > nameA2 +8 > , +9 > skillA2 +1->Emitted(62, 5) Source(59, 6) + SourceIndex(0) +2 >Emitted(62, 9) Source(59, 6) + SourceIndex(0) +3 >Emitted(62, 26) Source(59, 37) + SourceIndex(0) +4 >Emitted(62, 28) Source(59, 11) + SourceIndex(0) +5 >Emitted(62, 44) Source(59, 19) + SourceIndex(0) +6 >Emitted(62, 46) Source(59, 21) + SourceIndex(0) +7 >Emitted(62, 60) Source(59, 27) + SourceIndex(0) +8 >Emitted(62, 62) Source(59, 29) + SourceIndex(0) +9 >Emitted(62, 77) Source(59, 36) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(63, 5) Source(60, 5) + SourceIndex(0) +2 >Emitted(63, 12) Source(60, 12) + SourceIndex(0) +3 >Emitted(63, 13) Source(60, 13) + SourceIndex(0) +4 >Emitted(63, 16) Source(60, 16) + SourceIndex(0) +5 >Emitted(63, 17) Source(60, 17) + SourceIndex(0) +6 >Emitted(63, 23) Source(60, 23) + SourceIndex(0) +7 >Emitted(63, 24) Source(60, 24) + SourceIndex(0) +8 >Emitted(63, 25) Source(60, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(64, 2) Source(61, 2) + SourceIndex(0) +--- +>>>for (var _6 = 0, _7 = getRobots(); _6 < _7.length; _6++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA2, nameA2, skillA2] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(65, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(65, 4) Source(62, 4) + SourceIndex(0) +3 >Emitted(65, 5) Source(62, 5) + SourceIndex(0) +4 >Emitted(65, 6) Source(62, 41) + SourceIndex(0) +5 >Emitted(65, 16) Source(62, 52) + SourceIndex(0) +6 >Emitted(65, 18) Source(62, 41) + SourceIndex(0) +7 >Emitted(65, 23) Source(62, 41) + SourceIndex(0) +8 >Emitted(65, 32) Source(62, 50) + SourceIndex(0) +9 >Emitted(65, 34) Source(62, 52) + SourceIndex(0) +10>Emitted(65, 36) Source(62, 41) + SourceIndex(0) +11>Emitted(65, 50) Source(62, 52) + SourceIndex(0) +12>Emitted(65, 52) Source(62, 41) + SourceIndex(0) +13>Emitted(65, 56) Source(62, 52) + SourceIndex(0) +14>Emitted(65, 57) Source(62, 53) + SourceIndex(0) +--- +>>> var _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [numberA2, nameA2, skillA2] +4 > +5 > numberA2 +6 > , +7 > nameA2 +8 > , +9 > skillA2 +1->Emitted(66, 5) Source(62, 6) + SourceIndex(0) +2 >Emitted(66, 9) Source(62, 6) + SourceIndex(0) +3 >Emitted(66, 20) Source(62, 37) + SourceIndex(0) +4 >Emitted(66, 22) Source(62, 11) + SourceIndex(0) +5 >Emitted(66, 38) Source(62, 19) + SourceIndex(0) +6 >Emitted(66, 40) Source(62, 21) + SourceIndex(0) +7 >Emitted(66, 54) Source(62, 27) + SourceIndex(0) +8 >Emitted(66, 56) Source(62, 29) + SourceIndex(0) +9 >Emitted(66, 71) Source(62, 36) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(67, 5) Source(63, 5) + SourceIndex(0) +2 >Emitted(67, 12) Source(63, 12) + SourceIndex(0) +3 >Emitted(67, 13) Source(63, 13) + SourceIndex(0) +4 >Emitted(67, 16) Source(63, 16) + SourceIndex(0) +5 >Emitted(67, 17) Source(63, 17) + SourceIndex(0) +6 >Emitted(67, 23) Source(63, 23) + SourceIndex(0) +7 >Emitted(67, 24) Source(63, 24) + SourceIndex(0) +8 >Emitted(67, 25) Source(63, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(68, 2) Source(64, 2) + SourceIndex(0) +--- +>>>for (var _9 = 0, _10 = [robotA, robotB]; _9 < _10.length; _9++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA2, nameA2, skillA2] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(69, 1) Source(65, 1) + SourceIndex(0) +2 >Emitted(69, 4) Source(65, 4) + SourceIndex(0) +3 >Emitted(69, 5) Source(65, 5) + SourceIndex(0) +4 >Emitted(69, 6) Source(65, 41) + SourceIndex(0) +5 >Emitted(69, 16) Source(65, 57) + SourceIndex(0) +6 >Emitted(69, 18) Source(65, 41) + SourceIndex(0) +7 >Emitted(69, 25) Source(65, 42) + SourceIndex(0) +8 >Emitted(69, 31) Source(65, 48) + SourceIndex(0) +9 >Emitted(69, 33) Source(65, 50) + SourceIndex(0) +10>Emitted(69, 39) Source(65, 56) + SourceIndex(0) +11>Emitted(69, 40) Source(65, 57) + SourceIndex(0) +12>Emitted(69, 42) Source(65, 41) + SourceIndex(0) +13>Emitted(69, 57) Source(65, 57) + SourceIndex(0) +14>Emitted(69, 59) Source(65, 41) + SourceIndex(0) +15>Emitted(69, 63) Source(65, 57) + SourceIndex(0) +16>Emitted(69, 64) Source(65, 58) + SourceIndex(0) +--- +>>> var _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [numberA2, nameA2, skillA2] +4 > +5 > numberA2 +6 > , +7 > nameA2 +8 > , +9 > skillA2 +1->Emitted(70, 5) Source(65, 6) + SourceIndex(0) +2 >Emitted(70, 9) Source(65, 6) + SourceIndex(0) +3 >Emitted(70, 22) Source(65, 37) + SourceIndex(0) +4 >Emitted(70, 24) Source(65, 11) + SourceIndex(0) +5 >Emitted(70, 41) Source(65, 19) + SourceIndex(0) +6 >Emitted(70, 43) Source(65, 21) + SourceIndex(0) +7 >Emitted(70, 58) Source(65, 27) + SourceIndex(0) +8 >Emitted(70, 60) Source(65, 29) + SourceIndex(0) +9 >Emitted(70, 76) Source(65, 36) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(71, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(71, 12) Source(66, 12) + SourceIndex(0) +3 >Emitted(71, 13) Source(66, 13) + SourceIndex(0) +4 >Emitted(71, 16) Source(66, 16) + SourceIndex(0) +5 >Emitted(71, 17) Source(66, 17) + SourceIndex(0) +6 >Emitted(71, 23) Source(66, 23) + SourceIndex(0) +7 >Emitted(71, 24) Source(66, 24) + SourceIndex(0) +8 >Emitted(71, 25) Source(66, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(72, 2) Source(67, 2) + SourceIndex(0) +--- +>>>for (var _12 = 0, multiRobots_3 = multiRobots; _12 < multiRobots_3.length; _12++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [nameMA, [primarySkillA, secondarySkillA]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(73, 1) Source(68, 1) + SourceIndex(0) +2 >Emitted(73, 4) Source(68, 4) + SourceIndex(0) +3 >Emitted(73, 5) Source(68, 5) + SourceIndex(0) +4 >Emitted(73, 6) Source(68, 56) + SourceIndex(0) +5 >Emitted(73, 17) Source(68, 67) + SourceIndex(0) +6 >Emitted(73, 19) Source(68, 56) + SourceIndex(0) +7 >Emitted(73, 46) Source(68, 67) + SourceIndex(0) +8 >Emitted(73, 48) Source(68, 56) + SourceIndex(0) +9 >Emitted(73, 74) Source(68, 67) + SourceIndex(0) +10>Emitted(73, 76) Source(68, 56) + SourceIndex(0) +11>Emitted(73, 81) Source(68, 67) + SourceIndex(0) +12>Emitted(73, 82) Source(68, 68) + SourceIndex(0) +--- +>>> var _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [nameMA, [primarySkillA, secondarySkillA]] +4 > +5 > nameMA +6 > , +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +1->Emitted(74, 5) Source(68, 6) + SourceIndex(0) +2 >Emitted(74, 9) Source(68, 6) + SourceIndex(0) +3 >Emitted(74, 33) Source(68, 52) + SourceIndex(0) +4 >Emitted(74, 35) Source(68, 11) + SourceIndex(0) +5 >Emitted(74, 50) Source(68, 17) + SourceIndex(0) +6 >Emitted(74, 52) Source(68, 19) + SourceIndex(0) +7 >Emitted(74, 64) Source(68, 51) + SourceIndex(0) +8 >Emitted(74, 66) Source(68, 20) + SourceIndex(0) +9 >Emitted(74, 88) Source(68, 33) + SourceIndex(0) +10>Emitted(74, 90) Source(68, 35) + SourceIndex(0) +11>Emitted(74, 114) Source(68, 50) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(75, 5) Source(69, 5) + SourceIndex(0) +2 >Emitted(75, 12) Source(69, 12) + SourceIndex(0) +3 >Emitted(75, 13) Source(69, 13) + SourceIndex(0) +4 >Emitted(75, 16) Source(69, 16) + SourceIndex(0) +5 >Emitted(75, 17) Source(69, 17) + SourceIndex(0) +6 >Emitted(75, 23) Source(69, 23) + SourceIndex(0) +7 >Emitted(75, 24) Source(69, 24) + SourceIndex(0) +8 >Emitted(75, 25) Source(69, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(76, 2) Source(70, 2) + SourceIndex(0) +--- +>>>for (var _15 = 0, _16 = getMultiRobots(); _15 < _16.length; _15++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [nameMA, [primarySkillA, secondarySkillA]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(77, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(77, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(77, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(77, 6) Source(71, 56) + SourceIndex(0) +5 >Emitted(77, 17) Source(71, 72) + SourceIndex(0) +6 >Emitted(77, 19) Source(71, 56) + SourceIndex(0) +7 >Emitted(77, 25) Source(71, 56) + SourceIndex(0) +8 >Emitted(77, 39) Source(71, 70) + SourceIndex(0) +9 >Emitted(77, 41) Source(71, 72) + SourceIndex(0) +10>Emitted(77, 43) Source(71, 56) + SourceIndex(0) +11>Emitted(77, 59) Source(71, 72) + SourceIndex(0) +12>Emitted(77, 61) Source(71, 56) + SourceIndex(0) +13>Emitted(77, 66) Source(71, 72) + SourceIndex(0) +14>Emitted(77, 67) Source(71, 73) + SourceIndex(0) +--- +>>> var _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [nameMA, [primarySkillA, secondarySkillA]] +4 > +5 > nameMA +6 > , +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +1->Emitted(78, 5) Source(71, 6) + SourceIndex(0) +2 >Emitted(78, 9) Source(71, 6) + SourceIndex(0) +3 >Emitted(78, 23) Source(71, 52) + SourceIndex(0) +4 >Emitted(78, 25) Source(71, 11) + SourceIndex(0) +5 >Emitted(78, 40) Source(71, 17) + SourceIndex(0) +6 >Emitted(78, 42) Source(71, 19) + SourceIndex(0) +7 >Emitted(78, 54) Source(71, 51) + SourceIndex(0) +8 >Emitted(78, 56) Source(71, 20) + SourceIndex(0) +9 >Emitted(78, 78) Source(71, 33) + SourceIndex(0) +10>Emitted(78, 80) Source(71, 35) + SourceIndex(0) +11>Emitted(78, 104) Source(71, 50) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(79, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(79, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(79, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(79, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(79, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(79, 23) Source(72, 23) + SourceIndex(0) +7 >Emitted(79, 24) Source(72, 24) + SourceIndex(0) +8 >Emitted(79, 25) Source(72, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(80, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [nameMA, [primarySkillA, secondarySkillA]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(81, 1) Source(74, 1) + SourceIndex(0) +2 >Emitted(81, 4) Source(74, 4) + SourceIndex(0) +3 >Emitted(81, 5) Source(74, 5) + SourceIndex(0) +4 >Emitted(81, 6) Source(74, 56) + SourceIndex(0) +5 >Emitted(81, 17) Source(74, 82) + SourceIndex(0) +6 >Emitted(81, 19) Source(74, 56) + SourceIndex(0) +7 >Emitted(81, 26) Source(74, 57) + SourceIndex(0) +8 >Emitted(81, 37) Source(74, 68) + SourceIndex(0) +9 >Emitted(81, 39) Source(74, 70) + SourceIndex(0) +10>Emitted(81, 50) Source(74, 81) + SourceIndex(0) +11>Emitted(81, 51) Source(74, 82) + SourceIndex(0) +12>Emitted(81, 53) Source(74, 56) + SourceIndex(0) +13>Emitted(81, 69) Source(74, 82) + SourceIndex(0) +14>Emitted(81, 71) Source(74, 56) + SourceIndex(0) +15>Emitted(81, 76) Source(74, 82) + SourceIndex(0) +16>Emitted(81, 77) Source(74, 83) + SourceIndex(0) +--- +>>> var _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [nameMA, [primarySkillA, secondarySkillA]] +4 > +5 > nameMA +6 > , +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +1->Emitted(82, 5) Source(74, 6) + SourceIndex(0) +2 >Emitted(82, 9) Source(74, 6) + SourceIndex(0) +3 >Emitted(82, 23) Source(74, 52) + SourceIndex(0) +4 >Emitted(82, 25) Source(74, 11) + SourceIndex(0) +5 >Emitted(82, 40) Source(74, 17) + SourceIndex(0) +6 >Emitted(82, 42) Source(74, 19) + SourceIndex(0) +7 >Emitted(82, 54) Source(74, 51) + SourceIndex(0) +8 >Emitted(82, 56) Source(74, 20) + SourceIndex(0) +9 >Emitted(82, 78) Source(74, 33) + SourceIndex(0) +10>Emitted(82, 80) Source(74, 35) + SourceIndex(0) +11>Emitted(82, 104) Source(74, 50) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(83, 5) Source(75, 5) + SourceIndex(0) +2 >Emitted(83, 12) Source(75, 12) + SourceIndex(0) +3 >Emitted(83, 13) Source(75, 13) + SourceIndex(0) +4 >Emitted(83, 16) Source(75, 16) + SourceIndex(0) +5 >Emitted(83, 17) Source(75, 17) + SourceIndex(0) +6 >Emitted(83, 23) Source(75, 23) + SourceIndex(0) +7 >Emitted(83, 24) Source(75, 24) + SourceIndex(0) +8 >Emitted(83, 25) Source(75, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(84, 2) Source(76, 2) + SourceIndex(0) +--- +>>>for (var _23 = 0, robots_4 = robots; _23 < robots_4.length; _23++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let [numberA3, ...robotAInfo] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(85, 1) Source(78, 1) + SourceIndex(0) +2 >Emitted(85, 4) Source(78, 4) + SourceIndex(0) +3 >Emitted(85, 5) Source(78, 5) + SourceIndex(0) +4 >Emitted(85, 6) Source(78, 39) + SourceIndex(0) +5 >Emitted(85, 17) Source(78, 45) + SourceIndex(0) +6 >Emitted(85, 19) Source(78, 39) + SourceIndex(0) +7 >Emitted(85, 36) Source(78, 45) + SourceIndex(0) +8 >Emitted(85, 38) Source(78, 39) + SourceIndex(0) +9 >Emitted(85, 59) Source(78, 45) + SourceIndex(0) +10>Emitted(85, 61) Source(78, 39) + SourceIndex(0) +11>Emitted(85, 66) Source(78, 45) + SourceIndex(0) +12>Emitted(85, 67) Source(78, 46) + SourceIndex(0) +--- +>>> var _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [numberA3, ...robotAInfo] +4 > +5 > numberA3 +6 > , +7 > ...robotAInfo +1->Emitted(86, 5) Source(78, 6) + SourceIndex(0) +2 >Emitted(86, 9) Source(78, 6) + SourceIndex(0) +3 >Emitted(86, 28) Source(78, 35) + SourceIndex(0) +4 >Emitted(86, 30) Source(78, 11) + SourceIndex(0) +5 >Emitted(86, 47) Source(78, 19) + SourceIndex(0) +6 >Emitted(86, 49) Source(78, 21) + SourceIndex(0) +7 >Emitted(86, 74) Source(78, 34) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(87, 5) Source(79, 5) + SourceIndex(0) +2 >Emitted(87, 12) Source(79, 12) + SourceIndex(0) +3 >Emitted(87, 13) Source(79, 13) + SourceIndex(0) +4 >Emitted(87, 16) Source(79, 16) + SourceIndex(0) +5 >Emitted(87, 17) Source(79, 17) + SourceIndex(0) +6 >Emitted(87, 25) Source(79, 25) + SourceIndex(0) +7 >Emitted(87, 26) Source(79, 26) + SourceIndex(0) +8 >Emitted(87, 27) Source(79, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(88, 2) Source(80, 2) + SourceIndex(0) +--- +>>>for (var _25 = 0, _26 = getRobots(); _25 < _26.length; _25++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA3, ...robotAInfo] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(89, 1) Source(81, 1) + SourceIndex(0) +2 >Emitted(89, 4) Source(81, 4) + SourceIndex(0) +3 >Emitted(89, 5) Source(81, 5) + SourceIndex(0) +4 >Emitted(89, 6) Source(81, 39) + SourceIndex(0) +5 >Emitted(89, 17) Source(81, 50) + SourceIndex(0) +6 >Emitted(89, 19) Source(81, 39) + SourceIndex(0) +7 >Emitted(89, 25) Source(81, 39) + SourceIndex(0) +8 >Emitted(89, 34) Source(81, 48) + SourceIndex(0) +9 >Emitted(89, 36) Source(81, 50) + SourceIndex(0) +10>Emitted(89, 38) Source(81, 39) + SourceIndex(0) +11>Emitted(89, 54) Source(81, 50) + SourceIndex(0) +12>Emitted(89, 56) Source(81, 39) + SourceIndex(0) +13>Emitted(89, 61) Source(81, 50) + SourceIndex(0) +14>Emitted(89, 62) Source(81, 51) + SourceIndex(0) +--- +>>> var _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [numberA3, ...robotAInfo] +4 > +5 > numberA3 +6 > , +7 > ...robotAInfo +1->Emitted(90, 5) Source(81, 6) + SourceIndex(0) +2 >Emitted(90, 9) Source(81, 6) + SourceIndex(0) +3 >Emitted(90, 23) Source(81, 35) + SourceIndex(0) +4 >Emitted(90, 25) Source(81, 11) + SourceIndex(0) +5 >Emitted(90, 42) Source(81, 19) + SourceIndex(0) +6 >Emitted(90, 44) Source(81, 21) + SourceIndex(0) +7 >Emitted(90, 69) Source(81, 34) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(91, 5) Source(82, 5) + SourceIndex(0) +2 >Emitted(91, 12) Source(82, 12) + SourceIndex(0) +3 >Emitted(91, 13) Source(82, 13) + SourceIndex(0) +4 >Emitted(91, 16) Source(82, 16) + SourceIndex(0) +5 >Emitted(91, 17) Source(82, 17) + SourceIndex(0) +6 >Emitted(91, 25) Source(82, 25) + SourceIndex(0) +7 >Emitted(91, 26) Source(82, 26) + SourceIndex(0) +8 >Emitted(91, 27) Source(82, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(92, 2) Source(83, 2) + SourceIndex(0) +--- +>>>for (var _28 = 0, _29 = [robotA, robotB]; _28 < _29.length; _28++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA3, ...robotAInfo] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(93, 1) Source(84, 1) + SourceIndex(0) +2 >Emitted(93, 4) Source(84, 4) + SourceIndex(0) +3 >Emitted(93, 5) Source(84, 5) + SourceIndex(0) +4 >Emitted(93, 6) Source(84, 39) + SourceIndex(0) +5 >Emitted(93, 17) Source(84, 55) + SourceIndex(0) +6 >Emitted(93, 19) Source(84, 39) + SourceIndex(0) +7 >Emitted(93, 26) Source(84, 40) + SourceIndex(0) +8 >Emitted(93, 32) Source(84, 46) + SourceIndex(0) +9 >Emitted(93, 34) Source(84, 48) + SourceIndex(0) +10>Emitted(93, 40) Source(84, 54) + SourceIndex(0) +11>Emitted(93, 41) Source(84, 55) + SourceIndex(0) +12>Emitted(93, 43) Source(84, 39) + SourceIndex(0) +13>Emitted(93, 59) Source(84, 55) + SourceIndex(0) +14>Emitted(93, 61) Source(84, 39) + SourceIndex(0) +15>Emitted(93, 66) Source(84, 55) + SourceIndex(0) +16>Emitted(93, 67) Source(84, 56) + SourceIndex(0) +--- +>>> var _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); +1->^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > +3 > let [numberA3, ...robotAInfo] +4 > +5 > numberA3 +6 > , +7 > ...robotAInfo +1->Emitted(94, 5) Source(84, 6) + SourceIndex(0) +2 >Emitted(94, 9) Source(84, 6) + SourceIndex(0) +3 >Emitted(94, 23) Source(84, 35) + SourceIndex(0) +4 >Emitted(94, 25) Source(84, 11) + SourceIndex(0) +5 >Emitted(94, 42) Source(84, 19) + SourceIndex(0) +6 >Emitted(94, 44) Source(84, 21) + SourceIndex(0) +7 >Emitted(94, 69) Source(84, 34) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(95, 5) Source(85, 5) + SourceIndex(0) +2 >Emitted(95, 12) Source(85, 12) + SourceIndex(0) +3 >Emitted(95, 13) Source(85, 13) + SourceIndex(0) +4 >Emitted(95, 16) Source(85, 16) + SourceIndex(0) +5 >Emitted(95, 17) Source(85, 17) + SourceIndex(0) +6 >Emitted(95, 25) Source(85, 25) + SourceIndex(0) +7 >Emitted(95, 26) Source(85, 26) + SourceIndex(0) +8 >Emitted(95, 27) Source(85, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(96, 2) Source(86, 2) + SourceIndex(0) +--- +>>>for (var _31 = 0, multiRobots_4 = multiRobots; _31 < multiRobots_4.length; _31++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > (let [...multiRobotAInfo] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(97, 1) Source(87, 1) + SourceIndex(0) +2 >Emitted(97, 4) Source(87, 4) + SourceIndex(0) +3 >Emitted(97, 5) Source(87, 5) + SourceIndex(0) +4 >Emitted(97, 6) Source(87, 34) + SourceIndex(0) +5 >Emitted(97, 17) Source(87, 45) + SourceIndex(0) +6 >Emitted(97, 19) Source(87, 34) + SourceIndex(0) +7 >Emitted(97, 46) Source(87, 45) + SourceIndex(0) +8 >Emitted(97, 48) Source(87, 34) + SourceIndex(0) +9 >Emitted(97, 74) Source(87, 45) + SourceIndex(0) +10>Emitted(97, 76) Source(87, 34) + SourceIndex(0) +11>Emitted(97, 81) Source(87, 45) + SourceIndex(0) +12>Emitted(97, 82) Source(87, 46) + SourceIndex(0) +--- +>>> var multiRobotAInfo = multiRobots_4[_31].slice(0); +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [...multiRobotAInfo] +1 >Emitted(98, 5) Source(87, 6) + SourceIndex(0) +2 >Emitted(98, 9) Source(87, 10) + SourceIndex(0) +3 >Emitted(98, 54) Source(87, 30) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(99, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(99, 12) Source(88, 12) + SourceIndex(0) +3 >Emitted(99, 13) Source(88, 13) + SourceIndex(0) +4 >Emitted(99, 16) Source(88, 16) + SourceIndex(0) +5 >Emitted(99, 17) Source(88, 17) + SourceIndex(0) +6 >Emitted(99, 32) Source(88, 32) + SourceIndex(0) +7 >Emitted(99, 33) Source(88, 33) + SourceIndex(0) +8 >Emitted(99, 34) Source(88, 34) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(100, 2) Source(89, 2) + SourceIndex(0) +--- +>>>for (var _32 = 0, _33 = getMultiRobots(); _32 < _33.length; _32++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > (let [...multiRobotAInfo] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(101, 1) Source(90, 1) + SourceIndex(0) +2 >Emitted(101, 4) Source(90, 4) + SourceIndex(0) +3 >Emitted(101, 5) Source(90, 5) + SourceIndex(0) +4 >Emitted(101, 6) Source(90, 34) + SourceIndex(0) +5 >Emitted(101, 17) Source(90, 50) + SourceIndex(0) +6 >Emitted(101, 19) Source(90, 34) + SourceIndex(0) +7 >Emitted(101, 25) Source(90, 34) + SourceIndex(0) +8 >Emitted(101, 39) Source(90, 48) + SourceIndex(0) +9 >Emitted(101, 41) Source(90, 50) + SourceIndex(0) +10>Emitted(101, 43) Source(90, 34) + SourceIndex(0) +11>Emitted(101, 59) Source(90, 50) + SourceIndex(0) +12>Emitted(101, 61) Source(90, 34) + SourceIndex(0) +13>Emitted(101, 66) Source(90, 50) + SourceIndex(0) +14>Emitted(101, 67) Source(90, 51) + SourceIndex(0) +--- +>>> var multiRobotAInfo = _33[_32].slice(0); +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [...multiRobotAInfo] +1 >Emitted(102, 5) Source(90, 6) + SourceIndex(0) +2 >Emitted(102, 9) Source(90, 10) + SourceIndex(0) +3 >Emitted(102, 44) Source(90, 30) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(103, 5) Source(91, 5) + SourceIndex(0) +2 >Emitted(103, 12) Source(91, 12) + SourceIndex(0) +3 >Emitted(103, 13) Source(91, 13) + SourceIndex(0) +4 >Emitted(103, 16) Source(91, 16) + SourceIndex(0) +5 >Emitted(103, 17) Source(91, 17) + SourceIndex(0) +6 >Emitted(103, 32) Source(91, 32) + SourceIndex(0) +7 >Emitted(103, 33) Source(91, 33) + SourceIndex(0) +8 >Emitted(103, 34) Source(91, 34) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(104, 2) Source(92, 2) + SourceIndex(0) +--- +>>>for (var _34 = 0, _35 = [multiRobotA, multiRobotB]; _34 < _35.length; _34++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > (let [...multiRobotAInfo] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(105, 1) Source(93, 1) + SourceIndex(0) +2 >Emitted(105, 4) Source(93, 4) + SourceIndex(0) +3 >Emitted(105, 5) Source(93, 5) + SourceIndex(0) +4 >Emitted(105, 6) Source(93, 34) + SourceIndex(0) +5 >Emitted(105, 17) Source(93, 60) + SourceIndex(0) +6 >Emitted(105, 19) Source(93, 34) + SourceIndex(0) +7 >Emitted(105, 26) Source(93, 35) + SourceIndex(0) +8 >Emitted(105, 37) Source(93, 46) + SourceIndex(0) +9 >Emitted(105, 39) Source(93, 48) + SourceIndex(0) +10>Emitted(105, 50) Source(93, 59) + SourceIndex(0) +11>Emitted(105, 51) Source(93, 60) + SourceIndex(0) +12>Emitted(105, 53) Source(93, 34) + SourceIndex(0) +13>Emitted(105, 69) Source(93, 60) + SourceIndex(0) +14>Emitted(105, 71) Source(93, 34) + SourceIndex(0) +15>Emitted(105, 76) Source(93, 60) + SourceIndex(0) +16>Emitted(105, 77) Source(93, 61) + SourceIndex(0) +--- +>>> var multiRobotAInfo = _35[_34].slice(0); +1 >^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > let +3 > [...multiRobotAInfo] +1 >Emitted(106, 5) Source(93, 6) + SourceIndex(0) +2 >Emitted(106, 9) Source(93, 10) + SourceIndex(0) +3 >Emitted(106, 44) Source(93, 30) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(107, 5) Source(94, 5) + SourceIndex(0) +2 >Emitted(107, 12) Source(94, 12) + SourceIndex(0) +3 >Emitted(107, 13) Source(94, 13) + SourceIndex(0) +4 >Emitted(107, 16) Source(94, 16) + SourceIndex(0) +5 >Emitted(107, 17) Source(94, 17) + SourceIndex(0) +6 >Emitted(107, 32) Source(94, 32) + SourceIndex(0) +7 >Emitted(107, 33) Source(94, 33) + SourceIndex(0) +8 >Emitted(107, 34) Source(94, 34) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(108, 2) Source(95, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.symbols new file mode 100644 index 00000000000..7d4412805e0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.symbols @@ -0,0 +1,323 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 2, 1)) + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 7, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 2, 1)) + +let robots = [robotA, robotB]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 7, 3)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 30)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 13, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 14, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 3, 38)) + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 3)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 14, 3)) + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 45)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 3)) +} + +for (let [, nameA] of robots) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 20, 11)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 20, 11)) +} +for (let [, nameA] of getRobots()) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 23, 11)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 30)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 23, 11)) +} +for (let [, nameA] of [robotA, robotB]) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 26, 11)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 7, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 26, 11)) +} +for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 29, 13)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 29, 27)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 29, 13)) +} +for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 32, 13)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 32, 27)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 45)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 32, 13)) +} +for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 35, 13)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 35, 27)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 14, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 35, 13)) +} + +for (let [numberB] of robots) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 39, 10)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 39, 10)) +} +for (let [numberB] of getRobots()) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 42, 10)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 30)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 42, 10)) +} +for (let [numberB] of [robotA, robotB]) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 45, 10)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 7, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 45, 10)) +} +for (let [nameB] of multiRobots) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 48, 10)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 48, 10)) +} +for (let [nameB] of getMultiRobots()) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 51, 10)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 45)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 51, 10)) +} +for (let [nameB] of [multiRobotA, multiRobotB]) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 54, 10)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 14, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 54, 10)) +} + +for (let [numberA2, nameA2, skillA2] of robots) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 58, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 58, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 58, 27)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 58, 19)) +} +for (let [numberA2, nameA2, skillA2] of getRobots()) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 61, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 61, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 61, 27)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 30)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 61, 19)) +} +for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 64, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 64, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 64, 27)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 7, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 64, 19)) +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 67, 10)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 67, 19)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 67, 33)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 67, 10)) +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 70, 10)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 70, 19)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 70, 33)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 45)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 70, 10)) +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 73, 10)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 73, 19)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 73, 33)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 14, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 73, 10)) +} + +for (let [numberA3, ...robotAInfo] of robots) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 77, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 77, 19)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 77, 10)) +} +for (let [numberA3, ...robotAInfo] of getRobots()) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 80, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 80, 19)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 8, 30)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 80, 10)) +} +for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 83, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 83, 19)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 7, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 83, 10)) +} +for (let [...multiRobotAInfo] of multiRobots) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 86, 10)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 86, 10)) +} +for (let [...multiRobotAInfo] of getMultiRobots()) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 89, 10)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 15, 45)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 89, 10)) +} +for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 92, 10)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 14, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern.ts, 92, 10)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types new file mode 100644 index 00000000000..95c947f8fcc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.types @@ -0,0 +1,389 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +let robots = [robotA, robotB]; +>robots : [number, string, string][] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + +function getRobots() { +>getRobots : () => [number, string, string][] + + return robots; +>robots : [number, string, string][] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : [string, [string, string]][] +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + +function getMultiRobots() { +>getMultiRobots : () => [string, [string, string]][] + + return multiRobots; +>multiRobots : [string, [string, string]][] +} + +for (let [, nameA] of robots) { +> : undefined +>nameA : string +>robots : [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA] of getRobots()) { +> : undefined +>nameA : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA] of [robotA, robotB]) { +> : undefined +>nameA : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { +> : undefined +>primarySkillA : string +>secondarySkillA : string +>multiRobots : [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +> : undefined +>primarySkillA : string +>secondarySkillA : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +> : undefined +>primarySkillA : string +>secondarySkillA : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for (let [numberB] of robots) { +>numberB : number +>robots : [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB] of getRobots()) { +>numberB : number +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB] of [robotA, robotB]) { +>numberB : number +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [nameB] of multiRobots) { +>nameB : string +>multiRobots : [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB] of getMultiRobots()) { +>nameB : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB] of [multiRobotA, multiRobotB]) { +>nameB : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for (let [numberA2, nameA2, skillA2] of robots) { +>numberA2 : number +>nameA2 : string +>skillA2 : string +>robots : [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2, nameA2, skillA2] of getRobots()) { +>numberA2 : number +>nameA2 : string +>skillA2 : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { +>numberA2 : number +>nameA2 : string +>skillA2 : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>multiRobots : [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for (let [numberA3, ...robotAInfo] of robots) { +>numberA3 : number +>robotAInfo : (number | string)[] +>robots : [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3, ...robotAInfo] of getRobots()) { +>numberA3 : number +>robotAInfo : (number | string)[] +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { +>numberA3 : number +>robotAInfo : (number | string)[] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [...multiRobotAInfo] of multiRobots) { +>multiRobotAInfo : (string | [string, string])[] +>multiRobots : [string, [string, string]][] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for (let [...multiRobotAInfo] of getMultiRobots()) { +>multiRobotAInfo : (string | [string, string])[] +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { +>multiRobotAInfo : (string | [string, string])[] +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.ts new file mode 100644 index 00000000000..f2fb461f443 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern.ts @@ -0,0 +1,96 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +for (let [, nameA] of robots) { + console.log(nameA); +} +for (let [, nameA] of getRobots()) { + console.log(nameA); +} +for (let [, nameA] of [robotA, robotB]) { + console.log(nameA); +} +for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for (let [numberB] of robots) { + console.log(numberB); +} +for (let [numberB] of getRobots()) { + console.log(numberB); +} +for (let [numberB] of [robotA, robotB]) { + console.log(numberB); +} +for (let [nameB] of multiRobots) { + console.log(nameB); +} +for (let [nameB] of getMultiRobots()) { + console.log(nameB); +} +for (let [nameB] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for (let [numberA2, nameA2, skillA2] of robots) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] of getRobots()) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + console.log(nameA2); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for (let [numberA3, ...robotAInfo] of robots) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} +for (let [...multiRobotAInfo] of multiRobots) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] of getMultiRobots()) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + console.log(multiRobotAInfo); +} \ No newline at end of file From 24d0c98b5172df0ccc2e3020ee2869adf9aa3da6 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 14:34:25 -0800 Subject: [PATCH 035/164] Test case for "For" statement with object binding pattern --- ...ionDestructuringForObjectBindingPattern.js | 114 ++ ...estructuringForObjectBindingPattern.js.map | 2 + ...uringForObjectBindingPattern.sourcemap.txt | 1550 +++++++++++++++++ ...structuringForObjectBindingPattern.symbols | 282 +++ ...DestructuringForObjectBindingPattern.types | 374 ++++ ...ionDestructuringForObjectBindingPattern.ts | 67 + 6 files changed, 2389 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js new file mode 100644 index 00000000000..ca29b2eabd8 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js @@ -0,0 +1,114 @@ +//// [sourceMapValidationDestructuringForObjectBindingPattern.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +for (let {name: nameA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +//// [sourceMapValidationDestructuringForObjectBindingPattern.js] +var robot = { name: "mower", skill: "mowing" }; +var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} +for (var nameA = robot.name, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var nameA = getRobot().name, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var nameA = { name: "trimmer", skill: "trimming" }.name, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _a = multiRobot.skills, primaryA = _a.primary, secondaryA = _a.secondary, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _b = getMultiRobot().skills, primaryA = _b.primary, secondaryA = _b.secondary, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _c = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }.skills, primaryA = _c.primary, secondaryA = _c.secondary, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var nameA = robot.name, skillA = robot.skill, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _d = getRobot(), nameA = _d.name, skillA = _d.skill, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _e = { name: "trimmer", skill: "trimming" }, nameA = _e.name, skillA = _e.skill, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var nameA = multiRobot.name, _f = multiRobot.skills, primaryA = _f.primary, secondaryA = _f.secondary, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _g = getMultiRobot(), nameA = _g.name, _h = _g.skills, primaryA = _h.primary, secondaryA = _h.secondary, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _j = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, nameA = _j.name, _k = _j.skills, primaryA = _k.primary, secondaryA = _k.secondary, i = 0; i < 1; i++) { + console.log(primaryA); +} +//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map new file mode 100644 index 00000000000..b931afe67b0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForObjectBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..f598cc385f8 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt @@ -0,0 +1,1550 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForObjectBindingPattern.js +mapUrl: sourceMapValidationDestructuringForObjectBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForObjectBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.js +sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts +------------------------------------------------------------------- +>>>var robot = { name: "mower", skill: "mowing" }; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > + > +2 >let +3 > robot +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(17, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(17, 20) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 22) + SourceIndex(0) +6 >Emitted(1, 19) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 28) + SourceIndex(0) +8 >Emitted(1, 28) Source(17, 35) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 37) + SourceIndex(0) +10>Emitted(1, 35) Source(17, 42) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 44) + SourceIndex(0) +12>Emitted(1, 45) Source(17, 52) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 54) + SourceIndex(0) +14>Emitted(1, 48) Source(17, 55) + SourceIndex(0) +--- +>>>var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1-> +2 >^^^^ +3 > ^^^^^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >let +3 > multiRobot +4 > : MultiRobot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1->Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 15) Source(18, 15) + SourceIndex(0) +4 >Emitted(2, 18) Source(18, 30) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 32) + SourceIndex(0) +6 >Emitted(2, 24) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 38) + SourceIndex(0) +8 >Emitted(2, 33) Source(18, 45) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 47) + SourceIndex(0) +10>Emitted(2, 41) Source(18, 53) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 55) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 57) + SourceIndex(0) +13>Emitted(2, 52) Source(18, 64) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 66) + SourceIndex(0) +15>Emitted(2, 62) Source(18, 74) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 76) + SourceIndex(0) +17>Emitted(2, 73) Source(18, 85) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 87) + SourceIndex(0) +19>Emitted(2, 81) Source(18, 93) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 95) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 97) + SourceIndex(0) +22>Emitted(2, 86) Source(18, 98) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(3, 1) Source(19, 1) + SourceIndex(0) +--- +>>> return robot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robot +5 > ; +1->Emitted(4, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(4, 11) Source(20, 11) + SourceIndex(0) +3 >Emitted(4, 12) Source(20, 12) + SourceIndex(0) +4 >Emitted(4, 17) Source(20, 17) + SourceIndex(0) +5 >Emitted(4, 18) Source(20, 18) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(21, 2) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +1->Emitted(6, 1) Source(22, 1) + SourceIndex(0) +--- +>>> return multiRobot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobot +5 > ; +1->Emitted(7, 5) Source(23, 5) + SourceIndex(0) +2 >Emitted(7, 11) Source(23, 11) + SourceIndex(0) +3 >Emitted(7, 12) Source(23, 12) + SourceIndex(0) +4 >Emitted(7, 22) Source(23, 22) + SourceIndex(0) +5 >Emitted(7, 23) Source(23, 23) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(8, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(8, 2) Source(24, 2) + SourceIndex(0) +--- +>>>for (var nameA = robot.name, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > {name: nameA } = robot +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(9, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(9, 4) Source(26, 4) + SourceIndex(0) +3 >Emitted(9, 5) Source(26, 5) + SourceIndex(0) +4 >Emitted(9, 6) Source(26, 6) + SourceIndex(0) +5 >Emitted(9, 9) Source(26, 9) + SourceIndex(0) +6 >Emitted(9, 10) Source(26, 10) + SourceIndex(0) +7 >Emitted(9, 28) Source(26, 32) + SourceIndex(0) +8 >Emitted(9, 30) Source(26, 34) + SourceIndex(0) +9 >Emitted(9, 31) Source(26, 35) + SourceIndex(0) +10>Emitted(9, 34) Source(26, 38) + SourceIndex(0) +11>Emitted(9, 35) Source(26, 39) + SourceIndex(0) +12>Emitted(9, 37) Source(26, 41) + SourceIndex(0) +13>Emitted(9, 38) Source(26, 42) + SourceIndex(0) +14>Emitted(9, 41) Source(26, 45) + SourceIndex(0) +15>Emitted(9, 42) Source(26, 46) + SourceIndex(0) +16>Emitted(9, 44) Source(26, 48) + SourceIndex(0) +17>Emitted(9, 45) Source(26, 49) + SourceIndex(0) +18>Emitted(9, 47) Source(26, 51) + SourceIndex(0) +19>Emitted(9, 49) Source(26, 53) + SourceIndex(0) +20>Emitted(9, 50) Source(26, 54) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(10, 5) Source(27, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(27, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(27, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(27, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(27, 17) + SourceIndex(0) +6 >Emitted(10, 22) Source(27, 22) + SourceIndex(0) +7 >Emitted(10, 23) Source(27, 23) + SourceIndex(0) +8 >Emitted(10, 24) Source(27, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(28, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(28, 2) + SourceIndex(0) +--- +>>>for (var nameA = getRobot().name, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > {name: nameA } = getRobot() +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(12, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(12, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(12, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(12, 6) Source(29, 6) + SourceIndex(0) +5 >Emitted(12, 9) Source(29, 9) + SourceIndex(0) +6 >Emitted(12, 10) Source(29, 10) + SourceIndex(0) +7 >Emitted(12, 33) Source(29, 37) + SourceIndex(0) +8 >Emitted(12, 35) Source(29, 39) + SourceIndex(0) +9 >Emitted(12, 36) Source(29, 40) + SourceIndex(0) +10>Emitted(12, 39) Source(29, 43) + SourceIndex(0) +11>Emitted(12, 40) Source(29, 44) + SourceIndex(0) +12>Emitted(12, 42) Source(29, 46) + SourceIndex(0) +13>Emitted(12, 43) Source(29, 47) + SourceIndex(0) +14>Emitted(12, 46) Source(29, 50) + SourceIndex(0) +15>Emitted(12, 47) Source(29, 51) + SourceIndex(0) +16>Emitted(12, 49) Source(29, 53) + SourceIndex(0) +17>Emitted(12, 50) Source(29, 54) + SourceIndex(0) +18>Emitted(12, 52) Source(29, 56) + SourceIndex(0) +19>Emitted(12, 54) Source(29, 58) + SourceIndex(0) +20>Emitted(12, 55) Source(29, 59) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(13, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(13, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(13, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(13, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(13, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(13, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(13, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(13, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(14, 1) Source(31, 1) + SourceIndex(0) +2 >Emitted(14, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for (var nameA = { name: "trimmer", skill: "trimming" }.name, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > {name: nameA } = { name: "trimmer", skill: "trimming" } +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(15, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(15, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(15, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(15, 6) Source(32, 6) + SourceIndex(0) +5 >Emitted(15, 9) Source(32, 9) + SourceIndex(0) +6 >Emitted(15, 10) Source(32, 10) + SourceIndex(0) +7 >Emitted(15, 61) Source(32, 72) + SourceIndex(0) +8 >Emitted(15, 63) Source(32, 74) + SourceIndex(0) +9 >Emitted(15, 64) Source(32, 75) + SourceIndex(0) +10>Emitted(15, 67) Source(32, 78) + SourceIndex(0) +11>Emitted(15, 68) Source(32, 79) + SourceIndex(0) +12>Emitted(15, 70) Source(32, 81) + SourceIndex(0) +13>Emitted(15, 71) Source(32, 82) + SourceIndex(0) +14>Emitted(15, 74) Source(32, 85) + SourceIndex(0) +15>Emitted(15, 75) Source(32, 86) + SourceIndex(0) +16>Emitted(15, 77) Source(32, 88) + SourceIndex(0) +17>Emitted(15, 78) Source(32, 89) + SourceIndex(0) +18>Emitted(15, 80) Source(32, 91) + SourceIndex(0) +19>Emitted(15, 82) Source(32, 93) + SourceIndex(0) +20>Emitted(15, 83) Source(32, 94) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(16, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(16, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(16, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(16, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(34, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _a = multiRobot.skills, primaryA = _a.primary, secondaryA = _a.secondary, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > { +7 > skills +8 > : { +9 > primary: primaryA +10> , +11> secondary: secondaryA +12> } } = multiRobot, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(18, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(18, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(18, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(18, 6) Source(35, 6) + SourceIndex(0) +5 >Emitted(18, 9) Source(35, 9) + SourceIndex(0) +6 >Emitted(18, 10) Source(35, 12) + SourceIndex(0) +7 >Emitted(18, 32) Source(35, 18) + SourceIndex(0) +8 >Emitted(18, 34) Source(35, 22) + SourceIndex(0) +9 >Emitted(18, 55) Source(35, 39) + SourceIndex(0) +10>Emitted(18, 57) Source(35, 41) + SourceIndex(0) +11>Emitted(18, 82) Source(35, 62) + SourceIndex(0) +12>Emitted(18, 84) Source(35, 81) + SourceIndex(0) +13>Emitted(18, 85) Source(35, 82) + SourceIndex(0) +14>Emitted(18, 88) Source(35, 85) + SourceIndex(0) +15>Emitted(18, 89) Source(35, 86) + SourceIndex(0) +16>Emitted(18, 91) Source(35, 88) + SourceIndex(0) +17>Emitted(18, 92) Source(35, 89) + SourceIndex(0) +18>Emitted(18, 95) Source(35, 92) + SourceIndex(0) +19>Emitted(18, 96) Source(35, 93) + SourceIndex(0) +20>Emitted(18, 98) Source(35, 95) + SourceIndex(0) +21>Emitted(18, 99) Source(35, 96) + SourceIndex(0) +22>Emitted(18, 101) Source(35, 98) + SourceIndex(0) +23>Emitted(18, 103) Source(35, 100) + SourceIndex(0) +24>Emitted(18, 104) Source(35, 101) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(19, 25) Source(36, 25) + SourceIndex(0) +7 >Emitted(19, 26) Source(36, 26) + SourceIndex(0) +8 >Emitted(19, 27) Source(36, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(20, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(20, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for (var _b = getMultiRobot().skills, primaryA = _b.primary, secondaryA = _b.secondary, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > { +7 > skills +8 > : { +9 > primary: primaryA +10> , +11> secondary: secondaryA +12> } } = getMultiRobot(), +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(21, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(38, 6) + SourceIndex(0) +5 >Emitted(21, 9) Source(38, 9) + SourceIndex(0) +6 >Emitted(21, 10) Source(38, 12) + SourceIndex(0) +7 >Emitted(21, 37) Source(38, 18) + SourceIndex(0) +8 >Emitted(21, 39) Source(38, 22) + SourceIndex(0) +9 >Emitted(21, 60) Source(38, 39) + SourceIndex(0) +10>Emitted(21, 62) Source(38, 41) + SourceIndex(0) +11>Emitted(21, 87) Source(38, 62) + SourceIndex(0) +12>Emitted(21, 89) Source(38, 86) + SourceIndex(0) +13>Emitted(21, 90) Source(38, 87) + SourceIndex(0) +14>Emitted(21, 93) Source(38, 90) + SourceIndex(0) +15>Emitted(21, 94) Source(38, 91) + SourceIndex(0) +16>Emitted(21, 96) Source(38, 93) + SourceIndex(0) +17>Emitted(21, 97) Source(38, 94) + SourceIndex(0) +18>Emitted(21, 100) Source(38, 97) + SourceIndex(0) +19>Emitted(21, 101) Source(38, 98) + SourceIndex(0) +20>Emitted(21, 103) Source(38, 100) + SourceIndex(0) +21>Emitted(21, 104) Source(38, 101) + SourceIndex(0) +22>Emitted(21, 106) Source(38, 103) + SourceIndex(0) +23>Emitted(21, 108) Source(38, 105) + SourceIndex(0) +24>Emitted(21, 109) Source(38, 106) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(22, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(22, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(22, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(22, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(22, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(22, 25) Source(39, 25) + SourceIndex(0) +7 >Emitted(22, 26) Source(39, 26) + SourceIndex(0) +8 >Emitted(22, 27) Source(39, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(23, 1) Source(40, 1) + SourceIndex(0) +2 >Emitted(23, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for (var _c = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }.skills, primaryA = _c.primary, secondaryA = _c.secondary, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > { +7 > skills +8 > : { +9 > primary: primaryA +10> , +11> secondary: secondaryA +12> } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + > +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(24, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(24, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(24, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(24, 6) Source(41, 6) + SourceIndex(0) +5 >Emitted(24, 9) Source(41, 9) + SourceIndex(0) +6 >Emitted(24, 10) Source(41, 12) + SourceIndex(0) +7 >Emitted(24, 95) Source(41, 18) + SourceIndex(0) +8 >Emitted(24, 97) Source(41, 22) + SourceIndex(0) +9 >Emitted(24, 118) Source(41, 39) + SourceIndex(0) +10>Emitted(24, 120) Source(41, 41) + SourceIndex(0) +11>Emitted(24, 145) Source(41, 62) + SourceIndex(0) +12>Emitted(24, 147) Source(43, 5) + SourceIndex(0) +13>Emitted(24, 148) Source(43, 6) + SourceIndex(0) +14>Emitted(24, 151) Source(43, 9) + SourceIndex(0) +15>Emitted(24, 152) Source(43, 10) + SourceIndex(0) +16>Emitted(24, 154) Source(43, 12) + SourceIndex(0) +17>Emitted(24, 155) Source(43, 13) + SourceIndex(0) +18>Emitted(24, 158) Source(43, 16) + SourceIndex(0) +19>Emitted(24, 159) Source(43, 17) + SourceIndex(0) +20>Emitted(24, 161) Source(43, 19) + SourceIndex(0) +21>Emitted(24, 162) Source(43, 20) + SourceIndex(0) +22>Emitted(24, 164) Source(43, 22) + SourceIndex(0) +23>Emitted(24, 166) Source(43, 24) + SourceIndex(0) +24>Emitted(24, 167) Source(43, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(25, 5) Source(44, 5) + SourceIndex(0) +2 >Emitted(25, 12) Source(44, 12) + SourceIndex(0) +3 >Emitted(25, 13) Source(44, 13) + SourceIndex(0) +4 >Emitted(25, 16) Source(44, 16) + SourceIndex(0) +5 >Emitted(25, 17) Source(44, 17) + SourceIndex(0) +6 >Emitted(25, 25) Source(44, 25) + SourceIndex(0) +7 >Emitted(25, 26) Source(44, 26) + SourceIndex(0) +8 >Emitted(25, 27) Source(44, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(26, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(26, 2) Source(45, 2) + SourceIndex(0) +--- +>>>for (var nameA = robot.name, skillA = robot.skill, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > let +6 > { +7 > name: nameA +8 > , +9 > skill: skillA +10> } = robot, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(27, 1) Source(47, 1) + SourceIndex(0) +2 >Emitted(27, 4) Source(47, 4) + SourceIndex(0) +3 >Emitted(27, 5) Source(47, 5) + SourceIndex(0) +4 >Emitted(27, 6) Source(47, 6) + SourceIndex(0) +5 >Emitted(27, 9) Source(47, 9) + SourceIndex(0) +6 >Emitted(27, 10) Source(47, 11) + SourceIndex(0) +7 >Emitted(27, 28) Source(47, 22) + SourceIndex(0) +8 >Emitted(27, 30) Source(47, 24) + SourceIndex(0) +9 >Emitted(27, 50) Source(47, 37) + SourceIndex(0) +10>Emitted(27, 52) Source(47, 49) + SourceIndex(0) +11>Emitted(27, 53) Source(47, 50) + SourceIndex(0) +12>Emitted(27, 56) Source(47, 53) + SourceIndex(0) +13>Emitted(27, 57) Source(47, 54) + SourceIndex(0) +14>Emitted(27, 59) Source(47, 56) + SourceIndex(0) +15>Emitted(27, 60) Source(47, 57) + SourceIndex(0) +16>Emitted(27, 63) Source(47, 60) + SourceIndex(0) +17>Emitted(27, 64) Source(47, 61) + SourceIndex(0) +18>Emitted(27, 66) Source(47, 63) + SourceIndex(0) +19>Emitted(27, 67) Source(47, 64) + SourceIndex(0) +20>Emitted(27, 69) Source(47, 66) + SourceIndex(0) +21>Emitted(27, 71) Source(47, 68) + SourceIndex(0) +22>Emitted(27, 72) Source(47, 69) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(28, 5) Source(48, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(48, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(48, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(48, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(48, 17) + SourceIndex(0) +6 >Emitted(28, 22) Source(48, 22) + SourceIndex(0) +7 >Emitted(28, 23) Source(48, 23) + SourceIndex(0) +8 >Emitted(28, 24) Source(48, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(29, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(29, 2) Source(49, 2) + SourceIndex(0) +--- +>>>for (var _d = getRobot(), nameA = _d.name, skillA = _d.skill, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > {name: nameA, skill: skillA } = +7 > getRobot() +8 > +9 > name: nameA +10> , +11> skill: skillA +12> } = getRobot(), +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(30, 1) Source(50, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(50, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(50, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(50, 6) + SourceIndex(0) +5 >Emitted(30, 9) Source(50, 9) + SourceIndex(0) +6 >Emitted(30, 10) Source(50, 42) + SourceIndex(0) +7 >Emitted(30, 25) Source(50, 52) + SourceIndex(0) +8 >Emitted(30, 27) Source(50, 11) + SourceIndex(0) +9 >Emitted(30, 42) Source(50, 22) + SourceIndex(0) +10>Emitted(30, 44) Source(50, 24) + SourceIndex(0) +11>Emitted(30, 61) Source(50, 37) + SourceIndex(0) +12>Emitted(30, 63) Source(50, 54) + SourceIndex(0) +13>Emitted(30, 64) Source(50, 55) + SourceIndex(0) +14>Emitted(30, 67) Source(50, 58) + SourceIndex(0) +15>Emitted(30, 68) Source(50, 59) + SourceIndex(0) +16>Emitted(30, 70) Source(50, 61) + SourceIndex(0) +17>Emitted(30, 71) Source(50, 62) + SourceIndex(0) +18>Emitted(30, 74) Source(50, 65) + SourceIndex(0) +19>Emitted(30, 75) Source(50, 66) + SourceIndex(0) +20>Emitted(30, 77) Source(50, 68) + SourceIndex(0) +21>Emitted(30, 78) Source(50, 69) + SourceIndex(0) +22>Emitted(30, 80) Source(50, 71) + SourceIndex(0) +23>Emitted(30, 82) Source(50, 73) + SourceIndex(0) +24>Emitted(30, 83) Source(50, 74) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(51, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(51, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(51, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(51, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(51, 17) + SourceIndex(0) +6 >Emitted(31, 22) Source(51, 22) + SourceIndex(0) +7 >Emitted(31, 23) Source(51, 23) + SourceIndex(0) +8 >Emitted(31, 24) Source(51, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(52, 2) + SourceIndex(0) +--- +>>>for (var _e = { name: "trimmer", skill: "trimming" }, nameA = _e.name, skillA = _e.skill, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > {name: nameA, skill: skillA } = +7 > { name: "trimmer", skill: "trimming" } +8 > +9 > name: nameA +10> , +11> skill: skillA +12> } = { name: "trimmer", skill: "trimming" }, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(33, 1) Source(53, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(53, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(53, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(53, 6) + SourceIndex(0) +5 >Emitted(33, 9) Source(53, 9) + SourceIndex(0) +6 >Emitted(33, 10) Source(53, 42) + SourceIndex(0) +7 >Emitted(33, 53) Source(53, 87) + SourceIndex(0) +8 >Emitted(33, 55) Source(53, 11) + SourceIndex(0) +9 >Emitted(33, 70) Source(53, 22) + SourceIndex(0) +10>Emitted(33, 72) Source(53, 24) + SourceIndex(0) +11>Emitted(33, 89) Source(53, 37) + SourceIndex(0) +12>Emitted(33, 91) Source(53, 89) + SourceIndex(0) +13>Emitted(33, 92) Source(53, 90) + SourceIndex(0) +14>Emitted(33, 95) Source(53, 93) + SourceIndex(0) +15>Emitted(33, 96) Source(53, 94) + SourceIndex(0) +16>Emitted(33, 98) Source(53, 96) + SourceIndex(0) +17>Emitted(33, 99) Source(53, 97) + SourceIndex(0) +18>Emitted(33, 102) Source(53, 100) + SourceIndex(0) +19>Emitted(33, 103) Source(53, 101) + SourceIndex(0) +20>Emitted(33, 105) Source(53, 103) + SourceIndex(0) +21>Emitted(33, 106) Source(53, 104) + SourceIndex(0) +22>Emitted(33, 108) Source(53, 106) + SourceIndex(0) +23>Emitted(33, 110) Source(53, 108) + SourceIndex(0) +24>Emitted(33, 111) Source(53, 109) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(34, 5) Source(54, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(54, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(54, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(54, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(54, 17) + SourceIndex(0) +6 >Emitted(34, 22) Source(54, 22) + SourceIndex(0) +7 >Emitted(34, 23) Source(54, 23) + SourceIndex(0) +8 >Emitted(34, 24) Source(54, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(55, 2) + SourceIndex(0) +--- +>>>for (var nameA = multiRobot.name, _f = multiRobot.skills, primaryA = _f.primary, secondaryA = _f.secondary, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > { +7 > name: nameA +8 > , +9 > skills +10> : { +11> primary: primaryA +12> , +13> secondary: secondaryA +14> } } = multiRobot, +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(36, 1) Source(56, 1) + SourceIndex(0) +2 >Emitted(36, 4) Source(56, 4) + SourceIndex(0) +3 >Emitted(36, 5) Source(56, 5) + SourceIndex(0) +4 >Emitted(36, 6) Source(56, 6) + SourceIndex(0) +5 >Emitted(36, 9) Source(56, 9) + SourceIndex(0) +6 >Emitted(36, 10) Source(56, 11) + SourceIndex(0) +7 >Emitted(36, 33) Source(56, 22) + SourceIndex(0) +8 >Emitted(36, 35) Source(56, 24) + SourceIndex(0) +9 >Emitted(36, 57) Source(56, 30) + SourceIndex(0) +10>Emitted(36, 59) Source(56, 34) + SourceIndex(0) +11>Emitted(36, 80) Source(56, 51) + SourceIndex(0) +12>Emitted(36, 82) Source(56, 53) + SourceIndex(0) +13>Emitted(36, 107) Source(56, 74) + SourceIndex(0) +14>Emitted(36, 109) Source(56, 93) + SourceIndex(0) +15>Emitted(36, 110) Source(56, 94) + SourceIndex(0) +16>Emitted(36, 113) Source(56, 97) + SourceIndex(0) +17>Emitted(36, 114) Source(56, 98) + SourceIndex(0) +18>Emitted(36, 116) Source(56, 100) + SourceIndex(0) +19>Emitted(36, 117) Source(56, 101) + SourceIndex(0) +20>Emitted(36, 120) Source(56, 104) + SourceIndex(0) +21>Emitted(36, 121) Source(56, 105) + SourceIndex(0) +22>Emitted(36, 123) Source(56, 107) + SourceIndex(0) +23>Emitted(36, 124) Source(56, 108) + SourceIndex(0) +24>Emitted(36, 126) Source(56, 110) + SourceIndex(0) +25>Emitted(36, 128) Source(56, 112) + SourceIndex(0) +26>Emitted(36, 129) Source(56, 113) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(37, 5) Source(57, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(57, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(57, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(57, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(57, 17) + SourceIndex(0) +6 >Emitted(37, 25) Source(57, 25) + SourceIndex(0) +7 >Emitted(37, 26) Source(57, 26) + SourceIndex(0) +8 >Emitted(37, 27) Source(57, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(58, 2) + SourceIndex(0) +--- +>>>for (var _g = getMultiRobot(), nameA = _g.name, _h = _g.skills, primaryA = _h.primary, secondaryA = _h.secondary, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +7 > getMultiRobot() +8 > +9 > name: nameA +10> , +11> skills +12> : { +13> primary: primaryA +14> , +15> secondary: secondaryA +16> } } = getMultiRobot(), +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(39, 1) Source(59, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(59, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(59, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(59, 6) + SourceIndex(0) +5 >Emitted(39, 9) Source(59, 9) + SourceIndex(0) +6 >Emitted(39, 10) Source(59, 81) + SourceIndex(0) +7 >Emitted(39, 30) Source(59, 96) + SourceIndex(0) +8 >Emitted(39, 32) Source(59, 11) + SourceIndex(0) +9 >Emitted(39, 47) Source(59, 22) + SourceIndex(0) +10>Emitted(39, 49) Source(59, 24) + SourceIndex(0) +11>Emitted(39, 63) Source(59, 30) + SourceIndex(0) +12>Emitted(39, 65) Source(59, 34) + SourceIndex(0) +13>Emitted(39, 86) Source(59, 51) + SourceIndex(0) +14>Emitted(39, 88) Source(59, 53) + SourceIndex(0) +15>Emitted(39, 113) Source(59, 74) + SourceIndex(0) +16>Emitted(39, 115) Source(59, 98) + SourceIndex(0) +17>Emitted(39, 116) Source(59, 99) + SourceIndex(0) +18>Emitted(39, 119) Source(59, 102) + SourceIndex(0) +19>Emitted(39, 120) Source(59, 103) + SourceIndex(0) +20>Emitted(39, 122) Source(59, 105) + SourceIndex(0) +21>Emitted(39, 123) Source(59, 106) + SourceIndex(0) +22>Emitted(39, 126) Source(59, 109) + SourceIndex(0) +23>Emitted(39, 127) Source(59, 110) + SourceIndex(0) +24>Emitted(39, 129) Source(59, 112) + SourceIndex(0) +25>Emitted(39, 130) Source(59, 113) + SourceIndex(0) +26>Emitted(39, 132) Source(59, 115) + SourceIndex(0) +27>Emitted(39, 134) Source(59, 117) + SourceIndex(0) +28>Emitted(39, 135) Source(59, 118) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(40, 5) Source(60, 5) + SourceIndex(0) +2 >Emitted(40, 12) Source(60, 12) + SourceIndex(0) +3 >Emitted(40, 13) Source(60, 13) + SourceIndex(0) +4 >Emitted(40, 16) Source(60, 16) + SourceIndex(0) +5 >Emitted(40, 17) Source(60, 17) + SourceIndex(0) +6 >Emitted(40, 25) Source(60, 25) + SourceIndex(0) +7 >Emitted(40, 26) Source(60, 26) + SourceIndex(0) +8 >Emitted(40, 27) Source(60, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(61, 2) + SourceIndex(0) +--- +>>>for (var _j = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, nameA = _j.name, _k = _j.skills, primaryA = _k.primary, secondaryA = _k.secondary, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + > +7 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +8 > +9 > name: nameA +10> , +11> skills +12> : { +13> primary: primaryA +14> , +15> secondary: secondaryA +16> } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + > +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(42, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(42, 4) Source(62, 4) + SourceIndex(0) +3 >Emitted(42, 5) Source(62, 5) + SourceIndex(0) +4 >Emitted(42, 6) Source(62, 6) + SourceIndex(0) +5 >Emitted(42, 9) Source(62, 9) + SourceIndex(0) +6 >Emitted(42, 10) Source(63, 5) + SourceIndex(0) +7 >Emitted(42, 88) Source(63, 90) + SourceIndex(0) +8 >Emitted(42, 90) Source(62, 11) + SourceIndex(0) +9 >Emitted(42, 105) Source(62, 22) + SourceIndex(0) +10>Emitted(42, 107) Source(62, 24) + SourceIndex(0) +11>Emitted(42, 121) Source(62, 30) + SourceIndex(0) +12>Emitted(42, 123) Source(62, 34) + SourceIndex(0) +13>Emitted(42, 144) Source(62, 51) + SourceIndex(0) +14>Emitted(42, 146) Source(62, 53) + SourceIndex(0) +15>Emitted(42, 171) Source(62, 74) + SourceIndex(0) +16>Emitted(42, 173) Source(64, 5) + SourceIndex(0) +17>Emitted(42, 174) Source(64, 6) + SourceIndex(0) +18>Emitted(42, 177) Source(64, 9) + SourceIndex(0) +19>Emitted(42, 178) Source(64, 10) + SourceIndex(0) +20>Emitted(42, 180) Source(64, 12) + SourceIndex(0) +21>Emitted(42, 181) Source(64, 13) + SourceIndex(0) +22>Emitted(42, 184) Source(64, 16) + SourceIndex(0) +23>Emitted(42, 185) Source(64, 17) + SourceIndex(0) +24>Emitted(42, 187) Source(64, 19) + SourceIndex(0) +25>Emitted(42, 188) Source(64, 20) + SourceIndex(0) +26>Emitted(42, 190) Source(64, 22) + SourceIndex(0) +27>Emitted(42, 192) Source(64, 24) + SourceIndex(0) +28>Emitted(42, 193) Source(64, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(43, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(65, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(65, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(65, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(65, 17) + SourceIndex(0) +6 >Emitted(43, 25) Source(65, 25) + SourceIndex(0) +7 >Emitted(43, 26) Source(65, 26) + SourceIndex(0) +8 >Emitted(43, 27) Source(65, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(44, 1) Source(66, 1) + SourceIndex(0) +2 >Emitted(44, 2) Source(66, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols new file mode 100644 index 00000000000..7037783e9a1 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.symbols @@ -0,0 +1,282 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 16, 20)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 16, 35)) + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 30)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 45)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 55)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 74)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 97)) + + return robot; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 16, 3)) +} +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 20, 1)) + + return multiRobot; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 3)) +} + +for (let {name: nameA } = robot, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 25, 10)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 25, 32)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 25, 32)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 25, 32)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 25, 10)) +} +for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 28, 10)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 28, 37)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 28, 37)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 28, 37)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 28, 10)) +} +for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 10)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 34)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 51)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 72)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 72)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 72)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 31, 10)) +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 34, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 34, 39)) +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 34, 79)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 34, 79)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 34, 79)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 34, 20)) +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 37, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 37, 39)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 37, 84)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 37, 84)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 37, 84)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 37, 20)) +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 40, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 40, 39)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 41, 90)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 40, 20)) +} + +for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 46, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 46, 22)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 46, 47)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 46, 47)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 46, 47)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 46, 10)) +} +for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 49, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 49, 22)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 49, 52)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 49, 52)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 49, 52)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 49, 10)) +} +for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 22)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 49)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 66)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 87)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 87)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 87)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 52, 10)) +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 10)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 51)) +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 91)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 91)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 91)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 55, 32)) +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 10)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 51)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 96)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 96)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 96)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 58, 32)) +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 61, 10)) +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 61, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 11, 24)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 61, 51)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 62, 90)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern.ts, 61, 32)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.types new file mode 100644 index 00000000000..21a7122e564 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.types @@ -0,0 +1,374 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : MultiRobot +>MultiRobot : MultiRobot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +function getRobot() { +>getRobot : () => Robot + + return robot; +>robot : Robot +} +function getMultiRobot() { +>getMultiRobot : () => MultiRobot + + return multiRobot; +>multiRobot : MultiRobot +} + +for (let {name: nameA } = robot, i = 0; i < 1; i++) { +>name : any +>nameA : string +>robot : Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { +>name : any +>nameA : string +>getRobot() : Robot +>getRobot : () => Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : any +>nameA : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>multiRobot : MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { +>name : any +>nameA : string +>skill : any +>skillA : string +>robot : Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { +>name : any +>nameA : string +>skill : any +>skillA : string +>getRobot() : Robot +>getRobot : () => Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : any +>nameA : string +>skill : any +>skillA : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>name : any +>nameA : string +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>multiRobot : MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>name : any +>nameA : string +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +>name : any +>nameA : string +>skills : any +>primary : any +>primaryA : string +>secondary : any +>secondaryA : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.ts new file mode 100644 index 00000000000..7d5471db324 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern.ts @@ -0,0 +1,67 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +for (let {name: nameA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} \ No newline at end of file From 1da5b15c1a9915c6228dc1e5607f0131cca60472 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 14:46:51 -0800 Subject: [PATCH 036/164] Test case for "For" statement with array binding pattern --- ...tionDestructuringForArrayBindingPattern.js | 177 ++ ...DestructuringForArrayBindingPattern.js.map | 2 + ...turingForArrayBindingPattern.sourcemap.txt | 2825 +++++++++++++++++ ...estructuringForArrayBindingPattern.symbols | 365 +++ ...nDestructuringForArrayBindingPattern.types | 549 ++++ ...tionDestructuringForArrayBindingPattern.ts | 93 + 6 files changed, 4011 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js new file mode 100644 index 00000000000..407af9c08a0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js @@ -0,0 +1,177 @@ +//// [sourceMapValidationDestructuringForArrayBindingPattern.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +for (let [, nameA] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for (let [numberB] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} + +//// [sourceMapValidationDestructuringForArrayBindingPattern.js] +var robotA = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} +for (var nameA = robotA[1], i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _a = getRobot(), nameA = _a[1], i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _b = [2, "trimmer", "trimming"], nameA = _b[1], i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _c = multiRobotA[1], primarySkillA = _c[0], secondarySkillA = _c[1], i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (var _d = getMultiRobot(), _e = _d[1], primarySkillA = _e[0], secondarySkillA = _e[1], i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (var _f = ["trimmer", ["trimming", "edging"]], _g = _f[1], primarySkillA = _g[0], secondarySkillA = _g[1], i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (var numberB = robotA[0], i = 0; i < 1; i++) { + console.log(numberB); +} +for (var numberB = getRobot()[0], i = 0; i < 1; i++) { + console.log(numberB); +} +for (var numberB = [2, "trimmer", "trimming"][0], i = 0; i < 1; i++) { + console.log(numberB); +} +for (var nameB = multiRobotA[0], i = 0; i < 1; i++) { + console.log(nameB); +} +for (var nameB = getMultiRobot()[0], i = 0; i < 1; i++) { + console.log(nameB); +} +for (var nameB = ["trimmer", ["trimming", "edging"]][0], i = 0; i < 1; i++) { + console.log(nameB); +} +for (var numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var _h = getRobot(), numberA2 = _h[0], nameA2 = _h[1], skillA2 = _h[2], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var _j = [2, "trimmer", "trimming"], numberA2 = _j[0], nameA2 = _j[1], skillA2 = _j[2], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var nameMA = multiRobotA[0], _k = multiRobotA[1], primarySkillA = _k[0], secondarySkillA = _k[1], i = 0; i < 1; i++) { + console.log(nameMA); +} +for (var _l = getMultiRobot(), nameMA = _l[0], _m = _l[1], primarySkillA = _m[0], secondarySkillA = _m[1], i = 0; i < 1; i++) { + console.log(nameMA); +} +for (var _o = ["trimmer", ["trimming", "edging"]], nameMA = _o[0], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1], i = 0; i < 1; i++) { + console.log(nameMA); +} +for (var numberA3 = robotA[0], robotAInfo = robotA.slice(1), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (var _q = getRobot(), numberA3 = _q[0], robotAInfo = _q.slice(1), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (var _r = [2, "trimmer", "trimming"], numberA3 = _r[0], robotAInfo = _r.slice(1), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (var multiRobotAInfo = multiRobotA.slice(0), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for (var multiRobotAInfo = getMultiRobot().slice(0), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for (var multiRobotAInfo = ["trimmer", ["trimming", "edging"]].slice(0), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map new file mode 100644 index 00000000000..efda72d1d96 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForArrayBindingPattern.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt new file mode 100644 index 00000000000..11ef4f41879 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt @@ -0,0 +1,2825 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForArrayBindingPattern.js +mapUrl: sourceMapValidationDestructuringForArrayBindingPattern.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForArrayBindingPattern.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.js +sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> return robotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robotA +5 > ; +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +3 >Emitted(3, 12) Source(9, 12) + SourceIndex(0) +4 >Emitted(3, 18) Source(9, 18) + SourceIndex(0) +5 >Emitted(3, 19) Source(9, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 2) Source(10, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 16) Source(12, 16) + SourceIndex(0) +4 >Emitted(5, 19) Source(12, 38) + SourceIndex(0) +5 >Emitted(5, 20) Source(12, 39) + SourceIndex(0) +6 >Emitted(5, 27) Source(12, 46) + SourceIndex(0) +7 >Emitted(5, 29) Source(12, 48) + SourceIndex(0) +8 >Emitted(5, 30) Source(12, 49) + SourceIndex(0) +9 >Emitted(5, 38) Source(12, 57) + SourceIndex(0) +10>Emitted(5, 40) Source(12, 59) + SourceIndex(0) +11>Emitted(5, 42) Source(12, 61) + SourceIndex(0) +12>Emitted(5, 43) Source(12, 62) + SourceIndex(0) +13>Emitted(5, 44) Source(12, 63) + SourceIndex(0) +14>Emitted(5, 45) Source(12, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 16) Source(13, 16) + SourceIndex(0) +4 >Emitted(6, 19) Source(13, 38) + SourceIndex(0) +5 >Emitted(6, 20) Source(13, 39) + SourceIndex(0) +6 >Emitted(6, 29) Source(13, 48) + SourceIndex(0) +7 >Emitted(6, 31) Source(13, 50) + SourceIndex(0) +8 >Emitted(6, 32) Source(13, 51) + SourceIndex(0) +9 >Emitted(6, 42) Source(13, 61) + SourceIndex(0) +10>Emitted(6, 44) Source(13, 63) + SourceIndex(0) +11>Emitted(6, 52) Source(13, 71) + SourceIndex(0) +12>Emitted(6, 53) Source(13, 72) + SourceIndex(0) +13>Emitted(6, 54) Source(13, 73) + SourceIndex(0) +14>Emitted(6, 55) Source(13, 74) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(7, 1) Source(14, 1) + SourceIndex(0) +--- +>>> return multiRobotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobotA +5 > ; +1->Emitted(8, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(15, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(15, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(15, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(16, 2) + SourceIndex(0) +--- +>>>for (var nameA = robotA[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [, nameA] = robotA +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(10, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(10, 4) Source(18, 4) + SourceIndex(0) +3 >Emitted(10, 5) Source(18, 5) + SourceIndex(0) +4 >Emitted(10, 6) Source(18, 6) + SourceIndex(0) +5 >Emitted(10, 9) Source(18, 9) + SourceIndex(0) +6 >Emitted(10, 10) Source(18, 10) + SourceIndex(0) +7 >Emitted(10, 27) Source(18, 28) + SourceIndex(0) +8 >Emitted(10, 29) Source(18, 30) + SourceIndex(0) +9 >Emitted(10, 30) Source(18, 31) + SourceIndex(0) +10>Emitted(10, 33) Source(18, 34) + SourceIndex(0) +11>Emitted(10, 34) Source(18, 35) + SourceIndex(0) +12>Emitted(10, 36) Source(18, 37) + SourceIndex(0) +13>Emitted(10, 37) Source(18, 38) + SourceIndex(0) +14>Emitted(10, 40) Source(18, 41) + SourceIndex(0) +15>Emitted(10, 41) Source(18, 42) + SourceIndex(0) +16>Emitted(10, 43) Source(18, 44) + SourceIndex(0) +17>Emitted(10, 44) Source(18, 45) + SourceIndex(0) +18>Emitted(10, 46) Source(18, 47) + SourceIndex(0) +19>Emitted(10, 48) Source(18, 49) + SourceIndex(0) +20>Emitted(10, 49) Source(18, 50) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(11, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(11, 12) Source(19, 12) + SourceIndex(0) +3 >Emitted(11, 13) Source(19, 13) + SourceIndex(0) +4 >Emitted(11, 16) Source(19, 16) + SourceIndex(0) +5 >Emitted(11, 17) Source(19, 17) + SourceIndex(0) +6 >Emitted(11, 22) Source(19, 22) + SourceIndex(0) +7 >Emitted(11, 23) Source(19, 23) + SourceIndex(0) +8 >Emitted(11, 24) Source(19, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(20, 2) + SourceIndex(0) +--- +>>>for (var _a = getRobot(), nameA = _a[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [, nameA] = +7 > getRobot() +8 > +9 > [, nameA] = getRobot() +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 4) Source(21, 4) + SourceIndex(0) +3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +4 >Emitted(13, 6) Source(21, 6) + SourceIndex(0) +5 >Emitted(13, 9) Source(21, 9) + SourceIndex(0) +6 >Emitted(13, 10) Source(21, 22) + SourceIndex(0) +7 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) +8 >Emitted(13, 27) Source(21, 10) + SourceIndex(0) +9 >Emitted(13, 40) Source(21, 32) + SourceIndex(0) +10>Emitted(13, 42) Source(21, 34) + SourceIndex(0) +11>Emitted(13, 43) Source(21, 35) + SourceIndex(0) +12>Emitted(13, 46) Source(21, 38) + SourceIndex(0) +13>Emitted(13, 47) Source(21, 39) + SourceIndex(0) +14>Emitted(13, 49) Source(21, 41) + SourceIndex(0) +15>Emitted(13, 50) Source(21, 42) + SourceIndex(0) +16>Emitted(13, 53) Source(21, 45) + SourceIndex(0) +17>Emitted(13, 54) Source(21, 46) + SourceIndex(0) +18>Emitted(13, 56) Source(21, 48) + SourceIndex(0) +19>Emitted(13, 57) Source(21, 49) + SourceIndex(0) +20>Emitted(13, 59) Source(21, 51) + SourceIndex(0) +21>Emitted(13, 61) Source(21, 53) + SourceIndex(0) +22>Emitted(13, 62) Source(21, 54) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(14, 12) Source(22, 12) + SourceIndex(0) +3 >Emitted(14, 13) Source(22, 13) + SourceIndex(0) +4 >Emitted(14, 16) Source(22, 16) + SourceIndex(0) +5 >Emitted(14, 17) Source(22, 17) + SourceIndex(0) +6 >Emitted(14, 22) Source(22, 22) + SourceIndex(0) +7 >Emitted(14, 23) Source(22, 23) + SourceIndex(0) +8 >Emitted(14, 24) Source(22, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(15, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(15, 2) Source(23, 2) + SourceIndex(0) +--- +>>>for (var _b = [2, "trimmer", "trimming"], nameA = _b[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [, nameA] = +7 > [2, "trimmer", "trimming"] +8 > +9 > [, nameA] = [2, "trimmer", "trimming"] +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(16, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(16, 4) Source(24, 4) + SourceIndex(0) +3 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) +4 >Emitted(16, 6) Source(24, 6) + SourceIndex(0) +5 >Emitted(16, 9) Source(24, 9) + SourceIndex(0) +6 >Emitted(16, 10) Source(24, 22) + SourceIndex(0) +7 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) +8 >Emitted(16, 43) Source(24, 10) + SourceIndex(0) +9 >Emitted(16, 56) Source(24, 48) + SourceIndex(0) +10>Emitted(16, 58) Source(24, 50) + SourceIndex(0) +11>Emitted(16, 59) Source(24, 51) + SourceIndex(0) +12>Emitted(16, 62) Source(24, 54) + SourceIndex(0) +13>Emitted(16, 63) Source(24, 55) + SourceIndex(0) +14>Emitted(16, 65) Source(24, 57) + SourceIndex(0) +15>Emitted(16, 66) Source(24, 58) + SourceIndex(0) +16>Emitted(16, 69) Source(24, 61) + SourceIndex(0) +17>Emitted(16, 70) Source(24, 62) + SourceIndex(0) +18>Emitted(16, 72) Source(24, 64) + SourceIndex(0) +19>Emitted(16, 73) Source(24, 65) + SourceIndex(0) +20>Emitted(16, 75) Source(24, 67) + SourceIndex(0) +21>Emitted(16, 77) Source(24, 69) + SourceIndex(0) +22>Emitted(16, 78) Source(24, 70) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(17, 5) Source(25, 5) + SourceIndex(0) +2 >Emitted(17, 12) Source(25, 12) + SourceIndex(0) +3 >Emitted(17, 13) Source(25, 13) + SourceIndex(0) +4 >Emitted(17, 16) Source(25, 16) + SourceIndex(0) +5 >Emitted(17, 17) Source(25, 17) + SourceIndex(0) +6 >Emitted(17, 22) Source(25, 22) + SourceIndex(0) +7 >Emitted(17, 23) Source(25, 23) + SourceIndex(0) +8 >Emitted(17, 24) Source(25, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(18, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(18, 2) Source(26, 2) + SourceIndex(0) +--- +>>>for (var _c = multiRobotA[1], primarySkillA = _c[0], secondarySkillA = _c[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [, +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +12> ]] = multiRobotA, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(19, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(19, 4) Source(27, 4) + SourceIndex(0) +3 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) +4 >Emitted(19, 6) Source(27, 6) + SourceIndex(0) +5 >Emitted(19, 9) Source(27, 9) + SourceIndex(0) +6 >Emitted(19, 10) Source(27, 13) + SourceIndex(0) +7 >Emitted(19, 29) Source(27, 45) + SourceIndex(0) +8 >Emitted(19, 31) Source(27, 14) + SourceIndex(0) +9 >Emitted(19, 52) Source(27, 27) + SourceIndex(0) +10>Emitted(19, 54) Source(27, 29) + SourceIndex(0) +11>Emitted(19, 77) Source(27, 44) + SourceIndex(0) +12>Emitted(19, 79) Source(27, 62) + SourceIndex(0) +13>Emitted(19, 80) Source(27, 63) + SourceIndex(0) +14>Emitted(19, 83) Source(27, 66) + SourceIndex(0) +15>Emitted(19, 84) Source(27, 67) + SourceIndex(0) +16>Emitted(19, 86) Source(27, 69) + SourceIndex(0) +17>Emitted(19, 87) Source(27, 70) + SourceIndex(0) +18>Emitted(19, 90) Source(27, 73) + SourceIndex(0) +19>Emitted(19, 91) Source(27, 74) + SourceIndex(0) +20>Emitted(19, 93) Source(27, 76) + SourceIndex(0) +21>Emitted(19, 94) Source(27, 77) + SourceIndex(0) +22>Emitted(19, 96) Source(27, 79) + SourceIndex(0) +23>Emitted(19, 98) Source(27, 81) + SourceIndex(0) +24>Emitted(19, 99) Source(27, 82) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(20, 5) Source(28, 5) + SourceIndex(0) +2 >Emitted(20, 12) Source(28, 12) + SourceIndex(0) +3 >Emitted(20, 13) Source(28, 13) + SourceIndex(0) +4 >Emitted(20, 16) Source(28, 16) + SourceIndex(0) +5 >Emitted(20, 17) Source(28, 17) + SourceIndex(0) +6 >Emitted(20, 30) Source(28, 30) + SourceIndex(0) +7 >Emitted(20, 31) Source(28, 31) + SourceIndex(0) +8 >Emitted(20, 32) Source(28, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(21, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(21, 2) Source(29, 2) + SourceIndex(0) +--- +>>>for (var _d = getMultiRobot(), _e = _d[1], primarySkillA = _e[0], secondarySkillA = _e[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [, [primarySkillA, secondarySkillA]] = +7 > getMultiRobot() +8 > +9 > [primarySkillA, secondarySkillA] +10> +11> primarySkillA +12> , +13> secondarySkillA +14> ]] = getMultiRobot(), +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(22, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(22, 4) Source(30, 4) + SourceIndex(0) +3 >Emitted(22, 5) Source(30, 5) + SourceIndex(0) +4 >Emitted(22, 6) Source(30, 6) + SourceIndex(0) +5 >Emitted(22, 9) Source(30, 9) + SourceIndex(0) +6 >Emitted(22, 10) Source(30, 49) + SourceIndex(0) +7 >Emitted(22, 30) Source(30, 64) + SourceIndex(0) +8 >Emitted(22, 32) Source(30, 13) + SourceIndex(0) +9 >Emitted(22, 42) Source(30, 45) + SourceIndex(0) +10>Emitted(22, 44) Source(30, 14) + SourceIndex(0) +11>Emitted(22, 65) Source(30, 27) + SourceIndex(0) +12>Emitted(22, 67) Source(30, 29) + SourceIndex(0) +13>Emitted(22, 90) Source(30, 44) + SourceIndex(0) +14>Emitted(22, 92) Source(30, 66) + SourceIndex(0) +15>Emitted(22, 93) Source(30, 67) + SourceIndex(0) +16>Emitted(22, 96) Source(30, 70) + SourceIndex(0) +17>Emitted(22, 97) Source(30, 71) + SourceIndex(0) +18>Emitted(22, 99) Source(30, 73) + SourceIndex(0) +19>Emitted(22, 100) Source(30, 74) + SourceIndex(0) +20>Emitted(22, 103) Source(30, 77) + SourceIndex(0) +21>Emitted(22, 104) Source(30, 78) + SourceIndex(0) +22>Emitted(22, 106) Source(30, 80) + SourceIndex(0) +23>Emitted(22, 107) Source(30, 81) + SourceIndex(0) +24>Emitted(22, 109) Source(30, 83) + SourceIndex(0) +25>Emitted(22, 111) Source(30, 85) + SourceIndex(0) +26>Emitted(22, 112) Source(30, 86) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(23, 5) Source(31, 5) + SourceIndex(0) +2 >Emitted(23, 12) Source(31, 12) + SourceIndex(0) +3 >Emitted(23, 13) Source(31, 13) + SourceIndex(0) +4 >Emitted(23, 16) Source(31, 16) + SourceIndex(0) +5 >Emitted(23, 17) Source(31, 17) + SourceIndex(0) +6 >Emitted(23, 30) Source(31, 30) + SourceIndex(0) +7 >Emitted(23, 31) Source(31, 31) + SourceIndex(0) +8 >Emitted(23, 32) Source(31, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(24, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(24, 2) Source(32, 2) + SourceIndex(0) +--- +>>>for (var _f = ["trimmer", ["trimming", "edging"]], _g = _f[1], primarySkillA = _g[0], secondarySkillA = _g[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [, [primarySkillA, secondarySkillA]] = +7 > ["trimmer", ["trimming", "edging"]] +8 > +9 > [primarySkillA, secondarySkillA] +10> +11> primarySkillA +12> , +13> secondarySkillA +14> ]] = ["trimmer", ["trimming", "edging"]], +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(25, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(25, 4) Source(33, 4) + SourceIndex(0) +3 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) +4 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) +5 >Emitted(25, 9) Source(33, 9) + SourceIndex(0) +6 >Emitted(25, 10) Source(33, 49) + SourceIndex(0) +7 >Emitted(25, 50) Source(33, 84) + SourceIndex(0) +8 >Emitted(25, 52) Source(33, 13) + SourceIndex(0) +9 >Emitted(25, 62) Source(33, 45) + SourceIndex(0) +10>Emitted(25, 64) Source(33, 14) + SourceIndex(0) +11>Emitted(25, 85) Source(33, 27) + SourceIndex(0) +12>Emitted(25, 87) Source(33, 29) + SourceIndex(0) +13>Emitted(25, 110) Source(33, 44) + SourceIndex(0) +14>Emitted(25, 112) Source(33, 86) + SourceIndex(0) +15>Emitted(25, 113) Source(33, 87) + SourceIndex(0) +16>Emitted(25, 116) Source(33, 90) + SourceIndex(0) +17>Emitted(25, 117) Source(33, 91) + SourceIndex(0) +18>Emitted(25, 119) Source(33, 93) + SourceIndex(0) +19>Emitted(25, 120) Source(33, 94) + SourceIndex(0) +20>Emitted(25, 123) Source(33, 97) + SourceIndex(0) +21>Emitted(25, 124) Source(33, 98) + SourceIndex(0) +22>Emitted(25, 126) Source(33, 100) + SourceIndex(0) +23>Emitted(25, 127) Source(33, 101) + SourceIndex(0) +24>Emitted(25, 129) Source(33, 103) + SourceIndex(0) +25>Emitted(25, 131) Source(33, 105) + SourceIndex(0) +26>Emitted(25, 132) Source(33, 106) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(26, 5) Source(34, 5) + SourceIndex(0) +2 >Emitted(26, 12) Source(34, 12) + SourceIndex(0) +3 >Emitted(26, 13) Source(34, 13) + SourceIndex(0) +4 >Emitted(26, 16) Source(34, 16) + SourceIndex(0) +5 >Emitted(26, 17) Source(34, 17) + SourceIndex(0) +6 >Emitted(26, 30) Source(34, 30) + SourceIndex(0) +7 >Emitted(26, 31) Source(34, 31) + SourceIndex(0) +8 >Emitted(26, 32) Source(34, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(27, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(27, 2) Source(35, 2) + SourceIndex(0) +--- +>>>for (var numberB = robotA[0], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [numberB] = robotA +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(28, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(28, 4) Source(37, 4) + SourceIndex(0) +3 >Emitted(28, 5) Source(37, 5) + SourceIndex(0) +4 >Emitted(28, 6) Source(37, 6) + SourceIndex(0) +5 >Emitted(28, 9) Source(37, 9) + SourceIndex(0) +6 >Emitted(28, 10) Source(37, 10) + SourceIndex(0) +7 >Emitted(28, 29) Source(37, 28) + SourceIndex(0) +8 >Emitted(28, 31) Source(37, 30) + SourceIndex(0) +9 >Emitted(28, 32) Source(37, 31) + SourceIndex(0) +10>Emitted(28, 35) Source(37, 34) + SourceIndex(0) +11>Emitted(28, 36) Source(37, 35) + SourceIndex(0) +12>Emitted(28, 38) Source(37, 37) + SourceIndex(0) +13>Emitted(28, 39) Source(37, 38) + SourceIndex(0) +14>Emitted(28, 42) Source(37, 41) + SourceIndex(0) +15>Emitted(28, 43) Source(37, 42) + SourceIndex(0) +16>Emitted(28, 45) Source(37, 44) + SourceIndex(0) +17>Emitted(28, 46) Source(37, 45) + SourceIndex(0) +18>Emitted(28, 48) Source(37, 47) + SourceIndex(0) +19>Emitted(28, 50) Source(37, 49) + SourceIndex(0) +20>Emitted(28, 51) Source(37, 50) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(29, 5) Source(38, 5) + SourceIndex(0) +2 >Emitted(29, 12) Source(38, 12) + SourceIndex(0) +3 >Emitted(29, 13) Source(38, 13) + SourceIndex(0) +4 >Emitted(29, 16) Source(38, 16) + SourceIndex(0) +5 >Emitted(29, 17) Source(38, 17) + SourceIndex(0) +6 >Emitted(29, 24) Source(38, 24) + SourceIndex(0) +7 >Emitted(29, 25) Source(38, 25) + SourceIndex(0) +8 >Emitted(29, 26) Source(38, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(30, 1) Source(39, 1) + SourceIndex(0) +2 >Emitted(30, 2) Source(39, 2) + SourceIndex(0) +--- +>>>for (var numberB = getRobot()[0], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [numberB] = getRobot() +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(31, 1) Source(40, 1) + SourceIndex(0) +2 >Emitted(31, 4) Source(40, 4) + SourceIndex(0) +3 >Emitted(31, 5) Source(40, 5) + SourceIndex(0) +4 >Emitted(31, 6) Source(40, 6) + SourceIndex(0) +5 >Emitted(31, 9) Source(40, 9) + SourceIndex(0) +6 >Emitted(31, 10) Source(40, 10) + SourceIndex(0) +7 >Emitted(31, 33) Source(40, 32) + SourceIndex(0) +8 >Emitted(31, 35) Source(40, 34) + SourceIndex(0) +9 >Emitted(31, 36) Source(40, 35) + SourceIndex(0) +10>Emitted(31, 39) Source(40, 38) + SourceIndex(0) +11>Emitted(31, 40) Source(40, 39) + SourceIndex(0) +12>Emitted(31, 42) Source(40, 41) + SourceIndex(0) +13>Emitted(31, 43) Source(40, 42) + SourceIndex(0) +14>Emitted(31, 46) Source(40, 45) + SourceIndex(0) +15>Emitted(31, 47) Source(40, 46) + SourceIndex(0) +16>Emitted(31, 49) Source(40, 48) + SourceIndex(0) +17>Emitted(31, 50) Source(40, 49) + SourceIndex(0) +18>Emitted(31, 52) Source(40, 51) + SourceIndex(0) +19>Emitted(31, 54) Source(40, 53) + SourceIndex(0) +20>Emitted(31, 55) Source(40, 54) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(32, 5) Source(41, 5) + SourceIndex(0) +2 >Emitted(32, 12) Source(41, 12) + SourceIndex(0) +3 >Emitted(32, 13) Source(41, 13) + SourceIndex(0) +4 >Emitted(32, 16) Source(41, 16) + SourceIndex(0) +5 >Emitted(32, 17) Source(41, 17) + SourceIndex(0) +6 >Emitted(32, 24) Source(41, 24) + SourceIndex(0) +7 >Emitted(32, 25) Source(41, 25) + SourceIndex(0) +8 >Emitted(32, 26) Source(41, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(33, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(33, 2) Source(42, 2) + SourceIndex(0) +--- +>>>for (var numberB = [2, "trimmer", "trimming"][0], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [numberB] = [2, "trimmer", "trimming"] +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(34, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(34, 4) Source(43, 4) + SourceIndex(0) +3 >Emitted(34, 5) Source(43, 5) + SourceIndex(0) +4 >Emitted(34, 6) Source(43, 6) + SourceIndex(0) +5 >Emitted(34, 9) Source(43, 9) + SourceIndex(0) +6 >Emitted(34, 10) Source(43, 10) + SourceIndex(0) +7 >Emitted(34, 49) Source(43, 48) + SourceIndex(0) +8 >Emitted(34, 51) Source(43, 50) + SourceIndex(0) +9 >Emitted(34, 52) Source(43, 51) + SourceIndex(0) +10>Emitted(34, 55) Source(43, 54) + SourceIndex(0) +11>Emitted(34, 56) Source(43, 55) + SourceIndex(0) +12>Emitted(34, 58) Source(43, 57) + SourceIndex(0) +13>Emitted(34, 59) Source(43, 58) + SourceIndex(0) +14>Emitted(34, 62) Source(43, 61) + SourceIndex(0) +15>Emitted(34, 63) Source(43, 62) + SourceIndex(0) +16>Emitted(34, 65) Source(43, 64) + SourceIndex(0) +17>Emitted(34, 66) Source(43, 65) + SourceIndex(0) +18>Emitted(34, 68) Source(43, 67) + SourceIndex(0) +19>Emitted(34, 70) Source(43, 69) + SourceIndex(0) +20>Emitted(34, 71) Source(43, 70) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(35, 5) Source(44, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(44, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(44, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(44, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(44, 17) + SourceIndex(0) +6 >Emitted(35, 24) Source(44, 24) + SourceIndex(0) +7 >Emitted(35, 25) Source(44, 25) + SourceIndex(0) +8 >Emitted(35, 26) Source(44, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(36, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(36, 2) Source(45, 2) + SourceIndex(0) +--- +>>>for (var nameB = multiRobotA[0], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [nameB] = multiRobotA +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(37, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(46, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(46, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(46, 6) + SourceIndex(0) +5 >Emitted(37, 9) Source(46, 9) + SourceIndex(0) +6 >Emitted(37, 10) Source(46, 10) + SourceIndex(0) +7 >Emitted(37, 32) Source(46, 31) + SourceIndex(0) +8 >Emitted(37, 34) Source(46, 33) + SourceIndex(0) +9 >Emitted(37, 35) Source(46, 34) + SourceIndex(0) +10>Emitted(37, 38) Source(46, 37) + SourceIndex(0) +11>Emitted(37, 39) Source(46, 38) + SourceIndex(0) +12>Emitted(37, 41) Source(46, 40) + SourceIndex(0) +13>Emitted(37, 42) Source(46, 41) + SourceIndex(0) +14>Emitted(37, 45) Source(46, 44) + SourceIndex(0) +15>Emitted(37, 46) Source(46, 45) + SourceIndex(0) +16>Emitted(37, 48) Source(46, 47) + SourceIndex(0) +17>Emitted(37, 49) Source(46, 48) + SourceIndex(0) +18>Emitted(37, 51) Source(46, 50) + SourceIndex(0) +19>Emitted(37, 53) Source(46, 52) + SourceIndex(0) +20>Emitted(37, 54) Source(46, 53) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(38, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(38, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(38, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(38, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(38, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(38, 22) Source(47, 22) + SourceIndex(0) +7 >Emitted(38, 23) Source(47, 23) + SourceIndex(0) +8 >Emitted(38, 24) Source(47, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(39, 1) Source(48, 1) + SourceIndex(0) +2 >Emitted(39, 2) Source(48, 2) + SourceIndex(0) +--- +>>>for (var nameB = getMultiRobot()[0], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [nameB] = getMultiRobot() +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(40, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(40, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(40, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(40, 6) Source(49, 6) + SourceIndex(0) +5 >Emitted(40, 9) Source(49, 9) + SourceIndex(0) +6 >Emitted(40, 10) Source(49, 10) + SourceIndex(0) +7 >Emitted(40, 36) Source(49, 35) + SourceIndex(0) +8 >Emitted(40, 38) Source(49, 37) + SourceIndex(0) +9 >Emitted(40, 39) Source(49, 38) + SourceIndex(0) +10>Emitted(40, 42) Source(49, 41) + SourceIndex(0) +11>Emitted(40, 43) Source(49, 42) + SourceIndex(0) +12>Emitted(40, 45) Source(49, 44) + SourceIndex(0) +13>Emitted(40, 46) Source(49, 45) + SourceIndex(0) +14>Emitted(40, 49) Source(49, 48) + SourceIndex(0) +15>Emitted(40, 50) Source(49, 49) + SourceIndex(0) +16>Emitted(40, 52) Source(49, 51) + SourceIndex(0) +17>Emitted(40, 53) Source(49, 52) + SourceIndex(0) +18>Emitted(40, 55) Source(49, 54) + SourceIndex(0) +19>Emitted(40, 57) Source(49, 56) + SourceIndex(0) +20>Emitted(40, 58) Source(49, 57) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(41, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(41, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(41, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(41, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(41, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(41, 22) Source(50, 22) + SourceIndex(0) +7 >Emitted(41, 23) Source(50, 23) + SourceIndex(0) +8 >Emitted(41, 24) Source(50, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(42, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(42, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for (var nameB = ["trimmer", ["trimming", "edging"]][0], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [nameB] = ["trimmer", ["trimming", "edging"]] +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(43, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(43, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(43, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(43, 6) Source(52, 6) + SourceIndex(0) +5 >Emitted(43, 9) Source(52, 9) + SourceIndex(0) +6 >Emitted(43, 10) Source(52, 10) + SourceIndex(0) +7 >Emitted(43, 56) Source(52, 55) + SourceIndex(0) +8 >Emitted(43, 58) Source(52, 57) + SourceIndex(0) +9 >Emitted(43, 59) Source(52, 58) + SourceIndex(0) +10>Emitted(43, 62) Source(52, 61) + SourceIndex(0) +11>Emitted(43, 63) Source(52, 62) + SourceIndex(0) +12>Emitted(43, 65) Source(52, 64) + SourceIndex(0) +13>Emitted(43, 66) Source(52, 65) + SourceIndex(0) +14>Emitted(43, 69) Source(52, 68) + SourceIndex(0) +15>Emitted(43, 70) Source(52, 69) + SourceIndex(0) +16>Emitted(43, 72) Source(52, 71) + SourceIndex(0) +17>Emitted(43, 73) Source(52, 72) + SourceIndex(0) +18>Emitted(43, 75) Source(52, 74) + SourceIndex(0) +19>Emitted(43, 77) Source(52, 76) + SourceIndex(0) +20>Emitted(43, 78) Source(52, 77) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(44, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(44, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(44, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(44, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(44, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(44, 22) Source(53, 22) + SourceIndex(0) +7 >Emitted(44, 23) Source(53, 23) + SourceIndex(0) +8 >Emitted(44, 24) Source(53, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(45, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(45, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for (var numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > let +6 > [ +7 > numberA2 +8 > , +9 > nameA2 +10> , +11> skillA2 +12> ] = robotA, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(46, 1) Source(56, 1) + SourceIndex(0) +2 >Emitted(46, 4) Source(56, 4) + SourceIndex(0) +3 >Emitted(46, 5) Source(56, 5) + SourceIndex(0) +4 >Emitted(46, 6) Source(56, 6) + SourceIndex(0) +5 >Emitted(46, 9) Source(56, 9) + SourceIndex(0) +6 >Emitted(46, 10) Source(56, 11) + SourceIndex(0) +7 >Emitted(46, 30) Source(56, 19) + SourceIndex(0) +8 >Emitted(46, 32) Source(56, 21) + SourceIndex(0) +9 >Emitted(46, 50) Source(56, 27) + SourceIndex(0) +10>Emitted(46, 52) Source(56, 29) + SourceIndex(0) +11>Emitted(46, 71) Source(56, 36) + SourceIndex(0) +12>Emitted(46, 73) Source(56, 48) + SourceIndex(0) +13>Emitted(46, 74) Source(56, 49) + SourceIndex(0) +14>Emitted(46, 77) Source(56, 52) + SourceIndex(0) +15>Emitted(46, 78) Source(56, 53) + SourceIndex(0) +16>Emitted(46, 80) Source(56, 55) + SourceIndex(0) +17>Emitted(46, 81) Source(56, 56) + SourceIndex(0) +18>Emitted(46, 84) Source(56, 59) + SourceIndex(0) +19>Emitted(46, 85) Source(56, 60) + SourceIndex(0) +20>Emitted(46, 87) Source(56, 62) + SourceIndex(0) +21>Emitted(46, 88) Source(56, 63) + SourceIndex(0) +22>Emitted(46, 90) Source(56, 65) + SourceIndex(0) +23>Emitted(46, 92) Source(56, 67) + SourceIndex(0) +24>Emitted(46, 93) Source(56, 68) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(47, 5) Source(57, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(57, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(57, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(57, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(57, 17) + SourceIndex(0) +6 >Emitted(47, 23) Source(57, 23) + SourceIndex(0) +7 >Emitted(47, 24) Source(57, 24) + SourceIndex(0) +8 >Emitted(47, 25) Source(57, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(48, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(48, 2) Source(58, 2) + SourceIndex(0) +--- +>>>for (var _h = getRobot(), numberA2 = _h[0], nameA2 = _h[1], skillA2 = _h[2], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [numberA2, nameA2, skillA2] = +7 > getRobot() +8 > +9 > numberA2 +10> , +11> nameA2 +12> , +13> skillA2 +14> ] = getRobot(), +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(49, 1) Source(59, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(59, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(59, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(59, 6) + SourceIndex(0) +5 >Emitted(49, 9) Source(59, 9) + SourceIndex(0) +6 >Emitted(49, 10) Source(59, 40) + SourceIndex(0) +7 >Emitted(49, 25) Source(59, 50) + SourceIndex(0) +8 >Emitted(49, 27) Source(59, 11) + SourceIndex(0) +9 >Emitted(49, 43) Source(59, 19) + SourceIndex(0) +10>Emitted(49, 45) Source(59, 21) + SourceIndex(0) +11>Emitted(49, 59) Source(59, 27) + SourceIndex(0) +12>Emitted(49, 61) Source(59, 29) + SourceIndex(0) +13>Emitted(49, 76) Source(59, 36) + SourceIndex(0) +14>Emitted(49, 78) Source(59, 52) + SourceIndex(0) +15>Emitted(49, 79) Source(59, 53) + SourceIndex(0) +16>Emitted(49, 82) Source(59, 56) + SourceIndex(0) +17>Emitted(49, 83) Source(59, 57) + SourceIndex(0) +18>Emitted(49, 85) Source(59, 59) + SourceIndex(0) +19>Emitted(49, 86) Source(59, 60) + SourceIndex(0) +20>Emitted(49, 89) Source(59, 63) + SourceIndex(0) +21>Emitted(49, 90) Source(59, 64) + SourceIndex(0) +22>Emitted(49, 92) Source(59, 66) + SourceIndex(0) +23>Emitted(49, 93) Source(59, 67) + SourceIndex(0) +24>Emitted(49, 95) Source(59, 69) + SourceIndex(0) +25>Emitted(49, 97) Source(59, 71) + SourceIndex(0) +26>Emitted(49, 98) Source(59, 72) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(50, 5) Source(60, 5) + SourceIndex(0) +2 >Emitted(50, 12) Source(60, 12) + SourceIndex(0) +3 >Emitted(50, 13) Source(60, 13) + SourceIndex(0) +4 >Emitted(50, 16) Source(60, 16) + SourceIndex(0) +5 >Emitted(50, 17) Source(60, 17) + SourceIndex(0) +6 >Emitted(50, 23) Source(60, 23) + SourceIndex(0) +7 >Emitted(50, 24) Source(60, 24) + SourceIndex(0) +8 >Emitted(50, 25) Source(60, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(51, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(51, 2) Source(61, 2) + SourceIndex(0) +--- +>>>for (var _j = [2, "trimmer", "trimming"], numberA2 = _j[0], nameA2 = _j[1], skillA2 = _j[2], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [numberA2, nameA2, skillA2] = +7 > [2, "trimmer", "trimming"] +8 > +9 > numberA2 +10> , +11> nameA2 +12> , +13> skillA2 +14> ] = [2, "trimmer", "trimming"], +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(52, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(52, 4) Source(62, 4) + SourceIndex(0) +3 >Emitted(52, 5) Source(62, 5) + SourceIndex(0) +4 >Emitted(52, 6) Source(62, 6) + SourceIndex(0) +5 >Emitted(52, 9) Source(62, 9) + SourceIndex(0) +6 >Emitted(52, 10) Source(62, 40) + SourceIndex(0) +7 >Emitted(52, 41) Source(62, 66) + SourceIndex(0) +8 >Emitted(52, 43) Source(62, 11) + SourceIndex(0) +9 >Emitted(52, 59) Source(62, 19) + SourceIndex(0) +10>Emitted(52, 61) Source(62, 21) + SourceIndex(0) +11>Emitted(52, 75) Source(62, 27) + SourceIndex(0) +12>Emitted(52, 77) Source(62, 29) + SourceIndex(0) +13>Emitted(52, 92) Source(62, 36) + SourceIndex(0) +14>Emitted(52, 94) Source(62, 68) + SourceIndex(0) +15>Emitted(52, 95) Source(62, 69) + SourceIndex(0) +16>Emitted(52, 98) Source(62, 72) + SourceIndex(0) +17>Emitted(52, 99) Source(62, 73) + SourceIndex(0) +18>Emitted(52, 101) Source(62, 75) + SourceIndex(0) +19>Emitted(52, 102) Source(62, 76) + SourceIndex(0) +20>Emitted(52, 105) Source(62, 79) + SourceIndex(0) +21>Emitted(52, 106) Source(62, 80) + SourceIndex(0) +22>Emitted(52, 108) Source(62, 82) + SourceIndex(0) +23>Emitted(52, 109) Source(62, 83) + SourceIndex(0) +24>Emitted(52, 111) Source(62, 85) + SourceIndex(0) +25>Emitted(52, 113) Source(62, 87) + SourceIndex(0) +26>Emitted(52, 114) Source(62, 88) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(53, 5) Source(63, 5) + SourceIndex(0) +2 >Emitted(53, 12) Source(63, 12) + SourceIndex(0) +3 >Emitted(53, 13) Source(63, 13) + SourceIndex(0) +4 >Emitted(53, 16) Source(63, 16) + SourceIndex(0) +5 >Emitted(53, 17) Source(63, 17) + SourceIndex(0) +6 >Emitted(53, 23) Source(63, 23) + SourceIndex(0) +7 >Emitted(53, 24) Source(63, 24) + SourceIndex(0) +8 >Emitted(53, 25) Source(63, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(54, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(54, 2) Source(64, 2) + SourceIndex(0) +--- +>>>for (var nameMA = multiRobotA[0], _k = multiRobotA[1], primarySkillA = _k[0], secondarySkillA = _k[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [ +7 > nameMA +8 > , +9 > [primarySkillA, secondarySkillA] +10> +11> primarySkillA +12> , +13> secondarySkillA +14> ]] = multiRobotA, +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(55, 1) Source(65, 1) + SourceIndex(0) +2 >Emitted(55, 4) Source(65, 4) + SourceIndex(0) +3 >Emitted(55, 5) Source(65, 5) + SourceIndex(0) +4 >Emitted(55, 6) Source(65, 6) + SourceIndex(0) +5 >Emitted(55, 9) Source(65, 9) + SourceIndex(0) +6 >Emitted(55, 10) Source(65, 11) + SourceIndex(0) +7 >Emitted(55, 33) Source(65, 17) + SourceIndex(0) +8 >Emitted(55, 35) Source(65, 19) + SourceIndex(0) +9 >Emitted(55, 54) Source(65, 51) + SourceIndex(0) +10>Emitted(55, 56) Source(65, 20) + SourceIndex(0) +11>Emitted(55, 77) Source(65, 33) + SourceIndex(0) +12>Emitted(55, 79) Source(65, 35) + SourceIndex(0) +13>Emitted(55, 102) Source(65, 50) + SourceIndex(0) +14>Emitted(55, 104) Source(65, 68) + SourceIndex(0) +15>Emitted(55, 105) Source(65, 69) + SourceIndex(0) +16>Emitted(55, 108) Source(65, 72) + SourceIndex(0) +17>Emitted(55, 109) Source(65, 73) + SourceIndex(0) +18>Emitted(55, 111) Source(65, 75) + SourceIndex(0) +19>Emitted(55, 112) Source(65, 76) + SourceIndex(0) +20>Emitted(55, 115) Source(65, 79) + SourceIndex(0) +21>Emitted(55, 116) Source(65, 80) + SourceIndex(0) +22>Emitted(55, 118) Source(65, 82) + SourceIndex(0) +23>Emitted(55, 119) Source(65, 83) + SourceIndex(0) +24>Emitted(55, 121) Source(65, 85) + SourceIndex(0) +25>Emitted(55, 123) Source(65, 87) + SourceIndex(0) +26>Emitted(55, 124) Source(65, 88) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(56, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(56, 12) Source(66, 12) + SourceIndex(0) +3 >Emitted(56, 13) Source(66, 13) + SourceIndex(0) +4 >Emitted(56, 16) Source(66, 16) + SourceIndex(0) +5 >Emitted(56, 17) Source(66, 17) + SourceIndex(0) +6 >Emitted(56, 23) Source(66, 23) + SourceIndex(0) +7 >Emitted(56, 24) Source(66, 24) + SourceIndex(0) +8 >Emitted(56, 25) Source(66, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(57, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(57, 2) Source(67, 2) + SourceIndex(0) +--- +>>>for (var _l = getMultiRobot(), nameMA = _l[0], _m = _l[1], primarySkillA = _m[0], secondarySkillA = _m[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [nameMA, [primarySkillA, secondarySkillA]] = +7 > getMultiRobot() +8 > +9 > nameMA +10> , +11> [primarySkillA, secondarySkillA] +12> +13> primarySkillA +14> , +15> secondarySkillA +16> ]] = getMultiRobot(), +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(58, 1) Source(68, 1) + SourceIndex(0) +2 >Emitted(58, 4) Source(68, 4) + SourceIndex(0) +3 >Emitted(58, 5) Source(68, 5) + SourceIndex(0) +4 >Emitted(58, 6) Source(68, 6) + SourceIndex(0) +5 >Emitted(58, 9) Source(68, 9) + SourceIndex(0) +6 >Emitted(58, 10) Source(68, 55) + SourceIndex(0) +7 >Emitted(58, 30) Source(68, 70) + SourceIndex(0) +8 >Emitted(58, 32) Source(68, 11) + SourceIndex(0) +9 >Emitted(58, 46) Source(68, 17) + SourceIndex(0) +10>Emitted(58, 48) Source(68, 19) + SourceIndex(0) +11>Emitted(58, 58) Source(68, 51) + SourceIndex(0) +12>Emitted(58, 60) Source(68, 20) + SourceIndex(0) +13>Emitted(58, 81) Source(68, 33) + SourceIndex(0) +14>Emitted(58, 83) Source(68, 35) + SourceIndex(0) +15>Emitted(58, 106) Source(68, 50) + SourceIndex(0) +16>Emitted(58, 108) Source(68, 72) + SourceIndex(0) +17>Emitted(58, 109) Source(68, 73) + SourceIndex(0) +18>Emitted(58, 112) Source(68, 76) + SourceIndex(0) +19>Emitted(58, 113) Source(68, 77) + SourceIndex(0) +20>Emitted(58, 115) Source(68, 79) + SourceIndex(0) +21>Emitted(58, 116) Source(68, 80) + SourceIndex(0) +22>Emitted(58, 119) Source(68, 83) + SourceIndex(0) +23>Emitted(58, 120) Source(68, 84) + SourceIndex(0) +24>Emitted(58, 122) Source(68, 86) + SourceIndex(0) +25>Emitted(58, 123) Source(68, 87) + SourceIndex(0) +26>Emitted(58, 125) Source(68, 89) + SourceIndex(0) +27>Emitted(58, 127) Source(68, 91) + SourceIndex(0) +28>Emitted(58, 128) Source(68, 92) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(59, 5) Source(69, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(69, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(69, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(69, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(69, 17) + SourceIndex(0) +6 >Emitted(59, 23) Source(69, 23) + SourceIndex(0) +7 >Emitted(59, 24) Source(69, 24) + SourceIndex(0) +8 >Emitted(59, 25) Source(69, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(60, 1) Source(70, 1) + SourceIndex(0) +2 >Emitted(60, 2) Source(70, 2) + SourceIndex(0) +--- +>>>for (var _o = ["trimmer", ["trimming", "edging"]], nameMA = _o[0], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1], i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [nameMA, [primarySkillA, secondarySkillA]] = +7 > ["trimmer", ["trimming", "edging"]] +8 > +9 > nameMA +10> , +11> [primarySkillA, secondarySkillA] +12> +13> primarySkillA +14> , +15> secondarySkillA +16> ]] = ["trimmer", ["trimming", "edging"]], +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(61, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(71, 6) + SourceIndex(0) +5 >Emitted(61, 9) Source(71, 9) + SourceIndex(0) +6 >Emitted(61, 10) Source(71, 55) + SourceIndex(0) +7 >Emitted(61, 50) Source(71, 90) + SourceIndex(0) +8 >Emitted(61, 52) Source(71, 11) + SourceIndex(0) +9 >Emitted(61, 66) Source(71, 17) + SourceIndex(0) +10>Emitted(61, 68) Source(71, 19) + SourceIndex(0) +11>Emitted(61, 78) Source(71, 51) + SourceIndex(0) +12>Emitted(61, 80) Source(71, 20) + SourceIndex(0) +13>Emitted(61, 101) Source(71, 33) + SourceIndex(0) +14>Emitted(61, 103) Source(71, 35) + SourceIndex(0) +15>Emitted(61, 126) Source(71, 50) + SourceIndex(0) +16>Emitted(61, 128) Source(71, 92) + SourceIndex(0) +17>Emitted(61, 129) Source(71, 93) + SourceIndex(0) +18>Emitted(61, 132) Source(71, 96) + SourceIndex(0) +19>Emitted(61, 133) Source(71, 97) + SourceIndex(0) +20>Emitted(61, 135) Source(71, 99) + SourceIndex(0) +21>Emitted(61, 136) Source(71, 100) + SourceIndex(0) +22>Emitted(61, 139) Source(71, 103) + SourceIndex(0) +23>Emitted(61, 140) Source(71, 104) + SourceIndex(0) +24>Emitted(61, 142) Source(71, 106) + SourceIndex(0) +25>Emitted(61, 143) Source(71, 107) + SourceIndex(0) +26>Emitted(61, 145) Source(71, 109) + SourceIndex(0) +27>Emitted(61, 147) Source(71, 111) + SourceIndex(0) +28>Emitted(61, 148) Source(71, 112) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(62, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(62, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(62, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(62, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(62, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(62, 23) Source(72, 23) + SourceIndex(0) +7 >Emitted(62, 24) Source(72, 24) + SourceIndex(0) +8 >Emitted(62, 25) Source(72, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(63, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(63, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for (var numberA3 = robotA[0], robotAInfo = robotA.slice(1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > let +6 > [ +7 > numberA3 +8 > , +9 > ...robotAInfo +10> ] = robotA, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(64, 1) Source(75, 1) + SourceIndex(0) +2 >Emitted(64, 4) Source(75, 4) + SourceIndex(0) +3 >Emitted(64, 5) Source(75, 5) + SourceIndex(0) +4 >Emitted(64, 6) Source(75, 6) + SourceIndex(0) +5 >Emitted(64, 9) Source(75, 9) + SourceIndex(0) +6 >Emitted(64, 10) Source(75, 11) + SourceIndex(0) +7 >Emitted(64, 30) Source(75, 19) + SourceIndex(0) +8 >Emitted(64, 32) Source(75, 21) + SourceIndex(0) +9 >Emitted(64, 60) Source(75, 34) + SourceIndex(0) +10>Emitted(64, 62) Source(75, 46) + SourceIndex(0) +11>Emitted(64, 63) Source(75, 47) + SourceIndex(0) +12>Emitted(64, 66) Source(75, 50) + SourceIndex(0) +13>Emitted(64, 67) Source(75, 51) + SourceIndex(0) +14>Emitted(64, 69) Source(75, 53) + SourceIndex(0) +15>Emitted(64, 70) Source(75, 54) + SourceIndex(0) +16>Emitted(64, 73) Source(75, 57) + SourceIndex(0) +17>Emitted(64, 74) Source(75, 58) + SourceIndex(0) +18>Emitted(64, 76) Source(75, 60) + SourceIndex(0) +19>Emitted(64, 77) Source(75, 61) + SourceIndex(0) +20>Emitted(64, 79) Source(75, 63) + SourceIndex(0) +21>Emitted(64, 81) Source(75, 65) + SourceIndex(0) +22>Emitted(64, 82) Source(75, 66) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(65, 5) Source(76, 5) + SourceIndex(0) +2 >Emitted(65, 12) Source(76, 12) + SourceIndex(0) +3 >Emitted(65, 13) Source(76, 13) + SourceIndex(0) +4 >Emitted(65, 16) Source(76, 16) + SourceIndex(0) +5 >Emitted(65, 17) Source(76, 17) + SourceIndex(0) +6 >Emitted(65, 25) Source(76, 25) + SourceIndex(0) +7 >Emitted(65, 26) Source(76, 26) + SourceIndex(0) +8 >Emitted(65, 27) Source(76, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(66, 1) Source(77, 1) + SourceIndex(0) +2 >Emitted(66, 2) Source(77, 2) + SourceIndex(0) +--- +>>>for (var _q = getRobot(), numberA3 = _q[0], robotAInfo = _q.slice(1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [numberA3, ...robotAInfo] = +7 > getRobot() +8 > +9 > numberA3 +10> , +11> ...robotAInfo +12> ] = getRobot(), +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(67, 1) Source(78, 1) + SourceIndex(0) +2 >Emitted(67, 4) Source(78, 4) + SourceIndex(0) +3 >Emitted(67, 5) Source(78, 5) + SourceIndex(0) +4 >Emitted(67, 6) Source(78, 6) + SourceIndex(0) +5 >Emitted(67, 9) Source(78, 9) + SourceIndex(0) +6 >Emitted(67, 10) Source(78, 38) + SourceIndex(0) +7 >Emitted(67, 25) Source(78, 48) + SourceIndex(0) +8 >Emitted(67, 27) Source(78, 11) + SourceIndex(0) +9 >Emitted(67, 43) Source(78, 19) + SourceIndex(0) +10>Emitted(67, 45) Source(78, 21) + SourceIndex(0) +11>Emitted(67, 69) Source(78, 34) + SourceIndex(0) +12>Emitted(67, 71) Source(78, 50) + SourceIndex(0) +13>Emitted(67, 72) Source(78, 51) + SourceIndex(0) +14>Emitted(67, 75) Source(78, 54) + SourceIndex(0) +15>Emitted(67, 76) Source(78, 55) + SourceIndex(0) +16>Emitted(67, 78) Source(78, 57) + SourceIndex(0) +17>Emitted(67, 79) Source(78, 58) + SourceIndex(0) +18>Emitted(67, 82) Source(78, 61) + SourceIndex(0) +19>Emitted(67, 83) Source(78, 62) + SourceIndex(0) +20>Emitted(67, 85) Source(78, 64) + SourceIndex(0) +21>Emitted(67, 86) Source(78, 65) + SourceIndex(0) +22>Emitted(67, 88) Source(78, 67) + SourceIndex(0) +23>Emitted(67, 90) Source(78, 69) + SourceIndex(0) +24>Emitted(67, 91) Source(78, 70) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(68, 5) Source(79, 5) + SourceIndex(0) +2 >Emitted(68, 12) Source(79, 12) + SourceIndex(0) +3 >Emitted(68, 13) Source(79, 13) + SourceIndex(0) +4 >Emitted(68, 16) Source(79, 16) + SourceIndex(0) +5 >Emitted(68, 17) Source(79, 17) + SourceIndex(0) +6 >Emitted(68, 25) Source(79, 25) + SourceIndex(0) +7 >Emitted(68, 26) Source(79, 26) + SourceIndex(0) +8 >Emitted(68, 27) Source(79, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(69, 1) Source(80, 1) + SourceIndex(0) +2 >Emitted(69, 2) Source(80, 2) + SourceIndex(0) +--- +>>>for (var _r = [2, "trimmer", "trimming"], numberA3 = _r[0], robotAInfo = _r.slice(1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > [numberA3, ...robotAInfo] = +7 > [2, "trimmer", "trimming"] +8 > +9 > numberA3 +10> , +11> ...robotAInfo +12> ] = [2, "trimmer", "trimming"], +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(70, 1) Source(81, 1) + SourceIndex(0) +2 >Emitted(70, 4) Source(81, 4) + SourceIndex(0) +3 >Emitted(70, 5) Source(81, 5) + SourceIndex(0) +4 >Emitted(70, 6) Source(81, 6) + SourceIndex(0) +5 >Emitted(70, 9) Source(81, 9) + SourceIndex(0) +6 >Emitted(70, 10) Source(81, 38) + SourceIndex(0) +7 >Emitted(70, 41) Source(81, 64) + SourceIndex(0) +8 >Emitted(70, 43) Source(81, 11) + SourceIndex(0) +9 >Emitted(70, 59) Source(81, 19) + SourceIndex(0) +10>Emitted(70, 61) Source(81, 21) + SourceIndex(0) +11>Emitted(70, 85) Source(81, 34) + SourceIndex(0) +12>Emitted(70, 87) Source(81, 66) + SourceIndex(0) +13>Emitted(70, 88) Source(81, 67) + SourceIndex(0) +14>Emitted(70, 91) Source(81, 70) + SourceIndex(0) +15>Emitted(70, 92) Source(81, 71) + SourceIndex(0) +16>Emitted(70, 94) Source(81, 73) + SourceIndex(0) +17>Emitted(70, 95) Source(81, 74) + SourceIndex(0) +18>Emitted(70, 98) Source(81, 77) + SourceIndex(0) +19>Emitted(70, 99) Source(81, 78) + SourceIndex(0) +20>Emitted(70, 101) Source(81, 80) + SourceIndex(0) +21>Emitted(70, 102) Source(81, 81) + SourceIndex(0) +22>Emitted(70, 104) Source(81, 83) + SourceIndex(0) +23>Emitted(70, 106) Source(81, 85) + SourceIndex(0) +24>Emitted(70, 107) Source(81, 86) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(71, 5) Source(82, 5) + SourceIndex(0) +2 >Emitted(71, 12) Source(82, 12) + SourceIndex(0) +3 >Emitted(71, 13) Source(82, 13) + SourceIndex(0) +4 >Emitted(71, 16) Source(82, 16) + SourceIndex(0) +5 >Emitted(71, 17) Source(82, 17) + SourceIndex(0) +6 >Emitted(71, 25) Source(82, 25) + SourceIndex(0) +7 >Emitted(71, 26) Source(82, 26) + SourceIndex(0) +8 >Emitted(71, 27) Source(82, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(72, 1) Source(83, 1) + SourceIndex(0) +2 >Emitted(72, 2) Source(83, 2) + SourceIndex(0) +--- +>>>for (var multiRobotAInfo = multiRobotA.slice(0), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [...multiRobotAInfo] = multiRobotA +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(73, 1) Source(84, 1) + SourceIndex(0) +2 >Emitted(73, 4) Source(84, 4) + SourceIndex(0) +3 >Emitted(73, 5) Source(84, 5) + SourceIndex(0) +4 >Emitted(73, 6) Source(84, 6) + SourceIndex(0) +5 >Emitted(73, 9) Source(84, 9) + SourceIndex(0) +6 >Emitted(73, 10) Source(84, 10) + SourceIndex(0) +7 >Emitted(73, 48) Source(84, 44) + SourceIndex(0) +8 >Emitted(73, 50) Source(84, 46) + SourceIndex(0) +9 >Emitted(73, 51) Source(84, 47) + SourceIndex(0) +10>Emitted(73, 54) Source(84, 50) + SourceIndex(0) +11>Emitted(73, 55) Source(84, 51) + SourceIndex(0) +12>Emitted(73, 57) Source(84, 53) + SourceIndex(0) +13>Emitted(73, 58) Source(84, 54) + SourceIndex(0) +14>Emitted(73, 61) Source(84, 57) + SourceIndex(0) +15>Emitted(73, 62) Source(84, 58) + SourceIndex(0) +16>Emitted(73, 64) Source(84, 60) + SourceIndex(0) +17>Emitted(73, 65) Source(84, 61) + SourceIndex(0) +18>Emitted(73, 67) Source(84, 63) + SourceIndex(0) +19>Emitted(73, 69) Source(84, 65) + SourceIndex(0) +20>Emitted(73, 70) Source(84, 66) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(74, 5) Source(85, 5) + SourceIndex(0) +2 >Emitted(74, 12) Source(85, 12) + SourceIndex(0) +3 >Emitted(74, 13) Source(85, 13) + SourceIndex(0) +4 >Emitted(74, 16) Source(85, 16) + SourceIndex(0) +5 >Emitted(74, 17) Source(85, 17) + SourceIndex(0) +6 >Emitted(74, 32) Source(85, 32) + SourceIndex(0) +7 >Emitted(74, 33) Source(85, 33) + SourceIndex(0) +8 >Emitted(74, 34) Source(85, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(75, 1) Source(86, 1) + SourceIndex(0) +2 >Emitted(75, 2) Source(86, 2) + SourceIndex(0) +--- +>>>for (var multiRobotAInfo = getMultiRobot().slice(0), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [...multiRobotAInfo] = getMultiRobot() +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(76, 1) Source(87, 1) + SourceIndex(0) +2 >Emitted(76, 4) Source(87, 4) + SourceIndex(0) +3 >Emitted(76, 5) Source(87, 5) + SourceIndex(0) +4 >Emitted(76, 6) Source(87, 6) + SourceIndex(0) +5 >Emitted(76, 9) Source(87, 9) + SourceIndex(0) +6 >Emitted(76, 10) Source(87, 10) + SourceIndex(0) +7 >Emitted(76, 52) Source(87, 48) + SourceIndex(0) +8 >Emitted(76, 54) Source(87, 50) + SourceIndex(0) +9 >Emitted(76, 55) Source(87, 51) + SourceIndex(0) +10>Emitted(76, 58) Source(87, 54) + SourceIndex(0) +11>Emitted(76, 59) Source(87, 55) + SourceIndex(0) +12>Emitted(76, 61) Source(87, 57) + SourceIndex(0) +13>Emitted(76, 62) Source(87, 58) + SourceIndex(0) +14>Emitted(76, 65) Source(87, 61) + SourceIndex(0) +15>Emitted(76, 66) Source(87, 62) + SourceIndex(0) +16>Emitted(76, 68) Source(87, 64) + SourceIndex(0) +17>Emitted(76, 69) Source(87, 65) + SourceIndex(0) +18>Emitted(76, 71) Source(87, 67) + SourceIndex(0) +19>Emitted(76, 73) Source(87, 69) + SourceIndex(0) +20>Emitted(76, 74) Source(87, 70) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(77, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(77, 12) Source(88, 12) + SourceIndex(0) +3 >Emitted(77, 13) Source(88, 13) + SourceIndex(0) +4 >Emitted(77, 16) Source(88, 16) + SourceIndex(0) +5 >Emitted(77, 17) Source(88, 17) + SourceIndex(0) +6 >Emitted(77, 32) Source(88, 32) + SourceIndex(0) +7 >Emitted(77, 33) Source(88, 33) + SourceIndex(0) +8 >Emitted(77, 34) Source(88, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(78, 1) Source(89, 1) + SourceIndex(0) +2 >Emitted(78, 2) Source(89, 2) + SourceIndex(0) +--- +>>>for (var multiRobotAInfo = ["trimmer", ["trimming", "edging"]].slice(0), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > ( +5 > let +6 > +7 > [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] +8 > , +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(79, 1) Source(90, 1) + SourceIndex(0) +2 >Emitted(79, 4) Source(90, 4) + SourceIndex(0) +3 >Emitted(79, 5) Source(90, 5) + SourceIndex(0) +4 >Emitted(79, 6) Source(90, 6) + SourceIndex(0) +5 >Emitted(79, 9) Source(90, 9) + SourceIndex(0) +6 >Emitted(79, 10) Source(90, 10) + SourceIndex(0) +7 >Emitted(79, 72) Source(90, 68) + SourceIndex(0) +8 >Emitted(79, 74) Source(90, 70) + SourceIndex(0) +9 >Emitted(79, 75) Source(90, 71) + SourceIndex(0) +10>Emitted(79, 78) Source(90, 74) + SourceIndex(0) +11>Emitted(79, 79) Source(90, 75) + SourceIndex(0) +12>Emitted(79, 81) Source(90, 77) + SourceIndex(0) +13>Emitted(79, 82) Source(90, 78) + SourceIndex(0) +14>Emitted(79, 85) Source(90, 81) + SourceIndex(0) +15>Emitted(79, 86) Source(90, 82) + SourceIndex(0) +16>Emitted(79, 88) Source(90, 84) + SourceIndex(0) +17>Emitted(79, 89) Source(90, 85) + SourceIndex(0) +18>Emitted(79, 91) Source(90, 87) + SourceIndex(0) +19>Emitted(79, 93) Source(90, 89) + SourceIndex(0) +20>Emitted(79, 94) Source(90, 90) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(80, 5) Source(91, 5) + SourceIndex(0) +2 >Emitted(80, 12) Source(91, 12) + SourceIndex(0) +3 >Emitted(80, 13) Source(91, 13) + SourceIndex(0) +4 >Emitted(80, 16) Source(91, 16) + SourceIndex(0) +5 >Emitted(80, 17) Source(91, 17) + SourceIndex(0) +6 >Emitted(80, 32) Source(91, 32) + SourceIndex(0) +7 >Emitted(80, 33) Source(91, 33) + SourceIndex(0) +8 >Emitted(80, 34) Source(91, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(81, 1) Source(92, 1) + SourceIndex(0) +2 >Emitted(81, 2) Source(92, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPattern.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.symbols new file mode 100644 index 00000000000..4e2131ff295 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.symbols @@ -0,0 +1,365 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 2, 1)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 43)) + + return robotA; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 11, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 12, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 3, 38)) + +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 12, 73)) + + return multiRobotA; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 11, 3)) +} + +for (let [, nameA] = robotA, i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 17, 11)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 17, 28)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 17, 28)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 17, 28)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 17, 11)) +} +for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 20, 11)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 20, 32)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 20, 32)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 20, 32)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 20, 11)) +} +for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 23, 11)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 23, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 23, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 23, 48)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 23, 11)) +} +for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 26, 13)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 26, 27)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 26, 60)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 26, 60)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 26, 60)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 26, 13)) +} +for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 29, 13)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 29, 27)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 29, 64)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 29, 64)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 29, 64)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 29, 13)) +} +for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 32, 13)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 32, 27)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 32, 84)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 32, 84)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 32, 84)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 32, 13)) +} + +for (let [numberB] = robotA, i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 36, 10)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 36, 28)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 36, 28)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 36, 28)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 36, 10)) +} +for (let [numberB] = getRobot(), i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 39, 10)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 39, 32)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 39, 32)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 39, 32)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 39, 10)) +} +for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 42, 10)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 42, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 42, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 42, 48)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 42, 10)) +} +for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 45, 10)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 45, 31)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 45, 31)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 45, 31)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 45, 10)) +} +for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 48, 10)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 48, 35)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 48, 35)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 48, 35)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 48, 10)) +} +for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 51, 10)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 51, 55)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 51, 55)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 51, 55)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 51, 10)) +} + +for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 27)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 46)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 46)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 46)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 55, 19)) +} +for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 27)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 50)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 50)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 50)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 58, 19)) +} +for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 27)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 66)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 66)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 66)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 61, 19)) +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 10)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 19)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 33)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 66)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 66)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 66)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 64, 10)) +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 10)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 19)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 33)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 70)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 70)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 70)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 67, 10)) +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 10)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 19)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 33)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 90)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 70, 10)) +} + +for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 74, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 74, 19)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 74, 44)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 74, 44)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 74, 44)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 74, 10)) +} +for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 77, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 77, 19)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 77, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 77, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 77, 48)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 77, 10)) +} +for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 80, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 80, 19)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 80, 64)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 80, 64)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 80, 64)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 80, 10)) +} +for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 83, 10)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 83, 44)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 83, 44)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 83, 44)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 83, 10)) +} +for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 86, 10)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 86, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 86, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 86, 48)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 86, 10)) +} +for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 89, 10)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 89, 68)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 89, 68)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 89, 68)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern.ts, 89, 10)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types new file mode 100644 index 00000000000..fbe264eeeae --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.types @@ -0,0 +1,549 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +function getRobot() { +>getRobot : () => [number, string, string] + + return robotA; +>robotA : [number, string, string] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +function getMultiRobot() { +>getMultiRobot : () => [string, [string, string]] + + return multiRobotA; +>multiRobotA : [string, [string, string]] +} + +for (let [, nameA] = robotA, i = 0; i < 1; i++) { +> : undefined +>nameA : string +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { +> : undefined +>nameA : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +> : undefined +>nameA : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +> : undefined +>primarySkillA : string +>secondarySkillA : string +>multiRobotA : [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +> : undefined +>primarySkillA : string +>secondarySkillA : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +> : undefined +>primarySkillA : string +>secondarySkillA : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for (let [numberB] = robotA, i = 0; i < 1; i++) { +>numberB : number +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB] = getRobot(), i = 0; i < 1; i++) { +>numberB : number +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberB : number +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { +>nameB : string +>multiRobotA : [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { +>nameB : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameB : string +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { +>numberA2 : number +>nameA2 : string +>skillA2 : string +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { +>numberA2 : number +>nameA2 : string +>skillA2 : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA2 : number +>nameA2 : string +>skillA2 : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>multiRobotA : [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameMA : string +>primarySkillA : string +>secondarySkillA : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>numberA3 : number +>robotAInfo : (number | string)[] +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>numberA3 : number +>robotAInfo : (number | string)[] +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA3 : number | string +>robotAInfo : (number | string)[] +>[2, "trimmer", "trimming"] : (number | string)[] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number | string +} +for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotAInfo : (string | [string, string])[] +>multiRobotA : [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { +>multiRobotAInfo : (string | [string, string])[] +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>multiRobotAInfo : (string | string[])[] +>["trimmer", ["trimming", "edging"]] : (string | string[])[] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | string[])[] +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.ts b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.ts new file mode 100644 index 00000000000..cd1ad012b25 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern.ts @@ -0,0 +1,93 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +for (let [, nameA] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for (let [numberB] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} \ No newline at end of file From 6baa36b5469ea2f44b08241c63659b2860ad89bf Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 15:18:24 -0800 Subject: [PATCH 037/164] Test case for assignment expression with Array destructuring pattern --- ...ngVariableStatementArrayBindingPattern3.js | 102 +++ ...riableStatementArrayBindingPattern3.js.map | 2 + ...tatementArrayBindingPattern3.sourcemap.txt | 771 ++++++++++++++++++ ...iableStatementArrayBindingPattern3.symbols | 176 ++++ ...ariableStatementArrayBindingPattern3.types | 304 +++++++ ...ngVariableStatementArrayBindingPattern3.ts | 57 ++ 6 files changed, 1412 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js new file mode 100644 index 00000000000..32862b978db --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js @@ -0,0 +1,102 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let nameA: string, numberB: number, nameB: string, skillB: string; +let robotAInfo: (number | string)[]; + +let multiSkillB: [string, string], nameMB: string, primarySkillB: string, secondarySkillB: string; +let multiRobotAInfo: (string | [string, string])[]; + +[, nameA] = robotA; +[, nameB] = getRobotB(); +[, nameB] = [2, "trimmer", "trimming"]; +[, multiSkillB] = multiRobotB; +[, multiSkillB] = getMultiRobotB(); +[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; + +[numberB] = robotB; +[numberB] = getRobotB(); +[numberB] = [2, "trimmer", "trimming"]; +[nameMB] = multiRobotB; +[nameMB] = getMultiRobotB(); +[nameMB] = ["trimmer", ["trimming", "edging"]]; + +[numberB, nameB, skillB] = robotB; +[numberB, nameB, skillB] = getRobotB(); +[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; +[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; +[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); +[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; + +[numberB, ...robotAInfo] = robotB; +[numberB, ...robotAInfo] = getRobotB(); +[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; +[...multiRobotAInfo] = multiRobotA; +[...multiRobotAInfo] = getMultiRobotB(); +[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; + +if (nameA == nameB) { + console.log(skillB); +} + +function getRobotB() { + return robotB; +} + +function getMultiRobotB() { + return multiRobotB; +} + +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var nameA, numberB, nameB, skillB; +var robotAInfo; +var multiSkillB, nameMB, primarySkillB, secondarySkillB; +var multiRobotAInfo; +nameA = robotA[1]; +_a = getRobotB(), nameB = _a[1]; +_b = [2, "trimmer", "trimming"], nameB = _b[1]; +multiSkillB = multiRobotB[1]; +_c = getMultiRobotB(), multiSkillB = _c[1]; +_d = ["roomba", ["vaccum", "mopping"]], multiSkillB = _d[1]; +numberB = robotB[0]; +numberB = getRobotB()[0]; +numberB = [2, "trimmer", "trimming"][0]; +nameMB = multiRobotB[0]; +nameMB = getMultiRobotB()[0]; +nameMB = ["trimmer", ["trimming", "edging"]][0]; +numberB = robotB[0], nameB = robotB[1], skillB = robotB[2]; +_e = getRobotB(), numberB = _e[0], nameB = _e[1], skillB = _e[2]; +_f = [2, "trimmer", "trimming"], numberB = _f[0], nameB = _f[1], skillB = _f[2]; +nameMB = multiRobotB[0], _g = multiRobotB[1], primarySkillB = _g[0], secondarySkillB = _g[1]; +_h = getMultiRobotB(), nameMB = _h[0], _j = _h[1], primarySkillB = _j[0], secondarySkillB = _j[1]; +_k = ["trimmer", ["trimming", "edging"]], nameMB = _k[0], _l = _k[1], primarySkillB = _l[0], secondarySkillB = _l[1]; +numberB = robotB[0], robotAInfo = robotB.slice(1); +_m = getRobotB(), numberB = _m[0], robotAInfo = _m.slice(1); +_o = [2, "trimmer", "trimming"], numberB = _o[0], robotAInfo = _o.slice(1); +multiRobotAInfo = multiRobotA.slice(0); +multiRobotAInfo = getMultiRobotB().slice(0); +multiRobotAInfo = ["trimmer", ["trimming", "edging"]].slice(0); +if (nameA == nameB) { + console.log(skillB); +} +function getRobotB() { + return robotB; +} +function getMultiRobotB() { + return multiRobotB; +} +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map new file mode 100644 index 00000000000..9b10b964ee5 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,MAAc,CAAC;AAClE,IAAI,UAA+B,CAAC;AAEpC,IAAI,WAA6B,EAAE,MAAc,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAClG,IAAI,eAA8C,CAAC;AAEnD,iBAAkB,CAAC;AACP,gBAAW,eAAA,CAAC;AACZ,+BAA0B,eAAA,CAAC;AACvC,4BAA6B,CAAC;AACZ,qBAAgB,qBAAA,CAAC;AACjB,sCAAiC,qBAAA,CAAC;AAEpD,mBAAkB,CAAC;AACnB,wBAAuB,CAAC;AACxB,uCAAsC,CAAC;AACvC,uBAAsB,CAAC;AACvB,4BAA2B,CAAC;AAC5B,+CAA8C,CAAC;AAE/C,0DAAiC,CAAC;AACP,gBAAW,gDAAA,CAAC;AACZ,+BAA0B,gDAAA,CAAC;AACtD,4FAAwD,CAAC;AACZ,qBAAgB,4EAAA,CAAC;AACjB,wCAAmC,4EAAA,CAAC;AAEjF,iDAAiC,CAAC;AACP,gBAAW,2CAAA,CAAC;AACZ,+BAAiC,2CAAA,CAAC;AAC7D,sCAAkC,CAAC;AACnC,2CAAuC,CAAC;AACxC,8DAA0D,CAAC;AAE3D,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt new file mode 100644 index 00000000000..fbe3c58b0a6 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt @@ -0,0 +1,771 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js +mapUrl: sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js +sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(8, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(8, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(8, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(8, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(8, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(8, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(8, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(8, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(8, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(8, 48) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > +2 >var +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 16) Source(9, 16) + SourceIndex(0) +4 >Emitted(3, 19) Source(9, 38) + SourceIndex(0) +5 >Emitted(3, 20) Source(9, 39) + SourceIndex(0) +6 >Emitted(3, 27) Source(9, 46) + SourceIndex(0) +7 >Emitted(3, 29) Source(9, 48) + SourceIndex(0) +8 >Emitted(3, 30) Source(9, 49) + SourceIndex(0) +9 >Emitted(3, 38) Source(9, 57) + SourceIndex(0) +10>Emitted(3, 40) Source(9, 59) + SourceIndex(0) +11>Emitted(3, 42) Source(9, 61) + SourceIndex(0) +12>Emitted(3, 43) Source(9, 62) + SourceIndex(0) +13>Emitted(3, 44) Source(9, 63) + SourceIndex(0) +14>Emitted(3, 45) Source(9, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >var +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(10, 5) + SourceIndex(0) +3 >Emitted(4, 16) Source(10, 16) + SourceIndex(0) +4 >Emitted(4, 19) Source(10, 38) + SourceIndex(0) +5 >Emitted(4, 20) Source(10, 39) + SourceIndex(0) +6 >Emitted(4, 29) Source(10, 48) + SourceIndex(0) +7 >Emitted(4, 31) Source(10, 50) + SourceIndex(0) +8 >Emitted(4, 32) Source(10, 51) + SourceIndex(0) +9 >Emitted(4, 42) Source(10, 61) + SourceIndex(0) +10>Emitted(4, 44) Source(10, 63) + SourceIndex(0) +11>Emitted(4, 52) Source(10, 71) + SourceIndex(0) +12>Emitted(4, 53) Source(10, 72) + SourceIndex(0) +13>Emitted(4, 54) Source(10, 73) + SourceIndex(0) +14>Emitted(4, 55) Source(10, 74) + SourceIndex(0) +--- +>>>var nameA, numberB, nameB, skillB; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^ +1 > + > + > +2 >let +3 > nameA: string +4 > , +5 > numberB: number +6 > , +7 > nameB: string +8 > , +9 > skillB: string +10> ; +1 >Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 10) Source(12, 18) + SourceIndex(0) +4 >Emitted(5, 12) Source(12, 20) + SourceIndex(0) +5 >Emitted(5, 19) Source(12, 35) + SourceIndex(0) +6 >Emitted(5, 21) Source(12, 37) + SourceIndex(0) +7 >Emitted(5, 26) Source(12, 50) + SourceIndex(0) +8 >Emitted(5, 28) Source(12, 52) + SourceIndex(0) +9 >Emitted(5, 34) Source(12, 66) + SourceIndex(0) +10>Emitted(5, 35) Source(12, 67) + SourceIndex(0) +--- +>>>var robotAInfo; +1 > +2 >^^^^ +3 > ^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > robotAInfo: (number | string)[] +4 > ; +1 >Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 15) Source(13, 36) + SourceIndex(0) +4 >Emitted(6, 16) Source(13, 37) + SourceIndex(0) +--- +>>>var multiSkillB, nameMB, primarySkillB, secondarySkillB; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^ +1-> + > + > +2 >let +3 > multiSkillB: [string, string] +4 > , +5 > nameMB: string +6 > , +7 > primarySkillB: string +8 > , +9 > secondarySkillB: string +10> ; +1->Emitted(7, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(7, 16) Source(15, 34) + SourceIndex(0) +4 >Emitted(7, 18) Source(15, 36) + SourceIndex(0) +5 >Emitted(7, 24) Source(15, 50) + SourceIndex(0) +6 >Emitted(7, 26) Source(15, 52) + SourceIndex(0) +7 >Emitted(7, 39) Source(15, 73) + SourceIndex(0) +8 >Emitted(7, 41) Source(15, 75) + SourceIndex(0) +9 >Emitted(7, 56) Source(15, 98) + SourceIndex(0) +10>Emitted(7, 57) Source(15, 99) + SourceIndex(0) +--- +>>>var multiRobotAInfo; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^ +1 > + > +2 >let +3 > multiRobotAInfo: (string | [string, string])[] +4 > ; +1 >Emitted(8, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(16, 5) + SourceIndex(0) +3 >Emitted(8, 20) Source(16, 51) + SourceIndex(0) +4 >Emitted(8, 21) Source(16, 52) + SourceIndex(0) +--- +>>>nameA = robotA[1]; +1 > +2 >^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^-> +1 > + > + > +2 >[, nameA] = robotA +3 > ; +1 >Emitted(9, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(9, 18) Source(18, 19) + SourceIndex(0) +3 >Emitted(9, 19) Source(18, 20) + SourceIndex(0) +--- +>>>_a = getRobotB(), nameB = _a[1]; +1-> +2 >^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^-> +1-> + >[, nameB] = +2 >getRobotB() +3 > +4 > ; +1->Emitted(10, 1) Source(19, 13) + SourceIndex(0) +2 >Emitted(10, 17) Source(19, 24) + SourceIndex(0) +3 >Emitted(10, 32) Source(19, 24) + SourceIndex(0) +4 >Emitted(10, 33) Source(19, 25) + SourceIndex(0) +--- +>>>_b = [2, "trimmer", "trimming"], nameB = _b[1]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^ +1-> + >[, nameB] = +2 >[2, "trimmer", "trimming"] +3 > +4 > ; +1->Emitted(11, 1) Source(20, 13) + SourceIndex(0) +2 >Emitted(11, 32) Source(20, 39) + SourceIndex(0) +3 >Emitted(11, 47) Source(20, 39) + SourceIndex(0) +4 >Emitted(11, 48) Source(20, 40) + SourceIndex(0) +--- +>>>multiSkillB = multiRobotB[1]; +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^-> +1 > + > +2 >[, multiSkillB] = multiRobotB +3 > ; +1 >Emitted(12, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(12, 29) Source(21, 30) + SourceIndex(0) +3 >Emitted(12, 30) Source(21, 31) + SourceIndex(0) +--- +>>>_c = getMultiRobotB(), multiSkillB = _c[1]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^-> +1-> + >[, multiSkillB] = +2 >getMultiRobotB() +3 > +4 > ; +1->Emitted(13, 1) Source(22, 19) + SourceIndex(0) +2 >Emitted(13, 22) Source(22, 35) + SourceIndex(0) +3 >Emitted(13, 43) Source(22, 35) + SourceIndex(0) +4 >Emitted(13, 44) Source(22, 36) + SourceIndex(0) +--- +>>>_d = ["roomba", ["vaccum", "mopping"]], multiSkillB = _d[1]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +1-> + >[, multiSkillB] = +2 >["roomba", ["vaccum", "mopping"]] +3 > +4 > ; +1->Emitted(14, 1) Source(23, 19) + SourceIndex(0) +2 >Emitted(14, 39) Source(23, 52) + SourceIndex(0) +3 >Emitted(14, 60) Source(23, 52) + SourceIndex(0) +4 >Emitted(14, 61) Source(23, 53) + SourceIndex(0) +--- +>>>numberB = robotB[0]; +1 > +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^-> +1 > + > + > +2 >[numberB] = robotB +3 > ; +1 >Emitted(15, 1) Source(25, 1) + SourceIndex(0) +2 >Emitted(15, 20) Source(25, 19) + SourceIndex(0) +3 >Emitted(15, 21) Source(25, 20) + SourceIndex(0) +--- +>>>numberB = getRobotB()[0]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^-> +1-> + > +2 >[numberB] = getRobotB() +3 > ; +1->Emitted(16, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(16, 25) Source(26, 24) + SourceIndex(0) +3 >Emitted(16, 26) Source(26, 25) + SourceIndex(0) +--- +>>>numberB = [2, "trimmer", "trimming"][0]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +1-> + > +2 >[numberB] = [2, "trimmer", "trimming"] +3 > ; +1->Emitted(17, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(17, 40) Source(27, 39) + SourceIndex(0) +3 >Emitted(17, 41) Source(27, 40) + SourceIndex(0) +--- +>>>nameMB = multiRobotB[0]; +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^-> +1 > + > +2 >[nameMB] = multiRobotB +3 > ; +1 >Emitted(18, 1) Source(28, 1) + SourceIndex(0) +2 >Emitted(18, 24) Source(28, 23) + SourceIndex(0) +3 >Emitted(18, 25) Source(28, 24) + SourceIndex(0) +--- +>>>nameMB = getMultiRobotB()[0]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >[nameMB] = getMultiRobotB() +3 > ; +1->Emitted(19, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(19, 29) Source(29, 28) + SourceIndex(0) +3 >Emitted(19, 30) Source(29, 29) + SourceIndex(0) +--- +>>>nameMB = ["trimmer", ["trimming", "edging"]][0]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^-> +1-> + > +2 >[nameMB] = ["trimmer", ["trimming", "edging"]] +3 > ; +1->Emitted(20, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(20, 48) Source(30, 47) + SourceIndex(0) +3 >Emitted(20, 49) Source(30, 48) + SourceIndex(0) +--- +>>>numberB = robotB[0], nameB = robotB[1], skillB = robotB[2]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^-> +1-> + > + > +2 >[numberB, nameB, skillB] = robotB +3 > ; +1->Emitted(21, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(21, 59) Source(32, 34) + SourceIndex(0) +3 >Emitted(21, 60) Source(32, 35) + SourceIndex(0) +--- +>>>_e = getRobotB(), numberB = _e[0], nameB = _e[1], skillB = _e[2]; +1-> +2 >^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^-> +1-> + >[numberB, nameB, skillB] = +2 >getRobotB() +3 > +4 > ; +1->Emitted(22, 1) Source(33, 28) + SourceIndex(0) +2 >Emitted(22, 17) Source(33, 39) + SourceIndex(0) +3 >Emitted(22, 65) Source(33, 39) + SourceIndex(0) +4 >Emitted(22, 66) Source(33, 40) + SourceIndex(0) +--- +>>>_f = [2, "trimmer", "trimming"], numberB = _f[0], nameB = _f[1], skillB = _f[2]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^-> +1-> + >[numberB, nameB, skillB] = +2 >[2, "trimmer", "trimming"] +3 > +4 > ; +1->Emitted(23, 1) Source(34, 28) + SourceIndex(0) +2 >Emitted(23, 32) Source(34, 54) + SourceIndex(0) +3 >Emitted(23, 80) Source(34, 54) + SourceIndex(0) +4 >Emitted(23, 81) Source(34, 55) + SourceIndex(0) +--- +>>>nameMB = multiRobotB[0], _g = multiRobotB[1], primarySkillB = _g[0], secondarySkillB = _g[1]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^-> +1-> + > +2 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB +3 > ; +1->Emitted(24, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(24, 93) Source(35, 57) + SourceIndex(0) +3 >Emitted(24, 94) Source(35, 58) + SourceIndex(0) +--- +>>>_h = getMultiRobotB(), nameMB = _h[0], _j = _h[1], primarySkillB = _j[0], secondarySkillB = _j[1]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^-> +1-> + >[nameMB, [primarySkillB, secondarySkillB]] = +2 >getMultiRobotB() +3 > +4 > ; +1->Emitted(25, 1) Source(36, 46) + SourceIndex(0) +2 >Emitted(25, 22) Source(36, 62) + SourceIndex(0) +3 >Emitted(25, 98) Source(36, 62) + SourceIndex(0) +4 >Emitted(25, 99) Source(36, 63) + SourceIndex(0) +--- +>>>_k = ["trimmer", ["trimming", "edging"]], nameMB = _k[0], _l = _k[1], primarySkillB = _l[0], secondarySkillB = _l[1]; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +1-> + >[nameMB, [primarySkillB, secondarySkillB]] = +2 >["trimmer", ["trimming", "edging"]] +3 > +4 > ; +1->Emitted(26, 1) Source(37, 46) + SourceIndex(0) +2 >Emitted(26, 41) Source(37, 81) + SourceIndex(0) +3 >Emitted(26, 117) Source(37, 81) + SourceIndex(0) +4 >Emitted(26, 118) Source(37, 82) + SourceIndex(0) +--- +>>>numberB = robotB[0], robotAInfo = robotB.slice(1); +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^-> +1 > + > + > +2 >[numberB, ...robotAInfo] = robotB +3 > ; +1 >Emitted(27, 1) Source(39, 1) + SourceIndex(0) +2 >Emitted(27, 50) Source(39, 34) + SourceIndex(0) +3 >Emitted(27, 51) Source(39, 35) + SourceIndex(0) +--- +>>>_m = getRobotB(), numberB = _m[0], robotAInfo = _m.slice(1); +1-> +2 >^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^-> +1-> + >[numberB, ...robotAInfo] = +2 >getRobotB() +3 > +4 > ; +1->Emitted(28, 1) Source(40, 28) + SourceIndex(0) +2 >Emitted(28, 17) Source(40, 39) + SourceIndex(0) +3 >Emitted(28, 60) Source(40, 39) + SourceIndex(0) +4 >Emitted(28, 61) Source(40, 40) + SourceIndex(0) +--- +>>>_o = [2, "trimmer", "trimming"], numberB = _o[0], robotAInfo = _o.slice(1); +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^ +1-> + >[numberB, ...robotAInfo] = +2 >[2, "trimmer", "trimming"] +3 > +4 > ; +1->Emitted(29, 1) Source(41, 28) + SourceIndex(0) +2 >Emitted(29, 32) Source(41, 61) + SourceIndex(0) +3 >Emitted(29, 75) Source(41, 61) + SourceIndex(0) +4 >Emitted(29, 76) Source(41, 62) + SourceIndex(0) +--- +>>>multiRobotAInfo = multiRobotA.slice(0); +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^-> +1 > + > +2 >[...multiRobotAInfo] = multiRobotA +3 > ; +1 >Emitted(30, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(30, 39) Source(42, 35) + SourceIndex(0) +3 >Emitted(30, 40) Source(42, 36) + SourceIndex(0) +--- +>>>multiRobotAInfo = getMultiRobotB().slice(0); +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >[...multiRobotAInfo] = getMultiRobotB() +3 > ; +1->Emitted(31, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(31, 44) Source(43, 40) + SourceIndex(0) +3 >Emitted(31, 45) Source(43, 41) + SourceIndex(0) +--- +>>>multiRobotAInfo = ["trimmer", ["trimming", "edging"]].slice(0); +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +1-> + > +2 >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] +3 > ; +1->Emitted(32, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(32, 63) Source(44, 59) + SourceIndex(0) +3 >Emitted(32, 64) Source(44, 60) + SourceIndex(0) +--- +>>>if (nameA == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(33, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(33, 3) Source(46, 3) + SourceIndex(0) +3 >Emitted(33, 4) Source(46, 4) + SourceIndex(0) +4 >Emitted(33, 5) Source(46, 5) + SourceIndex(0) +5 >Emitted(33, 10) Source(46, 10) + SourceIndex(0) +6 >Emitted(33, 14) Source(46, 14) + SourceIndex(0) +7 >Emitted(33, 19) Source(46, 19) + SourceIndex(0) +8 >Emitted(33, 20) Source(46, 20) + SourceIndex(0) +9 >Emitted(33, 21) Source(46, 21) + SourceIndex(0) +10>Emitted(33, 22) Source(46, 22) + SourceIndex(0) +--- +>>> console.log(skillB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillB +7 > ) +8 > ; +1->Emitted(34, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(34, 23) Source(47, 23) + SourceIndex(0) +7 >Emitted(34, 24) Source(47, 24) + SourceIndex(0) +8 >Emitted(34, 25) Source(47, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(48, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(48, 2) + SourceIndex(0) +--- +>>>function getRobotB() { +1-> +2 >^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(36, 1) Source(50, 1) + SourceIndex(0) +--- +>>> return robotB; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobotB() { + > +2 > return +3 > +4 > robotB +5 > ; +1->Emitted(37, 5) Source(51, 5) + SourceIndex(0) +2 >Emitted(37, 11) Source(51, 11) + SourceIndex(0) +3 >Emitted(37, 12) Source(51, 12) + SourceIndex(0) +4 >Emitted(37, 18) Source(51, 18) + SourceIndex(0) +5 >Emitted(37, 19) Source(51, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(52, 2) + SourceIndex(0) +--- +>>>function getMultiRobotB() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(39, 1) Source(54, 1) + SourceIndex(0) +--- +>>> return multiRobotB; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobotB() { + > +2 > return +3 > +4 > multiRobotB +5 > ; +1->Emitted(40, 5) Source(55, 5) + SourceIndex(0) +2 >Emitted(40, 11) Source(55, 11) + SourceIndex(0) +3 >Emitted(40, 12) Source(55, 12) + SourceIndex(0) +4 >Emitted(40, 23) Source(55, 23) + SourceIndex(0) +5 >Emitted(40, 24) Source(55, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(56, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(56, 2) + SourceIndex(0) +--- +>>>var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.symbols new file mode 100644 index 00000000000..931523c6b26 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.symbols @@ -0,0 +1,176 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 3, 38)) + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 2, 1)) + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 7, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 2, 1)) + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 8, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 3, 38)) + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 9, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 3, 38)) + +let nameA: string, numberB: number, nameB: string, skillB: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 3)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 50)) + +let robotAInfo: (number | string)[]; +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 12, 3)) + +let multiSkillB: [string, string], nameMB: string, primarySkillB: string, secondarySkillB: string; +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 3)) +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 50)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 73)) + +let multiRobotAInfo: (string | [string, string])[]; +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 15, 3)) + +[, nameA] = robotA; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 6, 3)) + +[, nameB] = getRobotB(); +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 47, 1)) + +[, nameB] = [2, "trimmer", "trimming"]; +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) + +[, multiSkillB] = multiRobotB; +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 9, 3)) + +[, multiSkillB] = getMultiRobotB(); +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 3)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 51, 1)) + +[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 3)) + +[numberB] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 7, 3)) + +[numberB] = getRobotB(); +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 47, 1)) + +[numberB] = [2, "trimmer", "trimming"]; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) + +[nameMB] = multiRobotB; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 9, 3)) + +[nameMB] = getMultiRobotB(); +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 51, 1)) + +[nameMB] = ["trimmer", ["trimming", "edging"]]; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) + +[numberB, nameB, skillB] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 50)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 7, 3)) + +[numberB, nameB, skillB] = getRobotB(); +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 50)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 47, 1)) + +[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 50)) + +[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 50)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 73)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 9, 3)) + +[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 50)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 73)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 51, 1)) + +[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 34)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 50)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 14, 73)) + +[numberB, ...robotAInfo] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 12, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 7, 3)) + +[numberB, ...robotAInfo] = getRobotB(); +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 12, 3)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 47, 1)) + +[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 18)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 12, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 2, 1)) + +[...multiRobotAInfo] = multiRobotA; +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 15, 3)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 8, 3)) + +[...multiRobotAInfo] = getMultiRobotB(); +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 15, 3)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 51, 1)) + +[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 15, 3)) + +if (nameA == nameB) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 3)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 35)) + + console.log(skillB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 0, 22)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 11, 50)) +} + +function getRobotB() { +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 47, 1)) + + return robotB; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 7, 3)) +} + +function getMultiRobotB() { +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 51, 1)) + + return multiRobotB; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts, 9, 3)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types new file mode 100644 index 00000000000..5ca93029977 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.types @@ -0,0 +1,304 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +let nameA: string, numberB: number, nameB: string, skillB: string; +>nameA : string +>numberB : number +>nameB : string +>skillB : string + +let robotAInfo: (number | string)[]; +>robotAInfo : (number | string)[] + +let multiSkillB: [string, string], nameMB: string, primarySkillB: string, secondarySkillB: string; +>multiSkillB : [string, string] +>nameMB : string +>primarySkillB : string +>secondarySkillB : string + +let multiRobotAInfo: (string | [string, string])[]; +>multiRobotAInfo : (string | [string, string])[] + +[, nameA] = robotA; +>[, nameA] = robotA : [number, string, string] +>[, nameA] : [undefined, string] +> : undefined +>nameA : string +>robotA : [number, string, string] + +[, nameB] = getRobotB(); +>[, nameB] = getRobotB() : [number, string, string] +>[, nameB] : [undefined, string] +> : undefined +>nameB : string +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[, nameB] = [2, "trimmer", "trimming"]; +>[, nameB] = [2, "trimmer", "trimming"] : [number, string, string] +>[, nameB] : [undefined, string] +> : undefined +>nameB : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[, multiSkillB] = multiRobotB; +>[, multiSkillB] = multiRobotB : [string, [string, string]] +>[, multiSkillB] : [undefined, [string, string]] +> : undefined +>multiSkillB : [string, string] +>multiRobotB : [string, [string, string]] + +[, multiSkillB] = getMultiRobotB(); +>[, multiSkillB] = getMultiRobotB() : [string, [string, string]] +>[, multiSkillB] : [undefined, [string, string]] +> : undefined +>multiSkillB : [string, string] +>getMultiRobotB() : [string, [string, string]] +>getMultiRobotB : () => [string, [string, string]] + +[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; +>[, multiSkillB] = ["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>[, multiSkillB] : [undefined, [string, string]] +> : undefined +>multiSkillB : [string, string] +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + +[numberB] = robotB; +>[numberB] = robotB : [number, string, string] +>[numberB] : [number] +>numberB : number +>robotB : [number, string, string] + +[numberB] = getRobotB(); +>[numberB] = getRobotB() : [number, string, string] +>[numberB] : [number] +>numberB : number +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[numberB] = [2, "trimmer", "trimming"]; +>[numberB] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB] : [number] +>numberB : number +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[nameMB] = multiRobotB; +>[nameMB] = multiRobotB : [string, [string, string]] +>[nameMB] : [string] +>nameMB : string +>multiRobotB : [string, [string, string]] + +[nameMB] = getMultiRobotB(); +>[nameMB] = getMultiRobotB() : [string, [string, string]] +>[nameMB] : [string] +>nameMB : string +>getMultiRobotB() : [string, [string, string]] +>getMultiRobotB : () => [string, [string, string]] + +[nameMB] = ["trimmer", ["trimming", "edging"]]; +>[nameMB] = ["trimmer", ["trimming", "edging"]] : [string, string[]] +>[nameMB] : [string] +>nameMB : string +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string + +[numberB, nameB, skillB] = robotB; +>[numberB, nameB, skillB] = robotB : [number, string, string] +>[numberB, nameB, skillB] : [number, string, string] +>numberB : number +>nameB : string +>skillB : string +>robotB : [number, string, string] + +[numberB, nameB, skillB] = getRobotB(); +>[numberB, nameB, skillB] = getRobotB() : [number, string, string] +>[numberB, nameB, skillB] : [number, string, string] +>numberB : number +>nameB : string +>skillB : string +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; +>[numberB, nameB, skillB] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB, nameB, skillB] : [number, string, string] +>numberB : number +>nameB : string +>skillB : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; +>[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB : [string, [string, string]] +>[nameMB, [primarySkillB, secondarySkillB]] : [string, [string, string]] +>nameMB : string +>[primarySkillB, secondarySkillB] : [string, string] +>primarySkillB : string +>secondarySkillB : string +>multiRobotB : [string, [string, string]] + +[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); +>[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB() : [string, [string, string]] +>[nameMB, [primarySkillB, secondarySkillB]] : [string, [string, string]] +>nameMB : string +>[primarySkillB, secondarySkillB] : [string, string] +>primarySkillB : string +>secondarySkillB : string +>getMultiRobotB() : [string, [string, string]] +>getMultiRobotB : () => [string, [string, string]] + +[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; +>[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[nameMB, [primarySkillB, secondarySkillB]] : [string, [string, string]] +>nameMB : string +>[primarySkillB, secondarySkillB] : [string, string] +>primarySkillB : string +>secondarySkillB : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +[numberB, ...robotAInfo] = robotB; +>[numberB, ...robotAInfo] = robotB : [number, string, string] +>[numberB, ...robotAInfo] : (number | string)[] +>numberB : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>robotB : [number, string, string] + +[numberB, ...robotAInfo] = getRobotB(); +>[numberB, ...robotAInfo] = getRobotB() : [number, string, string] +>[numberB, ...robotAInfo] : (number | string)[] +>numberB : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; +>[numberB, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB, ...robotAInfo] : (number | string)[] +>numberB : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>[2, "trimmer", "trimming"] : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[...multiRobotAInfo] = multiRobotA; +>[...multiRobotAInfo] = multiRobotA : [string, [string, string]] +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>multiRobotA : [string, [string, string]] + +[...multiRobotAInfo] = getMultiRobotB(); +>[...multiRobotAInfo] = getMultiRobotB() : [string, [string, string]] +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>getMultiRobotB() : [string, [string, string]] +>getMultiRobotB : () => [string, [string, string]] + +[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; +>[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] : (string | [string, string])[] +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>["trimmer", ["trimming", "edging"]] : (string | [string, string])[] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +if (nameA == nameB) { +>nameA == nameB : boolean +>nameA : string +>nameB : string + + console.log(skillB); +>console.log(skillB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>skillB : string +} + +function getRobotB() { +>getRobotB : () => [number, string, string] + + return robotB; +>robotB : [number, string, string] +} + +function getMultiRobotB() { +>getMultiRobotB : () => [string, [string, string]] + + return multiRobotB; +>multiRobotB : [string, [string, string]] +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts new file mode 100644 index 00000000000..78ed29c397b --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts @@ -0,0 +1,57 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let nameA: string, numberB: number, nameB: string, skillB: string; +let robotAInfo: (number | string)[]; + +let multiSkillB: [string, string], nameMB: string, primarySkillB: string, secondarySkillB: string; +let multiRobotAInfo: (string | [string, string])[]; + +[, nameA] = robotA; +[, nameB] = getRobotB(); +[, nameB] = [2, "trimmer", "trimming"]; +[, multiSkillB] = multiRobotB; +[, multiSkillB] = getMultiRobotB(); +[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; + +[numberB] = robotB; +[numberB] = getRobotB(); +[numberB] = [2, "trimmer", "trimming"]; +[nameMB] = multiRobotB; +[nameMB] = getMultiRobotB(); +[nameMB] = ["trimmer", ["trimming", "edging"]]; + +[numberB, nameB, skillB] = robotB; +[numberB, nameB, skillB] = getRobotB(); +[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; +[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; +[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); +[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; + +[numberB, ...robotAInfo] = robotB; +[numberB, ...robotAInfo] = getRobotB(); +[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; +[...multiRobotAInfo] = multiRobotA; +[...multiRobotAInfo] = getMultiRobotB(); +[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; + +if (nameA == nameB) { + console.log(skillB); +} + +function getRobotB() { + return robotB; +} + +function getMultiRobotB() { + return multiRobotB; +} \ No newline at end of file From b1d395c4cf24f6c7b9a8ac00bafa9678edba6597 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 16:36:19 -0800 Subject: [PATCH 038/164] Make the destructuring array literal assignment better with sourcemap --- src/compiler/emitter.ts | 26 +- ...DestructuringForArrayBindingPattern.js.map | 2 +- ...turingForArrayBindingPattern.sourcemap.txt | 60 +-- ...estructuringForObjectBindingPattern.js.map | 2 +- ...uringForObjectBindingPattern.sourcemap.txt | 26 +- ...ationDestructuringVariableStatement.js.map | 2 +- ...structuringVariableStatement.sourcemap.txt | 6 +- ...ariableStatementArrayBindingPattern.js.map | 2 +- ...StatementArrayBindingPattern.sourcemap.txt | 6 +- ...riableStatementArrayBindingPattern2.js.map | 2 +- ...tatementArrayBindingPattern2.sourcemap.txt | 6 +- ...riableStatementArrayBindingPattern3.js.map | 2 +- ...tatementArrayBindingPattern3.sourcemap.txt | 384 ++++++++++++------ ...StatementNestedObjectBindingPattern.js.map | 2 +- ...ntNestedObjectBindingPattern.sourcemap.txt | 6 +- 15 files changed, 336 insertions(+), 198 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 4487695a2af..47e518e90d7 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1986,8 +1986,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return result; } - function createElementAccessExpression(expression: Expression, argumentExpression: Expression, sourceMapNode?: Node): ElementAccessExpression { - const result = createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, sourceMapNode || argumentExpression); + function createElementAccessExpression(expression: Expression, argumentExpression: Expression, sourceMapNode: Node): ElementAccessExpression { + const result = createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, sourceMapNode); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; @@ -3775,7 +3775,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (!canDefineTempVariablesInPlace) { recordTempDeclaration(identifier); } - emitAssignment(identifier, expression, shouldEmitCommaBeforeAssignment, expression); + emitAssignment(identifier, expression, shouldEmitCommaBeforeAssignment, expression.parent || expression); return identifier; } @@ -3867,7 +3867,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return !nameIsComputed && index.kind === SyntaxKind.Identifier ? createPropertyAccessExpression(object, index) - : createElementAccessExpression(object, index); + : createElementAccessExpression(object, index, index); } function createSliceCall(value: Expression, sliceIndex: number): CallExpression { @@ -3891,12 +3891,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { const propName = (p).name; const target = p.kind === SyntaxKind.ShorthandPropertyAssignment ? p : (p).initializer || propName; - emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName)); + emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName), p); } } } - function emitArrayLiteralAssignment(target: ArrayLiteralExpression, value: Expression) { + function emitArrayLiteralAssignment(target: ArrayLiteralExpression, value: Expression, sourceMapNode: Node) { const elements = target.elements; if (elements.length !== 1) { // For anything but a single element destructuring we need to generate a temporary @@ -3907,16 +3907,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const e = elements[i]; if (e.kind !== SyntaxKind.OmittedExpression) { if (e.kind !== SyntaxKind.SpreadElementExpression) { - emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i))); + emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i), e), elements.length === 1 ? sourceMapNode : e); } else if (i === elements.length - 1) { - emitDestructuringAssignment((e).expression, createSliceCall(value, i)); + emitDestructuringAssignment((e).expression, createSliceCall(value, i), elements.length === 1 ? sourceMapNode : e); } } } } - function emitDestructuringAssignment(target: Expression | ShorthandPropertyAssignment, value: Expression) { + function emitDestructuringAssignment(target: Expression | ShorthandPropertyAssignment, value: Expression, sourceMapNode: Node) { if (target.kind === SyntaxKind.ShorthandPropertyAssignment) { if ((target).objectAssignmentInitializer) { value = createDefaultValueCheck(value, (target).objectAssignmentInitializer); @@ -3931,11 +3931,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitObjectLiteralAssignment(target, value); } else if (target.kind === SyntaxKind.ArrayLiteralExpression) { - emitArrayLiteralAssignment(target, value); + emitArrayLiteralAssignment(target, value, sourceMapNode); } else { // TODO - emitAssignment(target, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, { pos: -1, end: -1 }); + emitAssignment(target, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, sourceMapNode); emitCount++; } } @@ -3948,14 +3948,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emit(value); } else if (isAssignmentExpressionStatement) { - emitDestructuringAssignment(target, value); + emitDestructuringAssignment(target, value, root); } else { if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) { write("("); } value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); - emitDestructuringAssignment(target, value); + emitDestructuringAssignment(target, value, root); write(", "); emit(value); if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) { diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map index efda72d1d96..5d84072bda9 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt index 11ef4f41879..3710798733e 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt @@ -344,8 +344,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [, nameA] = -7 > getRobot() +6 > +7 > [, nameA] = getRobot() 8 > 9 > [, nameA] = getRobot() 10> , @@ -366,7 +366,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) 4 >Emitted(13, 6) Source(21, 6) + SourceIndex(0) 5 >Emitted(13, 9) Source(21, 9) + SourceIndex(0) -6 >Emitted(13, 10) Source(21, 22) + SourceIndex(0) +6 >Emitted(13, 10) Source(21, 10) + SourceIndex(0) 7 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) 8 >Emitted(13, 27) Source(21, 10) + SourceIndex(0) 9 >Emitted(13, 40) Source(21, 32) + SourceIndex(0) @@ -450,8 +450,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [, nameA] = -7 > [2, "trimmer", "trimming"] +6 > +7 > [, nameA] = [2, "trimmer", "trimming"] 8 > 9 > [, nameA] = [2, "trimmer", "trimming"] 10> , @@ -472,7 +472,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) 4 >Emitted(16, 6) Source(24, 6) + SourceIndex(0) 5 >Emitted(16, 9) Source(24, 9) + SourceIndex(0) -6 >Emitted(16, 10) Source(24, 22) + SourceIndex(0) +6 >Emitted(16, 10) Source(24, 10) + SourceIndex(0) 7 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) 8 >Emitted(16, 43) Source(24, 10) + SourceIndex(0) 9 >Emitted(16, 56) Source(24, 48) + SourceIndex(0) @@ -672,8 +672,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [, [primarySkillA, secondarySkillA]] = -7 > getMultiRobot() +6 > +7 > [, [primarySkillA, secondarySkillA]] = getMultiRobot() 8 > 9 > [primarySkillA, secondarySkillA] 10> @@ -698,7 +698,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(22, 5) Source(30, 5) + SourceIndex(0) 4 >Emitted(22, 6) Source(30, 6) + SourceIndex(0) 5 >Emitted(22, 9) Source(30, 9) + SourceIndex(0) -6 >Emitted(22, 10) Source(30, 49) + SourceIndex(0) +6 >Emitted(22, 10) Source(30, 10) + SourceIndex(0) 7 >Emitted(22, 30) Source(30, 64) + SourceIndex(0) 8 >Emitted(22, 32) Source(30, 13) + SourceIndex(0) 9 >Emitted(22, 42) Source(30, 45) + SourceIndex(0) @@ -790,8 +790,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [, [primarySkillA, secondarySkillA]] = -7 > ["trimmer", ["trimming", "edging"]] +6 > +7 > [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] 8 > 9 > [primarySkillA, secondarySkillA] 10> @@ -816,7 +816,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) 4 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) 5 >Emitted(25, 9) Source(33, 9) + SourceIndex(0) -6 >Emitted(25, 10) Source(33, 49) + SourceIndex(0) +6 >Emitted(25, 10) Source(33, 10) + SourceIndex(0) 7 >Emitted(25, 50) Source(33, 84) + SourceIndex(0) 8 >Emitted(25, 52) Source(33, 13) + SourceIndex(0) 9 >Emitted(25, 62) Source(33, 45) + SourceIndex(0) @@ -1622,8 +1622,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [numberA2, nameA2, skillA2] = -7 > getRobot() +6 > +7 > [numberA2, nameA2, skillA2] = getRobot() 8 > 9 > numberA2 10> , @@ -1648,7 +1648,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(49, 5) Source(59, 5) + SourceIndex(0) 4 >Emitted(49, 6) Source(59, 6) + SourceIndex(0) 5 >Emitted(49, 9) Source(59, 9) + SourceIndex(0) -6 >Emitted(49, 10) Source(59, 40) + SourceIndex(0) +6 >Emitted(49, 10) Source(59, 10) + SourceIndex(0) 7 >Emitted(49, 25) Source(59, 50) + SourceIndex(0) 8 >Emitted(49, 27) Source(59, 11) + SourceIndex(0) 9 >Emitted(49, 43) Source(59, 19) + SourceIndex(0) @@ -1740,8 +1740,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [numberA2, nameA2, skillA2] = -7 > [2, "trimmer", "trimming"] +6 > +7 > [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] 8 > 9 > numberA2 10> , @@ -1766,7 +1766,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(52, 5) Source(62, 5) + SourceIndex(0) 4 >Emitted(52, 6) Source(62, 6) + SourceIndex(0) 5 >Emitted(52, 9) Source(62, 9) + SourceIndex(0) -6 >Emitted(52, 10) Source(62, 40) + SourceIndex(0) +6 >Emitted(52, 10) Source(62, 10) + SourceIndex(0) 7 >Emitted(52, 41) Source(62, 66) + SourceIndex(0) 8 >Emitted(52, 43) Source(62, 11) + SourceIndex(0) 9 >Emitted(52, 59) Source(62, 19) + SourceIndex(0) @@ -1978,8 +1978,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [nameMA, [primarySkillA, secondarySkillA]] = -7 > getMultiRobot() +6 > +7 > [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() 8 > 9 > nameMA 10> , @@ -2006,7 +2006,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(58, 5) Source(68, 5) + SourceIndex(0) 4 >Emitted(58, 6) Source(68, 6) + SourceIndex(0) 5 >Emitted(58, 9) Source(68, 9) + SourceIndex(0) -6 >Emitted(58, 10) Source(68, 55) + SourceIndex(0) +6 >Emitted(58, 10) Source(68, 10) + SourceIndex(0) 7 >Emitted(58, 30) Source(68, 70) + SourceIndex(0) 8 >Emitted(58, 32) Source(68, 11) + SourceIndex(0) 9 >Emitted(58, 46) Source(68, 17) + SourceIndex(0) @@ -2102,8 +2102,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [nameMA, [primarySkillA, secondarySkillA]] = -7 > ["trimmer", ["trimming", "edging"]] +6 > +7 > [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] 8 > 9 > nameMA 10> , @@ -2130,7 +2130,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(61, 5) Source(71, 5) + SourceIndex(0) 4 >Emitted(61, 6) Source(71, 6) + SourceIndex(0) 5 >Emitted(61, 9) Source(71, 9) + SourceIndex(0) -6 >Emitted(61, 10) Source(71, 55) + SourceIndex(0) +6 >Emitted(61, 10) Source(71, 10) + SourceIndex(0) 7 >Emitted(61, 50) Source(71, 90) + SourceIndex(0) 8 >Emitted(61, 52) Source(71, 11) + SourceIndex(0) 9 >Emitted(61, 66) Source(71, 17) + SourceIndex(0) @@ -2329,8 +2329,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [numberA3, ...robotAInfo] = -7 > getRobot() +6 > +7 > [numberA3, ...robotAInfo] = getRobot() 8 > 9 > numberA3 10> , @@ -2353,7 +2353,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(67, 5) Source(78, 5) + SourceIndex(0) 4 >Emitted(67, 6) Source(78, 6) + SourceIndex(0) 5 >Emitted(67, 9) Source(78, 9) + SourceIndex(0) -6 >Emitted(67, 10) Source(78, 38) + SourceIndex(0) +6 >Emitted(67, 10) Source(78, 10) + SourceIndex(0) 7 >Emitted(67, 25) Source(78, 48) + SourceIndex(0) 8 >Emitted(67, 27) Source(78, 11) + SourceIndex(0) 9 >Emitted(67, 43) Source(78, 19) + SourceIndex(0) @@ -2441,8 +2441,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > [numberA3, ...robotAInfo] = -7 > [2, "trimmer", "trimming"] +6 > +7 > [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] 8 > 9 > numberA3 10> , @@ -2465,7 +2465,7 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(70, 5) Source(81, 5) + SourceIndex(0) 4 >Emitted(70, 6) Source(81, 6) + SourceIndex(0) 5 >Emitted(70, 9) Source(81, 9) + SourceIndex(0) -6 >Emitted(70, 10) Source(81, 38) + SourceIndex(0) +6 >Emitted(70, 10) Source(81, 10) + SourceIndex(0) 7 >Emitted(70, 41) Source(81, 64) + SourceIndex(0) 8 >Emitted(70, 43) Source(81, 11) + SourceIndex(0) 9 >Emitted(70, 59) Source(81, 19) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map index b931afe67b0..2c3f4eb1264 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"AAgBA,IAAI,KAAK,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,IAAI,UAAU,GAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACjG;IACI,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AACD;IACI,MAAM,CAAC,UAAU,CAAC;AACtB,CAAC;AAED,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAsB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAC,uBAA2B,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAC,mDAA8D,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAG,sBAAM,EAAI,qBAAiB,EAAE,yBAAqB,EAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAG,2BAAM,EAAI,qBAAiB,EAAE,yBAAqB,EAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAG,qFAAM,EAAI,qBAAiB,EAAE,yBAAqB,EAEzD,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,GAAG,CAAC,CAAC,GAAG,CAAE,kBAAW,EAAE,oBAAa,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAiC,eAAU,EAAzC,eAAW,EAAE,iBAAa,EAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAiC,2CAA6C,EAA5E,eAAW,EAAE,iBAAa,EAAoD,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAE,uBAAW,EAAE,sBAAM,EAAI,qBAAiB,EAAE,yBAAqB,EAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAwE,oBAAe,EAArF,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB,EAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CACJ,8EAAqF,EAD/E,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB,EAErE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt index f598cc385f8..cac10b04888 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt @@ -985,8 +985,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 > 4 > ( 5 > let -6 > {name: nameA, skill: skillA } = -7 > getRobot() +6 > +7 > {name: nameA, skill: skillA } = getRobot() 8 > 9 > name: nameA 10> , @@ -1009,7 +1009,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 >Emitted(30, 5) Source(50, 5) + SourceIndex(0) 4 >Emitted(30, 6) Source(50, 6) + SourceIndex(0) 5 >Emitted(30, 9) Source(50, 9) + SourceIndex(0) -6 >Emitted(30, 10) Source(50, 42) + SourceIndex(0) +6 >Emitted(30, 10) Source(50, 10) + SourceIndex(0) 7 >Emitted(30, 25) Source(50, 52) + SourceIndex(0) 8 >Emitted(30, 27) Source(50, 11) + SourceIndex(0) 9 >Emitted(30, 42) Source(50, 22) + SourceIndex(0) @@ -1097,8 +1097,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 > 4 > ( 5 > let -6 > {name: nameA, skill: skillA } = -7 > { name: "trimmer", skill: "trimming" } +6 > +7 > {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } 8 > 9 > name: nameA 10> , @@ -1121,7 +1121,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 >Emitted(33, 5) Source(53, 5) + SourceIndex(0) 4 >Emitted(33, 6) Source(53, 6) + SourceIndex(0) 5 >Emitted(33, 9) Source(53, 9) + SourceIndex(0) -6 >Emitted(33, 10) Source(53, 42) + SourceIndex(0) +6 >Emitted(33, 10) Source(53, 10) + SourceIndex(0) 7 >Emitted(33, 53) Source(53, 87) + SourceIndex(0) 8 >Emitted(33, 55) Source(53, 11) + SourceIndex(0) 9 >Emitted(33, 70) Source(53, 22) + SourceIndex(0) @@ -1331,8 +1331,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 > 4 > ( 5 > let -6 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = -7 > getMultiRobot() +6 > +7 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() 8 > 9 > name: nameA 10> , @@ -1359,7 +1359,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 >Emitted(39, 5) Source(59, 5) + SourceIndex(0) 4 >Emitted(39, 6) Source(59, 6) + SourceIndex(0) 5 >Emitted(39, 9) Source(59, 9) + SourceIndex(0) -6 >Emitted(39, 10) Source(59, 81) + SourceIndex(0) +6 >Emitted(39, 10) Source(59, 10) + SourceIndex(0) 7 >Emitted(39, 30) Source(59, 96) + SourceIndex(0) 8 >Emitted(39, 32) Source(59, 11) + SourceIndex(0) 9 >Emitted(39, 47) Source(59, 22) + SourceIndex(0) @@ -1455,9 +1455,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 > 4 > ( 5 > let -6 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = - > -7 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +6 > +7 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 8 > 9 > name: nameA 10> , @@ -1486,7 +1486,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 3 >Emitted(42, 5) Source(62, 5) + SourceIndex(0) 4 >Emitted(42, 6) Source(62, 6) + SourceIndex(0) 5 >Emitted(42, 9) Source(62, 9) + SourceIndex(0) -6 >Emitted(42, 10) Source(63, 5) + SourceIndex(0) +6 >Emitted(42, 10) Source(62, 10) + SourceIndex(0) 7 >Emitted(42, 88) Source(63, 90) + SourceIndex(0) 8 >Emitted(42, 90) Source(62, 11) + SourceIndex(0) 9 >Emitted(42, 105) Source(62, 22) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map index b70ebc3bc1d..b7f0e37c778 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatement.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAI,mBAAwB,CAAC;AAC7B,IAAM,mBAAW,EAAE,qBAAa,CAAY;AAC5C,IAAqC,8CAAyC,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAI,mBAAwB,CAAC;AAC7B,IAAM,mBAAW,EAAE,qBAAa,CAAY;AAC5C,IAAI,8CAA0E,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt index 36f31e00216..f69d311e90d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt @@ -176,15 +176,15 @@ sourceFile:sourceMapValidationDestructuringVariableStatement.ts 8 > ^ 1-> > -2 >var { name: nameC, skill: skillC } = -3 > { name: "Edger", skill: "cutting edges" } +2 >var +3 > { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } 4 > 5 > name: nameC 6 > , 7 > skill: skillC 8 > } = { name: "Edger", skill: "cutting edges" }; 1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) -2 >Emitted(6, 5) Source(13, 38) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) 3 >Emitted(6, 51) Source(13, 79) + SourceIndex(0) 4 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) 5 >Emitted(6, 68) Source(13, 18) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map index ff3efc97078..5047017e525 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAI,iBAAkB,CAAC;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAA+B,oCAA+B,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAI,iBAAkB,CAAC;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAAI,oCAA0D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt index 557043581c3..da4f258ea9b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt @@ -181,8 +181,8 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern. 10> ^ 1-> > -2 >let [numberC, nameC, skillC] = -3 > [3, "edging", "Trimming edges"] +2 >let +3 > [numberC, nameC, skillC] = [3, "edging", "Trimming edges"] 4 > 5 > numberC 6 > , @@ -191,7 +191,7 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern. 9 > skillC 10> ] = [3, "edging", "Trimming edges"]; 1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) -2 >Emitted(7, 5) Source(14, 32) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) 3 >Emitted(7, 41) Source(14, 63) + SourceIndex(0) 4 >Emitted(7, 43) Source(14, 6) + SourceIndex(0) 5 >Emitted(7, 58) Source(14, 13) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map index c588d92c53d..3ed458e21b0 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,uBAAwB,CAAC;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAkD,sCAAiC,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,uBAAwB,CAAC;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAI,sCAA+E,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt index a81a55e629a..8e61c11ef3f 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt @@ -200,8 +200,8 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 12> ^ 1-> > -2 >let [nameMC2, [primarySkillC, secondarySkillC]] = -3 > ["roomba", ["vaccum", "mopping"]] +2 >let +3 > [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]] 4 > 5 > nameMC2 6 > , @@ -212,7 +212,7 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 11> secondarySkillC 12> ]] = ["roomba", ["vaccum", "mopping"]]; 1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) -2 >Emitted(7, 5) Source(13, 51) + SourceIndex(0) +2 >Emitted(7, 5) Source(13, 5) + SourceIndex(0) 3 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) 4 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) 5 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map index 9b10b964ee5..61afc3ab57b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,MAAc,CAAC;AAClE,IAAI,UAA+B,CAAC;AAEpC,IAAI,WAA6B,EAAE,MAAc,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAClG,IAAI,eAA8C,CAAC;AAEnD,iBAAkB,CAAC;AACP,gBAAW,eAAA,CAAC;AACZ,+BAA0B,eAAA,CAAC;AACvC,4BAA6B,CAAC;AACZ,qBAAgB,qBAAA,CAAC;AACjB,sCAAiC,qBAAA,CAAC;AAEpD,mBAAkB,CAAC;AACnB,wBAAuB,CAAC;AACxB,uCAAsC,CAAC;AACvC,uBAAsB,CAAC;AACvB,4BAA2B,CAAC;AAC5B,+CAA8C,CAAC;AAE/C,0DAAiC,CAAC;AACP,gBAAW,gDAAA,CAAC;AACZ,+BAA0B,gDAAA,CAAC;AACtD,4FAAwD,CAAC;AACZ,qBAAgB,4EAAA,CAAC;AACjB,wCAAmC,4EAAA,CAAC;AAEjF,iDAAiC,CAAC;AACP,gBAAW,2CAAA,CAAC;AACZ,+BAAiC,2CAAA,CAAC;AAC7D,sCAAkC,CAAC;AACnC,2CAAuC,CAAC;AACxC,8DAA0D,CAAC;AAE3D,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,MAAc,CAAC;AAClE,IAAI,UAA+B,CAAC;AAEpC,IAAI,WAA6B,EAAE,MAAc,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAClG,IAAI,eAA8C,CAAC;AAEhD,iBAAK,CAAW;AACnB,gBAAuB,EAApB,aAAK,CAAgB;AACxB,+BAAsC,EAAnC,aAAK,CAA+B;AACpC,4BAAW,CAAgB;AAC9B,qBAAkC,EAA/B,mBAAW,CAAqB;AACnC,sCAAmD,EAAhD,mBAAW,CAAsC;AAEpD,mBAAkB,CAAC;AACnB,wBAAuB,CAAC;AACxB,uCAAsC,CAAC;AACvC,uBAAsB,CAAC;AACvB,4BAA2B,CAAC;AAC5B,+CAA8C,CAAC;AAE9C,mBAAO,EAAE,iBAAK,EAAE,kBAAM,CAAW;AAClC,gBAAsC,EAArC,eAAO,EAAE,aAAK,EAAE,cAAM,CAAgB;AACvC,+BAAqD,EAApD,eAAO,EAAE,aAAK,EAAE,cAAM,CAA+B;AACrD,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AACzD,qBAA6D,EAA5D,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAsB;AAC9D,wCAAgF,EAA/E,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAyC;AAEhF,mBAAO,EAAE,4BAAa,CAAW;AAClC,gBAAsC,EAArC,eAAO,EAAE,wBAAa,CAAgB;AACvC,+BAA4D,EAA3D,eAAO,EAAE,wBAAa,CAAsC;AAC7D,sCAAkC,CAAC;AACnC,2CAAuC,CAAC;AACxC,8DAA0D,CAAC;AAE3D,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt index fbe3c58b0a6..3c02134201b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt @@ -290,43 +290,49 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 4 > ^^^^^^^^^^^^^^^-> 1 > > - > -2 >[, nameA] = robotA -3 > ; -1 >Emitted(9, 1) Source(18, 1) + SourceIndex(0) -2 >Emitted(9, 18) Source(18, 19) + SourceIndex(0) + >[, +2 >nameA +3 > ] = robotA; +1 >Emitted(9, 1) Source(18, 4) + SourceIndex(0) +2 >Emitted(9, 18) Source(18, 9) + SourceIndex(0) 3 >Emitted(9, 19) Source(18, 20) + SourceIndex(0) --- >>>_a = getRobotB(), nameB = _a[1]; 1-> 2 >^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^-> +3 > ^^ +4 > ^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^-> 1-> - >[, nameB] = -2 >getRobotB() + > +2 >[, nameB] = getRobotB() 3 > -4 > ; -1->Emitted(10, 1) Source(19, 13) + SourceIndex(0) +4 > nameB +5 > ] = getRobotB(); +1->Emitted(10, 1) Source(19, 1) + SourceIndex(0) 2 >Emitted(10, 17) Source(19, 24) + SourceIndex(0) -3 >Emitted(10, 32) Source(19, 24) + SourceIndex(0) -4 >Emitted(10, 33) Source(19, 25) + SourceIndex(0) +3 >Emitted(10, 19) Source(19, 4) + SourceIndex(0) +4 >Emitted(10, 32) Source(19, 9) + SourceIndex(0) +5 >Emitted(10, 33) Source(19, 25) + SourceIndex(0) --- >>>_b = [2, "trimmer", "trimming"], nameB = _b[1]; 1-> 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^ +3 > ^^ +4 > ^^^^^^^^^^^^^ +5 > ^ 1-> - >[, nameB] = -2 >[2, "trimmer", "trimming"] + > +2 >[, nameB] = [2, "trimmer", "trimming"] 3 > -4 > ; -1->Emitted(11, 1) Source(20, 13) + SourceIndex(0) +4 > nameB +5 > ] = [2, "trimmer", "trimming"]; +1->Emitted(11, 1) Source(20, 1) + SourceIndex(0) 2 >Emitted(11, 32) Source(20, 39) + SourceIndex(0) -3 >Emitted(11, 47) Source(20, 39) + SourceIndex(0) -4 >Emitted(11, 48) Source(20, 40) + SourceIndex(0) +3 >Emitted(11, 34) Source(20, 4) + SourceIndex(0) +4 >Emitted(11, 47) Source(20, 9) + SourceIndex(0) +5 >Emitted(11, 48) Source(20, 40) + SourceIndex(0) --- >>>multiSkillB = multiRobotB[1]; 1 > @@ -334,43 +340,49 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^^^^^^^^^^-> 1 > - > -2 >[, multiSkillB] = multiRobotB -3 > ; -1 >Emitted(12, 1) Source(21, 1) + SourceIndex(0) -2 >Emitted(12, 29) Source(21, 30) + SourceIndex(0) + >[, +2 >multiSkillB +3 > ] = multiRobotB; +1 >Emitted(12, 1) Source(21, 4) + SourceIndex(0) +2 >Emitted(12, 29) Source(21, 15) + SourceIndex(0) 3 >Emitted(12, 30) Source(21, 31) + SourceIndex(0) --- >>>_c = getMultiRobotB(), multiSkillB = _c[1]; 1-> 2 >^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^-> +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^-> 1-> - >[, multiSkillB] = -2 >getMultiRobotB() + > +2 >[, multiSkillB] = getMultiRobotB() 3 > -4 > ; -1->Emitted(13, 1) Source(22, 19) + SourceIndex(0) +4 > multiSkillB +5 > ] = getMultiRobotB(); +1->Emitted(13, 1) Source(22, 1) + SourceIndex(0) 2 >Emitted(13, 22) Source(22, 35) + SourceIndex(0) -3 >Emitted(13, 43) Source(22, 35) + SourceIndex(0) -4 >Emitted(13, 44) Source(22, 36) + SourceIndex(0) +3 >Emitted(13, 24) Source(22, 4) + SourceIndex(0) +4 >Emitted(13, 43) Source(22, 15) + SourceIndex(0) +5 >Emitted(13, 44) Source(22, 36) + SourceIndex(0) --- >>>_d = ["roomba", ["vaccum", "mopping"]], multiSkillB = _d[1]; 1-> 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^ -4 > ^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^ +5 > ^ 1-> - >[, multiSkillB] = -2 >["roomba", ["vaccum", "mopping"]] + > +2 >[, multiSkillB] = ["roomba", ["vaccum", "mopping"]] 3 > -4 > ; -1->Emitted(14, 1) Source(23, 19) + SourceIndex(0) +4 > multiSkillB +5 > ] = ["roomba", ["vaccum", "mopping"]]; +1->Emitted(14, 1) Source(23, 1) + SourceIndex(0) 2 >Emitted(14, 39) Source(23, 52) + SourceIndex(0) -3 >Emitted(14, 60) Source(23, 52) + SourceIndex(0) -4 >Emitted(14, 61) Source(23, 53) + SourceIndex(0) +3 >Emitted(14, 41) Source(23, 4) + SourceIndex(0) +4 >Emitted(14, 60) Source(23, 15) + SourceIndex(0) +5 >Emitted(14, 61) Source(23, 53) + SourceIndex(0) --- >>>numberB = robotB[0]; 1 > @@ -452,138 +464,264 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 --- >>>numberB = robotB[0], nameB = robotB[1], skillB = robotB[2]; 1-> -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^ -4 > ^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^-> 1-> > - > -2 >[numberB, nameB, skillB] = robotB -3 > ; -1->Emitted(21, 1) Source(32, 1) + SourceIndex(0) -2 >Emitted(21, 59) Source(32, 34) + SourceIndex(0) -3 >Emitted(21, 60) Source(32, 35) + SourceIndex(0) + >[ +2 >numberB +3 > , +4 > nameB +5 > , +6 > skillB +7 > ] = robotB; +1->Emitted(21, 1) Source(32, 2) + SourceIndex(0) +2 >Emitted(21, 20) Source(32, 9) + SourceIndex(0) +3 >Emitted(21, 22) Source(32, 11) + SourceIndex(0) +4 >Emitted(21, 39) Source(32, 16) + SourceIndex(0) +5 >Emitted(21, 41) Source(32, 18) + SourceIndex(0) +6 >Emitted(21, 59) Source(32, 24) + SourceIndex(0) +7 >Emitted(21, 60) Source(32, 35) + SourceIndex(0) --- >>>_e = getRobotB(), numberB = _e[0], nameB = _e[1], skillB = _e[2]; 1-> 2 >^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^-> +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^^^^^^^^^^^^-> 1-> - >[numberB, nameB, skillB] = -2 >getRobotB() + > +2 >[numberB, nameB, skillB] = getRobotB() 3 > -4 > ; -1->Emitted(22, 1) Source(33, 28) + SourceIndex(0) +4 > numberB +5 > , +6 > nameB +7 > , +8 > skillB +9 > ] = getRobotB(); +1->Emitted(22, 1) Source(33, 1) + SourceIndex(0) 2 >Emitted(22, 17) Source(33, 39) + SourceIndex(0) -3 >Emitted(22, 65) Source(33, 39) + SourceIndex(0) -4 >Emitted(22, 66) Source(33, 40) + SourceIndex(0) +3 >Emitted(22, 19) Source(33, 2) + SourceIndex(0) +4 >Emitted(22, 34) Source(33, 9) + SourceIndex(0) +5 >Emitted(22, 36) Source(33, 11) + SourceIndex(0) +6 >Emitted(22, 49) Source(33, 16) + SourceIndex(0) +7 >Emitted(22, 51) Source(33, 18) + SourceIndex(0) +8 >Emitted(22, 65) Source(33, 24) + SourceIndex(0) +9 >Emitted(22, 66) Source(33, 40) + SourceIndex(0) --- >>>_f = [2, "trimmer", "trimming"], numberB = _f[0], nameB = _f[1], skillB = _f[2]; 1-> 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^-> +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^^^^^^^^^^-> 1-> - >[numberB, nameB, skillB] = -2 >[2, "trimmer", "trimming"] + > +2 >[numberB, nameB, skillB] = [2, "trimmer", "trimming"] 3 > -4 > ; -1->Emitted(23, 1) Source(34, 28) + SourceIndex(0) +4 > numberB +5 > , +6 > nameB +7 > , +8 > skillB +9 > ] = [2, "trimmer", "trimming"]; +1->Emitted(23, 1) Source(34, 1) + SourceIndex(0) 2 >Emitted(23, 32) Source(34, 54) + SourceIndex(0) -3 >Emitted(23, 80) Source(34, 54) + SourceIndex(0) -4 >Emitted(23, 81) Source(34, 55) + SourceIndex(0) +3 >Emitted(23, 34) Source(34, 2) + SourceIndex(0) +4 >Emitted(23, 49) Source(34, 9) + SourceIndex(0) +5 >Emitted(23, 51) Source(34, 11) + SourceIndex(0) +6 >Emitted(23, 64) Source(34, 16) + SourceIndex(0) +7 >Emitted(23, 66) Source(34, 18) + SourceIndex(0) +8 >Emitted(23, 80) Source(34, 24) + SourceIndex(0) +9 >Emitted(23, 81) Source(34, 55) + SourceIndex(0) --- >>>nameMB = multiRobotB[0], _g = multiRobotB[1], primarySkillB = _g[0], secondarySkillB = _g[1]; 1-> -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^ -4 > ^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^^-> 1-> - > -2 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB -3 > ; -1->Emitted(24, 1) Source(35, 1) + SourceIndex(0) -2 >Emitted(24, 93) Source(35, 57) + SourceIndex(0) -3 >Emitted(24, 94) Source(35, 58) + SourceIndex(0) + >[ +2 >nameMB +3 > , +4 > [primarySkillB, secondarySkillB] +5 > +6 > primarySkillB +7 > , +8 > secondarySkillB +9 > ]] = multiRobotB; +1->Emitted(24, 1) Source(35, 2) + SourceIndex(0) +2 >Emitted(24, 24) Source(35, 8) + SourceIndex(0) +3 >Emitted(24, 26) Source(35, 10) + SourceIndex(0) +4 >Emitted(24, 45) Source(35, 42) + SourceIndex(0) +5 >Emitted(24, 47) Source(35, 11) + SourceIndex(0) +6 >Emitted(24, 68) Source(35, 24) + SourceIndex(0) +7 >Emitted(24, 70) Source(35, 26) + SourceIndex(0) +8 >Emitted(24, 93) Source(35, 41) + SourceIndex(0) +9 >Emitted(24, 94) Source(35, 58) + SourceIndex(0) --- >>>_h = getMultiRobotB(), nameMB = _h[0], _j = _h[1], primarySkillB = _j[0], secondarySkillB = _j[1]; 1-> 2 >^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^-> +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^ +11> ^ +12> ^^^^^^^^^^^^^^^^^^^^-> 1-> - >[nameMB, [primarySkillB, secondarySkillB]] = -2 >getMultiRobotB() + > +2 >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB() 3 > -4 > ; -1->Emitted(25, 1) Source(36, 46) + SourceIndex(0) +4 > nameMB +5 > , +6 > [primarySkillB, secondarySkillB] +7 > +8 > primarySkillB +9 > , +10> secondarySkillB +11> ]] = getMultiRobotB(); +1->Emitted(25, 1) Source(36, 1) + SourceIndex(0) 2 >Emitted(25, 22) Source(36, 62) + SourceIndex(0) -3 >Emitted(25, 98) Source(36, 62) + SourceIndex(0) -4 >Emitted(25, 99) Source(36, 63) + SourceIndex(0) +3 >Emitted(25, 24) Source(36, 2) + SourceIndex(0) +4 >Emitted(25, 38) Source(36, 8) + SourceIndex(0) +5 >Emitted(25, 40) Source(36, 10) + SourceIndex(0) +6 >Emitted(25, 50) Source(36, 42) + SourceIndex(0) +7 >Emitted(25, 52) Source(36, 11) + SourceIndex(0) +8 >Emitted(25, 73) Source(36, 24) + SourceIndex(0) +9 >Emitted(25, 75) Source(36, 26) + SourceIndex(0) +10>Emitted(25, 98) Source(36, 41) + SourceIndex(0) +11>Emitted(25, 99) Source(36, 63) + SourceIndex(0) --- >>>_k = ["trimmer", ["trimming", "edging"]], nameMB = _k[0], _l = _k[1], primarySkillB = _l[0], secondarySkillB = _l[1]; 1-> 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^ +11> ^ 1-> - >[nameMB, [primarySkillB, secondarySkillB]] = -2 >["trimmer", ["trimming", "edging"]] + > +2 >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]] 3 > -4 > ; -1->Emitted(26, 1) Source(37, 46) + SourceIndex(0) +4 > nameMB +5 > , +6 > [primarySkillB, secondarySkillB] +7 > +8 > primarySkillB +9 > , +10> secondarySkillB +11> ]] = ["trimmer", ["trimming", "edging"]]; +1->Emitted(26, 1) Source(37, 1) + SourceIndex(0) 2 >Emitted(26, 41) Source(37, 81) + SourceIndex(0) -3 >Emitted(26, 117) Source(37, 81) + SourceIndex(0) -4 >Emitted(26, 118) Source(37, 82) + SourceIndex(0) +3 >Emitted(26, 43) Source(37, 2) + SourceIndex(0) +4 >Emitted(26, 57) Source(37, 8) + SourceIndex(0) +5 >Emitted(26, 59) Source(37, 10) + SourceIndex(0) +6 >Emitted(26, 69) Source(37, 42) + SourceIndex(0) +7 >Emitted(26, 71) Source(37, 11) + SourceIndex(0) +8 >Emitted(26, 92) Source(37, 24) + SourceIndex(0) +9 >Emitted(26, 94) Source(37, 26) + SourceIndex(0) +10>Emitted(26, 117) Source(37, 41) + SourceIndex(0) +11>Emitted(26, 118) Source(37, 82) + SourceIndex(0) --- >>>numberB = robotB[0], robotAInfo = robotB.slice(1); 1 > -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^ -4 > ^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^-> 1 > > - > -2 >[numberB, ...robotAInfo] = robotB -3 > ; -1 >Emitted(27, 1) Source(39, 1) + SourceIndex(0) -2 >Emitted(27, 50) Source(39, 34) + SourceIndex(0) -3 >Emitted(27, 51) Source(39, 35) + SourceIndex(0) + >[ +2 >numberB +3 > , +4 > ...robotAInfo +5 > ] = robotB; +1 >Emitted(27, 1) Source(39, 2) + SourceIndex(0) +2 >Emitted(27, 20) Source(39, 9) + SourceIndex(0) +3 >Emitted(27, 22) Source(39, 11) + SourceIndex(0) +4 >Emitted(27, 50) Source(39, 24) + SourceIndex(0) +5 >Emitted(27, 51) Source(39, 35) + SourceIndex(0) --- >>>_m = getRobotB(), numberB = _m[0], robotAInfo = _m.slice(1); 1-> 2 >^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^-> +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^-> 1-> - >[numberB, ...robotAInfo] = -2 >getRobotB() + > +2 >[numberB, ...robotAInfo] = getRobotB() 3 > -4 > ; -1->Emitted(28, 1) Source(40, 28) + SourceIndex(0) +4 > numberB +5 > , +6 > ...robotAInfo +7 > ] = getRobotB(); +1->Emitted(28, 1) Source(40, 1) + SourceIndex(0) 2 >Emitted(28, 17) Source(40, 39) + SourceIndex(0) -3 >Emitted(28, 60) Source(40, 39) + SourceIndex(0) -4 >Emitted(28, 61) Source(40, 40) + SourceIndex(0) +3 >Emitted(28, 19) Source(40, 2) + SourceIndex(0) +4 >Emitted(28, 34) Source(40, 9) + SourceIndex(0) +5 >Emitted(28, 36) Source(40, 11) + SourceIndex(0) +6 >Emitted(28, 60) Source(40, 24) + SourceIndex(0) +7 >Emitted(28, 61) Source(40, 40) + SourceIndex(0) --- >>>_o = [2, "trimmer", "trimming"], numberB = _o[0], robotAInfo = _o.slice(1); 1-> 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ 1-> - >[numberB, ...robotAInfo] = -2 >[2, "trimmer", "trimming"] + > +2 >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"] 3 > -4 > ; -1->Emitted(29, 1) Source(41, 28) + SourceIndex(0) +4 > numberB +5 > , +6 > ...robotAInfo +7 > ] = [2, "trimmer", "trimming"]; +1->Emitted(29, 1) Source(41, 1) + SourceIndex(0) 2 >Emitted(29, 32) Source(41, 61) + SourceIndex(0) -3 >Emitted(29, 75) Source(41, 61) + SourceIndex(0) -4 >Emitted(29, 76) Source(41, 62) + SourceIndex(0) +3 >Emitted(29, 34) Source(41, 2) + SourceIndex(0) +4 >Emitted(29, 49) Source(41, 9) + SourceIndex(0) +5 >Emitted(29, 51) Source(41, 11) + SourceIndex(0) +6 >Emitted(29, 75) Source(41, 24) + SourceIndex(0) +7 >Emitted(29, 76) Source(41, 62) + SourceIndex(0) --- >>>multiRobotAInfo = multiRobotA.slice(0); 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map index 6723a44d68b..5f4eb18e261 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAE9F,IAAM,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACtE,IAAM,mBAAW,EAAE,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAA4E,mFAA8E,EAApJ,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAE9F,IAAM,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACtE,IAAM,mBAAW,EAAE,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAAI,mFAAsJ,EAApJ,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt index 085104bad32..0e26912364f 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt @@ -234,8 +234,8 @@ sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingP 12> ^ 1-> > -2 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = -3 > { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } +2 >var +3 > { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } 4 > 5 > name: nameC 6 > , @@ -246,7 +246,7 @@ sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingP 11> secondary: secondaryB 12> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; 1->Emitted(5, 1) Source(16, 1) + SourceIndex(0) -2 >Emitted(5, 5) Source(16, 77) + SourceIndex(0) +2 >Emitted(5, 5) Source(16, 5) + SourceIndex(0) 3 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) 4 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) 5 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) From a99c9a00dcc8d6ef6317e36cdaae4ea201243c14 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 16:59:25 -0800 Subject: [PATCH 039/164] Test case for "For of" that initializes vars using array binding pattern --- ...nDestructuringForOfArrayBindingPattern2.js | 217 ++ ...tructuringForOfArrayBindingPattern2.js.map | 2 + ...ingForOfArrayBindingPattern2.sourcemap.txt | 2777 +++++++++++++++++ ...ructuringForOfArrayBindingPattern2.symbols | 343 ++ ...structuringForOfArrayBindingPattern2.types | 445 +++ ...nDestructuringForOfArrayBindingPattern2.ts | 101 + 6 files changed, 3885 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js new file mode 100644 index 00000000000..8b21faf3ad9 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js @@ -0,0 +1,217 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPattern2.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + +for ([, nameA] of robots) { + console.log(nameA); +} +for ([, nameA] of getRobots()) { + console.log(nameA); +} +for ([, nameA] of [robotA, robotB]) { + console.log(nameA); +} +for ([, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for ([numberB] of robots) { + console.log(numberB); +} +for ([numberB] of getRobots()) { + console.log(numberB); +} +for ([numberB] of [robotA, robotB]) { + console.log(numberB); +} +for ([nameB] of multiRobots) { + console.log(nameB); +} +for ([nameB] of getMultiRobots()) { + console.log(nameB); +} +for ([nameB] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for ([numberA2, nameA2, skillA2] of robots) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] of getRobots()) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { + console.log(nameA2); +} +for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for ([numberA3, ...robotAInfo] of robots) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} +for ([...multiRobotAInfo] of multiRobots) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] of getMultiRobots()) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + console.log(multiRobotAInfo); +} + +//// [sourceMapValidationDestructuringForOfArrayBindingPattern2.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var robots = [robotA, robotB]; +function getRobots() { + return robots; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} +var nameA, primarySkillA, secondarySkillA; +var numberB, nameB; +var numberA2, nameA2, skillA2, nameMA; +var numberA3, robotAInfo, multiRobotAInfo; +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + _a = robots_1[_i], nameA = _a[1]; + console.log(nameA); +} +for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { + _d = _c[_b], nameA = _d[1]; + console.log(nameA); +} +for (var _e = 0, _f = [robotA, robotB]; _e < _f.length; _e++) { + _g = _f[_e], nameA = _g[1]; + console.log(nameA); +} +for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { + _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; + console.log(primarySkillA); +} +for (var _l = 0, _m = getMultiRobots(); _l < _m.length; _l++) { + _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; + console.log(primarySkillA); +} +for (var _q = 0, _r = [multiRobotA, multiRobotB]; _q < _r.length; _q++) { + _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; + console.log(primarySkillA); +} +for (var _u = 0, robots_2 = robots; _u < robots_2.length; _u++) { + numberB = robots_2[_u][0]; + console.log(numberB); +} +for (var _v = 0, _w = getRobots(); _v < _w.length; _v++) { + numberB = _w[_v][0]; + console.log(numberB); +} +for (var _x = 0, _y = [robotA, robotB]; _x < _y.length; _x++) { + numberB = _y[_x][0]; + console.log(numberB); +} +for (var _z = 0, multiRobots_2 = multiRobots; _z < multiRobots_2.length; _z++) { + nameB = multiRobots_2[_z][0]; + console.log(nameB); +} +for (var _0 = 0, _1 = getMultiRobots(); _0 < _1.length; _0++) { + nameB = _1[_0][0]; + console.log(nameB); +} +for (var _2 = 0, _3 = [multiRobotA, multiRobotB]; _2 < _3.length; _2++) { + nameB = _3[_2][0]; + console.log(nameB); +} +for (var _4 = 0, robots_3 = robots; _4 < robots_3.length; _4++) { + _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; + console.log(nameA2); +} +for (var _6 = 0, _7 = getRobots(); _6 < _7.length; _6++) { + _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; + console.log(nameA2); +} +for (var _9 = 0, _10 = [robotA, robotB]; _9 < _10.length; _9++) { + _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; + console.log(nameA2); +} +for (var _12 = 0, multiRobots_3 = multiRobots; _12 < multiRobots_3.length; _12++) { + _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; + console.log(nameMA); +} +for (var _15 = 0, _16 = getMultiRobots(); _15 < _16.length; _15++) { + _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; + console.log(nameMA); +} +for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { + _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; + console.log(nameMA); +} +for (var _23 = 0, robots_4 = robots; _23 < robots_4.length; _23++) { + _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); + console.log(numberA3); +} +for (var _25 = 0, _26 = getRobots(); _25 < _26.length; _25++) { + _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); + console.log(numberA3); +} +for (var _28 = 0, _29 = [robotA, robotB]; _28 < _29.length; _28++) { + _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); + console.log(numberA3); +} +for (var _31 = 0, multiRobots_4 = multiRobots; _31 < multiRobots_4.length; _31++) { + multiRobotAInfo = multiRobots_4[_31].slice(0); + console.log(multiRobotAInfo); +} +for (var _32 = 0, _33 = getMultiRobots(); _32 < _33.length; _32++) { + multiRobotAInfo = _33[_32].slice(0); + console.log(multiRobotAInfo); +} +for (var _34 = 0, _35 = [multiRobotA, multiRobotB]; _34 < _35.length; _34++) { + multiRobotAInfo = _35[_34].slice(0); + console.log(multiRobotAInfo); +} +var _a, _d, _g, _j, _k, _o, _p, _s, _t, _5, _8, _11, _13, _14, _17, _18, _21, _22, _24, _27, _30; +//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map new file mode 100644 index 00000000000..fa0a2e18ac9 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt new file mode 100644 index 00000000000..409629e1081 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt @@ -0,0 +1,2777 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfArrayBindingPattern2.js +mapUrl: sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfArrayBindingPattern2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.js +sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +1-> + > +2 >let +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(8, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(8, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(8, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(8, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(8, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(8, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(8, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(8, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(8, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(8, 48) + SourceIndex(0) +--- +>>>var robots = [robotA, robotB]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^^ +8 > ^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > robots +4 > = +5 > [ +6 > robotA +7 > , +8 > robotB +9 > ] +10> ; +1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(9, 14) + SourceIndex(0) +5 >Emitted(3, 15) Source(9, 15) + SourceIndex(0) +6 >Emitted(3, 21) Source(9, 21) + SourceIndex(0) +7 >Emitted(3, 23) Source(9, 23) + SourceIndex(0) +8 >Emitted(3, 29) Source(9, 29) + SourceIndex(0) +9 >Emitted(3, 30) Source(9, 30) + SourceIndex(0) +10>Emitted(3, 31) Source(9, 31) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(11, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(11, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) +3 >Emitted(7, 16) Source(14, 16) + SourceIndex(0) +4 >Emitted(7, 19) Source(14, 38) + SourceIndex(0) +5 >Emitted(7, 20) Source(14, 39) + SourceIndex(0) +6 >Emitted(7, 27) Source(14, 46) + SourceIndex(0) +7 >Emitted(7, 29) Source(14, 48) + SourceIndex(0) +8 >Emitted(7, 30) Source(14, 49) + SourceIndex(0) +9 >Emitted(7, 38) Source(14, 57) + SourceIndex(0) +10>Emitted(7, 40) Source(14, 59) + SourceIndex(0) +11>Emitted(7, 42) Source(14, 61) + SourceIndex(0) +12>Emitted(7, 43) Source(14, 62) + SourceIndex(0) +13>Emitted(7, 44) Source(14, 63) + SourceIndex(0) +14>Emitted(7, 45) Source(14, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(8, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(8, 16) Source(15, 16) + SourceIndex(0) +4 >Emitted(8, 19) Source(15, 38) + SourceIndex(0) +5 >Emitted(8, 20) Source(15, 39) + SourceIndex(0) +6 >Emitted(8, 29) Source(15, 48) + SourceIndex(0) +7 >Emitted(8, 31) Source(15, 50) + SourceIndex(0) +8 >Emitted(8, 32) Source(15, 51) + SourceIndex(0) +9 >Emitted(8, 42) Source(15, 61) + SourceIndex(0) +10>Emitted(8, 44) Source(15, 63) + SourceIndex(0) +11>Emitted(8, 52) Source(15, 71) + SourceIndex(0) +12>Emitted(8, 53) Source(15, 72) + SourceIndex(0) +13>Emitted(8, 54) Source(15, 73) + SourceIndex(0) +14>Emitted(8, 55) Source(15, 74) + SourceIndex(0) +--- +>>>var multiRobots = [multiRobotA, multiRobotB]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > multiRobots +4 > = +5 > [ +6 > multiRobotA +7 > , +8 > multiRobotB +9 > ] +10> ; +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(16, 5) + SourceIndex(0) +3 >Emitted(9, 16) Source(16, 16) + SourceIndex(0) +4 >Emitted(9, 19) Source(16, 19) + SourceIndex(0) +5 >Emitted(9, 20) Source(16, 20) + SourceIndex(0) +6 >Emitted(9, 31) Source(16, 31) + SourceIndex(0) +7 >Emitted(9, 33) Source(16, 33) + SourceIndex(0) +8 >Emitted(9, 44) Source(16, 44) + SourceIndex(0) +9 >Emitted(9, 45) Source(16, 45) + SourceIndex(0) +10>Emitted(9, 46) Source(16, 46) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(10, 1) Source(17, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(11, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(11, 11) Source(18, 11) + SourceIndex(0) +3 >Emitted(11, 12) Source(18, 12) + SourceIndex(0) +4 >Emitted(11, 23) Source(18, 23) + SourceIndex(0) +5 >Emitted(11, 24) Source(18, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(19, 2) + SourceIndex(0) +--- +>>>var nameA, primarySkillA, secondarySkillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primarySkillA: string +6 > , +7 > secondarySkillA: string +8 > ; +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(13, 10) Source(21, 18) + SourceIndex(0) +4 >Emitted(13, 12) Source(21, 20) + SourceIndex(0) +5 >Emitted(13, 25) Source(21, 41) + SourceIndex(0) +6 >Emitted(13, 27) Source(21, 43) + SourceIndex(0) +7 >Emitted(13, 42) Source(21, 66) + SourceIndex(0) +8 >Emitted(13, 43) Source(21, 67) + SourceIndex(0) +--- +>>>var numberB, nameB; +1 > +2 >^^^^ +3 > ^^^^^^^ +4 > ^^ +5 > ^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > numberB: number +4 > , +5 > nameB: string +6 > ; +1 >Emitted(14, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(14, 12) Source(22, 20) + SourceIndex(0) +4 >Emitted(14, 14) Source(22, 22) + SourceIndex(0) +5 >Emitted(14, 19) Source(22, 35) + SourceIndex(0) +6 >Emitted(14, 20) Source(22, 36) + SourceIndex(0) +--- +>>>var numberA2, nameA2, skillA2, nameMA; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^ +11> ^^^^^-> +1-> + > +2 >let +3 > numberA2: number +4 > , +5 > nameA2: string +6 > , +7 > skillA2: string +8 > , +9 > nameMA: string +10> ; +1->Emitted(15, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(15, 13) Source(23, 21) + SourceIndex(0) +4 >Emitted(15, 15) Source(23, 23) + SourceIndex(0) +5 >Emitted(15, 21) Source(23, 37) + SourceIndex(0) +6 >Emitted(15, 23) Source(23, 39) + SourceIndex(0) +7 >Emitted(15, 30) Source(23, 54) + SourceIndex(0) +8 >Emitted(15, 32) Source(23, 56) + SourceIndex(0) +9 >Emitted(15, 38) Source(23, 70) + SourceIndex(0) +10>Emitted(15, 39) Source(23, 71) + SourceIndex(0) +--- +>>>var numberA3, robotAInfo, multiRobotAInfo; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >let +3 > numberA3: number +4 > , +5 > robotAInfo: (number | string)[] +6 > , +7 > multiRobotAInfo: (string | [string, string])[] +8 > ; +1->Emitted(16, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(16, 13) Source(24, 21) + SourceIndex(0) +4 >Emitted(16, 15) Source(24, 23) + SourceIndex(0) +5 >Emitted(16, 25) Source(24, 54) + SourceIndex(0) +6 >Emitted(16, 27) Source(24, 56) + SourceIndex(0) +7 >Emitted(16, 42) Source(24, 102) + SourceIndex(0) +8 >Emitted(16, 43) Source(24, 103) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > ([, nameA] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(17, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(17, 4) Source(26, 4) + SourceIndex(0) +3 >Emitted(17, 5) Source(26, 5) + SourceIndex(0) +4 >Emitted(17, 6) Source(26, 19) + SourceIndex(0) +5 >Emitted(17, 16) Source(26, 25) + SourceIndex(0) +6 >Emitted(17, 18) Source(26, 19) + SourceIndex(0) +7 >Emitted(17, 35) Source(26, 25) + SourceIndex(0) +8 >Emitted(17, 37) Source(26, 19) + SourceIndex(0) +9 >Emitted(17, 57) Source(26, 25) + SourceIndex(0) +10>Emitted(17, 59) Source(26, 19) + SourceIndex(0) +11>Emitted(17, 63) Source(26, 25) + SourceIndex(0) +12>Emitted(17, 64) Source(26, 26) + SourceIndex(0) +--- +>>> _a = robots_1[_i], nameA = _a[1]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ +1 > +2 > [, nameA] +3 > +4 > nameA +1 >Emitted(18, 5) Source(26, 6) + SourceIndex(0) +2 >Emitted(18, 22) Source(26, 15) + SourceIndex(0) +3 >Emitted(18, 24) Source(26, 9) + SourceIndex(0) +4 >Emitted(18, 37) Source(26, 14) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(27, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(27, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(27, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(27, 17) + SourceIndex(0) +6 >Emitted(19, 22) Source(27, 22) + SourceIndex(0) +7 >Emitted(19, 23) Source(27, 23) + SourceIndex(0) +8 >Emitted(19, 24) Source(27, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(20, 2) Source(28, 2) + SourceIndex(0) +--- +>>>for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ([, nameA] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(21, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(29, 19) + SourceIndex(0) +5 >Emitted(21, 16) Source(29, 30) + SourceIndex(0) +6 >Emitted(21, 18) Source(29, 19) + SourceIndex(0) +7 >Emitted(21, 23) Source(29, 19) + SourceIndex(0) +8 >Emitted(21, 32) Source(29, 28) + SourceIndex(0) +9 >Emitted(21, 34) Source(29, 30) + SourceIndex(0) +10>Emitted(21, 36) Source(29, 19) + SourceIndex(0) +11>Emitted(21, 50) Source(29, 30) + SourceIndex(0) +12>Emitted(21, 52) Source(29, 19) + SourceIndex(0) +13>Emitted(21, 56) Source(29, 30) + SourceIndex(0) +14>Emitted(21, 57) Source(29, 31) + SourceIndex(0) +--- +>>> _d = _c[_b], nameA = _d[1]; +1 >^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ +1 > +2 > [, nameA] +3 > +4 > nameA +1 >Emitted(22, 5) Source(29, 6) + SourceIndex(0) +2 >Emitted(22, 16) Source(29, 15) + SourceIndex(0) +3 >Emitted(22, 18) Source(29, 9) + SourceIndex(0) +4 >Emitted(22, 31) Source(29, 14) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(23, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(23, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(23, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(23, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(23, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(23, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(23, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(23, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(24, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for (var _e = 0, _f = [robotA, robotB]; _e < _f.length; _e++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([, nameA] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(25, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(25, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(25, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(25, 6) Source(32, 19) + SourceIndex(0) +5 >Emitted(25, 16) Source(32, 35) + SourceIndex(0) +6 >Emitted(25, 18) Source(32, 19) + SourceIndex(0) +7 >Emitted(25, 24) Source(32, 20) + SourceIndex(0) +8 >Emitted(25, 30) Source(32, 26) + SourceIndex(0) +9 >Emitted(25, 32) Source(32, 28) + SourceIndex(0) +10>Emitted(25, 38) Source(32, 34) + SourceIndex(0) +11>Emitted(25, 39) Source(32, 35) + SourceIndex(0) +12>Emitted(25, 41) Source(32, 19) + SourceIndex(0) +13>Emitted(25, 55) Source(32, 35) + SourceIndex(0) +14>Emitted(25, 57) Source(32, 19) + SourceIndex(0) +15>Emitted(25, 61) Source(32, 35) + SourceIndex(0) +16>Emitted(25, 62) Source(32, 36) + SourceIndex(0) +--- +>>> _g = _f[_e], nameA = _g[1]; +1 >^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ +1 > +2 > [, nameA] +3 > +4 > nameA +1 >Emitted(26, 5) Source(32, 6) + SourceIndex(0) +2 >Emitted(26, 16) Source(32, 15) + SourceIndex(0) +3 >Emitted(26, 18) Source(32, 9) + SourceIndex(0) +4 >Emitted(26, 31) Source(32, 14) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(27, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(27, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(27, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(27, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(27, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(27, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(27, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(27, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(28, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, [primarySkillA, secondarySkillA]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(29, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(29, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(29, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(29, 6) Source(35, 46) + SourceIndex(0) +5 >Emitted(29, 16) Source(35, 57) + SourceIndex(0) +6 >Emitted(29, 18) Source(35, 46) + SourceIndex(0) +7 >Emitted(29, 45) Source(35, 57) + SourceIndex(0) +8 >Emitted(29, 47) Source(35, 46) + SourceIndex(0) +9 >Emitted(29, 72) Source(35, 57) + SourceIndex(0) +10>Emitted(29, 74) Source(35, 46) + SourceIndex(0) +11>Emitted(29, 78) Source(35, 57) + SourceIndex(0) +12>Emitted(29, 79) Source(35, 58) + SourceIndex(0) +--- +>>> _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA +1->Emitted(30, 5) Source(35, 6) + SourceIndex(0) +2 >Emitted(30, 27) Source(35, 42) + SourceIndex(0) +3 >Emitted(30, 29) Source(35, 9) + SourceIndex(0) +4 >Emitted(30, 39) Source(35, 41) + SourceIndex(0) +5 >Emitted(30, 41) Source(35, 10) + SourceIndex(0) +6 >Emitted(30, 62) Source(35, 23) + SourceIndex(0) +7 >Emitted(30, 64) Source(35, 25) + SourceIndex(0) +8 >Emitted(30, 87) Source(35, 40) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(31, 30) Source(36, 30) + SourceIndex(0) +7 >Emitted(31, 31) Source(36, 31) + SourceIndex(0) +8 >Emitted(31, 32) Source(36, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(32, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for (var _l = 0, _m = getMultiRobots(); _l < _m.length; _l++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, [primarySkillA, secondarySkillA]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(33, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(38, 46) + SourceIndex(0) +5 >Emitted(33, 16) Source(38, 62) + SourceIndex(0) +6 >Emitted(33, 18) Source(38, 46) + SourceIndex(0) +7 >Emitted(33, 23) Source(38, 46) + SourceIndex(0) +8 >Emitted(33, 37) Source(38, 60) + SourceIndex(0) +9 >Emitted(33, 39) Source(38, 62) + SourceIndex(0) +10>Emitted(33, 41) Source(38, 46) + SourceIndex(0) +11>Emitted(33, 55) Source(38, 62) + SourceIndex(0) +12>Emitted(33, 57) Source(38, 46) + SourceIndex(0) +13>Emitted(33, 61) Source(38, 62) + SourceIndex(0) +14>Emitted(33, 62) Source(38, 63) + SourceIndex(0) +--- +>>> _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA +1->Emitted(34, 5) Source(38, 6) + SourceIndex(0) +2 >Emitted(34, 16) Source(38, 42) + SourceIndex(0) +3 >Emitted(34, 18) Source(38, 9) + SourceIndex(0) +4 >Emitted(34, 28) Source(38, 41) + SourceIndex(0) +5 >Emitted(34, 30) Source(38, 10) + SourceIndex(0) +6 >Emitted(34, 51) Source(38, 23) + SourceIndex(0) +7 >Emitted(34, 53) Source(38, 25) + SourceIndex(0) +8 >Emitted(34, 76) Source(38, 40) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(35, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(35, 30) Source(39, 30) + SourceIndex(0) +7 >Emitted(35, 31) Source(39, 31) + SourceIndex(0) +8 >Emitted(35, 32) Source(39, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(36, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for (var _q = 0, _r = [multiRobotA, multiRobotB]; _q < _r.length; _q++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, [primarySkillA, secondarySkillA]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(37, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(41, 46) + SourceIndex(0) +5 >Emitted(37, 16) Source(41, 72) + SourceIndex(0) +6 >Emitted(37, 18) Source(41, 46) + SourceIndex(0) +7 >Emitted(37, 24) Source(41, 47) + SourceIndex(0) +8 >Emitted(37, 35) Source(41, 58) + SourceIndex(0) +9 >Emitted(37, 37) Source(41, 60) + SourceIndex(0) +10>Emitted(37, 48) Source(41, 71) + SourceIndex(0) +11>Emitted(37, 49) Source(41, 72) + SourceIndex(0) +12>Emitted(37, 51) Source(41, 46) + SourceIndex(0) +13>Emitted(37, 65) Source(41, 72) + SourceIndex(0) +14>Emitted(37, 67) Source(41, 46) + SourceIndex(0) +15>Emitted(37, 71) Source(41, 72) + SourceIndex(0) +16>Emitted(37, 72) Source(41, 73) + SourceIndex(0) +--- +>>> _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA +1->Emitted(38, 5) Source(41, 6) + SourceIndex(0) +2 >Emitted(38, 16) Source(41, 42) + SourceIndex(0) +3 >Emitted(38, 18) Source(41, 9) + SourceIndex(0) +4 >Emitted(38, 28) Source(41, 41) + SourceIndex(0) +5 >Emitted(38, 30) Source(41, 10) + SourceIndex(0) +6 >Emitted(38, 51) Source(41, 23) + SourceIndex(0) +7 >Emitted(38, 53) Source(41, 25) + SourceIndex(0) +8 >Emitted(38, 76) Source(41, 40) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(39, 5) Source(42, 5) + SourceIndex(0) +2 >Emitted(39, 12) Source(42, 12) + SourceIndex(0) +3 >Emitted(39, 13) Source(42, 13) + SourceIndex(0) +4 >Emitted(39, 16) Source(42, 16) + SourceIndex(0) +5 >Emitted(39, 17) Source(42, 17) + SourceIndex(0) +6 >Emitted(39, 30) Source(42, 30) + SourceIndex(0) +7 >Emitted(39, 31) Source(42, 31) + SourceIndex(0) +8 >Emitted(39, 32) Source(42, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(40, 2) Source(43, 2) + SourceIndex(0) +--- +>>>for (var _u = 0, robots_2 = robots; _u < robots_2.length; _u++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > ([numberB] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(41, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(41, 4) Source(45, 4) + SourceIndex(0) +3 >Emitted(41, 5) Source(45, 5) + SourceIndex(0) +4 >Emitted(41, 6) Source(45, 19) + SourceIndex(0) +5 >Emitted(41, 16) Source(45, 25) + SourceIndex(0) +6 >Emitted(41, 18) Source(45, 19) + SourceIndex(0) +7 >Emitted(41, 35) Source(45, 25) + SourceIndex(0) +8 >Emitted(41, 37) Source(45, 19) + SourceIndex(0) +9 >Emitted(41, 57) Source(45, 25) + SourceIndex(0) +10>Emitted(41, 59) Source(45, 19) + SourceIndex(0) +11>Emitted(41, 63) Source(45, 25) + SourceIndex(0) +12>Emitted(41, 64) Source(45, 26) + SourceIndex(0) +--- +>>> numberB = robots_2[_u][0]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > [numberB] +1 >Emitted(42, 5) Source(45, 6) + SourceIndex(0) +2 >Emitted(42, 30) Source(45, 15) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(43, 5) Source(46, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(46, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(46, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(46, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(46, 17) + SourceIndex(0) +6 >Emitted(43, 24) Source(46, 24) + SourceIndex(0) +7 >Emitted(43, 25) Source(46, 25) + SourceIndex(0) +8 >Emitted(43, 26) Source(46, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(44, 2) Source(47, 2) + SourceIndex(0) +--- +>>>for (var _v = 0, _w = getRobots(); _v < _w.length; _v++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ([numberB] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(45, 1) Source(48, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(48, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(48, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(48, 19) + SourceIndex(0) +5 >Emitted(45, 16) Source(48, 30) + SourceIndex(0) +6 >Emitted(45, 18) Source(48, 19) + SourceIndex(0) +7 >Emitted(45, 23) Source(48, 19) + SourceIndex(0) +8 >Emitted(45, 32) Source(48, 28) + SourceIndex(0) +9 >Emitted(45, 34) Source(48, 30) + SourceIndex(0) +10>Emitted(45, 36) Source(48, 19) + SourceIndex(0) +11>Emitted(45, 50) Source(48, 30) + SourceIndex(0) +12>Emitted(45, 52) Source(48, 19) + SourceIndex(0) +13>Emitted(45, 56) Source(48, 30) + SourceIndex(0) +14>Emitted(45, 57) Source(48, 31) + SourceIndex(0) +--- +>>> numberB = _w[_v][0]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^^-> +1 > +2 > [numberB] +1 >Emitted(46, 5) Source(48, 6) + SourceIndex(0) +2 >Emitted(46, 24) Source(48, 15) + SourceIndex(0) +--- +>>> console.log(numberB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1-> of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1->Emitted(47, 5) Source(49, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(49, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(49, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(49, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(49, 17) + SourceIndex(0) +6 >Emitted(47, 24) Source(49, 24) + SourceIndex(0) +7 >Emitted(47, 25) Source(49, 25) + SourceIndex(0) +8 >Emitted(47, 26) Source(49, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(48, 2) Source(50, 2) + SourceIndex(0) +--- +>>>for (var _x = 0, _y = [robotA, robotB]; _x < _y.length; _x++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([numberB] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(49, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(51, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(51, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(51, 19) + SourceIndex(0) +5 >Emitted(49, 16) Source(51, 35) + SourceIndex(0) +6 >Emitted(49, 18) Source(51, 19) + SourceIndex(0) +7 >Emitted(49, 24) Source(51, 20) + SourceIndex(0) +8 >Emitted(49, 30) Source(51, 26) + SourceIndex(0) +9 >Emitted(49, 32) Source(51, 28) + SourceIndex(0) +10>Emitted(49, 38) Source(51, 34) + SourceIndex(0) +11>Emitted(49, 39) Source(51, 35) + SourceIndex(0) +12>Emitted(49, 41) Source(51, 19) + SourceIndex(0) +13>Emitted(49, 55) Source(51, 35) + SourceIndex(0) +14>Emitted(49, 57) Source(51, 19) + SourceIndex(0) +15>Emitted(49, 61) Source(51, 35) + SourceIndex(0) +16>Emitted(49, 62) Source(51, 36) + SourceIndex(0) +--- +>>> numberB = _y[_x][0]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^^-> +1 > +2 > [numberB] +1 >Emitted(50, 5) Source(51, 6) + SourceIndex(0) +2 >Emitted(50, 24) Source(51, 15) + SourceIndex(0) +--- +>>> console.log(numberB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1-> of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1->Emitted(51, 5) Source(52, 5) + SourceIndex(0) +2 >Emitted(51, 12) Source(52, 12) + SourceIndex(0) +3 >Emitted(51, 13) Source(52, 13) + SourceIndex(0) +4 >Emitted(51, 16) Source(52, 16) + SourceIndex(0) +5 >Emitted(51, 17) Source(52, 17) + SourceIndex(0) +6 >Emitted(51, 24) Source(52, 24) + SourceIndex(0) +7 >Emitted(51, 25) Source(52, 25) + SourceIndex(0) +8 >Emitted(51, 26) Source(52, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(52, 2) Source(53, 2) + SourceIndex(0) +--- +>>>for (var _z = 0, multiRobots_2 = multiRobots; _z < multiRobots_2.length; _z++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > ([nameB] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(53, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(53, 4) Source(54, 4) + SourceIndex(0) +3 >Emitted(53, 5) Source(54, 5) + SourceIndex(0) +4 >Emitted(53, 6) Source(54, 17) + SourceIndex(0) +5 >Emitted(53, 16) Source(54, 28) + SourceIndex(0) +6 >Emitted(53, 18) Source(54, 17) + SourceIndex(0) +7 >Emitted(53, 45) Source(54, 28) + SourceIndex(0) +8 >Emitted(53, 47) Source(54, 17) + SourceIndex(0) +9 >Emitted(53, 72) Source(54, 28) + SourceIndex(0) +10>Emitted(53, 74) Source(54, 17) + SourceIndex(0) +11>Emitted(53, 78) Source(54, 28) + SourceIndex(0) +12>Emitted(53, 79) Source(54, 29) + SourceIndex(0) +--- +>>> nameB = multiRobots_2[_z][0]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > [nameB] +1 >Emitted(54, 5) Source(54, 6) + SourceIndex(0) +2 >Emitted(54, 33) Source(54, 13) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(55, 5) Source(55, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(55, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(55, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(55, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(55, 17) + SourceIndex(0) +6 >Emitted(55, 22) Source(55, 22) + SourceIndex(0) +7 >Emitted(55, 23) Source(55, 23) + SourceIndex(0) +8 >Emitted(55, 24) Source(55, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(56, 2) Source(56, 2) + SourceIndex(0) +--- +>>>for (var _0 = 0, _1 = getMultiRobots(); _0 < _1.length; _0++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ([nameB] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(57, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(57, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(57, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(57, 17) + SourceIndex(0) +5 >Emitted(57, 16) Source(57, 33) + SourceIndex(0) +6 >Emitted(57, 18) Source(57, 17) + SourceIndex(0) +7 >Emitted(57, 23) Source(57, 17) + SourceIndex(0) +8 >Emitted(57, 37) Source(57, 31) + SourceIndex(0) +9 >Emitted(57, 39) Source(57, 33) + SourceIndex(0) +10>Emitted(57, 41) Source(57, 17) + SourceIndex(0) +11>Emitted(57, 55) Source(57, 33) + SourceIndex(0) +12>Emitted(57, 57) Source(57, 17) + SourceIndex(0) +13>Emitted(57, 61) Source(57, 33) + SourceIndex(0) +14>Emitted(57, 62) Source(57, 34) + SourceIndex(0) +--- +>>> nameB = _1[_0][0]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^^-> +1 > +2 > [nameB] +1 >Emitted(58, 5) Source(57, 6) + SourceIndex(0) +2 >Emitted(58, 22) Source(57, 13) + SourceIndex(0) +--- +>>> console.log(nameB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1->Emitted(59, 5) Source(58, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(58, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(58, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(58, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(58, 17) + SourceIndex(0) +6 >Emitted(59, 22) Source(58, 22) + SourceIndex(0) +7 >Emitted(59, 23) Source(58, 23) + SourceIndex(0) +8 >Emitted(59, 24) Source(58, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(60, 2) Source(59, 2) + SourceIndex(0) +--- +>>>for (var _2 = 0, _3 = [multiRobotA, multiRobotB]; _2 < _3.length; _2++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([nameB] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(61, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(60, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(60, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(60, 17) + SourceIndex(0) +5 >Emitted(61, 16) Source(60, 43) + SourceIndex(0) +6 >Emitted(61, 18) Source(60, 17) + SourceIndex(0) +7 >Emitted(61, 24) Source(60, 18) + SourceIndex(0) +8 >Emitted(61, 35) Source(60, 29) + SourceIndex(0) +9 >Emitted(61, 37) Source(60, 31) + SourceIndex(0) +10>Emitted(61, 48) Source(60, 42) + SourceIndex(0) +11>Emitted(61, 49) Source(60, 43) + SourceIndex(0) +12>Emitted(61, 51) Source(60, 17) + SourceIndex(0) +13>Emitted(61, 65) Source(60, 43) + SourceIndex(0) +14>Emitted(61, 67) Source(60, 17) + SourceIndex(0) +15>Emitted(61, 71) Source(60, 43) + SourceIndex(0) +16>Emitted(61, 72) Source(60, 44) + SourceIndex(0) +--- +>>> nameB = _3[_2][0]; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^^-> +1 > +2 > [nameB] +1 >Emitted(62, 5) Source(60, 6) + SourceIndex(0) +2 >Emitted(62, 22) Source(60, 13) + SourceIndex(0) +--- +>>> console.log(nameB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1->Emitted(63, 5) Source(61, 5) + SourceIndex(0) +2 >Emitted(63, 12) Source(61, 12) + SourceIndex(0) +3 >Emitted(63, 13) Source(61, 13) + SourceIndex(0) +4 >Emitted(63, 16) Source(61, 16) + SourceIndex(0) +5 >Emitted(63, 17) Source(61, 17) + SourceIndex(0) +6 >Emitted(63, 22) Source(61, 22) + SourceIndex(0) +7 >Emitted(63, 23) Source(61, 23) + SourceIndex(0) +8 >Emitted(63, 24) Source(61, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(64, 2) Source(62, 2) + SourceIndex(0) +--- +>>>for (var _4 = 0, robots_3 = robots; _4 < robots_3.length; _4++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > ([numberA2, nameA2, skillA2] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(65, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(65, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(65, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(65, 6) Source(64, 37) + SourceIndex(0) +5 >Emitted(65, 16) Source(64, 43) + SourceIndex(0) +6 >Emitted(65, 18) Source(64, 37) + SourceIndex(0) +7 >Emitted(65, 35) Source(64, 43) + SourceIndex(0) +8 >Emitted(65, 37) Source(64, 37) + SourceIndex(0) +9 >Emitted(65, 57) Source(64, 43) + SourceIndex(0) +10>Emitted(65, 59) Source(64, 37) + SourceIndex(0) +11>Emitted(65, 63) Source(64, 43) + SourceIndex(0) +12>Emitted(65, 64) Source(64, 44) + SourceIndex(0) +--- +>>> _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +1-> +2 > [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 +1->Emitted(66, 5) Source(64, 6) + SourceIndex(0) +2 >Emitted(66, 22) Source(64, 33) + SourceIndex(0) +3 >Emitted(66, 24) Source(64, 7) + SourceIndex(0) +4 >Emitted(66, 40) Source(64, 15) + SourceIndex(0) +5 >Emitted(66, 42) Source(64, 17) + SourceIndex(0) +6 >Emitted(66, 56) Source(64, 23) + SourceIndex(0) +7 >Emitted(66, 58) Source(64, 25) + SourceIndex(0) +8 >Emitted(66, 73) Source(64, 32) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(67, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(67, 12) Source(65, 12) + SourceIndex(0) +3 >Emitted(67, 13) Source(65, 13) + SourceIndex(0) +4 >Emitted(67, 16) Source(65, 16) + SourceIndex(0) +5 >Emitted(67, 17) Source(65, 17) + SourceIndex(0) +6 >Emitted(67, 23) Source(65, 23) + SourceIndex(0) +7 >Emitted(67, 24) Source(65, 24) + SourceIndex(0) +8 >Emitted(67, 25) Source(65, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(68, 2) Source(66, 2) + SourceIndex(0) +--- +>>>for (var _6 = 0, _7 = getRobots(); _6 < _7.length; _6++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA2, nameA2, skillA2] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(69, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(69, 4) Source(67, 4) + SourceIndex(0) +3 >Emitted(69, 5) Source(67, 5) + SourceIndex(0) +4 >Emitted(69, 6) Source(67, 37) + SourceIndex(0) +5 >Emitted(69, 16) Source(67, 48) + SourceIndex(0) +6 >Emitted(69, 18) Source(67, 37) + SourceIndex(0) +7 >Emitted(69, 23) Source(67, 37) + SourceIndex(0) +8 >Emitted(69, 32) Source(67, 46) + SourceIndex(0) +9 >Emitted(69, 34) Source(67, 48) + SourceIndex(0) +10>Emitted(69, 36) Source(67, 37) + SourceIndex(0) +11>Emitted(69, 50) Source(67, 48) + SourceIndex(0) +12>Emitted(69, 52) Source(67, 37) + SourceIndex(0) +13>Emitted(69, 56) Source(67, 48) + SourceIndex(0) +14>Emitted(69, 57) Source(67, 49) + SourceIndex(0) +--- +>>> _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +1-> +2 > [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 +1->Emitted(70, 5) Source(67, 6) + SourceIndex(0) +2 >Emitted(70, 16) Source(67, 33) + SourceIndex(0) +3 >Emitted(70, 18) Source(67, 7) + SourceIndex(0) +4 >Emitted(70, 34) Source(67, 15) + SourceIndex(0) +5 >Emitted(70, 36) Source(67, 17) + SourceIndex(0) +6 >Emitted(70, 50) Source(67, 23) + SourceIndex(0) +7 >Emitted(70, 52) Source(67, 25) + SourceIndex(0) +8 >Emitted(70, 67) Source(67, 32) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(71, 5) Source(68, 5) + SourceIndex(0) +2 >Emitted(71, 12) Source(68, 12) + SourceIndex(0) +3 >Emitted(71, 13) Source(68, 13) + SourceIndex(0) +4 >Emitted(71, 16) Source(68, 16) + SourceIndex(0) +5 >Emitted(71, 17) Source(68, 17) + SourceIndex(0) +6 >Emitted(71, 23) Source(68, 23) + SourceIndex(0) +7 >Emitted(71, 24) Source(68, 24) + SourceIndex(0) +8 >Emitted(71, 25) Source(68, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(72, 2) Source(69, 2) + SourceIndex(0) +--- +>>>for (var _9 = 0, _10 = [robotA, robotB]; _9 < _10.length; _9++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA2, nameA2, skillA2] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(73, 1) Source(70, 1) + SourceIndex(0) +2 >Emitted(73, 4) Source(70, 4) + SourceIndex(0) +3 >Emitted(73, 5) Source(70, 5) + SourceIndex(0) +4 >Emitted(73, 6) Source(70, 37) + SourceIndex(0) +5 >Emitted(73, 16) Source(70, 53) + SourceIndex(0) +6 >Emitted(73, 18) Source(70, 37) + SourceIndex(0) +7 >Emitted(73, 25) Source(70, 38) + SourceIndex(0) +8 >Emitted(73, 31) Source(70, 44) + SourceIndex(0) +9 >Emitted(73, 33) Source(70, 46) + SourceIndex(0) +10>Emitted(73, 39) Source(70, 52) + SourceIndex(0) +11>Emitted(73, 40) Source(70, 53) + SourceIndex(0) +12>Emitted(73, 42) Source(70, 37) + SourceIndex(0) +13>Emitted(73, 57) Source(70, 53) + SourceIndex(0) +14>Emitted(73, 59) Source(70, 37) + SourceIndex(0) +15>Emitted(73, 63) Source(70, 53) + SourceIndex(0) +16>Emitted(73, 64) Source(70, 54) + SourceIndex(0) +--- +>>> _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; +1->^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +1-> +2 > [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 +1->Emitted(74, 5) Source(70, 6) + SourceIndex(0) +2 >Emitted(74, 18) Source(70, 33) + SourceIndex(0) +3 >Emitted(74, 20) Source(70, 7) + SourceIndex(0) +4 >Emitted(74, 37) Source(70, 15) + SourceIndex(0) +5 >Emitted(74, 39) Source(70, 17) + SourceIndex(0) +6 >Emitted(74, 54) Source(70, 23) + SourceIndex(0) +7 >Emitted(74, 56) Source(70, 25) + SourceIndex(0) +8 >Emitted(74, 72) Source(70, 32) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(75, 5) Source(71, 5) + SourceIndex(0) +2 >Emitted(75, 12) Source(71, 12) + SourceIndex(0) +3 >Emitted(75, 13) Source(71, 13) + SourceIndex(0) +4 >Emitted(75, 16) Source(71, 16) + SourceIndex(0) +5 >Emitted(75, 17) Source(71, 17) + SourceIndex(0) +6 >Emitted(75, 23) Source(71, 23) + SourceIndex(0) +7 >Emitted(75, 24) Source(71, 24) + SourceIndex(0) +8 >Emitted(75, 25) Source(71, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(76, 2) Source(72, 2) + SourceIndex(0) +--- +>>>for (var _12 = 0, multiRobots_3 = multiRobots; _12 < multiRobots_3.length; _12++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([nameMA, [primarySkillA, secondarySkillA]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(77, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(77, 4) Source(73, 4) + SourceIndex(0) +3 >Emitted(77, 5) Source(73, 5) + SourceIndex(0) +4 >Emitted(77, 6) Source(73, 52) + SourceIndex(0) +5 >Emitted(77, 17) Source(73, 63) + SourceIndex(0) +6 >Emitted(77, 19) Source(73, 52) + SourceIndex(0) +7 >Emitted(77, 46) Source(73, 63) + SourceIndex(0) +8 >Emitted(77, 48) Source(73, 52) + SourceIndex(0) +9 >Emitted(77, 74) Source(73, 63) + SourceIndex(0) +10>Emitted(77, 76) Source(73, 52) + SourceIndex(0) +11>Emitted(77, 81) Source(73, 63) + SourceIndex(0) +12>Emitted(77, 82) Source(73, 64) + SourceIndex(0) +--- +>>> _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA +1->Emitted(78, 5) Source(73, 6) + SourceIndex(0) +2 >Emitted(78, 29) Source(73, 48) + SourceIndex(0) +3 >Emitted(78, 31) Source(73, 7) + SourceIndex(0) +4 >Emitted(78, 46) Source(73, 13) + SourceIndex(0) +5 >Emitted(78, 48) Source(73, 15) + SourceIndex(0) +6 >Emitted(78, 60) Source(73, 47) + SourceIndex(0) +7 >Emitted(78, 62) Source(73, 16) + SourceIndex(0) +8 >Emitted(78, 84) Source(73, 29) + SourceIndex(0) +9 >Emitted(78, 86) Source(73, 31) + SourceIndex(0) +10>Emitted(78, 110) Source(73, 46) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(79, 5) Source(74, 5) + SourceIndex(0) +2 >Emitted(79, 12) Source(74, 12) + SourceIndex(0) +3 >Emitted(79, 13) Source(74, 13) + SourceIndex(0) +4 >Emitted(79, 16) Source(74, 16) + SourceIndex(0) +5 >Emitted(79, 17) Source(74, 17) + SourceIndex(0) +6 >Emitted(79, 23) Source(74, 23) + SourceIndex(0) +7 >Emitted(79, 24) Source(74, 24) + SourceIndex(0) +8 >Emitted(79, 25) Source(74, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(80, 2) Source(75, 2) + SourceIndex(0) +--- +>>>for (var _15 = 0, _16 = getMultiRobots(); _15 < _16.length; _15++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([nameMA, [primarySkillA, secondarySkillA]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(81, 1) Source(76, 1) + SourceIndex(0) +2 >Emitted(81, 4) Source(76, 4) + SourceIndex(0) +3 >Emitted(81, 5) Source(76, 5) + SourceIndex(0) +4 >Emitted(81, 6) Source(76, 52) + SourceIndex(0) +5 >Emitted(81, 17) Source(76, 68) + SourceIndex(0) +6 >Emitted(81, 19) Source(76, 52) + SourceIndex(0) +7 >Emitted(81, 25) Source(76, 52) + SourceIndex(0) +8 >Emitted(81, 39) Source(76, 66) + SourceIndex(0) +9 >Emitted(81, 41) Source(76, 68) + SourceIndex(0) +10>Emitted(81, 43) Source(76, 52) + SourceIndex(0) +11>Emitted(81, 59) Source(76, 68) + SourceIndex(0) +12>Emitted(81, 61) Source(76, 52) + SourceIndex(0) +13>Emitted(81, 66) Source(76, 68) + SourceIndex(0) +14>Emitted(81, 67) Source(76, 69) + SourceIndex(0) +--- +>>> _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA +1->Emitted(82, 5) Source(76, 6) + SourceIndex(0) +2 >Emitted(82, 19) Source(76, 48) + SourceIndex(0) +3 >Emitted(82, 21) Source(76, 7) + SourceIndex(0) +4 >Emitted(82, 36) Source(76, 13) + SourceIndex(0) +5 >Emitted(82, 38) Source(76, 15) + SourceIndex(0) +6 >Emitted(82, 50) Source(76, 47) + SourceIndex(0) +7 >Emitted(82, 52) Source(76, 16) + SourceIndex(0) +8 >Emitted(82, 74) Source(76, 29) + SourceIndex(0) +9 >Emitted(82, 76) Source(76, 31) + SourceIndex(0) +10>Emitted(82, 100) Source(76, 46) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(83, 5) Source(77, 5) + SourceIndex(0) +2 >Emitted(83, 12) Source(77, 12) + SourceIndex(0) +3 >Emitted(83, 13) Source(77, 13) + SourceIndex(0) +4 >Emitted(83, 16) Source(77, 16) + SourceIndex(0) +5 >Emitted(83, 17) Source(77, 17) + SourceIndex(0) +6 >Emitted(83, 23) Source(77, 23) + SourceIndex(0) +7 >Emitted(83, 24) Source(77, 24) + SourceIndex(0) +8 >Emitted(83, 25) Source(77, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(84, 2) Source(78, 2) + SourceIndex(0) +--- +>>>for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([nameMA, [primarySkillA, secondarySkillA]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(85, 1) Source(79, 1) + SourceIndex(0) +2 >Emitted(85, 4) Source(79, 4) + SourceIndex(0) +3 >Emitted(85, 5) Source(79, 5) + SourceIndex(0) +4 >Emitted(85, 6) Source(79, 52) + SourceIndex(0) +5 >Emitted(85, 17) Source(79, 78) + SourceIndex(0) +6 >Emitted(85, 19) Source(79, 52) + SourceIndex(0) +7 >Emitted(85, 26) Source(79, 53) + SourceIndex(0) +8 >Emitted(85, 37) Source(79, 64) + SourceIndex(0) +9 >Emitted(85, 39) Source(79, 66) + SourceIndex(0) +10>Emitted(85, 50) Source(79, 77) + SourceIndex(0) +11>Emitted(85, 51) Source(79, 78) + SourceIndex(0) +12>Emitted(85, 53) Source(79, 52) + SourceIndex(0) +13>Emitted(85, 69) Source(79, 78) + SourceIndex(0) +14>Emitted(85, 71) Source(79, 52) + SourceIndex(0) +15>Emitted(85, 76) Source(79, 78) + SourceIndex(0) +16>Emitted(85, 77) Source(79, 79) + SourceIndex(0) +--- +>>> _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA +1->Emitted(86, 5) Source(79, 6) + SourceIndex(0) +2 >Emitted(86, 19) Source(79, 48) + SourceIndex(0) +3 >Emitted(86, 21) Source(79, 7) + SourceIndex(0) +4 >Emitted(86, 36) Source(79, 13) + SourceIndex(0) +5 >Emitted(86, 38) Source(79, 15) + SourceIndex(0) +6 >Emitted(86, 50) Source(79, 47) + SourceIndex(0) +7 >Emitted(86, 52) Source(79, 16) + SourceIndex(0) +8 >Emitted(86, 74) Source(79, 29) + SourceIndex(0) +9 >Emitted(86, 76) Source(79, 31) + SourceIndex(0) +10>Emitted(86, 100) Source(79, 46) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(87, 5) Source(80, 5) + SourceIndex(0) +2 >Emitted(87, 12) Source(80, 12) + SourceIndex(0) +3 >Emitted(87, 13) Source(80, 13) + SourceIndex(0) +4 >Emitted(87, 16) Source(80, 16) + SourceIndex(0) +5 >Emitted(87, 17) Source(80, 17) + SourceIndex(0) +6 >Emitted(87, 23) Source(80, 23) + SourceIndex(0) +7 >Emitted(87, 24) Source(80, 24) + SourceIndex(0) +8 >Emitted(87, 25) Source(80, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(88, 2) Source(81, 2) + SourceIndex(0) +--- +>>>for (var _23 = 0, robots_4 = robots; _23 < robots_4.length; _23++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^-> +1-> + > + > +2 >for +3 > +4 > ([numberA3, ...robotAInfo] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(89, 1) Source(83, 1) + SourceIndex(0) +2 >Emitted(89, 4) Source(83, 4) + SourceIndex(0) +3 >Emitted(89, 5) Source(83, 5) + SourceIndex(0) +4 >Emitted(89, 6) Source(83, 35) + SourceIndex(0) +5 >Emitted(89, 17) Source(83, 41) + SourceIndex(0) +6 >Emitted(89, 19) Source(83, 35) + SourceIndex(0) +7 >Emitted(89, 36) Source(83, 41) + SourceIndex(0) +8 >Emitted(89, 38) Source(83, 35) + SourceIndex(0) +9 >Emitted(89, 59) Source(83, 41) + SourceIndex(0) +10>Emitted(89, 61) Source(83, 35) + SourceIndex(0) +11>Emitted(89, 66) Source(83, 41) + SourceIndex(0) +12>Emitted(89, 67) Source(83, 42) + SourceIndex(0) +--- +>>> _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo +1->Emitted(90, 5) Source(83, 6) + SourceIndex(0) +2 >Emitted(90, 24) Source(83, 31) + SourceIndex(0) +3 >Emitted(90, 26) Source(83, 7) + SourceIndex(0) +4 >Emitted(90, 43) Source(83, 15) + SourceIndex(0) +5 >Emitted(90, 45) Source(83, 17) + SourceIndex(0) +6 >Emitted(90, 70) Source(83, 30) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(91, 5) Source(84, 5) + SourceIndex(0) +2 >Emitted(91, 12) Source(84, 12) + SourceIndex(0) +3 >Emitted(91, 13) Source(84, 13) + SourceIndex(0) +4 >Emitted(91, 16) Source(84, 16) + SourceIndex(0) +5 >Emitted(91, 17) Source(84, 17) + SourceIndex(0) +6 >Emitted(91, 25) Source(84, 25) + SourceIndex(0) +7 >Emitted(91, 26) Source(84, 26) + SourceIndex(0) +8 >Emitted(91, 27) Source(84, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(92, 2) Source(85, 2) + SourceIndex(0) +--- +>>>for (var _25 = 0, _26 = getRobots(); _25 < _26.length; _25++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA3, ...robotAInfo] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(93, 1) Source(86, 1) + SourceIndex(0) +2 >Emitted(93, 4) Source(86, 4) + SourceIndex(0) +3 >Emitted(93, 5) Source(86, 5) + SourceIndex(0) +4 >Emitted(93, 6) Source(86, 35) + SourceIndex(0) +5 >Emitted(93, 17) Source(86, 46) + SourceIndex(0) +6 >Emitted(93, 19) Source(86, 35) + SourceIndex(0) +7 >Emitted(93, 25) Source(86, 35) + SourceIndex(0) +8 >Emitted(93, 34) Source(86, 44) + SourceIndex(0) +9 >Emitted(93, 36) Source(86, 46) + SourceIndex(0) +10>Emitted(93, 38) Source(86, 35) + SourceIndex(0) +11>Emitted(93, 54) Source(86, 46) + SourceIndex(0) +12>Emitted(93, 56) Source(86, 35) + SourceIndex(0) +13>Emitted(93, 61) Source(86, 46) + SourceIndex(0) +14>Emitted(93, 62) Source(86, 47) + SourceIndex(0) +--- +>>> _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo +1->Emitted(94, 5) Source(86, 6) + SourceIndex(0) +2 >Emitted(94, 19) Source(86, 31) + SourceIndex(0) +3 >Emitted(94, 21) Source(86, 7) + SourceIndex(0) +4 >Emitted(94, 38) Source(86, 15) + SourceIndex(0) +5 >Emitted(94, 40) Source(86, 17) + SourceIndex(0) +6 >Emitted(94, 65) Source(86, 30) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(95, 5) Source(87, 5) + SourceIndex(0) +2 >Emitted(95, 12) Source(87, 12) + SourceIndex(0) +3 >Emitted(95, 13) Source(87, 13) + SourceIndex(0) +4 >Emitted(95, 16) Source(87, 16) + SourceIndex(0) +5 >Emitted(95, 17) Source(87, 17) + SourceIndex(0) +6 >Emitted(95, 25) Source(87, 25) + SourceIndex(0) +7 >Emitted(95, 26) Source(87, 26) + SourceIndex(0) +8 >Emitted(95, 27) Source(87, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(96, 2) Source(88, 2) + SourceIndex(0) +--- +>>>for (var _28 = 0, _29 = [robotA, robotB]; _28 < _29.length; _28++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([numberA3, ...robotAInfo] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(97, 1) Source(89, 1) + SourceIndex(0) +2 >Emitted(97, 4) Source(89, 4) + SourceIndex(0) +3 >Emitted(97, 5) Source(89, 5) + SourceIndex(0) +4 >Emitted(97, 6) Source(89, 35) + SourceIndex(0) +5 >Emitted(97, 17) Source(89, 51) + SourceIndex(0) +6 >Emitted(97, 19) Source(89, 35) + SourceIndex(0) +7 >Emitted(97, 26) Source(89, 36) + SourceIndex(0) +8 >Emitted(97, 32) Source(89, 42) + SourceIndex(0) +9 >Emitted(97, 34) Source(89, 44) + SourceIndex(0) +10>Emitted(97, 40) Source(89, 50) + SourceIndex(0) +11>Emitted(97, 41) Source(89, 51) + SourceIndex(0) +12>Emitted(97, 43) Source(89, 35) + SourceIndex(0) +13>Emitted(97, 59) Source(89, 51) + SourceIndex(0) +14>Emitted(97, 61) Source(89, 35) + SourceIndex(0) +15>Emitted(97, 66) Source(89, 51) + SourceIndex(0) +16>Emitted(97, 67) Source(89, 52) + SourceIndex(0) +--- +>>> _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); +1 >^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo +1 >Emitted(98, 5) Source(89, 6) + SourceIndex(0) +2 >Emitted(98, 19) Source(89, 31) + SourceIndex(0) +3 >Emitted(98, 21) Source(89, 7) + SourceIndex(0) +4 >Emitted(98, 38) Source(89, 15) + SourceIndex(0) +5 >Emitted(98, 40) Source(89, 17) + SourceIndex(0) +6 >Emitted(98, 65) Source(89, 30) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(99, 5) Source(90, 5) + SourceIndex(0) +2 >Emitted(99, 12) Source(90, 12) + SourceIndex(0) +3 >Emitted(99, 13) Source(90, 13) + SourceIndex(0) +4 >Emitted(99, 16) Source(90, 16) + SourceIndex(0) +5 >Emitted(99, 17) Source(90, 17) + SourceIndex(0) +6 >Emitted(99, 25) Source(90, 25) + SourceIndex(0) +7 >Emitted(99, 26) Source(90, 26) + SourceIndex(0) +8 >Emitted(99, 27) Source(90, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(100, 2) Source(91, 2) + SourceIndex(0) +--- +>>>for (var _31 = 0, multiRobots_4 = multiRobots; _31 < multiRobots_4.length; _31++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > ([...multiRobotAInfo] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(101, 1) Source(92, 1) + SourceIndex(0) +2 >Emitted(101, 4) Source(92, 4) + SourceIndex(0) +3 >Emitted(101, 5) Source(92, 5) + SourceIndex(0) +4 >Emitted(101, 6) Source(92, 30) + SourceIndex(0) +5 >Emitted(101, 17) Source(92, 41) + SourceIndex(0) +6 >Emitted(101, 19) Source(92, 30) + SourceIndex(0) +7 >Emitted(101, 46) Source(92, 41) + SourceIndex(0) +8 >Emitted(101, 48) Source(92, 30) + SourceIndex(0) +9 >Emitted(101, 74) Source(92, 41) + SourceIndex(0) +10>Emitted(101, 76) Source(92, 30) + SourceIndex(0) +11>Emitted(101, 81) Source(92, 41) + SourceIndex(0) +12>Emitted(101, 82) Source(92, 42) + SourceIndex(0) +--- +>>> multiRobotAInfo = multiRobots_4[_31].slice(0); +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > [...multiRobotAInfo] +1 >Emitted(102, 5) Source(92, 6) + SourceIndex(0) +2 >Emitted(102, 50) Source(92, 26) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(103, 5) Source(93, 5) + SourceIndex(0) +2 >Emitted(103, 12) Source(93, 12) + SourceIndex(0) +3 >Emitted(103, 13) Source(93, 13) + SourceIndex(0) +4 >Emitted(103, 16) Source(93, 16) + SourceIndex(0) +5 >Emitted(103, 17) Source(93, 17) + SourceIndex(0) +6 >Emitted(103, 32) Source(93, 32) + SourceIndex(0) +7 >Emitted(103, 33) Source(93, 33) + SourceIndex(0) +8 >Emitted(103, 34) Source(93, 34) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(104, 2) Source(94, 2) + SourceIndex(0) +--- +>>>for (var _32 = 0, _33 = getMultiRobots(); _32 < _33.length; _32++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ([...multiRobotAInfo] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(105, 1) Source(95, 1) + SourceIndex(0) +2 >Emitted(105, 4) Source(95, 4) + SourceIndex(0) +3 >Emitted(105, 5) Source(95, 5) + SourceIndex(0) +4 >Emitted(105, 6) Source(95, 30) + SourceIndex(0) +5 >Emitted(105, 17) Source(95, 46) + SourceIndex(0) +6 >Emitted(105, 19) Source(95, 30) + SourceIndex(0) +7 >Emitted(105, 25) Source(95, 30) + SourceIndex(0) +8 >Emitted(105, 39) Source(95, 44) + SourceIndex(0) +9 >Emitted(105, 41) Source(95, 46) + SourceIndex(0) +10>Emitted(105, 43) Source(95, 30) + SourceIndex(0) +11>Emitted(105, 59) Source(95, 46) + SourceIndex(0) +12>Emitted(105, 61) Source(95, 30) + SourceIndex(0) +13>Emitted(105, 66) Source(95, 46) + SourceIndex(0) +14>Emitted(105, 67) Source(95, 47) + SourceIndex(0) +--- +>>> multiRobotAInfo = _33[_32].slice(0); +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > [...multiRobotAInfo] +1 >Emitted(106, 5) Source(95, 6) + SourceIndex(0) +2 >Emitted(106, 40) Source(95, 26) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(107, 5) Source(96, 5) + SourceIndex(0) +2 >Emitted(107, 12) Source(96, 12) + SourceIndex(0) +3 >Emitted(107, 13) Source(96, 13) + SourceIndex(0) +4 >Emitted(107, 16) Source(96, 16) + SourceIndex(0) +5 >Emitted(107, 17) Source(96, 17) + SourceIndex(0) +6 >Emitted(107, 32) Source(96, 32) + SourceIndex(0) +7 >Emitted(107, 33) Source(96, 33) + SourceIndex(0) +8 >Emitted(107, 34) Source(96, 34) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(108, 2) Source(97, 2) + SourceIndex(0) +--- +>>>for (var _34 = 0, _35 = [multiRobotA, multiRobotB]; _34 < _35.length; _34++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([...multiRobotAInfo] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(109, 1) Source(98, 1) + SourceIndex(0) +2 >Emitted(109, 4) Source(98, 4) + SourceIndex(0) +3 >Emitted(109, 5) Source(98, 5) + SourceIndex(0) +4 >Emitted(109, 6) Source(98, 30) + SourceIndex(0) +5 >Emitted(109, 17) Source(98, 56) + SourceIndex(0) +6 >Emitted(109, 19) Source(98, 30) + SourceIndex(0) +7 >Emitted(109, 26) Source(98, 31) + SourceIndex(0) +8 >Emitted(109, 37) Source(98, 42) + SourceIndex(0) +9 >Emitted(109, 39) Source(98, 44) + SourceIndex(0) +10>Emitted(109, 50) Source(98, 55) + SourceIndex(0) +11>Emitted(109, 51) Source(98, 56) + SourceIndex(0) +12>Emitted(109, 53) Source(98, 30) + SourceIndex(0) +13>Emitted(109, 69) Source(98, 56) + SourceIndex(0) +14>Emitted(109, 71) Source(98, 30) + SourceIndex(0) +15>Emitted(109, 76) Source(98, 56) + SourceIndex(0) +16>Emitted(109, 77) Source(98, 57) + SourceIndex(0) +--- +>>> multiRobotAInfo = _35[_34].slice(0); +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > [...multiRobotAInfo] +1 >Emitted(110, 5) Source(98, 6) + SourceIndex(0) +2 >Emitted(110, 40) Source(98, 26) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(111, 5) Source(99, 5) + SourceIndex(0) +2 >Emitted(111, 12) Source(99, 12) + SourceIndex(0) +3 >Emitted(111, 13) Source(99, 13) + SourceIndex(0) +4 >Emitted(111, 16) Source(99, 16) + SourceIndex(0) +5 >Emitted(111, 17) Source(99, 17) + SourceIndex(0) +6 >Emitted(111, 32) Source(99, 32) + SourceIndex(0) +7 >Emitted(111, 33) Source(99, 33) + SourceIndex(0) +8 >Emitted(111, 34) Source(99, 34) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(112, 2) Source(100, 2) + SourceIndex(0) +--- +>>>var _a, _d, _g, _j, _k, _o, _p, _s, _t, _5, _8, _11, _13, _14, _17, _18, _21, _22, _24, _27, _30; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.symbols new file mode 100644 index 00000000000..9f7648afccb --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.symbols @@ -0,0 +1,343 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 2, 1)) + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 7, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 2, 1)) + +let robots = [robotA, robotB]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 7, 3)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 30)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 13, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 14, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 3, 38)) + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 3)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 14, 3)) + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 45)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 3)) +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) + +let numberB: number, nameB: string; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 37)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 21)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) + +for ([, nameA] of robots) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +} +for ([, nameA] of getRobots()) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 30)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +} +for ([, nameA] of [robotA, robotB]) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 7, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 3)) +} +for ([, [primarySkillA, secondarySkillA]] of multiRobots) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +} +for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 45)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +} +for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 14, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +} + +for ([numberB] of robots) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +} +for ([numberB] of getRobots()) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 30)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +} +for ([numberB] of [robotA, robotB]) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 7, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 3)) +} +for ([nameB] of multiRobots) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) +} +for ([nameB] of getMultiRobots()) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 45)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) +} +for ([nameB] of [multiRobotA, multiRobotB]) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 14, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 21, 20)) +} + +for ([numberA2, nameA2, skillA2] of robots) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 37)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +} +for ([numberA2, nameA2, skillA2] of getRobots()) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 37)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 30)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +} +for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 37)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 7, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 21)) +} +for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) +} +for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 45)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) +} +for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 20, 41)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 14, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 22, 54)) +} + +for ([numberA3, ...robotAInfo] of robots) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 21)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +} +for ([numberA3, ...robotAInfo] of getRobots()) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 21)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 8, 30)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +} +for ([numberA3, ...robotAInfo] of [robotA, robotB]) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 21)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 7, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 3)) +} +for ([...multiRobotAInfo] of multiRobots) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) +} +for ([...multiRobotAInfo] of getMultiRobots()) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 15, 45)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) +} +for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 14, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPattern2.ts, 23, 54)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types new file mode 100644 index 00000000000..33b503d0d8f --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.types @@ -0,0 +1,445 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +let robots = [robotA, robotB]; +>robots : [number, string, string][] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + +function getRobots() { +>getRobots : () => [number, string, string][] + + return robots; +>robots : [number, string, string][] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : [string, [string, string]][] +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + +function getMultiRobots() { +>getMultiRobots : () => [string, [string, string]][] + + return multiRobots; +>multiRobots : [string, [string, string]][] +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : string +>primarySkillA : string +>secondarySkillA : string + +let numberB: number, nameB: string; +>numberB : number +>nameB : string + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : number +>nameA2 : string +>skillA2 : string +>nameMA : string + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : number +>robotAInfo : (number | string)[] +>multiRobotAInfo : (string | [string, string])[] + +for ([, nameA] of robots) { +>[, nameA] : string[] +> : undefined +>nameA : string +>robots : [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA] of getRobots()) { +>[, nameA] : string[] +> : undefined +>nameA : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA] of [robotA, robotB]) { +>[, nameA] : string[] +> : undefined +>nameA : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, [primarySkillA, secondarySkillA]] of multiRobots) { +>[, [primarySkillA, secondarySkillA]] : string[][] +> : undefined +>[primarySkillA, secondarySkillA] : string[] +>primarySkillA : string +>secondarySkillA : string +>multiRobots : [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>[, [primarySkillA, secondarySkillA]] : string[][] +> : undefined +>[primarySkillA, secondarySkillA] : string[] +>primarySkillA : string +>secondarySkillA : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>[, [primarySkillA, secondarySkillA]] : string[][] +> : undefined +>[primarySkillA, secondarySkillA] : string[] +>primarySkillA : string +>secondarySkillA : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for ([numberB] of robots) { +>[numberB] : number[] +>numberB : number +>robots : [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB] of getRobots()) { +>[numberB] : number[] +>numberB : number +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB] of [robotA, robotB]) { +>[numberB] : number[] +>numberB : number +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([nameB] of multiRobots) { +>[nameB] : string[] +>nameB : string +>multiRobots : [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB] of getMultiRobots()) { +>[nameB] : string[] +>nameB : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB] of [multiRobotA, multiRobotB]) { +>[nameB] : string[] +>nameB : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for ([numberA2, nameA2, skillA2] of robots) { +>[numberA2, nameA2, skillA2] : (number | string)[] +>numberA2 : number +>nameA2 : string +>skillA2 : string +>robots : [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2, nameA2, skillA2] of getRobots()) { +>[numberA2, nameA2, skillA2] : (number | string)[] +>numberA2 : number +>nameA2 : string +>skillA2 : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { +>[numberA2, nameA2, skillA2] : (number | string)[] +>numberA2 : number +>nameA2 : string +>skillA2 : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { +>[nameMA, [primarySkillA, secondarySkillA]] : (string | string[])[] +>nameMA : string +>[primarySkillA, secondarySkillA] : string[] +>primarySkillA : string +>secondarySkillA : string +>multiRobots : [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +>[nameMA, [primarySkillA, secondarySkillA]] : (string | string[])[] +>nameMA : string +>[primarySkillA, secondarySkillA] : string[] +>primarySkillA : string +>secondarySkillA : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +>[nameMA, [primarySkillA, secondarySkillA]] : (string | string[])[] +>nameMA : string +>[primarySkillA, secondarySkillA] : string[] +>primarySkillA : string +>secondarySkillA : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for ([numberA3, ...robotAInfo] of robots) { +>[numberA3, ...robotAInfo] : (number | string)[] +>numberA3 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>robots : [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3, ...robotAInfo] of getRobots()) { +>[numberA3, ...robotAInfo] : (number | string)[] +>numberA3 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3, ...robotAInfo] of [robotA, robotB]) { +>[numberA3, ...robotAInfo] : (number | string)[] +>numberA3 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([...multiRobotAInfo] of multiRobots) { +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>multiRobots : [string, [string, string]][] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for ([...multiRobotAInfo] of getMultiRobots()) { +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.ts new file mode 100644 index 00000000000..365a030f8e9 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPattern2.ts @@ -0,0 +1,101 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + +for ([, nameA] of robots) { + console.log(nameA); +} +for ([, nameA] of getRobots()) { + console.log(nameA); +} +for ([, nameA] of [robotA, robotB]) { + console.log(nameA); +} +for ([, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for ([numberB] of robots) { + console.log(numberB); +} +for ([numberB] of getRobots()) { + console.log(numberB); +} +for ([numberB] of [robotA, robotB]) { + console.log(numberB); +} +for ([nameB] of multiRobots) { + console.log(nameB); +} +for ([nameB] of getMultiRobots()) { + console.log(nameB); +} +for ([nameB] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for ([numberA2, nameA2, skillA2] of robots) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] of getRobots()) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { + console.log(nameA2); +} +for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for ([numberA3, ...robotAInfo] of robots) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} +for ([...multiRobotAInfo] of multiRobots) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] of getMultiRobots()) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + console.log(multiRobotAInfo); +} \ No newline at end of file From ac4b2bd7951fb5f762c86199174327506fa69c13 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 17:07:07 -0800 Subject: [PATCH 040/164] Test case for "For" that initializes vars using array binding pattern --- ...ionDestructuringForArrayBindingPattern2.js | 189 + ...estructuringForArrayBindingPattern2.js.map | 2 + ...uringForArrayBindingPattern2.sourcemap.txt | 3037 +++++++++++++++++ ...structuringForArrayBindingPattern2.symbols | 390 +++ ...DestructuringForArrayBindingPattern2.types | 684 ++++ ...ionDestructuringForArrayBindingPattern2.ts | 99 + 6 files changed, 4401 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js new file mode 100644 index 00000000000..aad4d79ddd1 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js @@ -0,0 +1,189 @@ +//// [sourceMapValidationDestructuringForArrayBindingPattern2.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +let i: number; + +for ([, nameA] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for ([numberB] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} + +//// [sourceMapValidationDestructuringForArrayBindingPattern2.js] +var robotA = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} +var nameA, primarySkillA, secondarySkillA; +var numberB, nameB; +var numberA2, nameA2, skillA2, nameMA; +var numberA3, robotAInfo, multiRobotAInfo; +var i; +for ((nameA = robotA[1], robotA), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_a = getRobot(), nameA = _a[1], _a), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_b = [2, "trimmer", "trimming"], nameA = _b[1], _b), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_c = multiRobotA[1], primarySkillA = _c[0], secondarySkillA = _c[1], multiRobotA), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ((_d = getMultiRobot(), _e = _d[1], primarySkillA = _e[0], secondarySkillA = _e[1], _d), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ((_f = ["trimmer", ["trimming", "edging"]], _g = _f[1], primarySkillA = _g[0], secondarySkillA = _g[1], _f), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ((numberB = robotA[0], robotA), i = 0; i < 1; i++) { + console.log(numberB); +} +for ((_h = getRobot(), numberB = _h[0], _h), i = 0; i < 1; i++) { + console.log(numberB); +} +for ((_j = [2, "trimmer", "trimming"], numberB = _j[0], _j), i = 0; i < 1; i++) { + console.log(numberB); +} +for ((nameB = multiRobotA[0], multiRobotA), i = 0; i < 1; i++) { + console.log(nameB); +} +for ((_k = getMultiRobot(), nameB = _k[0], _k), i = 0; i < 1; i++) { + console.log(nameB); +} +for ((_l = ["trimmer", ["trimming", "edging"]], nameB = _l[0], _l), i = 0; i < 1; i++) { + console.log(nameB); +} +for ((numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2], robotA), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ((_m = getRobot(), numberA2 = _m[0], nameA2 = _m[1], skillA2 = _m[2], _m), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ((_o = [2, "trimmer", "trimming"], numberA2 = _o[0], nameA2 = _o[1], skillA2 = _o[2], _o), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ((nameMA = multiRobotA[0], _p = multiRobotA[1], primarySkillA = _p[0], secondarySkillA = _p[1], multiRobotA), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ((_q = getMultiRobot(), nameMA = _q[0], _r = _q[1], primarySkillA = _r[0], secondarySkillA = _r[1], _q), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ((_s = ["trimmer", ["trimming", "edging"]], nameMA = _s[0], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1], _s), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ((numberA3 = robotA[0], robotAInfo = robotA.slice(1), robotA), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ((_u = getRobot(), numberA3 = _u[0], robotAInfo = _u.slice(1), _u), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ((_v = [2, "trimmer", "trimming"], numberA3 = _v[0], robotAInfo = _v.slice(1), _v), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ((multiRobotAInfo = multiRobotA.slice(0), multiRobotA), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for ((_w = getMultiRobot(), multiRobotAInfo = _w.slice(0), _w), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for ((_x = ["trimmer", ["trimming", "edging"]], multiRobotAInfo = _x.slice(0), _x), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; +//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map new file mode 100644 index 00000000000..a007a60e41f --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForArrayBindingPattern2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt new file mode 100644 index 00000000000..87d063f6ca5 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt @@ -0,0 +1,3037 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForArrayBindingPattern2.js +mapUrl: sourceMapValidationDestructuringForArrayBindingPattern2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForArrayBindingPattern2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.js +sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> return robotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robotA +5 > ; +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +3 >Emitted(3, 12) Source(9, 12) + SourceIndex(0) +4 >Emitted(3, 18) Source(9, 18) + SourceIndex(0) +5 >Emitted(3, 19) Source(9, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 2) Source(10, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 16) Source(12, 16) + SourceIndex(0) +4 >Emitted(5, 19) Source(12, 38) + SourceIndex(0) +5 >Emitted(5, 20) Source(12, 39) + SourceIndex(0) +6 >Emitted(5, 27) Source(12, 46) + SourceIndex(0) +7 >Emitted(5, 29) Source(12, 48) + SourceIndex(0) +8 >Emitted(5, 30) Source(12, 49) + SourceIndex(0) +9 >Emitted(5, 38) Source(12, 57) + SourceIndex(0) +10>Emitted(5, 40) Source(12, 59) + SourceIndex(0) +11>Emitted(5, 42) Source(12, 61) + SourceIndex(0) +12>Emitted(5, 43) Source(12, 62) + SourceIndex(0) +13>Emitted(5, 44) Source(12, 63) + SourceIndex(0) +14>Emitted(5, 45) Source(12, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 16) Source(13, 16) + SourceIndex(0) +4 >Emitted(6, 19) Source(13, 38) + SourceIndex(0) +5 >Emitted(6, 20) Source(13, 39) + SourceIndex(0) +6 >Emitted(6, 29) Source(13, 48) + SourceIndex(0) +7 >Emitted(6, 31) Source(13, 50) + SourceIndex(0) +8 >Emitted(6, 32) Source(13, 51) + SourceIndex(0) +9 >Emitted(6, 42) Source(13, 61) + SourceIndex(0) +10>Emitted(6, 44) Source(13, 63) + SourceIndex(0) +11>Emitted(6, 52) Source(13, 71) + SourceIndex(0) +12>Emitted(6, 53) Source(13, 72) + SourceIndex(0) +13>Emitted(6, 54) Source(13, 73) + SourceIndex(0) +14>Emitted(6, 55) Source(13, 74) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(7, 1) Source(14, 1) + SourceIndex(0) +--- +>>> return multiRobotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobotA +5 > ; +1->Emitted(8, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(15, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(15, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(15, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(16, 2) + SourceIndex(0) +--- +>>>var nameA, primarySkillA, secondarySkillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primarySkillA: string +6 > , +7 > secondarySkillA: string +8 > ; +1->Emitted(10, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(10, 10) Source(18, 18) + SourceIndex(0) +4 >Emitted(10, 12) Source(18, 20) + SourceIndex(0) +5 >Emitted(10, 25) Source(18, 41) + SourceIndex(0) +6 >Emitted(10, 27) Source(18, 43) + SourceIndex(0) +7 >Emitted(10, 42) Source(18, 66) + SourceIndex(0) +8 >Emitted(10, 43) Source(18, 67) + SourceIndex(0) +--- +>>>var numberB, nameB; +1 > +2 >^^^^ +3 > ^^^^^^^ +4 > ^^ +5 > ^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > numberB: number +4 > , +5 > nameB: string +6 > ; +1 >Emitted(11, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(11, 5) Source(19, 5) + SourceIndex(0) +3 >Emitted(11, 12) Source(19, 20) + SourceIndex(0) +4 >Emitted(11, 14) Source(19, 22) + SourceIndex(0) +5 >Emitted(11, 19) Source(19, 35) + SourceIndex(0) +6 >Emitted(11, 20) Source(19, 36) + SourceIndex(0) +--- +>>>var numberA2, nameA2, skillA2, nameMA; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^ +11> ^^^^^-> +1-> + > +2 >let +3 > numberA2: number +4 > , +5 > nameA2: string +6 > , +7 > skillA2: string +8 > , +9 > nameMA: string +10> ; +1->Emitted(12, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(12, 5) Source(20, 5) + SourceIndex(0) +3 >Emitted(12, 13) Source(20, 21) + SourceIndex(0) +4 >Emitted(12, 15) Source(20, 23) + SourceIndex(0) +5 >Emitted(12, 21) Source(20, 37) + SourceIndex(0) +6 >Emitted(12, 23) Source(20, 39) + SourceIndex(0) +7 >Emitted(12, 30) Source(20, 54) + SourceIndex(0) +8 >Emitted(12, 32) Source(20, 56) + SourceIndex(0) +9 >Emitted(12, 38) Source(20, 70) + SourceIndex(0) +10>Emitted(12, 39) Source(20, 71) + SourceIndex(0) +--- +>>>var numberA3, robotAInfo, multiRobotAInfo; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +1-> + > +2 >let +3 > numberA3: number +4 > , +5 > robotAInfo: (number | string)[] +6 > , +7 > multiRobotAInfo: (string | [string, string])[] +8 > ; +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(13, 13) Source(21, 21) + SourceIndex(0) +4 >Emitted(13, 15) Source(21, 23) + SourceIndex(0) +5 >Emitted(13, 25) Source(21, 54) + SourceIndex(0) +6 >Emitted(13, 27) Source(21, 56) + SourceIndex(0) +7 >Emitted(13, 42) Source(21, 102) + SourceIndex(0) +8 >Emitted(13, 43) Source(21, 103) + SourceIndex(0) +--- +>>>var i; +1 > +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > i: number +4 > ; +1 >Emitted(14, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(14, 6) Source(22, 14) + SourceIndex(0) +4 >Emitted(14, 7) Source(22, 15) + SourceIndex(0) +--- +>>>for ((nameA = robotA[1], robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [, +6 > nameA +7 > ] = +8 > robotA +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(15, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(15, 4) Source(24, 4) + SourceIndex(0) +3 >Emitted(15, 5) Source(24, 5) + SourceIndex(0) +4 >Emitted(15, 6) Source(24, 6) + SourceIndex(0) +5 >Emitted(15, 7) Source(24, 9) + SourceIndex(0) +6 >Emitted(15, 24) Source(24, 14) + SourceIndex(0) +7 >Emitted(15, 26) Source(24, 18) + SourceIndex(0) +8 >Emitted(15, 32) Source(24, 24) + SourceIndex(0) +9 >Emitted(15, 33) Source(24, 24) + SourceIndex(0) +10>Emitted(15, 35) Source(24, 26) + SourceIndex(0) +11>Emitted(15, 36) Source(24, 27) + SourceIndex(0) +12>Emitted(15, 39) Source(24, 30) + SourceIndex(0) +13>Emitted(15, 40) Source(24, 31) + SourceIndex(0) +14>Emitted(15, 42) Source(24, 33) + SourceIndex(0) +15>Emitted(15, 43) Source(24, 34) + SourceIndex(0) +16>Emitted(15, 46) Source(24, 37) + SourceIndex(0) +17>Emitted(15, 47) Source(24, 38) + SourceIndex(0) +18>Emitted(15, 49) Source(24, 40) + SourceIndex(0) +19>Emitted(15, 50) Source(24, 41) + SourceIndex(0) +20>Emitted(15, 52) Source(24, 43) + SourceIndex(0) +21>Emitted(15, 54) Source(24, 45) + SourceIndex(0) +22>Emitted(15, 55) Source(24, 46) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(16, 5) Source(25, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(25, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(25, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(25, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(25, 17) + SourceIndex(0) +6 >Emitted(16, 22) Source(25, 22) + SourceIndex(0) +7 >Emitted(16, 23) Source(25, 23) + SourceIndex(0) +8 >Emitted(16, 24) Source(25, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(26, 2) + SourceIndex(0) +--- +>>>for ((_a = getRobot(), nameA = _a[1], _a), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, nameA] = getRobot() +7 > +8 > nameA +9 > ] = getRobot() +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(18, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(18, 4) Source(27, 4) + SourceIndex(0) +3 >Emitted(18, 5) Source(27, 5) + SourceIndex(0) +4 >Emitted(18, 6) Source(27, 6) + SourceIndex(0) +5 >Emitted(18, 7) Source(27, 6) + SourceIndex(0) +6 >Emitted(18, 22) Source(27, 28) + SourceIndex(0) +7 >Emitted(18, 24) Source(27, 9) + SourceIndex(0) +8 >Emitted(18, 37) Source(27, 14) + SourceIndex(0) +9 >Emitted(18, 42) Source(27, 28) + SourceIndex(0) +10>Emitted(18, 44) Source(27, 30) + SourceIndex(0) +11>Emitted(18, 45) Source(27, 31) + SourceIndex(0) +12>Emitted(18, 48) Source(27, 34) + SourceIndex(0) +13>Emitted(18, 49) Source(27, 35) + SourceIndex(0) +14>Emitted(18, 51) Source(27, 37) + SourceIndex(0) +15>Emitted(18, 52) Source(27, 38) + SourceIndex(0) +16>Emitted(18, 55) Source(27, 41) + SourceIndex(0) +17>Emitted(18, 56) Source(27, 42) + SourceIndex(0) +18>Emitted(18, 58) Source(27, 44) + SourceIndex(0) +19>Emitted(18, 59) Source(27, 45) + SourceIndex(0) +20>Emitted(18, 61) Source(27, 47) + SourceIndex(0) +21>Emitted(18, 63) Source(27, 49) + SourceIndex(0) +22>Emitted(18, 64) Source(27, 50) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(28, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(28, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(28, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(28, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(28, 17) + SourceIndex(0) +6 >Emitted(19, 22) Source(28, 22) + SourceIndex(0) +7 >Emitted(19, 23) Source(28, 23) + SourceIndex(0) +8 >Emitted(19, 24) Source(28, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(20, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(20, 2) Source(29, 2) + SourceIndex(0) +--- +>>>for ((_b = [2, "trimmer", "trimming"], nameA = _b[1], _b), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, nameA] = [2, "trimmer", "trimming"] +7 > +8 > nameA +9 > ] = [2, "trimmer", "trimming"] +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(21, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(30, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(30, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(30, 6) + SourceIndex(0) +5 >Emitted(21, 7) Source(30, 6) + SourceIndex(0) +6 >Emitted(21, 38) Source(30, 44) + SourceIndex(0) +7 >Emitted(21, 40) Source(30, 9) + SourceIndex(0) +8 >Emitted(21, 53) Source(30, 14) + SourceIndex(0) +9 >Emitted(21, 58) Source(30, 44) + SourceIndex(0) +10>Emitted(21, 60) Source(30, 46) + SourceIndex(0) +11>Emitted(21, 61) Source(30, 47) + SourceIndex(0) +12>Emitted(21, 64) Source(30, 50) + SourceIndex(0) +13>Emitted(21, 65) Source(30, 51) + SourceIndex(0) +14>Emitted(21, 67) Source(30, 53) + SourceIndex(0) +15>Emitted(21, 68) Source(30, 54) + SourceIndex(0) +16>Emitted(21, 71) Source(30, 57) + SourceIndex(0) +17>Emitted(21, 72) Source(30, 58) + SourceIndex(0) +18>Emitted(21, 74) Source(30, 60) + SourceIndex(0) +19>Emitted(21, 75) Source(30, 61) + SourceIndex(0) +20>Emitted(21, 77) Source(30, 63) + SourceIndex(0) +21>Emitted(21, 79) Source(30, 65) + SourceIndex(0) +22>Emitted(21, 80) Source(30, 66) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(22, 5) Source(31, 5) + SourceIndex(0) +2 >Emitted(22, 12) Source(31, 12) + SourceIndex(0) +3 >Emitted(22, 13) Source(31, 13) + SourceIndex(0) +4 >Emitted(22, 16) Source(31, 16) + SourceIndex(0) +5 >Emitted(22, 17) Source(31, 17) + SourceIndex(0) +6 >Emitted(22, 22) Source(31, 22) + SourceIndex(0) +7 >Emitted(22, 23) Source(31, 23) + SourceIndex(0) +8 >Emitted(22, 24) Source(31, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(23, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(23, 2) Source(32, 2) + SourceIndex(0) +--- +>>>for ((_c = multiRobotA[1], primarySkillA = _c[0], secondarySkillA = _c[1], multiRobotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > [, +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA +11> ]] = +12> multiRobotA +13> +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(24, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(24, 4) Source(33, 4) + SourceIndex(0) +3 >Emitted(24, 5) Source(33, 5) + SourceIndex(0) +4 >Emitted(24, 6) Source(33, 6) + SourceIndex(0) +5 >Emitted(24, 7) Source(33, 9) + SourceIndex(0) +6 >Emitted(24, 26) Source(33, 41) + SourceIndex(0) +7 >Emitted(24, 28) Source(33, 10) + SourceIndex(0) +8 >Emitted(24, 49) Source(33, 23) + SourceIndex(0) +9 >Emitted(24, 51) Source(33, 25) + SourceIndex(0) +10>Emitted(24, 74) Source(33, 40) + SourceIndex(0) +11>Emitted(24, 76) Source(33, 45) + SourceIndex(0) +12>Emitted(24, 87) Source(33, 56) + SourceIndex(0) +13>Emitted(24, 88) Source(33, 56) + SourceIndex(0) +14>Emitted(24, 90) Source(33, 58) + SourceIndex(0) +15>Emitted(24, 91) Source(33, 59) + SourceIndex(0) +16>Emitted(24, 94) Source(33, 62) + SourceIndex(0) +17>Emitted(24, 95) Source(33, 63) + SourceIndex(0) +18>Emitted(24, 97) Source(33, 65) + SourceIndex(0) +19>Emitted(24, 98) Source(33, 66) + SourceIndex(0) +20>Emitted(24, 101) Source(33, 69) + SourceIndex(0) +21>Emitted(24, 102) Source(33, 70) + SourceIndex(0) +22>Emitted(24, 104) Source(33, 72) + SourceIndex(0) +23>Emitted(24, 105) Source(33, 73) + SourceIndex(0) +24>Emitted(24, 107) Source(33, 75) + SourceIndex(0) +25>Emitted(24, 109) Source(33, 77) + SourceIndex(0) +26>Emitted(24, 110) Source(33, 78) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(25, 5) Source(34, 5) + SourceIndex(0) +2 >Emitted(25, 12) Source(34, 12) + SourceIndex(0) +3 >Emitted(25, 13) Source(34, 13) + SourceIndex(0) +4 >Emitted(25, 16) Source(34, 16) + SourceIndex(0) +5 >Emitted(25, 17) Source(34, 17) + SourceIndex(0) +6 >Emitted(25, 30) Source(34, 30) + SourceIndex(0) +7 >Emitted(25, 31) Source(34, 31) + SourceIndex(0) +8 >Emitted(25, 32) Source(34, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(26, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(26, 2) Source(35, 2) + SourceIndex(0) +--- +>>>for ((_d = getMultiRobot(), _e = _d[1], primarySkillA = _e[0], secondarySkillA = _e[1], _d), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, [primarySkillA, secondarySkillA]] = getMultiRobot() +7 > +8 > [primarySkillA, secondarySkillA] +9 > +10> primarySkillA +11> , +12> secondarySkillA +13> ]] = getMultiRobot() +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(27, 1) Source(36, 1) + SourceIndex(0) +2 >Emitted(27, 4) Source(36, 4) + SourceIndex(0) +3 >Emitted(27, 5) Source(36, 5) + SourceIndex(0) +4 >Emitted(27, 6) Source(36, 6) + SourceIndex(0) +5 >Emitted(27, 7) Source(36, 6) + SourceIndex(0) +6 >Emitted(27, 27) Source(36, 60) + SourceIndex(0) +7 >Emitted(27, 29) Source(36, 9) + SourceIndex(0) +8 >Emitted(27, 39) Source(36, 41) + SourceIndex(0) +9 >Emitted(27, 41) Source(36, 10) + SourceIndex(0) +10>Emitted(27, 62) Source(36, 23) + SourceIndex(0) +11>Emitted(27, 64) Source(36, 25) + SourceIndex(0) +12>Emitted(27, 87) Source(36, 40) + SourceIndex(0) +13>Emitted(27, 92) Source(36, 60) + SourceIndex(0) +14>Emitted(27, 94) Source(36, 62) + SourceIndex(0) +15>Emitted(27, 95) Source(36, 63) + SourceIndex(0) +16>Emitted(27, 98) Source(36, 66) + SourceIndex(0) +17>Emitted(27, 99) Source(36, 67) + SourceIndex(0) +18>Emitted(27, 101) Source(36, 69) + SourceIndex(0) +19>Emitted(27, 102) Source(36, 70) + SourceIndex(0) +20>Emitted(27, 105) Source(36, 73) + SourceIndex(0) +21>Emitted(27, 106) Source(36, 74) + SourceIndex(0) +22>Emitted(27, 108) Source(36, 76) + SourceIndex(0) +23>Emitted(27, 109) Source(36, 77) + SourceIndex(0) +24>Emitted(27, 111) Source(36, 79) + SourceIndex(0) +25>Emitted(27, 113) Source(36, 81) + SourceIndex(0) +26>Emitted(27, 114) Source(36, 82) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(28, 5) Source(37, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(37, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(37, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(37, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(37, 17) + SourceIndex(0) +6 >Emitted(28, 30) Source(37, 30) + SourceIndex(0) +7 >Emitted(28, 31) Source(37, 31) + SourceIndex(0) +8 >Emitted(28, 32) Source(37, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(29, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(29, 2) Source(38, 2) + SourceIndex(0) +--- +>>>for ((_f = ["trimmer", ["trimming", "edging"]], _g = _f[1], primarySkillA = _g[0], secondarySkillA = _g[1], _f), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] +7 > +8 > [primarySkillA, secondarySkillA] +9 > +10> primarySkillA +11> , +12> secondarySkillA +13> ]] = ["trimmer", ["trimming", "edging"]] +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(30, 1) Source(39, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(39, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(39, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(39, 6) + SourceIndex(0) +5 >Emitted(30, 7) Source(39, 6) + SourceIndex(0) +6 >Emitted(30, 47) Source(39, 80) + SourceIndex(0) +7 >Emitted(30, 49) Source(39, 9) + SourceIndex(0) +8 >Emitted(30, 59) Source(39, 41) + SourceIndex(0) +9 >Emitted(30, 61) Source(39, 10) + SourceIndex(0) +10>Emitted(30, 82) Source(39, 23) + SourceIndex(0) +11>Emitted(30, 84) Source(39, 25) + SourceIndex(0) +12>Emitted(30, 107) Source(39, 40) + SourceIndex(0) +13>Emitted(30, 112) Source(39, 80) + SourceIndex(0) +14>Emitted(30, 114) Source(39, 82) + SourceIndex(0) +15>Emitted(30, 115) Source(39, 83) + SourceIndex(0) +16>Emitted(30, 118) Source(39, 86) + SourceIndex(0) +17>Emitted(30, 119) Source(39, 87) + SourceIndex(0) +18>Emitted(30, 121) Source(39, 89) + SourceIndex(0) +19>Emitted(30, 122) Source(39, 90) + SourceIndex(0) +20>Emitted(30, 125) Source(39, 93) + SourceIndex(0) +21>Emitted(30, 126) Source(39, 94) + SourceIndex(0) +22>Emitted(30, 128) Source(39, 96) + SourceIndex(0) +23>Emitted(30, 129) Source(39, 97) + SourceIndex(0) +24>Emitted(30, 131) Source(39, 99) + SourceIndex(0) +25>Emitted(30, 133) Source(39, 101) + SourceIndex(0) +26>Emitted(30, 134) Source(39, 102) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(40, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(40, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(40, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(40, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(40, 17) + SourceIndex(0) +6 >Emitted(31, 30) Source(40, 30) + SourceIndex(0) +7 >Emitted(31, 31) Source(40, 31) + SourceIndex(0) +8 >Emitted(31, 32) Source(40, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(41, 2) + SourceIndex(0) +--- +>>>for ((numberB = robotA[0], robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > +6 > [numberB] = robotA +7 > +8 > robotA +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(33, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(43, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(43, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(43, 6) + SourceIndex(0) +5 >Emitted(33, 7) Source(43, 6) + SourceIndex(0) +6 >Emitted(33, 26) Source(43, 24) + SourceIndex(0) +7 >Emitted(33, 28) Source(43, 18) + SourceIndex(0) +8 >Emitted(33, 34) Source(43, 24) + SourceIndex(0) +9 >Emitted(33, 35) Source(43, 24) + SourceIndex(0) +10>Emitted(33, 37) Source(43, 26) + SourceIndex(0) +11>Emitted(33, 38) Source(43, 27) + SourceIndex(0) +12>Emitted(33, 41) Source(43, 30) + SourceIndex(0) +13>Emitted(33, 42) Source(43, 31) + SourceIndex(0) +14>Emitted(33, 44) Source(43, 33) + SourceIndex(0) +15>Emitted(33, 45) Source(43, 34) + SourceIndex(0) +16>Emitted(33, 48) Source(43, 37) + SourceIndex(0) +17>Emitted(33, 49) Source(43, 38) + SourceIndex(0) +18>Emitted(33, 51) Source(43, 40) + SourceIndex(0) +19>Emitted(33, 52) Source(43, 41) + SourceIndex(0) +20>Emitted(33, 54) Source(43, 43) + SourceIndex(0) +21>Emitted(33, 56) Source(43, 45) + SourceIndex(0) +22>Emitted(33, 57) Source(43, 46) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(34, 5) Source(44, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(44, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(44, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(44, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(44, 17) + SourceIndex(0) +6 >Emitted(34, 24) Source(44, 24) + SourceIndex(0) +7 >Emitted(34, 25) Source(44, 25) + SourceIndex(0) +8 >Emitted(34, 26) Source(44, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(45, 2) + SourceIndex(0) +--- +>>>for ((_h = getRobot(), numberB = _h[0], _h), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberB] = getRobot() +7 > +8 > [numberB] = getRobot() +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(36, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(36, 4) Source(46, 4) + SourceIndex(0) +3 >Emitted(36, 5) Source(46, 5) + SourceIndex(0) +4 >Emitted(36, 6) Source(46, 6) + SourceIndex(0) +5 >Emitted(36, 7) Source(46, 6) + SourceIndex(0) +6 >Emitted(36, 22) Source(46, 28) + SourceIndex(0) +7 >Emitted(36, 24) Source(46, 6) + SourceIndex(0) +8 >Emitted(36, 39) Source(46, 28) + SourceIndex(0) +9 >Emitted(36, 44) Source(46, 28) + SourceIndex(0) +10>Emitted(36, 46) Source(46, 30) + SourceIndex(0) +11>Emitted(36, 47) Source(46, 31) + SourceIndex(0) +12>Emitted(36, 50) Source(46, 34) + SourceIndex(0) +13>Emitted(36, 51) Source(46, 35) + SourceIndex(0) +14>Emitted(36, 53) Source(46, 37) + SourceIndex(0) +15>Emitted(36, 54) Source(46, 38) + SourceIndex(0) +16>Emitted(36, 57) Source(46, 41) + SourceIndex(0) +17>Emitted(36, 58) Source(46, 42) + SourceIndex(0) +18>Emitted(36, 60) Source(46, 44) + SourceIndex(0) +19>Emitted(36, 61) Source(46, 45) + SourceIndex(0) +20>Emitted(36, 63) Source(46, 47) + SourceIndex(0) +21>Emitted(36, 65) Source(46, 49) + SourceIndex(0) +22>Emitted(36, 66) Source(46, 50) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(37, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(37, 24) Source(47, 24) + SourceIndex(0) +7 >Emitted(37, 25) Source(47, 25) + SourceIndex(0) +8 >Emitted(37, 26) Source(47, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(48, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(48, 2) + SourceIndex(0) +--- +>>>for ((_j = [2, "trimmer", "trimming"], numberB = _j[0], _j), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberB] = [2, "trimmer", "trimming"] +7 > +8 > [numberB] = [2, "trimmer", "trimming"] +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(39, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(49, 6) + SourceIndex(0) +5 >Emitted(39, 7) Source(49, 6) + SourceIndex(0) +6 >Emitted(39, 38) Source(49, 44) + SourceIndex(0) +7 >Emitted(39, 40) Source(49, 6) + SourceIndex(0) +8 >Emitted(39, 55) Source(49, 44) + SourceIndex(0) +9 >Emitted(39, 60) Source(49, 44) + SourceIndex(0) +10>Emitted(39, 62) Source(49, 46) + SourceIndex(0) +11>Emitted(39, 63) Source(49, 47) + SourceIndex(0) +12>Emitted(39, 66) Source(49, 50) + SourceIndex(0) +13>Emitted(39, 67) Source(49, 51) + SourceIndex(0) +14>Emitted(39, 69) Source(49, 53) + SourceIndex(0) +15>Emitted(39, 70) Source(49, 54) + SourceIndex(0) +16>Emitted(39, 73) Source(49, 57) + SourceIndex(0) +17>Emitted(39, 74) Source(49, 58) + SourceIndex(0) +18>Emitted(39, 76) Source(49, 60) + SourceIndex(0) +19>Emitted(39, 77) Source(49, 61) + SourceIndex(0) +20>Emitted(39, 79) Source(49, 63) + SourceIndex(0) +21>Emitted(39, 81) Source(49, 65) + SourceIndex(0) +22>Emitted(39, 82) Source(49, 66) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(40, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(40, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(40, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(40, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(40, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(40, 24) Source(50, 24) + SourceIndex(0) +7 >Emitted(40, 25) Source(50, 25) + SourceIndex(0) +8 >Emitted(40, 26) Source(50, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for ((nameB = multiRobotA[0], multiRobotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameB] = multiRobotA +7 > +8 > multiRobotA +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(42, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(42, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(42, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(42, 6) Source(52, 6) + SourceIndex(0) +5 >Emitted(42, 7) Source(52, 6) + SourceIndex(0) +6 >Emitted(42, 29) Source(52, 27) + SourceIndex(0) +7 >Emitted(42, 31) Source(52, 16) + SourceIndex(0) +8 >Emitted(42, 42) Source(52, 27) + SourceIndex(0) +9 >Emitted(42, 43) Source(52, 27) + SourceIndex(0) +10>Emitted(42, 45) Source(52, 29) + SourceIndex(0) +11>Emitted(42, 46) Source(52, 30) + SourceIndex(0) +12>Emitted(42, 49) Source(52, 33) + SourceIndex(0) +13>Emitted(42, 50) Source(52, 34) + SourceIndex(0) +14>Emitted(42, 52) Source(52, 36) + SourceIndex(0) +15>Emitted(42, 53) Source(52, 37) + SourceIndex(0) +16>Emitted(42, 56) Source(52, 40) + SourceIndex(0) +17>Emitted(42, 57) Source(52, 41) + SourceIndex(0) +18>Emitted(42, 59) Source(52, 43) + SourceIndex(0) +19>Emitted(42, 60) Source(52, 44) + SourceIndex(0) +20>Emitted(42, 62) Source(52, 46) + SourceIndex(0) +21>Emitted(42, 64) Source(52, 48) + SourceIndex(0) +22>Emitted(42, 65) Source(52, 49) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(43, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(43, 22) Source(53, 22) + SourceIndex(0) +7 >Emitted(43, 23) Source(53, 23) + SourceIndex(0) +8 >Emitted(43, 24) Source(53, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(44, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(44, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for ((_k = getMultiRobot(), nameB = _k[0], _k), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameB] = getMultiRobot() +7 > +8 > [nameB] = getMultiRobot() +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(45, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(55, 6) + SourceIndex(0) +5 >Emitted(45, 7) Source(55, 6) + SourceIndex(0) +6 >Emitted(45, 27) Source(55, 31) + SourceIndex(0) +7 >Emitted(45, 29) Source(55, 6) + SourceIndex(0) +8 >Emitted(45, 42) Source(55, 31) + SourceIndex(0) +9 >Emitted(45, 47) Source(55, 31) + SourceIndex(0) +10>Emitted(45, 49) Source(55, 33) + SourceIndex(0) +11>Emitted(45, 50) Source(55, 34) + SourceIndex(0) +12>Emitted(45, 53) Source(55, 37) + SourceIndex(0) +13>Emitted(45, 54) Source(55, 38) + SourceIndex(0) +14>Emitted(45, 56) Source(55, 40) + SourceIndex(0) +15>Emitted(45, 57) Source(55, 41) + SourceIndex(0) +16>Emitted(45, 60) Source(55, 44) + SourceIndex(0) +17>Emitted(45, 61) Source(55, 45) + SourceIndex(0) +18>Emitted(45, 63) Source(55, 47) + SourceIndex(0) +19>Emitted(45, 64) Source(55, 48) + SourceIndex(0) +20>Emitted(45, 66) Source(55, 50) + SourceIndex(0) +21>Emitted(45, 68) Source(55, 52) + SourceIndex(0) +22>Emitted(45, 69) Source(55, 53) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(46, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(46, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(46, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(46, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(46, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(46, 22) Source(56, 22) + SourceIndex(0) +7 >Emitted(46, 23) Source(56, 23) + SourceIndex(0) +8 >Emitted(46, 24) Source(56, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(47, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(47, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for ((_l = ["trimmer", ["trimming", "edging"]], nameB = _l[0], _l), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameB] = ["trimmer", ["trimming", "edging"]] +7 > +8 > [nameB] = ["trimmer", ["trimming", "edging"]] +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(48, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(48, 4) Source(58, 4) + SourceIndex(0) +3 >Emitted(48, 5) Source(58, 5) + SourceIndex(0) +4 >Emitted(48, 6) Source(58, 6) + SourceIndex(0) +5 >Emitted(48, 7) Source(58, 6) + SourceIndex(0) +6 >Emitted(48, 47) Source(58, 51) + SourceIndex(0) +7 >Emitted(48, 49) Source(58, 6) + SourceIndex(0) +8 >Emitted(48, 62) Source(58, 51) + SourceIndex(0) +9 >Emitted(48, 67) Source(58, 51) + SourceIndex(0) +10>Emitted(48, 69) Source(58, 53) + SourceIndex(0) +11>Emitted(48, 70) Source(58, 54) + SourceIndex(0) +12>Emitted(48, 73) Source(58, 57) + SourceIndex(0) +13>Emitted(48, 74) Source(58, 58) + SourceIndex(0) +14>Emitted(48, 76) Source(58, 60) + SourceIndex(0) +15>Emitted(48, 77) Source(58, 61) + SourceIndex(0) +16>Emitted(48, 80) Source(58, 64) + SourceIndex(0) +17>Emitted(48, 81) Source(58, 65) + SourceIndex(0) +18>Emitted(48, 83) Source(58, 67) + SourceIndex(0) +19>Emitted(48, 84) Source(58, 68) + SourceIndex(0) +20>Emitted(48, 86) Source(58, 70) + SourceIndex(0) +21>Emitted(48, 88) Source(58, 72) + SourceIndex(0) +22>Emitted(48, 89) Source(58, 73) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(49, 5) Source(59, 5) + SourceIndex(0) +2 >Emitted(49, 12) Source(59, 12) + SourceIndex(0) +3 >Emitted(49, 13) Source(59, 13) + SourceIndex(0) +4 >Emitted(49, 16) Source(59, 16) + SourceIndex(0) +5 >Emitted(49, 17) Source(59, 17) + SourceIndex(0) +6 >Emitted(49, 22) Source(59, 22) + SourceIndex(0) +7 >Emitted(49, 23) Source(59, 23) + SourceIndex(0) +8 >Emitted(49, 24) Source(59, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(50, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(50, 2) Source(60, 2) + SourceIndex(0) +--- +>>>for ((numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2], robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [ +6 > numberA2 +7 > , +8 > nameA2 +9 > , +10> skillA2 +11> ] = +12> robotA +13> +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(51, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(51, 4) Source(62, 4) + SourceIndex(0) +3 >Emitted(51, 5) Source(62, 5) + SourceIndex(0) +4 >Emitted(51, 6) Source(62, 6) + SourceIndex(0) +5 >Emitted(51, 7) Source(62, 7) + SourceIndex(0) +6 >Emitted(51, 27) Source(62, 15) + SourceIndex(0) +7 >Emitted(51, 29) Source(62, 17) + SourceIndex(0) +8 >Emitted(51, 47) Source(62, 23) + SourceIndex(0) +9 >Emitted(51, 49) Source(62, 25) + SourceIndex(0) +10>Emitted(51, 68) Source(62, 32) + SourceIndex(0) +11>Emitted(51, 70) Source(62, 36) + SourceIndex(0) +12>Emitted(51, 76) Source(62, 42) + SourceIndex(0) +13>Emitted(51, 77) Source(62, 42) + SourceIndex(0) +14>Emitted(51, 79) Source(62, 44) + SourceIndex(0) +15>Emitted(51, 80) Source(62, 45) + SourceIndex(0) +16>Emitted(51, 83) Source(62, 48) + SourceIndex(0) +17>Emitted(51, 84) Source(62, 49) + SourceIndex(0) +18>Emitted(51, 86) Source(62, 51) + SourceIndex(0) +19>Emitted(51, 87) Source(62, 52) + SourceIndex(0) +20>Emitted(51, 90) Source(62, 55) + SourceIndex(0) +21>Emitted(51, 91) Source(62, 56) + SourceIndex(0) +22>Emitted(51, 93) Source(62, 58) + SourceIndex(0) +23>Emitted(51, 94) Source(62, 59) + SourceIndex(0) +24>Emitted(51, 96) Source(62, 61) + SourceIndex(0) +25>Emitted(51, 98) Source(62, 63) + SourceIndex(0) +26>Emitted(51, 99) Source(62, 64) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(52, 5) Source(63, 5) + SourceIndex(0) +2 >Emitted(52, 12) Source(63, 12) + SourceIndex(0) +3 >Emitted(52, 13) Source(63, 13) + SourceIndex(0) +4 >Emitted(52, 16) Source(63, 16) + SourceIndex(0) +5 >Emitted(52, 17) Source(63, 17) + SourceIndex(0) +6 >Emitted(52, 23) Source(63, 23) + SourceIndex(0) +7 >Emitted(52, 24) Source(63, 24) + SourceIndex(0) +8 >Emitted(52, 25) Source(63, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(53, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(53, 2) Source(64, 2) + SourceIndex(0) +--- +>>>for ((_m = getRobot(), numberA2 = _m[0], nameA2 = _m[1], skillA2 = _m[2], _m), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA2, nameA2, skillA2] = getRobot() +7 > +8 > numberA2 +9 > , +10> nameA2 +11> , +12> skillA2 +13> ] = getRobot() +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(54, 1) Source(65, 1) + SourceIndex(0) +2 >Emitted(54, 4) Source(65, 4) + SourceIndex(0) +3 >Emitted(54, 5) Source(65, 5) + SourceIndex(0) +4 >Emitted(54, 6) Source(65, 6) + SourceIndex(0) +5 >Emitted(54, 7) Source(65, 6) + SourceIndex(0) +6 >Emitted(54, 22) Source(65, 46) + SourceIndex(0) +7 >Emitted(54, 24) Source(65, 7) + SourceIndex(0) +8 >Emitted(54, 40) Source(65, 15) + SourceIndex(0) +9 >Emitted(54, 42) Source(65, 17) + SourceIndex(0) +10>Emitted(54, 56) Source(65, 23) + SourceIndex(0) +11>Emitted(54, 58) Source(65, 25) + SourceIndex(0) +12>Emitted(54, 73) Source(65, 32) + SourceIndex(0) +13>Emitted(54, 78) Source(65, 46) + SourceIndex(0) +14>Emitted(54, 80) Source(65, 48) + SourceIndex(0) +15>Emitted(54, 81) Source(65, 49) + SourceIndex(0) +16>Emitted(54, 84) Source(65, 52) + SourceIndex(0) +17>Emitted(54, 85) Source(65, 53) + SourceIndex(0) +18>Emitted(54, 87) Source(65, 55) + SourceIndex(0) +19>Emitted(54, 88) Source(65, 56) + SourceIndex(0) +20>Emitted(54, 91) Source(65, 59) + SourceIndex(0) +21>Emitted(54, 92) Source(65, 60) + SourceIndex(0) +22>Emitted(54, 94) Source(65, 62) + SourceIndex(0) +23>Emitted(54, 95) Source(65, 63) + SourceIndex(0) +24>Emitted(54, 97) Source(65, 65) + SourceIndex(0) +25>Emitted(54, 99) Source(65, 67) + SourceIndex(0) +26>Emitted(54, 100) Source(65, 68) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(55, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(66, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(66, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(66, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(66, 17) + SourceIndex(0) +6 >Emitted(55, 23) Source(66, 23) + SourceIndex(0) +7 >Emitted(55, 24) Source(66, 24) + SourceIndex(0) +8 >Emitted(55, 25) Source(66, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(56, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(56, 2) Source(67, 2) + SourceIndex(0) +--- +>>>for ((_o = [2, "trimmer", "trimming"], numberA2 = _o[0], nameA2 = _o[1], skillA2 = _o[2], _o), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] +7 > +8 > numberA2 +9 > , +10> nameA2 +11> , +12> skillA2 +13> ] = [2, "trimmer", "trimming"] +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(57, 1) Source(68, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(68, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(68, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(68, 6) + SourceIndex(0) +5 >Emitted(57, 7) Source(68, 6) + SourceIndex(0) +6 >Emitted(57, 38) Source(68, 62) + SourceIndex(0) +7 >Emitted(57, 40) Source(68, 7) + SourceIndex(0) +8 >Emitted(57, 56) Source(68, 15) + SourceIndex(0) +9 >Emitted(57, 58) Source(68, 17) + SourceIndex(0) +10>Emitted(57, 72) Source(68, 23) + SourceIndex(0) +11>Emitted(57, 74) Source(68, 25) + SourceIndex(0) +12>Emitted(57, 89) Source(68, 32) + SourceIndex(0) +13>Emitted(57, 94) Source(68, 62) + SourceIndex(0) +14>Emitted(57, 96) Source(68, 64) + SourceIndex(0) +15>Emitted(57, 97) Source(68, 65) + SourceIndex(0) +16>Emitted(57, 100) Source(68, 68) + SourceIndex(0) +17>Emitted(57, 101) Source(68, 69) + SourceIndex(0) +18>Emitted(57, 103) Source(68, 71) + SourceIndex(0) +19>Emitted(57, 104) Source(68, 72) + SourceIndex(0) +20>Emitted(57, 107) Source(68, 75) + SourceIndex(0) +21>Emitted(57, 108) Source(68, 76) + SourceIndex(0) +22>Emitted(57, 110) Source(68, 78) + SourceIndex(0) +23>Emitted(57, 111) Source(68, 79) + SourceIndex(0) +24>Emitted(57, 113) Source(68, 81) + SourceIndex(0) +25>Emitted(57, 115) Source(68, 83) + SourceIndex(0) +26>Emitted(57, 116) Source(68, 84) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(58, 5) Source(69, 5) + SourceIndex(0) +2 >Emitted(58, 12) Source(69, 12) + SourceIndex(0) +3 >Emitted(58, 13) Source(69, 13) + SourceIndex(0) +4 >Emitted(58, 16) Source(69, 16) + SourceIndex(0) +5 >Emitted(58, 17) Source(69, 17) + SourceIndex(0) +6 >Emitted(58, 23) Source(69, 23) + SourceIndex(0) +7 >Emitted(58, 24) Source(69, 24) + SourceIndex(0) +8 >Emitted(58, 25) Source(69, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(59, 1) Source(70, 1) + SourceIndex(0) +2 >Emitted(59, 2) Source(70, 2) + SourceIndex(0) +--- +>>>for ((nameMA = multiRobotA[0], _p = multiRobotA[1], primarySkillA = _p[0], secondarySkillA = _p[1], multiRobotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > [ +6 > nameMA +7 > , +8 > [primarySkillA, secondarySkillA] +9 > +10> primarySkillA +11> , +12> secondarySkillA +13> ]] = +14> multiRobotA +15> +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(60, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(60, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(60, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(60, 6) Source(71, 6) + SourceIndex(0) +5 >Emitted(60, 7) Source(71, 7) + SourceIndex(0) +6 >Emitted(60, 30) Source(71, 13) + SourceIndex(0) +7 >Emitted(60, 32) Source(71, 15) + SourceIndex(0) +8 >Emitted(60, 51) Source(71, 47) + SourceIndex(0) +9 >Emitted(60, 53) Source(71, 16) + SourceIndex(0) +10>Emitted(60, 74) Source(71, 29) + SourceIndex(0) +11>Emitted(60, 76) Source(71, 31) + SourceIndex(0) +12>Emitted(60, 99) Source(71, 46) + SourceIndex(0) +13>Emitted(60, 101) Source(71, 51) + SourceIndex(0) +14>Emitted(60, 112) Source(71, 62) + SourceIndex(0) +15>Emitted(60, 113) Source(71, 62) + SourceIndex(0) +16>Emitted(60, 115) Source(71, 64) + SourceIndex(0) +17>Emitted(60, 116) Source(71, 65) + SourceIndex(0) +18>Emitted(60, 119) Source(71, 68) + SourceIndex(0) +19>Emitted(60, 120) Source(71, 69) + SourceIndex(0) +20>Emitted(60, 122) Source(71, 71) + SourceIndex(0) +21>Emitted(60, 123) Source(71, 72) + SourceIndex(0) +22>Emitted(60, 126) Source(71, 75) + SourceIndex(0) +23>Emitted(60, 127) Source(71, 76) + SourceIndex(0) +24>Emitted(60, 129) Source(71, 78) + SourceIndex(0) +25>Emitted(60, 130) Source(71, 79) + SourceIndex(0) +26>Emitted(60, 132) Source(71, 81) + SourceIndex(0) +27>Emitted(60, 134) Source(71, 83) + SourceIndex(0) +28>Emitted(60, 135) Source(71, 84) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(61, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(61, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(61, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(61, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(61, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(61, 23) Source(72, 23) + SourceIndex(0) +7 >Emitted(61, 24) Source(72, 24) + SourceIndex(0) +8 >Emitted(61, 25) Source(72, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(62, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(62, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for ((_q = getMultiRobot(), nameMA = _q[0], _r = _q[1], primarySkillA = _r[0], secondarySkillA = _r[1], _q), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() +7 > +8 > nameMA +9 > , +10> [primarySkillA, secondarySkillA] +11> +12> primarySkillA +13> , +14> secondarySkillA +15> ]] = getMultiRobot() +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(63, 1) Source(74, 1) + SourceIndex(0) +2 >Emitted(63, 4) Source(74, 4) + SourceIndex(0) +3 >Emitted(63, 5) Source(74, 5) + SourceIndex(0) +4 >Emitted(63, 6) Source(74, 6) + SourceIndex(0) +5 >Emitted(63, 7) Source(74, 6) + SourceIndex(0) +6 >Emitted(63, 27) Source(74, 66) + SourceIndex(0) +7 >Emitted(63, 29) Source(74, 7) + SourceIndex(0) +8 >Emitted(63, 43) Source(74, 13) + SourceIndex(0) +9 >Emitted(63, 45) Source(74, 15) + SourceIndex(0) +10>Emitted(63, 55) Source(74, 47) + SourceIndex(0) +11>Emitted(63, 57) Source(74, 16) + SourceIndex(0) +12>Emitted(63, 78) Source(74, 29) + SourceIndex(0) +13>Emitted(63, 80) Source(74, 31) + SourceIndex(0) +14>Emitted(63, 103) Source(74, 46) + SourceIndex(0) +15>Emitted(63, 108) Source(74, 66) + SourceIndex(0) +16>Emitted(63, 110) Source(74, 68) + SourceIndex(0) +17>Emitted(63, 111) Source(74, 69) + SourceIndex(0) +18>Emitted(63, 114) Source(74, 72) + SourceIndex(0) +19>Emitted(63, 115) Source(74, 73) + SourceIndex(0) +20>Emitted(63, 117) Source(74, 75) + SourceIndex(0) +21>Emitted(63, 118) Source(74, 76) + SourceIndex(0) +22>Emitted(63, 121) Source(74, 79) + SourceIndex(0) +23>Emitted(63, 122) Source(74, 80) + SourceIndex(0) +24>Emitted(63, 124) Source(74, 82) + SourceIndex(0) +25>Emitted(63, 125) Source(74, 83) + SourceIndex(0) +26>Emitted(63, 127) Source(74, 85) + SourceIndex(0) +27>Emitted(63, 129) Source(74, 87) + SourceIndex(0) +28>Emitted(63, 130) Source(74, 88) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(64, 5) Source(75, 5) + SourceIndex(0) +2 >Emitted(64, 12) Source(75, 12) + SourceIndex(0) +3 >Emitted(64, 13) Source(75, 13) + SourceIndex(0) +4 >Emitted(64, 16) Source(75, 16) + SourceIndex(0) +5 >Emitted(64, 17) Source(75, 17) + SourceIndex(0) +6 >Emitted(64, 23) Source(75, 23) + SourceIndex(0) +7 >Emitted(64, 24) Source(75, 24) + SourceIndex(0) +8 >Emitted(64, 25) Source(75, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(65, 1) Source(76, 1) + SourceIndex(0) +2 >Emitted(65, 2) Source(76, 2) + SourceIndex(0) +--- +>>>for ((_s = ["trimmer", ["trimming", "edging"]], nameMA = _s[0], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1], _s), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] +7 > +8 > nameMA +9 > , +10> [primarySkillA, secondarySkillA] +11> +12> primarySkillA +13> , +14> secondarySkillA +15> ]] = ["trimmer", ["trimming", "edging"]] +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(66, 1) Source(77, 1) + SourceIndex(0) +2 >Emitted(66, 4) Source(77, 4) + SourceIndex(0) +3 >Emitted(66, 5) Source(77, 5) + SourceIndex(0) +4 >Emitted(66, 6) Source(77, 6) + SourceIndex(0) +5 >Emitted(66, 7) Source(77, 6) + SourceIndex(0) +6 >Emitted(66, 47) Source(77, 86) + SourceIndex(0) +7 >Emitted(66, 49) Source(77, 7) + SourceIndex(0) +8 >Emitted(66, 63) Source(77, 13) + SourceIndex(0) +9 >Emitted(66, 65) Source(77, 15) + SourceIndex(0) +10>Emitted(66, 75) Source(77, 47) + SourceIndex(0) +11>Emitted(66, 77) Source(77, 16) + SourceIndex(0) +12>Emitted(66, 98) Source(77, 29) + SourceIndex(0) +13>Emitted(66, 100) Source(77, 31) + SourceIndex(0) +14>Emitted(66, 123) Source(77, 46) + SourceIndex(0) +15>Emitted(66, 128) Source(77, 86) + SourceIndex(0) +16>Emitted(66, 130) Source(77, 88) + SourceIndex(0) +17>Emitted(66, 131) Source(77, 89) + SourceIndex(0) +18>Emitted(66, 134) Source(77, 92) + SourceIndex(0) +19>Emitted(66, 135) Source(77, 93) + SourceIndex(0) +20>Emitted(66, 137) Source(77, 95) + SourceIndex(0) +21>Emitted(66, 138) Source(77, 96) + SourceIndex(0) +22>Emitted(66, 141) Source(77, 99) + SourceIndex(0) +23>Emitted(66, 142) Source(77, 100) + SourceIndex(0) +24>Emitted(66, 144) Source(77, 102) + SourceIndex(0) +25>Emitted(66, 145) Source(77, 103) + SourceIndex(0) +26>Emitted(66, 147) Source(77, 105) + SourceIndex(0) +27>Emitted(66, 149) Source(77, 107) + SourceIndex(0) +28>Emitted(66, 150) Source(77, 108) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(67, 5) Source(78, 5) + SourceIndex(0) +2 >Emitted(67, 12) Source(78, 12) + SourceIndex(0) +3 >Emitted(67, 13) Source(78, 13) + SourceIndex(0) +4 >Emitted(67, 16) Source(78, 16) + SourceIndex(0) +5 >Emitted(67, 17) Source(78, 17) + SourceIndex(0) +6 >Emitted(67, 23) Source(78, 23) + SourceIndex(0) +7 >Emitted(67, 24) Source(78, 24) + SourceIndex(0) +8 >Emitted(67, 25) Source(78, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(68, 1) Source(79, 1) + SourceIndex(0) +2 >Emitted(68, 2) Source(79, 2) + SourceIndex(0) +--- +>>>for ((numberA3 = robotA[0], robotAInfo = robotA.slice(1), robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [ +6 > numberA3 +7 > , +8 > ...robotAInfo +9 > ] = +10> robotA +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(69, 1) Source(81, 1) + SourceIndex(0) +2 >Emitted(69, 4) Source(81, 4) + SourceIndex(0) +3 >Emitted(69, 5) Source(81, 5) + SourceIndex(0) +4 >Emitted(69, 6) Source(81, 6) + SourceIndex(0) +5 >Emitted(69, 7) Source(81, 7) + SourceIndex(0) +6 >Emitted(69, 27) Source(81, 15) + SourceIndex(0) +7 >Emitted(69, 29) Source(81, 17) + SourceIndex(0) +8 >Emitted(69, 57) Source(81, 30) + SourceIndex(0) +9 >Emitted(69, 59) Source(81, 34) + SourceIndex(0) +10>Emitted(69, 65) Source(81, 40) + SourceIndex(0) +11>Emitted(69, 66) Source(81, 40) + SourceIndex(0) +12>Emitted(69, 68) Source(81, 42) + SourceIndex(0) +13>Emitted(69, 69) Source(81, 43) + SourceIndex(0) +14>Emitted(69, 72) Source(81, 46) + SourceIndex(0) +15>Emitted(69, 73) Source(81, 47) + SourceIndex(0) +16>Emitted(69, 75) Source(81, 49) + SourceIndex(0) +17>Emitted(69, 76) Source(81, 50) + SourceIndex(0) +18>Emitted(69, 79) Source(81, 53) + SourceIndex(0) +19>Emitted(69, 80) Source(81, 54) + SourceIndex(0) +20>Emitted(69, 82) Source(81, 56) + SourceIndex(0) +21>Emitted(69, 83) Source(81, 57) + SourceIndex(0) +22>Emitted(69, 85) Source(81, 59) + SourceIndex(0) +23>Emitted(69, 87) Source(81, 61) + SourceIndex(0) +24>Emitted(69, 88) Source(81, 62) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(70, 5) Source(82, 5) + SourceIndex(0) +2 >Emitted(70, 12) Source(82, 12) + SourceIndex(0) +3 >Emitted(70, 13) Source(82, 13) + SourceIndex(0) +4 >Emitted(70, 16) Source(82, 16) + SourceIndex(0) +5 >Emitted(70, 17) Source(82, 17) + SourceIndex(0) +6 >Emitted(70, 25) Source(82, 25) + SourceIndex(0) +7 >Emitted(70, 26) Source(82, 26) + SourceIndex(0) +8 >Emitted(70, 27) Source(82, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(71, 1) Source(83, 1) + SourceIndex(0) +2 >Emitted(71, 2) Source(83, 2) + SourceIndex(0) +--- +>>>for ((_u = getRobot(), numberA3 = _u[0], robotAInfo = _u.slice(1), _u), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA3, ...robotAInfo] = getRobot() +7 > +8 > numberA3 +9 > , +10> ...robotAInfo +11> ] = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(72, 1) Source(84, 1) + SourceIndex(0) +2 >Emitted(72, 4) Source(84, 4) + SourceIndex(0) +3 >Emitted(72, 5) Source(84, 5) + SourceIndex(0) +4 >Emitted(72, 6) Source(84, 6) + SourceIndex(0) +5 >Emitted(72, 7) Source(84, 6) + SourceIndex(0) +6 >Emitted(72, 22) Source(84, 44) + SourceIndex(0) +7 >Emitted(72, 24) Source(84, 7) + SourceIndex(0) +8 >Emitted(72, 40) Source(84, 15) + SourceIndex(0) +9 >Emitted(72, 42) Source(84, 17) + SourceIndex(0) +10>Emitted(72, 66) Source(84, 30) + SourceIndex(0) +11>Emitted(72, 71) Source(84, 44) + SourceIndex(0) +12>Emitted(72, 73) Source(84, 46) + SourceIndex(0) +13>Emitted(72, 74) Source(84, 47) + SourceIndex(0) +14>Emitted(72, 77) Source(84, 50) + SourceIndex(0) +15>Emitted(72, 78) Source(84, 51) + SourceIndex(0) +16>Emitted(72, 80) Source(84, 53) + SourceIndex(0) +17>Emitted(72, 81) Source(84, 54) + SourceIndex(0) +18>Emitted(72, 84) Source(84, 57) + SourceIndex(0) +19>Emitted(72, 85) Source(84, 58) + SourceIndex(0) +20>Emitted(72, 87) Source(84, 60) + SourceIndex(0) +21>Emitted(72, 88) Source(84, 61) + SourceIndex(0) +22>Emitted(72, 90) Source(84, 63) + SourceIndex(0) +23>Emitted(72, 92) Source(84, 65) + SourceIndex(0) +24>Emitted(72, 93) Source(84, 66) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(73, 5) Source(85, 5) + SourceIndex(0) +2 >Emitted(73, 12) Source(85, 12) + SourceIndex(0) +3 >Emitted(73, 13) Source(85, 13) + SourceIndex(0) +4 >Emitted(73, 16) Source(85, 16) + SourceIndex(0) +5 >Emitted(73, 17) Source(85, 17) + SourceIndex(0) +6 >Emitted(73, 25) Source(85, 25) + SourceIndex(0) +7 >Emitted(73, 26) Source(85, 26) + SourceIndex(0) +8 >Emitted(73, 27) Source(85, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(74, 1) Source(86, 1) + SourceIndex(0) +2 >Emitted(74, 2) Source(86, 2) + SourceIndex(0) +--- +>>>for ((_v = [2, "trimmer", "trimming"], numberA3 = _v[0], robotAInfo = _v.slice(1), _v), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] +7 > +8 > numberA3 +9 > , +10> ...robotAInfo +11> ] = [2, "trimmer", "trimming"] +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(75, 1) Source(87, 1) + SourceIndex(0) +2 >Emitted(75, 4) Source(87, 4) + SourceIndex(0) +3 >Emitted(75, 5) Source(87, 5) + SourceIndex(0) +4 >Emitted(75, 6) Source(87, 6) + SourceIndex(0) +5 >Emitted(75, 7) Source(87, 6) + SourceIndex(0) +6 >Emitted(75, 38) Source(87, 67) + SourceIndex(0) +7 >Emitted(75, 40) Source(87, 7) + SourceIndex(0) +8 >Emitted(75, 56) Source(87, 15) + SourceIndex(0) +9 >Emitted(75, 58) Source(87, 17) + SourceIndex(0) +10>Emitted(75, 82) Source(87, 30) + SourceIndex(0) +11>Emitted(75, 87) Source(87, 67) + SourceIndex(0) +12>Emitted(75, 89) Source(87, 69) + SourceIndex(0) +13>Emitted(75, 90) Source(87, 70) + SourceIndex(0) +14>Emitted(75, 93) Source(87, 73) + SourceIndex(0) +15>Emitted(75, 94) Source(87, 74) + SourceIndex(0) +16>Emitted(75, 96) Source(87, 76) + SourceIndex(0) +17>Emitted(75, 97) Source(87, 77) + SourceIndex(0) +18>Emitted(75, 100) Source(87, 80) + SourceIndex(0) +19>Emitted(75, 101) Source(87, 81) + SourceIndex(0) +20>Emitted(75, 103) Source(87, 83) + SourceIndex(0) +21>Emitted(75, 104) Source(87, 84) + SourceIndex(0) +22>Emitted(75, 106) Source(87, 86) + SourceIndex(0) +23>Emitted(75, 108) Source(87, 88) + SourceIndex(0) +24>Emitted(75, 109) Source(87, 89) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(76, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(76, 12) Source(88, 12) + SourceIndex(0) +3 >Emitted(76, 13) Source(88, 13) + SourceIndex(0) +4 >Emitted(76, 16) Source(88, 16) + SourceIndex(0) +5 >Emitted(76, 17) Source(88, 17) + SourceIndex(0) +6 >Emitted(76, 25) Source(88, 25) + SourceIndex(0) +7 >Emitted(76, 26) Source(88, 26) + SourceIndex(0) +8 >Emitted(76, 27) Source(88, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(77, 1) Source(89, 1) + SourceIndex(0) +2 >Emitted(77, 2) Source(89, 2) + SourceIndex(0) +--- +>>>for ((multiRobotAInfo = multiRobotA.slice(0), multiRobotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [...multiRobotAInfo] = multiRobotA +7 > +8 > multiRobotA +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(78, 1) Source(90, 1) + SourceIndex(0) +2 >Emitted(78, 4) Source(90, 4) + SourceIndex(0) +3 >Emitted(78, 5) Source(90, 5) + SourceIndex(0) +4 >Emitted(78, 6) Source(90, 6) + SourceIndex(0) +5 >Emitted(78, 7) Source(90, 6) + SourceIndex(0) +6 >Emitted(78, 45) Source(90, 40) + SourceIndex(0) +7 >Emitted(78, 47) Source(90, 29) + SourceIndex(0) +8 >Emitted(78, 58) Source(90, 40) + SourceIndex(0) +9 >Emitted(78, 59) Source(90, 40) + SourceIndex(0) +10>Emitted(78, 61) Source(90, 42) + SourceIndex(0) +11>Emitted(78, 62) Source(90, 43) + SourceIndex(0) +12>Emitted(78, 65) Source(90, 46) + SourceIndex(0) +13>Emitted(78, 66) Source(90, 47) + SourceIndex(0) +14>Emitted(78, 68) Source(90, 49) + SourceIndex(0) +15>Emitted(78, 69) Source(90, 50) + SourceIndex(0) +16>Emitted(78, 72) Source(90, 53) + SourceIndex(0) +17>Emitted(78, 73) Source(90, 54) + SourceIndex(0) +18>Emitted(78, 75) Source(90, 56) + SourceIndex(0) +19>Emitted(78, 76) Source(90, 57) + SourceIndex(0) +20>Emitted(78, 78) Source(90, 59) + SourceIndex(0) +21>Emitted(78, 80) Source(90, 61) + SourceIndex(0) +22>Emitted(78, 81) Source(90, 62) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(79, 5) Source(91, 5) + SourceIndex(0) +2 >Emitted(79, 12) Source(91, 12) + SourceIndex(0) +3 >Emitted(79, 13) Source(91, 13) + SourceIndex(0) +4 >Emitted(79, 16) Source(91, 16) + SourceIndex(0) +5 >Emitted(79, 17) Source(91, 17) + SourceIndex(0) +6 >Emitted(79, 32) Source(91, 32) + SourceIndex(0) +7 >Emitted(79, 33) Source(91, 33) + SourceIndex(0) +8 >Emitted(79, 34) Source(91, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(80, 1) Source(92, 1) + SourceIndex(0) +2 >Emitted(80, 2) Source(92, 2) + SourceIndex(0) +--- +>>>for ((_w = getMultiRobot(), multiRobotAInfo = _w.slice(0), _w), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [...multiRobotAInfo] = getMultiRobot() +7 > +8 > [...multiRobotAInfo] = getMultiRobot() +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(81, 1) Source(93, 1) + SourceIndex(0) +2 >Emitted(81, 4) Source(93, 4) + SourceIndex(0) +3 >Emitted(81, 5) Source(93, 5) + SourceIndex(0) +4 >Emitted(81, 6) Source(93, 6) + SourceIndex(0) +5 >Emitted(81, 7) Source(93, 6) + SourceIndex(0) +6 >Emitted(81, 27) Source(93, 44) + SourceIndex(0) +7 >Emitted(81, 29) Source(93, 6) + SourceIndex(0) +8 >Emitted(81, 58) Source(93, 44) + SourceIndex(0) +9 >Emitted(81, 63) Source(93, 44) + SourceIndex(0) +10>Emitted(81, 65) Source(93, 46) + SourceIndex(0) +11>Emitted(81, 66) Source(93, 47) + SourceIndex(0) +12>Emitted(81, 69) Source(93, 50) + SourceIndex(0) +13>Emitted(81, 70) Source(93, 51) + SourceIndex(0) +14>Emitted(81, 72) Source(93, 53) + SourceIndex(0) +15>Emitted(81, 73) Source(93, 54) + SourceIndex(0) +16>Emitted(81, 76) Source(93, 57) + SourceIndex(0) +17>Emitted(81, 77) Source(93, 58) + SourceIndex(0) +18>Emitted(81, 79) Source(93, 60) + SourceIndex(0) +19>Emitted(81, 80) Source(93, 61) + SourceIndex(0) +20>Emitted(81, 82) Source(93, 63) + SourceIndex(0) +21>Emitted(81, 84) Source(93, 65) + SourceIndex(0) +22>Emitted(81, 85) Source(93, 66) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(82, 5) Source(94, 5) + SourceIndex(0) +2 >Emitted(82, 12) Source(94, 12) + SourceIndex(0) +3 >Emitted(82, 13) Source(94, 13) + SourceIndex(0) +4 >Emitted(82, 16) Source(94, 16) + SourceIndex(0) +5 >Emitted(82, 17) Source(94, 17) + SourceIndex(0) +6 >Emitted(82, 32) Source(94, 32) + SourceIndex(0) +7 >Emitted(82, 33) Source(94, 33) + SourceIndex(0) +8 >Emitted(82, 34) Source(94, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(83, 1) Source(95, 1) + SourceIndex(0) +2 >Emitted(83, 2) Source(95, 2) + SourceIndex(0) +--- +>>>for ((_x = ["trimmer", ["trimming", "edging"]], multiRobotAInfo = _x.slice(0), _x), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] +7 > +8 > [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(84, 1) Source(96, 1) + SourceIndex(0) +2 >Emitted(84, 4) Source(96, 4) + SourceIndex(0) +3 >Emitted(84, 5) Source(96, 5) + SourceIndex(0) +4 >Emitted(84, 6) Source(96, 6) + SourceIndex(0) +5 >Emitted(84, 7) Source(96, 6) + SourceIndex(0) +6 >Emitted(84, 47) Source(96, 83) + SourceIndex(0) +7 >Emitted(84, 49) Source(96, 6) + SourceIndex(0) +8 >Emitted(84, 78) Source(96, 83) + SourceIndex(0) +9 >Emitted(84, 83) Source(96, 83) + SourceIndex(0) +10>Emitted(84, 85) Source(96, 85) + SourceIndex(0) +11>Emitted(84, 86) Source(96, 86) + SourceIndex(0) +12>Emitted(84, 89) Source(96, 89) + SourceIndex(0) +13>Emitted(84, 90) Source(96, 90) + SourceIndex(0) +14>Emitted(84, 92) Source(96, 92) + SourceIndex(0) +15>Emitted(84, 93) Source(96, 93) + SourceIndex(0) +16>Emitted(84, 96) Source(96, 96) + SourceIndex(0) +17>Emitted(84, 97) Source(96, 97) + SourceIndex(0) +18>Emitted(84, 99) Source(96, 99) + SourceIndex(0) +19>Emitted(84, 100) Source(96, 100) + SourceIndex(0) +20>Emitted(84, 102) Source(96, 102) + SourceIndex(0) +21>Emitted(84, 104) Source(96, 104) + SourceIndex(0) +22>Emitted(84, 105) Source(96, 105) + SourceIndex(0) +--- +>>> console.log(multiRobotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > multiRobotAInfo +7 > ) +8 > ; +1 >Emitted(85, 5) Source(97, 5) + SourceIndex(0) +2 >Emitted(85, 12) Source(97, 12) + SourceIndex(0) +3 >Emitted(85, 13) Source(97, 13) + SourceIndex(0) +4 >Emitted(85, 16) Source(97, 16) + SourceIndex(0) +5 >Emitted(85, 17) Source(97, 17) + SourceIndex(0) +6 >Emitted(85, 32) Source(97, 32) + SourceIndex(0) +7 >Emitted(85, 33) Source(97, 33) + SourceIndex(0) +8 >Emitted(85, 34) Source(97, 34) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(86, 1) Source(98, 1) + SourceIndex(0) +2 >Emitted(86, 2) Source(98, 2) + SourceIndex(0) +--- +>>>var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.symbols new file mode 100644 index 00000000000..5c269a42043 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.symbols @@ -0,0 +1,390 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 2, 1)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 43)) + + return robotA; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 11, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 12, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 3, 38)) + +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 12, 73)) + + return multiRobotA; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 11, 3)) +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) + +let numberB: number, nameB: string; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 37)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 21)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) + +let i: number; +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + +for ([, nameA] = robotA, i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +} +for ([, nameA] = getRobot(), i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +} +for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 3)) +} +for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +} +for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +} +for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +} + +for ([numberB] = robotA, i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +} +for ([numberB] = getRobot(), i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +} +for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 3)) +} +for ([nameB] = multiRobotA, i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) +} +for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) +} +for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 18, 20)) +} + +for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 37)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +} +for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 37)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +} +for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 37)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 21)) +} +for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) +} +for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) +} +for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 17, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 19, 54)) +} + +for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 21)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +} +for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 21)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +} +for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 21)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 2, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 3)) +} +for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) +} +for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) +} +for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 3, 38)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 21, 3)) + + console.log(multiRobotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 0, 22)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPattern2.ts, 20, 54)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types new file mode 100644 index 00000000000..a50f506262d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.types @@ -0,0 +1,684 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +function getRobot() { +>getRobot : () => [number, string, string] + + return robotA; +>robotA : [number, string, string] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +function getMultiRobot() { +>getMultiRobot : () => [string, [string, string]] + + return multiRobotA; +>multiRobotA : [string, [string, string]] +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : string +>primarySkillA : string +>secondarySkillA : string + +let numberB: number, nameB: string; +>numberB : number +>nameB : string + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : number +>nameA2 : string +>skillA2 : string +>nameMA : string + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : number +>robotAInfo : (number | string)[] +>multiRobotAInfo : (string | [string, string])[] + +let i: number; +>i : number + +for ([, nameA] = robotA, i = 0; i < 1; i++) { +>[, nameA] = robotA, i = 0 : number +>[, nameA] = robotA : [number, string, string] +>[, nameA] : [undefined, string] +> : undefined +>nameA : string +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA] = getRobot(), i = 0; i < 1; i++) { +>[, nameA] = getRobot(), i = 0 : number +>[, nameA] = getRobot() : [number, string, string] +>[, nameA] : [undefined, string] +> : undefined +>nameA : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[, nameA] = [2, "trimmer", "trimming"], i = 0 : number +>[, nameA] = [2, "trimmer", "trimming"] : [number, string, string] +>[, nameA] : [undefined, string] +> : undefined +>nameA : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>[, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0 : number +>[, [primarySkillA, secondarySkillA]] = multiRobotA : [string, [string, string]] +>[, [primarySkillA, secondarySkillA]] : [undefined, [string, string]] +> : undefined +>[primarySkillA, secondarySkillA] : [string, string] +>primarySkillA : string +>secondarySkillA : string +>multiRobotA : [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>[, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0 : number +>[, [primarySkillA, secondarySkillA]] = getMultiRobot() : [string, [string, string]] +>[, [primarySkillA, secondarySkillA]] : [undefined, [string, string]] +> : undefined +>[primarySkillA, secondarySkillA] : [string, string] +>primarySkillA : string +>secondarySkillA : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>[, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[, [primarySkillA, secondarySkillA]] : [undefined, [string, string]] +> : undefined +>[primarySkillA, secondarySkillA] : [string, string] +>primarySkillA : string +>secondarySkillA : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for ([numberB] = robotA, i = 0; i < 1; i++) { +>[numberB] = robotA, i = 0 : number +>[numberB] = robotA : [number, string, string] +>[numberB] : [number] +>numberB : number +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB] = getRobot(), i = 0; i < 1; i++) { +>[numberB] = getRobot(), i = 0 : number +>[numberB] = getRobot() : [number, string, string] +>[numberB] : [number] +>numberB : number +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[numberB] = [2, "trimmer", "trimming"], i = 0 : number +>[numberB] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB] : [number] +>numberB : number +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([nameB] = multiRobotA, i = 0; i < 1; i++) { +>[nameB] = multiRobotA, i = 0 : number +>[nameB] = multiRobotA : [string, [string, string]] +>[nameB] : [string] +>nameB : string +>multiRobotA : [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { +>[nameB] = getMultiRobot(), i = 0 : number +>[nameB] = getMultiRobot() : [string, [string, string]] +>[nameB] : [string] +>nameB : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>[nameB] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[nameB] = ["trimmer", ["trimming", "edging"]] : [string, string[]] +>[nameB] : [string] +>nameB : string +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { +>[numberA2, nameA2, skillA2] = robotA, i = 0 : number +>[numberA2, nameA2, skillA2] = robotA : [number, string, string] +>[numberA2, nameA2, skillA2] : [number, string, string] +>numberA2 : number +>nameA2 : string +>skillA2 : string +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { +>[numberA2, nameA2, skillA2] = getRobot(), i = 0 : number +>[numberA2, nameA2, skillA2] = getRobot() : [number, string, string] +>[numberA2, nameA2, skillA2] : [number, string, string] +>numberA2 : number +>nameA2 : string +>skillA2 : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0 : number +>[numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberA2, nameA2, skillA2] : [number, string, string] +>numberA2 : number +>nameA2 : string +>skillA2 : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +>[nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0 : number +>[nameMA, [primarySkillA, secondarySkillA]] = multiRobotA : [string, [string, string]] +>[nameMA, [primarySkillA, secondarySkillA]] : [string, [string, string]] +>nameMA : string +>[primarySkillA, secondarySkillA] : [string, string] +>primarySkillA : string +>secondarySkillA : string +>multiRobotA : [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +>[nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0 : number +>[nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() : [string, [string, string]] +>[nameMA, [primarySkillA, secondarySkillA]] : [string, [string, string]] +>nameMA : string +>[primarySkillA, secondarySkillA] : [string, string] +>primarySkillA : string +>secondarySkillA : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>[nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[nameMA, [primarySkillA, secondarySkillA]] : [string, [string, string]] +>nameMA : string +>[primarySkillA, secondarySkillA] : [string, string] +>primarySkillA : string +>secondarySkillA : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>[numberA3, ...robotAInfo] = robotA, i = 0 : number +>[numberA3, ...robotAInfo] = robotA : [number, string, string] +>[numberA3, ...robotAInfo] : (number | string)[] +>numberA3 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>[numberA3, ...robotAInfo] = getRobot(), i = 0 : number +>[numberA3, ...robotAInfo] = getRobot() : [number, string, string] +>[numberA3, ...robotAInfo] : (number | string)[] +>numberA3 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 : number +>[numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberA3, ...robotAInfo] : (number | string)[] +>numberA3 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>[2, "trimmer", "trimming"] : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { +>[...multiRobotAInfo] = multiRobotA, i = 0 : number +>[...multiRobotAInfo] = multiRobotA : [string, [string, string]] +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>multiRobotA : [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { +>[...multiRobotAInfo] = getMultiRobot(), i = 0 : number +>[...multiRobotAInfo] = getMultiRobot() : [string, [string, string]] +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} +for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[...multiRobotAInfo] : (string | [string, string])[] +>...multiRobotAInfo : string | [string, string] +>multiRobotAInfo : (string | [string, string])[] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(multiRobotAInfo); +>console.log(multiRobotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>multiRobotAInfo : (string | [string, string])[] +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.ts new file mode 100644 index 00000000000..597f40afe86 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPattern2.ts @@ -0,0 +1,99 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +let i: number; + +for ([, nameA] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for ([numberB] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} +for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(multiRobotAInfo); +} \ No newline at end of file From 67d28777185a664e1a76e738d14bccd0abae5533 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 17:13:58 -0800 Subject: [PATCH 041/164] Test case for "For" that initializes vars using object literal binding pattern --- ...onDestructuringForObjectBindingPattern2.js | 201 ++ ...structuringForObjectBindingPattern2.js.map | 2 + ...ringForObjectBindingPattern2.sourcemap.txt | 3073 +++++++++++++++++ ...tructuringForObjectBindingPattern2.symbols | 490 +++ ...estructuringForObjectBindingPattern2.types | 774 +++++ ...onDestructuringForObjectBindingPattern2.ts | 111 + 6 files changed, 4651 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js new file mode 100644 index 00000000000..f7073765d04 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js @@ -0,0 +1,201 @@ +//// [sourceMapValidationDestructuringForObjectBindingPattern2.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({ name: nameA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + + +for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name, skill } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name, skills: { primary, secondary } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +//// [sourceMapValidationDestructuringForObjectBindingPattern2.js] +var robot = { name: "mower", skill: "mowing" }; +var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} +var nameA, primaryA, secondaryA, i, skillA; +var name, primary, secondary, skill; +for ((nameA = robot.name, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_a = getRobot(), nameA = _a.name, _a), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_b = { name: "trimmer", skill: "trimming" }, nameA = _b.name, _b), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_c = multiRobot.skills, primaryA = _c.primary, secondaryA = _c.secondary, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_d = getMultiRobot(), _e = _d.skills, primaryA = _e.primary, secondaryA = _e.secondary, _d), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_f = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _g = _f.skills, primaryA = _g.primary, secondaryA = _g.secondary, _f), + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((name = robot.name, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_h = getRobot(), name = _h.name, _h), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_j = { name: "trimmer", skill: "trimming" }, name = _j.name, _j), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_k = multiRobot.skills, primary = _k.primary, secondary = _k.secondary, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_l = getMultiRobot(), _m = _l.skills, primary = _m.primary, secondary = _m.secondary, _l), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_o = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _p = _o.skills, primary = _p.primary, secondary = _p.secondary, _o), + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((nameA = robot.name, skillA = robot.skill, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_q = getRobot(), nameA = _q.name, skillA = _q.skill, _q), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_r = { name: "trimmer", skill: "trimming" }, nameA = _r.name, skillA = _r.skill, _r), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((nameA = multiRobot.name, _s = multiRobot.skills, primaryA = _s.primary, secondaryA = _s.secondary, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_t = getMultiRobot(), nameA = _t.name, _u = _t.skills, primaryA = _u.primary, secondaryA = _u.secondary, _t), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_v = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, nameA = _v.name, _w = _v.skills, primaryA = _w.primary, secondaryA = _w.secondary, _v), + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((name = robot.name, skill = robot.skill, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_x = getRobot(), name = _x.name, skill = _x.skill, _x), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_y = { name: "trimmer", skill: "trimming" }, name = _y.name, skill = _y.skill, _y), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((name = multiRobot.name, _z = multiRobot.skills, primary = _z.primary, secondary = _z.secondary, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_0 = getMultiRobot(), name = _0.name, _1 = _0.skills, primary = _1.primary, secondary = _1.secondary, _0), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_2 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, name = _2.name, _3 = _2.skills, primary = _3.primary, secondary = _3.secondary, _2), + i = 0; i < 1; i++) { + console.log(primaryA); +} +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3; +//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map new file mode 100644 index 00000000000..6c59f512b0e --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForObjectBindingPattern2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt new file mode 100644 index 00000000000..0659ec2fcee --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt @@ -0,0 +1,3073 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForObjectBindingPattern2.js +mapUrl: sourceMapValidationDestructuringForObjectBindingPattern2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForObjectBindingPattern2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.js +sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts +------------------------------------------------------------------- +>>>var robot = { name: "mower", skill: "mowing" }; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > + > +2 >let +3 > robot +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(17, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(17, 20) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 22) + SourceIndex(0) +6 >Emitted(1, 19) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 28) + SourceIndex(0) +8 >Emitted(1, 28) Source(17, 35) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 37) + SourceIndex(0) +10>Emitted(1, 35) Source(17, 42) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 44) + SourceIndex(0) +12>Emitted(1, 45) Source(17, 52) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 54) + SourceIndex(0) +14>Emitted(1, 48) Source(17, 55) + SourceIndex(0) +--- +>>>var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1-> +2 >^^^^ +3 > ^^^^^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >let +3 > multiRobot +4 > : MultiRobot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1->Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 15) Source(18, 15) + SourceIndex(0) +4 >Emitted(2, 18) Source(18, 30) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 32) + SourceIndex(0) +6 >Emitted(2, 24) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 38) + SourceIndex(0) +8 >Emitted(2, 33) Source(18, 45) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 47) + SourceIndex(0) +10>Emitted(2, 41) Source(18, 53) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 55) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 57) + SourceIndex(0) +13>Emitted(2, 52) Source(18, 64) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 66) + SourceIndex(0) +15>Emitted(2, 62) Source(18, 74) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 76) + SourceIndex(0) +17>Emitted(2, 73) Source(18, 85) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 87) + SourceIndex(0) +19>Emitted(2, 81) Source(18, 93) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 95) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 97) + SourceIndex(0) +22>Emitted(2, 86) Source(18, 98) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(3, 1) Source(19, 1) + SourceIndex(0) +--- +>>> return robot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robot +5 > ; +1->Emitted(4, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(4, 11) Source(20, 11) + SourceIndex(0) +3 >Emitted(4, 12) Source(20, 12) + SourceIndex(0) +4 >Emitted(4, 17) Source(20, 17) + SourceIndex(0) +5 >Emitted(4, 18) Source(20, 18) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(21, 2) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +1->Emitted(6, 1) Source(22, 1) + SourceIndex(0) +--- +>>> return multiRobot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobot +5 > ; +1->Emitted(7, 5) Source(23, 5) + SourceIndex(0) +2 >Emitted(7, 11) Source(23, 11) + SourceIndex(0) +3 >Emitted(7, 12) Source(23, 12) + SourceIndex(0) +4 >Emitted(7, 22) Source(23, 22) + SourceIndex(0) +5 >Emitted(7, 23) Source(23, 23) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(8, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(8, 2) Source(24, 2) + SourceIndex(0) +--- +>>>var nameA, primaryA, secondaryA, i, skillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^ +11> ^^^^^^ +12> ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primaryA: string +6 > , +7 > secondaryA: string +8 > , +9 > i: number +10> , +11> skillA: string +12> ; +1->Emitted(9, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(9, 10) Source(26, 18) + SourceIndex(0) +4 >Emitted(9, 12) Source(26, 20) + SourceIndex(0) +5 >Emitted(9, 20) Source(26, 36) + SourceIndex(0) +6 >Emitted(9, 22) Source(26, 38) + SourceIndex(0) +7 >Emitted(9, 32) Source(26, 56) + SourceIndex(0) +8 >Emitted(9, 34) Source(26, 58) + SourceIndex(0) +9 >Emitted(9, 35) Source(26, 67) + SourceIndex(0) +10>Emitted(9, 37) Source(26, 69) + SourceIndex(0) +11>Emitted(9, 43) Source(26, 83) + SourceIndex(0) +12>Emitted(9, 44) Source(26, 84) + SourceIndex(0) +--- +>>>var name, primary, secondary, skill; +1 > +2 >^^^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^ +11> ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > name: string +4 > , +5 > primary: string +6 > , +7 > secondary: string +8 > , +9 > skill: string +10> ; +1 >Emitted(10, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(10, 9) Source(27, 17) + SourceIndex(0) +4 >Emitted(10, 11) Source(27, 19) + SourceIndex(0) +5 >Emitted(10, 18) Source(27, 34) + SourceIndex(0) +6 >Emitted(10, 20) Source(27, 36) + SourceIndex(0) +7 >Emitted(10, 29) Source(27, 53) + SourceIndex(0) +8 >Emitted(10, 31) Source(27, 55) + SourceIndex(0) +9 >Emitted(10, 36) Source(27, 68) + SourceIndex(0) +10>Emitted(10, 37) Source(27, 69) + SourceIndex(0) +--- +>>>for ((nameA = robot.name, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > { +6 > name: nameA +7 > } = +8 > robot +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(11, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(11, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(11, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(11, 6) Source(29, 6) + SourceIndex(0) +5 >Emitted(11, 7) Source(29, 8) + SourceIndex(0) +6 >Emitted(11, 25) Source(29, 19) + SourceIndex(0) +7 >Emitted(11, 27) Source(29, 24) + SourceIndex(0) +8 >Emitted(11, 32) Source(29, 29) + SourceIndex(0) +9 >Emitted(11, 33) Source(29, 29) + SourceIndex(0) +10>Emitted(11, 35) Source(29, 31) + SourceIndex(0) +11>Emitted(11, 36) Source(29, 32) + SourceIndex(0) +12>Emitted(11, 39) Source(29, 35) + SourceIndex(0) +13>Emitted(11, 40) Source(29, 36) + SourceIndex(0) +14>Emitted(11, 42) Source(29, 38) + SourceIndex(0) +15>Emitted(11, 43) Source(29, 39) + SourceIndex(0) +16>Emitted(11, 46) Source(29, 42) + SourceIndex(0) +17>Emitted(11, 47) Source(29, 43) + SourceIndex(0) +18>Emitted(11, 49) Source(29, 45) + SourceIndex(0) +19>Emitted(11, 50) Source(29, 46) + SourceIndex(0) +20>Emitted(11, 52) Source(29, 48) + SourceIndex(0) +21>Emitted(11, 54) Source(29, 50) + SourceIndex(0) +22>Emitted(11, 55) Source(29, 51) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(12, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(12, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(12, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(12, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(31, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for ((_a = getRobot(), nameA = _a.name, _a), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name: nameA } = getRobot() +7 > +8 > name: nameA +9 > } = getRobot() +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(14, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(14, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(14, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(14, 6) Source(32, 6) + SourceIndex(0) +5 >Emitted(14, 7) Source(32, 6) + SourceIndex(0) +6 >Emitted(14, 22) Source(32, 34) + SourceIndex(0) +7 >Emitted(14, 24) Source(32, 8) + SourceIndex(0) +8 >Emitted(14, 39) Source(32, 19) + SourceIndex(0) +9 >Emitted(14, 44) Source(32, 34) + SourceIndex(0) +10>Emitted(14, 46) Source(32, 36) + SourceIndex(0) +11>Emitted(14, 47) Source(32, 37) + SourceIndex(0) +12>Emitted(14, 50) Source(32, 40) + SourceIndex(0) +13>Emitted(14, 51) Source(32, 41) + SourceIndex(0) +14>Emitted(14, 53) Source(32, 43) + SourceIndex(0) +15>Emitted(14, 54) Source(32, 44) + SourceIndex(0) +16>Emitted(14, 57) Source(32, 47) + SourceIndex(0) +17>Emitted(14, 58) Source(32, 48) + SourceIndex(0) +18>Emitted(14, 60) Source(32, 50) + SourceIndex(0) +19>Emitted(14, 61) Source(32, 51) + SourceIndex(0) +20>Emitted(14, 63) Source(32, 53) + SourceIndex(0) +21>Emitted(14, 65) Source(32, 55) + SourceIndex(0) +22>Emitted(14, 66) Source(32, 56) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(15, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(15, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(15, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(15, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(15, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(15, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(15, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(15, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(16, 1) Source(34, 1) + SourceIndex(0) +2 >Emitted(16, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for ((_b = { name: "trimmer", skill: "trimming" }, nameA = _b.name, _b), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name: nameA } = { name: "trimmer", skill: "trimming" } +7 > +8 > name: nameA +9 > } = { name: "trimmer", skill: "trimming" } +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(17, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(17, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(17, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(17, 6) Source(35, 6) + SourceIndex(0) +5 >Emitted(17, 7) Source(35, 6) + SourceIndex(0) +6 >Emitted(17, 50) Source(35, 69) + SourceIndex(0) +7 >Emitted(17, 52) Source(35, 8) + SourceIndex(0) +8 >Emitted(17, 67) Source(35, 19) + SourceIndex(0) +9 >Emitted(17, 72) Source(35, 69) + SourceIndex(0) +10>Emitted(17, 74) Source(35, 71) + SourceIndex(0) +11>Emitted(17, 75) Source(35, 72) + SourceIndex(0) +12>Emitted(17, 78) Source(35, 75) + SourceIndex(0) +13>Emitted(17, 79) Source(35, 76) + SourceIndex(0) +14>Emitted(17, 81) Source(35, 78) + SourceIndex(0) +15>Emitted(17, 82) Source(35, 79) + SourceIndex(0) +16>Emitted(17, 85) Source(35, 82) + SourceIndex(0) +17>Emitted(17, 86) Source(35, 83) + SourceIndex(0) +18>Emitted(17, 88) Source(35, 85) + SourceIndex(0) +19>Emitted(17, 89) Source(35, 86) + SourceIndex(0) +20>Emitted(17, 91) Source(35, 88) + SourceIndex(0) +21>Emitted(17, 93) Source(35, 90) + SourceIndex(0) +22>Emitted(17, 94) Source(35, 91) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(18, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(18, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(18, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(18, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(18, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(18, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(18, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(18, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(19, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(19, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for ((_c = multiRobot.skills, primaryA = _c.primary, secondaryA = _c.secondary, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { +6 > skills +7 > : { +8 > primary: primaryA +9 > , +10> secondary: secondaryA +11> } } = +12> multiRobot +13> +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(20, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(20, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(20, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(20, 6) Source(38, 6) + SourceIndex(0) +5 >Emitted(20, 7) Source(38, 8) + SourceIndex(0) +6 >Emitted(20, 29) Source(38, 14) + SourceIndex(0) +7 >Emitted(20, 31) Source(38, 18) + SourceIndex(0) +8 >Emitted(20, 52) Source(38, 35) + SourceIndex(0) +9 >Emitted(20, 54) Source(38, 37) + SourceIndex(0) +10>Emitted(20, 79) Source(38, 58) + SourceIndex(0) +11>Emitted(20, 81) Source(38, 65) + SourceIndex(0) +12>Emitted(20, 91) Source(38, 75) + SourceIndex(0) +13>Emitted(20, 92) Source(38, 75) + SourceIndex(0) +14>Emitted(20, 94) Source(38, 77) + SourceIndex(0) +15>Emitted(20, 95) Source(38, 78) + SourceIndex(0) +16>Emitted(20, 98) Source(38, 81) + SourceIndex(0) +17>Emitted(20, 99) Source(38, 82) + SourceIndex(0) +18>Emitted(20, 101) Source(38, 84) + SourceIndex(0) +19>Emitted(20, 102) Source(38, 85) + SourceIndex(0) +20>Emitted(20, 105) Source(38, 88) + SourceIndex(0) +21>Emitted(20, 106) Source(38, 89) + SourceIndex(0) +22>Emitted(20, 108) Source(38, 91) + SourceIndex(0) +23>Emitted(20, 109) Source(38, 92) + SourceIndex(0) +24>Emitted(20, 111) Source(38, 94) + SourceIndex(0) +25>Emitted(20, 113) Source(38, 96) + SourceIndex(0) +26>Emitted(20, 114) Source(38, 97) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(21, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(21, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(21, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(21, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(21, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(21, 25) Source(39, 25) + SourceIndex(0) +7 >Emitted(21, 26) Source(39, 26) + SourceIndex(0) +8 >Emitted(21, 27) Source(39, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(22, 1) Source(40, 1) + SourceIndex(0) +2 >Emitted(22, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for ((_d = getMultiRobot(), _e = _d.skills, primaryA = _e.primary, secondaryA = _e.secondary, _d), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() +7 > +8 > skills +9 > : { +10> primary: primaryA +11> , +12> secondary: secondaryA +13> } } = getMultiRobot() +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(23, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(23, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(23, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(23, 6) Source(41, 6) + SourceIndex(0) +5 >Emitted(23, 7) Source(41, 6) + SourceIndex(0) +6 >Emitted(23, 27) Source(41, 80) + SourceIndex(0) +7 >Emitted(23, 29) Source(41, 8) + SourceIndex(0) +8 >Emitted(23, 43) Source(41, 14) + SourceIndex(0) +9 >Emitted(23, 45) Source(41, 18) + SourceIndex(0) +10>Emitted(23, 66) Source(41, 35) + SourceIndex(0) +11>Emitted(23, 68) Source(41, 37) + SourceIndex(0) +12>Emitted(23, 93) Source(41, 58) + SourceIndex(0) +13>Emitted(23, 98) Source(41, 80) + SourceIndex(0) +14>Emitted(23, 100) Source(41, 82) + SourceIndex(0) +15>Emitted(23, 101) Source(41, 83) + SourceIndex(0) +16>Emitted(23, 104) Source(41, 86) + SourceIndex(0) +17>Emitted(23, 105) Source(41, 87) + SourceIndex(0) +18>Emitted(23, 107) Source(41, 89) + SourceIndex(0) +19>Emitted(23, 108) Source(41, 90) + SourceIndex(0) +20>Emitted(23, 111) Source(41, 93) + SourceIndex(0) +21>Emitted(23, 112) Source(41, 94) + SourceIndex(0) +22>Emitted(23, 114) Source(41, 96) + SourceIndex(0) +23>Emitted(23, 115) Source(41, 97) + SourceIndex(0) +24>Emitted(23, 117) Source(41, 99) + SourceIndex(0) +25>Emitted(23, 119) Source(41, 101) + SourceIndex(0) +26>Emitted(23, 120) Source(41, 102) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(24, 5) Source(42, 5) + SourceIndex(0) +2 >Emitted(24, 12) Source(42, 12) + SourceIndex(0) +3 >Emitted(24, 13) Source(42, 13) + SourceIndex(0) +4 >Emitted(24, 16) Source(42, 16) + SourceIndex(0) +5 >Emitted(24, 17) Source(42, 17) + SourceIndex(0) +6 >Emitted(24, 25) Source(42, 25) + SourceIndex(0) +7 >Emitted(24, 26) Source(42, 26) + SourceIndex(0) +8 >Emitted(24, 27) Source(42, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(25, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(25, 2) Source(43, 2) + SourceIndex(0) +--- +>>>for ((_f = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _g = _f.skills, primaryA = _g.primary, secondaryA = _g.secondary, _f), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { skills: { primary: primaryA, secondary: secondaryA } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > skills +9 > : { +10> primary: primaryA +11> , +12> secondary: secondaryA +13> } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(26, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(26, 4) Source(44, 4) + SourceIndex(0) +3 >Emitted(26, 5) Source(44, 5) + SourceIndex(0) +4 >Emitted(26, 6) Source(44, 6) + SourceIndex(0) +5 >Emitted(26, 7) Source(44, 6) + SourceIndex(0) +6 >Emitted(26, 85) Source(45, 90) + SourceIndex(0) +7 >Emitted(26, 87) Source(44, 8) + SourceIndex(0) +8 >Emitted(26, 101) Source(44, 14) + SourceIndex(0) +9 >Emitted(26, 103) Source(44, 18) + SourceIndex(0) +10>Emitted(26, 124) Source(44, 35) + SourceIndex(0) +11>Emitted(26, 126) Source(44, 37) + SourceIndex(0) +12>Emitted(26, 151) Source(44, 58) + SourceIndex(0) +13>Emitted(26, 156) Source(45, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(27, 5) Source(46, 5) + SourceIndex(0) +2 >Emitted(27, 6) Source(46, 6) + SourceIndex(0) +3 >Emitted(27, 9) Source(46, 9) + SourceIndex(0) +4 >Emitted(27, 10) Source(46, 10) + SourceIndex(0) +5 >Emitted(27, 12) Source(46, 12) + SourceIndex(0) +6 >Emitted(27, 13) Source(46, 13) + SourceIndex(0) +7 >Emitted(27, 16) Source(46, 16) + SourceIndex(0) +8 >Emitted(27, 17) Source(46, 17) + SourceIndex(0) +9 >Emitted(27, 19) Source(46, 19) + SourceIndex(0) +10>Emitted(27, 20) Source(46, 20) + SourceIndex(0) +11>Emitted(27, 22) Source(46, 22) + SourceIndex(0) +12>Emitted(27, 24) Source(46, 24) + SourceIndex(0) +13>Emitted(27, 25) Source(46, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(28, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(28, 25) Source(47, 25) + SourceIndex(0) +7 >Emitted(28, 26) Source(47, 26) + SourceIndex(0) +8 >Emitted(28, 27) Source(47, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(29, 1) Source(48, 1) + SourceIndex(0) +2 >Emitted(29, 2) Source(48, 2) + SourceIndex(0) +--- +>>>for ((name = robot.name, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { +6 > name +7 > } = +8 > robot +9 > +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(30, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(49, 6) + SourceIndex(0) +5 >Emitted(30, 7) Source(49, 8) + SourceIndex(0) +6 >Emitted(30, 24) Source(49, 12) + SourceIndex(0) +7 >Emitted(30, 26) Source(49, 17) + SourceIndex(0) +8 >Emitted(30, 31) Source(49, 22) + SourceIndex(0) +9 >Emitted(30, 32) Source(49, 22) + SourceIndex(0) +10>Emitted(30, 34) Source(49, 24) + SourceIndex(0) +11>Emitted(30, 35) Source(49, 25) + SourceIndex(0) +12>Emitted(30, 38) Source(49, 28) + SourceIndex(0) +13>Emitted(30, 39) Source(49, 29) + SourceIndex(0) +14>Emitted(30, 41) Source(49, 31) + SourceIndex(0) +15>Emitted(30, 42) Source(49, 32) + SourceIndex(0) +16>Emitted(30, 45) Source(49, 35) + SourceIndex(0) +17>Emitted(30, 46) Source(49, 36) + SourceIndex(0) +18>Emitted(30, 48) Source(49, 38) + SourceIndex(0) +19>Emitted(30, 49) Source(49, 39) + SourceIndex(0) +20>Emitted(30, 51) Source(49, 41) + SourceIndex(0) +21>Emitted(30, 53) Source(49, 43) + SourceIndex(0) +22>Emitted(30, 54) Source(49, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(31, 22) Source(50, 22) + SourceIndex(0) +7 >Emitted(31, 23) Source(50, 23) + SourceIndex(0) +8 >Emitted(31, 24) Source(50, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for ((_h = getRobot(), name = _h.name, _h), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name } = getRobot() +7 > +8 > name +9 > } = getRobot() +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(33, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(52, 6) + SourceIndex(0) +5 >Emitted(33, 7) Source(52, 6) + SourceIndex(0) +6 >Emitted(33, 22) Source(52, 27) + SourceIndex(0) +7 >Emitted(33, 24) Source(52, 8) + SourceIndex(0) +8 >Emitted(33, 38) Source(52, 12) + SourceIndex(0) +9 >Emitted(33, 43) Source(52, 27) + SourceIndex(0) +10>Emitted(33, 45) Source(52, 29) + SourceIndex(0) +11>Emitted(33, 46) Source(52, 30) + SourceIndex(0) +12>Emitted(33, 49) Source(52, 33) + SourceIndex(0) +13>Emitted(33, 50) Source(52, 34) + SourceIndex(0) +14>Emitted(33, 52) Source(52, 36) + SourceIndex(0) +15>Emitted(33, 53) Source(52, 37) + SourceIndex(0) +16>Emitted(33, 56) Source(52, 40) + SourceIndex(0) +17>Emitted(33, 57) Source(52, 41) + SourceIndex(0) +18>Emitted(33, 59) Source(52, 43) + SourceIndex(0) +19>Emitted(33, 60) Source(52, 44) + SourceIndex(0) +20>Emitted(33, 62) Source(52, 46) + SourceIndex(0) +21>Emitted(33, 64) Source(52, 48) + SourceIndex(0) +22>Emitted(33, 65) Source(52, 49) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(34, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(34, 22) Source(53, 22) + SourceIndex(0) +7 >Emitted(34, 23) Source(53, 23) + SourceIndex(0) +8 >Emitted(34, 24) Source(53, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for ((_j = { name: "trimmer", skill: "trimming" }, name = _j.name, _j), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name } = { name: "trimmer", skill: "trimming" } +7 > +8 > name +9 > } = { name: "trimmer", skill: "trimming" } +10> , +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(36, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(36, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(36, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(36, 6) Source(55, 6) + SourceIndex(0) +5 >Emitted(36, 7) Source(55, 6) + SourceIndex(0) +6 >Emitted(36, 50) Source(55, 62) + SourceIndex(0) +7 >Emitted(36, 52) Source(55, 8) + SourceIndex(0) +8 >Emitted(36, 66) Source(55, 12) + SourceIndex(0) +9 >Emitted(36, 71) Source(55, 62) + SourceIndex(0) +10>Emitted(36, 73) Source(55, 64) + SourceIndex(0) +11>Emitted(36, 74) Source(55, 65) + SourceIndex(0) +12>Emitted(36, 77) Source(55, 68) + SourceIndex(0) +13>Emitted(36, 78) Source(55, 69) + SourceIndex(0) +14>Emitted(36, 80) Source(55, 71) + SourceIndex(0) +15>Emitted(36, 81) Source(55, 72) + SourceIndex(0) +16>Emitted(36, 84) Source(55, 75) + SourceIndex(0) +17>Emitted(36, 85) Source(55, 76) + SourceIndex(0) +18>Emitted(36, 87) Source(55, 78) + SourceIndex(0) +19>Emitted(36, 88) Source(55, 79) + SourceIndex(0) +20>Emitted(36, 90) Source(55, 81) + SourceIndex(0) +21>Emitted(36, 92) Source(55, 83) + SourceIndex(0) +22>Emitted(36, 93) Source(55, 84) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(37, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(37, 22) Source(56, 22) + SourceIndex(0) +7 >Emitted(37, 23) Source(56, 23) + SourceIndex(0) +8 >Emitted(37, 24) Source(56, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for ((_k = multiRobot.skills, primary = _k.primary, secondary = _k.secondary, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { +6 > skills +7 > : { +8 > primary +9 > , +10> secondary +11> } } = +12> multiRobot +13> +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(39, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(58, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(58, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(58, 6) + SourceIndex(0) +5 >Emitted(39, 7) Source(58, 8) + SourceIndex(0) +6 >Emitted(39, 29) Source(58, 14) + SourceIndex(0) +7 >Emitted(39, 31) Source(58, 18) + SourceIndex(0) +8 >Emitted(39, 51) Source(58, 25) + SourceIndex(0) +9 >Emitted(39, 53) Source(58, 27) + SourceIndex(0) +10>Emitted(39, 77) Source(58, 36) + SourceIndex(0) +11>Emitted(39, 79) Source(58, 43) + SourceIndex(0) +12>Emitted(39, 89) Source(58, 53) + SourceIndex(0) +13>Emitted(39, 90) Source(58, 53) + SourceIndex(0) +14>Emitted(39, 92) Source(58, 55) + SourceIndex(0) +15>Emitted(39, 93) Source(58, 56) + SourceIndex(0) +16>Emitted(39, 96) Source(58, 59) + SourceIndex(0) +17>Emitted(39, 97) Source(58, 60) + SourceIndex(0) +18>Emitted(39, 99) Source(58, 62) + SourceIndex(0) +19>Emitted(39, 100) Source(58, 63) + SourceIndex(0) +20>Emitted(39, 103) Source(58, 66) + SourceIndex(0) +21>Emitted(39, 104) Source(58, 67) + SourceIndex(0) +22>Emitted(39, 106) Source(58, 69) + SourceIndex(0) +23>Emitted(39, 107) Source(58, 70) + SourceIndex(0) +24>Emitted(39, 109) Source(58, 72) + SourceIndex(0) +25>Emitted(39, 111) Source(58, 74) + SourceIndex(0) +26>Emitted(39, 112) Source(58, 75) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(40, 5) Source(59, 5) + SourceIndex(0) +2 >Emitted(40, 12) Source(59, 12) + SourceIndex(0) +3 >Emitted(40, 13) Source(59, 13) + SourceIndex(0) +4 >Emitted(40, 16) Source(59, 16) + SourceIndex(0) +5 >Emitted(40, 17) Source(59, 17) + SourceIndex(0) +6 >Emitted(40, 25) Source(59, 25) + SourceIndex(0) +7 >Emitted(40, 26) Source(59, 26) + SourceIndex(0) +8 >Emitted(40, 27) Source(59, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(60, 2) + SourceIndex(0) +--- +>>>for ((_l = getMultiRobot(), _m = _l.skills, primary = _m.primary, secondary = _m.secondary, _l), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { skills: { primary, secondary } } = getMultiRobot() +7 > +8 > skills +9 > : { +10> primary +11> , +12> secondary +13> } } = getMultiRobot() +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(42, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(42, 4) Source(61, 4) + SourceIndex(0) +3 >Emitted(42, 5) Source(61, 5) + SourceIndex(0) +4 >Emitted(42, 6) Source(61, 6) + SourceIndex(0) +5 >Emitted(42, 7) Source(61, 6) + SourceIndex(0) +6 >Emitted(42, 27) Source(61, 58) + SourceIndex(0) +7 >Emitted(42, 29) Source(61, 8) + SourceIndex(0) +8 >Emitted(42, 43) Source(61, 14) + SourceIndex(0) +9 >Emitted(42, 45) Source(61, 18) + SourceIndex(0) +10>Emitted(42, 65) Source(61, 25) + SourceIndex(0) +11>Emitted(42, 67) Source(61, 27) + SourceIndex(0) +12>Emitted(42, 91) Source(61, 36) + SourceIndex(0) +13>Emitted(42, 96) Source(61, 58) + SourceIndex(0) +14>Emitted(42, 98) Source(61, 60) + SourceIndex(0) +15>Emitted(42, 99) Source(61, 61) + SourceIndex(0) +16>Emitted(42, 102) Source(61, 64) + SourceIndex(0) +17>Emitted(42, 103) Source(61, 65) + SourceIndex(0) +18>Emitted(42, 105) Source(61, 67) + SourceIndex(0) +19>Emitted(42, 106) Source(61, 68) + SourceIndex(0) +20>Emitted(42, 109) Source(61, 71) + SourceIndex(0) +21>Emitted(42, 110) Source(61, 72) + SourceIndex(0) +22>Emitted(42, 112) Source(61, 74) + SourceIndex(0) +23>Emitted(42, 113) Source(61, 75) + SourceIndex(0) +24>Emitted(42, 115) Source(61, 77) + SourceIndex(0) +25>Emitted(42, 117) Source(61, 79) + SourceIndex(0) +26>Emitted(42, 118) Source(61, 80) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(43, 5) Source(62, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(62, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(62, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(62, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(62, 17) + SourceIndex(0) +6 >Emitted(43, 25) Source(62, 25) + SourceIndex(0) +7 >Emitted(43, 26) Source(62, 26) + SourceIndex(0) +8 >Emitted(43, 27) Source(62, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(44, 1) Source(63, 1) + SourceIndex(0) +2 >Emitted(44, 2) Source(63, 2) + SourceIndex(0) +--- +>>>for ((_o = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _p = _o.skills, primary = _p.primary, secondary = _p.secondary, _o), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { skills: { primary, secondary } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > skills +9 > : { +10> primary +11> , +12> secondary +13> } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(45, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(64, 6) + SourceIndex(0) +5 >Emitted(45, 7) Source(64, 6) + SourceIndex(0) +6 >Emitted(45, 85) Source(65, 90) + SourceIndex(0) +7 >Emitted(45, 87) Source(64, 8) + SourceIndex(0) +8 >Emitted(45, 101) Source(64, 14) + SourceIndex(0) +9 >Emitted(45, 103) Source(64, 18) + SourceIndex(0) +10>Emitted(45, 123) Source(64, 25) + SourceIndex(0) +11>Emitted(45, 125) Source(64, 27) + SourceIndex(0) +12>Emitted(45, 149) Source(64, 36) + SourceIndex(0) +13>Emitted(45, 154) Source(65, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(46, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(46, 6) Source(66, 6) + SourceIndex(0) +3 >Emitted(46, 9) Source(66, 9) + SourceIndex(0) +4 >Emitted(46, 10) Source(66, 10) + SourceIndex(0) +5 >Emitted(46, 12) Source(66, 12) + SourceIndex(0) +6 >Emitted(46, 13) Source(66, 13) + SourceIndex(0) +7 >Emitted(46, 16) Source(66, 16) + SourceIndex(0) +8 >Emitted(46, 17) Source(66, 17) + SourceIndex(0) +9 >Emitted(46, 19) Source(66, 19) + SourceIndex(0) +10>Emitted(46, 20) Source(66, 20) + SourceIndex(0) +11>Emitted(46, 22) Source(66, 22) + SourceIndex(0) +12>Emitted(46, 24) Source(66, 24) + SourceIndex(0) +13>Emitted(46, 25) Source(66, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(47, 5) Source(67, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(67, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(67, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(67, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(67, 17) + SourceIndex(0) +6 >Emitted(47, 25) Source(67, 25) + SourceIndex(0) +7 >Emitted(47, 26) Source(67, 26) + SourceIndex(0) +8 >Emitted(47, 27) Source(67, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(48, 1) Source(68, 1) + SourceIndex(0) +2 >Emitted(48, 2) Source(68, 2) + SourceIndex(0) +--- +>>>for ((nameA = robot.name, skillA = robot.skill, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > + > +2 >for +3 > +4 > ( +5 > { +6 > name: nameA +7 > , +8 > skill: skillA +9 > } = +10> robot +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(49, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(71, 6) + SourceIndex(0) +5 >Emitted(49, 7) Source(71, 8) + SourceIndex(0) +6 >Emitted(49, 25) Source(71, 19) + SourceIndex(0) +7 >Emitted(49, 27) Source(71, 21) + SourceIndex(0) +8 >Emitted(49, 47) Source(71, 34) + SourceIndex(0) +9 >Emitted(49, 49) Source(71, 39) + SourceIndex(0) +10>Emitted(49, 54) Source(71, 44) + SourceIndex(0) +11>Emitted(49, 55) Source(71, 44) + SourceIndex(0) +12>Emitted(49, 57) Source(71, 46) + SourceIndex(0) +13>Emitted(49, 58) Source(71, 47) + SourceIndex(0) +14>Emitted(49, 61) Source(71, 50) + SourceIndex(0) +15>Emitted(49, 62) Source(71, 51) + SourceIndex(0) +16>Emitted(49, 64) Source(71, 53) + SourceIndex(0) +17>Emitted(49, 65) Source(71, 54) + SourceIndex(0) +18>Emitted(49, 68) Source(71, 57) + SourceIndex(0) +19>Emitted(49, 69) Source(71, 58) + SourceIndex(0) +20>Emitted(49, 71) Source(71, 60) + SourceIndex(0) +21>Emitted(49, 72) Source(71, 61) + SourceIndex(0) +22>Emitted(49, 74) Source(71, 63) + SourceIndex(0) +23>Emitted(49, 76) Source(71, 65) + SourceIndex(0) +24>Emitted(49, 77) Source(71, 66) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(50, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(50, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(50, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(50, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(50, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(50, 22) Source(72, 22) + SourceIndex(0) +7 >Emitted(50, 23) Source(72, 23) + SourceIndex(0) +8 >Emitted(50, 24) Source(72, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(51, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(51, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for ((_q = getRobot(), nameA = _q.name, skillA = _q.skill, _q), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name: nameA, skill: skillA } = getRobot() +7 > +8 > name: nameA +9 > , +10> skill: skillA +11> } = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(52, 1) Source(74, 1) + SourceIndex(0) +2 >Emitted(52, 4) Source(74, 4) + SourceIndex(0) +3 >Emitted(52, 5) Source(74, 5) + SourceIndex(0) +4 >Emitted(52, 6) Source(74, 6) + SourceIndex(0) +5 >Emitted(52, 7) Source(74, 6) + SourceIndex(0) +6 >Emitted(52, 22) Source(74, 49) + SourceIndex(0) +7 >Emitted(52, 24) Source(74, 8) + SourceIndex(0) +8 >Emitted(52, 39) Source(74, 19) + SourceIndex(0) +9 >Emitted(52, 41) Source(74, 21) + SourceIndex(0) +10>Emitted(52, 58) Source(74, 34) + SourceIndex(0) +11>Emitted(52, 63) Source(74, 49) + SourceIndex(0) +12>Emitted(52, 65) Source(74, 51) + SourceIndex(0) +13>Emitted(52, 66) Source(74, 52) + SourceIndex(0) +14>Emitted(52, 69) Source(74, 55) + SourceIndex(0) +15>Emitted(52, 70) Source(74, 56) + SourceIndex(0) +16>Emitted(52, 72) Source(74, 58) + SourceIndex(0) +17>Emitted(52, 73) Source(74, 59) + SourceIndex(0) +18>Emitted(52, 76) Source(74, 62) + SourceIndex(0) +19>Emitted(52, 77) Source(74, 63) + SourceIndex(0) +20>Emitted(52, 79) Source(74, 65) + SourceIndex(0) +21>Emitted(52, 80) Source(74, 66) + SourceIndex(0) +22>Emitted(52, 82) Source(74, 68) + SourceIndex(0) +23>Emitted(52, 84) Source(74, 70) + SourceIndex(0) +24>Emitted(52, 85) Source(74, 71) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(53, 5) Source(75, 5) + SourceIndex(0) +2 >Emitted(53, 12) Source(75, 12) + SourceIndex(0) +3 >Emitted(53, 13) Source(75, 13) + SourceIndex(0) +4 >Emitted(53, 16) Source(75, 16) + SourceIndex(0) +5 >Emitted(53, 17) Source(75, 17) + SourceIndex(0) +6 >Emitted(53, 22) Source(75, 22) + SourceIndex(0) +7 >Emitted(53, 23) Source(75, 23) + SourceIndex(0) +8 >Emitted(53, 24) Source(75, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(54, 1) Source(76, 1) + SourceIndex(0) +2 >Emitted(54, 2) Source(76, 2) + SourceIndex(0) +--- +>>>for ((_r = { name: "trimmer", skill: "trimming" }, nameA = _r.name, skillA = _r.skill, _r), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } +7 > +8 > name: nameA +9 > , +10> skill: skillA +11> } = { name: "trimmer", skill: "trimming" } +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(55, 1) Source(77, 1) + SourceIndex(0) +2 >Emitted(55, 4) Source(77, 4) + SourceIndex(0) +3 >Emitted(55, 5) Source(77, 5) + SourceIndex(0) +4 >Emitted(55, 6) Source(77, 6) + SourceIndex(0) +5 >Emitted(55, 7) Source(77, 6) + SourceIndex(0) +6 >Emitted(55, 50) Source(77, 84) + SourceIndex(0) +7 >Emitted(55, 52) Source(77, 8) + SourceIndex(0) +8 >Emitted(55, 67) Source(77, 19) + SourceIndex(0) +9 >Emitted(55, 69) Source(77, 21) + SourceIndex(0) +10>Emitted(55, 86) Source(77, 34) + SourceIndex(0) +11>Emitted(55, 91) Source(77, 84) + SourceIndex(0) +12>Emitted(55, 93) Source(77, 86) + SourceIndex(0) +13>Emitted(55, 94) Source(77, 87) + SourceIndex(0) +14>Emitted(55, 97) Source(77, 90) + SourceIndex(0) +15>Emitted(55, 98) Source(77, 91) + SourceIndex(0) +16>Emitted(55, 100) Source(77, 93) + SourceIndex(0) +17>Emitted(55, 101) Source(77, 94) + SourceIndex(0) +18>Emitted(55, 104) Source(77, 97) + SourceIndex(0) +19>Emitted(55, 105) Source(77, 98) + SourceIndex(0) +20>Emitted(55, 107) Source(77, 100) + SourceIndex(0) +21>Emitted(55, 108) Source(77, 101) + SourceIndex(0) +22>Emitted(55, 110) Source(77, 103) + SourceIndex(0) +23>Emitted(55, 112) Source(77, 105) + SourceIndex(0) +24>Emitted(55, 113) Source(77, 106) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(56, 5) Source(78, 5) + SourceIndex(0) +2 >Emitted(56, 12) Source(78, 12) + SourceIndex(0) +3 >Emitted(56, 13) Source(78, 13) + SourceIndex(0) +4 >Emitted(56, 16) Source(78, 16) + SourceIndex(0) +5 >Emitted(56, 17) Source(78, 17) + SourceIndex(0) +6 >Emitted(56, 22) Source(78, 22) + SourceIndex(0) +7 >Emitted(56, 23) Source(78, 23) + SourceIndex(0) +8 >Emitted(56, 24) Source(78, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(57, 1) Source(79, 1) + SourceIndex(0) +2 >Emitted(57, 2) Source(79, 2) + SourceIndex(0) +--- +>>>for ((nameA = multiRobot.name, _s = multiRobot.skills, primaryA = _s.primary, secondaryA = _s.secondary, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { +6 > name: nameA +7 > , +8 > skills +9 > : { +10> primary: primaryA +11> , +12> secondary: secondaryA +13> } } = +14> multiRobot +15> +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(58, 1) Source(80, 1) + SourceIndex(0) +2 >Emitted(58, 4) Source(80, 4) + SourceIndex(0) +3 >Emitted(58, 5) Source(80, 5) + SourceIndex(0) +4 >Emitted(58, 6) Source(80, 6) + SourceIndex(0) +5 >Emitted(58, 7) Source(80, 8) + SourceIndex(0) +6 >Emitted(58, 30) Source(80, 19) + SourceIndex(0) +7 >Emitted(58, 32) Source(80, 21) + SourceIndex(0) +8 >Emitted(58, 54) Source(80, 27) + SourceIndex(0) +9 >Emitted(58, 56) Source(80, 31) + SourceIndex(0) +10>Emitted(58, 77) Source(80, 48) + SourceIndex(0) +11>Emitted(58, 79) Source(80, 50) + SourceIndex(0) +12>Emitted(58, 104) Source(80, 71) + SourceIndex(0) +13>Emitted(58, 106) Source(80, 78) + SourceIndex(0) +14>Emitted(58, 116) Source(80, 88) + SourceIndex(0) +15>Emitted(58, 117) Source(80, 88) + SourceIndex(0) +16>Emitted(58, 119) Source(80, 90) + SourceIndex(0) +17>Emitted(58, 120) Source(80, 91) + SourceIndex(0) +18>Emitted(58, 123) Source(80, 94) + SourceIndex(0) +19>Emitted(58, 124) Source(80, 95) + SourceIndex(0) +20>Emitted(58, 126) Source(80, 97) + SourceIndex(0) +21>Emitted(58, 127) Source(80, 98) + SourceIndex(0) +22>Emitted(58, 130) Source(80, 101) + SourceIndex(0) +23>Emitted(58, 131) Source(80, 102) + SourceIndex(0) +24>Emitted(58, 133) Source(80, 104) + SourceIndex(0) +25>Emitted(58, 134) Source(80, 105) + SourceIndex(0) +26>Emitted(58, 136) Source(80, 107) + SourceIndex(0) +27>Emitted(58, 138) Source(80, 109) + SourceIndex(0) +28>Emitted(58, 139) Source(80, 110) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(59, 5) Source(81, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(81, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(81, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(81, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(81, 17) + SourceIndex(0) +6 >Emitted(59, 25) Source(81, 25) + SourceIndex(0) +7 >Emitted(59, 26) Source(81, 26) + SourceIndex(0) +8 >Emitted(59, 27) Source(81, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(60, 1) Source(82, 1) + SourceIndex(0) +2 >Emitted(60, 2) Source(82, 2) + SourceIndex(0) +--- +>>>for ((_t = getMultiRobot(), nameA = _t.name, _u = _t.skills, primaryA = _u.primary, secondaryA = _u.secondary, _t), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() +7 > +8 > name: nameA +9 > , +10> skills +11> : { +12> primary: primaryA +13> , +14> secondary: secondaryA +15> } } = getMultiRobot() +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(61, 1) Source(83, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(83, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(83, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(83, 6) + SourceIndex(0) +5 >Emitted(61, 7) Source(83, 6) + SourceIndex(0) +6 >Emitted(61, 27) Source(83, 93) + SourceIndex(0) +7 >Emitted(61, 29) Source(83, 8) + SourceIndex(0) +8 >Emitted(61, 44) Source(83, 19) + SourceIndex(0) +9 >Emitted(61, 46) Source(83, 21) + SourceIndex(0) +10>Emitted(61, 60) Source(83, 27) + SourceIndex(0) +11>Emitted(61, 62) Source(83, 31) + SourceIndex(0) +12>Emitted(61, 83) Source(83, 48) + SourceIndex(0) +13>Emitted(61, 85) Source(83, 50) + SourceIndex(0) +14>Emitted(61, 110) Source(83, 71) + SourceIndex(0) +15>Emitted(61, 115) Source(83, 93) + SourceIndex(0) +16>Emitted(61, 117) Source(83, 95) + SourceIndex(0) +17>Emitted(61, 118) Source(83, 96) + SourceIndex(0) +18>Emitted(61, 121) Source(83, 99) + SourceIndex(0) +19>Emitted(61, 122) Source(83, 100) + SourceIndex(0) +20>Emitted(61, 124) Source(83, 102) + SourceIndex(0) +21>Emitted(61, 125) Source(83, 103) + SourceIndex(0) +22>Emitted(61, 128) Source(83, 106) + SourceIndex(0) +23>Emitted(61, 129) Source(83, 107) + SourceIndex(0) +24>Emitted(61, 131) Source(83, 109) + SourceIndex(0) +25>Emitted(61, 132) Source(83, 110) + SourceIndex(0) +26>Emitted(61, 134) Source(83, 112) + SourceIndex(0) +27>Emitted(61, 136) Source(83, 114) + SourceIndex(0) +28>Emitted(61, 137) Source(83, 115) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(62, 5) Source(84, 5) + SourceIndex(0) +2 >Emitted(62, 12) Source(84, 12) + SourceIndex(0) +3 >Emitted(62, 13) Source(84, 13) + SourceIndex(0) +4 >Emitted(62, 16) Source(84, 16) + SourceIndex(0) +5 >Emitted(62, 17) Source(84, 17) + SourceIndex(0) +6 >Emitted(62, 25) Source(84, 25) + SourceIndex(0) +7 >Emitted(62, 26) Source(84, 26) + SourceIndex(0) +8 >Emitted(62, 27) Source(84, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(63, 1) Source(85, 1) + SourceIndex(0) +2 >Emitted(63, 2) Source(85, 2) + SourceIndex(0) +--- +>>>for ((_v = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, nameA = _v.name, _w = _v.skills, primaryA = _w.primary, secondaryA = _w.secondary, _v), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > name: nameA +9 > , +10> skills +11> : { +12> primary: primaryA +13> , +14> secondary: secondaryA +15> } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(64, 1) Source(86, 1) + SourceIndex(0) +2 >Emitted(64, 4) Source(86, 4) + SourceIndex(0) +3 >Emitted(64, 5) Source(86, 5) + SourceIndex(0) +4 >Emitted(64, 6) Source(86, 6) + SourceIndex(0) +5 >Emitted(64, 7) Source(86, 6) + SourceIndex(0) +6 >Emitted(64, 85) Source(87, 90) + SourceIndex(0) +7 >Emitted(64, 87) Source(86, 8) + SourceIndex(0) +8 >Emitted(64, 102) Source(86, 19) + SourceIndex(0) +9 >Emitted(64, 104) Source(86, 21) + SourceIndex(0) +10>Emitted(64, 118) Source(86, 27) + SourceIndex(0) +11>Emitted(64, 120) Source(86, 31) + SourceIndex(0) +12>Emitted(64, 141) Source(86, 48) + SourceIndex(0) +13>Emitted(64, 143) Source(86, 50) + SourceIndex(0) +14>Emitted(64, 168) Source(86, 71) + SourceIndex(0) +15>Emitted(64, 173) Source(87, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(65, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(65, 6) Source(88, 6) + SourceIndex(0) +3 >Emitted(65, 9) Source(88, 9) + SourceIndex(0) +4 >Emitted(65, 10) Source(88, 10) + SourceIndex(0) +5 >Emitted(65, 12) Source(88, 12) + SourceIndex(0) +6 >Emitted(65, 13) Source(88, 13) + SourceIndex(0) +7 >Emitted(65, 16) Source(88, 16) + SourceIndex(0) +8 >Emitted(65, 17) Source(88, 17) + SourceIndex(0) +9 >Emitted(65, 19) Source(88, 19) + SourceIndex(0) +10>Emitted(65, 20) Source(88, 20) + SourceIndex(0) +11>Emitted(65, 22) Source(88, 22) + SourceIndex(0) +12>Emitted(65, 24) Source(88, 24) + SourceIndex(0) +13>Emitted(65, 25) Source(88, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(66, 5) Source(89, 5) + SourceIndex(0) +2 >Emitted(66, 12) Source(89, 12) + SourceIndex(0) +3 >Emitted(66, 13) Source(89, 13) + SourceIndex(0) +4 >Emitted(66, 16) Source(89, 16) + SourceIndex(0) +5 >Emitted(66, 17) Source(89, 17) + SourceIndex(0) +6 >Emitted(66, 25) Source(89, 25) + SourceIndex(0) +7 >Emitted(66, 26) Source(89, 26) + SourceIndex(0) +8 >Emitted(66, 27) Source(89, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(67, 1) Source(90, 1) + SourceIndex(0) +2 >Emitted(67, 2) Source(90, 2) + SourceIndex(0) +--- +>>>for ((name = robot.name, skill = robot.skill, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { +6 > name +7 > , +8 > skill +9 > } = +10> robot +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(68, 1) Source(91, 1) + SourceIndex(0) +2 >Emitted(68, 4) Source(91, 4) + SourceIndex(0) +3 >Emitted(68, 5) Source(91, 5) + SourceIndex(0) +4 >Emitted(68, 6) Source(91, 6) + SourceIndex(0) +5 >Emitted(68, 7) Source(91, 8) + SourceIndex(0) +6 >Emitted(68, 24) Source(91, 12) + SourceIndex(0) +7 >Emitted(68, 26) Source(91, 14) + SourceIndex(0) +8 >Emitted(68, 45) Source(91, 19) + SourceIndex(0) +9 >Emitted(68, 47) Source(91, 24) + SourceIndex(0) +10>Emitted(68, 52) Source(91, 29) + SourceIndex(0) +11>Emitted(68, 53) Source(91, 29) + SourceIndex(0) +12>Emitted(68, 55) Source(91, 31) + SourceIndex(0) +13>Emitted(68, 56) Source(91, 32) + SourceIndex(0) +14>Emitted(68, 59) Source(91, 35) + SourceIndex(0) +15>Emitted(68, 60) Source(91, 36) + SourceIndex(0) +16>Emitted(68, 62) Source(91, 38) + SourceIndex(0) +17>Emitted(68, 63) Source(91, 39) + SourceIndex(0) +18>Emitted(68, 66) Source(91, 42) + SourceIndex(0) +19>Emitted(68, 67) Source(91, 43) + SourceIndex(0) +20>Emitted(68, 69) Source(91, 45) + SourceIndex(0) +21>Emitted(68, 70) Source(91, 46) + SourceIndex(0) +22>Emitted(68, 72) Source(91, 48) + SourceIndex(0) +23>Emitted(68, 74) Source(91, 50) + SourceIndex(0) +24>Emitted(68, 75) Source(91, 51) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(69, 5) Source(92, 5) + SourceIndex(0) +2 >Emitted(69, 12) Source(92, 12) + SourceIndex(0) +3 >Emitted(69, 13) Source(92, 13) + SourceIndex(0) +4 >Emitted(69, 16) Source(92, 16) + SourceIndex(0) +5 >Emitted(69, 17) Source(92, 17) + SourceIndex(0) +6 >Emitted(69, 22) Source(92, 22) + SourceIndex(0) +7 >Emitted(69, 23) Source(92, 23) + SourceIndex(0) +8 >Emitted(69, 24) Source(92, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(70, 1) Source(93, 1) + SourceIndex(0) +2 >Emitted(70, 2) Source(93, 2) + SourceIndex(0) +--- +>>>for ((_x = getRobot(), name = _x.name, skill = _x.skill, _x), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name, skill } = getRobot() +7 > +8 > name +9 > , +10> skill +11> } = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(71, 1) Source(94, 1) + SourceIndex(0) +2 >Emitted(71, 4) Source(94, 4) + SourceIndex(0) +3 >Emitted(71, 5) Source(94, 5) + SourceIndex(0) +4 >Emitted(71, 6) Source(94, 6) + SourceIndex(0) +5 >Emitted(71, 7) Source(94, 6) + SourceIndex(0) +6 >Emitted(71, 22) Source(94, 34) + SourceIndex(0) +7 >Emitted(71, 24) Source(94, 8) + SourceIndex(0) +8 >Emitted(71, 38) Source(94, 12) + SourceIndex(0) +9 >Emitted(71, 40) Source(94, 14) + SourceIndex(0) +10>Emitted(71, 56) Source(94, 19) + SourceIndex(0) +11>Emitted(71, 61) Source(94, 34) + SourceIndex(0) +12>Emitted(71, 63) Source(94, 36) + SourceIndex(0) +13>Emitted(71, 64) Source(94, 37) + SourceIndex(0) +14>Emitted(71, 67) Source(94, 40) + SourceIndex(0) +15>Emitted(71, 68) Source(94, 41) + SourceIndex(0) +16>Emitted(71, 70) Source(94, 43) + SourceIndex(0) +17>Emitted(71, 71) Source(94, 44) + SourceIndex(0) +18>Emitted(71, 74) Source(94, 47) + SourceIndex(0) +19>Emitted(71, 75) Source(94, 48) + SourceIndex(0) +20>Emitted(71, 77) Source(94, 50) + SourceIndex(0) +21>Emitted(71, 78) Source(94, 51) + SourceIndex(0) +22>Emitted(71, 80) Source(94, 53) + SourceIndex(0) +23>Emitted(71, 82) Source(94, 55) + SourceIndex(0) +24>Emitted(71, 83) Source(94, 56) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(72, 5) Source(95, 5) + SourceIndex(0) +2 >Emitted(72, 12) Source(95, 12) + SourceIndex(0) +3 >Emitted(72, 13) Source(95, 13) + SourceIndex(0) +4 >Emitted(72, 16) Source(95, 16) + SourceIndex(0) +5 >Emitted(72, 17) Source(95, 17) + SourceIndex(0) +6 >Emitted(72, 22) Source(95, 22) + SourceIndex(0) +7 >Emitted(72, 23) Source(95, 23) + SourceIndex(0) +8 >Emitted(72, 24) Source(95, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(73, 1) Source(96, 1) + SourceIndex(0) +2 >Emitted(73, 2) Source(96, 2) + SourceIndex(0) +--- +>>>for ((_y = { name: "trimmer", skill: "trimming" }, name = _y.name, skill = _y.skill, _y), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name, skill } = { name: "trimmer", skill: "trimming" } +7 > +8 > name +9 > , +10> skill +11> } = { name: "trimmer", skill: "trimming" } +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(74, 1) Source(97, 1) + SourceIndex(0) +2 >Emitted(74, 4) Source(97, 4) + SourceIndex(0) +3 >Emitted(74, 5) Source(97, 5) + SourceIndex(0) +4 >Emitted(74, 6) Source(97, 6) + SourceIndex(0) +5 >Emitted(74, 7) Source(97, 6) + SourceIndex(0) +6 >Emitted(74, 50) Source(97, 69) + SourceIndex(0) +7 >Emitted(74, 52) Source(97, 8) + SourceIndex(0) +8 >Emitted(74, 66) Source(97, 12) + SourceIndex(0) +9 >Emitted(74, 68) Source(97, 14) + SourceIndex(0) +10>Emitted(74, 84) Source(97, 19) + SourceIndex(0) +11>Emitted(74, 89) Source(97, 69) + SourceIndex(0) +12>Emitted(74, 91) Source(97, 71) + SourceIndex(0) +13>Emitted(74, 92) Source(97, 72) + SourceIndex(0) +14>Emitted(74, 95) Source(97, 75) + SourceIndex(0) +15>Emitted(74, 96) Source(97, 76) + SourceIndex(0) +16>Emitted(74, 98) Source(97, 78) + SourceIndex(0) +17>Emitted(74, 99) Source(97, 79) + SourceIndex(0) +18>Emitted(74, 102) Source(97, 82) + SourceIndex(0) +19>Emitted(74, 103) Source(97, 83) + SourceIndex(0) +20>Emitted(74, 105) Source(97, 85) + SourceIndex(0) +21>Emitted(74, 106) Source(97, 86) + SourceIndex(0) +22>Emitted(74, 108) Source(97, 88) + SourceIndex(0) +23>Emitted(74, 110) Source(97, 90) + SourceIndex(0) +24>Emitted(74, 111) Source(97, 91) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(75, 5) Source(98, 5) + SourceIndex(0) +2 >Emitted(75, 12) Source(98, 12) + SourceIndex(0) +3 >Emitted(75, 13) Source(98, 13) + SourceIndex(0) +4 >Emitted(75, 16) Source(98, 16) + SourceIndex(0) +5 >Emitted(75, 17) Source(98, 17) + SourceIndex(0) +6 >Emitted(75, 22) Source(98, 22) + SourceIndex(0) +7 >Emitted(75, 23) Source(98, 23) + SourceIndex(0) +8 >Emitted(75, 24) Source(98, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(76, 1) Source(99, 1) + SourceIndex(0) +2 >Emitted(76, 2) Source(99, 2) + SourceIndex(0) +--- +>>>for ((name = multiRobot.name, _z = multiRobot.skills, primary = _z.primary, secondary = _z.secondary, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { +6 > name +7 > , +8 > skills +9 > : { +10> primary +11> , +12> secondary +13> } } = +14> multiRobot +15> +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(77, 1) Source(100, 1) + SourceIndex(0) +2 >Emitted(77, 4) Source(100, 4) + SourceIndex(0) +3 >Emitted(77, 5) Source(100, 5) + SourceIndex(0) +4 >Emitted(77, 6) Source(100, 6) + SourceIndex(0) +5 >Emitted(77, 7) Source(100, 8) + SourceIndex(0) +6 >Emitted(77, 29) Source(100, 12) + SourceIndex(0) +7 >Emitted(77, 31) Source(100, 14) + SourceIndex(0) +8 >Emitted(77, 53) Source(100, 20) + SourceIndex(0) +9 >Emitted(77, 55) Source(100, 24) + SourceIndex(0) +10>Emitted(77, 75) Source(100, 31) + SourceIndex(0) +11>Emitted(77, 77) Source(100, 33) + SourceIndex(0) +12>Emitted(77, 101) Source(100, 42) + SourceIndex(0) +13>Emitted(77, 103) Source(100, 49) + SourceIndex(0) +14>Emitted(77, 113) Source(100, 59) + SourceIndex(0) +15>Emitted(77, 114) Source(100, 59) + SourceIndex(0) +16>Emitted(77, 116) Source(100, 61) + SourceIndex(0) +17>Emitted(77, 117) Source(100, 62) + SourceIndex(0) +18>Emitted(77, 120) Source(100, 65) + SourceIndex(0) +19>Emitted(77, 121) Source(100, 66) + SourceIndex(0) +20>Emitted(77, 123) Source(100, 68) + SourceIndex(0) +21>Emitted(77, 124) Source(100, 69) + SourceIndex(0) +22>Emitted(77, 127) Source(100, 72) + SourceIndex(0) +23>Emitted(77, 128) Source(100, 73) + SourceIndex(0) +24>Emitted(77, 130) Source(100, 75) + SourceIndex(0) +25>Emitted(77, 131) Source(100, 76) + SourceIndex(0) +26>Emitted(77, 133) Source(100, 78) + SourceIndex(0) +27>Emitted(77, 135) Source(100, 80) + SourceIndex(0) +28>Emitted(77, 136) Source(100, 81) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(78, 5) Source(101, 5) + SourceIndex(0) +2 >Emitted(78, 12) Source(101, 12) + SourceIndex(0) +3 >Emitted(78, 13) Source(101, 13) + SourceIndex(0) +4 >Emitted(78, 16) Source(101, 16) + SourceIndex(0) +5 >Emitted(78, 17) Source(101, 17) + SourceIndex(0) +6 >Emitted(78, 25) Source(101, 25) + SourceIndex(0) +7 >Emitted(78, 26) Source(101, 26) + SourceIndex(0) +8 >Emitted(78, 27) Source(101, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(79, 1) Source(102, 1) + SourceIndex(0) +2 >Emitted(79, 2) Source(102, 2) + SourceIndex(0) +--- +>>>for ((_0 = getMultiRobot(), name = _0.name, _1 = _0.skills, primary = _1.primary, secondary = _1.secondary, _0), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name, skills: { primary, secondary } } = getMultiRobot() +7 > +8 > name +9 > , +10> skills +11> : { +12> primary +13> , +14> secondary +15> } } = getMultiRobot() +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(80, 1) Source(103, 1) + SourceIndex(0) +2 >Emitted(80, 4) Source(103, 4) + SourceIndex(0) +3 >Emitted(80, 5) Source(103, 5) + SourceIndex(0) +4 >Emitted(80, 6) Source(103, 6) + SourceIndex(0) +5 >Emitted(80, 7) Source(103, 6) + SourceIndex(0) +6 >Emitted(80, 27) Source(103, 64) + SourceIndex(0) +7 >Emitted(80, 29) Source(103, 8) + SourceIndex(0) +8 >Emitted(80, 43) Source(103, 12) + SourceIndex(0) +9 >Emitted(80, 45) Source(103, 14) + SourceIndex(0) +10>Emitted(80, 59) Source(103, 20) + SourceIndex(0) +11>Emitted(80, 61) Source(103, 24) + SourceIndex(0) +12>Emitted(80, 81) Source(103, 31) + SourceIndex(0) +13>Emitted(80, 83) Source(103, 33) + SourceIndex(0) +14>Emitted(80, 107) Source(103, 42) + SourceIndex(0) +15>Emitted(80, 112) Source(103, 64) + SourceIndex(0) +16>Emitted(80, 114) Source(103, 66) + SourceIndex(0) +17>Emitted(80, 115) Source(103, 67) + SourceIndex(0) +18>Emitted(80, 118) Source(103, 70) + SourceIndex(0) +19>Emitted(80, 119) Source(103, 71) + SourceIndex(0) +20>Emitted(80, 121) Source(103, 73) + SourceIndex(0) +21>Emitted(80, 122) Source(103, 74) + SourceIndex(0) +22>Emitted(80, 125) Source(103, 77) + SourceIndex(0) +23>Emitted(80, 126) Source(103, 78) + SourceIndex(0) +24>Emitted(80, 128) Source(103, 80) + SourceIndex(0) +25>Emitted(80, 129) Source(103, 81) + SourceIndex(0) +26>Emitted(80, 131) Source(103, 83) + SourceIndex(0) +27>Emitted(80, 133) Source(103, 85) + SourceIndex(0) +28>Emitted(80, 134) Source(103, 86) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(81, 5) Source(104, 5) + SourceIndex(0) +2 >Emitted(81, 12) Source(104, 12) + SourceIndex(0) +3 >Emitted(81, 13) Source(104, 13) + SourceIndex(0) +4 >Emitted(81, 16) Source(104, 16) + SourceIndex(0) +5 >Emitted(81, 17) Source(104, 17) + SourceIndex(0) +6 >Emitted(81, 25) Source(104, 25) + SourceIndex(0) +7 >Emitted(81, 26) Source(104, 26) + SourceIndex(0) +8 >Emitted(81, 27) Source(104, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(82, 1) Source(105, 1) + SourceIndex(0) +2 >Emitted(82, 2) Source(105, 2) + SourceIndex(0) +--- +>>>for ((_2 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, name = _2.name, _3 = _2.skills, primary = _3.primary, secondary = _3.secondary, _2), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name, skills: { primary, secondary } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > name +9 > , +10> skills +11> : { +12> primary +13> , +14> secondary +15> } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(83, 1) Source(106, 1) + SourceIndex(0) +2 >Emitted(83, 4) Source(106, 4) + SourceIndex(0) +3 >Emitted(83, 5) Source(106, 5) + SourceIndex(0) +4 >Emitted(83, 6) Source(106, 6) + SourceIndex(0) +5 >Emitted(83, 7) Source(106, 6) + SourceIndex(0) +6 >Emitted(83, 85) Source(107, 90) + SourceIndex(0) +7 >Emitted(83, 87) Source(106, 8) + SourceIndex(0) +8 >Emitted(83, 101) Source(106, 12) + SourceIndex(0) +9 >Emitted(83, 103) Source(106, 14) + SourceIndex(0) +10>Emitted(83, 117) Source(106, 20) + SourceIndex(0) +11>Emitted(83, 119) Source(106, 24) + SourceIndex(0) +12>Emitted(83, 139) Source(106, 31) + SourceIndex(0) +13>Emitted(83, 141) Source(106, 33) + SourceIndex(0) +14>Emitted(83, 165) Source(106, 42) + SourceIndex(0) +15>Emitted(83, 170) Source(107, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(84, 5) Source(108, 5) + SourceIndex(0) +2 >Emitted(84, 6) Source(108, 6) + SourceIndex(0) +3 >Emitted(84, 9) Source(108, 9) + SourceIndex(0) +4 >Emitted(84, 10) Source(108, 10) + SourceIndex(0) +5 >Emitted(84, 12) Source(108, 12) + SourceIndex(0) +6 >Emitted(84, 13) Source(108, 13) + SourceIndex(0) +7 >Emitted(84, 16) Source(108, 16) + SourceIndex(0) +8 >Emitted(84, 17) Source(108, 17) + SourceIndex(0) +9 >Emitted(84, 19) Source(108, 19) + SourceIndex(0) +10>Emitted(84, 20) Source(108, 20) + SourceIndex(0) +11>Emitted(84, 22) Source(108, 22) + SourceIndex(0) +12>Emitted(84, 24) Source(108, 24) + SourceIndex(0) +13>Emitted(84, 25) Source(108, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(85, 5) Source(109, 5) + SourceIndex(0) +2 >Emitted(85, 12) Source(109, 12) + SourceIndex(0) +3 >Emitted(85, 13) Source(109, 13) + SourceIndex(0) +4 >Emitted(85, 16) Source(109, 16) + SourceIndex(0) +5 >Emitted(85, 17) Source(109, 17) + SourceIndex(0) +6 >Emitted(85, 25) Source(109, 25) + SourceIndex(0) +7 >Emitted(85, 26) Source(109, 26) + SourceIndex(0) +8 >Emitted(85, 27) Source(109, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(86, 1) Source(110, 1) + SourceIndex(0) +2 >Emitted(86, 2) Source(110, 2) + SourceIndex(0) +--- +>>>var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols new file mode 100644 index 00000000000..49de55505a2 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.symbols @@ -0,0 +1,490 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 9, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 10, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 11, 24)) + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 20)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 35)) + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 30)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 45)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 55)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 74)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 97)) + + return robot; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 3)) +} +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 20, 1)) + + return multiRobot; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 3)) +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 67)) + +let name: string, primary: string, secondary: string, skill: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 26, 3)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 26, 17)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 26, 34)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 26, 53)) + +for ({ name: nameA } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 28, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 31, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 34, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 34, 31)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 34, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 37, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 37, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 37, 35)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 40, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 40, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 40, 35)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 43, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 43, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 43, 35)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 44, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 44, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 44, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 44, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ name } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 48, 6)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 51, 6)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 54, 6)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 54, 24)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 54, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 57, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 57, 16)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 57, 25)) +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 60, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 60, 16)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 60, 25)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ skills: { primary, secondary } } = +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 63, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 63, 16)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 63, 25)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 64, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 64, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 64, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 64, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} + + +for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 70, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 70, 19)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 67)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 73, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 73, 19)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 67)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 76, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 76, 19)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 67)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 76, 46)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 76, 63)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 79, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 79, 19)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 79, 29)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 79, 48)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 82, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 82, 19)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 82, 29)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 82, 48)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 85, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 85, 19)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 85, 29)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 85, 48)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 36)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 86, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 86, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 86, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 86, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ name, skill } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 90, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 90, 12)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 93, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 93, 12)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 96, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 96, 12)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 96, 31)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 96, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 3)) +} +for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 99, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 99, 12)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 99, 22)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 99, 31)) +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 102, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 102, 12)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 102, 22)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 102, 31)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} +for ({ name, skills: { primary, secondary } } = +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 105, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 105, 12)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 105, 22)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 105, 31)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 106, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 106, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 106, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 106, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPattern2.ts, 25, 18)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.types new file mode 100644 index 00000000000..81beb06d3d7 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.types @@ -0,0 +1,774 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : MultiRobot +>MultiRobot : MultiRobot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +function getRobot() { +>getRobot : () => Robot + + return robot; +>robot : Robot +} +function getMultiRobot() { +>getMultiRobot : () => MultiRobot + + return multiRobot; +>multiRobot : MultiRobot +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : string +>primaryA : string +>secondaryA : string +>i : number +>skillA : string + +let name: string, primary: string, secondary: string, skill: string; +>name : string +>primary : string +>secondary : string +>skill : string + +for ({ name: nameA } = robot, i = 0; i < 1; i++) { +>{ name: nameA } = robot, i = 0 : number +>{ name: nameA } = robot : Robot +>{ name: nameA } : { name: string; } +>name : string +>nameA : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { +>{ name: nameA } = getRobot(), i = 0 : number +>{ name: nameA } = getRobot() : Robot +>{ name: nameA } : { name: string; } +>name : string +>nameA : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{ name: nameA } = { name: "trimmer", skill: "trimming" } : Robot +>{ name: nameA } : { name: string; } +>name : string +>nameA : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>{ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0 : number +>{ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot : MultiRobot +>{ skills: { primary: primaryA, secondary: secondaryA } } : { skills: { primary: string; secondary: string; }; } +>skills : { primary: string; secondary: string; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>{ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0 : number +>{ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() : MultiRobot +>{ skills: { primary: primaryA, secondary: secondaryA } } : { skills: { primary: string; secondary: string; }; } +>skills : { primary: string; secondary: string; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = +>{ skills: { primary: primaryA, secondary: secondaryA } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ skills: { primary: primaryA, secondary: secondaryA } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ skills: { primary: primaryA, secondary: secondaryA } } : { skills: { primary: string; secondary: string; }; } +>skills : { primary: string; secondary: string; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ name } = robot, i = 0; i < 1; i++) { +>{ name } = robot, i = 0 : number +>{ name } = robot : Robot +>{ name } : { name: string; } +>name : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name } = getRobot(), i = 0; i < 1; i++) { +>{ name } = getRobot(), i = 0 : number +>{ name } = getRobot() : Robot +>{ name } : { name: string; } +>name : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{ name } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{ name } = { name: "trimmer", skill: "trimming" } : Robot +>{ name } : { name: string; } +>name : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { +>{ skills: { primary, secondary } } = multiRobot, i = 0 : number +>{ skills: { primary, secondary } } = multiRobot : MultiRobot +>{ skills: { primary, secondary } } : { skills: { primary: string; secondary: string; }; } +>skills : { primary: string; secondary: string; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { +>{ skills: { primary, secondary } } = getMultiRobot(), i = 0 : number +>{ skills: { primary, secondary } } = getMultiRobot() : MultiRobot +>{ skills: { primary, secondary } } : { skills: { primary: string; secondary: string; }; } +>skills : { primary: string; secondary: string; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary, secondary } } = +>{ skills: { primary, secondary } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ skills: { primary, secondary } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ skills: { primary, secondary } } : { skills: { primary: string; secondary: string; }; } +>skills : { primary: string; secondary: string; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + + +for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { +>{ name: nameA, skill: skillA } = robot, i = 0 : number +>{ name: nameA, skill: skillA } = robot : Robot +>{ name: nameA, skill: skillA } : { name: string; skill: string; } +>name : string +>nameA : string +>skill : string +>skillA : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { +>{ name: nameA, skill: skillA } = getRobot(), i = 0 : number +>{ name: nameA, skill: skillA } = getRobot() : Robot +>{ name: nameA, skill: skillA } : { name: string; skill: string; } +>name : string +>nameA : string +>skill : string +>skillA : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } : Robot +>{ name: nameA, skill: skillA } : { name: string; skill: string; } +>name : string +>nameA : string +>skill : string +>skillA : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0 : number +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot : MultiRobot +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>nameA : string +>skills : { primary: string; secondary: string; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0 : number +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() : MultiRobot +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>nameA : string +>skills : { primary: string; secondary: string; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>nameA : string +>skills : { primary: string; secondary: string; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ name, skill } = robot, i = 0; i < 1; i++) { +>{ name, skill } = robot, i = 0 : number +>{ name, skill } = robot : Robot +>{ name, skill } : { name: string; skill: string; } +>name : string +>skill : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { +>{ name, skill } = getRobot(), i = 0 : number +>{ name, skill } = getRobot() : Robot +>{ name, skill } : { name: string; skill: string; } +>name : string +>skill : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{ name, skill } = { name: "trimmer", skill: "trimming" } : Robot +>{ name, skill } : { name: string; skill: string; } +>name : string +>skill : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { +>{ name, skills: { primary, secondary } } = multiRobot, i = 0 : number +>{ name, skills: { primary, secondary } } = multiRobot : MultiRobot +>{ name, skills: { primary, secondary } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>skills : { primary: string; secondary: string; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { +>{ name, skills: { primary, secondary } } = getMultiRobot(), i = 0 : number +>{ name, skills: { primary, secondary } } = getMultiRobot() : MultiRobot +>{ name, skills: { primary, secondary } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>skills : { primary: string; secondary: string; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ name, skills: { primary, secondary } } = +>{ name, skills: { primary, secondary } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ name, skills: { primary, secondary } } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ name, skills: { primary, secondary } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>skills : { primary: string; secondary: string; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.ts new file mode 100644 index 00000000000..3e018b2a6d5 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPattern2.ts @@ -0,0 +1,111 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({ name: nameA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + + +for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name, skill } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ name, skills: { primary, secondary } } = + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} \ No newline at end of file From 35ec9caf6551100fcd3996f923fa69688f955e35 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 17:19:35 -0800 Subject: [PATCH 042/164] Make sourcemap of "For" that initializes vars using object literal binding pattern better --- src/compiler/emitter.ts | 6 +-- ...structuringForObjectBindingPattern2.js.map | 2 +- ...ringForObjectBindingPattern2.sourcemap.txt | 52 +++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 47e518e90d7..c51fca95f32 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3880,7 +3880,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return call; } - function emitObjectLiteralAssignment(target: ObjectLiteralExpression, value: Expression) { + function emitObjectLiteralAssignment(target: ObjectLiteralExpression, value: Expression, sourceMapNode: Node) { const properties = target.properties; if (properties.length !== 1) { // For anything but a single element destructuring we need to generate a temporary @@ -3891,7 +3891,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { const propName = (p).name; const target = p.kind === SyntaxKind.ShorthandPropertyAssignment ? p : (p).initializer || propName; - emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName), p); + emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName), properties.length === 1 ? sourceMapNode : p); } } } @@ -3928,7 +3928,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi target = (target).left; } if (target.kind === SyntaxKind.ObjectLiteralExpression) { - emitObjectLiteralAssignment(target, value); + emitObjectLiteralAssignment(target, value, sourceMapNode); } else if (target.kind === SyntaxKind.ArrayLiteralExpression) { emitArrayLiteralAssignment(target, value, sourceMapNode); diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map index 6c59f512b0e..89bf5672d04 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForObjectBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt index 0659ec2fcee..6621dd0b551 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt @@ -311,9 +311,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > { -6 > name: nameA -7 > } = +5 > +6 > { name: nameA } = robot +7 > 8 > robot 9 > 10> , @@ -333,8 +333,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(11, 4) Source(29, 4) + SourceIndex(0) 3 >Emitted(11, 5) Source(29, 5) + SourceIndex(0) 4 >Emitted(11, 6) Source(29, 6) + SourceIndex(0) -5 >Emitted(11, 7) Source(29, 8) + SourceIndex(0) -6 >Emitted(11, 25) Source(29, 19) + SourceIndex(0) +5 >Emitted(11, 7) Source(29, 6) + SourceIndex(0) +6 >Emitted(11, 25) Source(29, 29) + SourceIndex(0) 7 >Emitted(11, 27) Source(29, 24) + SourceIndex(0) 8 >Emitted(11, 32) Source(29, 29) + SourceIndex(0) 9 >Emitted(11, 33) Source(29, 29) + SourceIndex(0) @@ -420,8 +420,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name: nameA } = getRobot() 7 > -8 > name: nameA -9 > } = getRobot() +8 > { name: nameA } = getRobot() +9 > 10> , 11> i 12> = @@ -441,8 +441,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(14, 6) Source(32, 6) + SourceIndex(0) 5 >Emitted(14, 7) Source(32, 6) + SourceIndex(0) 6 >Emitted(14, 22) Source(32, 34) + SourceIndex(0) -7 >Emitted(14, 24) Source(32, 8) + SourceIndex(0) -8 >Emitted(14, 39) Source(32, 19) + SourceIndex(0) +7 >Emitted(14, 24) Source(32, 6) + SourceIndex(0) +8 >Emitted(14, 39) Source(32, 34) + SourceIndex(0) 9 >Emitted(14, 44) Source(32, 34) + SourceIndex(0) 10>Emitted(14, 46) Source(32, 36) + SourceIndex(0) 11>Emitted(14, 47) Source(32, 37) + SourceIndex(0) @@ -526,8 +526,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name: nameA } = { name: "trimmer", skill: "trimming" } 7 > -8 > name: nameA -9 > } = { name: "trimmer", skill: "trimming" } +8 > { name: nameA } = { name: "trimmer", skill: "trimming" } +9 > 10> , 11> i 12> = @@ -547,8 +547,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(17, 6) Source(35, 6) + SourceIndex(0) 5 >Emitted(17, 7) Source(35, 6) + SourceIndex(0) 6 >Emitted(17, 50) Source(35, 69) + SourceIndex(0) -7 >Emitted(17, 52) Source(35, 8) + SourceIndex(0) -8 >Emitted(17, 67) Source(35, 19) + SourceIndex(0) +7 >Emitted(17, 52) Source(35, 6) + SourceIndex(0) +8 >Emitted(17, 67) Source(35, 69) + SourceIndex(0) 9 >Emitted(17, 72) Source(35, 69) + SourceIndex(0) 10>Emitted(17, 74) Source(35, 71) + SourceIndex(0) 11>Emitted(17, 75) Source(35, 72) + SourceIndex(0) @@ -989,9 +989,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > { -6 > name -7 > } = +5 > +6 > { name } = robot +7 > 8 > robot 9 > 10> , @@ -1011,8 +1011,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(30, 4) Source(49, 4) + SourceIndex(0) 3 >Emitted(30, 5) Source(49, 5) + SourceIndex(0) 4 >Emitted(30, 6) Source(49, 6) + SourceIndex(0) -5 >Emitted(30, 7) Source(49, 8) + SourceIndex(0) -6 >Emitted(30, 24) Source(49, 12) + SourceIndex(0) +5 >Emitted(30, 7) Source(49, 6) + SourceIndex(0) +6 >Emitted(30, 24) Source(49, 22) + SourceIndex(0) 7 >Emitted(30, 26) Source(49, 17) + SourceIndex(0) 8 >Emitted(30, 31) Source(49, 22) + SourceIndex(0) 9 >Emitted(30, 32) Source(49, 22) + SourceIndex(0) @@ -1098,8 +1098,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name } = getRobot() 7 > -8 > name -9 > } = getRobot() +8 > { name } = getRobot() +9 > 10> , 11> i 12> = @@ -1119,8 +1119,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(33, 6) Source(52, 6) + SourceIndex(0) 5 >Emitted(33, 7) Source(52, 6) + SourceIndex(0) 6 >Emitted(33, 22) Source(52, 27) + SourceIndex(0) -7 >Emitted(33, 24) Source(52, 8) + SourceIndex(0) -8 >Emitted(33, 38) Source(52, 12) + SourceIndex(0) +7 >Emitted(33, 24) Source(52, 6) + SourceIndex(0) +8 >Emitted(33, 38) Source(52, 27) + SourceIndex(0) 9 >Emitted(33, 43) Source(52, 27) + SourceIndex(0) 10>Emitted(33, 45) Source(52, 29) + SourceIndex(0) 11>Emitted(33, 46) Source(52, 30) + SourceIndex(0) @@ -1204,8 +1204,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name } = { name: "trimmer", skill: "trimming" } 7 > -8 > name -9 > } = { name: "trimmer", skill: "trimming" } +8 > { name } = { name: "trimmer", skill: "trimming" } +9 > 10> , 11> i 12> = @@ -1225,8 +1225,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(36, 6) Source(55, 6) + SourceIndex(0) 5 >Emitted(36, 7) Source(55, 6) + SourceIndex(0) 6 >Emitted(36, 50) Source(55, 62) + SourceIndex(0) -7 >Emitted(36, 52) Source(55, 8) + SourceIndex(0) -8 >Emitted(36, 66) Source(55, 12) + SourceIndex(0) +7 >Emitted(36, 52) Source(55, 6) + SourceIndex(0) +8 >Emitted(36, 66) Source(55, 62) + SourceIndex(0) 9 >Emitted(36, 71) Source(55, 62) + SourceIndex(0) 10>Emitted(36, 73) Source(55, 64) + SourceIndex(0) 11>Emitted(36, 74) Source(55, 65) + SourceIndex(0) From bbfe6b5e940b3485e6733e9bdd6f4611ca21940a Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 17:25:31 -0800 Subject: [PATCH 043/164] Test case for sourcemap of "For of" that initializes vars using object literal binding pattern --- ...DestructuringForOfObjectBindingPattern2.js | 225 ++ ...ructuringForOfObjectBindingPattern2.js.map | 2 + ...ngForOfObjectBindingPattern2.sourcemap.txt | 3387 +++++++++++++++++ ...ucturingForOfObjectBindingPattern2.symbols | 435 +++ ...tructuringForOfObjectBindingPattern2.types | 593 +++ ...DestructuringForOfObjectBindingPattern2.ts | 110 + 6 files changed, 4752 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js new file mode 100644 index 00000000000..aebfd11b9db --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js @@ -0,0 +1,225 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPattern2.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({name: nameA } of robots) { + console.log(nameA); +} +for ({name: nameA } of getRobots()) { + console.log(nameA); +} +for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} +for ({name } of robots) { + console.log(nameA); +} +for ({name } of getRobots()) { + console.log(nameA); +} +for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ skills: { primary, secondary } } of multiRobots) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } of getMultiRobots()) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + + +for ({name: nameA, skill: skillA } of robots) { + console.log(nameA); +} +for ({name: nameA, skill: skillA } of getRobots()) { + console.log(nameA); +} +for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(nameA); +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(nameA); +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} +for ({name, skill } of robots) { + console.log(nameA); +} +for ({name, skill } of getRobots()) { + console.log(nameA); +} +for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({name, skills: { primary, secondary } } of multiRobots) { + console.log(nameA); +} +for ({name, skills: { primary, secondary } } of getMultiRobots()) { + console.log(nameA); +} +for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} + +//// [sourceMapValidationDestructuringForOfObjectBindingPattern2.js] +var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +function getRobots() { + return robots; +} +function getMultiRobots() { + return multiRobots; +} +var nameA, primaryA, secondaryA, i, skillA; +var name, primary, secondary, skill; +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + nameA = robots_1[_i].name; + console.log(nameA); +} +for (var _a = 0, _b = getRobots(); _a < _b.length; _a++) { + nameA = _b[_a].name; + console.log(nameA); +} +for (var _c = 0, _d = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _c < _d.length; _c++) { + nameA = _d[_c].name; + console.log(nameA); +} +for (var _e = 0, multiRobots_1 = multiRobots; _e < multiRobots_1.length; _e++) { + _f = multiRobots_1[_e].skills, primaryA = _f.primary, secondaryA = _f.secondary; + console.log(primaryA); +} +for (var _g = 0, _h = getMultiRobots(); _g < _h.length; _g++) { + _j = _h[_g].skills, primaryA = _j.primary, secondaryA = _j.secondary; + console.log(primaryA); +} +for (var _k = 0, _l = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _k < _l.length; _k++) { + _m = _l[_k].skills, primaryA = _m.primary, secondaryA = _m.secondary; + console.log(primaryA); +} +for (var _o = 0, robots_2 = robots; _o < robots_2.length; _o++) { + name = robots_2[_o].name; + console.log(nameA); +} +for (var _p = 0, _q = getRobots(); _p < _q.length; _p++) { + name = _q[_p].name; + console.log(nameA); +} +for (var _r = 0, _s = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _r < _s.length; _r++) { + name = _s[_r].name; + console.log(nameA); +} +for (var _t = 0, multiRobots_2 = multiRobots; _t < multiRobots_2.length; _t++) { + _u = multiRobots_2[_t].skills, primary = _u.primary, secondary = _u.secondary; + console.log(primaryA); +} +for (var _v = 0, _w = getMultiRobots(); _v < _w.length; _v++) { + _x = _w[_v].skills, primary = _x.primary, secondary = _x.secondary; + console.log(primaryA); +} +for (var _y = 0, _z = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _y < _z.length; _y++) { + _0 = _z[_y].skills, primary = _0.primary, secondary = _0.secondary; + console.log(primaryA); +} +for (var _1 = 0, robots_3 = robots; _1 < robots_3.length; _1++) { + _2 = robots_3[_1], nameA = _2.name, skillA = _2.skill; + console.log(nameA); +} +for (var _3 = 0, _4 = getRobots(); _3 < _4.length; _3++) { + _5 = _4[_3], nameA = _5.name, skillA = _5.skill; + console.log(nameA); +} +for (var _6 = 0, _7 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _6 < _7.length; _6++) { + _8 = _7[_6], nameA = _8.name, skillA = _8.skill; + console.log(nameA); +} +for (var _9 = 0, multiRobots_3 = multiRobots; _9 < multiRobots_3.length; _9++) { + _10 = multiRobots_3[_9], nameA = _10.name, _11 = _10.skills, primaryA = _11.primary, secondaryA = _11.secondary; + console.log(nameA); +} +for (var _12 = 0, _13 = getMultiRobots(); _12 < _13.length; _12++) { + _14 = _13[_12], nameA = _14.name, _15 = _14.skills, primaryA = _15.primary, secondaryA = _15.secondary; + console.log(nameA); +} +for (var _16 = 0, _17 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _16 < _17.length; _16++) { + _18 = _17[_16], nameA = _18.name, _19 = _18.skills, primaryA = _19.primary, secondaryA = _19.secondary; + console.log(nameA); +} +for (var _20 = 0, robots_4 = robots; _20 < robots_4.length; _20++) { + _21 = robots_4[_20], name = _21.name, skill = _21.skill; + console.log(nameA); +} +for (var _22 = 0, _23 = getRobots(); _22 < _23.length; _22++) { + _24 = _23[_22], name = _24.name, skill = _24.skill; + console.log(nameA); +} +for (var _25 = 0, _26 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _25 < _26.length; _25++) { + _27 = _26[_25], name = _27.name, skill = _27.skill; + console.log(nameA); +} +for (var _28 = 0, multiRobots_4 = multiRobots; _28 < multiRobots_4.length; _28++) { + _29 = multiRobots_4[_28], name = _29.name, _30 = _29.skills, primary = _30.primary, secondary = _30.secondary; + console.log(nameA); +} +for (var _31 = 0, _32 = getMultiRobots(); _31 < _32.length; _31++) { + _33 = _32[_31], name = _33.name, _34 = _33.skills, primary = _34.primary, secondary = _34.secondary; + console.log(nameA); +} +for (var _35 = 0, _36 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _35 < _36.length; _35++) { + _37 = _36[_35], name = _37.name, _38 = _37.skills, primary = _38.primary, secondary = _38.secondary; + console.log(nameA); +} +var _f, _j, _m, _u, _x, _0, _2, _5, _8, _10, _11, _14, _15, _18, _19, _21, _24, _27, _29, _30, _33, _34, _37, _38; +//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map new file mode 100644 index 00000000000..77e719df043 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt new file mode 100644 index 00000000000..a3d11d0d43c --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt @@ -0,0 +1,3387 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfObjectBindingPattern2.js +mapUrl: sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfObjectBindingPattern2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.js +sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts +------------------------------------------------------------------- +>>>var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^^ +13> ^^^^^^^^ +14> ^^ +15> ^^ +16> ^^ +17> ^^^^ +18> ^^ +19> ^^^^^^^^^ +20> ^^ +21> ^^^^^ +22> ^^ +23> ^^^^^^^^^^ +24> ^^ +25> ^ +26> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > + > +2 >let +3 > robots +4 > : Robot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skill +12> : +13> "mowing" +14> } +15> , +16> { +17> name +18> : +19> "trimmer" +20> , +21> skill +22> : +23> "trimming" +24> } +25> ] +26> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(17, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(17, 23) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 24) + SourceIndex(0) +6 >Emitted(1, 17) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 30) + SourceIndex(0) +8 >Emitted(1, 23) Source(17, 32) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 39) + SourceIndex(0) +10>Emitted(1, 32) Source(17, 41) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 46) + SourceIndex(0) +12>Emitted(1, 39) Source(17, 48) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 56) + SourceIndex(0) +14>Emitted(1, 49) Source(17, 58) + SourceIndex(0) +15>Emitted(1, 51) Source(17, 60) + SourceIndex(0) +16>Emitted(1, 53) Source(17, 62) + SourceIndex(0) +17>Emitted(1, 57) Source(17, 66) + SourceIndex(0) +18>Emitted(1, 59) Source(17, 68) + SourceIndex(0) +19>Emitted(1, 68) Source(17, 77) + SourceIndex(0) +20>Emitted(1, 70) Source(17, 79) + SourceIndex(0) +21>Emitted(1, 75) Source(17, 84) + SourceIndex(0) +22>Emitted(1, 77) Source(17, 86) + SourceIndex(0) +23>Emitted(1, 87) Source(17, 96) + SourceIndex(0) +24>Emitted(1, 89) Source(17, 98) + SourceIndex(0) +25>Emitted(1, 90) Source(17, 99) + SourceIndex(0) +26>Emitted(1, 91) Source(17, 100) + SourceIndex(0) +--- +>>>var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^^ +12> ^^ +13> ^^ +14> ^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^^^^^^^^ +19> ^^ +20> ^^^^^^ +21> ^^ +22> ^^ +1 > + > +2 >let +3 > multiRobots +4 > : MultiRobot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skills +12> : +13> { +14> primary +15> : +16> "mowing" +17> , +18> secondary +19> : +20> "none" +21> } +22> } +1 >Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 16) Source(18, 16) + SourceIndex(0) +4 >Emitted(2, 19) Source(18, 33) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 34) + SourceIndex(0) +6 >Emitted(2, 22) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 40) + SourceIndex(0) +8 >Emitted(2, 28) Source(18, 42) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 49) + SourceIndex(0) +10>Emitted(2, 37) Source(18, 51) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 57) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 59) + SourceIndex(0) +13>Emitted(2, 47) Source(18, 61) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 68) + SourceIndex(0) +15>Emitted(2, 56) Source(18, 70) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 78) + SourceIndex(0) +17>Emitted(2, 66) Source(18, 80) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 89) + SourceIndex(0) +19>Emitted(2, 77) Source(18, 91) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 97) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 99) + SourceIndex(0) +22>Emitted(2, 87) Source(18, 101) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +1 >^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^ +1 >, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> ; +1 >Emitted(3, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(3, 7) Source(19, 7) + SourceIndex(0) +3 >Emitted(3, 11) Source(19, 11) + SourceIndex(0) +4 >Emitted(3, 13) Source(19, 13) + SourceIndex(0) +5 >Emitted(3, 22) Source(19, 22) + SourceIndex(0) +6 >Emitted(3, 24) Source(19, 24) + SourceIndex(0) +7 >Emitted(3, 30) Source(19, 30) + SourceIndex(0) +8 >Emitted(3, 32) Source(19, 32) + SourceIndex(0) +9 >Emitted(3, 34) Source(19, 34) + SourceIndex(0) +10>Emitted(3, 41) Source(19, 41) + SourceIndex(0) +11>Emitted(3, 43) Source(19, 43) + SourceIndex(0) +12>Emitted(3, 53) Source(19, 53) + SourceIndex(0) +13>Emitted(3, 55) Source(19, 55) + SourceIndex(0) +14>Emitted(3, 64) Source(19, 64) + SourceIndex(0) +15>Emitted(3, 66) Source(19, 66) + SourceIndex(0) +16>Emitted(3, 74) Source(19, 74) + SourceIndex(0) +17>Emitted(3, 76) Source(19, 76) + SourceIndex(0) +18>Emitted(3, 78) Source(19, 78) + SourceIndex(0) +19>Emitted(3, 79) Source(19, 79) + SourceIndex(0) +20>Emitted(3, 80) Source(19, 80) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +1 >Emitted(4, 1) Source(21, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(22, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(22, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(22, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(22, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(23, 2) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(7, 1) Source(25, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(8, 5) Source(26, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(26, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(26, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(26, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(26, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(27, 2) + SourceIndex(0) +--- +>>>var nameA, primaryA, secondaryA, i, skillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^ +11> ^^^^^^ +12> ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primaryA: string +6 > , +7 > secondaryA: string +8 > , +9 > i: number +10> , +11> skillA: string +12> ; +1->Emitted(10, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(10, 10) Source(29, 18) + SourceIndex(0) +4 >Emitted(10, 12) Source(29, 20) + SourceIndex(0) +5 >Emitted(10, 20) Source(29, 36) + SourceIndex(0) +6 >Emitted(10, 22) Source(29, 38) + SourceIndex(0) +7 >Emitted(10, 32) Source(29, 56) + SourceIndex(0) +8 >Emitted(10, 34) Source(29, 58) + SourceIndex(0) +9 >Emitted(10, 35) Source(29, 67) + SourceIndex(0) +10>Emitted(10, 37) Source(29, 69) + SourceIndex(0) +11>Emitted(10, 43) Source(29, 83) + SourceIndex(0) +12>Emitted(10, 44) Source(29, 84) + SourceIndex(0) +--- +>>>var name, primary, secondary, skill; +1 > +2 >^^^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > name: string +4 > , +5 > primary: string +6 > , +7 > secondary: string +8 > , +9 > skill: string +10> ; +1 >Emitted(11, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(11, 5) Source(30, 5) + SourceIndex(0) +3 >Emitted(11, 9) Source(30, 17) + SourceIndex(0) +4 >Emitted(11, 11) Source(30, 19) + SourceIndex(0) +5 >Emitted(11, 18) Source(30, 34) + SourceIndex(0) +6 >Emitted(11, 20) Source(30, 36) + SourceIndex(0) +7 >Emitted(11, 29) Source(30, 53) + SourceIndex(0) +8 >Emitted(11, 31) Source(30, 55) + SourceIndex(0) +9 >Emitted(11, 36) Source(30, 68) + SourceIndex(0) +10>Emitted(11, 37) Source(30, 69) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > ({name: nameA } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(12, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(12, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(12, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(12, 6) Source(32, 24) + SourceIndex(0) +5 >Emitted(12, 16) Source(32, 30) + SourceIndex(0) +6 >Emitted(12, 18) Source(32, 24) + SourceIndex(0) +7 >Emitted(12, 35) Source(32, 30) + SourceIndex(0) +8 >Emitted(12, 37) Source(32, 24) + SourceIndex(0) +9 >Emitted(12, 57) Source(32, 30) + SourceIndex(0) +10>Emitted(12, 59) Source(32, 24) + SourceIndex(0) +11>Emitted(12, 63) Source(32, 30) + SourceIndex(0) +12>Emitted(12, 64) Source(32, 31) + SourceIndex(0) +--- +>>> nameA = robots_1[_i].name; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > {name: nameA } +1 >Emitted(13, 5) Source(32, 6) + SourceIndex(0) +2 >Emitted(13, 30) Source(32, 20) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(14, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(14, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(14, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(14, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(14, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(14, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(14, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(14, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(15, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _a = 0, _b = getRobots(); _a < _b.length; _a++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ({name: nameA } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(16, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(16, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(16, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(16, 6) Source(35, 24) + SourceIndex(0) +5 >Emitted(16, 16) Source(35, 35) + SourceIndex(0) +6 >Emitted(16, 18) Source(35, 24) + SourceIndex(0) +7 >Emitted(16, 23) Source(35, 24) + SourceIndex(0) +8 >Emitted(16, 32) Source(35, 33) + SourceIndex(0) +9 >Emitted(16, 34) Source(35, 35) + SourceIndex(0) +10>Emitted(16, 36) Source(35, 24) + SourceIndex(0) +11>Emitted(16, 50) Source(35, 35) + SourceIndex(0) +12>Emitted(16, 52) Source(35, 24) + SourceIndex(0) +13>Emitted(16, 56) Source(35, 35) + SourceIndex(0) +14>Emitted(16, 57) Source(35, 36) + SourceIndex(0) +--- +>>> nameA = _b[_a].name; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^-> +1 > +2 > {name: nameA } +1 >Emitted(17, 5) Source(35, 6) + SourceIndex(0) +2 >Emitted(17, 24) Source(35, 20) + SourceIndex(0) +--- +>>> console.log(nameA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1->Emitted(18, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(18, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(18, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(18, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(18, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(18, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(18, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(18, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(19, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for (var _c = 0, _d = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _c < _d.length; _c++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > ({name: nameA } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(20, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(20, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(20, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(20, 6) Source(38, 24) + SourceIndex(0) +5 >Emitted(20, 16) Source(38, 100) + SourceIndex(0) +6 >Emitted(20, 18) Source(38, 24) + SourceIndex(0) +7 >Emitted(20, 24) Source(38, 25) + SourceIndex(0) +8 >Emitted(20, 26) Source(38, 27) + SourceIndex(0) +9 >Emitted(20, 30) Source(38, 31) + SourceIndex(0) +10>Emitted(20, 32) Source(38, 33) + SourceIndex(0) +11>Emitted(20, 39) Source(38, 40) + SourceIndex(0) +12>Emitted(20, 41) Source(38, 42) + SourceIndex(0) +13>Emitted(20, 46) Source(38, 47) + SourceIndex(0) +14>Emitted(20, 48) Source(38, 49) + SourceIndex(0) +15>Emitted(20, 56) Source(38, 57) + SourceIndex(0) +16>Emitted(20, 58) Source(38, 59) + SourceIndex(0) +17>Emitted(20, 60) Source(38, 61) + SourceIndex(0) +18>Emitted(20, 62) Source(38, 63) + SourceIndex(0) +19>Emitted(20, 66) Source(38, 67) + SourceIndex(0) +20>Emitted(20, 68) Source(38, 69) + SourceIndex(0) +21>Emitted(20, 77) Source(38, 78) + SourceIndex(0) +22>Emitted(20, 79) Source(38, 80) + SourceIndex(0) +23>Emitted(20, 84) Source(38, 85) + SourceIndex(0) +24>Emitted(20, 86) Source(38, 87) + SourceIndex(0) +25>Emitted(20, 96) Source(38, 97) + SourceIndex(0) +26>Emitted(20, 98) Source(38, 99) + SourceIndex(0) +27>Emitted(20, 99) Source(38, 100) + SourceIndex(0) +28>Emitted(20, 101) Source(38, 24) + SourceIndex(0) +29>Emitted(20, 115) Source(38, 100) + SourceIndex(0) +30>Emitted(20, 117) Source(38, 24) + SourceIndex(0) +31>Emitted(20, 121) Source(38, 100) + SourceIndex(0) +32>Emitted(20, 122) Source(38, 101) + SourceIndex(0) +--- +>>> nameA = _d[_c].name; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^-> +1 > +2 > {name: nameA } +1 >Emitted(21, 5) Source(38, 6) + SourceIndex(0) +2 >Emitted(21, 24) Source(38, 20) + SourceIndex(0) +--- +>>> console.log(nameA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1->Emitted(22, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(22, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(22, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(22, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(22, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(22, 22) Source(39, 22) + SourceIndex(0) +7 >Emitted(22, 23) Source(39, 23) + SourceIndex(0) +8 >Emitted(22, 24) Source(39, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(23, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for (var _e = 0, multiRobots_1 = multiRobots; _e < multiRobots_1.length; _e++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary: primaryA, secondary: secondaryA } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(24, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(24, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(24, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(24, 6) Source(41, 66) + SourceIndex(0) +5 >Emitted(24, 16) Source(41, 77) + SourceIndex(0) +6 >Emitted(24, 18) Source(41, 66) + SourceIndex(0) +7 >Emitted(24, 45) Source(41, 77) + SourceIndex(0) +8 >Emitted(24, 47) Source(41, 66) + SourceIndex(0) +9 >Emitted(24, 72) Source(41, 77) + SourceIndex(0) +10>Emitted(24, 74) Source(41, 66) + SourceIndex(0) +11>Emitted(24, 78) Source(41, 77) + SourceIndex(0) +12>Emitted(24, 79) Source(41, 78) + SourceIndex(0) +--- +>>> _f = multiRobots_1[_e].skills, primaryA = _f.primary, secondaryA = _f.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills +3 > : { +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1->Emitted(25, 5) Source(41, 8) + SourceIndex(0) +2 >Emitted(25, 34) Source(41, 14) + SourceIndex(0) +3 >Emitted(25, 36) Source(41, 18) + SourceIndex(0) +4 >Emitted(25, 57) Source(41, 35) + SourceIndex(0) +5 >Emitted(25, 59) Source(41, 37) + SourceIndex(0) +6 >Emitted(25, 84) Source(41, 58) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(26, 5) Source(42, 5) + SourceIndex(0) +2 >Emitted(26, 12) Source(42, 12) + SourceIndex(0) +3 >Emitted(26, 13) Source(42, 13) + SourceIndex(0) +4 >Emitted(26, 16) Source(42, 16) + SourceIndex(0) +5 >Emitted(26, 17) Source(42, 17) + SourceIndex(0) +6 >Emitted(26, 25) Source(42, 25) + SourceIndex(0) +7 >Emitted(26, 26) Source(42, 26) + SourceIndex(0) +8 >Emitted(26, 27) Source(42, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(27, 2) Source(43, 2) + SourceIndex(0) +--- +>>>for (var _g = 0, _h = getMultiRobots(); _g < _h.length; _g++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary: primaryA, secondary: secondaryA } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(28, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(28, 4) Source(44, 4) + SourceIndex(0) +3 >Emitted(28, 5) Source(44, 5) + SourceIndex(0) +4 >Emitted(28, 6) Source(44, 66) + SourceIndex(0) +5 >Emitted(28, 16) Source(44, 82) + SourceIndex(0) +6 >Emitted(28, 18) Source(44, 66) + SourceIndex(0) +7 >Emitted(28, 23) Source(44, 66) + SourceIndex(0) +8 >Emitted(28, 37) Source(44, 80) + SourceIndex(0) +9 >Emitted(28, 39) Source(44, 82) + SourceIndex(0) +10>Emitted(28, 41) Source(44, 66) + SourceIndex(0) +11>Emitted(28, 55) Source(44, 82) + SourceIndex(0) +12>Emitted(28, 57) Source(44, 66) + SourceIndex(0) +13>Emitted(28, 61) Source(44, 82) + SourceIndex(0) +14>Emitted(28, 62) Source(44, 83) + SourceIndex(0) +--- +>>> _j = _h[_g].skills, primaryA = _j.primary, secondaryA = _j.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills +3 > : { +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1->Emitted(29, 5) Source(44, 8) + SourceIndex(0) +2 >Emitted(29, 23) Source(44, 14) + SourceIndex(0) +3 >Emitted(29, 25) Source(44, 18) + SourceIndex(0) +4 >Emitted(29, 46) Source(44, 35) + SourceIndex(0) +5 >Emitted(29, 48) Source(44, 37) + SourceIndex(0) +6 >Emitted(29, 73) Source(44, 58) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(30, 5) Source(45, 5) + SourceIndex(0) +2 >Emitted(30, 12) Source(45, 12) + SourceIndex(0) +3 >Emitted(30, 13) Source(45, 13) + SourceIndex(0) +4 >Emitted(30, 16) Source(45, 16) + SourceIndex(0) +5 >Emitted(30, 17) Source(45, 17) + SourceIndex(0) +6 >Emitted(30, 25) Source(45, 25) + SourceIndex(0) +7 >Emitted(30, 26) Source(45, 26) + SourceIndex(0) +8 >Emitted(30, 27) Source(45, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(31, 2) Source(46, 2) + SourceIndex(0) +--- +>>>for (var _k = 0, _l = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary: primaryA, secondary: secondaryA } } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(32, 1) Source(47, 1) + SourceIndex(0) +2 >Emitted(32, 4) Source(47, 4) + SourceIndex(0) +3 >Emitted(32, 5) Source(47, 5) + SourceIndex(0) +4 >Emitted(32, 6) Source(47, 66) + SourceIndex(0) +5 >Emitted(32, 16) Source(48, 79) + SourceIndex(0) +6 >Emitted(32, 18) Source(47, 66) + SourceIndex(0) +7 >Emitted(32, 24) Source(47, 67) + SourceIndex(0) +8 >Emitted(32, 26) Source(47, 69) + SourceIndex(0) +9 >Emitted(32, 30) Source(47, 73) + SourceIndex(0) +10>Emitted(32, 32) Source(47, 75) + SourceIndex(0) +11>Emitted(32, 39) Source(47, 82) + SourceIndex(0) +12>Emitted(32, 41) Source(47, 84) + SourceIndex(0) +13>Emitted(32, 47) Source(47, 90) + SourceIndex(0) +14>Emitted(32, 49) Source(47, 92) + SourceIndex(0) +15>Emitted(32, 51) Source(47, 94) + SourceIndex(0) +16>Emitted(32, 58) Source(47, 101) + SourceIndex(0) +17>Emitted(32, 60) Source(47, 103) + SourceIndex(0) +18>Emitted(32, 68) Source(47, 111) + SourceIndex(0) +19>Emitted(32, 70) Source(47, 113) + SourceIndex(0) +20>Emitted(32, 79) Source(47, 122) + SourceIndex(0) +21>Emitted(32, 81) Source(47, 124) + SourceIndex(0) +22>Emitted(32, 87) Source(47, 130) + SourceIndex(0) +23>Emitted(32, 89) Source(47, 132) + SourceIndex(0) +24>Emitted(32, 91) Source(47, 134) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _k < _l.length; _k++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^ +24> ^ +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(33, 5) Source(48, 5) + SourceIndex(0) +2 >Emitted(33, 7) Source(48, 7) + SourceIndex(0) +3 >Emitted(33, 11) Source(48, 11) + SourceIndex(0) +4 >Emitted(33, 13) Source(48, 13) + SourceIndex(0) +5 >Emitted(33, 22) Source(48, 22) + SourceIndex(0) +6 >Emitted(33, 24) Source(48, 24) + SourceIndex(0) +7 >Emitted(33, 30) Source(48, 30) + SourceIndex(0) +8 >Emitted(33, 32) Source(48, 32) + SourceIndex(0) +9 >Emitted(33, 34) Source(48, 34) + SourceIndex(0) +10>Emitted(33, 41) Source(48, 41) + SourceIndex(0) +11>Emitted(33, 43) Source(48, 43) + SourceIndex(0) +12>Emitted(33, 53) Source(48, 53) + SourceIndex(0) +13>Emitted(33, 55) Source(48, 55) + SourceIndex(0) +14>Emitted(33, 64) Source(48, 64) + SourceIndex(0) +15>Emitted(33, 66) Source(48, 66) + SourceIndex(0) +16>Emitted(33, 74) Source(48, 74) + SourceIndex(0) +17>Emitted(33, 76) Source(48, 76) + SourceIndex(0) +18>Emitted(33, 78) Source(48, 78) + SourceIndex(0) +19>Emitted(33, 79) Source(48, 79) + SourceIndex(0) +20>Emitted(33, 81) Source(47, 66) + SourceIndex(0) +21>Emitted(33, 95) Source(48, 79) + SourceIndex(0) +22>Emitted(33, 97) Source(47, 66) + SourceIndex(0) +23>Emitted(33, 101) Source(48, 79) + SourceIndex(0) +24>Emitted(33, 102) Source(48, 80) + SourceIndex(0) +--- +>>> _m = _l[_k].skills, primaryA = _m.primary, secondaryA = _m.secondary; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > skills +3 > : { +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1 >Emitted(34, 5) Source(47, 8) + SourceIndex(0) +2 >Emitted(34, 23) Source(47, 14) + SourceIndex(0) +3 >Emitted(34, 25) Source(47, 18) + SourceIndex(0) +4 >Emitted(34, 46) Source(47, 35) + SourceIndex(0) +5 >Emitted(34, 48) Source(47, 37) + SourceIndex(0) +6 >Emitted(34, 73) Source(47, 58) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(35, 5) Source(49, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(49, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(49, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(49, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(49, 17) + SourceIndex(0) +6 >Emitted(35, 25) Source(49, 25) + SourceIndex(0) +7 >Emitted(35, 26) Source(49, 26) + SourceIndex(0) +8 >Emitted(35, 27) Source(49, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(36, 2) Source(50, 2) + SourceIndex(0) +--- +>>>for (var _o = 0, robots_2 = robots; _o < robots_2.length; _o++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > ({name } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(37, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(51, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(51, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(51, 17) + SourceIndex(0) +5 >Emitted(37, 16) Source(51, 23) + SourceIndex(0) +6 >Emitted(37, 18) Source(51, 17) + SourceIndex(0) +7 >Emitted(37, 35) Source(51, 23) + SourceIndex(0) +8 >Emitted(37, 37) Source(51, 17) + SourceIndex(0) +9 >Emitted(37, 57) Source(51, 23) + SourceIndex(0) +10>Emitted(37, 59) Source(51, 17) + SourceIndex(0) +11>Emitted(37, 63) Source(51, 23) + SourceIndex(0) +12>Emitted(37, 64) Source(51, 24) + SourceIndex(0) +--- +>>> name = robots_2[_o].name; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > {name } +1 >Emitted(38, 5) Source(51, 6) + SourceIndex(0) +2 >Emitted(38, 29) Source(51, 13) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(39, 5) Source(52, 5) + SourceIndex(0) +2 >Emitted(39, 12) Source(52, 12) + SourceIndex(0) +3 >Emitted(39, 13) Source(52, 13) + SourceIndex(0) +4 >Emitted(39, 16) Source(52, 16) + SourceIndex(0) +5 >Emitted(39, 17) Source(52, 17) + SourceIndex(0) +6 >Emitted(39, 22) Source(52, 22) + SourceIndex(0) +7 >Emitted(39, 23) Source(52, 23) + SourceIndex(0) +8 >Emitted(39, 24) Source(52, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(40, 2) Source(53, 2) + SourceIndex(0) +--- +>>>for (var _p = 0, _q = getRobots(); _p < _q.length; _p++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ({name } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(41, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(41, 4) Source(54, 4) + SourceIndex(0) +3 >Emitted(41, 5) Source(54, 5) + SourceIndex(0) +4 >Emitted(41, 6) Source(54, 17) + SourceIndex(0) +5 >Emitted(41, 16) Source(54, 28) + SourceIndex(0) +6 >Emitted(41, 18) Source(54, 17) + SourceIndex(0) +7 >Emitted(41, 23) Source(54, 17) + SourceIndex(0) +8 >Emitted(41, 32) Source(54, 26) + SourceIndex(0) +9 >Emitted(41, 34) Source(54, 28) + SourceIndex(0) +10>Emitted(41, 36) Source(54, 17) + SourceIndex(0) +11>Emitted(41, 50) Source(54, 28) + SourceIndex(0) +12>Emitted(41, 52) Source(54, 17) + SourceIndex(0) +13>Emitted(41, 56) Source(54, 28) + SourceIndex(0) +14>Emitted(41, 57) Source(54, 29) + SourceIndex(0) +--- +>>> name = _q[_p].name; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^-> +1 > +2 > {name } +1 >Emitted(42, 5) Source(54, 6) + SourceIndex(0) +2 >Emitted(42, 23) Source(54, 13) + SourceIndex(0) +--- +>>> console.log(nameA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1->Emitted(43, 5) Source(55, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(55, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(55, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(55, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(55, 17) + SourceIndex(0) +6 >Emitted(43, 22) Source(55, 22) + SourceIndex(0) +7 >Emitted(43, 23) Source(55, 23) + SourceIndex(0) +8 >Emitted(43, 24) Source(55, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(44, 2) Source(56, 2) + SourceIndex(0) +--- +>>>for (var _r = 0, _s = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _r < _s.length; _r++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > ({name } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(45, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(57, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(57, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(57, 17) + SourceIndex(0) +5 >Emitted(45, 16) Source(57, 93) + SourceIndex(0) +6 >Emitted(45, 18) Source(57, 17) + SourceIndex(0) +7 >Emitted(45, 24) Source(57, 18) + SourceIndex(0) +8 >Emitted(45, 26) Source(57, 20) + SourceIndex(0) +9 >Emitted(45, 30) Source(57, 24) + SourceIndex(0) +10>Emitted(45, 32) Source(57, 26) + SourceIndex(0) +11>Emitted(45, 39) Source(57, 33) + SourceIndex(0) +12>Emitted(45, 41) Source(57, 35) + SourceIndex(0) +13>Emitted(45, 46) Source(57, 40) + SourceIndex(0) +14>Emitted(45, 48) Source(57, 42) + SourceIndex(0) +15>Emitted(45, 56) Source(57, 50) + SourceIndex(0) +16>Emitted(45, 58) Source(57, 52) + SourceIndex(0) +17>Emitted(45, 60) Source(57, 54) + SourceIndex(0) +18>Emitted(45, 62) Source(57, 56) + SourceIndex(0) +19>Emitted(45, 66) Source(57, 60) + SourceIndex(0) +20>Emitted(45, 68) Source(57, 62) + SourceIndex(0) +21>Emitted(45, 77) Source(57, 71) + SourceIndex(0) +22>Emitted(45, 79) Source(57, 73) + SourceIndex(0) +23>Emitted(45, 84) Source(57, 78) + SourceIndex(0) +24>Emitted(45, 86) Source(57, 80) + SourceIndex(0) +25>Emitted(45, 96) Source(57, 90) + SourceIndex(0) +26>Emitted(45, 98) Source(57, 92) + SourceIndex(0) +27>Emitted(45, 99) Source(57, 93) + SourceIndex(0) +28>Emitted(45, 101) Source(57, 17) + SourceIndex(0) +29>Emitted(45, 115) Source(57, 93) + SourceIndex(0) +30>Emitted(45, 117) Source(57, 17) + SourceIndex(0) +31>Emitted(45, 121) Source(57, 93) + SourceIndex(0) +32>Emitted(45, 122) Source(57, 94) + SourceIndex(0) +--- +>>> name = _s[_r].name; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^-> +1 > +2 > {name } +1 >Emitted(46, 5) Source(57, 6) + SourceIndex(0) +2 >Emitted(46, 23) Source(57, 13) + SourceIndex(0) +--- +>>> console.log(nameA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1->Emitted(47, 5) Source(58, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(58, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(58, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(58, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(58, 17) + SourceIndex(0) +6 >Emitted(47, 22) Source(58, 22) + SourceIndex(0) +7 >Emitted(47, 23) Source(58, 23) + SourceIndex(0) +8 >Emitted(47, 24) Source(58, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(48, 2) Source(59, 2) + SourceIndex(0) +--- +>>>for (var _t = 0, multiRobots_2 = multiRobots; _t < multiRobots_2.length; _t++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary, secondary } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(49, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(60, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(60, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(60, 44) + SourceIndex(0) +5 >Emitted(49, 16) Source(60, 55) + SourceIndex(0) +6 >Emitted(49, 18) Source(60, 44) + SourceIndex(0) +7 >Emitted(49, 45) Source(60, 55) + SourceIndex(0) +8 >Emitted(49, 47) Source(60, 44) + SourceIndex(0) +9 >Emitted(49, 72) Source(60, 55) + SourceIndex(0) +10>Emitted(49, 74) Source(60, 44) + SourceIndex(0) +11>Emitted(49, 78) Source(60, 55) + SourceIndex(0) +12>Emitted(49, 79) Source(60, 56) + SourceIndex(0) +--- +>>> _u = multiRobots_2[_t].skills, primary = _u.primary, secondary = _u.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills +3 > : { +4 > primary +5 > , +6 > secondary +1->Emitted(50, 5) Source(60, 8) + SourceIndex(0) +2 >Emitted(50, 34) Source(60, 14) + SourceIndex(0) +3 >Emitted(50, 36) Source(60, 18) + SourceIndex(0) +4 >Emitted(50, 56) Source(60, 25) + SourceIndex(0) +5 >Emitted(50, 58) Source(60, 27) + SourceIndex(0) +6 >Emitted(50, 82) Source(60, 36) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(51, 5) Source(61, 5) + SourceIndex(0) +2 >Emitted(51, 12) Source(61, 12) + SourceIndex(0) +3 >Emitted(51, 13) Source(61, 13) + SourceIndex(0) +4 >Emitted(51, 16) Source(61, 16) + SourceIndex(0) +5 >Emitted(51, 17) Source(61, 17) + SourceIndex(0) +6 >Emitted(51, 25) Source(61, 25) + SourceIndex(0) +7 >Emitted(51, 26) Source(61, 26) + SourceIndex(0) +8 >Emitted(51, 27) Source(61, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(52, 2) Source(62, 2) + SourceIndex(0) +--- +>>>for (var _v = 0, _w = getMultiRobots(); _v < _w.length; _v++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary, secondary } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(53, 1) Source(63, 1) + SourceIndex(0) +2 >Emitted(53, 4) Source(63, 4) + SourceIndex(0) +3 >Emitted(53, 5) Source(63, 5) + SourceIndex(0) +4 >Emitted(53, 6) Source(63, 44) + SourceIndex(0) +5 >Emitted(53, 16) Source(63, 60) + SourceIndex(0) +6 >Emitted(53, 18) Source(63, 44) + SourceIndex(0) +7 >Emitted(53, 23) Source(63, 44) + SourceIndex(0) +8 >Emitted(53, 37) Source(63, 58) + SourceIndex(0) +9 >Emitted(53, 39) Source(63, 60) + SourceIndex(0) +10>Emitted(53, 41) Source(63, 44) + SourceIndex(0) +11>Emitted(53, 55) Source(63, 60) + SourceIndex(0) +12>Emitted(53, 57) Source(63, 44) + SourceIndex(0) +13>Emitted(53, 61) Source(63, 60) + SourceIndex(0) +14>Emitted(53, 62) Source(63, 61) + SourceIndex(0) +--- +>>> _x = _w[_v].skills, primary = _x.primary, secondary = _x.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills +3 > : { +4 > primary +5 > , +6 > secondary +1->Emitted(54, 5) Source(63, 8) + SourceIndex(0) +2 >Emitted(54, 23) Source(63, 14) + SourceIndex(0) +3 >Emitted(54, 25) Source(63, 18) + SourceIndex(0) +4 >Emitted(54, 45) Source(63, 25) + SourceIndex(0) +5 >Emitted(54, 47) Source(63, 27) + SourceIndex(0) +6 >Emitted(54, 71) Source(63, 36) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(55, 5) Source(64, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(64, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(64, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(64, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(64, 17) + SourceIndex(0) +6 >Emitted(55, 25) Source(64, 25) + SourceIndex(0) +7 >Emitted(55, 26) Source(64, 26) + SourceIndex(0) +8 >Emitted(55, 27) Source(64, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(56, 2) Source(65, 2) + SourceIndex(0) +--- +>>>for (var _y = 0, _z = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary, secondary } } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(57, 1) Source(66, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(66, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(66, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(66, 44) + SourceIndex(0) +5 >Emitted(57, 16) Source(67, 79) + SourceIndex(0) +6 >Emitted(57, 18) Source(66, 44) + SourceIndex(0) +7 >Emitted(57, 24) Source(66, 45) + SourceIndex(0) +8 >Emitted(57, 26) Source(66, 47) + SourceIndex(0) +9 >Emitted(57, 30) Source(66, 51) + SourceIndex(0) +10>Emitted(57, 32) Source(66, 53) + SourceIndex(0) +11>Emitted(57, 39) Source(66, 60) + SourceIndex(0) +12>Emitted(57, 41) Source(66, 62) + SourceIndex(0) +13>Emitted(57, 47) Source(66, 68) + SourceIndex(0) +14>Emitted(57, 49) Source(66, 70) + SourceIndex(0) +15>Emitted(57, 51) Source(66, 72) + SourceIndex(0) +16>Emitted(57, 58) Source(66, 79) + SourceIndex(0) +17>Emitted(57, 60) Source(66, 81) + SourceIndex(0) +18>Emitted(57, 68) Source(66, 89) + SourceIndex(0) +19>Emitted(57, 70) Source(66, 91) + SourceIndex(0) +20>Emitted(57, 79) Source(66, 100) + SourceIndex(0) +21>Emitted(57, 81) Source(66, 102) + SourceIndex(0) +22>Emitted(57, 87) Source(66, 108) + SourceIndex(0) +23>Emitted(57, 89) Source(66, 110) + SourceIndex(0) +24>Emitted(57, 91) Source(66, 112) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _y < _z.length; _y++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^ +24> ^ +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(58, 5) Source(67, 5) + SourceIndex(0) +2 >Emitted(58, 7) Source(67, 7) + SourceIndex(0) +3 >Emitted(58, 11) Source(67, 11) + SourceIndex(0) +4 >Emitted(58, 13) Source(67, 13) + SourceIndex(0) +5 >Emitted(58, 22) Source(67, 22) + SourceIndex(0) +6 >Emitted(58, 24) Source(67, 24) + SourceIndex(0) +7 >Emitted(58, 30) Source(67, 30) + SourceIndex(0) +8 >Emitted(58, 32) Source(67, 32) + SourceIndex(0) +9 >Emitted(58, 34) Source(67, 34) + SourceIndex(0) +10>Emitted(58, 41) Source(67, 41) + SourceIndex(0) +11>Emitted(58, 43) Source(67, 43) + SourceIndex(0) +12>Emitted(58, 53) Source(67, 53) + SourceIndex(0) +13>Emitted(58, 55) Source(67, 55) + SourceIndex(0) +14>Emitted(58, 64) Source(67, 64) + SourceIndex(0) +15>Emitted(58, 66) Source(67, 66) + SourceIndex(0) +16>Emitted(58, 74) Source(67, 74) + SourceIndex(0) +17>Emitted(58, 76) Source(67, 76) + SourceIndex(0) +18>Emitted(58, 78) Source(67, 78) + SourceIndex(0) +19>Emitted(58, 79) Source(67, 79) + SourceIndex(0) +20>Emitted(58, 81) Source(66, 44) + SourceIndex(0) +21>Emitted(58, 95) Source(67, 79) + SourceIndex(0) +22>Emitted(58, 97) Source(66, 44) + SourceIndex(0) +23>Emitted(58, 101) Source(67, 79) + SourceIndex(0) +24>Emitted(58, 102) Source(67, 80) + SourceIndex(0) +--- +>>> _0 = _z[_y].skills, primary = _0.primary, secondary = _0.secondary; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > skills +3 > : { +4 > primary +5 > , +6 > secondary +1 >Emitted(59, 5) Source(66, 8) + SourceIndex(0) +2 >Emitted(59, 23) Source(66, 14) + SourceIndex(0) +3 >Emitted(59, 25) Source(66, 18) + SourceIndex(0) +4 >Emitted(59, 45) Source(66, 25) + SourceIndex(0) +5 >Emitted(59, 47) Source(66, 27) + SourceIndex(0) +6 >Emitted(59, 71) Source(66, 36) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(60, 5) Source(68, 5) + SourceIndex(0) +2 >Emitted(60, 12) Source(68, 12) + SourceIndex(0) +3 >Emitted(60, 13) Source(68, 13) + SourceIndex(0) +4 >Emitted(60, 16) Source(68, 16) + SourceIndex(0) +5 >Emitted(60, 17) Source(68, 17) + SourceIndex(0) +6 >Emitted(60, 25) Source(68, 25) + SourceIndex(0) +7 >Emitted(60, 26) Source(68, 26) + SourceIndex(0) +8 >Emitted(60, 27) Source(68, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(61, 2) Source(69, 2) + SourceIndex(0) +--- +>>>for (var _1 = 0, robots_3 = robots; _1 < robots_3.length; _1++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > + > +2 >for +3 > +4 > ({name: nameA, skill: skillA } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(62, 1) Source(72, 1) + SourceIndex(0) +2 >Emitted(62, 4) Source(72, 4) + SourceIndex(0) +3 >Emitted(62, 5) Source(72, 5) + SourceIndex(0) +4 >Emitted(62, 6) Source(72, 39) + SourceIndex(0) +5 >Emitted(62, 16) Source(72, 45) + SourceIndex(0) +6 >Emitted(62, 18) Source(72, 39) + SourceIndex(0) +7 >Emitted(62, 35) Source(72, 45) + SourceIndex(0) +8 >Emitted(62, 37) Source(72, 39) + SourceIndex(0) +9 >Emitted(62, 57) Source(72, 45) + SourceIndex(0) +10>Emitted(62, 59) Source(72, 39) + SourceIndex(0) +11>Emitted(62, 63) Source(72, 45) + SourceIndex(0) +12>Emitted(62, 64) Source(72, 46) + SourceIndex(0) +--- +>>> _2 = robots_3[_1], nameA = _2.name, skillA = _2.skill; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +1 > +2 > {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA +1 >Emitted(63, 5) Source(72, 6) + SourceIndex(0) +2 >Emitted(63, 22) Source(72, 35) + SourceIndex(0) +3 >Emitted(63, 24) Source(72, 7) + SourceIndex(0) +4 >Emitted(63, 39) Source(72, 18) + SourceIndex(0) +5 >Emitted(63, 41) Source(72, 20) + SourceIndex(0) +6 >Emitted(63, 58) Source(72, 33) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(64, 5) Source(73, 5) + SourceIndex(0) +2 >Emitted(64, 12) Source(73, 12) + SourceIndex(0) +3 >Emitted(64, 13) Source(73, 13) + SourceIndex(0) +4 >Emitted(64, 16) Source(73, 16) + SourceIndex(0) +5 >Emitted(64, 17) Source(73, 17) + SourceIndex(0) +6 >Emitted(64, 22) Source(73, 22) + SourceIndex(0) +7 >Emitted(64, 23) Source(73, 23) + SourceIndex(0) +8 >Emitted(64, 24) Source(73, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(65, 2) Source(74, 2) + SourceIndex(0) +--- +>>>for (var _3 = 0, _4 = getRobots(); _3 < _4.length; _3++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ({name: nameA, skill: skillA } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(66, 1) Source(75, 1) + SourceIndex(0) +2 >Emitted(66, 4) Source(75, 4) + SourceIndex(0) +3 >Emitted(66, 5) Source(75, 5) + SourceIndex(0) +4 >Emitted(66, 6) Source(75, 39) + SourceIndex(0) +5 >Emitted(66, 16) Source(75, 50) + SourceIndex(0) +6 >Emitted(66, 18) Source(75, 39) + SourceIndex(0) +7 >Emitted(66, 23) Source(75, 39) + SourceIndex(0) +8 >Emitted(66, 32) Source(75, 48) + SourceIndex(0) +9 >Emitted(66, 34) Source(75, 50) + SourceIndex(0) +10>Emitted(66, 36) Source(75, 39) + SourceIndex(0) +11>Emitted(66, 50) Source(75, 50) + SourceIndex(0) +12>Emitted(66, 52) Source(75, 39) + SourceIndex(0) +13>Emitted(66, 56) Source(75, 50) + SourceIndex(0) +14>Emitted(66, 57) Source(75, 51) + SourceIndex(0) +--- +>>> _5 = _4[_3], nameA = _5.name, skillA = _5.skill; +1 >^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +1 > +2 > {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA +1 >Emitted(67, 5) Source(75, 6) + SourceIndex(0) +2 >Emitted(67, 16) Source(75, 35) + SourceIndex(0) +3 >Emitted(67, 18) Source(75, 7) + SourceIndex(0) +4 >Emitted(67, 33) Source(75, 18) + SourceIndex(0) +5 >Emitted(67, 35) Source(75, 20) + SourceIndex(0) +6 >Emitted(67, 52) Source(75, 33) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(68, 5) Source(76, 5) + SourceIndex(0) +2 >Emitted(68, 12) Source(76, 12) + SourceIndex(0) +3 >Emitted(68, 13) Source(76, 13) + SourceIndex(0) +4 >Emitted(68, 16) Source(76, 16) + SourceIndex(0) +5 >Emitted(68, 17) Source(76, 17) + SourceIndex(0) +6 >Emitted(68, 22) Source(76, 22) + SourceIndex(0) +7 >Emitted(68, 23) Source(76, 23) + SourceIndex(0) +8 >Emitted(68, 24) Source(76, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(69, 2) Source(77, 2) + SourceIndex(0) +--- +>>>for (var _6 = 0, _7 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _6 < _7.length; _6++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > ({name: nameA, skill: skillA } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(70, 1) Source(78, 1) + SourceIndex(0) +2 >Emitted(70, 4) Source(78, 4) + SourceIndex(0) +3 >Emitted(70, 5) Source(78, 5) + SourceIndex(0) +4 >Emitted(70, 6) Source(78, 39) + SourceIndex(0) +5 >Emitted(70, 16) Source(78, 115) + SourceIndex(0) +6 >Emitted(70, 18) Source(78, 39) + SourceIndex(0) +7 >Emitted(70, 24) Source(78, 40) + SourceIndex(0) +8 >Emitted(70, 26) Source(78, 42) + SourceIndex(0) +9 >Emitted(70, 30) Source(78, 46) + SourceIndex(0) +10>Emitted(70, 32) Source(78, 48) + SourceIndex(0) +11>Emitted(70, 39) Source(78, 55) + SourceIndex(0) +12>Emitted(70, 41) Source(78, 57) + SourceIndex(0) +13>Emitted(70, 46) Source(78, 62) + SourceIndex(0) +14>Emitted(70, 48) Source(78, 64) + SourceIndex(0) +15>Emitted(70, 56) Source(78, 72) + SourceIndex(0) +16>Emitted(70, 58) Source(78, 74) + SourceIndex(0) +17>Emitted(70, 60) Source(78, 76) + SourceIndex(0) +18>Emitted(70, 62) Source(78, 78) + SourceIndex(0) +19>Emitted(70, 66) Source(78, 82) + SourceIndex(0) +20>Emitted(70, 68) Source(78, 84) + SourceIndex(0) +21>Emitted(70, 77) Source(78, 93) + SourceIndex(0) +22>Emitted(70, 79) Source(78, 95) + SourceIndex(0) +23>Emitted(70, 84) Source(78, 100) + SourceIndex(0) +24>Emitted(70, 86) Source(78, 102) + SourceIndex(0) +25>Emitted(70, 96) Source(78, 112) + SourceIndex(0) +26>Emitted(70, 98) Source(78, 114) + SourceIndex(0) +27>Emitted(70, 99) Source(78, 115) + SourceIndex(0) +28>Emitted(70, 101) Source(78, 39) + SourceIndex(0) +29>Emitted(70, 115) Source(78, 115) + SourceIndex(0) +30>Emitted(70, 117) Source(78, 39) + SourceIndex(0) +31>Emitted(70, 121) Source(78, 115) + SourceIndex(0) +32>Emitted(70, 122) Source(78, 116) + SourceIndex(0) +--- +>>> _8 = _7[_6], nameA = _8.name, skillA = _8.skill; +1 >^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +1 > +2 > {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA +1 >Emitted(71, 5) Source(78, 6) + SourceIndex(0) +2 >Emitted(71, 16) Source(78, 35) + SourceIndex(0) +3 >Emitted(71, 18) Source(78, 7) + SourceIndex(0) +4 >Emitted(71, 33) Source(78, 18) + SourceIndex(0) +5 >Emitted(71, 35) Source(78, 20) + SourceIndex(0) +6 >Emitted(71, 52) Source(78, 33) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(72, 5) Source(79, 5) + SourceIndex(0) +2 >Emitted(72, 12) Source(79, 12) + SourceIndex(0) +3 >Emitted(72, 13) Source(79, 13) + SourceIndex(0) +4 >Emitted(72, 16) Source(79, 16) + SourceIndex(0) +5 >Emitted(72, 17) Source(79, 17) + SourceIndex(0) +6 >Emitted(72, 22) Source(79, 22) + SourceIndex(0) +7 >Emitted(72, 23) Source(79, 23) + SourceIndex(0) +8 >Emitted(72, 24) Source(79, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(73, 2) Source(80, 2) + SourceIndex(0) +--- +>>>for (var _9 = 0, multiRobots_3 = multiRobots; _9 < multiRobots_3.length; _9++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(74, 1) Source(81, 1) + SourceIndex(0) +2 >Emitted(74, 4) Source(81, 4) + SourceIndex(0) +3 >Emitted(74, 5) Source(81, 5) + SourceIndex(0) +4 >Emitted(74, 6) Source(81, 78) + SourceIndex(0) +5 >Emitted(74, 16) Source(81, 89) + SourceIndex(0) +6 >Emitted(74, 18) Source(81, 78) + SourceIndex(0) +7 >Emitted(74, 45) Source(81, 89) + SourceIndex(0) +8 >Emitted(74, 47) Source(81, 78) + SourceIndex(0) +9 >Emitted(74, 72) Source(81, 89) + SourceIndex(0) +10>Emitted(74, 74) Source(81, 78) + SourceIndex(0) +11>Emitted(74, 78) Source(81, 89) + SourceIndex(0) +12>Emitted(74, 79) Source(81, 90) + SourceIndex(0) +--- +>>> _10 = multiRobots_3[_9], nameA = _10.name, _11 = _10.skills, primaryA = _11.primary, secondaryA = _11.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills +7 > : { +8 > primary: primaryA +9 > , +10> secondary: secondaryA +1->Emitted(75, 5) Source(81, 6) + SourceIndex(0) +2 >Emitted(75, 28) Source(81, 74) + SourceIndex(0) +3 >Emitted(75, 30) Source(81, 7) + SourceIndex(0) +4 >Emitted(75, 46) Source(81, 18) + SourceIndex(0) +5 >Emitted(75, 48) Source(81, 20) + SourceIndex(0) +6 >Emitted(75, 64) Source(81, 26) + SourceIndex(0) +7 >Emitted(75, 66) Source(81, 30) + SourceIndex(0) +8 >Emitted(75, 88) Source(81, 47) + SourceIndex(0) +9 >Emitted(75, 90) Source(81, 49) + SourceIndex(0) +10>Emitted(75, 116) Source(81, 70) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(76, 5) Source(82, 5) + SourceIndex(0) +2 >Emitted(76, 12) Source(82, 12) + SourceIndex(0) +3 >Emitted(76, 13) Source(82, 13) + SourceIndex(0) +4 >Emitted(76, 16) Source(82, 16) + SourceIndex(0) +5 >Emitted(76, 17) Source(82, 17) + SourceIndex(0) +6 >Emitted(76, 22) Source(82, 22) + SourceIndex(0) +7 >Emitted(76, 23) Source(82, 23) + SourceIndex(0) +8 >Emitted(76, 24) Source(82, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(77, 2) Source(83, 2) + SourceIndex(0) +--- +>>>for (var _12 = 0, _13 = getMultiRobots(); _12 < _13.length; _12++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(78, 1) Source(84, 1) + SourceIndex(0) +2 >Emitted(78, 4) Source(84, 4) + SourceIndex(0) +3 >Emitted(78, 5) Source(84, 5) + SourceIndex(0) +4 >Emitted(78, 6) Source(84, 78) + SourceIndex(0) +5 >Emitted(78, 17) Source(84, 94) + SourceIndex(0) +6 >Emitted(78, 19) Source(84, 78) + SourceIndex(0) +7 >Emitted(78, 25) Source(84, 78) + SourceIndex(0) +8 >Emitted(78, 39) Source(84, 92) + SourceIndex(0) +9 >Emitted(78, 41) Source(84, 94) + SourceIndex(0) +10>Emitted(78, 43) Source(84, 78) + SourceIndex(0) +11>Emitted(78, 59) Source(84, 94) + SourceIndex(0) +12>Emitted(78, 61) Source(84, 78) + SourceIndex(0) +13>Emitted(78, 66) Source(84, 94) + SourceIndex(0) +14>Emitted(78, 67) Source(84, 95) + SourceIndex(0) +--- +>>> _14 = _13[_12], nameA = _14.name, _15 = _14.skills, primaryA = _15.primary, secondaryA = _15.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills +7 > : { +8 > primary: primaryA +9 > , +10> secondary: secondaryA +1->Emitted(79, 5) Source(84, 6) + SourceIndex(0) +2 >Emitted(79, 19) Source(84, 74) + SourceIndex(0) +3 >Emitted(79, 21) Source(84, 7) + SourceIndex(0) +4 >Emitted(79, 37) Source(84, 18) + SourceIndex(0) +5 >Emitted(79, 39) Source(84, 20) + SourceIndex(0) +6 >Emitted(79, 55) Source(84, 26) + SourceIndex(0) +7 >Emitted(79, 57) Source(84, 30) + SourceIndex(0) +8 >Emitted(79, 79) Source(84, 47) + SourceIndex(0) +9 >Emitted(79, 81) Source(84, 49) + SourceIndex(0) +10>Emitted(79, 107) Source(84, 70) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(80, 5) Source(85, 5) + SourceIndex(0) +2 >Emitted(80, 12) Source(85, 12) + SourceIndex(0) +3 >Emitted(80, 13) Source(85, 13) + SourceIndex(0) +4 >Emitted(80, 16) Source(85, 16) + SourceIndex(0) +5 >Emitted(80, 17) Source(85, 17) + SourceIndex(0) +6 >Emitted(80, 22) Source(85, 22) + SourceIndex(0) +7 >Emitted(80, 23) Source(85, 23) + SourceIndex(0) +8 >Emitted(80, 24) Source(85, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(81, 2) Source(86, 2) + SourceIndex(0) +--- +>>>for (var _16 = 0, _17 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(82, 1) Source(87, 1) + SourceIndex(0) +2 >Emitted(82, 4) Source(87, 4) + SourceIndex(0) +3 >Emitted(82, 5) Source(87, 5) + SourceIndex(0) +4 >Emitted(82, 6) Source(87, 78) + SourceIndex(0) +5 >Emitted(82, 17) Source(88, 79) + SourceIndex(0) +6 >Emitted(82, 19) Source(87, 78) + SourceIndex(0) +7 >Emitted(82, 26) Source(87, 79) + SourceIndex(0) +8 >Emitted(82, 28) Source(87, 81) + SourceIndex(0) +9 >Emitted(82, 32) Source(87, 85) + SourceIndex(0) +10>Emitted(82, 34) Source(87, 87) + SourceIndex(0) +11>Emitted(82, 41) Source(87, 94) + SourceIndex(0) +12>Emitted(82, 43) Source(87, 96) + SourceIndex(0) +13>Emitted(82, 49) Source(87, 102) + SourceIndex(0) +14>Emitted(82, 51) Source(87, 104) + SourceIndex(0) +15>Emitted(82, 53) Source(87, 106) + SourceIndex(0) +16>Emitted(82, 60) Source(87, 113) + SourceIndex(0) +17>Emitted(82, 62) Source(87, 115) + SourceIndex(0) +18>Emitted(82, 70) Source(87, 123) + SourceIndex(0) +19>Emitted(82, 72) Source(87, 125) + SourceIndex(0) +20>Emitted(82, 81) Source(87, 134) + SourceIndex(0) +21>Emitted(82, 83) Source(87, 136) + SourceIndex(0) +22>Emitted(82, 89) Source(87, 142) + SourceIndex(0) +23>Emitted(82, 91) Source(87, 144) + SourceIndex(0) +24>Emitted(82, 93) Source(87, 146) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _16 < _17.length; _16++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^ +25> ^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(83, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(83, 7) Source(88, 7) + SourceIndex(0) +3 >Emitted(83, 11) Source(88, 11) + SourceIndex(0) +4 >Emitted(83, 13) Source(88, 13) + SourceIndex(0) +5 >Emitted(83, 22) Source(88, 22) + SourceIndex(0) +6 >Emitted(83, 24) Source(88, 24) + SourceIndex(0) +7 >Emitted(83, 30) Source(88, 30) + SourceIndex(0) +8 >Emitted(83, 32) Source(88, 32) + SourceIndex(0) +9 >Emitted(83, 34) Source(88, 34) + SourceIndex(0) +10>Emitted(83, 41) Source(88, 41) + SourceIndex(0) +11>Emitted(83, 43) Source(88, 43) + SourceIndex(0) +12>Emitted(83, 53) Source(88, 53) + SourceIndex(0) +13>Emitted(83, 55) Source(88, 55) + SourceIndex(0) +14>Emitted(83, 64) Source(88, 64) + SourceIndex(0) +15>Emitted(83, 66) Source(88, 66) + SourceIndex(0) +16>Emitted(83, 74) Source(88, 74) + SourceIndex(0) +17>Emitted(83, 76) Source(88, 76) + SourceIndex(0) +18>Emitted(83, 78) Source(88, 78) + SourceIndex(0) +19>Emitted(83, 79) Source(88, 79) + SourceIndex(0) +20>Emitted(83, 81) Source(87, 78) + SourceIndex(0) +21>Emitted(83, 97) Source(88, 79) + SourceIndex(0) +22>Emitted(83, 99) Source(87, 78) + SourceIndex(0) +23>Emitted(83, 104) Source(88, 79) + SourceIndex(0) +24>Emitted(83, 105) Source(88, 80) + SourceIndex(0) +--- +>>> _18 = _17[_16], nameA = _18.name, _19 = _18.skills, primaryA = _19.primary, secondaryA = _19.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills +7 > : { +8 > primary: primaryA +9 > , +10> secondary: secondaryA +1->Emitted(84, 5) Source(87, 6) + SourceIndex(0) +2 >Emitted(84, 19) Source(87, 74) + SourceIndex(0) +3 >Emitted(84, 21) Source(87, 7) + SourceIndex(0) +4 >Emitted(84, 37) Source(87, 18) + SourceIndex(0) +5 >Emitted(84, 39) Source(87, 20) + SourceIndex(0) +6 >Emitted(84, 55) Source(87, 26) + SourceIndex(0) +7 >Emitted(84, 57) Source(87, 30) + SourceIndex(0) +8 >Emitted(84, 79) Source(87, 47) + SourceIndex(0) +9 >Emitted(84, 81) Source(87, 49) + SourceIndex(0) +10>Emitted(84, 107) Source(87, 70) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(85, 5) Source(89, 5) + SourceIndex(0) +2 >Emitted(85, 12) Source(89, 12) + SourceIndex(0) +3 >Emitted(85, 13) Source(89, 13) + SourceIndex(0) +4 >Emitted(85, 16) Source(89, 16) + SourceIndex(0) +5 >Emitted(85, 17) Source(89, 17) + SourceIndex(0) +6 >Emitted(85, 22) Source(89, 22) + SourceIndex(0) +7 >Emitted(85, 23) Source(89, 23) + SourceIndex(0) +8 >Emitted(85, 24) Source(89, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(86, 2) Source(90, 2) + SourceIndex(0) +--- +>>>for (var _20 = 0, robots_4 = robots; _20 < robots_4.length; _20++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > ({name, skill } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(87, 1) Source(91, 1) + SourceIndex(0) +2 >Emitted(87, 4) Source(91, 4) + SourceIndex(0) +3 >Emitted(87, 5) Source(91, 5) + SourceIndex(0) +4 >Emitted(87, 6) Source(91, 24) + SourceIndex(0) +5 >Emitted(87, 17) Source(91, 30) + SourceIndex(0) +6 >Emitted(87, 19) Source(91, 24) + SourceIndex(0) +7 >Emitted(87, 36) Source(91, 30) + SourceIndex(0) +8 >Emitted(87, 38) Source(91, 24) + SourceIndex(0) +9 >Emitted(87, 59) Source(91, 30) + SourceIndex(0) +10>Emitted(87, 61) Source(91, 24) + SourceIndex(0) +11>Emitted(87, 66) Source(91, 30) + SourceIndex(0) +12>Emitted(87, 67) Source(91, 31) + SourceIndex(0) +--- +>>> _21 = robots_4[_20], name = _21.name, skill = _21.skill; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +1 > +2 > {name, skill } +3 > +4 > name +5 > , +6 > skill +1 >Emitted(88, 5) Source(91, 6) + SourceIndex(0) +2 >Emitted(88, 24) Source(91, 20) + SourceIndex(0) +3 >Emitted(88, 26) Source(91, 7) + SourceIndex(0) +4 >Emitted(88, 41) Source(91, 11) + SourceIndex(0) +5 >Emitted(88, 43) Source(91, 13) + SourceIndex(0) +6 >Emitted(88, 60) Source(91, 18) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(89, 5) Source(92, 5) + SourceIndex(0) +2 >Emitted(89, 12) Source(92, 12) + SourceIndex(0) +3 >Emitted(89, 13) Source(92, 13) + SourceIndex(0) +4 >Emitted(89, 16) Source(92, 16) + SourceIndex(0) +5 >Emitted(89, 17) Source(92, 17) + SourceIndex(0) +6 >Emitted(89, 22) Source(92, 22) + SourceIndex(0) +7 >Emitted(89, 23) Source(92, 23) + SourceIndex(0) +8 >Emitted(89, 24) Source(92, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(90, 2) Source(93, 2) + SourceIndex(0) +--- +>>>for (var _22 = 0, _23 = getRobots(); _22 < _23.length; _22++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ({name, skill } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(91, 1) Source(94, 1) + SourceIndex(0) +2 >Emitted(91, 4) Source(94, 4) + SourceIndex(0) +3 >Emitted(91, 5) Source(94, 5) + SourceIndex(0) +4 >Emitted(91, 6) Source(94, 24) + SourceIndex(0) +5 >Emitted(91, 17) Source(94, 35) + SourceIndex(0) +6 >Emitted(91, 19) Source(94, 24) + SourceIndex(0) +7 >Emitted(91, 25) Source(94, 24) + SourceIndex(0) +8 >Emitted(91, 34) Source(94, 33) + SourceIndex(0) +9 >Emitted(91, 36) Source(94, 35) + SourceIndex(0) +10>Emitted(91, 38) Source(94, 24) + SourceIndex(0) +11>Emitted(91, 54) Source(94, 35) + SourceIndex(0) +12>Emitted(91, 56) Source(94, 24) + SourceIndex(0) +13>Emitted(91, 61) Source(94, 35) + SourceIndex(0) +14>Emitted(91, 62) Source(94, 36) + SourceIndex(0) +--- +>>> _24 = _23[_22], name = _24.name, skill = _24.skill; +1 >^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +1 > +2 > {name, skill } +3 > +4 > name +5 > , +6 > skill +1 >Emitted(92, 5) Source(94, 6) + SourceIndex(0) +2 >Emitted(92, 19) Source(94, 20) + SourceIndex(0) +3 >Emitted(92, 21) Source(94, 7) + SourceIndex(0) +4 >Emitted(92, 36) Source(94, 11) + SourceIndex(0) +5 >Emitted(92, 38) Source(94, 13) + SourceIndex(0) +6 >Emitted(92, 55) Source(94, 18) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(93, 5) Source(95, 5) + SourceIndex(0) +2 >Emitted(93, 12) Source(95, 12) + SourceIndex(0) +3 >Emitted(93, 13) Source(95, 13) + SourceIndex(0) +4 >Emitted(93, 16) Source(95, 16) + SourceIndex(0) +5 >Emitted(93, 17) Source(95, 17) + SourceIndex(0) +6 >Emitted(93, 22) Source(95, 22) + SourceIndex(0) +7 >Emitted(93, 23) Source(95, 23) + SourceIndex(0) +8 >Emitted(93, 24) Source(95, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(94, 2) Source(96, 2) + SourceIndex(0) +--- +>>>for (var _25 = 0, _26 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _25 < _26.length; _25++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > ({name, skill } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(95, 1) Source(97, 1) + SourceIndex(0) +2 >Emitted(95, 4) Source(97, 4) + SourceIndex(0) +3 >Emitted(95, 5) Source(97, 5) + SourceIndex(0) +4 >Emitted(95, 6) Source(97, 24) + SourceIndex(0) +5 >Emitted(95, 17) Source(97, 100) + SourceIndex(0) +6 >Emitted(95, 19) Source(97, 24) + SourceIndex(0) +7 >Emitted(95, 26) Source(97, 25) + SourceIndex(0) +8 >Emitted(95, 28) Source(97, 27) + SourceIndex(0) +9 >Emitted(95, 32) Source(97, 31) + SourceIndex(0) +10>Emitted(95, 34) Source(97, 33) + SourceIndex(0) +11>Emitted(95, 41) Source(97, 40) + SourceIndex(0) +12>Emitted(95, 43) Source(97, 42) + SourceIndex(0) +13>Emitted(95, 48) Source(97, 47) + SourceIndex(0) +14>Emitted(95, 50) Source(97, 49) + SourceIndex(0) +15>Emitted(95, 58) Source(97, 57) + SourceIndex(0) +16>Emitted(95, 60) Source(97, 59) + SourceIndex(0) +17>Emitted(95, 62) Source(97, 61) + SourceIndex(0) +18>Emitted(95, 64) Source(97, 63) + SourceIndex(0) +19>Emitted(95, 68) Source(97, 67) + SourceIndex(0) +20>Emitted(95, 70) Source(97, 69) + SourceIndex(0) +21>Emitted(95, 79) Source(97, 78) + SourceIndex(0) +22>Emitted(95, 81) Source(97, 80) + SourceIndex(0) +23>Emitted(95, 86) Source(97, 85) + SourceIndex(0) +24>Emitted(95, 88) Source(97, 87) + SourceIndex(0) +25>Emitted(95, 98) Source(97, 97) + SourceIndex(0) +26>Emitted(95, 100) Source(97, 99) + SourceIndex(0) +27>Emitted(95, 101) Source(97, 100) + SourceIndex(0) +28>Emitted(95, 103) Source(97, 24) + SourceIndex(0) +29>Emitted(95, 119) Source(97, 100) + SourceIndex(0) +30>Emitted(95, 121) Source(97, 24) + SourceIndex(0) +31>Emitted(95, 126) Source(97, 100) + SourceIndex(0) +32>Emitted(95, 127) Source(97, 101) + SourceIndex(0) +--- +>>> _27 = _26[_25], name = _27.name, skill = _27.skill; +1 >^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +1 > +2 > {name, skill } +3 > +4 > name +5 > , +6 > skill +1 >Emitted(96, 5) Source(97, 6) + SourceIndex(0) +2 >Emitted(96, 19) Source(97, 20) + SourceIndex(0) +3 >Emitted(96, 21) Source(97, 7) + SourceIndex(0) +4 >Emitted(96, 36) Source(97, 11) + SourceIndex(0) +5 >Emitted(96, 38) Source(97, 13) + SourceIndex(0) +6 >Emitted(96, 55) Source(97, 18) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(97, 5) Source(98, 5) + SourceIndex(0) +2 >Emitted(97, 12) Source(98, 12) + SourceIndex(0) +3 >Emitted(97, 13) Source(98, 13) + SourceIndex(0) +4 >Emitted(97, 16) Source(98, 16) + SourceIndex(0) +5 >Emitted(97, 17) Source(98, 17) + SourceIndex(0) +6 >Emitted(97, 22) Source(98, 22) + SourceIndex(0) +7 >Emitted(97, 23) Source(98, 23) + SourceIndex(0) +8 >Emitted(97, 24) Source(98, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(98, 2) Source(99, 2) + SourceIndex(0) +--- +>>>for (var _28 = 0, multiRobots_4 = multiRobots; _28 < multiRobots_4.length; _28++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name, skills: { primary, secondary } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(99, 1) Source(100, 1) + SourceIndex(0) +2 >Emitted(99, 4) Source(100, 4) + SourceIndex(0) +3 >Emitted(99, 5) Source(100, 5) + SourceIndex(0) +4 >Emitted(99, 6) Source(100, 49) + SourceIndex(0) +5 >Emitted(99, 17) Source(100, 60) + SourceIndex(0) +6 >Emitted(99, 19) Source(100, 49) + SourceIndex(0) +7 >Emitted(99, 46) Source(100, 60) + SourceIndex(0) +8 >Emitted(99, 48) Source(100, 49) + SourceIndex(0) +9 >Emitted(99, 74) Source(100, 60) + SourceIndex(0) +10>Emitted(99, 76) Source(100, 49) + SourceIndex(0) +11>Emitted(99, 81) Source(100, 60) + SourceIndex(0) +12>Emitted(99, 82) Source(100, 61) + SourceIndex(0) +--- +>>> _29 = multiRobots_4[_28], name = _29.name, _30 = _29.skills, primary = _30.primary, secondary = _30.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name, skills: { primary, secondary } } +3 > +4 > name +5 > , +6 > skills +7 > : { +8 > primary +9 > , +10> secondary +1->Emitted(100, 5) Source(100, 6) + SourceIndex(0) +2 >Emitted(100, 29) Source(100, 45) + SourceIndex(0) +3 >Emitted(100, 31) Source(100, 7) + SourceIndex(0) +4 >Emitted(100, 46) Source(100, 11) + SourceIndex(0) +5 >Emitted(100, 48) Source(100, 13) + SourceIndex(0) +6 >Emitted(100, 64) Source(100, 19) + SourceIndex(0) +7 >Emitted(100, 66) Source(100, 23) + SourceIndex(0) +8 >Emitted(100, 87) Source(100, 30) + SourceIndex(0) +9 >Emitted(100, 89) Source(100, 32) + SourceIndex(0) +10>Emitted(100, 114) Source(100, 41) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(101, 5) Source(101, 5) + SourceIndex(0) +2 >Emitted(101, 12) Source(101, 12) + SourceIndex(0) +3 >Emitted(101, 13) Source(101, 13) + SourceIndex(0) +4 >Emitted(101, 16) Source(101, 16) + SourceIndex(0) +5 >Emitted(101, 17) Source(101, 17) + SourceIndex(0) +6 >Emitted(101, 22) Source(101, 22) + SourceIndex(0) +7 >Emitted(101, 23) Source(101, 23) + SourceIndex(0) +8 >Emitted(101, 24) Source(101, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(102, 2) Source(102, 2) + SourceIndex(0) +--- +>>>for (var _31 = 0, _32 = getMultiRobots(); _31 < _32.length; _31++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name, skills: { primary, secondary } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(103, 1) Source(103, 1) + SourceIndex(0) +2 >Emitted(103, 4) Source(103, 4) + SourceIndex(0) +3 >Emitted(103, 5) Source(103, 5) + SourceIndex(0) +4 >Emitted(103, 6) Source(103, 49) + SourceIndex(0) +5 >Emitted(103, 17) Source(103, 65) + SourceIndex(0) +6 >Emitted(103, 19) Source(103, 49) + SourceIndex(0) +7 >Emitted(103, 25) Source(103, 49) + SourceIndex(0) +8 >Emitted(103, 39) Source(103, 63) + SourceIndex(0) +9 >Emitted(103, 41) Source(103, 65) + SourceIndex(0) +10>Emitted(103, 43) Source(103, 49) + SourceIndex(0) +11>Emitted(103, 59) Source(103, 65) + SourceIndex(0) +12>Emitted(103, 61) Source(103, 49) + SourceIndex(0) +13>Emitted(103, 66) Source(103, 65) + SourceIndex(0) +14>Emitted(103, 67) Source(103, 66) + SourceIndex(0) +--- +>>> _33 = _32[_31], name = _33.name, _34 = _33.skills, primary = _34.primary, secondary = _34.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name, skills: { primary, secondary } } +3 > +4 > name +5 > , +6 > skills +7 > : { +8 > primary +9 > , +10> secondary +1->Emitted(104, 5) Source(103, 6) + SourceIndex(0) +2 >Emitted(104, 19) Source(103, 45) + SourceIndex(0) +3 >Emitted(104, 21) Source(103, 7) + SourceIndex(0) +4 >Emitted(104, 36) Source(103, 11) + SourceIndex(0) +5 >Emitted(104, 38) Source(103, 13) + SourceIndex(0) +6 >Emitted(104, 54) Source(103, 19) + SourceIndex(0) +7 >Emitted(104, 56) Source(103, 23) + SourceIndex(0) +8 >Emitted(104, 77) Source(103, 30) + SourceIndex(0) +9 >Emitted(104, 79) Source(103, 32) + SourceIndex(0) +10>Emitted(104, 104) Source(103, 41) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(105, 5) Source(104, 5) + SourceIndex(0) +2 >Emitted(105, 12) Source(104, 12) + SourceIndex(0) +3 >Emitted(105, 13) Source(104, 13) + SourceIndex(0) +4 >Emitted(105, 16) Source(104, 16) + SourceIndex(0) +5 >Emitted(105, 17) Source(104, 17) + SourceIndex(0) +6 >Emitted(105, 22) Source(104, 22) + SourceIndex(0) +7 >Emitted(105, 23) Source(104, 23) + SourceIndex(0) +8 >Emitted(105, 24) Source(104, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(106, 2) Source(105, 2) + SourceIndex(0) +--- +>>>for (var _35 = 0, _36 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name, skills: { primary, secondary } } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(107, 1) Source(106, 1) + SourceIndex(0) +2 >Emitted(107, 4) Source(106, 4) + SourceIndex(0) +3 >Emitted(107, 5) Source(106, 5) + SourceIndex(0) +4 >Emitted(107, 6) Source(106, 49) + SourceIndex(0) +5 >Emitted(107, 17) Source(107, 79) + SourceIndex(0) +6 >Emitted(107, 19) Source(106, 49) + SourceIndex(0) +7 >Emitted(107, 26) Source(106, 50) + SourceIndex(0) +8 >Emitted(107, 28) Source(106, 52) + SourceIndex(0) +9 >Emitted(107, 32) Source(106, 56) + SourceIndex(0) +10>Emitted(107, 34) Source(106, 58) + SourceIndex(0) +11>Emitted(107, 41) Source(106, 65) + SourceIndex(0) +12>Emitted(107, 43) Source(106, 67) + SourceIndex(0) +13>Emitted(107, 49) Source(106, 73) + SourceIndex(0) +14>Emitted(107, 51) Source(106, 75) + SourceIndex(0) +15>Emitted(107, 53) Source(106, 77) + SourceIndex(0) +16>Emitted(107, 60) Source(106, 84) + SourceIndex(0) +17>Emitted(107, 62) Source(106, 86) + SourceIndex(0) +18>Emitted(107, 70) Source(106, 94) + SourceIndex(0) +19>Emitted(107, 72) Source(106, 96) + SourceIndex(0) +20>Emitted(107, 81) Source(106, 105) + SourceIndex(0) +21>Emitted(107, 83) Source(106, 107) + SourceIndex(0) +22>Emitted(107, 89) Source(106, 113) + SourceIndex(0) +23>Emitted(107, 91) Source(106, 115) + SourceIndex(0) +24>Emitted(107, 93) Source(106, 117) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _35 < _36.length; _35++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^ +25> ^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(108, 5) Source(107, 5) + SourceIndex(0) +2 >Emitted(108, 7) Source(107, 7) + SourceIndex(0) +3 >Emitted(108, 11) Source(107, 11) + SourceIndex(0) +4 >Emitted(108, 13) Source(107, 13) + SourceIndex(0) +5 >Emitted(108, 22) Source(107, 22) + SourceIndex(0) +6 >Emitted(108, 24) Source(107, 24) + SourceIndex(0) +7 >Emitted(108, 30) Source(107, 30) + SourceIndex(0) +8 >Emitted(108, 32) Source(107, 32) + SourceIndex(0) +9 >Emitted(108, 34) Source(107, 34) + SourceIndex(0) +10>Emitted(108, 41) Source(107, 41) + SourceIndex(0) +11>Emitted(108, 43) Source(107, 43) + SourceIndex(0) +12>Emitted(108, 53) Source(107, 53) + SourceIndex(0) +13>Emitted(108, 55) Source(107, 55) + SourceIndex(0) +14>Emitted(108, 64) Source(107, 64) + SourceIndex(0) +15>Emitted(108, 66) Source(107, 66) + SourceIndex(0) +16>Emitted(108, 74) Source(107, 74) + SourceIndex(0) +17>Emitted(108, 76) Source(107, 76) + SourceIndex(0) +18>Emitted(108, 78) Source(107, 78) + SourceIndex(0) +19>Emitted(108, 79) Source(107, 79) + SourceIndex(0) +20>Emitted(108, 81) Source(106, 49) + SourceIndex(0) +21>Emitted(108, 97) Source(107, 79) + SourceIndex(0) +22>Emitted(108, 99) Source(106, 49) + SourceIndex(0) +23>Emitted(108, 104) Source(107, 79) + SourceIndex(0) +24>Emitted(108, 105) Source(107, 80) + SourceIndex(0) +--- +>>> _37 = _36[_35], name = _37.name, _38 = _37.skills, primary = _38.primary, secondary = _38.secondary; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name, skills: { primary, secondary } } +3 > +4 > name +5 > , +6 > skills +7 > : { +8 > primary +9 > , +10> secondary +1->Emitted(109, 5) Source(106, 6) + SourceIndex(0) +2 >Emitted(109, 19) Source(106, 45) + SourceIndex(0) +3 >Emitted(109, 21) Source(106, 7) + SourceIndex(0) +4 >Emitted(109, 36) Source(106, 11) + SourceIndex(0) +5 >Emitted(109, 38) Source(106, 13) + SourceIndex(0) +6 >Emitted(109, 54) Source(106, 19) + SourceIndex(0) +7 >Emitted(109, 56) Source(106, 23) + SourceIndex(0) +8 >Emitted(109, 77) Source(106, 30) + SourceIndex(0) +9 >Emitted(109, 79) Source(106, 32) + SourceIndex(0) +10>Emitted(109, 104) Source(106, 41) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(110, 5) Source(108, 5) + SourceIndex(0) +2 >Emitted(110, 12) Source(108, 12) + SourceIndex(0) +3 >Emitted(110, 13) Source(108, 13) + SourceIndex(0) +4 >Emitted(110, 16) Source(108, 16) + SourceIndex(0) +5 >Emitted(110, 17) Source(108, 17) + SourceIndex(0) +6 >Emitted(110, 22) Source(108, 22) + SourceIndex(0) +7 >Emitted(110, 23) Source(108, 23) + SourceIndex(0) +8 >Emitted(110, 24) Source(108, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(111, 2) Source(109, 2) + SourceIndex(0) +--- +>>>var _f, _j, _m, _u, _x, _0, _2, _5, _8, _10, _11, _14, _15, _18, _19, _21, _24, _27, _29, _30, _33, _34, _37, _38; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols new file mode 100644 index 00000000000..ed2a6c3449d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.symbols @@ -0,0 +1,435 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 9, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 10, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 11, 24)) + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 24)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 39)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 60)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 77)) + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 34)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 49)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 59)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 78)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 53)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 79)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 3)) +} + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 22, 1)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 3)) +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 56)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 67)) + +let name: string, primary: string, secondary: string, skill: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 29, 3)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 29, 17)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 29, 34)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 29, 53)) + +for ({name: nameA } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 31, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 34, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 37, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 37, 25)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 37, 40)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 37, 61)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 37, 78)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 40, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 40, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 40, 35)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 43, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 43, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 43, 35)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 22, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 35)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 67)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 82)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 92)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 46, 111)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 47, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 47, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 47, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 47, 53)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +} +for ({name } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 50, 6)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 53, 6)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 56, 6)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 56, 18)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 56, 33)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 56, 54)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 56, 71)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({ skills: { primary, secondary } } of multiRobots) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 59, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 59, 16)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 59, 25)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +} +for ({ skills: { primary, secondary } } of getMultiRobots()) { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 62, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 62, 16)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 62, 25)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 22, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +} +for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 16)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 25)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 45)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 60)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 70)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 65, 89)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 66, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 66, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 66, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 66, 53)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +} + + +for ({name: nameA, skill: skillA } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 71, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 71, 18)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 67)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA, skill: skillA } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 74, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 74, 18)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 67)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 77, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 77, 18)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 67)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 77, 40)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 77, 55)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 77, 76)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 77, 93)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 80, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 80, 18)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 80, 28)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 80, 47)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 83, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 83, 18)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 83, 28)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 83, 47)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 22, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 18)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 28)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 47)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 36)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 79)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 94)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 104)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 86, 123)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 87, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 87, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 87, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 87, 53)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name, skill } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 90, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 90, 11)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name, skill } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 93, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 93, 11)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 96, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 96, 11)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 96, 25)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 96, 40)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 96, 61)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 96, 78)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name, skills: { primary, secondary } } of multiRobots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 99, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 99, 11)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 99, 21)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 99, 30)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 17, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name, skills: { primary, secondary } } of getMultiRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 102, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 102, 11)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 102, 21)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 102, 30)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 22, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} +for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 11)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 21)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 30)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 50)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 65)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 75)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 105, 94)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 106, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 106, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 106, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 106, 53)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPattern2.ts, 28, 3)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.types new file mode 100644 index 00000000000..1f292542545 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.types @@ -0,0 +1,593 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Robot[] +>Robot : Robot +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + +function getRobots() { +>getRobots : () => Robot[] + + return robots; +>robots : Robot[] +} + +function getMultiRobots() { +>getMultiRobots : () => MultiRobot[] + + return multiRobots; +>multiRobots : MultiRobot[] +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : string +>primaryA : string +>secondaryA : string +>i : number +>skillA : string + +let name: string, primary: string, secondary: string, skill: string; +>name : string +>primary : string +>secondary : string +>skill : string + +for ({name: nameA } of robots) { +>{name: nameA } : { name: string; } +>name : Robot +>nameA : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA } of getRobots()) { +>{name: nameA } : { name: string; } +>name : Robot +>nameA : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{name: nameA } : { name: string; } +>name : { name: string; skill: string; } +>nameA : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>{ skills: { primary: primaryA, secondary: secondaryA } } : { skills: { primary: string; secondary: string; }; } +>skills : MultiRobot +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>multiRobots : MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>{ skills: { primary: primaryA, secondary: secondaryA } } : { skills: { primary: string; secondary: string; }; } +>skills : MultiRobot +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>{ skills: { primary: primaryA, secondary: secondaryA } } : { skills: { primary: string; secondary: string; }; } +>skills : { name: string; skills: { primary: string; secondary: string; }; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({name } of robots) { +>{name } : { name: string; } +>name : Robot +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name } of getRobots()) { +>{name } : { name: string; } +>name : Robot +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{name } : { name: string; } +>name : { name: string; skill: string; } +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ skills: { primary, secondary } } of multiRobots) { +>{ skills: { primary, secondary } } : { skills: { primary: string; secondary: string; }; } +>skills : MultiRobot +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>multiRobots : MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary, secondary } } of getMultiRobots()) { +>{ skills: { primary, secondary } } : { skills: { primary: string; secondary: string; }; } +>skills : MultiRobot +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>{ skills: { primary, secondary } } : { skills: { primary: string; secondary: string; }; } +>skills : { name: string; skills: { primary: string; secondary: string; }; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + + +for ({name: nameA, skill: skillA } of robots) { +>{name: nameA, skill: skillA } : { name: string; skill: string; } +>name : Robot +>nameA : string +>skill : Robot +>skillA : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA, skill: skillA } of getRobots()) { +>{name: nameA, skill: skillA } : { name: string; skill: string; } +>name : Robot +>nameA : string +>skill : Robot +>skillA : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{name: nameA, skill: skillA } : { name: string; skill: string; } +>name : { name: string; skill: string; } +>nameA : string +>skill : { name: string; skill: string; } +>skillA : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +>{name: nameA, skills: { primary: primaryA, secondary: secondaryA } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : MultiRobot +>nameA : string +>skills : MultiRobot +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>multiRobots : MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +>{name: nameA, skills: { primary: primaryA, secondary: secondaryA } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : MultiRobot +>nameA : string +>skills : MultiRobot +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>{name: nameA, skills: { primary: primaryA, secondary: secondaryA } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : { name: string; skills: { primary: string; secondary: string; }; } +>nameA : string +>skills : { name: string; skills: { primary: string; secondary: string; }; } +>{ primary: primaryA, secondary: secondaryA } : { primary: string; secondary: string; } +>primary : string +>primaryA : string +>secondary : string +>secondaryA : string +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name, skill } of robots) { +>{name, skill } : { name: string; skill: string; } +>name : Robot +>skill : Robot +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name, skill } of getRobots()) { +>{name, skill } : { name: string; skill: string; } +>name : Robot +>skill : Robot +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{name, skill } : { name: string; skill: string; } +>name : { name: string; skill: string; } +>skill : { name: string; skill: string; } +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name, skills: { primary, secondary } } of multiRobots) { +>{name, skills: { primary, secondary } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : MultiRobot +>skills : MultiRobot +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>multiRobots : MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name, skills: { primary, secondary } } of getMultiRobots()) { +>{name, skills: { primary, secondary } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : MultiRobot +>skills : MultiRobot +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>{name, skills: { primary, secondary } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : { name: string; skills: { primary: string; secondary: string; }; } +>skills : { name: string; skills: { primary: string; secondary: string; }; } +>{ primary, secondary } : { primary: string; secondary: string; } +>primary : string +>secondary : string +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.ts new file mode 100644 index 00000000000..7f71e7d6bdd --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPattern2.ts @@ -0,0 +1,110 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({name: nameA } of robots) { + console.log(nameA); +} +for ({name: nameA } of getRobots()) { + console.log(nameA); +} +for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} +for ({name } of robots) { + console.log(nameA); +} +for ({name } of getRobots()) { + console.log(nameA); +} +for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ skills: { primary, secondary } } of multiRobots) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } of getMultiRobots()) { + console.log(primaryA); +} +for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + + +for ({name: nameA, skill: skillA } of robots) { + console.log(nameA); +} +for ({name: nameA, skill: skillA } of getRobots()) { + console.log(nameA); +} +for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + console.log(nameA); +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + console.log(nameA); +} +for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} +for ({name, skill } of robots) { + console.log(nameA); +} +for ({name, skill } of getRobots()) { + console.log(nameA); +} +for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({name, skills: { primary, secondary } } of multiRobots) { + console.log(nameA); +} +for ({name, skills: { primary, secondary } } of getMultiRobots()) { + console.log(nameA); +} +for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} \ No newline at end of file From 250ddca65b06c361d09761a49fb2addc8167ede5 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 8 Dec 2015 17:32:59 -0800 Subject: [PATCH 044/164] Update existing baselines --- tests/baselines/reference/ES5For-of1.js.map | 2 +- .../reference/ES5For-of1.sourcemap.txt | 10 +-- tests/baselines/reference/ES5For-of13.js.map | 2 +- .../reference/ES5For-of13.sourcemap.txt | 10 +-- tests/baselines/reference/ES5For-of25.js.map | 2 +- .../reference/ES5For-of25.sourcemap.txt | 10 +-- tests/baselines/reference/ES5For-of26.js.map | 2 +- .../reference/ES5For-of26.sourcemap.txt | 69 ++++++++++--------- tests/baselines/reference/ES5For-of3.js.map | 2 +- .../reference/ES5For-of3.sourcemap.txt | 10 +-- tests/baselines/reference/ES5For-of8.js.map | 2 +- .../reference/ES5For-of8.sourcemap.txt | 19 ++--- 12 files changed, 73 insertions(+), 67 deletions(-) diff --git a/tests/baselines/reference/ES5For-of1.js.map b/tests/baselines/reference/ES5For-of1.js.map index 568ac1987e7..bd729517462 100644 --- a/tests/baselines/reference/ES5For-of1.js.map +++ b/tests/baselines/reference/ES5For-of1.js.map @@ -1,2 +1,2 @@ //// [ES5For-of1.js.map] -{"version":3,"file":"ES5For-of1.js","sourceRoot":"","sources":["ES5For-of1.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAxB,cAAK,EAAL,IAAwB,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAClB"} \ No newline at end of file +{"version":3,"file":"ES5For-of1.js","sourceRoot":"","sources":["ES5For-of1.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAf,cAAe,EAAf,IAAe,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAClB"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of1.sourcemap.txt b/tests/baselines/reference/ES5For-of1.sourcemap.txt index 7bdd7edfa13..5ae1084df25 100644 --- a/tests/baselines/reference/ES5For-of1.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of1.sourcemap.txt @@ -41,9 +41,9 @@ sourceFile:ES5For-of1.ts 12> 'c' 13> ] 14> -15> var v +15> ['a', 'b', 'c'] 16> -17> var v of ['a', 'b', 'c'] +17> ['a', 'b', 'c'] 18> ) 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) @@ -58,9 +58,9 @@ sourceFile:ES5For-of1.ts 11>Emitted(1, 34) Source(1, 26) + SourceIndex(0) 12>Emitted(1, 37) Source(1, 29) + SourceIndex(0) 13>Emitted(1, 38) Source(1, 30) + SourceIndex(0) -14>Emitted(1, 40) Source(1, 6) + SourceIndex(0) -15>Emitted(1, 54) Source(1, 11) + SourceIndex(0) -16>Emitted(1, 56) Source(1, 6) + SourceIndex(0) +14>Emitted(1, 40) Source(1, 15) + SourceIndex(0) +15>Emitted(1, 54) Source(1, 30) + SourceIndex(0) +16>Emitted(1, 56) Source(1, 15) + SourceIndex(0) 17>Emitted(1, 60) Source(1, 30) + SourceIndex(0) 18>Emitted(1, 61) Source(1, 31) + SourceIndex(0) --- diff --git a/tests/baselines/reference/ES5For-of13.js.map b/tests/baselines/reference/ES5For-of13.js.map index 5ff54bb8816..3fa2bd27348 100644 --- a/tests/baselines/reference/ES5For-of13.js.map +++ b/tests/baselines/reference/ES5For-of13.js.map @@ -1,2 +1,2 @@ //// [ES5For-of13.js.map] -{"version":3,"file":"ES5For-of13.js","sourceRoot":"","sources":["ES5For-of13.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAxB,cAAK,EAAL,IAAwB,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;CACb"} \ No newline at end of file +{"version":3,"file":"ES5For-of13.js","sourceRoot":"","sources":["ES5For-of13.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAf,cAAe,EAAf,IAAe,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;CACb"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of13.sourcemap.txt b/tests/baselines/reference/ES5For-of13.sourcemap.txt index c3a188e7221..410560ac78e 100644 --- a/tests/baselines/reference/ES5For-of13.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of13.sourcemap.txt @@ -41,9 +41,9 @@ sourceFile:ES5For-of13.ts 12> 'c' 13> ] 14> -15> let v +15> ['a', 'b', 'c'] 16> -17> let v of ['a', 'b', 'c'] +17> ['a', 'b', 'c'] 18> ) 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) @@ -58,9 +58,9 @@ sourceFile:ES5For-of13.ts 11>Emitted(1, 34) Source(1, 26) + SourceIndex(0) 12>Emitted(1, 37) Source(1, 29) + SourceIndex(0) 13>Emitted(1, 38) Source(1, 30) + SourceIndex(0) -14>Emitted(1, 40) Source(1, 6) + SourceIndex(0) -15>Emitted(1, 54) Source(1, 11) + SourceIndex(0) -16>Emitted(1, 56) Source(1, 6) + SourceIndex(0) +14>Emitted(1, 40) Source(1, 15) + SourceIndex(0) +15>Emitted(1, 54) Source(1, 30) + SourceIndex(0) +16>Emitted(1, 56) Source(1, 15) + SourceIndex(0) 17>Emitted(1, 60) Source(1, 30) + SourceIndex(0) 18>Emitted(1, 61) Source(1, 31) + SourceIndex(0) --- diff --git a/tests/baselines/reference/ES5For-of25.js.map b/tests/baselines/reference/ES5For-of25.js.map index 1c4d8c2101f..5ccc838a488 100644 --- a/tests/baselines/reference/ES5For-of25.js.map +++ b/tests/baselines/reference/ES5For-of25.js.map @@ -1,2 +1,2 @@ //// [ES5For-of25.js.map] -{"version":3,"file":"ES5For-of25.js","sourceRoot":"","sources":["ES5For-of25.ts"],"names":[],"mappings":"AAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG,CAAC,CAAU,UAAC,EAAD,OAAC,EAAV,eAAK,EAAL,IAAU,CAAC;IAAX,IAAI,CAAC,UAAA;IACN,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file +{"version":3,"file":"ES5For-of25.js","sourceRoot":"","sources":["ES5For-of25.ts"],"names":[],"mappings":"AAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,GAAG,CAAC,CAAU,UAAC,EAAD,OAAC,EAAD,eAAC,EAAD,IAAC,CAAC;IAAX,IAAI,CAAC,UAAA;IACN,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of25.sourcemap.txt b/tests/baselines/reference/ES5For-of25.sourcemap.txt index 453eef4ee46..765aa707701 100644 --- a/tests/baselines/reference/ES5For-of25.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of25.sourcemap.txt @@ -69,9 +69,9 @@ sourceFile:ES5For-of25.ts 6 > 7 > a 8 > -9 > var v +9 > a 10> -11> var v of a +11> a 12> ) 1->Emitted(2, 1) Source(2, 1) + SourceIndex(0) 2 >Emitted(2, 4) Source(2, 4) + SourceIndex(0) @@ -80,9 +80,9 @@ sourceFile:ES5For-of25.ts 5 >Emitted(2, 16) Source(2, 16) + SourceIndex(0) 6 >Emitted(2, 18) Source(2, 15) + SourceIndex(0) 7 >Emitted(2, 25) Source(2, 16) + SourceIndex(0) -8 >Emitted(2, 27) Source(2, 6) + SourceIndex(0) -9 >Emitted(2, 42) Source(2, 11) + SourceIndex(0) -10>Emitted(2, 44) Source(2, 6) + SourceIndex(0) +8 >Emitted(2, 27) Source(2, 15) + SourceIndex(0) +9 >Emitted(2, 42) Source(2, 16) + SourceIndex(0) +10>Emitted(2, 44) Source(2, 15) + SourceIndex(0) 11>Emitted(2, 48) Source(2, 16) + SourceIndex(0) 12>Emitted(2, 49) Source(2, 17) + SourceIndex(0) --- diff --git a/tests/baselines/reference/ES5For-of26.js.map b/tests/baselines/reference/ES5For-of26.js.map index 704a3a24f2a..5e128b4674c 100644 --- a/tests/baselines/reference/ES5For-of26.js.map +++ b/tests/baselines/reference/ES5For-of26.js.map @@ -1,2 +1,2 @@ //// [ES5For-of26.js.map] -{"version":3,"file":"ES5For-of26.js","sourceRoot":"","sources":["ES5For-of26.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAuB,UAAM,EAAN,MAAC,CAAC,EAAE,CAAC,CAAC,EAA5B,cAAkB,EAAlB,IAA4B,CAAC;IAA7B,6BAAK,CAAC,mBAAG,CAAC,mBAAE,CAAC,mBAAG,CAAC,KAAC;IACnB,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file +{"version":3,"file":"ES5For-of26.js","sourceRoot":"","sources":["ES5For-of26.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAuB,UAAM,EAAN,MAAC,CAAC,EAAE,CAAC,CAAC,EAAN,cAAM,EAAN,IAAM,CAAC;IAA7B,IAAA,WAAkB,EAAb,UAAK,EAAL,0BAAK,EAAE,UAAK,EAAL,0BAAK;IAClB,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of26.sourcemap.txt b/tests/baselines/reference/ES5For-of26.sourcemap.txt index c9942b1e861..112fb65c596 100644 --- a/tests/baselines/reference/ES5For-of26.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of26.sourcemap.txt @@ -38,9 +38,9 @@ sourceFile:ES5For-of26.ts 10> 3 11> ] 12> -13> var [a = 0, b = 1] +13> [2, 3] 14> -15> var [a = 0, b = 1] of [2, 3] +15> [2, 3] 16> ) 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) @@ -53,50 +53,53 @@ sourceFile:ES5For-of26.ts 9 >Emitted(1, 27) Source(1, 32) + SourceIndex(0) 10>Emitted(1, 28) Source(1, 33) + SourceIndex(0) 11>Emitted(1, 29) Source(1, 34) + SourceIndex(0) -12>Emitted(1, 31) Source(1, 6) + SourceIndex(0) -13>Emitted(1, 45) Source(1, 24) + SourceIndex(0) -14>Emitted(1, 47) Source(1, 6) + SourceIndex(0) +12>Emitted(1, 31) Source(1, 28) + SourceIndex(0) +13>Emitted(1, 45) Source(1, 34) + SourceIndex(0) +14>Emitted(1, 47) Source(1, 28) + SourceIndex(0) 15>Emitted(1, 51) Source(1, 34) + SourceIndex(0) 16>Emitted(1, 52) Source(1, 35) + SourceIndex(0) --- >>> var _b = _a[_i], _c = _b[0], a = _c === void 0 ? 0 : _c, _d = _b[1], b = _d === void 0 ? 1 : _d; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^ -4 > ^^^^^^^^^^^^^^^^^^^ -5 > ^ -6 > ^^^^^^^^^^^^^^^^^^^ -7 > ^ -8 > ^^^^^^^^^^^^^^^^^^^ -9 > ^ -10> ^^^^^ +2 > ^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > var [ -3 > a -4 > = -5 > 0 -6 > , -7 > b -8 > = -9 > 1 -10> ] +2 > +3 > var [a = 0, b = 1] +4 > +5 > a = 0 +6 > +7 > a = 0 +8 > , +9 > b = 1 +10> +11> b = 1 1->Emitted(2, 5) Source(1, 6) + SourceIndex(0) -2 >Emitted(2, 34) Source(1, 11) + SourceIndex(0) -3 >Emitted(2, 35) Source(1, 12) + SourceIndex(0) -4 >Emitted(2, 54) Source(1, 15) + SourceIndex(0) -5 >Emitted(2, 55) Source(1, 16) + SourceIndex(0) -6 >Emitted(2, 74) Source(1, 18) + SourceIndex(0) -7 >Emitted(2, 75) Source(1, 19) + SourceIndex(0) -8 >Emitted(2, 94) Source(1, 22) + SourceIndex(0) -9 >Emitted(2, 95) Source(1, 23) + SourceIndex(0) -10>Emitted(2, 100) Source(1, 24) + SourceIndex(0) +2 >Emitted(2, 9) Source(1, 6) + SourceIndex(0) +3 >Emitted(2, 20) Source(1, 24) + SourceIndex(0) +4 >Emitted(2, 22) Source(1, 11) + SourceIndex(0) +5 >Emitted(2, 32) Source(1, 16) + SourceIndex(0) +6 >Emitted(2, 34) Source(1, 11) + SourceIndex(0) +7 >Emitted(2, 60) Source(1, 16) + SourceIndex(0) +8 >Emitted(2, 62) Source(1, 18) + SourceIndex(0) +9 >Emitted(2, 72) Source(1, 23) + SourceIndex(0) +10>Emitted(2, 74) Source(1, 18) + SourceIndex(0) +11>Emitted(2, 100) Source(1, 23) + SourceIndex(0) --- >>> a; 1 >^^^^ 2 > ^ 3 > ^ 4 > ^-> -1 > of [2, 3]) { +1 >] of [2, 3]) { > 2 > a 3 > ; diff --git a/tests/baselines/reference/ES5For-of3.js.map b/tests/baselines/reference/ES5For-of3.js.map index 7454e1ca85d..5a91ff28e9c 100644 --- a/tests/baselines/reference/ES5For-of3.js.map +++ b/tests/baselines/reference/ES5For-of3.js.map @@ -1,2 +1,2 @@ //// [ES5For-of3.js.map] -{"version":3,"file":"ES5For-of3.js","sourceRoot":"","sources":["ES5For-of3.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAxB,cAAK,EAAL,IAAwB,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;CAAA"} \ No newline at end of file +{"version":3,"file":"ES5For-of3.js","sourceRoot":"","sources":["ES5For-of3.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAU,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAf,cAAe,EAAf,IAAe,CAAC;IAAzB,IAAI,CAAC,SAAA;IACN,IAAI,CAAC,GAAG,CAAC,CAAC;CAAA"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of3.sourcemap.txt b/tests/baselines/reference/ES5For-of3.sourcemap.txt index dd0bca37b68..1c728f5df67 100644 --- a/tests/baselines/reference/ES5For-of3.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of3.sourcemap.txt @@ -41,9 +41,9 @@ sourceFile:ES5For-of3.ts 12> 'c' 13> ] 14> -15> var v +15> ['a', 'b', 'c'] 16> -17> var v of ['a', 'b', 'c'] +17> ['a', 'b', 'c'] 18> ) 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) @@ -58,9 +58,9 @@ sourceFile:ES5For-of3.ts 11>Emitted(1, 34) Source(1, 26) + SourceIndex(0) 12>Emitted(1, 37) Source(1, 29) + SourceIndex(0) 13>Emitted(1, 38) Source(1, 30) + SourceIndex(0) -14>Emitted(1, 40) Source(1, 6) + SourceIndex(0) -15>Emitted(1, 54) Source(1, 11) + SourceIndex(0) -16>Emitted(1, 56) Source(1, 6) + SourceIndex(0) +14>Emitted(1, 40) Source(1, 15) + SourceIndex(0) +15>Emitted(1, 54) Source(1, 30) + SourceIndex(0) +16>Emitted(1, 56) Source(1, 15) + SourceIndex(0) 17>Emitted(1, 60) Source(1, 30) + SourceIndex(0) 18>Emitted(1, 61) Source(1, 31) + SourceIndex(0) --- diff --git a/tests/baselines/reference/ES5For-of8.js.map b/tests/baselines/reference/ES5For-of8.js.map index f4e62e46e18..65efa797e0d 100644 --- a/tests/baselines/reference/ES5For-of8.js.map +++ b/tests/baselines/reference/ES5For-of8.js.map @@ -1,2 +1,2 @@ //// [ES5For-of8.js.map] -{"version":3,"file":"ES5For-of8.js","sourceRoot":"","sources":["ES5For-of8.ts"],"names":[],"mappings":"AAAA;IACI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAY,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAA1B,cAAO,EAAP,IAA0B,CAAC;IAA3B,GAAG,EAAE,CAAC,CAAC,SAAA;IACR,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;CACnB"} \ No newline at end of file +{"version":3,"file":"ES5For-of8.js","sourceRoot":"","sources":["ES5For-of8.ts"],"names":[],"mappings":"AAAA;IACI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAY,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAf,cAAe,EAAf,IAAe,CAAC;IAA3B,GAAG,EAAE,CAAC,CAAC,GAAP,MAAO;IACR,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;CACnB"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of8.sourcemap.txt b/tests/baselines/reference/ES5For-of8.sourcemap.txt index 7a87dbf3998..8bc3f3d7aba 100644 --- a/tests/baselines/reference/ES5For-of8.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of8.sourcemap.txt @@ -88,9 +88,9 @@ sourceFile:ES5For-of8.ts 12> 'c' 13> ] 14> -15> foo().x +15> ['a', 'b', 'c'] 16> -17> foo().x of ['a', 'b', 'c'] +17> ['a', 'b', 'c'] 18> ) 1->Emitted(4, 1) Source(4, 1) + SourceIndex(0) 2 >Emitted(4, 4) Source(4, 4) + SourceIndex(0) @@ -105,9 +105,9 @@ sourceFile:ES5For-of8.ts 11>Emitted(4, 34) Source(4, 28) + SourceIndex(0) 12>Emitted(4, 37) Source(4, 31) + SourceIndex(0) 13>Emitted(4, 38) Source(4, 32) + SourceIndex(0) -14>Emitted(4, 40) Source(4, 6) + SourceIndex(0) -15>Emitted(4, 54) Source(4, 13) + SourceIndex(0) -16>Emitted(4, 56) Source(4, 6) + SourceIndex(0) +14>Emitted(4, 40) Source(4, 17) + SourceIndex(0) +15>Emitted(4, 54) Source(4, 32) + SourceIndex(0) +16>Emitted(4, 56) Source(4, 17) + SourceIndex(0) 17>Emitted(4, 60) Source(4, 32) + SourceIndex(0) 18>Emitted(4, 61) Source(4, 33) + SourceIndex(0) --- @@ -117,20 +117,23 @@ sourceFile:ES5For-of8.ts 3 > ^^ 4 > ^ 5 > ^ -6 > ^^^^^^^^^ -7 > ^-> +6 > ^^^ +7 > ^^^^^^ +8 > ^-> 1 > 2 > foo 3 > () 4 > . 5 > x 6 > +7 > foo().x 1 >Emitted(5, 5) Source(4, 6) + SourceIndex(0) 2 >Emitted(5, 8) Source(4, 9) + SourceIndex(0) 3 >Emitted(5, 10) Source(4, 11) + SourceIndex(0) 4 >Emitted(5, 11) Source(4, 12) + SourceIndex(0) 5 >Emitted(5, 12) Source(4, 13) + SourceIndex(0) -6 >Emitted(5, 21) Source(4, 13) + SourceIndex(0) +6 >Emitted(5, 15) Source(4, 6) + SourceIndex(0) +7 >Emitted(5, 21) Source(4, 13) + SourceIndex(0) --- >>> var p = foo().x; 1->^^^^ From 9fd525bc7c10f2f18980fb0686eff1ad0c6e9e8c Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 9 Dec 2015 13:02:09 -0800 Subject: [PATCH 045/164] Simplify the array binding pattern element to determine what to highlight --- src/compiler/emitter.ts | 22 +--------------- ...DestructuringForArrayBindingPattern.js.map | 2 +- ...turingForArrayBindingPattern.sourcemap.txt | 26 +++++++++---------- ...structuringForOfArrayBindingPattern.js.map | 2 +- ...ringForOfArrayBindingPattern.sourcemap.txt | 24 ++++++++--------- ...turingParametertArrayBindingPattern.js.map | 2 +- ...arametertArrayBindingPattern.sourcemap.txt | 8 +++--- ...uringParametertArrayBindingPattern2.js.map | 2 +- ...rametertArrayBindingPattern2.sourcemap.txt | 8 +++--- ...ariableStatementArrayBindingPattern.js.map | 2 +- ...StatementArrayBindingPattern.sourcemap.txt | 10 +++---- ...riableStatementArrayBindingPattern2.js.map | 2 +- ...tatementArrayBindingPattern2.sourcemap.txt | 10 +++---- 13 files changed, 50 insertions(+), 70 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index c51fca95f32..a707c669b5f 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -4007,7 +4007,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { let nodeForSourceMap: Node; // If binding element is part of binding pattern with single element, use binding pattern - if (target.kind === SyntaxKind.BindingElement && hasSingleBindingElement(target.parent)) { + if (target.kind === SyntaxKind.BindingElement && (target.parent).elements.length === 1) { nodeForSourceMap = (target.parent.parent.kind === SyntaxKind.VariableDeclaration || target.parent.parent.kind === SyntaxKind.Parameter) ? target.parent.parent : // Set sourcemap as whole variable declaration target.parent; // Only binding Pattern @@ -4018,26 +4018,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitAssignment(target.name, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, nodeForSourceMap); emitCount++; } - - function hasSingleBindingElement(pattern: BindingPattern) { - if (pattern.kind === SyntaxKind.ObjectBindingPattern) { - return pattern.elements.length === 1; - } - - let hasFoundEmittingElement = false; - for (const element of pattern.elements) { - if (element.kind !== SyntaxKind.OmittedExpression) { - if (hasFoundEmittingElement) { - // More than one elements are going to be emitted - return false; - } - hasFoundEmittingElement = true; - } - } - - // If we found exactly one emitting element - return hasFoundEmittingElement; - } } } diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map index 5d84072bda9..e15c5de5eec 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt index 3710798733e..cdb595801e2 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt @@ -242,9 +242,9 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 > 4 > ( 5 > let -6 > -7 > [, nameA] = robotA -8 > , +6 > [, +7 > nameA +8 > ] = robotA, 9 > i 10> = 11> 0 @@ -262,8 +262,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 3 >Emitted(10, 5) Source(18, 5) + SourceIndex(0) 4 >Emitted(10, 6) Source(18, 6) + SourceIndex(0) 5 >Emitted(10, 9) Source(18, 9) + SourceIndex(0) -6 >Emitted(10, 10) Source(18, 10) + SourceIndex(0) -7 >Emitted(10, 27) Source(18, 28) + SourceIndex(0) +6 >Emitted(10, 10) Source(18, 13) + SourceIndex(0) +7 >Emitted(10, 27) Source(18, 18) + SourceIndex(0) 8 >Emitted(10, 29) Source(18, 30) + SourceIndex(0) 9 >Emitted(10, 30) Source(18, 31) + SourceIndex(0) 10>Emitted(10, 33) Source(18, 34) + SourceIndex(0) @@ -347,8 +347,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 6 > 7 > [, nameA] = getRobot() 8 > -9 > [, nameA] = getRobot() -10> , +9 > nameA +10> ] = getRobot(), 11> i 12> = 13> 0 @@ -368,8 +368,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 5 >Emitted(13, 9) Source(21, 9) + SourceIndex(0) 6 >Emitted(13, 10) Source(21, 10) + SourceIndex(0) 7 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) -8 >Emitted(13, 27) Source(21, 10) + SourceIndex(0) -9 >Emitted(13, 40) Source(21, 32) + SourceIndex(0) +8 >Emitted(13, 27) Source(21, 13) + SourceIndex(0) +9 >Emitted(13, 40) Source(21, 18) + SourceIndex(0) 10>Emitted(13, 42) Source(21, 34) + SourceIndex(0) 11>Emitted(13, 43) Source(21, 35) + SourceIndex(0) 12>Emitted(13, 46) Source(21, 38) + SourceIndex(0) @@ -453,8 +453,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 6 > 7 > [, nameA] = [2, "trimmer", "trimming"] 8 > -9 > [, nameA] = [2, "trimmer", "trimming"] -10> , +9 > nameA +10> ] = [2, "trimmer", "trimming"], 11> i 12> = 13> 0 @@ -474,8 +474,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 5 >Emitted(16, 9) Source(24, 9) + SourceIndex(0) 6 >Emitted(16, 10) Source(24, 10) + SourceIndex(0) 7 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) -8 >Emitted(16, 43) Source(24, 10) + SourceIndex(0) -9 >Emitted(16, 56) Source(24, 48) + SourceIndex(0) +8 >Emitted(16, 43) Source(24, 13) + SourceIndex(0) +9 >Emitted(16, 56) Source(24, 18) + SourceIndex(0) 10>Emitted(16, 58) Source(24, 50) + SourceIndex(0) 11>Emitted(16, 59) Source(24, 51) + SourceIndex(0) 12>Emitted(16, 62) Source(24, 54) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map index a49d45f78b8..c2a1c23d12b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt index 4ca415fdaee..bb39152f474 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt @@ -370,12 +370,12 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 2 > 3 > let [, nameA] 4 > -5 > [, nameA] +5 > nameA 1 >Emitted(14, 5) Source(21, 6) + SourceIndex(0) 2 >Emitted(14, 9) Source(21, 6) + SourceIndex(0) 3 >Emitted(14, 26) Source(21, 19) + SourceIndex(0) -4 >Emitted(14, 28) Source(21, 10) + SourceIndex(0) -5 >Emitted(14, 41) Source(21, 19) + SourceIndex(0) +4 >Emitted(14, 28) Source(21, 13) + SourceIndex(0) +5 >Emitted(14, 41) Source(21, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -386,7 +386,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of robots) { +1 >] of robots) { > 2 > console 3 > . @@ -466,12 +466,12 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 2 > 3 > let [, nameA] 4 > -5 > [, nameA] +5 > nameA 1 >Emitted(18, 5) Source(24, 6) + SourceIndex(0) 2 >Emitted(18, 9) Source(24, 6) + SourceIndex(0) 3 >Emitted(18, 20) Source(24, 19) + SourceIndex(0) -4 >Emitted(18, 22) Source(24, 10) + SourceIndex(0) -5 >Emitted(18, 35) Source(24, 19) + SourceIndex(0) +4 >Emitted(18, 22) Source(24, 13) + SourceIndex(0) +5 >Emitted(18, 35) Source(24, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -482,7 +482,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of getRobots()) { +1 >] of getRobots()) { > 2 > console 3 > . @@ -568,12 +568,12 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 2 > 3 > let [, nameA] 4 > -5 > [, nameA] +5 > nameA 1 >Emitted(22, 5) Source(27, 6) + SourceIndex(0) 2 >Emitted(22, 9) Source(27, 6) + SourceIndex(0) 3 >Emitted(22, 20) Source(27, 19) + SourceIndex(0) -4 >Emitted(22, 22) Source(27, 10) + SourceIndex(0) -5 >Emitted(22, 35) Source(27, 19) + SourceIndex(0) +4 >Emitted(22, 22) Source(27, 13) + SourceIndex(0) +5 >Emitted(22, 35) Source(27, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -584,7 +584,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of [robotA, robotB]) { +1 >] of [robotA, robotB]) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map index fe1498a5876..db7b7d0b88f 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringParametertArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3C,cAAc,EAAgB;QAAhB,aAAgB;IAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,cAAc,EAAgB;QAAhB,eAAgB;IAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,cAAc,EAAkC;QAAjC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAgC;QAA/B,gBAAQ,EAAE,wBAAa;IAClC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3C,cAAc,EAAgB;QAAb,aAAK;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,cAAc,EAAgB;QAAhB,eAAgB;IAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,cAAc,EAAkC;QAAjC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAgC;QAA/B,gBAAQ,EAAE,wBAAa;IAClC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt index 345f8488718..df90ae6abb4 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt @@ -69,9 +69,9 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern.ts 2 > ^^^^^^^^^^^^^ 3 > ^^^-> 1-> -2 > [, nameA]: Robot -1->Emitted(3, 9) Source(7, 15) + SourceIndex(0) -2 >Emitted(3, 22) Source(7, 31) + SourceIndex(0) +2 > nameA +1->Emitted(3, 9) Source(7, 18) + SourceIndex(0) +2 >Emitted(3, 22) Source(7, 23) + SourceIndex(0) --- >>> console.log(nameA); 1->^^^^ @@ -82,7 +82,7 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1->) { +1->]: Robot) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map index aa8ada6f3ba..a8a5715add1 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,cAAc,EAAiB;QAAjB,cAAiB;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAe;QAAf,cAAe;IACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAiD;QAAhD,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA2B;QAA3B,6BAA2B;IACrC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,cAAc,EAAiB;QAAd,cAAM;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAe;QAAf,cAAe;IACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAiD;QAAhD,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA2B;QAA3B,6BAA2B;IACrC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt index e20536be8e9..eb37cd692b3 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt @@ -75,9 +75,9 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts 2 > ^^^^^^^^^^^^^^ 3 > ^^^-> 1-> -2 > [, skillA]: Robot -1->Emitted(3, 9) Source(7, 15) + SourceIndex(0) -2 >Emitted(3, 23) Source(7, 32) + SourceIndex(0) +2 > skillA +1->Emitted(3, 9) Source(7, 18) + SourceIndex(0) +2 >Emitted(3, 23) Source(7, 24) + SourceIndex(0) --- >>> console.log(skillA); 1->^^^^ @@ -88,7 +88,7 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts 6 > ^^^^^^ 7 > ^ 8 > ^ -1->) { +1->]: Robot) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map index 5047017e525..231f7fa8435 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAI,iBAAkB,CAAC;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAAI,oCAA0D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAO,iBAAK,CAAW;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAAI,oCAA0D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt index da4f258ea9b..c1fd17ad142 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt @@ -100,12 +100,12 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern. > > > -2 >let -3 > [, nameA] = robotA -4 > ; +2 >let [, +3 > nameA +4 > ] = robotA; 1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) -3 >Emitted(3, 22) Source(9, 23) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 8) + SourceIndex(0) +3 >Emitted(3, 22) Source(9, 13) + SourceIndex(0) 4 >Emitted(3, 23) Source(9, 24) + SourceIndex(0) --- >>>var numberB = robotB[0]; diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map index 3ed458e21b0..53b2c81b9be 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,uBAAwB,CAAC;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAI,sCAA+E,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAO,uBAAM,CAAgB;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAI,sCAA+E,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt index 8e61c11ef3f..ad79567ea63 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt @@ -111,12 +111,12 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 1 > > > -2 >let -3 > [, skillA] = multiRobotA -4 > ; +2 >let [, +3 > skillA +4 > ] = multiRobotA; 1 >Emitted(3, 1) Source(8, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(8, 5) + SourceIndex(0) -3 >Emitted(3, 28) Source(8, 29) + SourceIndex(0) +2 >Emitted(3, 5) Source(8, 8) + SourceIndex(0) +3 >Emitted(3, 28) Source(8, 14) + SourceIndex(0) 4 >Emitted(3, 29) Source(8, 30) + SourceIndex(0) --- >>>var nameMB = multiRobotB[0]; From f5587151baca19d60a2610e87ab2fee0e05f5618 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Thu, 10 Dec 2015 22:07:01 +0900 Subject: [PATCH 046/164] applying three feedbacks --- src/services/formatting/formatting.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 64e420f1599..32416472f99 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -847,9 +847,7 @@ namespace ts.formatting { } // We need to trim trailing whitespace between the tokens if they were on different lines, and no rule was applied to put them on the same line - trimTrailingWhitespaces = - (rule.Operation.Action & (RuleAction.NewLine | RuleAction.Space | RuleAction.Ignore)) && - rule.Flag !== RuleFlags.CanDeleteNewLines; + trimTrailingWhitespaces = !(rule.Operation.Action & RuleAction.Delete) && rule.Flag !== RuleFlags.CanDeleteNewLines; } else { trimTrailingWhitespaces = true; @@ -950,6 +948,7 @@ namespace ts.formatting { let whitespaceStart = getTrailingWhitespaceStartPosition(lineStartPosition, lineEndPosition); if (whitespaceStart !== -1) { + Debug.assert(whitespaceStart === lineStartPosition || !isWhiteSpace(sourceFile.text.charCodeAt(whitespaceStart - 1))); recordDelete(whitespaceStart, lineEndPosition + 1 - whitespaceStart); } } @@ -965,8 +964,6 @@ namespace ts.formatting { pos--; } if (pos !== end) { - // pos must be out of range or non-whitespace - Debug.assert(pos === start - 1 || !isWhiteSpace(sourceFile.text.charCodeAt(pos))); return pos + 1; } return -1; @@ -981,14 +978,7 @@ namespace ts.formatting { let startLine = sourceFile.getLineAndCharacterOfPosition(startPosition).line; let endLine = sourceFile.getLineAndCharacterOfPosition(originalRange.end).line; - let endLineStartPosition = getStartPositionOfLine(endLine, sourceFile); - let endLineEndPosition = getEndLinePosition(endLine, sourceFile); - - if (getTrailingWhitespaceStartPosition(endLineStartPosition, endLineEndPosition) === endLineStartPosition) { - // Trim the whole last line when it has whitespaces only - endLine++; - } - trimTrailingWhitespacesForLines(startLine, endLine, previousRange); + trimTrailingWhitespacesForLines(startLine, endLine + 1, previousRange); } function newTextChange(start: number, len: number, newText: string): TextChange { From f2cad8be4022be8c878732574b94e41c748791e7 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Thu, 10 Dec 2015 23:05:45 +0900 Subject: [PATCH 047/164] getCurrentLeadingTrivia --- src/services/formatting/formatting.ts | 2 +- src/services/formatting/formattingScanner.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 0e1931f9ee8..6efa918d30c 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -342,7 +342,7 @@ namespace ts.formatting { } if (!formattingScanner.isOnToken()) { - let leadingTrivia = formattingScanner.readTokenInfo(undefined).leadingTrivia; + let leadingTrivia = formattingScanner.getCurrentLeadingTrivia(); if (leadingTrivia) { processTrivia(leadingTrivia, enclosingNode, enclosingNode, undefined); trimTrailingWhitespacesForRemainingRange(); diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts index 58e2f304482..5d215788d4f 100644 --- a/src/services/formatting/formattingScanner.ts +++ b/src/services/formatting/formattingScanner.ts @@ -15,6 +15,7 @@ namespace ts.formatting { advance(): void; isOnToken(): boolean; readTokenInfo(n: Node): TokenInfo; + getCurrentLeadingTrivia(): TextRangeWithKind[]; lastTrailingTriviaWasNewLine(): boolean; close(): void; } @@ -43,9 +44,10 @@ namespace ts.formatting { let lastTokenInfo: TokenInfo; return { - advance: advance, - readTokenInfo: readTokenInfo, - isOnToken: isOnToken, + advance, + readTokenInfo, + isOnToken, + getCurrentLeadingTrivia: () => leadingTrivia, lastTrailingTriviaWasNewLine: () => wasNewLine, close: () => { Debug.assert(scanner !== undefined); @@ -156,7 +158,7 @@ namespace ts.formatting { if (!isOnToken()) { // scanner is not on the token (either advance was not called yet or scanner is already past the end position) return { - leadingTrivia: leadingTrivia, + leadingTrivia, trailingTrivia: undefined, token: undefined }; From d8260b705998e83fc9aafe514306d676b8fd5c59 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Fri, 11 Dec 2015 00:24:10 +0900 Subject: [PATCH 048/164] whitespaces --- src/services/formatting/formattingScanner.ts | 30 ++++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/services/formatting/formattingScanner.ts b/src/services/formatting/formattingScanner.ts index 5d215788d4f..7a4cb0924d8 100644 --- a/src/services/formatting/formattingScanner.ts +++ b/src/services/formatting/formattingScanner.ts @@ -5,12 +5,12 @@ namespace ts.formatting { const standardScanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false, LanguageVariant.Standard); const jsxScanner = createScanner(ScriptTarget.Latest, /*skipTrivia*/ false, LanguageVariant.JSX); - + /** * Scanner that is currently used for formatting */ let scanner: Scanner; - + export interface FormattingScanner { advance(): void; isOnToken(): boolean; @@ -20,7 +20,7 @@ namespace ts.formatting { close(): void; } - const enum ScanAction{ + const enum ScanAction { Scan, RescanGreaterThanToken, RescanSlashToken, @@ -38,7 +38,7 @@ namespace ts.formatting { let wasNewLine: boolean = true; let leadingTrivia: TextRangeWithKind[]; let trailingTrivia: TextRangeWithKind[]; - + let savedPos: number; let lastScanAction: ScanAction; let lastTokenInfo: TokenInfo; @@ -51,7 +51,7 @@ namespace ts.formatting { lastTrailingTriviaWasNewLine: () => wasNewLine, close: () => { Debug.assert(scanner !== undefined); - + lastTokenInfo = undefined; scanner.setText(undefined); scanner = undefined; @@ -60,7 +60,7 @@ namespace ts.formatting { function advance(): void { Debug.assert(scanner !== undefined); - + lastTokenInfo = undefined; let isStarted = scanner.getStartPos() !== startPos; @@ -83,7 +83,7 @@ namespace ts.formatting { let t: SyntaxKind; let pos = scanner.getStartPos(); - + // Read leading trivia and token while (pos < endPos) { let t = scanner.getToken(); @@ -124,10 +124,10 @@ namespace ts.formatting { return false; } - + function shouldRescanJsxIdentifier(node: Node): boolean { if (node.parent) { - switch(node.parent.kind) { + switch (node.parent.kind) { case SyntaxKind.JsxAttribute: case SyntaxKind.JsxOpeningElement: case SyntaxKind.JsxClosingElement: @@ -135,7 +135,7 @@ namespace ts.formatting { return node.kind === SyntaxKind.Identifier; } } - + return false; } @@ -144,7 +144,7 @@ namespace ts.formatting { } function shouldRescanTemplateToken(container: Node): boolean { - return container.kind === SyntaxKind.TemplateMiddle || + return container.kind === SyntaxKind.TemplateMiddle || container.kind === SyntaxKind.TemplateTail; } @@ -154,7 +154,7 @@ namespace ts.formatting { function readTokenInfo(n: Node): TokenInfo { Debug.assert(scanner !== undefined); - + if (!isOnToken()) { // scanner is not on the token (either advance was not called yet or scanner is already past the end position) return { @@ -166,7 +166,7 @@ namespace ts.formatting { // normally scanner returns the smallest available token // check the kind of context node to determine if scanner should have more greedy behavior and consume more text. - let expectedScanAction = + let expectedScanAction = shouldRescanGreaterThanToken(n) ? ScanAction.RescanGreaterThanToken : shouldRescanSlashToken(n) @@ -228,7 +228,7 @@ namespace ts.formatting { if (trailingTrivia) { trailingTrivia = undefined; } - while(scanner.getStartPos() < endPos) { + while (scanner.getStartPos() < endPos) { currentToken = scanner.scan(); if (!isTrivia(currentToken)) { break; @@ -263,7 +263,7 @@ namespace ts.formatting { function isOnToken(): boolean { Debug.assert(scanner !== undefined); - + let current = (lastTokenInfo && lastTokenInfo.token.kind) || scanner.getToken(); let startPos = (lastTokenInfo && lastTokenInfo.token.pos) || scanner.getStartPos(); return startPos < endPos && current !== SyntaxKind.EndOfFileToken && !isTrivia(current); From 03c8d2f29325469993a2a53b2c971d01d06ab31b Mon Sep 17 00:00:00 2001 From: Yui T Date: Thu, 10 Dec 2015 11:42:20 -0800 Subject: [PATCH 049/164] Rename parameter --- src/compiler/checker.ts | 4 ++-- src/compiler/types.ts | 2 +- src/services/services.ts | 14 ++++++++------ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f02520b24fd..6077e76ed04 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14576,7 +14576,7 @@ namespace ts { return false; } - function getSymbolsInScope(location: Node, meaning: SymbolFlags, includeAllGlobalSymbols: boolean): Symbol[] { + function getSymbolsInScope(location: Node, meaning: SymbolFlags, includeGlobalSymbols: boolean): Symbol[] { const symbols: SymbolTable = {}; let memberFlags: NodeFlags = 0; @@ -14639,7 +14639,7 @@ namespace ts { location = location.parent; } - if (includeAllGlobalSymbols) { + if (includeGlobalSymbols) { copySymbols(globals, meaning); } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index eb93ceee093..9cec9dda241 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1717,7 +1717,7 @@ namespace ts { getBaseTypes(type: InterfaceType): ObjectType[]; getReturnTypeOfSignature(signature: Signature): Type; - getSymbolsInScope(location: Node, meaning: SymbolFlags, includeAllGlobalSymbols: boolean): Symbol[]; + getSymbolsInScope(location: Node, meaning: SymbolFlags, includeGlobalSymbols: boolean): Symbol[]; getSymbolAtLocation(node: Node): Symbol; getShorthandAssignmentValueSymbol(location: Node): Symbol; getTypeAtLocation(node: Node): Type; diff --git a/src/services/services.ts b/src/services/services.ts index 7e12a521a4d..552af68ce40 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3114,9 +3114,11 @@ namespace ts { } else if (isRightOfOpenTag) { let tagSymbols = typeChecker.getJsxIntrinsicTagNames(); - // If the currect cursor is inside JSX opening tag, the only meaningful completions are those of JSX.IntrinsicElements or users defined React.Component - // If the services can't find those symbols, then show nothing instead of including all the global symbols in the completion list. - if (tryGetGlobalSymbols(/*includeAllGlobalSymbols*/false)) { + // In this case, we are handling completion list inside JSX opening tag. For example: + // !!(s.flags & SymbolFlags.Value))); } else { @@ -3140,7 +3142,7 @@ namespace ts { // For JavaScript or TypeScript, if we're not after a dot, then just try to get the // global symbols in scope. These results should be valid for either language as // the set of symbols that can be referenced from this location. - if (!tryGetGlobalSymbols(/*includeAllGlobalSymbols*/true)) { + if (!tryGetGlobalSymbols(/*includeGlobalSymbols*/ true)) { return undefined; } } @@ -3200,7 +3202,7 @@ namespace ts { } } - function tryGetGlobalSymbols(includeAllGlobalSymbols: boolean): boolean { + function tryGetGlobalSymbols(includeGlobalSymbols: boolean): boolean { let objectLikeContainer: ObjectLiteralExpression | BindingPattern; let namedImportsOrExports: NamedImportsOrExports; let jsxContainer: JsxOpeningLikeElement; @@ -3271,7 +3273,7 @@ namespace ts { /// TODO filter meaning based on the current context let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias; - symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings, includeAllGlobalSymbols); + symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings, includeGlobalSymbols); return true; } From 8948f9be50e703667c0d9b4a6bdcabc1ad46b356 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 10 Dec 2015 12:29:14 -0800 Subject: [PATCH 050/164] Add support for modifying last encoded source map's source location With this, we can just highlight the bindingElement when the temp variable for it is assigned. Note there are few scenarios like below which would still highlight let part but thats because of how default value source mapping is currently which is next in pipeline to support binding element with default values for (let {name: nameA, skill: skillA } of robots) { console.log(nameA); } or for (let [numberA2, nameA2, skillA2] of robots) { console.log(nameA2); } --- src/compiler/emitter.ts | 60 +- src/compiler/sourcemap.ts | 74 +- ...DestructuringForArrayBindingPattern.js.map | 2 +- ...turingForArrayBindingPattern.sourcemap.txt | 2664 ++++++++--------- ...estructuringForObjectBindingPattern.js.map | 2 +- ...uringForObjectBindingPattern.sourcemap.txt | 1394 ++++----- ...structuringForObjectBindingPattern2.js.map | 2 +- ...ringForObjectBindingPattern2.sourcemap.txt | 112 +- ...structuringForOfArrayBindingPattern.js.map | 2 +- ...ringForOfArrayBindingPattern.sourcemap.txt | 720 ++--- ...tructuringForOfObjectBindingPattern.js.map | 2 +- ...ingForOfObjectBindingPattern.sourcemap.txt | 414 ++- ...ructuringForOfObjectBindingPattern2.js.map | 2 +- ...ngForOfObjectBindingPattern2.sourcemap.txt | 108 +- ...ParameterNestedObjectBindingPattern.js.map | 2 +- ...erNestedObjectBindingPattern.sourcemap.txt | 20 +- ...turingParameterObjectBindingPattern.js.map | 2 +- ...arameterObjectBindingPattern.sourcemap.txt | 16 +- ...turingParametertArrayBindingPattern.js.map | 2 +- ...arametertArrayBindingPattern.sourcemap.txt | 8 +- ...uringParametertArrayBindingPattern2.js.map | 2 +- ...rametertArrayBindingPattern2.sourcemap.txt | 16 +- ...ationDestructuringVariableStatement.js.map | 2 +- ...structuringVariableStatement.sourcemap.txt | 97 +- ...ariableStatementArrayBindingPattern.js.map | 2 +- ...StatementArrayBindingPattern.sourcemap.txt | 192 +- ...riableStatementArrayBindingPattern2.js.map | 2 +- ...tatementArrayBindingPattern2.sourcemap.txt | 204 +- ...StatementNestedObjectBindingPattern.js.map | 2 +- ...ntNestedObjectBindingPattern.sourcemap.txt | 169 +- 30 files changed, 2980 insertions(+), 3316 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index a707c669b5f..b2470a3d584 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2802,7 +2802,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi * Returns false if nothing was written - this can happen for source file level variable declarations * in system modules where such variable declarations are hoisted. */ - function tryEmitStartOfVariableDeclarationList(decl: VariableDeclarationList, startPos?: number): boolean { + function tryEmitStartOfVariableDeclarationList(decl: VariableDeclarationList): boolean { if (shouldHoistVariable(decl, /*checkIfSourceFileLevelDecl*/ true)) { // variables in variable declaration list were already hoisted return false; @@ -2817,34 +2817,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return false; } - let tokenKind = SyntaxKind.VarKeyword; + emitStart(decl); if (decl && languageVersion >= ScriptTarget.ES6) { if (isLet(decl)) { - tokenKind = SyntaxKind.LetKeyword; + write("let "); } else if (isConst(decl)) { - tokenKind = SyntaxKind.ConstKeyword; + write("const "); + } + else { + write("var "); } - } - - if (startPos !== undefined) { - emitToken(tokenKind, startPos); - write(" "); } else { - switch (tokenKind) { - case SyntaxKind.VarKeyword: - write("var "); - break; - case SyntaxKind.LetKeyword: - write("let "); - break; - case SyntaxKind.ConstKeyword: - write("const "); - break; - } + write("var "); } - return true; } @@ -3183,7 +3170,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi endPos = emitToken(SyntaxKind.OpenParenToken, endPos); if (node.initializer && node.initializer.kind === SyntaxKind.VariableDeclarationList) { const variableDeclarationList = node.initializer; - const startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); + const startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList); if (startIsEmitted) { emitCommaList(variableDeclarationList.declarations); } @@ -3224,7 +3211,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { const variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { - tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); + tryEmitStartOfVariableDeclarationList(variableDeclarationList); emit(variableDeclarationList.declarations[0]); } } @@ -3801,6 +3788,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } else { Debug.assert(!isAssignmentExpressionStatement); + // If first variable declaration of variable statement correct the start location + if (root.kind === SyntaxKind.VariableDeclaration && + root.parent.kind === SyntaxKind.VariableDeclarationList && + (root.parent).declarations[0] === root) { + // Use emit location of "var " as next emit start entry + sourceMap.changeEmitSourcePos(); + } emitBindingElement(root, value); } @@ -3852,7 +3846,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return node; } - function createPropertyAccessForDestructuringProperty(object: Expression, propName: PropertyName): Expression { + function createPropertyAccessForDestructuringProperty(object: Expression, propName: PropertyName, sourceMapNode: Node): Expression { let index: Expression; const nameIsComputed = propName.kind === SyntaxKind.ComputedPropertyName; if (nameIsComputed) { @@ -3861,7 +3855,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { // We create a synthetic copy of the identifier in order to avoid the rewriting that might // otherwise occur when the identifier is emitted. - index = createSourceMappedSynthesizedNode(propName.kind, propName); + index = createSourceMappedSynthesizedNode(propName.kind, sourceMapNode); (index).text = (propName).text; } @@ -3891,7 +3885,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { const propName = (p).name; const target = p.kind === SyntaxKind.ShorthandPropertyAssignment ? p : (p).initializer || propName; - emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName), properties.length === 1 ? sourceMapNode : p); + emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName, target), properties.length === 1 ? sourceMapNode : p); } } } @@ -3991,7 +3985,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (pattern.kind === SyntaxKind.ObjectBindingPattern) { // Rewrite element to a declaration with an initializer that fetches property const propName = element.propertyName || element.name; - emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); + emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName, element)); } else if (element.kind !== SyntaxKind.OmittedExpression) { if (!element.dotDotDotToken) { @@ -4005,17 +3999,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } } else { - let nodeForSourceMap: Node; - // If binding element is part of binding pattern with single element, use binding pattern - if (target.kind === SyntaxKind.BindingElement && (target.parent).elements.length === 1) { - nodeForSourceMap = (target.parent.parent.kind === SyntaxKind.VariableDeclaration || target.parent.parent.kind === SyntaxKind.Parameter) ? - target.parent.parent : // Set sourcemap as whole variable declaration - target.parent; // Only binding Pattern - } - else { - nodeForSourceMap = target; // Binding Element - } - emitAssignment(target.name, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, nodeForSourceMap); + emitAssignment(target.name, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, target); emitCount++; } } diff --git a/src/compiler/sourcemap.ts b/src/compiler/sourcemap.ts index 680c48cfaa4..501b1aa476a 100644 --- a/src/compiler/sourcemap.ts +++ b/src/compiler/sourcemap.ts @@ -8,6 +8,7 @@ namespace ts { emitPos(pos: number): void; emitStart(range: TextRange): void; emitEnd(range: TextRange, stopOverridingSpan?: boolean): void; + changeEmitSourcePos(): void; getText(): string; getSourceMappingURL(): string; initialize(filePath: string, sourceMapFilePath: string, sourceFiles: SourceFile[], isBundledEmit: boolean): void; @@ -25,6 +26,7 @@ namespace ts { emitStart(range: TextRange): void { }, emitEnd(range: TextRange, stopOverridingSpan?: boolean): void { }, emitPos(pos: number): void { }, + changeEmitSourcePos(): void { }, getText(): string { return undefined; }, getSourceMappingURL(): string { return undefined; }, initialize(filePath: string, sourceMapFilePath: string, sourceFiles: SourceFile[], isBundledEmit: boolean): void { }, @@ -40,6 +42,7 @@ namespace ts { let currentSourceFile: SourceFile; let sourceMapDir: string; // The directory in which sourcemap will be let stopOverridingSpan = false; + let modifyLastSourcePos = false; // Current source map file and its index in the sources list let sourceMapSourceIndex: number; @@ -58,6 +61,7 @@ namespace ts { emitPos, emitStart, emitEnd, + changeEmitSourcePos, getText, getSourceMappingURL, initialize, @@ -144,6 +148,45 @@ namespace ts { sourceMapData = undefined; } + function updateLastEncodedAndRecordedSpans() { + if (modifyLastSourcePos) { + // Reset the source pos + modifyLastSourcePos = false; + + // Change Last recorded Map with last encoded emit line and character + lastRecordedSourceMapSpan.emittedLine = lastEncodedSourceMapSpan.emittedLine; + lastRecordedSourceMapSpan.emittedColumn = lastEncodedSourceMapSpan.emittedColumn; + + // Pop sourceMapDecodedMappings to remove last entry + sourceMapData.sourceMapDecodedMappings.pop(); + + // Change the last encoded source map + lastEncodedSourceMapSpan = sourceMapData.sourceMapDecodedMappings.length ? + sourceMapData.sourceMapDecodedMappings[sourceMapData.sourceMapDecodedMappings.length - 1] : + undefined; + + // TODO: Update lastEncodedNameIndex + // Since we dont support this any more, lets not worry about it right now. + // When we start supporting nameIndex, we will get back to this + + // Change the encoded source map + const sourceMapMappings = sourceMapData.sourceMapMappings; + let lenthToSet = sourceMapMappings.length - 1; + for (; lenthToSet >= 0; lenthToSet--) { + const currentChar = sourceMapMappings.charAt(lenthToSet); + if (currentChar === ",") { + // Separator for the entry found + break; + } + if (currentChar === ";" && lenthToSet !== 0 && sourceMapMappings.charAt(lenthToSet - 1) !== ";") { + // Last line separator found + break; + } + } + sourceMapData.sourceMapMappings = sourceMapMappings.substr(0, Math.max(0, lenthToSet)); + } + } + // Encoding for sourcemap span function encodeLastRecordedSourceMapSpan() { if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { @@ -180,6 +223,7 @@ namespace ts { // 5. Relative namePosition 0 based if (lastRecordedSourceMapSpan.nameIndex >= 0) { + Debug.assert(false, "We do not support name index right now, Make sure to update updateLastEncodedAndRecordedSpans when we start using this"); sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; } @@ -188,17 +232,20 @@ namespace ts { sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); } + function getSourceLinePos(pos: number) { + const sourceLinePos = getLineAndCharacterOfPosition(currentSourceFile, pos); + // Convert the location to be one-based. + sourceLinePos.line++; + sourceLinePos.character++; + return sourceLinePos; + } + function emitPos(pos: number) { if (pos === -1) { return; } - const sourceLinePos = getLineAndCharacterOfPosition(currentSourceFile, pos); - - // Convert the location to be one-based. - sourceLinePos.line++; - sourceLinePos.character++; - + const sourceLinePos = getSourceLinePos(pos); const emittedLine = writer.getLine(); const emittedColumn = writer.getColumn(); @@ -230,6 +277,8 @@ namespace ts { lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; } + + updateLastEncodedAndRecordedSpans(); } function getSourceMapRange(range: TextRange) { @@ -239,10 +288,14 @@ namespace ts { return range; } - function emitStart(range: TextRange) { + function getStartPos(range: TextRange) { range = getSourceMapRange(range); const rangeHasDecorators = !!(range as Node).decorators; - emitPos(range.pos !== -1 ? skipTrivia(currentSourceFile.text, rangeHasDecorators ? (range as Node).decorators.end : range.pos) : -1); + return range.pos !== -1 ? skipTrivia(currentSourceFile.text, rangeHasDecorators ? (range as Node).decorators.end : range.pos) : -1; + } + + function emitStart(range: TextRange) { + emitPos(getStartPos(range)); } function emitEnd(range: TextRange, stopOverridingEnd?: boolean) { @@ -251,6 +304,11 @@ namespace ts { stopOverridingSpan = stopOverridingEnd; } + function changeEmitSourcePos() { + Debug.assert(!modifyLastSourcePos); + modifyLastSourcePos = true; + } + function setSourceFile(sourceFile: SourceFile) { currentSourceFile = sourceFile; diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map index e15c5de5eec..971f5106983 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt index cdb595801e2..2a9497d3ad2 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt @@ -219,64 +219,58 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > > 2 >for 3 > -4 > ( -5 > let -6 > [, -7 > nameA -8 > ] = robotA, -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [, +5 > nameA +6 > ] = robotA, +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(10, 1) Source(18, 1) + SourceIndex(0) 2 >Emitted(10, 4) Source(18, 4) + SourceIndex(0) 3 >Emitted(10, 5) Source(18, 5) + SourceIndex(0) -4 >Emitted(10, 6) Source(18, 6) + SourceIndex(0) -5 >Emitted(10, 9) Source(18, 9) + SourceIndex(0) -6 >Emitted(10, 10) Source(18, 13) + SourceIndex(0) -7 >Emitted(10, 27) Source(18, 18) + SourceIndex(0) -8 >Emitted(10, 29) Source(18, 30) + SourceIndex(0) -9 >Emitted(10, 30) Source(18, 31) + SourceIndex(0) -10>Emitted(10, 33) Source(18, 34) + SourceIndex(0) -11>Emitted(10, 34) Source(18, 35) + SourceIndex(0) -12>Emitted(10, 36) Source(18, 37) + SourceIndex(0) -13>Emitted(10, 37) Source(18, 38) + SourceIndex(0) -14>Emitted(10, 40) Source(18, 41) + SourceIndex(0) -15>Emitted(10, 41) Source(18, 42) + SourceIndex(0) -16>Emitted(10, 43) Source(18, 44) + SourceIndex(0) -17>Emitted(10, 44) Source(18, 45) + SourceIndex(0) -18>Emitted(10, 46) Source(18, 47) + SourceIndex(0) -19>Emitted(10, 48) Source(18, 49) + SourceIndex(0) -20>Emitted(10, 49) Source(18, 50) + SourceIndex(0) +4 >Emitted(10, 6) Source(18, 13) + SourceIndex(0) +5 >Emitted(10, 27) Source(18, 18) + SourceIndex(0) +6 >Emitted(10, 29) Source(18, 30) + SourceIndex(0) +7 >Emitted(10, 30) Source(18, 31) + SourceIndex(0) +8 >Emitted(10, 33) Source(18, 34) + SourceIndex(0) +9 >Emitted(10, 34) Source(18, 35) + SourceIndex(0) +10>Emitted(10, 36) Source(18, 37) + SourceIndex(0) +11>Emitted(10, 37) Source(18, 38) + SourceIndex(0) +12>Emitted(10, 40) Source(18, 41) + SourceIndex(0) +13>Emitted(10, 41) Source(18, 42) + SourceIndex(0) +14>Emitted(10, 43) Source(18, 44) + SourceIndex(0) +15>Emitted(10, 44) Source(18, 45) + SourceIndex(0) +16>Emitted(10, 46) Source(18, 47) + SourceIndex(0) +17>Emitted(10, 48) Source(18, 49) + SourceIndex(0) +18>Emitted(10, 49) Source(18, 50) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -320,69 +314,63 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [, nameA] = getRobot() -8 > -9 > nameA -10> ] = getRobot(), -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > (let +5 > [, nameA] = getRobot() +6 > +7 > nameA +8 > ] = getRobot(), +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { 1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) 2 >Emitted(13, 4) Source(21, 4) + SourceIndex(0) 3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) -4 >Emitted(13, 6) Source(21, 6) + SourceIndex(0) -5 >Emitted(13, 9) Source(21, 9) + SourceIndex(0) -6 >Emitted(13, 10) Source(21, 10) + SourceIndex(0) -7 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) -8 >Emitted(13, 27) Source(21, 13) + SourceIndex(0) -9 >Emitted(13, 40) Source(21, 18) + SourceIndex(0) -10>Emitted(13, 42) Source(21, 34) + SourceIndex(0) -11>Emitted(13, 43) Source(21, 35) + SourceIndex(0) -12>Emitted(13, 46) Source(21, 38) + SourceIndex(0) -13>Emitted(13, 47) Source(21, 39) + SourceIndex(0) -14>Emitted(13, 49) Source(21, 41) + SourceIndex(0) -15>Emitted(13, 50) Source(21, 42) + SourceIndex(0) -16>Emitted(13, 53) Source(21, 45) + SourceIndex(0) -17>Emitted(13, 54) Source(21, 46) + SourceIndex(0) -18>Emitted(13, 56) Source(21, 48) + SourceIndex(0) -19>Emitted(13, 57) Source(21, 49) + SourceIndex(0) -20>Emitted(13, 59) Source(21, 51) + SourceIndex(0) -21>Emitted(13, 61) Source(21, 53) + SourceIndex(0) -22>Emitted(13, 62) Source(21, 54) + SourceIndex(0) +4 >Emitted(13, 6) Source(21, 10) + SourceIndex(0) +5 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) +6 >Emitted(13, 27) Source(21, 13) + SourceIndex(0) +7 >Emitted(13, 40) Source(21, 18) + SourceIndex(0) +8 >Emitted(13, 42) Source(21, 34) + SourceIndex(0) +9 >Emitted(13, 43) Source(21, 35) + SourceIndex(0) +10>Emitted(13, 46) Source(21, 38) + SourceIndex(0) +11>Emitted(13, 47) Source(21, 39) + SourceIndex(0) +12>Emitted(13, 49) Source(21, 41) + SourceIndex(0) +13>Emitted(13, 50) Source(21, 42) + SourceIndex(0) +14>Emitted(13, 53) Source(21, 45) + SourceIndex(0) +15>Emitted(13, 54) Source(21, 46) + SourceIndex(0) +16>Emitted(13, 56) Source(21, 48) + SourceIndex(0) +17>Emitted(13, 57) Source(21, 49) + SourceIndex(0) +18>Emitted(13, 59) Source(21, 51) + SourceIndex(0) +19>Emitted(13, 61) Source(21, 53) + SourceIndex(0) +20>Emitted(13, 62) Source(21, 54) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -426,69 +414,63 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [, nameA] = [2, "trimmer", "trimming"] -8 > -9 > nameA -10> ] = [2, "trimmer", "trimming"], -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > (let +5 > [, nameA] = [2, "trimmer", "trimming"] +6 > +7 > nameA +8 > ] = [2, "trimmer", "trimming"], +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { 1->Emitted(16, 1) Source(24, 1) + SourceIndex(0) 2 >Emitted(16, 4) Source(24, 4) + SourceIndex(0) 3 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) -4 >Emitted(16, 6) Source(24, 6) + SourceIndex(0) -5 >Emitted(16, 9) Source(24, 9) + SourceIndex(0) -6 >Emitted(16, 10) Source(24, 10) + SourceIndex(0) -7 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) -8 >Emitted(16, 43) Source(24, 13) + SourceIndex(0) -9 >Emitted(16, 56) Source(24, 18) + SourceIndex(0) -10>Emitted(16, 58) Source(24, 50) + SourceIndex(0) -11>Emitted(16, 59) Source(24, 51) + SourceIndex(0) -12>Emitted(16, 62) Source(24, 54) + SourceIndex(0) -13>Emitted(16, 63) Source(24, 55) + SourceIndex(0) -14>Emitted(16, 65) Source(24, 57) + SourceIndex(0) -15>Emitted(16, 66) Source(24, 58) + SourceIndex(0) -16>Emitted(16, 69) Source(24, 61) + SourceIndex(0) -17>Emitted(16, 70) Source(24, 62) + SourceIndex(0) -18>Emitted(16, 72) Source(24, 64) + SourceIndex(0) -19>Emitted(16, 73) Source(24, 65) + SourceIndex(0) -20>Emitted(16, 75) Source(24, 67) + SourceIndex(0) -21>Emitted(16, 77) Source(24, 69) + SourceIndex(0) -22>Emitted(16, 78) Source(24, 70) + SourceIndex(0) +4 >Emitted(16, 6) Source(24, 10) + SourceIndex(0) +5 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) +6 >Emitted(16, 43) Source(24, 13) + SourceIndex(0) +7 >Emitted(16, 56) Source(24, 18) + SourceIndex(0) +8 >Emitted(16, 58) Source(24, 50) + SourceIndex(0) +9 >Emitted(16, 59) Source(24, 51) + SourceIndex(0) +10>Emitted(16, 62) Source(24, 54) + SourceIndex(0) +11>Emitted(16, 63) Source(24, 55) + SourceIndex(0) +12>Emitted(16, 65) Source(24, 57) + SourceIndex(0) +13>Emitted(16, 66) Source(24, 58) + SourceIndex(0) +14>Emitted(16, 69) Source(24, 61) + SourceIndex(0) +15>Emitted(16, 70) Source(24, 62) + SourceIndex(0) +16>Emitted(16, 72) Source(24, 64) + SourceIndex(0) +17>Emitted(16, 73) Source(24, 65) + SourceIndex(0) +18>Emitted(16, 75) Source(24, 67) + SourceIndex(0) +19>Emitted(16, 77) Source(24, 69) + SourceIndex(0) +20>Emitted(16, 78) Source(24, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -532,75 +514,69 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > [, -7 > [primarySkillA, secondarySkillA] -8 > -9 > primarySkillA -10> , -11> secondarySkillA -12> ]] = multiRobotA, -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let [, +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA +10> ]] = multiRobotA, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(19, 1) Source(27, 1) + SourceIndex(0) 2 >Emitted(19, 4) Source(27, 4) + SourceIndex(0) 3 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) -4 >Emitted(19, 6) Source(27, 6) + SourceIndex(0) -5 >Emitted(19, 9) Source(27, 9) + SourceIndex(0) -6 >Emitted(19, 10) Source(27, 13) + SourceIndex(0) -7 >Emitted(19, 29) Source(27, 45) + SourceIndex(0) -8 >Emitted(19, 31) Source(27, 14) + SourceIndex(0) -9 >Emitted(19, 52) Source(27, 27) + SourceIndex(0) -10>Emitted(19, 54) Source(27, 29) + SourceIndex(0) -11>Emitted(19, 77) Source(27, 44) + SourceIndex(0) -12>Emitted(19, 79) Source(27, 62) + SourceIndex(0) -13>Emitted(19, 80) Source(27, 63) + SourceIndex(0) -14>Emitted(19, 83) Source(27, 66) + SourceIndex(0) -15>Emitted(19, 84) Source(27, 67) + SourceIndex(0) -16>Emitted(19, 86) Source(27, 69) + SourceIndex(0) -17>Emitted(19, 87) Source(27, 70) + SourceIndex(0) -18>Emitted(19, 90) Source(27, 73) + SourceIndex(0) -19>Emitted(19, 91) Source(27, 74) + SourceIndex(0) -20>Emitted(19, 93) Source(27, 76) + SourceIndex(0) -21>Emitted(19, 94) Source(27, 77) + SourceIndex(0) -22>Emitted(19, 96) Source(27, 79) + SourceIndex(0) -23>Emitted(19, 98) Source(27, 81) + SourceIndex(0) -24>Emitted(19, 99) Source(27, 82) + SourceIndex(0) +4 >Emitted(19, 6) Source(27, 13) + SourceIndex(0) +5 >Emitted(19, 29) Source(27, 45) + SourceIndex(0) +6 >Emitted(19, 31) Source(27, 14) + SourceIndex(0) +7 >Emitted(19, 52) Source(27, 27) + SourceIndex(0) +8 >Emitted(19, 54) Source(27, 29) + SourceIndex(0) +9 >Emitted(19, 77) Source(27, 44) + SourceIndex(0) +10>Emitted(19, 79) Source(27, 62) + SourceIndex(0) +11>Emitted(19, 80) Source(27, 63) + SourceIndex(0) +12>Emitted(19, 83) Source(27, 66) + SourceIndex(0) +13>Emitted(19, 84) Source(27, 67) + SourceIndex(0) +14>Emitted(19, 86) Source(27, 69) + SourceIndex(0) +15>Emitted(19, 87) Source(27, 70) + SourceIndex(0) +16>Emitted(19, 90) Source(27, 73) + SourceIndex(0) +17>Emitted(19, 91) Source(27, 74) + SourceIndex(0) +18>Emitted(19, 93) Source(27, 76) + SourceIndex(0) +19>Emitted(19, 94) Source(27, 77) + SourceIndex(0) +20>Emitted(19, 96) Source(27, 79) + SourceIndex(0) +21>Emitted(19, 98) Source(27, 81) + SourceIndex(0) +22>Emitted(19, 99) Source(27, 82) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -644,81 +620,75 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [, [primarySkillA, secondarySkillA]] = getMultiRobot() -8 > -9 > [primarySkillA, secondarySkillA] -10> -11> primarySkillA -12> , -13> secondarySkillA -14> ]] = getMultiRobot(), -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > (let +5 > [, [primarySkillA, secondarySkillA]] = getMultiRobot() +6 > +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +12> ]] = getMultiRobot(), +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { 1->Emitted(22, 1) Source(30, 1) + SourceIndex(0) 2 >Emitted(22, 4) Source(30, 4) + SourceIndex(0) 3 >Emitted(22, 5) Source(30, 5) + SourceIndex(0) -4 >Emitted(22, 6) Source(30, 6) + SourceIndex(0) -5 >Emitted(22, 9) Source(30, 9) + SourceIndex(0) -6 >Emitted(22, 10) Source(30, 10) + SourceIndex(0) -7 >Emitted(22, 30) Source(30, 64) + SourceIndex(0) -8 >Emitted(22, 32) Source(30, 13) + SourceIndex(0) -9 >Emitted(22, 42) Source(30, 45) + SourceIndex(0) -10>Emitted(22, 44) Source(30, 14) + SourceIndex(0) -11>Emitted(22, 65) Source(30, 27) + SourceIndex(0) -12>Emitted(22, 67) Source(30, 29) + SourceIndex(0) -13>Emitted(22, 90) Source(30, 44) + SourceIndex(0) -14>Emitted(22, 92) Source(30, 66) + SourceIndex(0) -15>Emitted(22, 93) Source(30, 67) + SourceIndex(0) -16>Emitted(22, 96) Source(30, 70) + SourceIndex(0) -17>Emitted(22, 97) Source(30, 71) + SourceIndex(0) -18>Emitted(22, 99) Source(30, 73) + SourceIndex(0) -19>Emitted(22, 100) Source(30, 74) + SourceIndex(0) -20>Emitted(22, 103) Source(30, 77) + SourceIndex(0) -21>Emitted(22, 104) Source(30, 78) + SourceIndex(0) -22>Emitted(22, 106) Source(30, 80) + SourceIndex(0) -23>Emitted(22, 107) Source(30, 81) + SourceIndex(0) -24>Emitted(22, 109) Source(30, 83) + SourceIndex(0) -25>Emitted(22, 111) Source(30, 85) + SourceIndex(0) -26>Emitted(22, 112) Source(30, 86) + SourceIndex(0) +4 >Emitted(22, 6) Source(30, 10) + SourceIndex(0) +5 >Emitted(22, 30) Source(30, 64) + SourceIndex(0) +6 >Emitted(22, 32) Source(30, 13) + SourceIndex(0) +7 >Emitted(22, 42) Source(30, 45) + SourceIndex(0) +8 >Emitted(22, 44) Source(30, 14) + SourceIndex(0) +9 >Emitted(22, 65) Source(30, 27) + SourceIndex(0) +10>Emitted(22, 67) Source(30, 29) + SourceIndex(0) +11>Emitted(22, 90) Source(30, 44) + SourceIndex(0) +12>Emitted(22, 92) Source(30, 66) + SourceIndex(0) +13>Emitted(22, 93) Source(30, 67) + SourceIndex(0) +14>Emitted(22, 96) Source(30, 70) + SourceIndex(0) +15>Emitted(22, 97) Source(30, 71) + SourceIndex(0) +16>Emitted(22, 99) Source(30, 73) + SourceIndex(0) +17>Emitted(22, 100) Source(30, 74) + SourceIndex(0) +18>Emitted(22, 103) Source(30, 77) + SourceIndex(0) +19>Emitted(22, 104) Source(30, 78) + SourceIndex(0) +20>Emitted(22, 106) Source(30, 80) + SourceIndex(0) +21>Emitted(22, 107) Source(30, 81) + SourceIndex(0) +22>Emitted(22, 109) Source(30, 83) + SourceIndex(0) +23>Emitted(22, 111) Source(30, 85) + SourceIndex(0) +24>Emitted(22, 112) Source(30, 86) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -762,81 +732,75 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] -8 > -9 > [primarySkillA, secondarySkillA] -10> -11> primarySkillA -12> , -13> secondarySkillA -14> ]] = ["trimmer", ["trimming", "edging"]], -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > (let +5 > [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] +6 > +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +12> ]] = ["trimmer", ["trimming", "edging"]], +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { 1->Emitted(25, 1) Source(33, 1) + SourceIndex(0) 2 >Emitted(25, 4) Source(33, 4) + SourceIndex(0) 3 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) -4 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) -5 >Emitted(25, 9) Source(33, 9) + SourceIndex(0) -6 >Emitted(25, 10) Source(33, 10) + SourceIndex(0) -7 >Emitted(25, 50) Source(33, 84) + SourceIndex(0) -8 >Emitted(25, 52) Source(33, 13) + SourceIndex(0) -9 >Emitted(25, 62) Source(33, 45) + SourceIndex(0) -10>Emitted(25, 64) Source(33, 14) + SourceIndex(0) -11>Emitted(25, 85) Source(33, 27) + SourceIndex(0) -12>Emitted(25, 87) Source(33, 29) + SourceIndex(0) -13>Emitted(25, 110) Source(33, 44) + SourceIndex(0) -14>Emitted(25, 112) Source(33, 86) + SourceIndex(0) -15>Emitted(25, 113) Source(33, 87) + SourceIndex(0) -16>Emitted(25, 116) Source(33, 90) + SourceIndex(0) -17>Emitted(25, 117) Source(33, 91) + SourceIndex(0) -18>Emitted(25, 119) Source(33, 93) + SourceIndex(0) -19>Emitted(25, 120) Source(33, 94) + SourceIndex(0) -20>Emitted(25, 123) Source(33, 97) + SourceIndex(0) -21>Emitted(25, 124) Source(33, 98) + SourceIndex(0) -22>Emitted(25, 126) Source(33, 100) + SourceIndex(0) -23>Emitted(25, 127) Source(33, 101) + SourceIndex(0) -24>Emitted(25, 129) Source(33, 103) + SourceIndex(0) -25>Emitted(25, 131) Source(33, 105) + SourceIndex(0) -26>Emitted(25, 132) Source(33, 106) + SourceIndex(0) +4 >Emitted(25, 6) Source(33, 10) + SourceIndex(0) +5 >Emitted(25, 50) Source(33, 84) + SourceIndex(0) +6 >Emitted(25, 52) Source(33, 13) + SourceIndex(0) +7 >Emitted(25, 62) Source(33, 45) + SourceIndex(0) +8 >Emitted(25, 64) Source(33, 14) + SourceIndex(0) +9 >Emitted(25, 85) Source(33, 27) + SourceIndex(0) +10>Emitted(25, 87) Source(33, 29) + SourceIndex(0) +11>Emitted(25, 110) Source(33, 44) + SourceIndex(0) +12>Emitted(25, 112) Source(33, 86) + SourceIndex(0) +13>Emitted(25, 113) Source(33, 87) + SourceIndex(0) +14>Emitted(25, 116) Source(33, 90) + SourceIndex(0) +15>Emitted(25, 117) Source(33, 91) + SourceIndex(0) +16>Emitted(25, 119) Source(33, 93) + SourceIndex(0) +17>Emitted(25, 120) Source(33, 94) + SourceIndex(0) +18>Emitted(25, 123) Source(33, 97) + SourceIndex(0) +19>Emitted(25, 124) Source(33, 98) + SourceIndex(0) +20>Emitted(25, 126) Source(33, 100) + SourceIndex(0) +21>Emitted(25, 127) Source(33, 101) + SourceIndex(0) +22>Emitted(25, 129) Source(33, 103) + SourceIndex(0) +23>Emitted(25, 131) Source(33, 105) + SourceIndex(0) +24>Emitted(25, 132) Source(33, 106) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -880,64 +844,58 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberB] = robotA -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > numberB +6 > ] = robotA, +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(28, 1) Source(37, 1) + SourceIndex(0) 2 >Emitted(28, 4) Source(37, 4) + SourceIndex(0) 3 >Emitted(28, 5) Source(37, 5) + SourceIndex(0) -4 >Emitted(28, 6) Source(37, 6) + SourceIndex(0) -5 >Emitted(28, 9) Source(37, 9) + SourceIndex(0) -6 >Emitted(28, 10) Source(37, 10) + SourceIndex(0) -7 >Emitted(28, 29) Source(37, 28) + SourceIndex(0) -8 >Emitted(28, 31) Source(37, 30) + SourceIndex(0) -9 >Emitted(28, 32) Source(37, 31) + SourceIndex(0) -10>Emitted(28, 35) Source(37, 34) + SourceIndex(0) -11>Emitted(28, 36) Source(37, 35) + SourceIndex(0) -12>Emitted(28, 38) Source(37, 37) + SourceIndex(0) -13>Emitted(28, 39) Source(37, 38) + SourceIndex(0) -14>Emitted(28, 42) Source(37, 41) + SourceIndex(0) -15>Emitted(28, 43) Source(37, 42) + SourceIndex(0) -16>Emitted(28, 45) Source(37, 44) + SourceIndex(0) -17>Emitted(28, 46) Source(37, 45) + SourceIndex(0) -18>Emitted(28, 48) Source(37, 47) + SourceIndex(0) -19>Emitted(28, 50) Source(37, 49) + SourceIndex(0) -20>Emitted(28, 51) Source(37, 50) + SourceIndex(0) +4 >Emitted(28, 6) Source(37, 11) + SourceIndex(0) +5 >Emitted(28, 29) Source(37, 18) + SourceIndex(0) +6 >Emitted(28, 31) Source(37, 30) + SourceIndex(0) +7 >Emitted(28, 32) Source(37, 31) + SourceIndex(0) +8 >Emitted(28, 35) Source(37, 34) + SourceIndex(0) +9 >Emitted(28, 36) Source(37, 35) + SourceIndex(0) +10>Emitted(28, 38) Source(37, 37) + SourceIndex(0) +11>Emitted(28, 39) Source(37, 38) + SourceIndex(0) +12>Emitted(28, 42) Source(37, 41) + SourceIndex(0) +13>Emitted(28, 43) Source(37, 42) + SourceIndex(0) +14>Emitted(28, 45) Source(37, 44) + SourceIndex(0) +15>Emitted(28, 46) Source(37, 45) + SourceIndex(0) +16>Emitted(28, 48) Source(37, 47) + SourceIndex(0) +17>Emitted(28, 50) Source(37, 49) + SourceIndex(0) +18>Emitted(28, 51) Source(37, 50) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -981,63 +939,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberB] = getRobot() -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > numberB +6 > ] = getRobot(), +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(31, 1) Source(40, 1) + SourceIndex(0) 2 >Emitted(31, 4) Source(40, 4) + SourceIndex(0) 3 >Emitted(31, 5) Source(40, 5) + SourceIndex(0) -4 >Emitted(31, 6) Source(40, 6) + SourceIndex(0) -5 >Emitted(31, 9) Source(40, 9) + SourceIndex(0) -6 >Emitted(31, 10) Source(40, 10) + SourceIndex(0) -7 >Emitted(31, 33) Source(40, 32) + SourceIndex(0) -8 >Emitted(31, 35) Source(40, 34) + SourceIndex(0) -9 >Emitted(31, 36) Source(40, 35) + SourceIndex(0) -10>Emitted(31, 39) Source(40, 38) + SourceIndex(0) -11>Emitted(31, 40) Source(40, 39) + SourceIndex(0) -12>Emitted(31, 42) Source(40, 41) + SourceIndex(0) -13>Emitted(31, 43) Source(40, 42) + SourceIndex(0) -14>Emitted(31, 46) Source(40, 45) + SourceIndex(0) -15>Emitted(31, 47) Source(40, 46) + SourceIndex(0) -16>Emitted(31, 49) Source(40, 48) + SourceIndex(0) -17>Emitted(31, 50) Source(40, 49) + SourceIndex(0) -18>Emitted(31, 52) Source(40, 51) + SourceIndex(0) -19>Emitted(31, 54) Source(40, 53) + SourceIndex(0) -20>Emitted(31, 55) Source(40, 54) + SourceIndex(0) +4 >Emitted(31, 6) Source(40, 11) + SourceIndex(0) +5 >Emitted(31, 33) Source(40, 18) + SourceIndex(0) +6 >Emitted(31, 35) Source(40, 34) + SourceIndex(0) +7 >Emitted(31, 36) Source(40, 35) + SourceIndex(0) +8 >Emitted(31, 39) Source(40, 38) + SourceIndex(0) +9 >Emitted(31, 40) Source(40, 39) + SourceIndex(0) +10>Emitted(31, 42) Source(40, 41) + SourceIndex(0) +11>Emitted(31, 43) Source(40, 42) + SourceIndex(0) +12>Emitted(31, 46) Source(40, 45) + SourceIndex(0) +13>Emitted(31, 47) Source(40, 46) + SourceIndex(0) +14>Emitted(31, 49) Source(40, 48) + SourceIndex(0) +15>Emitted(31, 50) Source(40, 49) + SourceIndex(0) +16>Emitted(31, 52) Source(40, 51) + SourceIndex(0) +17>Emitted(31, 54) Source(40, 53) + SourceIndex(0) +18>Emitted(31, 55) Source(40, 54) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -1081,63 +1033,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberB] = [2, "trimmer", "trimming"] -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > numberB +6 > ] = [2, "trimmer", "trimming"], +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(34, 1) Source(43, 1) + SourceIndex(0) 2 >Emitted(34, 4) Source(43, 4) + SourceIndex(0) 3 >Emitted(34, 5) Source(43, 5) + SourceIndex(0) -4 >Emitted(34, 6) Source(43, 6) + SourceIndex(0) -5 >Emitted(34, 9) Source(43, 9) + SourceIndex(0) -6 >Emitted(34, 10) Source(43, 10) + SourceIndex(0) -7 >Emitted(34, 49) Source(43, 48) + SourceIndex(0) -8 >Emitted(34, 51) Source(43, 50) + SourceIndex(0) -9 >Emitted(34, 52) Source(43, 51) + SourceIndex(0) -10>Emitted(34, 55) Source(43, 54) + SourceIndex(0) -11>Emitted(34, 56) Source(43, 55) + SourceIndex(0) -12>Emitted(34, 58) Source(43, 57) + SourceIndex(0) -13>Emitted(34, 59) Source(43, 58) + SourceIndex(0) -14>Emitted(34, 62) Source(43, 61) + SourceIndex(0) -15>Emitted(34, 63) Source(43, 62) + SourceIndex(0) -16>Emitted(34, 65) Source(43, 64) + SourceIndex(0) -17>Emitted(34, 66) Source(43, 65) + SourceIndex(0) -18>Emitted(34, 68) Source(43, 67) + SourceIndex(0) -19>Emitted(34, 70) Source(43, 69) + SourceIndex(0) -20>Emitted(34, 71) Source(43, 70) + SourceIndex(0) +4 >Emitted(34, 6) Source(43, 11) + SourceIndex(0) +5 >Emitted(34, 49) Source(43, 18) + SourceIndex(0) +6 >Emitted(34, 51) Source(43, 50) + SourceIndex(0) +7 >Emitted(34, 52) Source(43, 51) + SourceIndex(0) +8 >Emitted(34, 55) Source(43, 54) + SourceIndex(0) +9 >Emitted(34, 56) Source(43, 55) + SourceIndex(0) +10>Emitted(34, 58) Source(43, 57) + SourceIndex(0) +11>Emitted(34, 59) Source(43, 58) + SourceIndex(0) +12>Emitted(34, 62) Source(43, 61) + SourceIndex(0) +13>Emitted(34, 63) Source(43, 62) + SourceIndex(0) +14>Emitted(34, 65) Source(43, 64) + SourceIndex(0) +15>Emitted(34, 66) Source(43, 65) + SourceIndex(0) +16>Emitted(34, 68) Source(43, 67) + SourceIndex(0) +17>Emitted(34, 70) Source(43, 69) + SourceIndex(0) +18>Emitted(34, 71) Source(43, 70) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -1181,63 +1127,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [nameB] = multiRobotA -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > nameB +6 > ] = multiRobotA, +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(37, 1) Source(46, 1) + SourceIndex(0) 2 >Emitted(37, 4) Source(46, 4) + SourceIndex(0) 3 >Emitted(37, 5) Source(46, 5) + SourceIndex(0) -4 >Emitted(37, 6) Source(46, 6) + SourceIndex(0) -5 >Emitted(37, 9) Source(46, 9) + SourceIndex(0) -6 >Emitted(37, 10) Source(46, 10) + SourceIndex(0) -7 >Emitted(37, 32) Source(46, 31) + SourceIndex(0) -8 >Emitted(37, 34) Source(46, 33) + SourceIndex(0) -9 >Emitted(37, 35) Source(46, 34) + SourceIndex(0) -10>Emitted(37, 38) Source(46, 37) + SourceIndex(0) -11>Emitted(37, 39) Source(46, 38) + SourceIndex(0) -12>Emitted(37, 41) Source(46, 40) + SourceIndex(0) -13>Emitted(37, 42) Source(46, 41) + SourceIndex(0) -14>Emitted(37, 45) Source(46, 44) + SourceIndex(0) -15>Emitted(37, 46) Source(46, 45) + SourceIndex(0) -16>Emitted(37, 48) Source(46, 47) + SourceIndex(0) -17>Emitted(37, 49) Source(46, 48) + SourceIndex(0) -18>Emitted(37, 51) Source(46, 50) + SourceIndex(0) -19>Emitted(37, 53) Source(46, 52) + SourceIndex(0) -20>Emitted(37, 54) Source(46, 53) + SourceIndex(0) +4 >Emitted(37, 6) Source(46, 11) + SourceIndex(0) +5 >Emitted(37, 32) Source(46, 16) + SourceIndex(0) +6 >Emitted(37, 34) Source(46, 33) + SourceIndex(0) +7 >Emitted(37, 35) Source(46, 34) + SourceIndex(0) +8 >Emitted(37, 38) Source(46, 37) + SourceIndex(0) +9 >Emitted(37, 39) Source(46, 38) + SourceIndex(0) +10>Emitted(37, 41) Source(46, 40) + SourceIndex(0) +11>Emitted(37, 42) Source(46, 41) + SourceIndex(0) +12>Emitted(37, 45) Source(46, 44) + SourceIndex(0) +13>Emitted(37, 46) Source(46, 45) + SourceIndex(0) +14>Emitted(37, 48) Source(46, 47) + SourceIndex(0) +15>Emitted(37, 49) Source(46, 48) + SourceIndex(0) +16>Emitted(37, 51) Source(46, 50) + SourceIndex(0) +17>Emitted(37, 53) Source(46, 52) + SourceIndex(0) +18>Emitted(37, 54) Source(46, 53) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1281,63 +1221,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [nameB] = getMultiRobot() -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > nameB +6 > ] = getMultiRobot(), +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(40, 1) Source(49, 1) + SourceIndex(0) 2 >Emitted(40, 4) Source(49, 4) + SourceIndex(0) 3 >Emitted(40, 5) Source(49, 5) + SourceIndex(0) -4 >Emitted(40, 6) Source(49, 6) + SourceIndex(0) -5 >Emitted(40, 9) Source(49, 9) + SourceIndex(0) -6 >Emitted(40, 10) Source(49, 10) + SourceIndex(0) -7 >Emitted(40, 36) Source(49, 35) + SourceIndex(0) -8 >Emitted(40, 38) Source(49, 37) + SourceIndex(0) -9 >Emitted(40, 39) Source(49, 38) + SourceIndex(0) -10>Emitted(40, 42) Source(49, 41) + SourceIndex(0) -11>Emitted(40, 43) Source(49, 42) + SourceIndex(0) -12>Emitted(40, 45) Source(49, 44) + SourceIndex(0) -13>Emitted(40, 46) Source(49, 45) + SourceIndex(0) -14>Emitted(40, 49) Source(49, 48) + SourceIndex(0) -15>Emitted(40, 50) Source(49, 49) + SourceIndex(0) -16>Emitted(40, 52) Source(49, 51) + SourceIndex(0) -17>Emitted(40, 53) Source(49, 52) + SourceIndex(0) -18>Emitted(40, 55) Source(49, 54) + SourceIndex(0) -19>Emitted(40, 57) Source(49, 56) + SourceIndex(0) -20>Emitted(40, 58) Source(49, 57) + SourceIndex(0) +4 >Emitted(40, 6) Source(49, 11) + SourceIndex(0) +5 >Emitted(40, 36) Source(49, 16) + SourceIndex(0) +6 >Emitted(40, 38) Source(49, 37) + SourceIndex(0) +7 >Emitted(40, 39) Source(49, 38) + SourceIndex(0) +8 >Emitted(40, 42) Source(49, 41) + SourceIndex(0) +9 >Emitted(40, 43) Source(49, 42) + SourceIndex(0) +10>Emitted(40, 45) Source(49, 44) + SourceIndex(0) +11>Emitted(40, 46) Source(49, 45) + SourceIndex(0) +12>Emitted(40, 49) Source(49, 48) + SourceIndex(0) +13>Emitted(40, 50) Source(49, 49) + SourceIndex(0) +14>Emitted(40, 52) Source(49, 51) + SourceIndex(0) +15>Emitted(40, 53) Source(49, 52) + SourceIndex(0) +16>Emitted(40, 55) Source(49, 54) + SourceIndex(0) +17>Emitted(40, 57) Source(49, 56) + SourceIndex(0) +18>Emitted(40, 58) Source(49, 57) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1381,63 +1315,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [nameB] = ["trimmer", ["trimming", "edging"]] -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > nameB +6 > ] = ["trimmer", ["trimming", "edging"]], +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(43, 1) Source(52, 1) + SourceIndex(0) 2 >Emitted(43, 4) Source(52, 4) + SourceIndex(0) 3 >Emitted(43, 5) Source(52, 5) + SourceIndex(0) -4 >Emitted(43, 6) Source(52, 6) + SourceIndex(0) -5 >Emitted(43, 9) Source(52, 9) + SourceIndex(0) -6 >Emitted(43, 10) Source(52, 10) + SourceIndex(0) -7 >Emitted(43, 56) Source(52, 55) + SourceIndex(0) -8 >Emitted(43, 58) Source(52, 57) + SourceIndex(0) -9 >Emitted(43, 59) Source(52, 58) + SourceIndex(0) -10>Emitted(43, 62) Source(52, 61) + SourceIndex(0) -11>Emitted(43, 63) Source(52, 62) + SourceIndex(0) -12>Emitted(43, 65) Source(52, 64) + SourceIndex(0) -13>Emitted(43, 66) Source(52, 65) + SourceIndex(0) -14>Emitted(43, 69) Source(52, 68) + SourceIndex(0) -15>Emitted(43, 70) Source(52, 69) + SourceIndex(0) -16>Emitted(43, 72) Source(52, 71) + SourceIndex(0) -17>Emitted(43, 73) Source(52, 72) + SourceIndex(0) -18>Emitted(43, 75) Source(52, 74) + SourceIndex(0) -19>Emitted(43, 77) Source(52, 76) + SourceIndex(0) -20>Emitted(43, 78) Source(52, 77) + SourceIndex(0) +4 >Emitted(43, 6) Source(52, 11) + SourceIndex(0) +5 >Emitted(43, 56) Source(52, 16) + SourceIndex(0) +6 >Emitted(43, 58) Source(52, 57) + SourceIndex(0) +7 >Emitted(43, 59) Source(52, 58) + SourceIndex(0) +8 >Emitted(43, 62) Source(52, 61) + SourceIndex(0) +9 >Emitted(43, 63) Source(52, 62) + SourceIndex(0) +10>Emitted(43, 65) Source(52, 64) + SourceIndex(0) +11>Emitted(43, 66) Source(52, 65) + SourceIndex(0) +12>Emitted(43, 69) Source(52, 68) + SourceIndex(0) +13>Emitted(43, 70) Source(52, 69) + SourceIndex(0) +14>Emitted(43, 72) Source(52, 71) + SourceIndex(0) +15>Emitted(43, 73) Source(52, 72) + SourceIndex(0) +16>Emitted(43, 75) Source(52, 74) + SourceIndex(0) +17>Emitted(43, 77) Source(52, 76) + SourceIndex(0) +18>Emitted(43, 78) Source(52, 77) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1481,76 +1409,70 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > > 2 >for 3 > -4 > ( -5 > let -6 > [ -7 > numberA2 -8 > , -9 > nameA2 -10> , -11> skillA2 -12> ] = robotA, -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let [ +5 > numberA2 +6 > , +7 > nameA2 +8 > , +9 > skillA2 +10> ] = robotA, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(46, 1) Source(56, 1) + SourceIndex(0) 2 >Emitted(46, 4) Source(56, 4) + SourceIndex(0) 3 >Emitted(46, 5) Source(56, 5) + SourceIndex(0) -4 >Emitted(46, 6) Source(56, 6) + SourceIndex(0) -5 >Emitted(46, 9) Source(56, 9) + SourceIndex(0) -6 >Emitted(46, 10) Source(56, 11) + SourceIndex(0) -7 >Emitted(46, 30) Source(56, 19) + SourceIndex(0) -8 >Emitted(46, 32) Source(56, 21) + SourceIndex(0) -9 >Emitted(46, 50) Source(56, 27) + SourceIndex(0) -10>Emitted(46, 52) Source(56, 29) + SourceIndex(0) -11>Emitted(46, 71) Source(56, 36) + SourceIndex(0) -12>Emitted(46, 73) Source(56, 48) + SourceIndex(0) -13>Emitted(46, 74) Source(56, 49) + SourceIndex(0) -14>Emitted(46, 77) Source(56, 52) + SourceIndex(0) -15>Emitted(46, 78) Source(56, 53) + SourceIndex(0) -16>Emitted(46, 80) Source(56, 55) + SourceIndex(0) -17>Emitted(46, 81) Source(56, 56) + SourceIndex(0) -18>Emitted(46, 84) Source(56, 59) + SourceIndex(0) -19>Emitted(46, 85) Source(56, 60) + SourceIndex(0) -20>Emitted(46, 87) Source(56, 62) + SourceIndex(0) -21>Emitted(46, 88) Source(56, 63) + SourceIndex(0) -22>Emitted(46, 90) Source(56, 65) + SourceIndex(0) -23>Emitted(46, 92) Source(56, 67) + SourceIndex(0) -24>Emitted(46, 93) Source(56, 68) + SourceIndex(0) +4 >Emitted(46, 6) Source(56, 11) + SourceIndex(0) +5 >Emitted(46, 30) Source(56, 19) + SourceIndex(0) +6 >Emitted(46, 32) Source(56, 21) + SourceIndex(0) +7 >Emitted(46, 50) Source(56, 27) + SourceIndex(0) +8 >Emitted(46, 52) Source(56, 29) + SourceIndex(0) +9 >Emitted(46, 71) Source(56, 36) + SourceIndex(0) +10>Emitted(46, 73) Source(56, 48) + SourceIndex(0) +11>Emitted(46, 74) Source(56, 49) + SourceIndex(0) +12>Emitted(46, 77) Source(56, 52) + SourceIndex(0) +13>Emitted(46, 78) Source(56, 53) + SourceIndex(0) +14>Emitted(46, 80) Source(56, 55) + SourceIndex(0) +15>Emitted(46, 81) Source(56, 56) + SourceIndex(0) +16>Emitted(46, 84) Source(56, 59) + SourceIndex(0) +17>Emitted(46, 85) Source(56, 60) + SourceIndex(0) +18>Emitted(46, 87) Source(56, 62) + SourceIndex(0) +19>Emitted(46, 88) Source(56, 63) + SourceIndex(0) +20>Emitted(46, 90) Source(56, 65) + SourceIndex(0) +21>Emitted(46, 92) Source(56, 67) + SourceIndex(0) +22>Emitted(46, 93) Source(56, 68) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1594,81 +1516,75 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberA2, nameA2, skillA2] = getRobot() -8 > -9 > numberA2 -10> , -11> nameA2 -12> , -13> skillA2 -14> ] = getRobot(), -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > (let +5 > [numberA2, nameA2, skillA2] = getRobot() +6 > +7 > numberA2 +8 > , +9 > nameA2 +10> , +11> skillA2 +12> ] = getRobot(), +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { 1->Emitted(49, 1) Source(59, 1) + SourceIndex(0) 2 >Emitted(49, 4) Source(59, 4) + SourceIndex(0) 3 >Emitted(49, 5) Source(59, 5) + SourceIndex(0) -4 >Emitted(49, 6) Source(59, 6) + SourceIndex(0) -5 >Emitted(49, 9) Source(59, 9) + SourceIndex(0) -6 >Emitted(49, 10) Source(59, 10) + SourceIndex(0) -7 >Emitted(49, 25) Source(59, 50) + SourceIndex(0) -8 >Emitted(49, 27) Source(59, 11) + SourceIndex(0) -9 >Emitted(49, 43) Source(59, 19) + SourceIndex(0) -10>Emitted(49, 45) Source(59, 21) + SourceIndex(0) -11>Emitted(49, 59) Source(59, 27) + SourceIndex(0) -12>Emitted(49, 61) Source(59, 29) + SourceIndex(0) -13>Emitted(49, 76) Source(59, 36) + SourceIndex(0) -14>Emitted(49, 78) Source(59, 52) + SourceIndex(0) -15>Emitted(49, 79) Source(59, 53) + SourceIndex(0) -16>Emitted(49, 82) Source(59, 56) + SourceIndex(0) -17>Emitted(49, 83) Source(59, 57) + SourceIndex(0) -18>Emitted(49, 85) Source(59, 59) + SourceIndex(0) -19>Emitted(49, 86) Source(59, 60) + SourceIndex(0) -20>Emitted(49, 89) Source(59, 63) + SourceIndex(0) -21>Emitted(49, 90) Source(59, 64) + SourceIndex(0) -22>Emitted(49, 92) Source(59, 66) + SourceIndex(0) -23>Emitted(49, 93) Source(59, 67) + SourceIndex(0) -24>Emitted(49, 95) Source(59, 69) + SourceIndex(0) -25>Emitted(49, 97) Source(59, 71) + SourceIndex(0) -26>Emitted(49, 98) Source(59, 72) + SourceIndex(0) +4 >Emitted(49, 6) Source(59, 10) + SourceIndex(0) +5 >Emitted(49, 25) Source(59, 50) + SourceIndex(0) +6 >Emitted(49, 27) Source(59, 11) + SourceIndex(0) +7 >Emitted(49, 43) Source(59, 19) + SourceIndex(0) +8 >Emitted(49, 45) Source(59, 21) + SourceIndex(0) +9 >Emitted(49, 59) Source(59, 27) + SourceIndex(0) +10>Emitted(49, 61) Source(59, 29) + SourceIndex(0) +11>Emitted(49, 76) Source(59, 36) + SourceIndex(0) +12>Emitted(49, 78) Source(59, 52) + SourceIndex(0) +13>Emitted(49, 79) Source(59, 53) + SourceIndex(0) +14>Emitted(49, 82) Source(59, 56) + SourceIndex(0) +15>Emitted(49, 83) Source(59, 57) + SourceIndex(0) +16>Emitted(49, 85) Source(59, 59) + SourceIndex(0) +17>Emitted(49, 86) Source(59, 60) + SourceIndex(0) +18>Emitted(49, 89) Source(59, 63) + SourceIndex(0) +19>Emitted(49, 90) Source(59, 64) + SourceIndex(0) +20>Emitted(49, 92) Source(59, 66) + SourceIndex(0) +21>Emitted(49, 93) Source(59, 67) + SourceIndex(0) +22>Emitted(49, 95) Source(59, 69) + SourceIndex(0) +23>Emitted(49, 97) Source(59, 71) + SourceIndex(0) +24>Emitted(49, 98) Source(59, 72) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1712,81 +1628,75 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] -8 > -9 > numberA2 -10> , -11> nameA2 -12> , -13> skillA2 -14> ] = [2, "trimmer", "trimming"], -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > (let +5 > [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] +6 > +7 > numberA2 +8 > , +9 > nameA2 +10> , +11> skillA2 +12> ] = [2, "trimmer", "trimming"], +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { 1->Emitted(52, 1) Source(62, 1) + SourceIndex(0) 2 >Emitted(52, 4) Source(62, 4) + SourceIndex(0) 3 >Emitted(52, 5) Source(62, 5) + SourceIndex(0) -4 >Emitted(52, 6) Source(62, 6) + SourceIndex(0) -5 >Emitted(52, 9) Source(62, 9) + SourceIndex(0) -6 >Emitted(52, 10) Source(62, 10) + SourceIndex(0) -7 >Emitted(52, 41) Source(62, 66) + SourceIndex(0) -8 >Emitted(52, 43) Source(62, 11) + SourceIndex(0) -9 >Emitted(52, 59) Source(62, 19) + SourceIndex(0) -10>Emitted(52, 61) Source(62, 21) + SourceIndex(0) -11>Emitted(52, 75) Source(62, 27) + SourceIndex(0) -12>Emitted(52, 77) Source(62, 29) + SourceIndex(0) -13>Emitted(52, 92) Source(62, 36) + SourceIndex(0) -14>Emitted(52, 94) Source(62, 68) + SourceIndex(0) -15>Emitted(52, 95) Source(62, 69) + SourceIndex(0) -16>Emitted(52, 98) Source(62, 72) + SourceIndex(0) -17>Emitted(52, 99) Source(62, 73) + SourceIndex(0) -18>Emitted(52, 101) Source(62, 75) + SourceIndex(0) -19>Emitted(52, 102) Source(62, 76) + SourceIndex(0) -20>Emitted(52, 105) Source(62, 79) + SourceIndex(0) -21>Emitted(52, 106) Source(62, 80) + SourceIndex(0) -22>Emitted(52, 108) Source(62, 82) + SourceIndex(0) -23>Emitted(52, 109) Source(62, 83) + SourceIndex(0) -24>Emitted(52, 111) Source(62, 85) + SourceIndex(0) -25>Emitted(52, 113) Source(62, 87) + SourceIndex(0) -26>Emitted(52, 114) Source(62, 88) + SourceIndex(0) +4 >Emitted(52, 6) Source(62, 10) + SourceIndex(0) +5 >Emitted(52, 41) Source(62, 66) + SourceIndex(0) +6 >Emitted(52, 43) Source(62, 11) + SourceIndex(0) +7 >Emitted(52, 59) Source(62, 19) + SourceIndex(0) +8 >Emitted(52, 61) Source(62, 21) + SourceIndex(0) +9 >Emitted(52, 75) Source(62, 27) + SourceIndex(0) +10>Emitted(52, 77) Source(62, 29) + SourceIndex(0) +11>Emitted(52, 92) Source(62, 36) + SourceIndex(0) +12>Emitted(52, 94) Source(62, 68) + SourceIndex(0) +13>Emitted(52, 95) Source(62, 69) + SourceIndex(0) +14>Emitted(52, 98) Source(62, 72) + SourceIndex(0) +15>Emitted(52, 99) Source(62, 73) + SourceIndex(0) +16>Emitted(52, 101) Source(62, 75) + SourceIndex(0) +17>Emitted(52, 102) Source(62, 76) + SourceIndex(0) +18>Emitted(52, 105) Source(62, 79) + SourceIndex(0) +19>Emitted(52, 106) Source(62, 80) + SourceIndex(0) +20>Emitted(52, 108) Source(62, 82) + SourceIndex(0) +21>Emitted(52, 109) Source(62, 83) + SourceIndex(0) +22>Emitted(52, 111) Source(62, 85) + SourceIndex(0) +23>Emitted(52, 113) Source(62, 87) + SourceIndex(0) +24>Emitted(52, 114) Source(62, 88) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1830,81 +1740,75 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > [ -7 > nameMA -8 > , -9 > [primarySkillA, secondarySkillA] -10> -11> primarySkillA -12> , -13> secondarySkillA -14> ]] = multiRobotA, -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > (let [ +5 > nameMA +6 > , +7 > [primarySkillA, secondarySkillA] +8 > +9 > primarySkillA +10> , +11> secondarySkillA +12> ]] = multiRobotA, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { 1->Emitted(55, 1) Source(65, 1) + SourceIndex(0) 2 >Emitted(55, 4) Source(65, 4) + SourceIndex(0) 3 >Emitted(55, 5) Source(65, 5) + SourceIndex(0) -4 >Emitted(55, 6) Source(65, 6) + SourceIndex(0) -5 >Emitted(55, 9) Source(65, 9) + SourceIndex(0) -6 >Emitted(55, 10) Source(65, 11) + SourceIndex(0) -7 >Emitted(55, 33) Source(65, 17) + SourceIndex(0) -8 >Emitted(55, 35) Source(65, 19) + SourceIndex(0) -9 >Emitted(55, 54) Source(65, 51) + SourceIndex(0) -10>Emitted(55, 56) Source(65, 20) + SourceIndex(0) -11>Emitted(55, 77) Source(65, 33) + SourceIndex(0) -12>Emitted(55, 79) Source(65, 35) + SourceIndex(0) -13>Emitted(55, 102) Source(65, 50) + SourceIndex(0) -14>Emitted(55, 104) Source(65, 68) + SourceIndex(0) -15>Emitted(55, 105) Source(65, 69) + SourceIndex(0) -16>Emitted(55, 108) Source(65, 72) + SourceIndex(0) -17>Emitted(55, 109) Source(65, 73) + SourceIndex(0) -18>Emitted(55, 111) Source(65, 75) + SourceIndex(0) -19>Emitted(55, 112) Source(65, 76) + SourceIndex(0) -20>Emitted(55, 115) Source(65, 79) + SourceIndex(0) -21>Emitted(55, 116) Source(65, 80) + SourceIndex(0) -22>Emitted(55, 118) Source(65, 82) + SourceIndex(0) -23>Emitted(55, 119) Source(65, 83) + SourceIndex(0) -24>Emitted(55, 121) Source(65, 85) + SourceIndex(0) -25>Emitted(55, 123) Source(65, 87) + SourceIndex(0) -26>Emitted(55, 124) Source(65, 88) + SourceIndex(0) +4 >Emitted(55, 6) Source(65, 11) + SourceIndex(0) +5 >Emitted(55, 33) Source(65, 17) + SourceIndex(0) +6 >Emitted(55, 35) Source(65, 19) + SourceIndex(0) +7 >Emitted(55, 54) Source(65, 51) + SourceIndex(0) +8 >Emitted(55, 56) Source(65, 20) + SourceIndex(0) +9 >Emitted(55, 77) Source(65, 33) + SourceIndex(0) +10>Emitted(55, 79) Source(65, 35) + SourceIndex(0) +11>Emitted(55, 102) Source(65, 50) + SourceIndex(0) +12>Emitted(55, 104) Source(65, 68) + SourceIndex(0) +13>Emitted(55, 105) Source(65, 69) + SourceIndex(0) +14>Emitted(55, 108) Source(65, 72) + SourceIndex(0) +15>Emitted(55, 109) Source(65, 73) + SourceIndex(0) +16>Emitted(55, 111) Source(65, 75) + SourceIndex(0) +17>Emitted(55, 112) Source(65, 76) + SourceIndex(0) +18>Emitted(55, 115) Source(65, 79) + SourceIndex(0) +19>Emitted(55, 116) Source(65, 80) + SourceIndex(0) +20>Emitted(55, 118) Source(65, 82) + SourceIndex(0) +21>Emitted(55, 119) Source(65, 83) + SourceIndex(0) +22>Emitted(55, 121) Source(65, 85) + SourceIndex(0) +23>Emitted(55, 123) Source(65, 87) + SourceIndex(0) +24>Emitted(55, 124) Source(65, 88) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -1948,87 +1852,81 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^^^^^^^^^^^^^^^^^^^^^^^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^^ -23> ^ -24> ^^ -25> ^ -26> ^^ -27> ^^ -28> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() -8 > -9 > nameMA -10> , -11> [primarySkillA, secondarySkillA] -12> -13> primarySkillA -14> , -15> secondarySkillA -16> ]] = getMultiRobot(), -17> i -18> = -19> 0 -20> ; -21> i -22> < -23> 1 -24> ; -25> i -26> ++ -27> ) -28> { +4 > (let +5 > [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() +6 > +7 > nameMA +8 > , +9 > [primarySkillA, secondarySkillA] +10> +11> primarySkillA +12> , +13> secondarySkillA +14> ]] = getMultiRobot(), +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { 1->Emitted(58, 1) Source(68, 1) + SourceIndex(0) 2 >Emitted(58, 4) Source(68, 4) + SourceIndex(0) 3 >Emitted(58, 5) Source(68, 5) + SourceIndex(0) -4 >Emitted(58, 6) Source(68, 6) + SourceIndex(0) -5 >Emitted(58, 9) Source(68, 9) + SourceIndex(0) -6 >Emitted(58, 10) Source(68, 10) + SourceIndex(0) -7 >Emitted(58, 30) Source(68, 70) + SourceIndex(0) -8 >Emitted(58, 32) Source(68, 11) + SourceIndex(0) -9 >Emitted(58, 46) Source(68, 17) + SourceIndex(0) -10>Emitted(58, 48) Source(68, 19) + SourceIndex(0) -11>Emitted(58, 58) Source(68, 51) + SourceIndex(0) -12>Emitted(58, 60) Source(68, 20) + SourceIndex(0) -13>Emitted(58, 81) Source(68, 33) + SourceIndex(0) -14>Emitted(58, 83) Source(68, 35) + SourceIndex(0) -15>Emitted(58, 106) Source(68, 50) + SourceIndex(0) -16>Emitted(58, 108) Source(68, 72) + SourceIndex(0) -17>Emitted(58, 109) Source(68, 73) + SourceIndex(0) -18>Emitted(58, 112) Source(68, 76) + SourceIndex(0) -19>Emitted(58, 113) Source(68, 77) + SourceIndex(0) -20>Emitted(58, 115) Source(68, 79) + SourceIndex(0) -21>Emitted(58, 116) Source(68, 80) + SourceIndex(0) -22>Emitted(58, 119) Source(68, 83) + SourceIndex(0) -23>Emitted(58, 120) Source(68, 84) + SourceIndex(0) -24>Emitted(58, 122) Source(68, 86) + SourceIndex(0) -25>Emitted(58, 123) Source(68, 87) + SourceIndex(0) -26>Emitted(58, 125) Source(68, 89) + SourceIndex(0) -27>Emitted(58, 127) Source(68, 91) + SourceIndex(0) -28>Emitted(58, 128) Source(68, 92) + SourceIndex(0) +4 >Emitted(58, 6) Source(68, 10) + SourceIndex(0) +5 >Emitted(58, 30) Source(68, 70) + SourceIndex(0) +6 >Emitted(58, 32) Source(68, 11) + SourceIndex(0) +7 >Emitted(58, 46) Source(68, 17) + SourceIndex(0) +8 >Emitted(58, 48) Source(68, 19) + SourceIndex(0) +9 >Emitted(58, 58) Source(68, 51) + SourceIndex(0) +10>Emitted(58, 60) Source(68, 20) + SourceIndex(0) +11>Emitted(58, 81) Source(68, 33) + SourceIndex(0) +12>Emitted(58, 83) Source(68, 35) + SourceIndex(0) +13>Emitted(58, 106) Source(68, 50) + SourceIndex(0) +14>Emitted(58, 108) Source(68, 72) + SourceIndex(0) +15>Emitted(58, 109) Source(68, 73) + SourceIndex(0) +16>Emitted(58, 112) Source(68, 76) + SourceIndex(0) +17>Emitted(58, 113) Source(68, 77) + SourceIndex(0) +18>Emitted(58, 115) Source(68, 79) + SourceIndex(0) +19>Emitted(58, 116) Source(68, 80) + SourceIndex(0) +20>Emitted(58, 119) Source(68, 83) + SourceIndex(0) +21>Emitted(58, 120) Source(68, 84) + SourceIndex(0) +22>Emitted(58, 122) Source(68, 86) + SourceIndex(0) +23>Emitted(58, 123) Source(68, 87) + SourceIndex(0) +24>Emitted(58, 125) Source(68, 89) + SourceIndex(0) +25>Emitted(58, 127) Source(68, 91) + SourceIndex(0) +26>Emitted(58, 128) Source(68, 92) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2072,87 +1970,81 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^^^^^^^^^^^^^^^^^^^^^^^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^^ -23> ^ -24> ^^ -25> ^ -26> ^^ -27> ^^ -28> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] -8 > -9 > nameMA -10> , -11> [primarySkillA, secondarySkillA] -12> -13> primarySkillA -14> , -15> secondarySkillA -16> ]] = ["trimmer", ["trimming", "edging"]], -17> i -18> = -19> 0 -20> ; -21> i -22> < -23> 1 -24> ; -25> i -26> ++ -27> ) -28> { +4 > (let +5 > [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] +6 > +7 > nameMA +8 > , +9 > [primarySkillA, secondarySkillA] +10> +11> primarySkillA +12> , +13> secondarySkillA +14> ]] = ["trimmer", ["trimming", "edging"]], +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { 1->Emitted(61, 1) Source(71, 1) + SourceIndex(0) 2 >Emitted(61, 4) Source(71, 4) + SourceIndex(0) 3 >Emitted(61, 5) Source(71, 5) + SourceIndex(0) -4 >Emitted(61, 6) Source(71, 6) + SourceIndex(0) -5 >Emitted(61, 9) Source(71, 9) + SourceIndex(0) -6 >Emitted(61, 10) Source(71, 10) + SourceIndex(0) -7 >Emitted(61, 50) Source(71, 90) + SourceIndex(0) -8 >Emitted(61, 52) Source(71, 11) + SourceIndex(0) -9 >Emitted(61, 66) Source(71, 17) + SourceIndex(0) -10>Emitted(61, 68) Source(71, 19) + SourceIndex(0) -11>Emitted(61, 78) Source(71, 51) + SourceIndex(0) -12>Emitted(61, 80) Source(71, 20) + SourceIndex(0) -13>Emitted(61, 101) Source(71, 33) + SourceIndex(0) -14>Emitted(61, 103) Source(71, 35) + SourceIndex(0) -15>Emitted(61, 126) Source(71, 50) + SourceIndex(0) -16>Emitted(61, 128) Source(71, 92) + SourceIndex(0) -17>Emitted(61, 129) Source(71, 93) + SourceIndex(0) -18>Emitted(61, 132) Source(71, 96) + SourceIndex(0) -19>Emitted(61, 133) Source(71, 97) + SourceIndex(0) -20>Emitted(61, 135) Source(71, 99) + SourceIndex(0) -21>Emitted(61, 136) Source(71, 100) + SourceIndex(0) -22>Emitted(61, 139) Source(71, 103) + SourceIndex(0) -23>Emitted(61, 140) Source(71, 104) + SourceIndex(0) -24>Emitted(61, 142) Source(71, 106) + SourceIndex(0) -25>Emitted(61, 143) Source(71, 107) + SourceIndex(0) -26>Emitted(61, 145) Source(71, 109) + SourceIndex(0) -27>Emitted(61, 147) Source(71, 111) + SourceIndex(0) -28>Emitted(61, 148) Source(71, 112) + SourceIndex(0) +4 >Emitted(61, 6) Source(71, 10) + SourceIndex(0) +5 >Emitted(61, 50) Source(71, 90) + SourceIndex(0) +6 >Emitted(61, 52) Source(71, 11) + SourceIndex(0) +7 >Emitted(61, 66) Source(71, 17) + SourceIndex(0) +8 >Emitted(61, 68) Source(71, 19) + SourceIndex(0) +9 >Emitted(61, 78) Source(71, 51) + SourceIndex(0) +10>Emitted(61, 80) Source(71, 20) + SourceIndex(0) +11>Emitted(61, 101) Source(71, 33) + SourceIndex(0) +12>Emitted(61, 103) Source(71, 35) + SourceIndex(0) +13>Emitted(61, 126) Source(71, 50) + SourceIndex(0) +14>Emitted(61, 128) Source(71, 92) + SourceIndex(0) +15>Emitted(61, 129) Source(71, 93) + SourceIndex(0) +16>Emitted(61, 132) Source(71, 96) + SourceIndex(0) +17>Emitted(61, 133) Source(71, 97) + SourceIndex(0) +18>Emitted(61, 135) Source(71, 99) + SourceIndex(0) +19>Emitted(61, 136) Source(71, 100) + SourceIndex(0) +20>Emitted(61, 139) Source(71, 103) + SourceIndex(0) +21>Emitted(61, 140) Source(71, 104) + SourceIndex(0) +22>Emitted(61, 142) Source(71, 106) + SourceIndex(0) +23>Emitted(61, 143) Source(71, 107) + SourceIndex(0) +24>Emitted(61, 145) Source(71, 109) + SourceIndex(0) +25>Emitted(61, 147) Source(71, 111) + SourceIndex(0) +26>Emitted(61, 148) Source(71, 112) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2196,70 +2088,64 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ 1-> > > 2 >for 3 > -4 > ( -5 > let -6 > [ -7 > numberA3 -8 > , -9 > ...robotAInfo -10> ] = robotA, -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > (let [ +5 > numberA3 +6 > , +7 > ...robotAInfo +8 > ] = robotA, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { 1->Emitted(64, 1) Source(75, 1) + SourceIndex(0) 2 >Emitted(64, 4) Source(75, 4) + SourceIndex(0) 3 >Emitted(64, 5) Source(75, 5) + SourceIndex(0) -4 >Emitted(64, 6) Source(75, 6) + SourceIndex(0) -5 >Emitted(64, 9) Source(75, 9) + SourceIndex(0) -6 >Emitted(64, 10) Source(75, 11) + SourceIndex(0) -7 >Emitted(64, 30) Source(75, 19) + SourceIndex(0) -8 >Emitted(64, 32) Source(75, 21) + SourceIndex(0) -9 >Emitted(64, 60) Source(75, 34) + SourceIndex(0) -10>Emitted(64, 62) Source(75, 46) + SourceIndex(0) -11>Emitted(64, 63) Source(75, 47) + SourceIndex(0) -12>Emitted(64, 66) Source(75, 50) + SourceIndex(0) -13>Emitted(64, 67) Source(75, 51) + SourceIndex(0) -14>Emitted(64, 69) Source(75, 53) + SourceIndex(0) -15>Emitted(64, 70) Source(75, 54) + SourceIndex(0) -16>Emitted(64, 73) Source(75, 57) + SourceIndex(0) -17>Emitted(64, 74) Source(75, 58) + SourceIndex(0) -18>Emitted(64, 76) Source(75, 60) + SourceIndex(0) -19>Emitted(64, 77) Source(75, 61) + SourceIndex(0) -20>Emitted(64, 79) Source(75, 63) + SourceIndex(0) -21>Emitted(64, 81) Source(75, 65) + SourceIndex(0) -22>Emitted(64, 82) Source(75, 66) + SourceIndex(0) +4 >Emitted(64, 6) Source(75, 11) + SourceIndex(0) +5 >Emitted(64, 30) Source(75, 19) + SourceIndex(0) +6 >Emitted(64, 32) Source(75, 21) + SourceIndex(0) +7 >Emitted(64, 60) Source(75, 34) + SourceIndex(0) +8 >Emitted(64, 62) Source(75, 46) + SourceIndex(0) +9 >Emitted(64, 63) Source(75, 47) + SourceIndex(0) +10>Emitted(64, 66) Source(75, 50) + SourceIndex(0) +11>Emitted(64, 67) Source(75, 51) + SourceIndex(0) +12>Emitted(64, 69) Source(75, 53) + SourceIndex(0) +13>Emitted(64, 70) Source(75, 54) + SourceIndex(0) +14>Emitted(64, 73) Source(75, 57) + SourceIndex(0) +15>Emitted(64, 74) Source(75, 58) + SourceIndex(0) +16>Emitted(64, 76) Source(75, 60) + SourceIndex(0) +17>Emitted(64, 77) Source(75, 61) + SourceIndex(0) +18>Emitted(64, 79) Source(75, 63) + SourceIndex(0) +19>Emitted(64, 81) Source(75, 65) + SourceIndex(0) +20>Emitted(64, 82) Source(75, 66) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2303,75 +2189,69 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberA3, ...robotAInfo] = getRobot() -8 > -9 > numberA3 -10> , -11> ...robotAInfo -12> ] = getRobot(), -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let +5 > [numberA3, ...robotAInfo] = getRobot() +6 > +7 > numberA3 +8 > , +9 > ...robotAInfo +10> ] = getRobot(), +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(67, 1) Source(78, 1) + SourceIndex(0) 2 >Emitted(67, 4) Source(78, 4) + SourceIndex(0) 3 >Emitted(67, 5) Source(78, 5) + SourceIndex(0) -4 >Emitted(67, 6) Source(78, 6) + SourceIndex(0) -5 >Emitted(67, 9) Source(78, 9) + SourceIndex(0) -6 >Emitted(67, 10) Source(78, 10) + SourceIndex(0) -7 >Emitted(67, 25) Source(78, 48) + SourceIndex(0) -8 >Emitted(67, 27) Source(78, 11) + SourceIndex(0) -9 >Emitted(67, 43) Source(78, 19) + SourceIndex(0) -10>Emitted(67, 45) Source(78, 21) + SourceIndex(0) -11>Emitted(67, 69) Source(78, 34) + SourceIndex(0) -12>Emitted(67, 71) Source(78, 50) + SourceIndex(0) -13>Emitted(67, 72) Source(78, 51) + SourceIndex(0) -14>Emitted(67, 75) Source(78, 54) + SourceIndex(0) -15>Emitted(67, 76) Source(78, 55) + SourceIndex(0) -16>Emitted(67, 78) Source(78, 57) + SourceIndex(0) -17>Emitted(67, 79) Source(78, 58) + SourceIndex(0) -18>Emitted(67, 82) Source(78, 61) + SourceIndex(0) -19>Emitted(67, 83) Source(78, 62) + SourceIndex(0) -20>Emitted(67, 85) Source(78, 64) + SourceIndex(0) -21>Emitted(67, 86) Source(78, 65) + SourceIndex(0) -22>Emitted(67, 88) Source(78, 67) + SourceIndex(0) -23>Emitted(67, 90) Source(78, 69) + SourceIndex(0) -24>Emitted(67, 91) Source(78, 70) + SourceIndex(0) +4 >Emitted(67, 6) Source(78, 10) + SourceIndex(0) +5 >Emitted(67, 25) Source(78, 48) + SourceIndex(0) +6 >Emitted(67, 27) Source(78, 11) + SourceIndex(0) +7 >Emitted(67, 43) Source(78, 19) + SourceIndex(0) +8 >Emitted(67, 45) Source(78, 21) + SourceIndex(0) +9 >Emitted(67, 69) Source(78, 34) + SourceIndex(0) +10>Emitted(67, 71) Source(78, 50) + SourceIndex(0) +11>Emitted(67, 72) Source(78, 51) + SourceIndex(0) +12>Emitted(67, 75) Source(78, 54) + SourceIndex(0) +13>Emitted(67, 76) Source(78, 55) + SourceIndex(0) +14>Emitted(67, 78) Source(78, 57) + SourceIndex(0) +15>Emitted(67, 79) Source(78, 58) + SourceIndex(0) +16>Emitted(67, 82) Source(78, 61) + SourceIndex(0) +17>Emitted(67, 83) Source(78, 62) + SourceIndex(0) +18>Emitted(67, 85) Source(78, 64) + SourceIndex(0) +19>Emitted(67, 86) Source(78, 65) + SourceIndex(0) +20>Emitted(67, 88) Source(78, 67) + SourceIndex(0) +21>Emitted(67, 90) Source(78, 69) + SourceIndex(0) +22>Emitted(67, 91) Source(78, 70) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2415,75 +2295,69 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] -8 > -9 > numberA3 -10> , -11> ...robotAInfo -12> ] = [2, "trimmer", "trimming"], -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let +5 > [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] +6 > +7 > numberA3 +8 > , +9 > ...robotAInfo +10> ] = [2, "trimmer", "trimming"], +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(70, 1) Source(81, 1) + SourceIndex(0) 2 >Emitted(70, 4) Source(81, 4) + SourceIndex(0) 3 >Emitted(70, 5) Source(81, 5) + SourceIndex(0) -4 >Emitted(70, 6) Source(81, 6) + SourceIndex(0) -5 >Emitted(70, 9) Source(81, 9) + SourceIndex(0) -6 >Emitted(70, 10) Source(81, 10) + SourceIndex(0) -7 >Emitted(70, 41) Source(81, 64) + SourceIndex(0) -8 >Emitted(70, 43) Source(81, 11) + SourceIndex(0) -9 >Emitted(70, 59) Source(81, 19) + SourceIndex(0) -10>Emitted(70, 61) Source(81, 21) + SourceIndex(0) -11>Emitted(70, 85) Source(81, 34) + SourceIndex(0) -12>Emitted(70, 87) Source(81, 66) + SourceIndex(0) -13>Emitted(70, 88) Source(81, 67) + SourceIndex(0) -14>Emitted(70, 91) Source(81, 70) + SourceIndex(0) -15>Emitted(70, 92) Source(81, 71) + SourceIndex(0) -16>Emitted(70, 94) Source(81, 73) + SourceIndex(0) -17>Emitted(70, 95) Source(81, 74) + SourceIndex(0) -18>Emitted(70, 98) Source(81, 77) + SourceIndex(0) -19>Emitted(70, 99) Source(81, 78) + SourceIndex(0) -20>Emitted(70, 101) Source(81, 80) + SourceIndex(0) -21>Emitted(70, 102) Source(81, 81) + SourceIndex(0) -22>Emitted(70, 104) Source(81, 83) + SourceIndex(0) -23>Emitted(70, 106) Source(81, 85) + SourceIndex(0) -24>Emitted(70, 107) Source(81, 86) + SourceIndex(0) +4 >Emitted(70, 6) Source(81, 10) + SourceIndex(0) +5 >Emitted(70, 41) Source(81, 64) + SourceIndex(0) +6 >Emitted(70, 43) Source(81, 11) + SourceIndex(0) +7 >Emitted(70, 59) Source(81, 19) + SourceIndex(0) +8 >Emitted(70, 61) Source(81, 21) + SourceIndex(0) +9 >Emitted(70, 85) Source(81, 34) + SourceIndex(0) +10>Emitted(70, 87) Source(81, 66) + SourceIndex(0) +11>Emitted(70, 88) Source(81, 67) + SourceIndex(0) +12>Emitted(70, 91) Source(81, 70) + SourceIndex(0) +13>Emitted(70, 92) Source(81, 71) + SourceIndex(0) +14>Emitted(70, 94) Source(81, 73) + SourceIndex(0) +15>Emitted(70, 95) Source(81, 74) + SourceIndex(0) +16>Emitted(70, 98) Source(81, 77) + SourceIndex(0) +17>Emitted(70, 99) Source(81, 78) + SourceIndex(0) +18>Emitted(70, 101) Source(81, 80) + SourceIndex(0) +19>Emitted(70, 102) Source(81, 81) + SourceIndex(0) +20>Emitted(70, 104) Source(81, 83) + SourceIndex(0) +21>Emitted(70, 106) Source(81, 85) + SourceIndex(0) +22>Emitted(70, 107) Source(81, 86) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2527,63 +2401,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [...multiRobotAInfo] = multiRobotA -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > ...multiRobotAInfo +6 > ] = multiRobotA, +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(73, 1) Source(84, 1) + SourceIndex(0) 2 >Emitted(73, 4) Source(84, 4) + SourceIndex(0) 3 >Emitted(73, 5) Source(84, 5) + SourceIndex(0) -4 >Emitted(73, 6) Source(84, 6) + SourceIndex(0) -5 >Emitted(73, 9) Source(84, 9) + SourceIndex(0) -6 >Emitted(73, 10) Source(84, 10) + SourceIndex(0) -7 >Emitted(73, 48) Source(84, 44) + SourceIndex(0) -8 >Emitted(73, 50) Source(84, 46) + SourceIndex(0) -9 >Emitted(73, 51) Source(84, 47) + SourceIndex(0) -10>Emitted(73, 54) Source(84, 50) + SourceIndex(0) -11>Emitted(73, 55) Source(84, 51) + SourceIndex(0) -12>Emitted(73, 57) Source(84, 53) + SourceIndex(0) -13>Emitted(73, 58) Source(84, 54) + SourceIndex(0) -14>Emitted(73, 61) Source(84, 57) + SourceIndex(0) -15>Emitted(73, 62) Source(84, 58) + SourceIndex(0) -16>Emitted(73, 64) Source(84, 60) + SourceIndex(0) -17>Emitted(73, 65) Source(84, 61) + SourceIndex(0) -18>Emitted(73, 67) Source(84, 63) + SourceIndex(0) -19>Emitted(73, 69) Source(84, 65) + SourceIndex(0) -20>Emitted(73, 70) Source(84, 66) + SourceIndex(0) +4 >Emitted(73, 6) Source(84, 11) + SourceIndex(0) +5 >Emitted(73, 48) Source(84, 29) + SourceIndex(0) +6 >Emitted(73, 50) Source(84, 46) + SourceIndex(0) +7 >Emitted(73, 51) Source(84, 47) + SourceIndex(0) +8 >Emitted(73, 54) Source(84, 50) + SourceIndex(0) +9 >Emitted(73, 55) Source(84, 51) + SourceIndex(0) +10>Emitted(73, 57) Source(84, 53) + SourceIndex(0) +11>Emitted(73, 58) Source(84, 54) + SourceIndex(0) +12>Emitted(73, 61) Source(84, 57) + SourceIndex(0) +13>Emitted(73, 62) Source(84, 58) + SourceIndex(0) +14>Emitted(73, 64) Source(84, 60) + SourceIndex(0) +15>Emitted(73, 65) Source(84, 61) + SourceIndex(0) +16>Emitted(73, 67) Source(84, 63) + SourceIndex(0) +17>Emitted(73, 69) Source(84, 65) + SourceIndex(0) +18>Emitted(73, 70) Source(84, 66) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2627,63 +2495,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [...multiRobotAInfo] = getMultiRobot() -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > ...multiRobotAInfo +6 > ] = getMultiRobot(), +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(76, 1) Source(87, 1) + SourceIndex(0) 2 >Emitted(76, 4) Source(87, 4) + SourceIndex(0) 3 >Emitted(76, 5) Source(87, 5) + SourceIndex(0) -4 >Emitted(76, 6) Source(87, 6) + SourceIndex(0) -5 >Emitted(76, 9) Source(87, 9) + SourceIndex(0) -6 >Emitted(76, 10) Source(87, 10) + SourceIndex(0) -7 >Emitted(76, 52) Source(87, 48) + SourceIndex(0) -8 >Emitted(76, 54) Source(87, 50) + SourceIndex(0) -9 >Emitted(76, 55) Source(87, 51) + SourceIndex(0) -10>Emitted(76, 58) Source(87, 54) + SourceIndex(0) -11>Emitted(76, 59) Source(87, 55) + SourceIndex(0) -12>Emitted(76, 61) Source(87, 57) + SourceIndex(0) -13>Emitted(76, 62) Source(87, 58) + SourceIndex(0) -14>Emitted(76, 65) Source(87, 61) + SourceIndex(0) -15>Emitted(76, 66) Source(87, 62) + SourceIndex(0) -16>Emitted(76, 68) Source(87, 64) + SourceIndex(0) -17>Emitted(76, 69) Source(87, 65) + SourceIndex(0) -18>Emitted(76, 71) Source(87, 67) + SourceIndex(0) -19>Emitted(76, 73) Source(87, 69) + SourceIndex(0) -20>Emitted(76, 74) Source(87, 70) + SourceIndex(0) +4 >Emitted(76, 6) Source(87, 11) + SourceIndex(0) +5 >Emitted(76, 52) Source(87, 29) + SourceIndex(0) +6 >Emitted(76, 54) Source(87, 50) + SourceIndex(0) +7 >Emitted(76, 55) Source(87, 51) + SourceIndex(0) +8 >Emitted(76, 58) Source(87, 54) + SourceIndex(0) +9 >Emitted(76, 59) Source(87, 55) + SourceIndex(0) +10>Emitted(76, 61) Source(87, 57) + SourceIndex(0) +11>Emitted(76, 62) Source(87, 58) + SourceIndex(0) +12>Emitted(76, 65) Source(87, 61) + SourceIndex(0) +13>Emitted(76, 66) Source(87, 62) + SourceIndex(0) +14>Emitted(76, 68) Source(87, 64) + SourceIndex(0) +15>Emitted(76, 69) Source(87, 65) + SourceIndex(0) +16>Emitted(76, 71) Source(87, 67) + SourceIndex(0) +17>Emitted(76, 73) Source(87, 69) + SourceIndex(0) +18>Emitted(76, 74) Source(87, 70) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2727,63 +2589,57 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let [ +5 > ...multiRobotAInfo +6 > ] = ["trimmer", ["trimming", "edging"]], +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(79, 1) Source(90, 1) + SourceIndex(0) 2 >Emitted(79, 4) Source(90, 4) + SourceIndex(0) 3 >Emitted(79, 5) Source(90, 5) + SourceIndex(0) -4 >Emitted(79, 6) Source(90, 6) + SourceIndex(0) -5 >Emitted(79, 9) Source(90, 9) + SourceIndex(0) -6 >Emitted(79, 10) Source(90, 10) + SourceIndex(0) -7 >Emitted(79, 72) Source(90, 68) + SourceIndex(0) -8 >Emitted(79, 74) Source(90, 70) + SourceIndex(0) -9 >Emitted(79, 75) Source(90, 71) + SourceIndex(0) -10>Emitted(79, 78) Source(90, 74) + SourceIndex(0) -11>Emitted(79, 79) Source(90, 75) + SourceIndex(0) -12>Emitted(79, 81) Source(90, 77) + SourceIndex(0) -13>Emitted(79, 82) Source(90, 78) + SourceIndex(0) -14>Emitted(79, 85) Source(90, 81) + SourceIndex(0) -15>Emitted(79, 86) Source(90, 82) + SourceIndex(0) -16>Emitted(79, 88) Source(90, 84) + SourceIndex(0) -17>Emitted(79, 89) Source(90, 85) + SourceIndex(0) -18>Emitted(79, 91) Source(90, 87) + SourceIndex(0) -19>Emitted(79, 93) Source(90, 89) + SourceIndex(0) -20>Emitted(79, 94) Source(90, 90) + SourceIndex(0) +4 >Emitted(79, 6) Source(90, 11) + SourceIndex(0) +5 >Emitted(79, 72) Source(90, 29) + SourceIndex(0) +6 >Emitted(79, 74) Source(90, 70) + SourceIndex(0) +7 >Emitted(79, 75) Source(90, 71) + SourceIndex(0) +8 >Emitted(79, 78) Source(90, 74) + SourceIndex(0) +9 >Emitted(79, 79) Source(90, 75) + SourceIndex(0) +10>Emitted(79, 81) Source(90, 77) + SourceIndex(0) +11>Emitted(79, 82) Source(90, 78) + SourceIndex(0) +12>Emitted(79, 85) Source(90, 81) + SourceIndex(0) +13>Emitted(79, 86) Source(90, 82) + SourceIndex(0) +14>Emitted(79, 88) Source(90, 84) + SourceIndex(0) +15>Emitted(79, 89) Source(90, 85) + SourceIndex(0) +16>Emitted(79, 91) Source(90, 87) + SourceIndex(0) +17>Emitted(79, 93) Source(90, 89) + SourceIndex(0) +18>Emitted(79, 94) Source(90, 90) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map index 2c3f4eb1264..ba21829737b 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"AAgBA,IAAI,KAAK,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,IAAI,UAAU,GAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACjG;IACI,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AACD;IACI,MAAM,CAAC,UAAU,CAAC;AACtB,CAAC;AAED,GAAG,CAAC,CAAM,sBAAW,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAM,2BAAW,EAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAM,uDAAW,EAAoD,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAO,0BAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,EAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAO,+BAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,EAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAO,yFAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,EAEzD,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,GAAG,CAAC,CAAM,sBAAW,EAAE,oBAAa,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAK,mBAA0C,EAAzC,eAAW,EAAE,iBAAa,EAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAK,+CAA6E,EAA5E,eAAW,EAAE,iBAAa,EAAoD,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAM,2BAAW,EAAE,sBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,EAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC5G,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAK,wBAAsF,EAArF,eAAW,EAAE,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,EAAwB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAK,kFACgF,EAD/E,eAAW,EAAE,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,EAErE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt index cac10b04888..d68da51e880 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt @@ -213,64 +213,58 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA } = robot -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let { +5 > name: nameA +6 > } = robot, +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(9, 1) Source(26, 1) + SourceIndex(0) 2 >Emitted(9, 4) Source(26, 4) + SourceIndex(0) 3 >Emitted(9, 5) Source(26, 5) + SourceIndex(0) -4 >Emitted(9, 6) Source(26, 6) + SourceIndex(0) -5 >Emitted(9, 9) Source(26, 9) + SourceIndex(0) -6 >Emitted(9, 10) Source(26, 10) + SourceIndex(0) -7 >Emitted(9, 28) Source(26, 32) + SourceIndex(0) -8 >Emitted(9, 30) Source(26, 34) + SourceIndex(0) -9 >Emitted(9, 31) Source(26, 35) + SourceIndex(0) -10>Emitted(9, 34) Source(26, 38) + SourceIndex(0) -11>Emitted(9, 35) Source(26, 39) + SourceIndex(0) -12>Emitted(9, 37) Source(26, 41) + SourceIndex(0) -13>Emitted(9, 38) Source(26, 42) + SourceIndex(0) -14>Emitted(9, 41) Source(26, 45) + SourceIndex(0) -15>Emitted(9, 42) Source(26, 46) + SourceIndex(0) -16>Emitted(9, 44) Source(26, 48) + SourceIndex(0) -17>Emitted(9, 45) Source(26, 49) + SourceIndex(0) -18>Emitted(9, 47) Source(26, 51) + SourceIndex(0) -19>Emitted(9, 49) Source(26, 53) + SourceIndex(0) -20>Emitted(9, 50) Source(26, 54) + SourceIndex(0) +4 >Emitted(9, 6) Source(26, 11) + SourceIndex(0) +5 >Emitted(9, 28) Source(26, 22) + SourceIndex(0) +6 >Emitted(9, 30) Source(26, 34) + SourceIndex(0) +7 >Emitted(9, 31) Source(26, 35) + SourceIndex(0) +8 >Emitted(9, 34) Source(26, 38) + SourceIndex(0) +9 >Emitted(9, 35) Source(26, 39) + SourceIndex(0) +10>Emitted(9, 37) Source(26, 41) + SourceIndex(0) +11>Emitted(9, 38) Source(26, 42) + SourceIndex(0) +12>Emitted(9, 41) Source(26, 45) + SourceIndex(0) +13>Emitted(9, 42) Source(26, 46) + SourceIndex(0) +14>Emitted(9, 44) Source(26, 48) + SourceIndex(0) +15>Emitted(9, 45) Source(26, 49) + SourceIndex(0) +16>Emitted(9, 47) Source(26, 51) + SourceIndex(0) +17>Emitted(9, 49) Source(26, 53) + SourceIndex(0) +18>Emitted(9, 50) Source(26, 54) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -314,63 +308,57 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA } = getRobot() -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let { +5 > name: nameA +6 > } = getRobot(), +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(12, 1) Source(29, 1) + SourceIndex(0) 2 >Emitted(12, 4) Source(29, 4) + SourceIndex(0) 3 >Emitted(12, 5) Source(29, 5) + SourceIndex(0) -4 >Emitted(12, 6) Source(29, 6) + SourceIndex(0) -5 >Emitted(12, 9) Source(29, 9) + SourceIndex(0) -6 >Emitted(12, 10) Source(29, 10) + SourceIndex(0) -7 >Emitted(12, 33) Source(29, 37) + SourceIndex(0) -8 >Emitted(12, 35) Source(29, 39) + SourceIndex(0) -9 >Emitted(12, 36) Source(29, 40) + SourceIndex(0) -10>Emitted(12, 39) Source(29, 43) + SourceIndex(0) -11>Emitted(12, 40) Source(29, 44) + SourceIndex(0) -12>Emitted(12, 42) Source(29, 46) + SourceIndex(0) -13>Emitted(12, 43) Source(29, 47) + SourceIndex(0) -14>Emitted(12, 46) Source(29, 50) + SourceIndex(0) -15>Emitted(12, 47) Source(29, 51) + SourceIndex(0) -16>Emitted(12, 49) Source(29, 53) + SourceIndex(0) -17>Emitted(12, 50) Source(29, 54) + SourceIndex(0) -18>Emitted(12, 52) Source(29, 56) + SourceIndex(0) -19>Emitted(12, 54) Source(29, 58) + SourceIndex(0) -20>Emitted(12, 55) Source(29, 59) + SourceIndex(0) +4 >Emitted(12, 6) Source(29, 11) + SourceIndex(0) +5 >Emitted(12, 33) Source(29, 22) + SourceIndex(0) +6 >Emitted(12, 35) Source(29, 39) + SourceIndex(0) +7 >Emitted(12, 36) Source(29, 40) + SourceIndex(0) +8 >Emitted(12, 39) Source(29, 43) + SourceIndex(0) +9 >Emitted(12, 40) Source(29, 44) + SourceIndex(0) +10>Emitted(12, 42) Source(29, 46) + SourceIndex(0) +11>Emitted(12, 43) Source(29, 47) + SourceIndex(0) +12>Emitted(12, 46) Source(29, 50) + SourceIndex(0) +13>Emitted(12, 47) Source(29, 51) + SourceIndex(0) +14>Emitted(12, 49) Source(29, 53) + SourceIndex(0) +15>Emitted(12, 50) Source(29, 54) + SourceIndex(0) +16>Emitted(12, 52) Source(29, 56) + SourceIndex(0) +17>Emitted(12, 54) Source(29, 58) + SourceIndex(0) +18>Emitted(12, 55) Source(29, 59) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -414,63 +402,57 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^ +9 > ^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^ +17> ^^ +18> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA } = { name: "trimmer", skill: "trimming" } -8 > , -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > (let { +5 > name: nameA +6 > } = { name: "trimmer", skill: "trimming" }, +7 > i +8 > = +9 > 0 +10> ; +11> i +12> < +13> 1 +14> ; +15> i +16> ++ +17> ) +18> { 1->Emitted(15, 1) Source(32, 1) + SourceIndex(0) 2 >Emitted(15, 4) Source(32, 4) + SourceIndex(0) 3 >Emitted(15, 5) Source(32, 5) + SourceIndex(0) -4 >Emitted(15, 6) Source(32, 6) + SourceIndex(0) -5 >Emitted(15, 9) Source(32, 9) + SourceIndex(0) -6 >Emitted(15, 10) Source(32, 10) + SourceIndex(0) -7 >Emitted(15, 61) Source(32, 72) + SourceIndex(0) -8 >Emitted(15, 63) Source(32, 74) + SourceIndex(0) -9 >Emitted(15, 64) Source(32, 75) + SourceIndex(0) -10>Emitted(15, 67) Source(32, 78) + SourceIndex(0) -11>Emitted(15, 68) Source(32, 79) + SourceIndex(0) -12>Emitted(15, 70) Source(32, 81) + SourceIndex(0) -13>Emitted(15, 71) Source(32, 82) + SourceIndex(0) -14>Emitted(15, 74) Source(32, 85) + SourceIndex(0) -15>Emitted(15, 75) Source(32, 86) + SourceIndex(0) -16>Emitted(15, 77) Source(32, 88) + SourceIndex(0) -17>Emitted(15, 78) Source(32, 89) + SourceIndex(0) -18>Emitted(15, 80) Source(32, 91) + SourceIndex(0) -19>Emitted(15, 82) Source(32, 93) + SourceIndex(0) -20>Emitted(15, 83) Source(32, 94) + SourceIndex(0) +4 >Emitted(15, 6) Source(32, 11) + SourceIndex(0) +5 >Emitted(15, 61) Source(32, 22) + SourceIndex(0) +6 >Emitted(15, 63) Source(32, 74) + SourceIndex(0) +7 >Emitted(15, 64) Source(32, 75) + SourceIndex(0) +8 >Emitted(15, 67) Source(32, 78) + SourceIndex(0) +9 >Emitted(15, 68) Source(32, 79) + SourceIndex(0) +10>Emitted(15, 70) Source(32, 81) + SourceIndex(0) +11>Emitted(15, 71) Source(32, 82) + SourceIndex(0) +12>Emitted(15, 74) Source(32, 85) + SourceIndex(0) +13>Emitted(15, 75) Source(32, 86) + SourceIndex(0) +14>Emitted(15, 77) Source(32, 88) + SourceIndex(0) +15>Emitted(15, 78) Source(32, 89) + SourceIndex(0) +16>Emitted(15, 80) Source(32, 91) + SourceIndex(0) +17>Emitted(15, 82) Source(32, 93) + SourceIndex(0) +18>Emitted(15, 83) Source(32, 94) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -514,75 +496,69 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > { -7 > skills -8 > : { -9 > primary: primaryA -10> , -11> secondary: secondaryA -12> } } = multiRobot, -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let { +5 > skills: { primary: primaryA, secondary: secondaryA } +6 > +7 > primary: primaryA +8 > , +9 > secondary: secondaryA +10> } } = multiRobot, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(18, 1) Source(35, 1) + SourceIndex(0) 2 >Emitted(18, 4) Source(35, 4) + SourceIndex(0) 3 >Emitted(18, 5) Source(35, 5) + SourceIndex(0) -4 >Emitted(18, 6) Source(35, 6) + SourceIndex(0) -5 >Emitted(18, 9) Source(35, 9) + SourceIndex(0) -6 >Emitted(18, 10) Source(35, 12) + SourceIndex(0) -7 >Emitted(18, 32) Source(35, 18) + SourceIndex(0) -8 >Emitted(18, 34) Source(35, 22) + SourceIndex(0) -9 >Emitted(18, 55) Source(35, 39) + SourceIndex(0) -10>Emitted(18, 57) Source(35, 41) + SourceIndex(0) -11>Emitted(18, 82) Source(35, 62) + SourceIndex(0) -12>Emitted(18, 84) Source(35, 81) + SourceIndex(0) -13>Emitted(18, 85) Source(35, 82) + SourceIndex(0) -14>Emitted(18, 88) Source(35, 85) + SourceIndex(0) -15>Emitted(18, 89) Source(35, 86) + SourceIndex(0) -16>Emitted(18, 91) Source(35, 88) + SourceIndex(0) -17>Emitted(18, 92) Source(35, 89) + SourceIndex(0) -18>Emitted(18, 95) Source(35, 92) + SourceIndex(0) -19>Emitted(18, 96) Source(35, 93) + SourceIndex(0) -20>Emitted(18, 98) Source(35, 95) + SourceIndex(0) -21>Emitted(18, 99) Source(35, 96) + SourceIndex(0) -22>Emitted(18, 101) Source(35, 98) + SourceIndex(0) -23>Emitted(18, 103) Source(35, 100) + SourceIndex(0) -24>Emitted(18, 104) Source(35, 101) + SourceIndex(0) +4 >Emitted(18, 6) Source(35, 12) + SourceIndex(0) +5 >Emitted(18, 32) Source(35, 64) + SourceIndex(0) +6 >Emitted(18, 34) Source(35, 22) + SourceIndex(0) +7 >Emitted(18, 55) Source(35, 39) + SourceIndex(0) +8 >Emitted(18, 57) Source(35, 41) + SourceIndex(0) +9 >Emitted(18, 82) Source(35, 62) + SourceIndex(0) +10>Emitted(18, 84) Source(35, 81) + SourceIndex(0) +11>Emitted(18, 85) Source(35, 82) + SourceIndex(0) +12>Emitted(18, 88) Source(35, 85) + SourceIndex(0) +13>Emitted(18, 89) Source(35, 86) + SourceIndex(0) +14>Emitted(18, 91) Source(35, 88) + SourceIndex(0) +15>Emitted(18, 92) Source(35, 89) + SourceIndex(0) +16>Emitted(18, 95) Source(35, 92) + SourceIndex(0) +17>Emitted(18, 96) Source(35, 93) + SourceIndex(0) +18>Emitted(18, 98) Source(35, 95) + SourceIndex(0) +19>Emitted(18, 99) Source(35, 96) + SourceIndex(0) +20>Emitted(18, 101) Source(35, 98) + SourceIndex(0) +21>Emitted(18, 103) Source(35, 100) + SourceIndex(0) +22>Emitted(18, 104) Source(35, 101) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -626,75 +602,69 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > { -7 > skills -8 > : { -9 > primary: primaryA -10> , -11> secondary: secondaryA -12> } } = getMultiRobot(), -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let { +5 > skills: { primary: primaryA, secondary: secondaryA } +6 > +7 > primary: primaryA +8 > , +9 > secondary: secondaryA +10> } } = getMultiRobot(), +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(21, 1) Source(38, 1) + SourceIndex(0) 2 >Emitted(21, 4) Source(38, 4) + SourceIndex(0) 3 >Emitted(21, 5) Source(38, 5) + SourceIndex(0) -4 >Emitted(21, 6) Source(38, 6) + SourceIndex(0) -5 >Emitted(21, 9) Source(38, 9) + SourceIndex(0) -6 >Emitted(21, 10) Source(38, 12) + SourceIndex(0) -7 >Emitted(21, 37) Source(38, 18) + SourceIndex(0) -8 >Emitted(21, 39) Source(38, 22) + SourceIndex(0) -9 >Emitted(21, 60) Source(38, 39) + SourceIndex(0) -10>Emitted(21, 62) Source(38, 41) + SourceIndex(0) -11>Emitted(21, 87) Source(38, 62) + SourceIndex(0) -12>Emitted(21, 89) Source(38, 86) + SourceIndex(0) -13>Emitted(21, 90) Source(38, 87) + SourceIndex(0) -14>Emitted(21, 93) Source(38, 90) + SourceIndex(0) -15>Emitted(21, 94) Source(38, 91) + SourceIndex(0) -16>Emitted(21, 96) Source(38, 93) + SourceIndex(0) -17>Emitted(21, 97) Source(38, 94) + SourceIndex(0) -18>Emitted(21, 100) Source(38, 97) + SourceIndex(0) -19>Emitted(21, 101) Source(38, 98) + SourceIndex(0) -20>Emitted(21, 103) Source(38, 100) + SourceIndex(0) -21>Emitted(21, 104) Source(38, 101) + SourceIndex(0) -22>Emitted(21, 106) Source(38, 103) + SourceIndex(0) -23>Emitted(21, 108) Source(38, 105) + SourceIndex(0) -24>Emitted(21, 109) Source(38, 106) + SourceIndex(0) +4 >Emitted(21, 6) Source(38, 12) + SourceIndex(0) +5 >Emitted(21, 37) Source(38, 64) + SourceIndex(0) +6 >Emitted(21, 39) Source(38, 22) + SourceIndex(0) +7 >Emitted(21, 60) Source(38, 39) + SourceIndex(0) +8 >Emitted(21, 62) Source(38, 41) + SourceIndex(0) +9 >Emitted(21, 87) Source(38, 62) + SourceIndex(0) +10>Emitted(21, 89) Source(38, 86) + SourceIndex(0) +11>Emitted(21, 90) Source(38, 87) + SourceIndex(0) +12>Emitted(21, 93) Source(38, 90) + SourceIndex(0) +13>Emitted(21, 94) Source(38, 91) + SourceIndex(0) +14>Emitted(21, 96) Source(38, 93) + SourceIndex(0) +15>Emitted(21, 97) Source(38, 94) + SourceIndex(0) +16>Emitted(21, 100) Source(38, 97) + SourceIndex(0) +17>Emitted(21, 101) Source(38, 98) + SourceIndex(0) +18>Emitted(21, 103) Source(38, 100) + SourceIndex(0) +19>Emitted(21, 104) Source(38, 101) + SourceIndex(0) +20>Emitted(21, 106) Source(38, 103) + SourceIndex(0) +21>Emitted(21, 108) Source(38, 105) + SourceIndex(0) +22>Emitted(21, 109) Source(38, 106) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -738,77 +708,71 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > { -7 > skills -8 > : { -9 > primary: primaryA -10> , -11> secondary: secondaryA -12> } } = +4 > (let { +5 > skills: { primary: primaryA, secondary: secondaryA } +6 > +7 > primary: primaryA +8 > , +9 > secondary: secondaryA +10> } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, > -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(24, 1) Source(41, 1) + SourceIndex(0) 2 >Emitted(24, 4) Source(41, 4) + SourceIndex(0) 3 >Emitted(24, 5) Source(41, 5) + SourceIndex(0) -4 >Emitted(24, 6) Source(41, 6) + SourceIndex(0) -5 >Emitted(24, 9) Source(41, 9) + SourceIndex(0) -6 >Emitted(24, 10) Source(41, 12) + SourceIndex(0) -7 >Emitted(24, 95) Source(41, 18) + SourceIndex(0) -8 >Emitted(24, 97) Source(41, 22) + SourceIndex(0) -9 >Emitted(24, 118) Source(41, 39) + SourceIndex(0) -10>Emitted(24, 120) Source(41, 41) + SourceIndex(0) -11>Emitted(24, 145) Source(41, 62) + SourceIndex(0) -12>Emitted(24, 147) Source(43, 5) + SourceIndex(0) -13>Emitted(24, 148) Source(43, 6) + SourceIndex(0) -14>Emitted(24, 151) Source(43, 9) + SourceIndex(0) -15>Emitted(24, 152) Source(43, 10) + SourceIndex(0) -16>Emitted(24, 154) Source(43, 12) + SourceIndex(0) -17>Emitted(24, 155) Source(43, 13) + SourceIndex(0) -18>Emitted(24, 158) Source(43, 16) + SourceIndex(0) -19>Emitted(24, 159) Source(43, 17) + SourceIndex(0) -20>Emitted(24, 161) Source(43, 19) + SourceIndex(0) -21>Emitted(24, 162) Source(43, 20) + SourceIndex(0) -22>Emitted(24, 164) Source(43, 22) + SourceIndex(0) -23>Emitted(24, 166) Source(43, 24) + SourceIndex(0) -24>Emitted(24, 167) Source(43, 25) + SourceIndex(0) +4 >Emitted(24, 6) Source(41, 12) + SourceIndex(0) +5 >Emitted(24, 95) Source(41, 64) + SourceIndex(0) +6 >Emitted(24, 97) Source(41, 22) + SourceIndex(0) +7 >Emitted(24, 118) Source(41, 39) + SourceIndex(0) +8 >Emitted(24, 120) Source(41, 41) + SourceIndex(0) +9 >Emitted(24, 145) Source(41, 62) + SourceIndex(0) +10>Emitted(24, 147) Source(43, 5) + SourceIndex(0) +11>Emitted(24, 148) Source(43, 6) + SourceIndex(0) +12>Emitted(24, 151) Source(43, 9) + SourceIndex(0) +13>Emitted(24, 152) Source(43, 10) + SourceIndex(0) +14>Emitted(24, 154) Source(43, 12) + SourceIndex(0) +15>Emitted(24, 155) Source(43, 13) + SourceIndex(0) +16>Emitted(24, 158) Source(43, 16) + SourceIndex(0) +17>Emitted(24, 159) Source(43, 17) + SourceIndex(0) +18>Emitted(24, 161) Source(43, 19) + SourceIndex(0) +19>Emitted(24, 162) Source(43, 20) + SourceIndex(0) +20>Emitted(24, 164) Source(43, 22) + SourceIndex(0) +21>Emitted(24, 166) Source(43, 24) + SourceIndex(0) +22>Emitted(24, 167) Source(43, 25) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -852,70 +816,64 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ 1-> > > 2 >for 3 > -4 > ( -5 > let -6 > { -7 > name: nameA -8 > , -9 > skill: skillA -10> } = robot, -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > (let { +5 > name: nameA +6 > , +7 > skill: skillA +8 > } = robot, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { 1->Emitted(27, 1) Source(47, 1) + SourceIndex(0) 2 >Emitted(27, 4) Source(47, 4) + SourceIndex(0) 3 >Emitted(27, 5) Source(47, 5) + SourceIndex(0) -4 >Emitted(27, 6) Source(47, 6) + SourceIndex(0) -5 >Emitted(27, 9) Source(47, 9) + SourceIndex(0) -6 >Emitted(27, 10) Source(47, 11) + SourceIndex(0) -7 >Emitted(27, 28) Source(47, 22) + SourceIndex(0) -8 >Emitted(27, 30) Source(47, 24) + SourceIndex(0) -9 >Emitted(27, 50) Source(47, 37) + SourceIndex(0) -10>Emitted(27, 52) Source(47, 49) + SourceIndex(0) -11>Emitted(27, 53) Source(47, 50) + SourceIndex(0) -12>Emitted(27, 56) Source(47, 53) + SourceIndex(0) -13>Emitted(27, 57) Source(47, 54) + SourceIndex(0) -14>Emitted(27, 59) Source(47, 56) + SourceIndex(0) -15>Emitted(27, 60) Source(47, 57) + SourceIndex(0) -16>Emitted(27, 63) Source(47, 60) + SourceIndex(0) -17>Emitted(27, 64) Source(47, 61) + SourceIndex(0) -18>Emitted(27, 66) Source(47, 63) + SourceIndex(0) -19>Emitted(27, 67) Source(47, 64) + SourceIndex(0) -20>Emitted(27, 69) Source(47, 66) + SourceIndex(0) -21>Emitted(27, 71) Source(47, 68) + SourceIndex(0) -22>Emitted(27, 72) Source(47, 69) + SourceIndex(0) +4 >Emitted(27, 6) Source(47, 11) + SourceIndex(0) +5 >Emitted(27, 28) Source(47, 22) + SourceIndex(0) +6 >Emitted(27, 30) Source(47, 24) + SourceIndex(0) +7 >Emitted(27, 50) Source(47, 37) + SourceIndex(0) +8 >Emitted(27, 52) Source(47, 49) + SourceIndex(0) +9 >Emitted(27, 53) Source(47, 50) + SourceIndex(0) +10>Emitted(27, 56) Source(47, 53) + SourceIndex(0) +11>Emitted(27, 57) Source(47, 54) + SourceIndex(0) +12>Emitted(27, 59) Source(47, 56) + SourceIndex(0) +13>Emitted(27, 60) Source(47, 57) + SourceIndex(0) +14>Emitted(27, 63) Source(47, 60) + SourceIndex(0) +15>Emitted(27, 64) Source(47, 61) + SourceIndex(0) +16>Emitted(27, 66) Source(47, 63) + SourceIndex(0) +17>Emitted(27, 67) Source(47, 64) + SourceIndex(0) +18>Emitted(27, 69) Source(47, 66) + SourceIndex(0) +19>Emitted(27, 71) Source(47, 68) + SourceIndex(0) +20>Emitted(27, 72) Source(47, 69) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -959,75 +917,69 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA, skill: skillA } = getRobot() -8 > -9 > name: nameA -10> , -11> skill: skillA -12> } = getRobot(), -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let +5 > {name: nameA, skill: skillA } = getRobot() +6 > +7 > name: nameA +8 > , +9 > skill: skillA +10> } = getRobot(), +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(30, 1) Source(50, 1) + SourceIndex(0) 2 >Emitted(30, 4) Source(50, 4) + SourceIndex(0) 3 >Emitted(30, 5) Source(50, 5) + SourceIndex(0) -4 >Emitted(30, 6) Source(50, 6) + SourceIndex(0) -5 >Emitted(30, 9) Source(50, 9) + SourceIndex(0) -6 >Emitted(30, 10) Source(50, 10) + SourceIndex(0) -7 >Emitted(30, 25) Source(50, 52) + SourceIndex(0) -8 >Emitted(30, 27) Source(50, 11) + SourceIndex(0) -9 >Emitted(30, 42) Source(50, 22) + SourceIndex(0) -10>Emitted(30, 44) Source(50, 24) + SourceIndex(0) -11>Emitted(30, 61) Source(50, 37) + SourceIndex(0) -12>Emitted(30, 63) Source(50, 54) + SourceIndex(0) -13>Emitted(30, 64) Source(50, 55) + SourceIndex(0) -14>Emitted(30, 67) Source(50, 58) + SourceIndex(0) -15>Emitted(30, 68) Source(50, 59) + SourceIndex(0) -16>Emitted(30, 70) Source(50, 61) + SourceIndex(0) -17>Emitted(30, 71) Source(50, 62) + SourceIndex(0) -18>Emitted(30, 74) Source(50, 65) + SourceIndex(0) -19>Emitted(30, 75) Source(50, 66) + SourceIndex(0) -20>Emitted(30, 77) Source(50, 68) + SourceIndex(0) -21>Emitted(30, 78) Source(50, 69) + SourceIndex(0) -22>Emitted(30, 80) Source(50, 71) + SourceIndex(0) -23>Emitted(30, 82) Source(50, 73) + SourceIndex(0) -24>Emitted(30, 83) Source(50, 74) + SourceIndex(0) +4 >Emitted(30, 6) Source(50, 10) + SourceIndex(0) +5 >Emitted(30, 25) Source(50, 52) + SourceIndex(0) +6 >Emitted(30, 27) Source(50, 11) + SourceIndex(0) +7 >Emitted(30, 42) Source(50, 22) + SourceIndex(0) +8 >Emitted(30, 44) Source(50, 24) + SourceIndex(0) +9 >Emitted(30, 61) Source(50, 37) + SourceIndex(0) +10>Emitted(30, 63) Source(50, 54) + SourceIndex(0) +11>Emitted(30, 64) Source(50, 55) + SourceIndex(0) +12>Emitted(30, 67) Source(50, 58) + SourceIndex(0) +13>Emitted(30, 68) Source(50, 59) + SourceIndex(0) +14>Emitted(30, 70) Source(50, 61) + SourceIndex(0) +15>Emitted(30, 71) Source(50, 62) + SourceIndex(0) +16>Emitted(30, 74) Source(50, 65) + SourceIndex(0) +17>Emitted(30, 75) Source(50, 66) + SourceIndex(0) +18>Emitted(30, 77) Source(50, 68) + SourceIndex(0) +19>Emitted(30, 78) Source(50, 69) + SourceIndex(0) +20>Emitted(30, 80) Source(50, 71) + SourceIndex(0) +21>Emitted(30, 82) Source(50, 73) + SourceIndex(0) +22>Emitted(30, 83) Source(50, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1071,75 +1023,69 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } -8 > -9 > name: nameA -10> , -11> skill: skillA -12> } = { name: "trimmer", skill: "trimming" }, -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > (let +5 > {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } +6 > +7 > name: nameA +8 > , +9 > skill: skillA +10> } = { name: "trimmer", skill: "trimming" }, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { 1->Emitted(33, 1) Source(53, 1) + SourceIndex(0) 2 >Emitted(33, 4) Source(53, 4) + SourceIndex(0) 3 >Emitted(33, 5) Source(53, 5) + SourceIndex(0) -4 >Emitted(33, 6) Source(53, 6) + SourceIndex(0) -5 >Emitted(33, 9) Source(53, 9) + SourceIndex(0) -6 >Emitted(33, 10) Source(53, 10) + SourceIndex(0) -7 >Emitted(33, 53) Source(53, 87) + SourceIndex(0) -8 >Emitted(33, 55) Source(53, 11) + SourceIndex(0) -9 >Emitted(33, 70) Source(53, 22) + SourceIndex(0) -10>Emitted(33, 72) Source(53, 24) + SourceIndex(0) -11>Emitted(33, 89) Source(53, 37) + SourceIndex(0) -12>Emitted(33, 91) Source(53, 89) + SourceIndex(0) -13>Emitted(33, 92) Source(53, 90) + SourceIndex(0) -14>Emitted(33, 95) Source(53, 93) + SourceIndex(0) -15>Emitted(33, 96) Source(53, 94) + SourceIndex(0) -16>Emitted(33, 98) Source(53, 96) + SourceIndex(0) -17>Emitted(33, 99) Source(53, 97) + SourceIndex(0) -18>Emitted(33, 102) Source(53, 100) + SourceIndex(0) -19>Emitted(33, 103) Source(53, 101) + SourceIndex(0) -20>Emitted(33, 105) Source(53, 103) + SourceIndex(0) -21>Emitted(33, 106) Source(53, 104) + SourceIndex(0) -22>Emitted(33, 108) Source(53, 106) + SourceIndex(0) -23>Emitted(33, 110) Source(53, 108) + SourceIndex(0) -24>Emitted(33, 111) Source(53, 109) + SourceIndex(0) +4 >Emitted(33, 6) Source(53, 10) + SourceIndex(0) +5 >Emitted(33, 53) Source(53, 87) + SourceIndex(0) +6 >Emitted(33, 55) Source(53, 11) + SourceIndex(0) +7 >Emitted(33, 70) Source(53, 22) + SourceIndex(0) +8 >Emitted(33, 72) Source(53, 24) + SourceIndex(0) +9 >Emitted(33, 89) Source(53, 37) + SourceIndex(0) +10>Emitted(33, 91) Source(53, 89) + SourceIndex(0) +11>Emitted(33, 92) Source(53, 90) + SourceIndex(0) +12>Emitted(33, 95) Source(53, 93) + SourceIndex(0) +13>Emitted(33, 96) Source(53, 94) + SourceIndex(0) +14>Emitted(33, 98) Source(53, 96) + SourceIndex(0) +15>Emitted(33, 99) Source(53, 97) + SourceIndex(0) +16>Emitted(33, 102) Source(53, 100) + SourceIndex(0) +17>Emitted(33, 103) Source(53, 101) + SourceIndex(0) +18>Emitted(33, 105) Source(53, 103) + SourceIndex(0) +19>Emitted(33, 106) Source(53, 104) + SourceIndex(0) +20>Emitted(33, 108) Source(53, 106) + SourceIndex(0) +21>Emitted(33, 110) Source(53, 108) + SourceIndex(0) +22>Emitted(33, 111) Source(53, 109) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1183,81 +1129,75 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > { -7 > name: nameA -8 > , -9 > skills -10> : { -11> primary: primaryA -12> , -13> secondary: secondaryA -14> } } = multiRobot, -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > (let { +5 > name: nameA +6 > , +7 > skills: { primary: primaryA, secondary: secondaryA } +8 > +9 > primary: primaryA +10> , +11> secondary: secondaryA +12> } } = multiRobot, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { 1->Emitted(36, 1) Source(56, 1) + SourceIndex(0) 2 >Emitted(36, 4) Source(56, 4) + SourceIndex(0) 3 >Emitted(36, 5) Source(56, 5) + SourceIndex(0) -4 >Emitted(36, 6) Source(56, 6) + SourceIndex(0) -5 >Emitted(36, 9) Source(56, 9) + SourceIndex(0) -6 >Emitted(36, 10) Source(56, 11) + SourceIndex(0) -7 >Emitted(36, 33) Source(56, 22) + SourceIndex(0) -8 >Emitted(36, 35) Source(56, 24) + SourceIndex(0) -9 >Emitted(36, 57) Source(56, 30) + SourceIndex(0) -10>Emitted(36, 59) Source(56, 34) + SourceIndex(0) -11>Emitted(36, 80) Source(56, 51) + SourceIndex(0) -12>Emitted(36, 82) Source(56, 53) + SourceIndex(0) -13>Emitted(36, 107) Source(56, 74) + SourceIndex(0) -14>Emitted(36, 109) Source(56, 93) + SourceIndex(0) -15>Emitted(36, 110) Source(56, 94) + SourceIndex(0) -16>Emitted(36, 113) Source(56, 97) + SourceIndex(0) -17>Emitted(36, 114) Source(56, 98) + SourceIndex(0) -18>Emitted(36, 116) Source(56, 100) + SourceIndex(0) -19>Emitted(36, 117) Source(56, 101) + SourceIndex(0) -20>Emitted(36, 120) Source(56, 104) + SourceIndex(0) -21>Emitted(36, 121) Source(56, 105) + SourceIndex(0) -22>Emitted(36, 123) Source(56, 107) + SourceIndex(0) -23>Emitted(36, 124) Source(56, 108) + SourceIndex(0) -24>Emitted(36, 126) Source(56, 110) + SourceIndex(0) -25>Emitted(36, 128) Source(56, 112) + SourceIndex(0) -26>Emitted(36, 129) Source(56, 113) + SourceIndex(0) +4 >Emitted(36, 6) Source(56, 11) + SourceIndex(0) +5 >Emitted(36, 33) Source(56, 22) + SourceIndex(0) +6 >Emitted(36, 35) Source(56, 24) + SourceIndex(0) +7 >Emitted(36, 57) Source(56, 76) + SourceIndex(0) +8 >Emitted(36, 59) Source(56, 34) + SourceIndex(0) +9 >Emitted(36, 80) Source(56, 51) + SourceIndex(0) +10>Emitted(36, 82) Source(56, 53) + SourceIndex(0) +11>Emitted(36, 107) Source(56, 74) + SourceIndex(0) +12>Emitted(36, 109) Source(56, 93) + SourceIndex(0) +13>Emitted(36, 110) Source(56, 94) + SourceIndex(0) +14>Emitted(36, 113) Source(56, 97) + SourceIndex(0) +15>Emitted(36, 114) Source(56, 98) + SourceIndex(0) +16>Emitted(36, 116) Source(56, 100) + SourceIndex(0) +17>Emitted(36, 117) Source(56, 101) + SourceIndex(0) +18>Emitted(36, 120) Source(56, 104) + SourceIndex(0) +19>Emitted(36, 121) Source(56, 105) + SourceIndex(0) +20>Emitted(36, 123) Source(56, 107) + SourceIndex(0) +21>Emitted(36, 124) Source(56, 108) + SourceIndex(0) +22>Emitted(36, 126) Source(56, 110) + SourceIndex(0) +23>Emitted(36, 128) Source(56, 112) + SourceIndex(0) +24>Emitted(36, 129) Source(56, 113) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -1301,87 +1241,81 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^^^^^^^^^^^^^^^^^^^^^^^^^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^^ -23> ^ -24> ^^ -25> ^ -26> ^^ -27> ^^ -28> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() -8 > -9 > name: nameA -10> , -11> skills -12> : { -13> primary: primaryA -14> , -15> secondary: secondaryA -16> } } = getMultiRobot(), -17> i -18> = -19> 0 -20> ; -21> i -22> < -23> 1 -24> ; -25> i -26> ++ -27> ) -28> { +4 > (let +5 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() +6 > +7 > name: nameA +8 > , +9 > skills: { primary: primaryA, secondary: secondaryA } +10> +11> primary: primaryA +12> , +13> secondary: secondaryA +14> } } = getMultiRobot(), +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { 1->Emitted(39, 1) Source(59, 1) + SourceIndex(0) 2 >Emitted(39, 4) Source(59, 4) + SourceIndex(0) 3 >Emitted(39, 5) Source(59, 5) + SourceIndex(0) -4 >Emitted(39, 6) Source(59, 6) + SourceIndex(0) -5 >Emitted(39, 9) Source(59, 9) + SourceIndex(0) -6 >Emitted(39, 10) Source(59, 10) + SourceIndex(0) -7 >Emitted(39, 30) Source(59, 96) + SourceIndex(0) -8 >Emitted(39, 32) Source(59, 11) + SourceIndex(0) -9 >Emitted(39, 47) Source(59, 22) + SourceIndex(0) -10>Emitted(39, 49) Source(59, 24) + SourceIndex(0) -11>Emitted(39, 63) Source(59, 30) + SourceIndex(0) -12>Emitted(39, 65) Source(59, 34) + SourceIndex(0) -13>Emitted(39, 86) Source(59, 51) + SourceIndex(0) -14>Emitted(39, 88) Source(59, 53) + SourceIndex(0) -15>Emitted(39, 113) Source(59, 74) + SourceIndex(0) -16>Emitted(39, 115) Source(59, 98) + SourceIndex(0) -17>Emitted(39, 116) Source(59, 99) + SourceIndex(0) -18>Emitted(39, 119) Source(59, 102) + SourceIndex(0) -19>Emitted(39, 120) Source(59, 103) + SourceIndex(0) -20>Emitted(39, 122) Source(59, 105) + SourceIndex(0) -21>Emitted(39, 123) Source(59, 106) + SourceIndex(0) -22>Emitted(39, 126) Source(59, 109) + SourceIndex(0) -23>Emitted(39, 127) Source(59, 110) + SourceIndex(0) -24>Emitted(39, 129) Source(59, 112) + SourceIndex(0) -25>Emitted(39, 130) Source(59, 113) + SourceIndex(0) -26>Emitted(39, 132) Source(59, 115) + SourceIndex(0) -27>Emitted(39, 134) Source(59, 117) + SourceIndex(0) -28>Emitted(39, 135) Source(59, 118) + SourceIndex(0) +4 >Emitted(39, 6) Source(59, 10) + SourceIndex(0) +5 >Emitted(39, 30) Source(59, 96) + SourceIndex(0) +6 >Emitted(39, 32) Source(59, 11) + SourceIndex(0) +7 >Emitted(39, 47) Source(59, 22) + SourceIndex(0) +8 >Emitted(39, 49) Source(59, 24) + SourceIndex(0) +9 >Emitted(39, 63) Source(59, 76) + SourceIndex(0) +10>Emitted(39, 65) Source(59, 34) + SourceIndex(0) +11>Emitted(39, 86) Source(59, 51) + SourceIndex(0) +12>Emitted(39, 88) Source(59, 53) + SourceIndex(0) +13>Emitted(39, 113) Source(59, 74) + SourceIndex(0) +14>Emitted(39, 115) Source(59, 98) + SourceIndex(0) +15>Emitted(39, 116) Source(59, 99) + SourceIndex(0) +16>Emitted(39, 119) Source(59, 102) + SourceIndex(0) +17>Emitted(39, 120) Source(59, 103) + SourceIndex(0) +18>Emitted(39, 122) Source(59, 105) + SourceIndex(0) +19>Emitted(39, 123) Source(59, 106) + SourceIndex(0) +20>Emitted(39, 126) Source(59, 109) + SourceIndex(0) +21>Emitted(39, 127) Source(59, 110) + SourceIndex(0) +22>Emitted(39, 129) Source(59, 112) + SourceIndex(0) +23>Emitted(39, 130) Source(59, 113) + SourceIndex(0) +24>Emitted(39, 132) Source(59, 115) + SourceIndex(0) +25>Emitted(39, 134) Source(59, 117) + SourceIndex(0) +26>Emitted(39, 135) Source(59, 118) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -1425,90 +1359,84 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^^^^^^^^^^^^^^^^^^^^^^^^^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^^ -23> ^ -24> ^^ -25> ^ -26> ^^ -27> ^^ -28> ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ 1-> > 2 >for 3 > -4 > ( -5 > let -6 > -7 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } -8 > -9 > name: nameA -10> , -11> skills -12> : { -13> primary: primaryA -14> , -15> secondary: secondaryA -16> } } = +4 > (let +5 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +6 > +7 > name: nameA +8 > , +9 > skills: { primary: primaryA, secondary: secondaryA } +10> +11> primary: primaryA +12> , +13> secondary: secondaryA +14> } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, > -17> i -18> = -19> 0 -20> ; -21> i -22> < -23> 1 -24> ; -25> i -26> ++ -27> ) -28> { +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { 1->Emitted(42, 1) Source(62, 1) + SourceIndex(0) 2 >Emitted(42, 4) Source(62, 4) + SourceIndex(0) 3 >Emitted(42, 5) Source(62, 5) + SourceIndex(0) -4 >Emitted(42, 6) Source(62, 6) + SourceIndex(0) -5 >Emitted(42, 9) Source(62, 9) + SourceIndex(0) -6 >Emitted(42, 10) Source(62, 10) + SourceIndex(0) -7 >Emitted(42, 88) Source(63, 90) + SourceIndex(0) -8 >Emitted(42, 90) Source(62, 11) + SourceIndex(0) -9 >Emitted(42, 105) Source(62, 22) + SourceIndex(0) -10>Emitted(42, 107) Source(62, 24) + SourceIndex(0) -11>Emitted(42, 121) Source(62, 30) + SourceIndex(0) -12>Emitted(42, 123) Source(62, 34) + SourceIndex(0) -13>Emitted(42, 144) Source(62, 51) + SourceIndex(0) -14>Emitted(42, 146) Source(62, 53) + SourceIndex(0) -15>Emitted(42, 171) Source(62, 74) + SourceIndex(0) -16>Emitted(42, 173) Source(64, 5) + SourceIndex(0) -17>Emitted(42, 174) Source(64, 6) + SourceIndex(0) -18>Emitted(42, 177) Source(64, 9) + SourceIndex(0) -19>Emitted(42, 178) Source(64, 10) + SourceIndex(0) -20>Emitted(42, 180) Source(64, 12) + SourceIndex(0) -21>Emitted(42, 181) Source(64, 13) + SourceIndex(0) -22>Emitted(42, 184) Source(64, 16) + SourceIndex(0) -23>Emitted(42, 185) Source(64, 17) + SourceIndex(0) -24>Emitted(42, 187) Source(64, 19) + SourceIndex(0) -25>Emitted(42, 188) Source(64, 20) + SourceIndex(0) -26>Emitted(42, 190) Source(64, 22) + SourceIndex(0) -27>Emitted(42, 192) Source(64, 24) + SourceIndex(0) -28>Emitted(42, 193) Source(64, 25) + SourceIndex(0) +4 >Emitted(42, 6) Source(62, 10) + SourceIndex(0) +5 >Emitted(42, 88) Source(63, 90) + SourceIndex(0) +6 >Emitted(42, 90) Source(62, 11) + SourceIndex(0) +7 >Emitted(42, 105) Source(62, 22) + SourceIndex(0) +8 >Emitted(42, 107) Source(62, 24) + SourceIndex(0) +9 >Emitted(42, 121) Source(62, 76) + SourceIndex(0) +10>Emitted(42, 123) Source(62, 34) + SourceIndex(0) +11>Emitted(42, 144) Source(62, 51) + SourceIndex(0) +12>Emitted(42, 146) Source(62, 53) + SourceIndex(0) +13>Emitted(42, 171) Source(62, 74) + SourceIndex(0) +14>Emitted(42, 173) Source(64, 5) + SourceIndex(0) +15>Emitted(42, 174) Source(64, 6) + SourceIndex(0) +16>Emitted(42, 177) Source(64, 9) + SourceIndex(0) +17>Emitted(42, 178) Source(64, 10) + SourceIndex(0) +18>Emitted(42, 180) Source(64, 12) + SourceIndex(0) +19>Emitted(42, 181) Source(64, 13) + SourceIndex(0) +20>Emitted(42, 184) Source(64, 16) + SourceIndex(0) +21>Emitted(42, 185) Source(64, 17) + SourceIndex(0) +22>Emitted(42, 187) Source(64, 19) + SourceIndex(0) +23>Emitted(42, 188) Source(64, 20) + SourceIndex(0) +24>Emitted(42, 190) Source(64, 22) + SourceIndex(0) +25>Emitted(42, 192) Source(64, 24) + SourceIndex(0) +26>Emitted(42, 193) Source(64, 25) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map index 89bf5672d04..83ec7f83efa 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForObjectBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt index 6621dd0b551..18aea40d2f2 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt @@ -633,9 +633,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > { -6 > skills -7 > : { +5 > { skills: +6 > { primary: primaryA, secondary: secondaryA } +7 > 8 > primary: primaryA 9 > , 10> secondary: secondaryA @@ -659,8 +659,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(20, 4) Source(38, 4) + SourceIndex(0) 3 >Emitted(20, 5) Source(38, 5) + SourceIndex(0) 4 >Emitted(20, 6) Source(38, 6) + SourceIndex(0) -5 >Emitted(20, 7) Source(38, 8) + SourceIndex(0) -6 >Emitted(20, 29) Source(38, 14) + SourceIndex(0) +5 >Emitted(20, 7) Source(38, 16) + SourceIndex(0) +6 >Emitted(20, 29) Source(38, 60) + SourceIndex(0) 7 >Emitted(20, 31) Source(38, 18) + SourceIndex(0) 8 >Emitted(20, 52) Source(38, 35) + SourceIndex(0) 9 >Emitted(20, 54) Source(38, 37) + SourceIndex(0) @@ -754,8 +754,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() 7 > -8 > skills -9 > : { +8 > { primary: primaryA, secondary: secondaryA } +9 > 10> primary: primaryA 11> , 12> secondary: secondaryA @@ -779,8 +779,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(23, 6) Source(41, 6) + SourceIndex(0) 5 >Emitted(23, 7) Source(41, 6) + SourceIndex(0) 6 >Emitted(23, 27) Source(41, 80) + SourceIndex(0) -7 >Emitted(23, 29) Source(41, 8) + SourceIndex(0) -8 >Emitted(23, 43) Source(41, 14) + SourceIndex(0) +7 >Emitted(23, 29) Source(41, 16) + SourceIndex(0) +8 >Emitted(23, 43) Source(41, 60) + SourceIndex(0) 9 >Emitted(23, 45) Source(41, 18) + SourceIndex(0) 10>Emitted(23, 66) Source(41, 35) + SourceIndex(0) 11>Emitted(23, 68) Source(41, 37) + SourceIndex(0) @@ -860,8 +860,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { skills: { primary: primaryA, secondary: secondaryA } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > -8 > skills -9 > : { +8 > { primary: primaryA, secondary: secondaryA } +9 > 10> primary: primaryA 11> , 12> secondary: secondaryA @@ -873,8 +873,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(26, 6) Source(44, 6) + SourceIndex(0) 5 >Emitted(26, 7) Source(44, 6) + SourceIndex(0) 6 >Emitted(26, 85) Source(45, 90) + SourceIndex(0) -7 >Emitted(26, 87) Source(44, 8) + SourceIndex(0) -8 >Emitted(26, 101) Source(44, 14) + SourceIndex(0) +7 >Emitted(26, 87) Source(44, 16) + SourceIndex(0) +8 >Emitted(26, 101) Source(44, 60) + SourceIndex(0) 9 >Emitted(26, 103) Source(44, 18) + SourceIndex(0) 10>Emitted(26, 124) Source(44, 35) + SourceIndex(0) 11>Emitted(26, 126) Source(44, 37) + SourceIndex(0) @@ -1311,9 +1311,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > { -6 > skills -7 > : { +5 > { skills: +6 > { primary, secondary } +7 > 8 > primary 9 > , 10> secondary @@ -1337,8 +1337,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(39, 4) Source(58, 4) + SourceIndex(0) 3 >Emitted(39, 5) Source(58, 5) + SourceIndex(0) 4 >Emitted(39, 6) Source(58, 6) + SourceIndex(0) -5 >Emitted(39, 7) Source(58, 8) + SourceIndex(0) -6 >Emitted(39, 29) Source(58, 14) + SourceIndex(0) +5 >Emitted(39, 7) Source(58, 16) + SourceIndex(0) +6 >Emitted(39, 29) Source(58, 38) + SourceIndex(0) 7 >Emitted(39, 31) Source(58, 18) + SourceIndex(0) 8 >Emitted(39, 51) Source(58, 25) + SourceIndex(0) 9 >Emitted(39, 53) Source(58, 27) + SourceIndex(0) @@ -1432,8 +1432,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { skills: { primary, secondary } } = getMultiRobot() 7 > -8 > skills -9 > : { +8 > { primary, secondary } +9 > 10> primary 11> , 12> secondary @@ -1457,8 +1457,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(42, 6) Source(61, 6) + SourceIndex(0) 5 >Emitted(42, 7) Source(61, 6) + SourceIndex(0) 6 >Emitted(42, 27) Source(61, 58) + SourceIndex(0) -7 >Emitted(42, 29) Source(61, 8) + SourceIndex(0) -8 >Emitted(42, 43) Source(61, 14) + SourceIndex(0) +7 >Emitted(42, 29) Source(61, 16) + SourceIndex(0) +8 >Emitted(42, 43) Source(61, 38) + SourceIndex(0) 9 >Emitted(42, 45) Source(61, 18) + SourceIndex(0) 10>Emitted(42, 65) Source(61, 25) + SourceIndex(0) 11>Emitted(42, 67) Source(61, 27) + SourceIndex(0) @@ -1538,8 +1538,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { skills: { primary, secondary } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > -8 > skills -9 > : { +8 > { primary, secondary } +9 > 10> primary 11> , 12> secondary @@ -1551,8 +1551,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(45, 6) Source(64, 6) + SourceIndex(0) 5 >Emitted(45, 7) Source(64, 6) + SourceIndex(0) 6 >Emitted(45, 85) Source(65, 90) + SourceIndex(0) -7 >Emitted(45, 87) Source(64, 8) + SourceIndex(0) -8 >Emitted(45, 101) Source(64, 14) + SourceIndex(0) +7 >Emitted(45, 87) Source(64, 16) + SourceIndex(0) +8 >Emitted(45, 101) Source(64, 38) + SourceIndex(0) 9 >Emitted(45, 103) Source(64, 18) + SourceIndex(0) 10>Emitted(45, 123) Source(64, 25) + SourceIndex(0) 11>Emitted(45, 125) Source(64, 27) + SourceIndex(0) @@ -2013,9 +2013,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 > ( 5 > { 6 > name: nameA -7 > , -8 > skills -9 > : { +7 > , skills: +8 > { primary: primaryA, secondary: secondaryA } +9 > 10> primary: primaryA 11> , 12> secondary: secondaryA @@ -2041,8 +2041,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(58, 6) Source(80, 6) + SourceIndex(0) 5 >Emitted(58, 7) Source(80, 8) + SourceIndex(0) 6 >Emitted(58, 30) Source(80, 19) + SourceIndex(0) -7 >Emitted(58, 32) Source(80, 21) + SourceIndex(0) -8 >Emitted(58, 54) Source(80, 27) + SourceIndex(0) +7 >Emitted(58, 32) Source(80, 29) + SourceIndex(0) +8 >Emitted(58, 54) Source(80, 73) + SourceIndex(0) 9 >Emitted(58, 56) Source(80, 31) + SourceIndex(0) 10>Emitted(58, 77) Source(80, 48) + SourceIndex(0) 11>Emitted(58, 79) Source(80, 50) + SourceIndex(0) @@ -2139,9 +2139,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() 7 > 8 > name: nameA -9 > , -10> skills -11> : { +9 > , skills: +10> { primary: primaryA, secondary: secondaryA } +11> 12> primary: primaryA 13> , 14> secondary: secondaryA @@ -2167,8 +2167,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(61, 27) Source(83, 93) + SourceIndex(0) 7 >Emitted(61, 29) Source(83, 8) + SourceIndex(0) 8 >Emitted(61, 44) Source(83, 19) + SourceIndex(0) -9 >Emitted(61, 46) Source(83, 21) + SourceIndex(0) -10>Emitted(61, 60) Source(83, 27) + SourceIndex(0) +9 >Emitted(61, 46) Source(83, 29) + SourceIndex(0) +10>Emitted(61, 60) Source(83, 73) + SourceIndex(0) 11>Emitted(61, 62) Source(83, 31) + SourceIndex(0) 12>Emitted(61, 83) Source(83, 48) + SourceIndex(0) 13>Emitted(61, 85) Source(83, 50) + SourceIndex(0) @@ -2251,9 +2251,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > 8 > name: nameA -9 > , -10> skills -11> : { +9 > , skills: +10> { primary: primaryA, secondary: secondaryA } +11> 12> primary: primaryA 13> , 14> secondary: secondaryA @@ -2267,8 +2267,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(64, 85) Source(87, 90) + SourceIndex(0) 7 >Emitted(64, 87) Source(86, 8) + SourceIndex(0) 8 >Emitted(64, 102) Source(86, 19) + SourceIndex(0) -9 >Emitted(64, 104) Source(86, 21) + SourceIndex(0) -10>Emitted(64, 118) Source(86, 27) + SourceIndex(0) +9 >Emitted(64, 104) Source(86, 29) + SourceIndex(0) +10>Emitted(64, 118) Source(86, 73) + SourceIndex(0) 11>Emitted(64, 120) Source(86, 31) + SourceIndex(0) 12>Emitted(64, 141) Source(86, 48) + SourceIndex(0) 13>Emitted(64, 143) Source(86, 50) + SourceIndex(0) @@ -2727,9 +2727,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 > ( 5 > { 6 > name -7 > , -8 > skills -9 > : { +7 > , skills: +8 > { primary, secondary } +9 > 10> primary 11> , 12> secondary @@ -2755,8 +2755,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(77, 6) Source(100, 6) + SourceIndex(0) 5 >Emitted(77, 7) Source(100, 8) + SourceIndex(0) 6 >Emitted(77, 29) Source(100, 12) + SourceIndex(0) -7 >Emitted(77, 31) Source(100, 14) + SourceIndex(0) -8 >Emitted(77, 53) Source(100, 20) + SourceIndex(0) +7 >Emitted(77, 31) Source(100, 22) + SourceIndex(0) +8 >Emitted(77, 53) Source(100, 44) + SourceIndex(0) 9 >Emitted(77, 55) Source(100, 24) + SourceIndex(0) 10>Emitted(77, 75) Source(100, 31) + SourceIndex(0) 11>Emitted(77, 77) Source(100, 33) + SourceIndex(0) @@ -2853,9 +2853,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { name, skills: { primary, secondary } } = getMultiRobot() 7 > 8 > name -9 > , -10> skills -11> : { +9 > , skills: +10> { primary, secondary } +11> 12> primary 13> , 14> secondary @@ -2881,8 +2881,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(80, 27) Source(103, 64) + SourceIndex(0) 7 >Emitted(80, 29) Source(103, 8) + SourceIndex(0) 8 >Emitted(80, 43) Source(103, 12) + SourceIndex(0) -9 >Emitted(80, 45) Source(103, 14) + SourceIndex(0) -10>Emitted(80, 59) Source(103, 20) + SourceIndex(0) +9 >Emitted(80, 45) Source(103, 22) + SourceIndex(0) +10>Emitted(80, 59) Source(103, 44) + SourceIndex(0) 11>Emitted(80, 61) Source(103, 24) + SourceIndex(0) 12>Emitted(80, 81) Source(103, 31) + SourceIndex(0) 13>Emitted(80, 83) Source(103, 33) + SourceIndex(0) @@ -2965,9 +2965,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > 8 > name -9 > , -10> skills -11> : { +9 > , skills: +10> { primary, secondary } +11> 12> primary 13> , 14> secondary @@ -2981,8 +2981,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(83, 85) Source(107, 90) + SourceIndex(0) 7 >Emitted(83, 87) Source(106, 8) + SourceIndex(0) 8 >Emitted(83, 101) Source(106, 12) + SourceIndex(0) -9 >Emitted(83, 103) Source(106, 14) + SourceIndex(0) -10>Emitted(83, 117) Source(106, 20) + SourceIndex(0) +9 >Emitted(83, 103) Source(106, 22) + SourceIndex(0) +10>Emitted(83, 117) Source(106, 44) + SourceIndex(0) 11>Emitted(83, 119) Source(106, 24) + SourceIndex(0) 12>Emitted(83, 139) Source(106, 31) + SourceIndex(0) 13>Emitted(83, 141) Source(106, 33) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map index c2a1c23d12b..076b6994fa3 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt index bb39152f474..17110072800 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern.sourcemap.txt @@ -362,20 +362,17 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _a = robots_1[_i], nameA = _a[1]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ 1 > -2 > -3 > let [, nameA] -4 > -5 > nameA +2 > let [, nameA] +3 > +4 > nameA 1 >Emitted(14, 5) Source(21, 6) + SourceIndex(0) -2 >Emitted(14, 9) Source(21, 6) + SourceIndex(0) -3 >Emitted(14, 26) Source(21, 19) + SourceIndex(0) -4 >Emitted(14, 28) Source(21, 13) + SourceIndex(0) -5 >Emitted(14, 41) Source(21, 18) + SourceIndex(0) +2 >Emitted(14, 26) Source(21, 19) + SourceIndex(0) +3 >Emitted(14, 28) Source(21, 13) + SourceIndex(0) +4 >Emitted(14, 41) Source(21, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -458,20 +455,17 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _d = _c[_b], nameA = _d[1]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ 1 > -2 > -3 > let [, nameA] -4 > -5 > nameA +2 > let [, nameA] +3 > +4 > nameA 1 >Emitted(18, 5) Source(24, 6) + SourceIndex(0) -2 >Emitted(18, 9) Source(24, 6) + SourceIndex(0) -3 >Emitted(18, 20) Source(24, 19) + SourceIndex(0) -4 >Emitted(18, 22) Source(24, 13) + SourceIndex(0) -5 >Emitted(18, 35) Source(24, 18) + SourceIndex(0) +2 >Emitted(18, 20) Source(24, 19) + SourceIndex(0) +3 >Emitted(18, 22) Source(24, 13) + SourceIndex(0) +4 >Emitted(18, 35) Source(24, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -560,20 +554,17 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _g = _f[_e], nameA = _g[1]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ 1 > -2 > -3 > let [, nameA] -4 > -5 > nameA +2 > let [, nameA] +3 > +4 > nameA 1 >Emitted(22, 5) Source(27, 6) + SourceIndex(0) -2 >Emitted(22, 9) Source(27, 6) + SourceIndex(0) -3 >Emitted(22, 20) Source(27, 19) + SourceIndex(0) -4 >Emitted(22, 22) Source(27, 13) + SourceIndex(0) -5 >Emitted(22, 35) Source(27, 18) + SourceIndex(0) +2 >Emitted(22, 20) Source(27, 19) + SourceIndex(0) +3 >Emitted(22, 22) Source(27, 13) + SourceIndex(0) +4 >Emitted(22, 35) Source(27, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -651,32 +642,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [, [primarySkillA, secondarySkillA]] -4 > -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA +2 > let [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA 1->Emitted(26, 5) Source(30, 6) + SourceIndex(0) -2 >Emitted(26, 9) Source(30, 6) + SourceIndex(0) -3 >Emitted(26, 31) Source(30, 46) + SourceIndex(0) -4 >Emitted(26, 33) Source(30, 13) + SourceIndex(0) -5 >Emitted(26, 43) Source(30, 45) + SourceIndex(0) -6 >Emitted(26, 45) Source(30, 14) + SourceIndex(0) -7 >Emitted(26, 66) Source(30, 27) + SourceIndex(0) -8 >Emitted(26, 68) Source(30, 29) + SourceIndex(0) -9 >Emitted(26, 91) Source(30, 44) + SourceIndex(0) +2 >Emitted(26, 31) Source(30, 46) + SourceIndex(0) +3 >Emitted(26, 33) Source(30, 13) + SourceIndex(0) +4 >Emitted(26, 43) Source(30, 45) + SourceIndex(0) +5 >Emitted(26, 45) Source(30, 14) + SourceIndex(0) +6 >Emitted(26, 66) Source(30, 27) + SourceIndex(0) +7 >Emitted(26, 68) Source(30, 29) + SourceIndex(0) +8 >Emitted(26, 91) Source(30, 44) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -760,32 +748,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [, [primarySkillA, secondarySkillA]] -4 > -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA +2 > let [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA 1->Emitted(30, 5) Source(33, 6) + SourceIndex(0) -2 >Emitted(30, 9) Source(33, 6) + SourceIndex(0) -3 >Emitted(30, 20) Source(33, 46) + SourceIndex(0) -4 >Emitted(30, 22) Source(33, 13) + SourceIndex(0) -5 >Emitted(30, 32) Source(33, 45) + SourceIndex(0) -6 >Emitted(30, 34) Source(33, 14) + SourceIndex(0) -7 >Emitted(30, 55) Source(33, 27) + SourceIndex(0) -8 >Emitted(30, 57) Source(33, 29) + SourceIndex(0) -9 >Emitted(30, 80) Source(33, 44) + SourceIndex(0) +2 >Emitted(30, 20) Source(33, 46) + SourceIndex(0) +3 >Emitted(30, 22) Source(33, 13) + SourceIndex(0) +4 >Emitted(30, 32) Source(33, 45) + SourceIndex(0) +5 >Emitted(30, 34) Source(33, 14) + SourceIndex(0) +6 >Emitted(30, 55) Source(33, 27) + SourceIndex(0) +7 >Emitted(30, 57) Source(33, 29) + SourceIndex(0) +8 >Emitted(30, 80) Source(33, 44) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -875,32 +860,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [, [primarySkillA, secondarySkillA]] -4 > -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA +2 > let [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA 1->Emitted(34, 5) Source(36, 6) + SourceIndex(0) -2 >Emitted(34, 9) Source(36, 6) + SourceIndex(0) -3 >Emitted(34, 20) Source(36, 46) + SourceIndex(0) -4 >Emitted(34, 22) Source(36, 13) + SourceIndex(0) -5 >Emitted(34, 32) Source(36, 45) + SourceIndex(0) -6 >Emitted(34, 34) Source(36, 14) + SourceIndex(0) -7 >Emitted(34, 55) Source(36, 27) + SourceIndex(0) -8 >Emitted(34, 57) Source(36, 29) + SourceIndex(0) -9 >Emitted(34, 80) Source(36, 44) + SourceIndex(0) +2 >Emitted(34, 20) Source(36, 46) + SourceIndex(0) +3 >Emitted(34, 22) Source(36, 13) + SourceIndex(0) +4 >Emitted(34, 32) Source(36, 45) + SourceIndex(0) +5 >Emitted(34, 34) Source(36, 14) + SourceIndex(0) +6 >Emitted(34, 55) Source(36, 27) + SourceIndex(0) +7 >Emitted(34, 57) Source(36, 29) + SourceIndex(0) +8 >Emitted(34, 80) Source(36, 44) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -978,14 +960,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var numberB = robots_2[_u][0]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [numberB] -1 >Emitted(38, 5) Source(40, 6) + SourceIndex(0) -2 >Emitted(38, 9) Source(40, 10) + SourceIndex(0) -3 >Emitted(38, 34) Source(40, 19) + SourceIndex(0) +2 > numberB +1 >Emitted(38, 5) Source(40, 11) + SourceIndex(0) +2 >Emitted(38, 34) Source(40, 18) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -996,7 +975,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1 > of robots) { +1 >] of robots) { > 2 > console 3 > . @@ -1068,14 +1047,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var numberB = _w[_v][0]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [numberB] -1 >Emitted(42, 5) Source(43, 6) + SourceIndex(0) -2 >Emitted(42, 9) Source(43, 10) + SourceIndex(0) -3 >Emitted(42, 28) Source(43, 19) + SourceIndex(0) +2 > numberB +1 >Emitted(42, 5) Source(43, 11) + SourceIndex(0) +2 >Emitted(42, 28) Source(43, 18) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -1086,7 +1062,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1 > of getRobots()) { +1 >] of getRobots()) { > 2 > console 3 > . @@ -1164,14 +1140,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var numberB = _y[_x][0]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [numberB] -1 >Emitted(46, 5) Source(46, 6) + SourceIndex(0) -2 >Emitted(46, 9) Source(46, 10) + SourceIndex(0) -3 >Emitted(46, 28) Source(46, 19) + SourceIndex(0) +2 > numberB +1 >Emitted(46, 5) Source(46, 11) + SourceIndex(0) +2 >Emitted(46, 28) Source(46, 18) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -1182,7 +1155,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1 > of [robotA, robotB]) { +1 >] of [robotA, robotB]) { > 2 > console 3 > . @@ -1248,14 +1221,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var nameB = multiRobots_2[_z][0]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [nameB] -1 >Emitted(50, 5) Source(49, 6) + SourceIndex(0) -2 >Emitted(50, 9) Source(49, 10) + SourceIndex(0) -3 >Emitted(50, 37) Source(49, 17) + SourceIndex(0) +2 > nameB +1 >Emitted(50, 5) Source(49, 11) + SourceIndex(0) +2 >Emitted(50, 37) Source(49, 16) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1266,7 +1236,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of multiRobots) { +1 >] of multiRobots) { > 2 > console 3 > . @@ -1338,14 +1308,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var nameB = _1[_0][0]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [nameB] -1 >Emitted(54, 5) Source(52, 6) + SourceIndex(0) -2 >Emitted(54, 9) Source(52, 10) + SourceIndex(0) -3 >Emitted(54, 26) Source(52, 17) + SourceIndex(0) +2 > nameB +1 >Emitted(54, 5) Source(52, 11) + SourceIndex(0) +2 >Emitted(54, 26) Source(52, 16) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1356,7 +1323,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of getMultiRobots()) { +1 >] of getMultiRobots()) { > 2 > console 3 > . @@ -1434,14 +1401,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var nameB = _3[_2][0]; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [nameB] -1 >Emitted(58, 5) Source(55, 6) + SourceIndex(0) -2 >Emitted(58, 9) Source(55, 10) + SourceIndex(0) -3 >Emitted(58, 26) Source(55, 17) + SourceIndex(0) +2 > nameB +1 >Emitted(58, 5) Source(55, 11) + SourceIndex(0) +2 >Emitted(58, 26) Source(55, 16) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1452,7 +1416,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of [multiRobotA, multiRobotB]) { +1 >] of [multiRobotA, multiRobotB]) { > 2 > console 3 > . @@ -1520,32 +1484,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [numberA2, nameA2, skillA2] -4 > -5 > numberA2 -6 > , -7 > nameA2 -8 > , -9 > skillA2 +2 > let [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 1->Emitted(62, 5) Source(59, 6) + SourceIndex(0) -2 >Emitted(62, 9) Source(59, 6) + SourceIndex(0) -3 >Emitted(62, 26) Source(59, 37) + SourceIndex(0) -4 >Emitted(62, 28) Source(59, 11) + SourceIndex(0) -5 >Emitted(62, 44) Source(59, 19) + SourceIndex(0) -6 >Emitted(62, 46) Source(59, 21) + SourceIndex(0) -7 >Emitted(62, 60) Source(59, 27) + SourceIndex(0) -8 >Emitted(62, 62) Source(59, 29) + SourceIndex(0) -9 >Emitted(62, 77) Source(59, 36) + SourceIndex(0) +2 >Emitted(62, 26) Source(59, 37) + SourceIndex(0) +3 >Emitted(62, 28) Source(59, 11) + SourceIndex(0) +4 >Emitted(62, 44) Source(59, 19) + SourceIndex(0) +5 >Emitted(62, 46) Source(59, 21) + SourceIndex(0) +6 >Emitted(62, 60) Source(59, 27) + SourceIndex(0) +7 >Emitted(62, 62) Source(59, 29) + SourceIndex(0) +8 >Emitted(62, 77) Source(59, 36) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1629,32 +1590,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [numberA2, nameA2, skillA2] -4 > -5 > numberA2 -6 > , -7 > nameA2 -8 > , -9 > skillA2 +2 > let [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 1->Emitted(66, 5) Source(62, 6) + SourceIndex(0) -2 >Emitted(66, 9) Source(62, 6) + SourceIndex(0) -3 >Emitted(66, 20) Source(62, 37) + SourceIndex(0) -4 >Emitted(66, 22) Source(62, 11) + SourceIndex(0) -5 >Emitted(66, 38) Source(62, 19) + SourceIndex(0) -6 >Emitted(66, 40) Source(62, 21) + SourceIndex(0) -7 >Emitted(66, 54) Source(62, 27) + SourceIndex(0) -8 >Emitted(66, 56) Source(62, 29) + SourceIndex(0) -9 >Emitted(66, 71) Source(62, 36) + SourceIndex(0) +2 >Emitted(66, 20) Source(62, 37) + SourceIndex(0) +3 >Emitted(66, 22) Source(62, 11) + SourceIndex(0) +4 >Emitted(66, 38) Source(62, 19) + SourceIndex(0) +5 >Emitted(66, 40) Source(62, 21) + SourceIndex(0) +6 >Emitted(66, 54) Source(62, 27) + SourceIndex(0) +7 >Emitted(66, 56) Source(62, 29) + SourceIndex(0) +8 >Emitted(66, 71) Source(62, 36) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1744,32 +1702,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [numberA2, nameA2, skillA2] -4 > -5 > numberA2 -6 > , -7 > nameA2 -8 > , -9 > skillA2 +2 > let [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 1->Emitted(70, 5) Source(65, 6) + SourceIndex(0) -2 >Emitted(70, 9) Source(65, 6) + SourceIndex(0) -3 >Emitted(70, 22) Source(65, 37) + SourceIndex(0) -4 >Emitted(70, 24) Source(65, 11) + SourceIndex(0) -5 >Emitted(70, 41) Source(65, 19) + SourceIndex(0) -6 >Emitted(70, 43) Source(65, 21) + SourceIndex(0) -7 >Emitted(70, 58) Source(65, 27) + SourceIndex(0) -8 >Emitted(70, 60) Source(65, 29) + SourceIndex(0) -9 >Emitted(70, 76) Source(65, 36) + SourceIndex(0) +2 >Emitted(70, 22) Source(65, 37) + SourceIndex(0) +3 >Emitted(70, 24) Source(65, 11) + SourceIndex(0) +4 >Emitted(70, 41) Source(65, 19) + SourceIndex(0) +5 >Emitted(70, 43) Source(65, 21) + SourceIndex(0) +6 >Emitted(70, 58) Source(65, 27) + SourceIndex(0) +7 >Emitted(70, 60) Source(65, 29) + SourceIndex(0) +8 >Emitted(70, 76) Source(65, 36) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1847,38 +1802,35 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [nameMA, [primarySkillA, secondarySkillA]] -4 > -5 > nameMA -6 > , -7 > [primarySkillA, secondarySkillA] -8 > -9 > primarySkillA -10> , -11> secondarySkillA +2 > let [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA 1->Emitted(74, 5) Source(68, 6) + SourceIndex(0) -2 >Emitted(74, 9) Source(68, 6) + SourceIndex(0) -3 >Emitted(74, 33) Source(68, 52) + SourceIndex(0) -4 >Emitted(74, 35) Source(68, 11) + SourceIndex(0) -5 >Emitted(74, 50) Source(68, 17) + SourceIndex(0) -6 >Emitted(74, 52) Source(68, 19) + SourceIndex(0) -7 >Emitted(74, 64) Source(68, 51) + SourceIndex(0) -8 >Emitted(74, 66) Source(68, 20) + SourceIndex(0) -9 >Emitted(74, 88) Source(68, 33) + SourceIndex(0) -10>Emitted(74, 90) Source(68, 35) + SourceIndex(0) -11>Emitted(74, 114) Source(68, 50) + SourceIndex(0) +2 >Emitted(74, 33) Source(68, 52) + SourceIndex(0) +3 >Emitted(74, 35) Source(68, 11) + SourceIndex(0) +4 >Emitted(74, 50) Source(68, 17) + SourceIndex(0) +5 >Emitted(74, 52) Source(68, 19) + SourceIndex(0) +6 >Emitted(74, 64) Source(68, 51) + SourceIndex(0) +7 >Emitted(74, 66) Source(68, 20) + SourceIndex(0) +8 >Emitted(74, 88) Source(68, 33) + SourceIndex(0) +9 >Emitted(74, 90) Source(68, 35) + SourceIndex(0) +10>Emitted(74, 114) Source(68, 50) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -1962,38 +1914,35 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [nameMA, [primarySkillA, secondarySkillA]] -4 > -5 > nameMA -6 > , -7 > [primarySkillA, secondarySkillA] -8 > -9 > primarySkillA -10> , -11> secondarySkillA +2 > let [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA 1->Emitted(78, 5) Source(71, 6) + SourceIndex(0) -2 >Emitted(78, 9) Source(71, 6) + SourceIndex(0) -3 >Emitted(78, 23) Source(71, 52) + SourceIndex(0) -4 >Emitted(78, 25) Source(71, 11) + SourceIndex(0) -5 >Emitted(78, 40) Source(71, 17) + SourceIndex(0) -6 >Emitted(78, 42) Source(71, 19) + SourceIndex(0) -7 >Emitted(78, 54) Source(71, 51) + SourceIndex(0) -8 >Emitted(78, 56) Source(71, 20) + SourceIndex(0) -9 >Emitted(78, 78) Source(71, 33) + SourceIndex(0) -10>Emitted(78, 80) Source(71, 35) + SourceIndex(0) -11>Emitted(78, 104) Source(71, 50) + SourceIndex(0) +2 >Emitted(78, 23) Source(71, 52) + SourceIndex(0) +3 >Emitted(78, 25) Source(71, 11) + SourceIndex(0) +4 >Emitted(78, 40) Source(71, 17) + SourceIndex(0) +5 >Emitted(78, 42) Source(71, 19) + SourceIndex(0) +6 >Emitted(78, 54) Source(71, 51) + SourceIndex(0) +7 >Emitted(78, 56) Source(71, 20) + SourceIndex(0) +8 >Emitted(78, 78) Source(71, 33) + SourceIndex(0) +9 >Emitted(78, 80) Source(71, 35) + SourceIndex(0) +10>Emitted(78, 104) Source(71, 50) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2083,38 +2032,35 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [nameMA, [primarySkillA, secondarySkillA]] -4 > -5 > nameMA -6 > , -7 > [primarySkillA, secondarySkillA] -8 > -9 > primarySkillA -10> , -11> secondarySkillA +2 > let [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA 1->Emitted(82, 5) Source(74, 6) + SourceIndex(0) -2 >Emitted(82, 9) Source(74, 6) + SourceIndex(0) -3 >Emitted(82, 23) Source(74, 52) + SourceIndex(0) -4 >Emitted(82, 25) Source(74, 11) + SourceIndex(0) -5 >Emitted(82, 40) Source(74, 17) + SourceIndex(0) -6 >Emitted(82, 42) Source(74, 19) + SourceIndex(0) -7 >Emitted(82, 54) Source(74, 51) + SourceIndex(0) -8 >Emitted(82, 56) Source(74, 20) + SourceIndex(0) -9 >Emitted(82, 78) Source(74, 33) + SourceIndex(0) -10>Emitted(82, 80) Source(74, 35) + SourceIndex(0) -11>Emitted(82, 104) Source(74, 50) + SourceIndex(0) +2 >Emitted(82, 23) Source(74, 52) + SourceIndex(0) +3 >Emitted(82, 25) Source(74, 11) + SourceIndex(0) +4 >Emitted(82, 40) Source(74, 17) + SourceIndex(0) +5 >Emitted(82, 42) Source(74, 19) + SourceIndex(0) +6 >Emitted(82, 54) Source(74, 51) + SourceIndex(0) +7 >Emitted(82, 56) Source(74, 20) + SourceIndex(0) +8 >Emitted(82, 78) Source(74, 33) + SourceIndex(0) +9 >Emitted(82, 80) Source(74, 35) + SourceIndex(0) +10>Emitted(82, 104) Source(74, 50) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2193,26 +2139,23 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [numberA3, ...robotAInfo] -4 > -5 > numberA3 -6 > , -7 > ...robotAInfo +2 > let [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo 1->Emitted(86, 5) Source(78, 6) + SourceIndex(0) -2 >Emitted(86, 9) Source(78, 6) + SourceIndex(0) -3 >Emitted(86, 28) Source(78, 35) + SourceIndex(0) -4 >Emitted(86, 30) Source(78, 11) + SourceIndex(0) -5 >Emitted(86, 47) Source(78, 19) + SourceIndex(0) -6 >Emitted(86, 49) Source(78, 21) + SourceIndex(0) -7 >Emitted(86, 74) Source(78, 34) + SourceIndex(0) +2 >Emitted(86, 28) Source(78, 35) + SourceIndex(0) +3 >Emitted(86, 30) Source(78, 11) + SourceIndex(0) +4 >Emitted(86, 47) Source(78, 19) + SourceIndex(0) +5 >Emitted(86, 49) Source(78, 21) + SourceIndex(0) +6 >Emitted(86, 74) Source(78, 34) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2296,26 +2239,23 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [numberA3, ...robotAInfo] -4 > -5 > numberA3 -6 > , -7 > ...robotAInfo +2 > let [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo 1->Emitted(90, 5) Source(81, 6) + SourceIndex(0) -2 >Emitted(90, 9) Source(81, 6) + SourceIndex(0) -3 >Emitted(90, 23) Source(81, 35) + SourceIndex(0) -4 >Emitted(90, 25) Source(81, 11) + SourceIndex(0) -5 >Emitted(90, 42) Source(81, 19) + SourceIndex(0) -6 >Emitted(90, 44) Source(81, 21) + SourceIndex(0) -7 >Emitted(90, 69) Source(81, 34) + SourceIndex(0) +2 >Emitted(90, 23) Source(81, 35) + SourceIndex(0) +3 >Emitted(90, 25) Source(81, 11) + SourceIndex(0) +4 >Emitted(90, 42) Source(81, 19) + SourceIndex(0) +5 >Emitted(90, 44) Source(81, 21) + SourceIndex(0) +6 >Emitted(90, 69) Source(81, 34) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2405,26 +2345,23 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let [numberA3, ...robotAInfo] -4 > -5 > numberA3 -6 > , -7 > ...robotAInfo +2 > let [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo 1->Emitted(94, 5) Source(84, 6) + SourceIndex(0) -2 >Emitted(94, 9) Source(84, 6) + SourceIndex(0) -3 >Emitted(94, 23) Source(84, 35) + SourceIndex(0) -4 >Emitted(94, 25) Source(84, 11) + SourceIndex(0) -5 >Emitted(94, 42) Source(84, 19) + SourceIndex(0) -6 >Emitted(94, 44) Source(84, 21) + SourceIndex(0) -7 >Emitted(94, 69) Source(84, 34) + SourceIndex(0) +2 >Emitted(94, 23) Source(84, 35) + SourceIndex(0) +3 >Emitted(94, 25) Source(84, 11) + SourceIndex(0) +4 >Emitted(94, 42) Source(84, 19) + SourceIndex(0) +5 >Emitted(94, 44) Source(84, 21) + SourceIndex(0) +6 >Emitted(94, 69) Source(84, 34) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2501,14 +2438,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var multiRobotAInfo = multiRobots_4[_31].slice(0); 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [...multiRobotAInfo] -1 >Emitted(98, 5) Source(87, 6) + SourceIndex(0) -2 >Emitted(98, 9) Source(87, 10) + SourceIndex(0) -3 >Emitted(98, 54) Source(87, 30) + SourceIndex(0) +2 > ...multiRobotAInfo +1 >Emitted(98, 5) Source(87, 11) + SourceIndex(0) +2 >Emitted(98, 54) Source(87, 29) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2519,7 +2453,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 > of multiRobots) { +1 >] of multiRobots) { > 2 > console 3 > . @@ -2591,14 +2525,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var multiRobotAInfo = _33[_32].slice(0); 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [...multiRobotAInfo] -1 >Emitted(102, 5) Source(90, 6) + SourceIndex(0) -2 >Emitted(102, 9) Source(90, 10) + SourceIndex(0) -3 >Emitted(102, 44) Source(90, 30) + SourceIndex(0) +2 > ...multiRobotAInfo +1 >Emitted(102, 5) Source(90, 11) + SourceIndex(0) +2 >Emitted(102, 44) Source(90, 29) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2609,7 +2540,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 > of getMultiRobots()) { +1 >] of getMultiRobots()) { > 2 > console 3 > . @@ -2687,14 +2618,11 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts --- >>> var multiRobotAInfo = _35[_34].slice(0); 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > [...multiRobotAInfo] -1 >Emitted(106, 5) Source(93, 6) + SourceIndex(0) -2 >Emitted(106, 9) Source(93, 10) + SourceIndex(0) -3 >Emitted(106, 44) Source(93, 30) + SourceIndex(0) +2 > ...multiRobotAInfo +1 >Emitted(106, 5) Source(93, 11) + SourceIndex(0) +2 >Emitted(106, 44) Source(93, 29) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2705,7 +2633,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 > of [multiRobotA, multiRobotB]) { +1 >] of [multiRobotA, multiRobotB]) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map index 12bfa47171a..3f10e267eb9 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt index 513ff6ea2a9..5403a0863a3 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern.sourcemap.txt @@ -350,14 +350,11 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var nameA = robots_1[_i].name; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > {name: nameA } -1 >Emitted(11, 5) Source(29, 6) + SourceIndex(0) -2 >Emitted(11, 9) Source(29, 10) + SourceIndex(0) -3 >Emitted(11, 34) Source(29, 24) + SourceIndex(0) +2 > name: nameA +1 >Emitted(11, 5) Source(29, 11) + SourceIndex(0) +2 >Emitted(11, 34) Source(29, 22) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -368,7 +365,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of robots) { +1 > } of robots) { > 2 > console 3 > . @@ -440,14 +437,11 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var nameA = _b[_a].name; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > {name: nameA } -1 >Emitted(15, 5) Source(32, 6) + SourceIndex(0) -2 >Emitted(15, 9) Source(32, 10) + SourceIndex(0) -3 >Emitted(15, 28) Source(32, 24) + SourceIndex(0) +2 > name: nameA +1 >Emitted(15, 5) Source(32, 11) + SourceIndex(0) +2 >Emitted(15, 28) Source(32, 22) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -458,7 +452,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of getRobots()) { +1 > } of getRobots()) { > 2 > console 3 > . @@ -584,14 +578,11 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var nameA = _d[_c].name; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let -3 > {name: nameA } -1 >Emitted(19, 5) Source(35, 6) + SourceIndex(0) -2 >Emitted(19, 9) Source(35, 10) + SourceIndex(0) -3 >Emitted(19, 28) Source(35, 24) + SourceIndex(0) +2 > name: nameA +1 >Emitted(19, 5) Source(35, 11) + SourceIndex(0) +2 >Emitted(19, 28) Source(35, 22) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -602,7 +593,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { > 2 > console 3 > . @@ -669,26 +660,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _f = multiRobots_1[_e].skills, primaryA = _f.primary, secondaryA = _f.secondary; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > let { -3 > skills -4 > : { -5 > primary: primaryA -6 > , -7 > secondary: secondaryA -1->Emitted(23, 5) Source(38, 6) + SourceIndex(0) -2 >Emitted(23, 9) Source(38, 12) + SourceIndex(0) -3 >Emitted(23, 38) Source(38, 18) + SourceIndex(0) -4 >Emitted(23, 40) Source(38, 22) + SourceIndex(0) -5 >Emitted(23, 61) Source(38, 39) + SourceIndex(0) -6 >Emitted(23, 63) Source(38, 41) + SourceIndex(0) -7 >Emitted(23, 88) Source(38, 62) + SourceIndex(0) +2 > skills: { primary: primaryA, secondary: secondaryA } +3 > +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1->Emitted(23, 5) Source(38, 12) + SourceIndex(0) +2 >Emitted(23, 38) Source(38, 64) + SourceIndex(0) +3 >Emitted(23, 40) Source(38, 22) + SourceIndex(0) +4 >Emitted(23, 61) Source(38, 39) + SourceIndex(0) +5 >Emitted(23, 63) Source(38, 41) + SourceIndex(0) +6 >Emitted(23, 88) Source(38, 62) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -772,26 +760,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _j = _h[_g].skills, primaryA = _j.primary, secondaryA = _j.secondary; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > let { -3 > skills -4 > : { -5 > primary: primaryA -6 > , -7 > secondary: secondaryA -1->Emitted(27, 5) Source(41, 6) + SourceIndex(0) -2 >Emitted(27, 9) Source(41, 12) + SourceIndex(0) -3 >Emitted(27, 27) Source(41, 18) + SourceIndex(0) -4 >Emitted(27, 29) Source(41, 22) + SourceIndex(0) -5 >Emitted(27, 50) Source(41, 39) + SourceIndex(0) -6 >Emitted(27, 52) Source(41, 41) + SourceIndex(0) -7 >Emitted(27, 77) Source(41, 62) + SourceIndex(0) +2 > skills: { primary: primaryA, secondary: secondaryA } +3 > +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1->Emitted(27, 5) Source(41, 12) + SourceIndex(0) +2 >Emitted(27, 27) Source(41, 64) + SourceIndex(0) +3 >Emitted(27, 29) Source(41, 22) + SourceIndex(0) +4 >Emitted(27, 50) Source(41, 39) + SourceIndex(0) +5 >Emitted(27, 52) Source(41, 41) + SourceIndex(0) +6 >Emitted(27, 77) Source(41, 62) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -983,26 +968,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _m = _l[_k].skills, primaryA = _m.primary, secondaryA = _m.secondary; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > let { -3 > skills -4 > : { -5 > primary: primaryA -6 > , -7 > secondary: secondaryA -1 >Emitted(32, 5) Source(44, 6) + SourceIndex(0) -2 >Emitted(32, 9) Source(44, 12) + SourceIndex(0) -3 >Emitted(32, 27) Source(44, 18) + SourceIndex(0) -4 >Emitted(32, 29) Source(44, 22) + SourceIndex(0) -5 >Emitted(32, 50) Source(44, 39) + SourceIndex(0) -6 >Emitted(32, 52) Source(44, 41) + SourceIndex(0) -7 >Emitted(32, 77) Source(44, 62) + SourceIndex(0) +2 > skills: { primary: primaryA, secondary: secondaryA } +3 > +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +1 >Emitted(32, 5) Source(44, 12) + SourceIndex(0) +2 >Emitted(32, 27) Source(44, 64) + SourceIndex(0) +3 >Emitted(32, 29) Source(44, 22) + SourceIndex(0) +4 >Emitted(32, 50) Source(44, 39) + SourceIndex(0) +5 >Emitted(32, 52) Source(44, 41) + SourceIndex(0) +6 >Emitted(32, 77) Source(44, 62) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -1081,26 +1063,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _p = robots_2[_o], nameA = _p.name, skillA = _p.skill; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > -3 > let {name: nameA, skill: skillA } -4 > -5 > name: nameA -6 > , -7 > skill: skillA +2 > let {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA 1 >Emitted(36, 5) Source(49, 6) + SourceIndex(0) -2 >Emitted(36, 9) Source(49, 6) + SourceIndex(0) -3 >Emitted(36, 26) Source(49, 39) + SourceIndex(0) -4 >Emitted(36, 28) Source(49, 11) + SourceIndex(0) -5 >Emitted(36, 43) Source(49, 22) + SourceIndex(0) -6 >Emitted(36, 45) Source(49, 24) + SourceIndex(0) -7 >Emitted(36, 62) Source(49, 37) + SourceIndex(0) +2 >Emitted(36, 26) Source(49, 39) + SourceIndex(0) +3 >Emitted(36, 28) Source(49, 11) + SourceIndex(0) +4 >Emitted(36, 43) Source(49, 22) + SourceIndex(0) +5 >Emitted(36, 45) Source(49, 24) + SourceIndex(0) +6 >Emitted(36, 62) Source(49, 37) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1184,26 +1163,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _s = _r[_q], nameA = _s.name, skillA = _s.skill; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let {name: nameA, skill: skillA } -4 > -5 > name: nameA -6 > , -7 > skill: skillA +2 > let {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA 1->Emitted(40, 5) Source(52, 6) + SourceIndex(0) -2 >Emitted(40, 9) Source(52, 6) + SourceIndex(0) -3 >Emitted(40, 20) Source(52, 39) + SourceIndex(0) -4 >Emitted(40, 22) Source(52, 11) + SourceIndex(0) -5 >Emitted(40, 37) Source(52, 22) + SourceIndex(0) -6 >Emitted(40, 39) Source(52, 24) + SourceIndex(0) -7 >Emitted(40, 56) Source(52, 37) + SourceIndex(0) +2 >Emitted(40, 20) Source(52, 39) + SourceIndex(0) +3 >Emitted(40, 22) Source(52, 11) + SourceIndex(0) +4 >Emitted(40, 37) Source(52, 22) + SourceIndex(0) +5 >Emitted(40, 39) Source(52, 24) + SourceIndex(0) +6 >Emitted(40, 56) Source(52, 37) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1340,26 +1316,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _v = _u[_t], nameA = _v.name, skillA = _v.skill; 1 >^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > -3 > let {name: nameA, skill: skillA } -4 > -5 > name: nameA -6 > , -7 > skill: skillA +2 > let {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA 1 >Emitted(44, 5) Source(55, 6) + SourceIndex(0) -2 >Emitted(44, 9) Source(55, 6) + SourceIndex(0) -3 >Emitted(44, 20) Source(55, 39) + SourceIndex(0) -4 >Emitted(44, 22) Source(55, 11) + SourceIndex(0) -5 >Emitted(44, 37) Source(55, 22) + SourceIndex(0) -6 >Emitted(44, 39) Source(55, 24) + SourceIndex(0) -7 >Emitted(44, 56) Source(55, 37) + SourceIndex(0) +2 >Emitted(44, 20) Source(55, 39) + SourceIndex(0) +3 >Emitted(44, 22) Source(55, 11) + SourceIndex(0) +4 >Emitted(44, 37) Source(55, 22) + SourceIndex(0) +5 >Emitted(44, 39) Source(55, 24) + SourceIndex(0) +6 >Emitted(44, 56) Source(55, 37) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1437,38 +1410,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _x = multiRobots_2[_w], nameA = _x.name, _y = _x.skills, primaryA = _y.primary, secondaryA = _y.secondary; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } -4 > -5 > name: nameA -6 > , -7 > skills -8 > : { -9 > primary: primaryA -10> , -11> secondary: secondaryA +2 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills: { primary: primaryA, secondary: secondaryA } +7 > +8 > primary: primaryA +9 > , +10> secondary: secondaryA 1->Emitted(48, 5) Source(58, 6) + SourceIndex(0) -2 >Emitted(48, 9) Source(58, 6) + SourceIndex(0) -3 >Emitted(48, 31) Source(58, 78) + SourceIndex(0) -4 >Emitted(48, 33) Source(58, 11) + SourceIndex(0) -5 >Emitted(48, 48) Source(58, 22) + SourceIndex(0) -6 >Emitted(48, 50) Source(58, 24) + SourceIndex(0) -7 >Emitted(48, 64) Source(58, 30) + SourceIndex(0) -8 >Emitted(48, 66) Source(58, 34) + SourceIndex(0) -9 >Emitted(48, 87) Source(58, 51) + SourceIndex(0) -10>Emitted(48, 89) Source(58, 53) + SourceIndex(0) -11>Emitted(48, 114) Source(58, 74) + SourceIndex(0) +2 >Emitted(48, 31) Source(58, 78) + SourceIndex(0) +3 >Emitted(48, 33) Source(58, 11) + SourceIndex(0) +4 >Emitted(48, 48) Source(58, 22) + SourceIndex(0) +5 >Emitted(48, 50) Source(58, 24) + SourceIndex(0) +6 >Emitted(48, 64) Source(58, 76) + SourceIndex(0) +7 >Emitted(48, 66) Source(58, 34) + SourceIndex(0) +8 >Emitted(48, 87) Source(58, 51) + SourceIndex(0) +9 >Emitted(48, 89) Source(58, 53) + SourceIndex(0) +10>Emitted(48, 114) Source(58, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1552,38 +1522,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _1 = _0[_z], nameA = _1.name, _2 = _1.skills, primaryA = _2.primary, secondaryA = _2.secondary; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } -4 > -5 > name: nameA -6 > , -7 > skills -8 > : { -9 > primary: primaryA -10> , -11> secondary: secondaryA +2 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills: { primary: primaryA, secondary: secondaryA } +7 > +8 > primary: primaryA +9 > , +10> secondary: secondaryA 1->Emitted(52, 5) Source(61, 6) + SourceIndex(0) -2 >Emitted(52, 9) Source(61, 6) + SourceIndex(0) -3 >Emitted(52, 20) Source(61, 78) + SourceIndex(0) -4 >Emitted(52, 22) Source(61, 11) + SourceIndex(0) -5 >Emitted(52, 37) Source(61, 22) + SourceIndex(0) -6 >Emitted(52, 39) Source(61, 24) + SourceIndex(0) -7 >Emitted(52, 53) Source(61, 30) + SourceIndex(0) -8 >Emitted(52, 55) Source(61, 34) + SourceIndex(0) -9 >Emitted(52, 76) Source(61, 51) + SourceIndex(0) -10>Emitted(52, 78) Source(61, 53) + SourceIndex(0) -11>Emitted(52, 103) Source(61, 74) + SourceIndex(0) +2 >Emitted(52, 20) Source(61, 78) + SourceIndex(0) +3 >Emitted(52, 22) Source(61, 11) + SourceIndex(0) +4 >Emitted(52, 37) Source(61, 22) + SourceIndex(0) +5 >Emitted(52, 39) Source(61, 24) + SourceIndex(0) +6 >Emitted(52, 53) Source(61, 76) + SourceIndex(0) +7 >Emitted(52, 55) Source(61, 34) + SourceIndex(0) +8 >Emitted(52, 76) Source(61, 51) + SourceIndex(0) +9 >Emitted(52, 78) Source(61, 53) + SourceIndex(0) +10>Emitted(52, 103) Source(61, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1776,38 +1743,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern.ts --- >>> var _5 = _4[_3], nameA = _5.name, _6 = _5.skills, primaryA = _6.primary, secondaryA = _6.secondary; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } -4 > -5 > name: nameA -6 > , -7 > skills -8 > : { -9 > primary: primaryA -10> , -11> secondary: secondaryA +2 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills: { primary: primaryA, secondary: secondaryA } +7 > +8 > primary: primaryA +9 > , +10> secondary: secondaryA 1->Emitted(57, 5) Source(64, 6) + SourceIndex(0) -2 >Emitted(57, 9) Source(64, 6) + SourceIndex(0) -3 >Emitted(57, 20) Source(64, 78) + SourceIndex(0) -4 >Emitted(57, 22) Source(64, 11) + SourceIndex(0) -5 >Emitted(57, 37) Source(64, 22) + SourceIndex(0) -6 >Emitted(57, 39) Source(64, 24) + SourceIndex(0) -7 >Emitted(57, 53) Source(64, 30) + SourceIndex(0) -8 >Emitted(57, 55) Source(64, 34) + SourceIndex(0) -9 >Emitted(57, 76) Source(64, 51) + SourceIndex(0) -10>Emitted(57, 78) Source(64, 53) + SourceIndex(0) -11>Emitted(57, 103) Source(64, 74) + SourceIndex(0) +2 >Emitted(57, 20) Source(64, 78) + SourceIndex(0) +3 >Emitted(57, 22) Source(64, 11) + SourceIndex(0) +4 >Emitted(57, 37) Source(64, 22) + SourceIndex(0) +5 >Emitted(57, 39) Source(64, 24) + SourceIndex(0) +6 >Emitted(57, 53) Source(64, 76) + SourceIndex(0) +7 >Emitted(57, 55) Source(64, 34) + SourceIndex(0) +8 >Emitted(57, 76) Source(64, 51) + SourceIndex(0) +9 >Emitted(57, 78) Source(64, 53) + SourceIndex(0) +10>Emitted(57, 103) Source(64, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map index 77e719df043..2fb57235dec 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"AAgBA,IAAI,MAAM,GAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AACnG,IAAI,WAAW,GAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAChG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE/E;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC;AAED,IAAI,KAAa,EAAE,QAAgB,EAAE,UAAkB,EAAE,CAAS,EAAE,MAAc,CAAC;AACnF,IAAI,IAAY,EAAE,OAAe,EAAE,SAAiB,EAAE,KAAa,CAAC;AAEpE,GAAG,CAAC,CAAmB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAzB,yBAAc;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAmB,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAA9B,mBAAc;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAmB,UAA4E,EAA5E,MAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAA5E,cAA4E,EAA5E,IAA4E,CAAC;IAA/F,mBAAc;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAA6D,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,CAAC;IAAtE,6BAAM,EAAI,qBAAiB,EAAE,yBAAqB;IACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAA6D,UAAgB,EAAhB,KAAA,cAAc,EAAE,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAA3E,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB;IACrD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAA6D,UACa,EADb,MAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IACjI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EADb,cACa,EADb,IACa,CAAC;IADxE,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB;IAErD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAAY,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAlB,wBAAO;IACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAY,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAAvB,kBAAO;IACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAY,UAA4E,EAA5E,MAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAA5E,cAA4E,EAA5E,IAA4E,CAAC;IAAxF,kBAAO;IACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAuC,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,CAAC;IAAhD,6BAAM,EAAI,oBAAO,EAAE,wBAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAAuC,UAAgB,EAAhB,KAAA,cAAc,EAAE,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAArD,kBAAM,EAAI,oBAAO,EAAE,wBAAS;IAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAAuC,UACmC,EADnC,MAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAC3G,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EADnC,cACmC,EADnC,IACmC,CAAC;IADxE,kBAAM,EAAI,oBAAO,EAAE,wBAAS;IAE/B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AAGD,GAAG,CAAC,CAAkC,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAxC,iBAA6B,EAA5B,eAAW,EAAE,iBAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAkC,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAA7C,WAA6B,EAA5B,eAAW,EAAE,iBAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAkC,UAA4E,EAA5E,MAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAA5E,cAA4E,EAA5E,IAA4E,CAAC;IAA9G,WAA6B,EAA5B,eAAW,EAAE,iBAAa;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAyE,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,CAAC;IAApF,uBAAoE,EAAnE,gBAAW,EAAE,gBAAM,EAAI,sBAAiB,EAAE,0BAAqB;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAyE,WAAgB,EAAhB,MAAA,cAAc,EAAE,EAAhB,gBAAgB,EAAhB,KAAgB,CAAC;IAAzF,cAAoE,EAAnE,gBAAW,EAAE,gBAAM,EAAI,sBAAiB,EAAE,0BAAqB;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAyE,WACC,EADD,OAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAC7I,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EADD,gBACC,EADD,KACC,CAAC;IAD1E,cAAoE,EAAnE,gBAAW,EAAE,gBAAM,EAAI,sBAAiB,EAAE,0BAAqB;IAEjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAmB,WAAM,EAAN,iBAAM,EAAN,qBAAM,EAAN,KAAM,CAAC;IAAzB,mBAAc,EAAb,eAAI,EAAE,iBAAK;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAmB,WAAW,EAAX,MAAA,SAAS,EAAE,EAAX,gBAAW,EAAX,KAAW,CAAC;IAA9B,cAAc,EAAb,eAAI,EAAE,iBAAK;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAmB,WAA4E,EAA5E,OAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAA5E,gBAA4E,EAA5E,KAA4E,CAAC;IAA/F,cAAc,EAAb,eAAI,EAAE,iBAAK;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAA4C,WAAW,EAAX,2BAAW,EAAX,0BAAW,EAAX,KAAW,CAAC;IAAvD,wBAAuC,EAAtC,eAAI,EAAE,gBAAM,EAAI,qBAAO,EAAE,yBAAS;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAA4C,WAAgB,EAAhB,MAAA,cAAc,EAAE,EAAhB,gBAAgB,EAAhB,KAAgB,CAAC;IAA5D,cAAuC,EAAtC,eAAI,EAAE,gBAAM,EAAI,qBAAO,EAAE,yBAAS;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAA4C,WAC8B,EAD9B,OAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAChH,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EAD9B,gBAC8B,EAD9B,KAC8B,CAAC;IAD1E,cAAuC,EAAtC,eAAI,EAAE,gBAAM,EAAI,qBAAO,EAAE,yBAAS;IAEpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt index a3d11d0d43c..bde5b81177d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt @@ -742,13 +742,13 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > skills -3 > : { +2 > { primary: primaryA, secondary: secondaryA } +3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA -1->Emitted(25, 5) Source(41, 8) + SourceIndex(0) -2 >Emitted(25, 34) Source(41, 14) + SourceIndex(0) +1->Emitted(25, 5) Source(41, 16) + SourceIndex(0) +2 >Emitted(25, 34) Source(41, 60) + SourceIndex(0) 3 >Emitted(25, 36) Source(41, 18) + SourceIndex(0) 4 >Emitted(25, 57) Source(41, 35) + SourceIndex(0) 5 >Emitted(25, 59) Source(41, 37) + SourceIndex(0) @@ -842,13 +842,13 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > skills -3 > : { +2 > { primary: primaryA, secondary: secondaryA } +3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA -1->Emitted(29, 5) Source(44, 8) + SourceIndex(0) -2 >Emitted(29, 23) Source(44, 14) + SourceIndex(0) +1->Emitted(29, 5) Source(44, 16) + SourceIndex(0) +2 >Emitted(29, 23) Source(44, 60) + SourceIndex(0) 3 >Emitted(29, 25) Source(44, 18) + SourceIndex(0) 4 >Emitted(29, 46) Source(44, 35) + SourceIndex(0) 5 >Emitted(29, 48) Source(44, 37) + SourceIndex(0) @@ -1050,13 +1050,13 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > skills -3 > : { +2 > { primary: primaryA, secondary: secondaryA } +3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA -1 >Emitted(34, 5) Source(47, 8) + SourceIndex(0) -2 >Emitted(34, 23) Source(47, 14) + SourceIndex(0) +1 >Emitted(34, 5) Source(47, 16) + SourceIndex(0) +2 >Emitted(34, 23) Source(47, 60) + SourceIndex(0) 3 >Emitted(34, 25) Source(47, 18) + SourceIndex(0) 4 >Emitted(34, 46) Source(47, 35) + SourceIndex(0) 5 >Emitted(34, 48) Source(47, 37) + SourceIndex(0) @@ -1456,13 +1456,13 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > skills -3 > : { +2 > { primary, secondary } +3 > 4 > primary 5 > , 6 > secondary -1->Emitted(50, 5) Source(60, 8) + SourceIndex(0) -2 >Emitted(50, 34) Source(60, 14) + SourceIndex(0) +1->Emitted(50, 5) Source(60, 16) + SourceIndex(0) +2 >Emitted(50, 34) Source(60, 38) + SourceIndex(0) 3 >Emitted(50, 36) Source(60, 18) + SourceIndex(0) 4 >Emitted(50, 56) Source(60, 25) + SourceIndex(0) 5 >Emitted(50, 58) Source(60, 27) + SourceIndex(0) @@ -1556,13 +1556,13 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > skills -3 > : { +2 > { primary, secondary } +3 > 4 > primary 5 > , 6 > secondary -1->Emitted(54, 5) Source(63, 8) + SourceIndex(0) -2 >Emitted(54, 23) Source(63, 14) + SourceIndex(0) +1->Emitted(54, 5) Source(63, 16) + SourceIndex(0) +2 >Emitted(54, 23) Source(63, 38) + SourceIndex(0) 3 >Emitted(54, 25) Source(63, 18) + SourceIndex(0) 4 >Emitted(54, 45) Source(63, 25) + SourceIndex(0) 5 >Emitted(54, 47) Source(63, 27) + SourceIndex(0) @@ -1764,13 +1764,13 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > skills -3 > : { +2 > { primary, secondary } +3 > 4 > primary 5 > , 6 > secondary -1 >Emitted(59, 5) Source(66, 8) + SourceIndex(0) -2 >Emitted(59, 23) Source(66, 14) + SourceIndex(0) +1 >Emitted(59, 5) Source(66, 16) + SourceIndex(0) +2 >Emitted(59, 23) Source(66, 38) + SourceIndex(0) 3 >Emitted(59, 25) Source(66, 18) + SourceIndex(0) 4 >Emitted(59, 45) Source(66, 25) + SourceIndex(0) 5 >Emitted(59, 47) Source(66, 27) + SourceIndex(0) @@ -2213,9 +2213,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } 3 > 4 > name: nameA -5 > , -6 > skills -7 > : { +5 > , skills: +6 > { primary: primaryA, secondary: secondaryA } +7 > 8 > primary: primaryA 9 > , 10> secondary: secondaryA @@ -2223,8 +2223,8 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 >Emitted(75, 28) Source(81, 74) + SourceIndex(0) 3 >Emitted(75, 30) Source(81, 7) + SourceIndex(0) 4 >Emitted(75, 46) Source(81, 18) + SourceIndex(0) -5 >Emitted(75, 48) Source(81, 20) + SourceIndex(0) -6 >Emitted(75, 64) Source(81, 26) + SourceIndex(0) +5 >Emitted(75, 48) Source(81, 28) + SourceIndex(0) +6 >Emitted(75, 64) Source(81, 72) + SourceIndex(0) 7 >Emitted(75, 66) Source(81, 30) + SourceIndex(0) 8 >Emitted(75, 88) Source(81, 47) + SourceIndex(0) 9 >Emitted(75, 90) Source(81, 49) + SourceIndex(0) @@ -2325,9 +2325,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } 3 > 4 > name: nameA -5 > , -6 > skills -7 > : { +5 > , skills: +6 > { primary: primaryA, secondary: secondaryA } +7 > 8 > primary: primaryA 9 > , 10> secondary: secondaryA @@ -2335,8 +2335,8 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 >Emitted(79, 19) Source(84, 74) + SourceIndex(0) 3 >Emitted(79, 21) Source(84, 7) + SourceIndex(0) 4 >Emitted(79, 37) Source(84, 18) + SourceIndex(0) -5 >Emitted(79, 39) Source(84, 20) + SourceIndex(0) -6 >Emitted(79, 55) Source(84, 26) + SourceIndex(0) +5 >Emitted(79, 39) Source(84, 28) + SourceIndex(0) +6 >Emitted(79, 55) Source(84, 72) + SourceIndex(0) 7 >Emitted(79, 57) Source(84, 30) + SourceIndex(0) 8 >Emitted(79, 79) Source(84, 47) + SourceIndex(0) 9 >Emitted(79, 81) Source(84, 49) + SourceIndex(0) @@ -2546,9 +2546,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } 3 > 4 > name: nameA -5 > , -6 > skills -7 > : { +5 > , skills: +6 > { primary: primaryA, secondary: secondaryA } +7 > 8 > primary: primaryA 9 > , 10> secondary: secondaryA @@ -2556,8 +2556,8 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 >Emitted(84, 19) Source(87, 74) + SourceIndex(0) 3 >Emitted(84, 21) Source(87, 7) + SourceIndex(0) 4 >Emitted(84, 37) Source(87, 18) + SourceIndex(0) -5 >Emitted(84, 39) Source(87, 20) + SourceIndex(0) -6 >Emitted(84, 55) Source(87, 26) + SourceIndex(0) +5 >Emitted(84, 39) Source(87, 28) + SourceIndex(0) +6 >Emitted(84, 55) Source(87, 72) + SourceIndex(0) 7 >Emitted(84, 57) Source(87, 30) + SourceIndex(0) 8 >Emitted(84, 79) Source(87, 47) + SourceIndex(0) 9 >Emitted(84, 81) Source(87, 49) + SourceIndex(0) @@ -2998,9 +2998,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > {name, skills: { primary, secondary } } 3 > 4 > name -5 > , -6 > skills -7 > : { +5 > , skills: +6 > { primary, secondary } +7 > 8 > primary 9 > , 10> secondary @@ -3008,8 +3008,8 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 >Emitted(100, 29) Source(100, 45) + SourceIndex(0) 3 >Emitted(100, 31) Source(100, 7) + SourceIndex(0) 4 >Emitted(100, 46) Source(100, 11) + SourceIndex(0) -5 >Emitted(100, 48) Source(100, 13) + SourceIndex(0) -6 >Emitted(100, 64) Source(100, 19) + SourceIndex(0) +5 >Emitted(100, 48) Source(100, 21) + SourceIndex(0) +6 >Emitted(100, 64) Source(100, 43) + SourceIndex(0) 7 >Emitted(100, 66) Source(100, 23) + SourceIndex(0) 8 >Emitted(100, 87) Source(100, 30) + SourceIndex(0) 9 >Emitted(100, 89) Source(100, 32) + SourceIndex(0) @@ -3110,9 +3110,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > {name, skills: { primary, secondary } } 3 > 4 > name -5 > , -6 > skills -7 > : { +5 > , skills: +6 > { primary, secondary } +7 > 8 > primary 9 > , 10> secondary @@ -3120,8 +3120,8 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 >Emitted(104, 19) Source(103, 45) + SourceIndex(0) 3 >Emitted(104, 21) Source(103, 7) + SourceIndex(0) 4 >Emitted(104, 36) Source(103, 11) + SourceIndex(0) -5 >Emitted(104, 38) Source(103, 13) + SourceIndex(0) -6 >Emitted(104, 54) Source(103, 19) + SourceIndex(0) +5 >Emitted(104, 38) Source(103, 21) + SourceIndex(0) +6 >Emitted(104, 54) Source(103, 43) + SourceIndex(0) 7 >Emitted(104, 56) Source(103, 23) + SourceIndex(0) 8 >Emitted(104, 77) Source(103, 30) + SourceIndex(0) 9 >Emitted(104, 79) Source(103, 32) + SourceIndex(0) @@ -3331,9 +3331,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > {name, skills: { primary, secondary } } 3 > 4 > name -5 > , -6 > skills -7 > : { +5 > , skills: +6 > { primary, secondary } +7 > 8 > primary 9 > , 10> secondary @@ -3341,8 +3341,8 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 >Emitted(109, 19) Source(106, 45) + SourceIndex(0) 3 >Emitted(109, 21) Source(106, 7) + SourceIndex(0) 4 >Emitted(109, 36) Source(106, 11) + SourceIndex(0) -5 >Emitted(109, 38) Source(106, 13) + SourceIndex(0) -6 >Emitted(109, 54) Source(106, 19) + SourceIndex(0) +5 >Emitted(109, 38) Source(106, 21) + SourceIndex(0) +6 >Emitted(109, 54) Source(106, 43) + SourceIndex(0) 7 >Emitted(109, 56) Source(106, 23) + SourceIndex(0) 8 >Emitted(109, 77) Source(106, 30) + SourceIndex(0) 9 >Emitted(109, 79) Source(106, 32) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map index 7bc982e7e46..b05ceecbc4a 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AAExF,cAAc,EAA+D;QAA7D,cAAM,EAAI,qBAAiB,EAAE,yBAAqB;IAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,cAAc,EAA4E;QAA1E,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB;IAC3E,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AACD,cAAc,EAAiB;QAAjB,kBAAiB;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringParameterNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AAExF,cAAc,EAA+D;QAA7D,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB;IAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,cAAc,EAA4E;QAA1E,eAAW,EAAE,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB;IAC3E,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AACD,cAAc,EAAiB;QAAf,kBAAM;IAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt index 720057d3f79..8e39fd676d0 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPattern.sourcemap.txt @@ -108,13 +108,13 @@ sourceFile:sourceMapValidationDestructuringParameterNestedObjectBindingPattern.t 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > skills -3 > : { +2 > skills: { primary: primaryA, secondary: secondaryA } +3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA 1->Emitted(3, 9) Source(13, 17) + SourceIndex(0) -2 >Emitted(3, 23) Source(13, 23) + SourceIndex(0) +2 >Emitted(3, 23) Source(13, 69) + SourceIndex(0) 3 >Emitted(3, 25) Source(13, 27) + SourceIndex(0) 4 >Emitted(3, 46) Source(13, 44) + SourceIndex(0) 5 >Emitted(3, 48) Source(13, 46) + SourceIndex(0) @@ -182,15 +182,15 @@ sourceFile:sourceMapValidationDestructuringParameterNestedObjectBindingPattern.t 1-> 2 > name: nameC 3 > , -4 > skills -5 > : { +4 > skills: { primary: primaryB, secondary: secondaryB } +5 > 6 > primary: primaryB 7 > , 8 > secondary: secondaryB 1->Emitted(7, 9) Source(16, 17) + SourceIndex(0) 2 >Emitted(7, 24) Source(16, 28) + SourceIndex(0) 3 >Emitted(7, 26) Source(16, 30) + SourceIndex(0) -4 >Emitted(7, 40) Source(16, 36) + SourceIndex(0) +4 >Emitted(7, 40) Source(16, 82) + SourceIndex(0) 5 >Emitted(7, 42) Source(16, 40) + SourceIndex(0) 6 >Emitted(7, 63) Source(16, 57) + SourceIndex(0) 7 >Emitted(7, 65) Source(16, 59) + SourceIndex(0) @@ -251,9 +251,9 @@ sourceFile:sourceMapValidationDestructuringParameterNestedObjectBindingPattern.t 2 > ^^^^^^^^^^^^^^^^^^ 3 > ^^^^^^^-> 1-> -2 > { skills }: Robot -1->Emitted(11, 9) Source(19, 15) + SourceIndex(0) -2 >Emitted(11, 27) Source(19, 32) + SourceIndex(0) +2 > skills +1->Emitted(11, 9) Source(19, 17) + SourceIndex(0) +2 >Emitted(11, 27) Source(19, 23) + SourceIndex(0) --- >>> console.log(skills.primary); 1->^^^^ @@ -266,7 +266,7 @@ sourceFile:sourceMapValidationDestructuringParameterNestedObjectBindingPattern.t 8 > ^^^^^^^ 9 > ^ 10> ^ -1->) { +1-> }: Robot) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map index 9290f57f89d..adc7a7dbb90 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringParameterObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringParameterObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterObjectBindingPattern.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAEvD,cAAc,EAAsB;QAAtB,eAAsB;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAqC;QAAnC,eAAW,EAAE,iBAAa;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAe;QAAf,cAAe;IACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringParameterObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterObjectBindingPattern.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAEvD,cAAc,EAAsB;QAApB,eAAW;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAqC;QAAnC,eAAW,EAAE,iBAAa;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAe;QAAb,cAAI;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt index 63eea72d8a0..ee826647f54 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPattern.sourcemap.txt @@ -100,9 +100,9 @@ sourceFile:sourceMapValidationDestructuringParameterObjectBindingPattern.ts 2 > ^^^^^^^^^^^^^^^ 3 > ^-> 1-> -2 > { name: nameA }: Robot -1->Emitted(4, 9) Source(11, 15) + SourceIndex(0) -2 >Emitted(4, 24) Source(11, 37) + SourceIndex(0) +2 > name: nameA +1->Emitted(4, 9) Source(11, 17) + SourceIndex(0) +2 >Emitted(4, 24) Source(11, 28) + SourceIndex(0) --- >>> console.log(nameA); 1->^^^^ @@ -113,7 +113,7 @@ sourceFile:sourceMapValidationDestructuringParameterObjectBindingPattern.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1->) { +1-> }: Robot) { > 2 > console 3 > . @@ -223,9 +223,9 @@ sourceFile:sourceMapValidationDestructuringParameterObjectBindingPattern.ts 2 > ^^^^^^^^^^^^^^ 3 > ^-> 1-> -2 > { name }: Robot -1->Emitted(12, 9) Source(17, 15) + SourceIndex(0) -2 >Emitted(12, 23) Source(17, 30) + SourceIndex(0) +2 > name +1->Emitted(12, 9) Source(17, 17) + SourceIndex(0) +2 >Emitted(12, 23) Source(17, 21) + SourceIndex(0) --- >>> console.log(name); 1->^^^^ @@ -236,7 +236,7 @@ sourceFile:sourceMapValidationDestructuringParameterObjectBindingPattern.ts 6 > ^^^^ 7 > ^ 8 > ^ -1->) { +1-> }: Robot) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map index db7b7d0b88f..246a2da30a4 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringParametertArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3C,cAAc,EAAgB;QAAb,aAAK;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,cAAc,EAAgB;QAAhB,eAAgB;IAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,cAAc,EAAkC;QAAjC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAgC;QAA/B,gBAAQ,EAAE,wBAAa;IAClC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3C,cAAc,EAAgB;QAAb,aAAK;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,cAAc,EAAgB;QAAf,eAAO;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,cAAc,EAAkC;QAAjC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAgC;QAA/B,gBAAQ,EAAE,wBAAa;IAClC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt index df90ae6abb4..098cb5058a1 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.sourcemap.txt @@ -129,9 +129,9 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern.ts 2 > ^^^^^^^^^^^^^^^ 3 > ^^^-> 1-> -2 > [numberB]: Robot -1->Emitted(7, 9) Source(11, 15) + SourceIndex(0) -2 >Emitted(7, 24) Source(11, 31) + SourceIndex(0) +2 > numberB +1->Emitted(7, 9) Source(11, 16) + SourceIndex(0) +2 >Emitted(7, 24) Source(11, 23) + SourceIndex(0) --- >>> console.log(numberB); 1->^^^^ @@ -142,7 +142,7 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1->) { +1->]: Robot) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map index a8a5715add1..b242ccd9114 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringParametertArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,cAAc,EAAiB;QAAd,cAAM;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAe;QAAf,cAAe;IACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAiD;QAAhD,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA2B;QAA3B,6BAA2B;IACrC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,cAAc,EAAiB;QAAd,cAAM;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAe;QAAd,cAAM;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAAiD;QAAhD,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IAClD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA2B;QAA1B,6BAAkB;IAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt index eb37cd692b3..491e5025ecd 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.sourcemap.txt @@ -135,9 +135,9 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts 2 > ^^^^^^^^^^^^^^ 3 > ^^^-> 1-> -2 > [nameMB]: Robot -1->Emitted(7, 9) Source(11, 15) + SourceIndex(0) -2 >Emitted(7, 23) Source(11, 30) + SourceIndex(0) +2 > nameMB +1->Emitted(7, 9) Source(11, 16) + SourceIndex(0) +2 >Emitted(7, 23) Source(11, 22) + SourceIndex(0) --- >>> console.log(nameMB); 1->^^^^ @@ -148,7 +148,7 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts 6 > ^^^^^^ 7 > ^ 8 > ^ -1->) { +1->]: Robot) { > 2 > console 3 > . @@ -271,9 +271,9 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts 1->^^^^^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [...multiRobotAInfo]: Robot -1->Emitted(15, 9) Source(19, 15) + SourceIndex(0) -2 >Emitted(15, 38) Source(19, 42) + SourceIndex(0) +2 > ...multiRobotAInfo +1->Emitted(15, 9) Source(19, 16) + SourceIndex(0) +2 >Emitted(15, 38) Source(19, 34) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -284,7 +284,7 @@ sourceFile:sourceMapValidationDestructuringParametertArrayBindingPattern2.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 >) { +1 >]: Robot) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map index b7f0e37c778..782a7682168 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatement.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAI,mBAAwB,CAAC;AAC7B,IAAM,mBAAW,EAAE,qBAAa,CAAY;AAC5C,IAAI,8CAA0E,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrD,uBAAW,CAAY;AACvB,uBAAW,EAAE,qBAAa,CAAY;AACxC,kDAA0E,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt index f69d311e90d..b58075c8b70 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt @@ -129,68 +129,59 @@ sourceFile:sourceMapValidationDestructuringVariableStatement.ts --- >>>var nameA = robotA.name; 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > - > -2 >var -3 > { name: nameA } = robotA -4 > ; -1 >Emitted(4, 1) Source(11, 1) + SourceIndex(0) -2 >Emitted(4, 5) Source(11, 5) + SourceIndex(0) -3 >Emitted(4, 24) Source(11, 29) + SourceIndex(0) -4 >Emitted(4, 25) Source(11, 30) + SourceIndex(0) + >var { +2 >name: nameA +3 > } = robotA; +1 >Emitted(4, 1) Source(11, 7) + SourceIndex(0) +2 >Emitted(4, 24) Source(11, 18) + SourceIndex(0) +3 >Emitted(4, 25) Source(11, 30) + SourceIndex(0) --- >>>var nameB = robotB.name, skillB = robotB.skill; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1-> - > -2 >var { -3 > name: nameB -4 > , -5 > skill: skillB -6 > } = robotB; -1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) -2 >Emitted(5, 5) Source(12, 7) + SourceIndex(0) -3 >Emitted(5, 24) Source(12, 18) + SourceIndex(0) -4 >Emitted(5, 26) Source(12, 20) + SourceIndex(0) -5 >Emitted(5, 47) Source(12, 33) + SourceIndex(0) -6 >Emitted(5, 48) Source(12, 45) + SourceIndex(0) + >var { +2 >name: nameB +3 > , +4 > skill: skillB +5 > } = robotB; +1->Emitted(5, 1) Source(12, 7) + SourceIndex(0) +2 >Emitted(5, 24) Source(12, 18) + SourceIndex(0) +3 >Emitted(5, 26) Source(12, 20) + SourceIndex(0) +4 >Emitted(5, 47) Source(12, 33) + SourceIndex(0) +5 >Emitted(5, 48) Source(12, 45) + SourceIndex(0) --- >>>var _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^ -8 > ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^ 1-> - > -2 >var -3 > { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } -4 > -5 > name: nameC -6 > , -7 > skill: skillC -8 > } = { name: "Edger", skill: "cutting edges" }; -1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) -2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) -3 >Emitted(6, 51) Source(13, 79) + SourceIndex(0) -4 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) -5 >Emitted(6, 68) Source(13, 18) + SourceIndex(0) -6 >Emitted(6, 70) Source(13, 20) + SourceIndex(0) -7 >Emitted(6, 87) Source(13, 33) + SourceIndex(0) -8 >Emitted(6, 88) Source(13, 80) + SourceIndex(0) + >var +2 >{ name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } +3 > +4 > name: nameC +5 > , +6 > skill: skillC +7 > } = { name: "Edger", skill: "cutting edges" }; +1->Emitted(6, 1) Source(13, 5) + SourceIndex(0) +2 >Emitted(6, 51) Source(13, 79) + SourceIndex(0) +3 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) +4 >Emitted(6, 68) Source(13, 18) + SourceIndex(0) +5 >Emitted(6, 70) Source(13, 20) + SourceIndex(0) +6 >Emitted(6, 87) Source(13, 33) + SourceIndex(0) +7 >Emitted(6, 88) Source(13, 80) + SourceIndex(0) --- >>>if (nameA == nameB) { 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map index 231f7fa8435..3db6913ce13 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAG/C,IAAO,iBAAK,CAAW;AACvB,IAAI,mBAAkB,CAAC;AACvB,IAAK,oBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEzC,IAAI,6CAA4C,CAAC;AACjD,IAAI,oCAA0D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE/D,IAAK,oBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAGxC,qBAAK,CAAW;AAClB,uBAAO,CAAW;AAClB,wBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEpC,iDAAQ,CAAoC;AAC7C,wCAA0D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE1D,wBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt index c1fd17ad142..6aa11106d90 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt @@ -92,136 +92,118 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern. --- >>>var nameA = robotA[1]; 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^-> 1 > > > - > -2 >let [, -3 > nameA -4 > ] = robotA; -1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(9, 8) + SourceIndex(0) -3 >Emitted(3, 22) Source(9, 13) + SourceIndex(0) -4 >Emitted(3, 23) Source(9, 24) + SourceIndex(0) + >let [, +2 >nameA +3 > ] = robotA; +1 >Emitted(3, 1) Source(9, 8) + SourceIndex(0) +2 >Emitted(3, 22) Source(9, 13) + SourceIndex(0) +3 >Emitted(3, 23) Source(9, 24) + SourceIndex(0) --- >>>var numberB = robotB[0]; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1-> - > -2 >let -3 > [numberB] = robotB -4 > ; -1->Emitted(4, 1) Source(10, 1) + SourceIndex(0) -2 >Emitted(4, 5) Source(10, 5) + SourceIndex(0) -3 >Emitted(4, 24) Source(10, 23) + SourceIndex(0) -4 >Emitted(4, 25) Source(10, 24) + SourceIndex(0) + >let [ +2 >numberB +3 > ] = robotB; +1->Emitted(4, 1) Source(10, 6) + SourceIndex(0) +2 >Emitted(4, 24) Source(10, 13) + SourceIndex(0) +3 >Emitted(4, 25) Source(10, 24) + SourceIndex(0) --- >>>var numberA2 = robotA[0], nameA2 = robotA[1], skillA2 = robotA[2]; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^ -8 > ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^ 1-> - > -2 >let [ -3 > numberA2 -4 > , -5 > nameA2 -6 > , -7 > skillA2 -8 > ] = robotA; -1->Emitted(5, 1) Source(11, 1) + SourceIndex(0) -2 >Emitted(5, 5) Source(11, 6) + SourceIndex(0) -3 >Emitted(5, 25) Source(11, 14) + SourceIndex(0) -4 >Emitted(5, 27) Source(11, 16) + SourceIndex(0) -5 >Emitted(5, 45) Source(11, 22) + SourceIndex(0) -6 >Emitted(5, 47) Source(11, 24) + SourceIndex(0) -7 >Emitted(5, 66) Source(11, 31) + SourceIndex(0) -8 >Emitted(5, 67) Source(11, 42) + SourceIndex(0) + >let [ +2 >numberA2 +3 > , +4 > nameA2 +5 > , +6 > skillA2 +7 > ] = robotA; +1->Emitted(5, 1) Source(11, 6) + SourceIndex(0) +2 >Emitted(5, 25) Source(11, 14) + SourceIndex(0) +3 >Emitted(5, 27) Source(11, 16) + SourceIndex(0) +4 >Emitted(5, 45) Source(11, 22) + SourceIndex(0) +5 >Emitted(5, 47) Source(11, 24) + SourceIndex(0) +6 >Emitted(5, 66) Source(11, 31) + SourceIndex(0) +7 >Emitted(5, 67) Source(11, 42) + SourceIndex(0) --- >>>var numberC2 = [3, "edging", "Trimming edges"][0]; 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > > - > -2 >let -3 > [numberC2] = [3, "edging", "Trimming edges"] -4 > ; -1 >Emitted(6, 1) Source(13, 1) + SourceIndex(0) -2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) -3 >Emitted(6, 50) Source(13, 49) + SourceIndex(0) -4 >Emitted(6, 51) Source(13, 50) + SourceIndex(0) + >let [ +2 >numberC2 +3 > ] = [3, "edging", "Trimming edges"]; +1 >Emitted(6, 1) Source(13, 6) + SourceIndex(0) +2 >Emitted(6, 50) Source(13, 14) + SourceIndex(0) +3 >Emitted(6, 51) Source(13, 50) + SourceIndex(0) --- >>>var _a = [3, "edging", "Trimming edges"], numberC = _a[0], nameC = _a[1], skillC = _a[2]; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^ 1-> - > -2 >let -3 > [numberC, nameC, skillC] = [3, "edging", "Trimming edges"] -4 > -5 > numberC -6 > , -7 > nameC -8 > , -9 > skillC -10> ] = [3, "edging", "Trimming edges"]; -1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) -2 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) -3 >Emitted(7, 41) Source(14, 63) + SourceIndex(0) -4 >Emitted(7, 43) Source(14, 6) + SourceIndex(0) -5 >Emitted(7, 58) Source(14, 13) + SourceIndex(0) -6 >Emitted(7, 60) Source(14, 15) + SourceIndex(0) -7 >Emitted(7, 73) Source(14, 20) + SourceIndex(0) -8 >Emitted(7, 75) Source(14, 22) + SourceIndex(0) -9 >Emitted(7, 89) Source(14, 28) + SourceIndex(0) -10>Emitted(7, 90) Source(14, 64) + SourceIndex(0) + >let +2 >[numberC, nameC, skillC] = [3, "edging", "Trimming edges"] +3 > +4 > numberC +5 > , +6 > nameC +7 > , +8 > skillC +9 > ] = [3, "edging", "Trimming edges"]; +1->Emitted(7, 1) Source(14, 5) + SourceIndex(0) +2 >Emitted(7, 41) Source(14, 63) + SourceIndex(0) +3 >Emitted(7, 43) Source(14, 6) + SourceIndex(0) +4 >Emitted(7, 58) Source(14, 13) + SourceIndex(0) +5 >Emitted(7, 60) Source(14, 15) + SourceIndex(0) +6 >Emitted(7, 73) Source(14, 20) + SourceIndex(0) +7 >Emitted(7, 75) Source(14, 22) + SourceIndex(0) +8 >Emitted(7, 89) Source(14, 28) + SourceIndex(0) +9 >Emitted(7, 90) Source(14, 64) + SourceIndex(0) --- >>>var numberA3 = robotA[0], robotAInfo = robotA.slice(1); 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ 1 > > - > -2 >let [ -3 > numberA3 -4 > , -5 > ...robotAInfo -6 > ] = robotA; -1 >Emitted(8, 1) Source(16, 1) + SourceIndex(0) -2 >Emitted(8, 5) Source(16, 6) + SourceIndex(0) -3 >Emitted(8, 25) Source(16, 14) + SourceIndex(0) -4 >Emitted(8, 27) Source(16, 16) + SourceIndex(0) -5 >Emitted(8, 55) Source(16, 29) + SourceIndex(0) -6 >Emitted(8, 56) Source(16, 40) + SourceIndex(0) + >let [ +2 >numberA3 +3 > , +4 > ...robotAInfo +5 > ] = robotA; +1 >Emitted(8, 1) Source(16, 6) + SourceIndex(0) +2 >Emitted(8, 25) Source(16, 14) + SourceIndex(0) +3 >Emitted(8, 27) Source(16, 16) + SourceIndex(0) +4 >Emitted(8, 55) Source(16, 29) + SourceIndex(0) +5 >Emitted(8, 56) Source(16, 40) + SourceIndex(0) --- >>>if (nameA == nameA2) { 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map index 53b2c81b9be..581a6a4bc5d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAO,uBAAM,CAAgB;AAC7B,IAAI,uBAAsB,CAAC;AAC3B,IAAK,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAE7D,IAAI,6CAA4C,CAAC;AACjD,IAAI,sCAA+E,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAEpF,IAAI,sCAAkC,CAAC;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,2BAAM,CAAgB;AACxB,2BAAM,CAAgB;AACtB,2BAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAExD,iDAAM,CAAsC;AAC7C,0CAA+E,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAE/E,0CAAkB,CAAgB;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt index ad79567ea63..d0293fdaac9 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt @@ -104,141 +104,123 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 --- >>>var skillA = multiRobotA[1]; 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^-> 1 > > - > -2 >let [, -3 > skillA -4 > ] = multiRobotA; -1 >Emitted(3, 1) Source(8, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(8, 8) + SourceIndex(0) -3 >Emitted(3, 28) Source(8, 14) + SourceIndex(0) -4 >Emitted(3, 29) Source(8, 30) + SourceIndex(0) + >let [, +2 >skillA +3 > ] = multiRobotA; +1 >Emitted(3, 1) Source(8, 8) + SourceIndex(0) +2 >Emitted(3, 28) Source(8, 14) + SourceIndex(0) +3 >Emitted(3, 29) Source(8, 30) + SourceIndex(0) --- >>>var nameMB = multiRobotB[0]; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1-> - > -2 >let -3 > [nameMB] = multiRobotB -4 > ; -1->Emitted(4, 1) Source(9, 1) + SourceIndex(0) -2 >Emitted(4, 5) Source(9, 5) + SourceIndex(0) -3 >Emitted(4, 28) Source(9, 27) + SourceIndex(0) -4 >Emitted(4, 29) Source(9, 28) + SourceIndex(0) + >let [ +2 >nameMB +3 > ] = multiRobotB; +1->Emitted(4, 1) Source(9, 6) + SourceIndex(0) +2 >Emitted(4, 28) Source(9, 12) + SourceIndex(0) +3 >Emitted(4, 29) Source(9, 28) + SourceIndex(0) --- >>>var nameMA = multiRobotA[0], _a = multiRobotA[1], primarySkillA = _a[0], secondarySkillA = _a[1]; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^ -10> ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^ 1-> - > -2 >let [ -3 > nameMA -4 > , -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA -10> ]] = multiRobotA; -1->Emitted(5, 1) Source(10, 1) + SourceIndex(0) -2 >Emitted(5, 5) Source(10, 6) + SourceIndex(0) -3 >Emitted(5, 28) Source(10, 12) + SourceIndex(0) -4 >Emitted(5, 30) Source(10, 14) + SourceIndex(0) -5 >Emitted(5, 49) Source(10, 46) + SourceIndex(0) -6 >Emitted(5, 51) Source(10, 15) + SourceIndex(0) -7 >Emitted(5, 72) Source(10, 28) + SourceIndex(0) -8 >Emitted(5, 74) Source(10, 30) + SourceIndex(0) -9 >Emitted(5, 97) Source(10, 45) + SourceIndex(0) -10>Emitted(5, 98) Source(10, 62) + SourceIndex(0) + >let [ +2 >nameMA +3 > , +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA +9 > ]] = multiRobotA; +1->Emitted(5, 1) Source(10, 6) + SourceIndex(0) +2 >Emitted(5, 28) Source(10, 12) + SourceIndex(0) +3 >Emitted(5, 30) Source(10, 14) + SourceIndex(0) +4 >Emitted(5, 49) Source(10, 46) + SourceIndex(0) +5 >Emitted(5, 51) Source(10, 15) + SourceIndex(0) +6 >Emitted(5, 72) Source(10, 28) + SourceIndex(0) +7 >Emitted(5, 74) Source(10, 30) + SourceIndex(0) +8 >Emitted(5, 97) Source(10, 45) + SourceIndex(0) +9 >Emitted(5, 98) Source(10, 62) + SourceIndex(0) --- >>>var nameMC = ["roomba", ["vaccum", "mopping"]][0]; 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > > - > -2 >let -3 > [nameMC] = ["roomba", ["vaccum", "mopping"]] -4 > ; -1 >Emitted(6, 1) Source(12, 1) + SourceIndex(0) -2 >Emitted(6, 5) Source(12, 5) + SourceIndex(0) -3 >Emitted(6, 50) Source(12, 49) + SourceIndex(0) -4 >Emitted(6, 51) Source(12, 50) + SourceIndex(0) + >let [ +2 >nameMC +3 > ] = ["roomba", ["vaccum", "mopping"]]; +1 >Emitted(6, 1) Source(12, 6) + SourceIndex(0) +2 >Emitted(6, 50) Source(12, 12) + SourceIndex(0) +3 >Emitted(6, 51) Source(12, 50) + SourceIndex(0) --- >>>var _b = ["roomba", ["vaccum", "mopping"]], nameMC2 = _b[0], _c = _b[1], primarySkillC = _c[0], secondarySkillC = _c[1]; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^ -12> ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^ +11> ^ 1-> - > -2 >let -3 > [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]] -4 > -5 > nameMC2 -6 > , -7 > [primarySkillC, secondarySkillC] -8 > -9 > primarySkillC -10> , -11> secondarySkillC -12> ]] = ["roomba", ["vaccum", "mopping"]]; -1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) -2 >Emitted(7, 5) Source(13, 5) + SourceIndex(0) -3 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) -4 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) -5 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) -6 >Emitted(7, 62) Source(13, 15) + SourceIndex(0) -7 >Emitted(7, 72) Source(13, 47) + SourceIndex(0) -8 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) -9 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) -10>Emitted(7, 97) Source(13, 31) + SourceIndex(0) -11>Emitted(7, 120) Source(13, 46) + SourceIndex(0) -12>Emitted(7, 121) Source(13, 85) + SourceIndex(0) + >let +2 >[nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]] +3 > +4 > nameMC2 +5 > , +6 > [primarySkillC, secondarySkillC] +7 > +8 > primarySkillC +9 > , +10> secondarySkillC +11> ]] = ["roomba", ["vaccum", "mopping"]]; +1->Emitted(7, 1) Source(13, 5) + SourceIndex(0) +2 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) +3 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) +4 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) +5 >Emitted(7, 62) Source(13, 15) + SourceIndex(0) +6 >Emitted(7, 72) Source(13, 47) + SourceIndex(0) +7 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) +8 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) +9 >Emitted(7, 97) Source(13, 31) + SourceIndex(0) +10>Emitted(7, 120) Source(13, 46) + SourceIndex(0) +11>Emitted(7, 121) Source(13, 85) + SourceIndex(0) --- >>>var multiRobotAInfo = multiRobotA.slice(0); 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^ 1 > > - > -2 >let -3 > [...multiRobotAInfo] = multiRobotA -4 > ; -1 >Emitted(8, 1) Source(15, 1) + SourceIndex(0) -2 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) -3 >Emitted(8, 43) Source(15, 39) + SourceIndex(0) -4 >Emitted(8, 44) Source(15, 40) + SourceIndex(0) + >let [ +2 >...multiRobotAInfo +3 > ] = multiRobotA; +1 >Emitted(8, 1) Source(15, 6) + SourceIndex(0) +2 >Emitted(8, 43) Source(15, 24) + SourceIndex(0) +3 >Emitted(8, 44) Source(15, 40) + SourceIndex(0) --- >>>if (nameMB == nameMA) { 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map index 5f4eb18e261..41074c2d999 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAE9F,IAAM,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACtE,IAAM,mBAAW,EAAE,kBAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAAI,mFAAsJ,EAApJ,eAAW,EAAE,cAAM,EAAI,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAExF,sBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAc;AAChE,uBAAW,EAAE,kBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAc;AAC/E,uFAAsJ,EAApJ,eAAW,EAAE,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt index 0e26912364f..deb5b3918f9 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt @@ -158,105 +158,96 @@ sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingP --- >>>var _a = robotA.skills, primaryA = _a.primary, secondaryA = _a.secondary; 1 > -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^ -9 > ^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^^^^^^^-> 1 > > - > -2 >var { -3 > skills -4 > : { -5 > primary: primaryA -6 > , -7 > secondary: secondaryA -8 > } } = robotA; -1 >Emitted(3, 1) Source(14, 1) + SourceIndex(0) -2 >Emitted(3, 5) Source(14, 7) + SourceIndex(0) -3 >Emitted(3, 23) Source(14, 13) + SourceIndex(0) -4 >Emitted(3, 25) Source(14, 17) + SourceIndex(0) -5 >Emitted(3, 46) Source(14, 34) + SourceIndex(0) -6 >Emitted(3, 48) Source(14, 36) + SourceIndex(0) -7 >Emitted(3, 73) Source(14, 57) + SourceIndex(0) -8 >Emitted(3, 74) Source(14, 71) + SourceIndex(0) + >var { +2 >skills: { primary: primaryA, secondary: secondaryA } +3 > +4 > primary: primaryA +5 > , +6 > secondary: secondaryA +7 > } } = robotA; +1 >Emitted(3, 1) Source(14, 7) + SourceIndex(0) +2 >Emitted(3, 23) Source(14, 59) + SourceIndex(0) +3 >Emitted(3, 25) Source(14, 17) + SourceIndex(0) +4 >Emitted(3, 46) Source(14, 34) + SourceIndex(0) +5 >Emitted(3, 48) Source(14, 36) + SourceIndex(0) +6 >Emitted(3, 73) Source(14, 57) + SourceIndex(0) +7 >Emitted(3, 74) Source(14, 71) + SourceIndex(0) --- >>>var nameB = robotB.name, _b = robotB.skills, primaryB = _b.primary, secondaryB = _b.secondary; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ -10> ^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1-> - > -2 >var { -3 > name: nameB -4 > , -5 > skills -6 > : { -7 > primary: primaryB -8 > , -9 > secondary: secondaryB -10> } } = robotB; -1->Emitted(4, 1) Source(15, 1) + SourceIndex(0) -2 >Emitted(4, 5) Source(15, 7) + SourceIndex(0) -3 >Emitted(4, 24) Source(15, 18) + SourceIndex(0) -4 >Emitted(4, 26) Source(15, 20) + SourceIndex(0) -5 >Emitted(4, 44) Source(15, 26) + SourceIndex(0) -6 >Emitted(4, 46) Source(15, 30) + SourceIndex(0) -7 >Emitted(4, 67) Source(15, 47) + SourceIndex(0) -8 >Emitted(4, 69) Source(15, 49) + SourceIndex(0) -9 >Emitted(4, 94) Source(15, 70) + SourceIndex(0) -10>Emitted(4, 95) Source(15, 84) + SourceIndex(0) + >var { +2 >name: nameB +3 > , +4 > skills: { primary: primaryB, secondary: secondaryB } +5 > +6 > primary: primaryB +7 > , +8 > secondary: secondaryB +9 > } } = robotB; +1->Emitted(4, 1) Source(15, 7) + SourceIndex(0) +2 >Emitted(4, 24) Source(15, 18) + SourceIndex(0) +3 >Emitted(4, 26) Source(15, 20) + SourceIndex(0) +4 >Emitted(4, 44) Source(15, 72) + SourceIndex(0) +5 >Emitted(4, 46) Source(15, 30) + SourceIndex(0) +6 >Emitted(4, 67) Source(15, 47) + SourceIndex(0) +7 >Emitted(4, 69) Source(15, 49) + SourceIndex(0) +8 >Emitted(4, 94) Source(15, 70) + SourceIndex(0) +9 >Emitted(4, 95) Source(15, 84) + SourceIndex(0) --- >>>var _c = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, nameC = _c.name, _d = _c.skills, primaryB = _d.primary, secondaryB = _d.secondary; 1-> -2 >^^^^ -3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^ -12> ^ +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^ 1-> - > -2 >var -3 > { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } -4 > -5 > name: nameC -6 > , -7 > skills -8 > : { -9 > primary: primaryB -10> , -11> secondary: secondaryB -12> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; -1->Emitted(5, 1) Source(16, 1) + SourceIndex(0) -2 >Emitted(5, 5) Source(16, 5) + SourceIndex(0) -3 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) -4 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) -5 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) -6 >Emitted(5, 107) Source(16, 20) + SourceIndex(0) -7 >Emitted(5, 121) Source(16, 26) + SourceIndex(0) -8 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) -9 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) -10>Emitted(5, 146) Source(16, 49) + SourceIndex(0) -11>Emitted(5, 171) Source(16, 70) + SourceIndex(0) -12>Emitted(5, 172) Source(16, 156) + SourceIndex(0) + >var +2 >{ name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } +3 > +4 > name: nameC +5 > , +6 > skills: { primary: primaryB, secondary: secondaryB } +7 > +8 > primary: primaryB +9 > , +10> secondary: secondaryB +11> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +1->Emitted(5, 1) Source(16, 5) + SourceIndex(0) +2 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) +3 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) +4 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) +5 >Emitted(5, 107) Source(16, 20) + SourceIndex(0) +6 >Emitted(5, 121) Source(16, 72) + SourceIndex(0) +7 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) +8 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) +9 >Emitted(5, 146) Source(16, 49) + SourceIndex(0) +10>Emitted(5, 171) Source(16, 70) + SourceIndex(0) +11>Emitted(5, 172) Source(16, 156) + SourceIndex(0) --- >>>if (nameB == nameB) { 1 > From 7d60c5e6309a080a12b461a97ce9428854bd2a54 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 10 Dec 2015 14:10:34 -0800 Subject: [PATCH 051/164] Fix the temporary assignment source maps in a better way This doesnt create synthetic nodes with source map node on them And makes us determine what to put source map on for temporary assignments --- src/compiler/emitter.ts | 82 +- src/compiler/sourcemap.ts | 9 - src/compiler/utilities.ts | 7 - ...DestructuringForArrayBindingPattern.js.map | 2 +- ...turingForArrayBindingPattern.sourcemap.txt | 1222 +++++++++-------- ...estructuringForArrayBindingPattern2.js.map | 2 +- ...uringForArrayBindingPattern2.sourcemap.txt | 78 +- ...estructuringForObjectBindingPattern.js.map | 2 +- ...uringForObjectBindingPattern.sourcemap.txt | 510 +++---- ...structuringForObjectBindingPattern2.js.map | 2 +- ...ringForObjectBindingPattern2.sourcemap.txt | 116 +- ...tructuringForOfArrayBindingPattern2.js.map | 2 +- ...ingForOfArrayBindingPattern2.sourcemap.txt | 585 ++++---- ...ructuringForOfObjectBindingPattern2.js.map | 2 +- ...ngForOfObjectBindingPattern2.sourcemap.txt | 540 ++++---- ...ationDestructuringVariableStatement.js.map | 2 +- ...structuringVariableStatement.sourcemap.txt | 43 +- ...ariableStatementArrayBindingPattern.js.map | 2 +- ...StatementArrayBindingPattern.sourcemap.txt | 55 +- ...riableStatementArrayBindingPattern2.js.map | 2 +- ...tatementArrayBindingPattern2.sourcemap.txt | 67 +- ...riableStatementArrayBindingPattern3.js.map | 2 +- ...tatementArrayBindingPattern3.sourcemap.txt | 90 +- ...StatementNestedObjectBindingPattern.js.map | 2 +- ...ntNestedObjectBindingPattern.sourcemap.txt | 67 +- 25 files changed, 1733 insertions(+), 1760 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index b2470a3d584..f152618312a 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1979,15 +1979,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function createPropertyAccessExpression(expression: Expression, name: Identifier): PropertyAccessExpression { - const result = createSourceMappedSynthesizedNode(SyntaxKind.PropertyAccessExpression, name); + const result = createSynthesizedNode(SyntaxKind.PropertyAccessExpression); result.expression = parenthesizeForAccess(expression); result.dotToken = createSynthesizedNode(SyntaxKind.DotToken); result.name = name; return result; } - function createElementAccessExpression(expression: Expression, argumentExpression: Expression, sourceMapNode: Node): ElementAccessExpression { - const result = createSourceMappedSynthesizedNode(SyntaxKind.ElementAccessExpression, sourceMapNode); + function createElementAccessExpression(expression: Expression, argumentExpression: Expression): ElementAccessExpression { + const result = createSynthesizedNode(SyntaxKind.ElementAccessExpression); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; @@ -2015,7 +2015,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return expr; } - const node = createSourceMappedSynthesizedNode(SyntaxKind.ParenthesizedExpression, expr); + const node = createSynthesizedNode(SyntaxKind.ParenthesizedExpression); node.expression = expr; return node; } @@ -3326,7 +3326,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // Initialize LHS // let v = _a[_i]; - const rhsIterationValue = createElementAccessExpression(rhsReference, counter, node.initializer); + const rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); if (node.initializer.kind === SyntaxKind.VariableDeclarationList) { write("var "); @@ -3716,7 +3716,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi * @param value an expression as a right-hand-side operand of the assignment * @param shouldEmitCommaBeforeAssignment a boolean indicating whether to prefix an assignment with comma */ - function emitAssignment(name: Identifier, value: Expression, shouldEmitCommaBeforeAssignment: boolean, nodeForSourceMap: TextRange) { + function emitAssignment(name: Identifier, value: Expression, shouldEmitCommaBeforeAssignment: boolean, nodeForSourceMap: Node) { if (shouldEmitCommaBeforeAssignment) { write(", "); } @@ -3732,7 +3732,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === SyntaxKind.VariableDeclaration || name.parent.kind === SyntaxKind.BindingElement); - emitStart(nodeForSourceMap); + // If this is first var declaration, we need to stary at var/let/const keyword instead + // otherwise use nodeForSourceMap as the start position + emitStart(isFirstVariableDeclaration(nodeForSourceMap) ? nodeForSourceMap.parent : nodeForSourceMap); withTemporaryNoSourceMap(() => { if (isVariableDeclarationOrBindingElement) { emitModuleMemberName(name.parent); @@ -3757,15 +3759,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi * @param canDefineTempVariablesInPlace a boolean indicating whether you can define the temporary variable at an assignment location * @param shouldEmitCommaBeforeAssignment a boolean indicating whether an assignment should prefix with comma */ - function emitTempVariableAssignment(expression: Expression, canDefineTempVariablesInPlace: boolean, shouldEmitCommaBeforeAssignment: boolean): Identifier { + function emitTempVariableAssignment(expression: Expression, canDefineTempVariablesInPlace: boolean, shouldEmitCommaBeforeAssignment: boolean, sourceMapNode?: Node): Identifier { const identifier = createTempVariable(TempFlags.Auto); if (!canDefineTempVariablesInPlace) { recordTempDeclaration(identifier); } - emitAssignment(identifier, expression, shouldEmitCommaBeforeAssignment, expression.parent || expression); + emitAssignment(identifier, expression, shouldEmitCommaBeforeAssignment, sourceMapNode || expression.parent); return identifier; } + function isFirstVariableDeclaration(root: Node) { + return root.kind === SyntaxKind.VariableDeclaration && + root.parent.kind === SyntaxKind.VariableDeclarationList && + (root.parent).declarations[0] === root; + } + function emitDestructuring(root: BinaryExpression | VariableDeclaration | ParameterDeclaration, isAssignmentExpressionStatement: boolean, value?: Expression) { let emitCount = 0; @@ -3789,9 +3797,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { Debug.assert(!isAssignmentExpressionStatement); // If first variable declaration of variable statement correct the start location - if (root.kind === SyntaxKind.VariableDeclaration && - root.parent.kind === SyntaxKind.VariableDeclarationList && - (root.parent).declarations[0] === root) { + if (isFirstVariableDeclaration(root)) { // Use emit location of "var " as next emit start entry sourceMap.changeEmitSourcePos(); } @@ -3808,20 +3814,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi * @param reuseIdentifierExpressions true if identifier expressions can simply be returned; * false if it is necessary to always emit an identifier. */ - function ensureIdentifier(expr: Expression, reuseIdentifierExpressions: boolean): Expression { + function ensureIdentifier(expr: Expression, reuseIdentifierExpressions: boolean, sourceMapNode: Node): Expression { if (expr.kind === SyntaxKind.Identifier && reuseIdentifierExpressions) { return expr; } - const identifier = emitTempVariableAssignment(expr, canDefineTempVariablesInPlace, emitCount > 0); + const identifier = emitTempVariableAssignment(expr, canDefineTempVariablesInPlace, emitCount > 0, sourceMapNode); emitCount++; return identifier; } - function createDefaultValueCheck(value: Expression, defaultValue: Expression): Expression { + function createDefaultValueCheck(value: Expression, defaultValue: Expression, sourceMapNode: Node): Expression { // The value expression will be evaluated twice, so for anything but a simple identifier // we need to generate a temporary variable - value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); + // If the temporary variable needs to be emitted use the source Map node for assignment of that statement + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true, sourceMapNode); // Return the expression 'value === void 0 ? defaultValue : value' const equals = createSynthesizedNode(SyntaxKind.BinaryExpression); equals.left = value; @@ -3846,22 +3853,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return node; } - function createPropertyAccessForDestructuringProperty(object: Expression, propName: PropertyName, sourceMapNode: Node): Expression { + function createPropertyAccessForDestructuringProperty(object: Expression, propName: PropertyName): Expression { let index: Expression; const nameIsComputed = propName.kind === SyntaxKind.ComputedPropertyName; if (nameIsComputed) { - index = ensureIdentifier((propName).expression, /*reuseIdentifierExpressions*/ false); + // TODO to handle when we look into sourcemaps for computed properties, for now use propName + index = ensureIdentifier((propName).expression, /*reuseIdentifierExpressions*/ false, propName); } else { // We create a synthetic copy of the identifier in order to avoid the rewriting that might // otherwise occur when the identifier is emitted. - index = createSourceMappedSynthesizedNode(propName.kind, sourceMapNode); + index = createSynthesizedNode(propName.kind); (index).text = (propName).text; } return !nameIsComputed && index.kind === SyntaxKind.Identifier ? createPropertyAccessExpression(object, index) - : createElementAccessExpression(object, index, index); + : createElementAccessExpression(object, index); } function createSliceCall(value: Expression, sliceIndex: number): CallExpression { @@ -3879,13 +3887,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (properties.length !== 1) { // For anything but a single element destructuring we need to generate a temporary // to ensure value is evaluated exactly once. - value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); + // When doing so we want to hightlight the passed in source map node since thats the one needing this temp assignment + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true, sourceMapNode); } for (const p of properties) { if (p.kind === SyntaxKind.PropertyAssignment || p.kind === SyntaxKind.ShorthandPropertyAssignment) { const propName = (p).name; const target = p.kind === SyntaxKind.ShorthandPropertyAssignment ? p : (p).initializer || propName; - emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName, target), properties.length === 1 ? sourceMapNode : p); + // Assignment for target = value.propName should highligh whole property, hence use p as source map node + emitDestructuringAssignment(target, createPropertyAccessForDestructuringProperty(value, propName), p); } } } @@ -3895,30 +3905,33 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (elements.length !== 1) { // For anything but a single element destructuring we need to generate a temporary // to ensure value is evaluated exactly once. - value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); + // When doing so we want to hightlight the passed in source map node since thats the one needing this temp assignment + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true, sourceMapNode); } for (let i = 0; i < elements.length; i++) { const e = elements[i]; if (e.kind !== SyntaxKind.OmittedExpression) { + // Assignment for target = value.propName should highligh whole property, hence use e as source map node if (e.kind !== SyntaxKind.SpreadElementExpression) { - emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i), e), elements.length === 1 ? sourceMapNode : e); + emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i)), e); } else if (i === elements.length - 1) { - emitDestructuringAssignment((e).expression, createSliceCall(value, i), elements.length === 1 ? sourceMapNode : e); + emitDestructuringAssignment((e).expression, createSliceCall(value, i), e); } } } } function emitDestructuringAssignment(target: Expression | ShorthandPropertyAssignment, value: Expression, sourceMapNode: Node) { + // When emitting target = value use source map node to highlight, including any temporary assignments needed for this if (target.kind === SyntaxKind.ShorthandPropertyAssignment) { if ((target).objectAssignmentInitializer) { - value = createDefaultValueCheck(value, (target).objectAssignmentInitializer); + value = createDefaultValueCheck(value, (target).objectAssignmentInitializer, sourceMapNode); } target = (target).name; } else if (target.kind === SyntaxKind.BinaryExpression && (target).operatorToken.kind === SyntaxKind.EqualsToken) { - value = createDefaultValueCheck(value, (target).right); + value = createDefaultValueCheck(value, (target).right, sourceMapNode); target = (target).left; } if (target.kind === SyntaxKind.ObjectLiteralExpression) { @@ -3928,7 +3941,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emitArrayLiteralAssignment(target, value, sourceMapNode); } else { - // TODO emitAssignment(target, value, /*shouldEmitCommaBeforeAssignment*/ emitCount > 0, sourceMapNode); emitCount++; } @@ -3942,13 +3954,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi emit(value); } else if (isAssignmentExpressionStatement) { + // Source map node for root.left = root.right is root emitDestructuringAssignment(target, value, root); } else { if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) { write("("); } - value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); + // Temporary assignment needed to emit root should highlight whole binary expression + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true, root); + // Source map node for root.left = root.right is root emitDestructuringAssignment(target, value, root); write(", "); emit(value); @@ -3959,9 +3974,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitBindingElement(target: BindingElement | VariableDeclaration, value: Expression) { + // Any temporary assignments needed to emit target = value should point to target if (target.initializer) { // Combine value and initializer - value = value ? createDefaultValueCheck(value, target.initializer) : target.initializer; + value = value ? createDefaultValueCheck(value, target.initializer, target) : target.initializer; } else if (!value) { // Use 'void 0' in absence of value and initializer @@ -3977,7 +3993,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // to ensure value is evaluated exactly once. Additionally, if we have zero elements // we need to emit *something* to ensure that in case a 'var' keyword was already emitted, // so in that case, we'll intentionally create that temporary. - value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ numElements !== 0); + value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ numElements !== 0, target); } for (let i = 0; i < numElements; i++) { @@ -3985,12 +4001,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (pattern.kind === SyntaxKind.ObjectBindingPattern) { // Rewrite element to a declaration with an initializer that fetches property const propName = element.propertyName || element.name; - emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName, element)); + emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } else if (element.kind !== SyntaxKind.OmittedExpression) { if (!element.dotDotDotToken) { // Rewrite element to a declaration that accesses array element at index i - emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i), element)); + emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } else if (i === numElements - 1) { emitBindingElement(element, createSliceCall(value, i)); diff --git a/src/compiler/sourcemap.ts b/src/compiler/sourcemap.ts index 501b1aa476a..ab079c642ea 100644 --- a/src/compiler/sourcemap.ts +++ b/src/compiler/sourcemap.ts @@ -281,15 +281,7 @@ namespace ts { updateLastEncodedAndRecordedSpans(); } - function getSourceMapRange(range: TextRange) { - while ((range as SynthesizedNode).sourceMapNode) { - range = (range as SynthesizedNode).sourceMapNode; - } - return range; - } - function getStartPos(range: TextRange) { - range = getSourceMapRange(range); const rangeHasDecorators = !!(range as Node).decorators; return range.pos !== -1 ? skipTrivia(currentSourceFile.text, rangeHasDecorators ? (range as Node).decorators.end : range.pos) : -1; } @@ -299,7 +291,6 @@ namespace ts { } function emitEnd(range: TextRange, stopOverridingEnd?: boolean) { - range = getSourceMapRange(range); emitPos(range.end); stopOverridingSpan = stopOverridingEnd; } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 03cdf26a4ad..0f0f50719c1 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -12,7 +12,6 @@ namespace ts { leadingCommentRanges?: CommentRange[]; trailingCommentRanges?: CommentRange[]; startsOnNewLine: boolean; - sourceMapNode?: Node; } export function getDeclarationOfKind(symbol: Symbol, kind: SyntaxKind): Declaration { @@ -1627,12 +1626,6 @@ namespace ts { return node; } - export function createSourceMappedSynthesizedNode(kind: SyntaxKind, sourceMapNode: Node, startsOnNewLine?: boolean): Node { - const synthesizedNode = createSynthesizedNode(kind, startsOnNewLine); - synthesizedNode.sourceMapNode = sourceMapNode; - return synthesizedNode; - } - export function createSynthesizedNodeArray(): NodeArray { const array = >[]; array.pos = -1; diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map index 971f5106983..0ee4a2092e7 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC;AAED,GAAG,CAAC,CAAQ,qBAAK,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,eAA0B,EAAnB,aAAK,EAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,+BAA0C,EAAnC,aAAK,EAAgC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAQ,uBAAgC,EAA/B,qBAAa,EAAE,uBAAe,EAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,oBAA0D,EAAnD,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,EAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,wCAA8E,EAAvE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,EAA0C,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC/B,CAAC;AAED,GAAG,CAAC,CAAM,uBAAO,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AACD,GAAG,CAAC,CAAM,2BAAO,EAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AACD,GAAG,CAAC,CAAM,2CAAO,EAAgC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AACD,GAAG,CAAC,CAAM,0BAAK,EAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAM,8BAAK,EAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAM,kDAAK,EAAyC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,GAAG,CAAC,CAAM,wBAAQ,EAAE,kBAAM,EAAE,mBAAO,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,eAA4C,EAAvC,gBAAQ,EAAE,cAAM,EAAE,eAAO,EAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,+BAA4D,EAAvD,gBAAQ,EAAE,cAAM,EAAE,eAAO,EAAgC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,GAAG,CAAC,CAAM,2BAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,EAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,oBAAgE,EAA3D,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,EAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,wCAAoF,EAA/E,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,EAA0C,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3G,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,GAAG,CAAC,CAAM,wBAAQ,EAAE,4BAAa,EAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,eAA0C,EAArC,gBAAQ,EAAE,wBAAa,EAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,IAAA,+BAA0D,EAArD,gBAAQ,EAAE,wBAAa,EAAgC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAM,0CAAkB,EAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AACD,GAAG,CAAC,CAAM,8CAAkB,EAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC;AACD,GAAG,CAAC,CAAM,kEAAkB,EAAyC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACjC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt index 2a9497d3ad2..e7ee5c01f2c 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern.sourcemap.txt @@ -314,63 +314,66 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^ +10> ^ +11> ^^^ +12> ^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^ +20> ^^ +21> ^ 1-> > 2 >for 3 > -4 > (let -5 > [, nameA] = getRobot() -6 > -7 > nameA -8 > ] = getRobot(), -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > ( +5 > +6 > let [, nameA] = getRobot() +7 > +8 > nameA +9 > ] = getRobot(), +10> i +11> = +12> 0 +13> ; +14> i +15> < +16> 1 +17> ; +18> i +19> ++ +20> ) +21> { 1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) 2 >Emitted(13, 4) Source(21, 4) + SourceIndex(0) 3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) -4 >Emitted(13, 6) Source(21, 10) + SourceIndex(0) -5 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) -6 >Emitted(13, 27) Source(21, 13) + SourceIndex(0) -7 >Emitted(13, 40) Source(21, 18) + SourceIndex(0) -8 >Emitted(13, 42) Source(21, 34) + SourceIndex(0) -9 >Emitted(13, 43) Source(21, 35) + SourceIndex(0) -10>Emitted(13, 46) Source(21, 38) + SourceIndex(0) -11>Emitted(13, 47) Source(21, 39) + SourceIndex(0) -12>Emitted(13, 49) Source(21, 41) + SourceIndex(0) -13>Emitted(13, 50) Source(21, 42) + SourceIndex(0) -14>Emitted(13, 53) Source(21, 45) + SourceIndex(0) -15>Emitted(13, 54) Source(21, 46) + SourceIndex(0) -16>Emitted(13, 56) Source(21, 48) + SourceIndex(0) -17>Emitted(13, 57) Source(21, 49) + SourceIndex(0) -18>Emitted(13, 59) Source(21, 51) + SourceIndex(0) -19>Emitted(13, 61) Source(21, 53) + SourceIndex(0) -20>Emitted(13, 62) Source(21, 54) + SourceIndex(0) +4 >Emitted(13, 6) Source(21, 6) + SourceIndex(0) +5 >Emitted(13, 10) Source(21, 6) + SourceIndex(0) +6 >Emitted(13, 25) Source(21, 32) + SourceIndex(0) +7 >Emitted(13, 27) Source(21, 13) + SourceIndex(0) +8 >Emitted(13, 40) Source(21, 18) + SourceIndex(0) +9 >Emitted(13, 42) Source(21, 34) + SourceIndex(0) +10>Emitted(13, 43) Source(21, 35) + SourceIndex(0) +11>Emitted(13, 46) Source(21, 38) + SourceIndex(0) +12>Emitted(13, 47) Source(21, 39) + SourceIndex(0) +13>Emitted(13, 49) Source(21, 41) + SourceIndex(0) +14>Emitted(13, 50) Source(21, 42) + SourceIndex(0) +15>Emitted(13, 53) Source(21, 45) + SourceIndex(0) +16>Emitted(13, 54) Source(21, 46) + SourceIndex(0) +17>Emitted(13, 56) Source(21, 48) + SourceIndex(0) +18>Emitted(13, 57) Source(21, 49) + SourceIndex(0) +19>Emitted(13, 59) Source(21, 51) + SourceIndex(0) +20>Emitted(13, 61) Source(21, 53) + SourceIndex(0) +21>Emitted(13, 62) Source(21, 54) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -414,63 +417,66 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^ -8 > ^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^ +10> ^ +11> ^^^ +12> ^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^ +20> ^^ +21> ^ 1-> > 2 >for 3 > -4 > (let -5 > [, nameA] = [2, "trimmer", "trimming"] -6 > -7 > nameA -8 > ] = [2, "trimmer", "trimming"], -9 > i -10> = -11> 0 -12> ; -13> i -14> < -15> 1 -16> ; -17> i -18> ++ -19> ) -20> { +4 > ( +5 > +6 > let [, nameA] = [2, "trimmer", "trimming"] +7 > +8 > nameA +9 > ] = [2, "trimmer", "trimming"], +10> i +11> = +12> 0 +13> ; +14> i +15> < +16> 1 +17> ; +18> i +19> ++ +20> ) +21> { 1->Emitted(16, 1) Source(24, 1) + SourceIndex(0) 2 >Emitted(16, 4) Source(24, 4) + SourceIndex(0) 3 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) -4 >Emitted(16, 6) Source(24, 10) + SourceIndex(0) -5 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) -6 >Emitted(16, 43) Source(24, 13) + SourceIndex(0) -7 >Emitted(16, 56) Source(24, 18) + SourceIndex(0) -8 >Emitted(16, 58) Source(24, 50) + SourceIndex(0) -9 >Emitted(16, 59) Source(24, 51) + SourceIndex(0) -10>Emitted(16, 62) Source(24, 54) + SourceIndex(0) -11>Emitted(16, 63) Source(24, 55) + SourceIndex(0) -12>Emitted(16, 65) Source(24, 57) + SourceIndex(0) -13>Emitted(16, 66) Source(24, 58) + SourceIndex(0) -14>Emitted(16, 69) Source(24, 61) + SourceIndex(0) -15>Emitted(16, 70) Source(24, 62) + SourceIndex(0) -16>Emitted(16, 72) Source(24, 64) + SourceIndex(0) -17>Emitted(16, 73) Source(24, 65) + SourceIndex(0) -18>Emitted(16, 75) Source(24, 67) + SourceIndex(0) -19>Emitted(16, 77) Source(24, 69) + SourceIndex(0) -20>Emitted(16, 78) Source(24, 70) + SourceIndex(0) +4 >Emitted(16, 6) Source(24, 6) + SourceIndex(0) +5 >Emitted(16, 10) Source(24, 6) + SourceIndex(0) +6 >Emitted(16, 41) Source(24, 48) + SourceIndex(0) +7 >Emitted(16, 43) Source(24, 13) + SourceIndex(0) +8 >Emitted(16, 56) Source(24, 18) + SourceIndex(0) +9 >Emitted(16, 58) Source(24, 50) + SourceIndex(0) +10>Emitted(16, 59) Source(24, 51) + SourceIndex(0) +11>Emitted(16, 62) Source(24, 54) + SourceIndex(0) +12>Emitted(16, 63) Source(24, 55) + SourceIndex(0) +13>Emitted(16, 65) Source(24, 57) + SourceIndex(0) +14>Emitted(16, 66) Source(24, 58) + SourceIndex(0) +15>Emitted(16, 69) Source(24, 61) + SourceIndex(0) +16>Emitted(16, 70) Source(24, 62) + SourceIndex(0) +17>Emitted(16, 72) Source(24, 64) + SourceIndex(0) +18>Emitted(16, 73) Source(24, 65) + SourceIndex(0) +19>Emitted(16, 75) Source(24, 67) + SourceIndex(0) +20>Emitted(16, 77) Source(24, 69) + SourceIndex(0) +21>Emitted(16, 78) Source(24, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -620,75 +626,78 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^^ +20> ^ +21> ^^ +22> ^ +23> ^^ +24> ^^ +25> ^ 1-> > 2 >for 3 > -4 > (let -5 > [, [primarySkillA, secondarySkillA]] = getMultiRobot() -6 > -7 > [primarySkillA, secondarySkillA] -8 > -9 > primarySkillA -10> , -11> secondarySkillA -12> ]] = getMultiRobot(), -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > ( +5 > +6 > let [, [primarySkillA, secondarySkillA]] = getMultiRobot() +7 > +8 > [primarySkillA, secondarySkillA] +9 > +10> primarySkillA +11> , +12> secondarySkillA +13> ]] = getMultiRobot(), +14> i +15> = +16> 0 +17> ; +18> i +19> < +20> 1 +21> ; +22> i +23> ++ +24> ) +25> { 1->Emitted(22, 1) Source(30, 1) + SourceIndex(0) 2 >Emitted(22, 4) Source(30, 4) + SourceIndex(0) 3 >Emitted(22, 5) Source(30, 5) + SourceIndex(0) -4 >Emitted(22, 6) Source(30, 10) + SourceIndex(0) -5 >Emitted(22, 30) Source(30, 64) + SourceIndex(0) -6 >Emitted(22, 32) Source(30, 13) + SourceIndex(0) -7 >Emitted(22, 42) Source(30, 45) + SourceIndex(0) -8 >Emitted(22, 44) Source(30, 14) + SourceIndex(0) -9 >Emitted(22, 65) Source(30, 27) + SourceIndex(0) -10>Emitted(22, 67) Source(30, 29) + SourceIndex(0) -11>Emitted(22, 90) Source(30, 44) + SourceIndex(0) -12>Emitted(22, 92) Source(30, 66) + SourceIndex(0) -13>Emitted(22, 93) Source(30, 67) + SourceIndex(0) -14>Emitted(22, 96) Source(30, 70) + SourceIndex(0) -15>Emitted(22, 97) Source(30, 71) + SourceIndex(0) -16>Emitted(22, 99) Source(30, 73) + SourceIndex(0) -17>Emitted(22, 100) Source(30, 74) + SourceIndex(0) -18>Emitted(22, 103) Source(30, 77) + SourceIndex(0) -19>Emitted(22, 104) Source(30, 78) + SourceIndex(0) -20>Emitted(22, 106) Source(30, 80) + SourceIndex(0) -21>Emitted(22, 107) Source(30, 81) + SourceIndex(0) -22>Emitted(22, 109) Source(30, 83) + SourceIndex(0) -23>Emitted(22, 111) Source(30, 85) + SourceIndex(0) -24>Emitted(22, 112) Source(30, 86) + SourceIndex(0) +4 >Emitted(22, 6) Source(30, 6) + SourceIndex(0) +5 >Emitted(22, 10) Source(30, 6) + SourceIndex(0) +6 >Emitted(22, 30) Source(30, 64) + SourceIndex(0) +7 >Emitted(22, 32) Source(30, 13) + SourceIndex(0) +8 >Emitted(22, 42) Source(30, 45) + SourceIndex(0) +9 >Emitted(22, 44) Source(30, 14) + SourceIndex(0) +10>Emitted(22, 65) Source(30, 27) + SourceIndex(0) +11>Emitted(22, 67) Source(30, 29) + SourceIndex(0) +12>Emitted(22, 90) Source(30, 44) + SourceIndex(0) +13>Emitted(22, 92) Source(30, 66) + SourceIndex(0) +14>Emitted(22, 93) Source(30, 67) + SourceIndex(0) +15>Emitted(22, 96) Source(30, 70) + SourceIndex(0) +16>Emitted(22, 97) Source(30, 71) + SourceIndex(0) +17>Emitted(22, 99) Source(30, 73) + SourceIndex(0) +18>Emitted(22, 100) Source(30, 74) + SourceIndex(0) +19>Emitted(22, 103) Source(30, 77) + SourceIndex(0) +20>Emitted(22, 104) Source(30, 78) + SourceIndex(0) +21>Emitted(22, 106) Source(30, 80) + SourceIndex(0) +22>Emitted(22, 107) Source(30, 81) + SourceIndex(0) +23>Emitted(22, 109) Source(30, 83) + SourceIndex(0) +24>Emitted(22, 111) Source(30, 85) + SourceIndex(0) +25>Emitted(22, 112) Source(30, 86) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -732,75 +741,78 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^^ +20> ^ +21> ^^ +22> ^ +23> ^^ +24> ^^ +25> ^ 1-> > 2 >for 3 > -4 > (let -5 > [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] -6 > -7 > [primarySkillA, secondarySkillA] -8 > -9 > primarySkillA -10> , -11> secondarySkillA -12> ]] = ["trimmer", ["trimming", "edging"]], -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > ( +5 > +6 > let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] +7 > +8 > [primarySkillA, secondarySkillA] +9 > +10> primarySkillA +11> , +12> secondarySkillA +13> ]] = ["trimmer", ["trimming", "edging"]], +14> i +15> = +16> 0 +17> ; +18> i +19> < +20> 1 +21> ; +22> i +23> ++ +24> ) +25> { 1->Emitted(25, 1) Source(33, 1) + SourceIndex(0) 2 >Emitted(25, 4) Source(33, 4) + SourceIndex(0) 3 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) -4 >Emitted(25, 6) Source(33, 10) + SourceIndex(0) -5 >Emitted(25, 50) Source(33, 84) + SourceIndex(0) -6 >Emitted(25, 52) Source(33, 13) + SourceIndex(0) -7 >Emitted(25, 62) Source(33, 45) + SourceIndex(0) -8 >Emitted(25, 64) Source(33, 14) + SourceIndex(0) -9 >Emitted(25, 85) Source(33, 27) + SourceIndex(0) -10>Emitted(25, 87) Source(33, 29) + SourceIndex(0) -11>Emitted(25, 110) Source(33, 44) + SourceIndex(0) -12>Emitted(25, 112) Source(33, 86) + SourceIndex(0) -13>Emitted(25, 113) Source(33, 87) + SourceIndex(0) -14>Emitted(25, 116) Source(33, 90) + SourceIndex(0) -15>Emitted(25, 117) Source(33, 91) + SourceIndex(0) -16>Emitted(25, 119) Source(33, 93) + SourceIndex(0) -17>Emitted(25, 120) Source(33, 94) + SourceIndex(0) -18>Emitted(25, 123) Source(33, 97) + SourceIndex(0) -19>Emitted(25, 124) Source(33, 98) + SourceIndex(0) -20>Emitted(25, 126) Source(33, 100) + SourceIndex(0) -21>Emitted(25, 127) Source(33, 101) + SourceIndex(0) -22>Emitted(25, 129) Source(33, 103) + SourceIndex(0) -23>Emitted(25, 131) Source(33, 105) + SourceIndex(0) -24>Emitted(25, 132) Source(33, 106) + SourceIndex(0) +4 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) +5 >Emitted(25, 10) Source(33, 6) + SourceIndex(0) +6 >Emitted(25, 50) Source(33, 84) + SourceIndex(0) +7 >Emitted(25, 52) Source(33, 13) + SourceIndex(0) +8 >Emitted(25, 62) Source(33, 45) + SourceIndex(0) +9 >Emitted(25, 64) Source(33, 14) + SourceIndex(0) +10>Emitted(25, 85) Source(33, 27) + SourceIndex(0) +11>Emitted(25, 87) Source(33, 29) + SourceIndex(0) +12>Emitted(25, 110) Source(33, 44) + SourceIndex(0) +13>Emitted(25, 112) Source(33, 86) + SourceIndex(0) +14>Emitted(25, 113) Source(33, 87) + SourceIndex(0) +15>Emitted(25, 116) Source(33, 90) + SourceIndex(0) +16>Emitted(25, 117) Source(33, 91) + SourceIndex(0) +17>Emitted(25, 119) Source(33, 93) + SourceIndex(0) +18>Emitted(25, 120) Source(33, 94) + SourceIndex(0) +19>Emitted(25, 123) Source(33, 97) + SourceIndex(0) +20>Emitted(25, 124) Source(33, 98) + SourceIndex(0) +21>Emitted(25, 126) Source(33, 100) + SourceIndex(0) +22>Emitted(25, 127) Source(33, 101) + SourceIndex(0) +23>Emitted(25, 129) Source(33, 103) + SourceIndex(0) +24>Emitted(25, 131) Source(33, 105) + SourceIndex(0) +25>Emitted(25, 132) Source(33, 106) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -1516,75 +1528,78 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^^ +20> ^ +21> ^^ +22> ^ +23> ^^ +24> ^^ +25> ^ 1-> > 2 >for 3 > -4 > (let -5 > [numberA2, nameA2, skillA2] = getRobot() -6 > -7 > numberA2 -8 > , -9 > nameA2 -10> , -11> skillA2 -12> ] = getRobot(), -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > ( +5 > +6 > let [numberA2, nameA2, skillA2] = getRobot() +7 > +8 > numberA2 +9 > , +10> nameA2 +11> , +12> skillA2 +13> ] = getRobot(), +14> i +15> = +16> 0 +17> ; +18> i +19> < +20> 1 +21> ; +22> i +23> ++ +24> ) +25> { 1->Emitted(49, 1) Source(59, 1) + SourceIndex(0) 2 >Emitted(49, 4) Source(59, 4) + SourceIndex(0) 3 >Emitted(49, 5) Source(59, 5) + SourceIndex(0) -4 >Emitted(49, 6) Source(59, 10) + SourceIndex(0) -5 >Emitted(49, 25) Source(59, 50) + SourceIndex(0) -6 >Emitted(49, 27) Source(59, 11) + SourceIndex(0) -7 >Emitted(49, 43) Source(59, 19) + SourceIndex(0) -8 >Emitted(49, 45) Source(59, 21) + SourceIndex(0) -9 >Emitted(49, 59) Source(59, 27) + SourceIndex(0) -10>Emitted(49, 61) Source(59, 29) + SourceIndex(0) -11>Emitted(49, 76) Source(59, 36) + SourceIndex(0) -12>Emitted(49, 78) Source(59, 52) + SourceIndex(0) -13>Emitted(49, 79) Source(59, 53) + SourceIndex(0) -14>Emitted(49, 82) Source(59, 56) + SourceIndex(0) -15>Emitted(49, 83) Source(59, 57) + SourceIndex(0) -16>Emitted(49, 85) Source(59, 59) + SourceIndex(0) -17>Emitted(49, 86) Source(59, 60) + SourceIndex(0) -18>Emitted(49, 89) Source(59, 63) + SourceIndex(0) -19>Emitted(49, 90) Source(59, 64) + SourceIndex(0) -20>Emitted(49, 92) Source(59, 66) + SourceIndex(0) -21>Emitted(49, 93) Source(59, 67) + SourceIndex(0) -22>Emitted(49, 95) Source(59, 69) + SourceIndex(0) -23>Emitted(49, 97) Source(59, 71) + SourceIndex(0) -24>Emitted(49, 98) Source(59, 72) + SourceIndex(0) +4 >Emitted(49, 6) Source(59, 6) + SourceIndex(0) +5 >Emitted(49, 10) Source(59, 6) + SourceIndex(0) +6 >Emitted(49, 25) Source(59, 50) + SourceIndex(0) +7 >Emitted(49, 27) Source(59, 11) + SourceIndex(0) +8 >Emitted(49, 43) Source(59, 19) + SourceIndex(0) +9 >Emitted(49, 45) Source(59, 21) + SourceIndex(0) +10>Emitted(49, 59) Source(59, 27) + SourceIndex(0) +11>Emitted(49, 61) Source(59, 29) + SourceIndex(0) +12>Emitted(49, 76) Source(59, 36) + SourceIndex(0) +13>Emitted(49, 78) Source(59, 52) + SourceIndex(0) +14>Emitted(49, 79) Source(59, 53) + SourceIndex(0) +15>Emitted(49, 82) Source(59, 56) + SourceIndex(0) +16>Emitted(49, 83) Source(59, 57) + SourceIndex(0) +17>Emitted(49, 85) Source(59, 59) + SourceIndex(0) +18>Emitted(49, 86) Source(59, 60) + SourceIndex(0) +19>Emitted(49, 89) Source(59, 63) + SourceIndex(0) +20>Emitted(49, 90) Source(59, 64) + SourceIndex(0) +21>Emitted(49, 92) Source(59, 66) + SourceIndex(0) +22>Emitted(49, 93) Source(59, 67) + SourceIndex(0) +23>Emitted(49, 95) Source(59, 69) + SourceIndex(0) +24>Emitted(49, 97) Source(59, 71) + SourceIndex(0) +25>Emitted(49, 98) Source(59, 72) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1628,75 +1643,78 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^ -12> ^^ -13> ^ -14> ^^^ -15> ^ -16> ^^ -17> ^ -18> ^^^ -19> ^ -20> ^^ -21> ^ -22> ^^ -23> ^^ -24> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^^ +20> ^ +21> ^^ +22> ^ +23> ^^ +24> ^^ +25> ^ 1-> > 2 >for 3 > -4 > (let -5 > [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] -6 > -7 > numberA2 -8 > , -9 > nameA2 -10> , -11> skillA2 -12> ] = [2, "trimmer", "trimming"], -13> i -14> = -15> 0 -16> ; -17> i -18> < -19> 1 -20> ; -21> i -22> ++ -23> ) -24> { +4 > ( +5 > +6 > let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"] +7 > +8 > numberA2 +9 > , +10> nameA2 +11> , +12> skillA2 +13> ] = [2, "trimmer", "trimming"], +14> i +15> = +16> 0 +17> ; +18> i +19> < +20> 1 +21> ; +22> i +23> ++ +24> ) +25> { 1->Emitted(52, 1) Source(62, 1) + SourceIndex(0) 2 >Emitted(52, 4) Source(62, 4) + SourceIndex(0) 3 >Emitted(52, 5) Source(62, 5) + SourceIndex(0) -4 >Emitted(52, 6) Source(62, 10) + SourceIndex(0) -5 >Emitted(52, 41) Source(62, 66) + SourceIndex(0) -6 >Emitted(52, 43) Source(62, 11) + SourceIndex(0) -7 >Emitted(52, 59) Source(62, 19) + SourceIndex(0) -8 >Emitted(52, 61) Source(62, 21) + SourceIndex(0) -9 >Emitted(52, 75) Source(62, 27) + SourceIndex(0) -10>Emitted(52, 77) Source(62, 29) + SourceIndex(0) -11>Emitted(52, 92) Source(62, 36) + SourceIndex(0) -12>Emitted(52, 94) Source(62, 68) + SourceIndex(0) -13>Emitted(52, 95) Source(62, 69) + SourceIndex(0) -14>Emitted(52, 98) Source(62, 72) + SourceIndex(0) -15>Emitted(52, 99) Source(62, 73) + SourceIndex(0) -16>Emitted(52, 101) Source(62, 75) + SourceIndex(0) -17>Emitted(52, 102) Source(62, 76) + SourceIndex(0) -18>Emitted(52, 105) Source(62, 79) + SourceIndex(0) -19>Emitted(52, 106) Source(62, 80) + SourceIndex(0) -20>Emitted(52, 108) Source(62, 82) + SourceIndex(0) -21>Emitted(52, 109) Source(62, 83) + SourceIndex(0) -22>Emitted(52, 111) Source(62, 85) + SourceIndex(0) -23>Emitted(52, 113) Source(62, 87) + SourceIndex(0) -24>Emitted(52, 114) Source(62, 88) + SourceIndex(0) +4 >Emitted(52, 6) Source(62, 6) + SourceIndex(0) +5 >Emitted(52, 10) Source(62, 6) + SourceIndex(0) +6 >Emitted(52, 41) Source(62, 66) + SourceIndex(0) +7 >Emitted(52, 43) Source(62, 11) + SourceIndex(0) +8 >Emitted(52, 59) Source(62, 19) + SourceIndex(0) +9 >Emitted(52, 61) Source(62, 21) + SourceIndex(0) +10>Emitted(52, 75) Source(62, 27) + SourceIndex(0) +11>Emitted(52, 77) Source(62, 29) + SourceIndex(0) +12>Emitted(52, 92) Source(62, 36) + SourceIndex(0) +13>Emitted(52, 94) Source(62, 68) + SourceIndex(0) +14>Emitted(52, 95) Source(62, 69) + SourceIndex(0) +15>Emitted(52, 98) Source(62, 72) + SourceIndex(0) +16>Emitted(52, 99) Source(62, 73) + SourceIndex(0) +17>Emitted(52, 101) Source(62, 75) + SourceIndex(0) +18>Emitted(52, 102) Source(62, 76) + SourceIndex(0) +19>Emitted(52, 105) Source(62, 79) + SourceIndex(0) +20>Emitted(52, 106) Source(62, 80) + SourceIndex(0) +21>Emitted(52, 108) Source(62, 82) + SourceIndex(0) +22>Emitted(52, 109) Source(62, 83) + SourceIndex(0) +23>Emitted(52, 111) Source(62, 85) + SourceIndex(0) +24>Emitted(52, 113) Source(62, 87) + SourceIndex(0) +25>Emitted(52, 114) Source(62, 88) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1852,81 +1870,84 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^ +26> ^^ +27> ^ 1-> > 2 >for 3 > -4 > (let -5 > [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() -6 > -7 > nameMA -8 > , -9 > [primarySkillA, secondarySkillA] -10> -11> primarySkillA -12> , -13> secondarySkillA -14> ]] = getMultiRobot(), -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > ( +5 > +6 > let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot() +7 > +8 > nameMA +9 > , +10> [primarySkillA, secondarySkillA] +11> +12> primarySkillA +13> , +14> secondarySkillA +15> ]] = getMultiRobot(), +16> i +17> = +18> 0 +19> ; +20> i +21> < +22> 1 +23> ; +24> i +25> ++ +26> ) +27> { 1->Emitted(58, 1) Source(68, 1) + SourceIndex(0) 2 >Emitted(58, 4) Source(68, 4) + SourceIndex(0) 3 >Emitted(58, 5) Source(68, 5) + SourceIndex(0) -4 >Emitted(58, 6) Source(68, 10) + SourceIndex(0) -5 >Emitted(58, 30) Source(68, 70) + SourceIndex(0) -6 >Emitted(58, 32) Source(68, 11) + SourceIndex(0) -7 >Emitted(58, 46) Source(68, 17) + SourceIndex(0) -8 >Emitted(58, 48) Source(68, 19) + SourceIndex(0) -9 >Emitted(58, 58) Source(68, 51) + SourceIndex(0) -10>Emitted(58, 60) Source(68, 20) + SourceIndex(0) -11>Emitted(58, 81) Source(68, 33) + SourceIndex(0) -12>Emitted(58, 83) Source(68, 35) + SourceIndex(0) -13>Emitted(58, 106) Source(68, 50) + SourceIndex(0) -14>Emitted(58, 108) Source(68, 72) + SourceIndex(0) -15>Emitted(58, 109) Source(68, 73) + SourceIndex(0) -16>Emitted(58, 112) Source(68, 76) + SourceIndex(0) -17>Emitted(58, 113) Source(68, 77) + SourceIndex(0) -18>Emitted(58, 115) Source(68, 79) + SourceIndex(0) -19>Emitted(58, 116) Source(68, 80) + SourceIndex(0) -20>Emitted(58, 119) Source(68, 83) + SourceIndex(0) -21>Emitted(58, 120) Source(68, 84) + SourceIndex(0) -22>Emitted(58, 122) Source(68, 86) + SourceIndex(0) -23>Emitted(58, 123) Source(68, 87) + SourceIndex(0) -24>Emitted(58, 125) Source(68, 89) + SourceIndex(0) -25>Emitted(58, 127) Source(68, 91) + SourceIndex(0) -26>Emitted(58, 128) Source(68, 92) + SourceIndex(0) +4 >Emitted(58, 6) Source(68, 6) + SourceIndex(0) +5 >Emitted(58, 10) Source(68, 6) + SourceIndex(0) +6 >Emitted(58, 30) Source(68, 70) + SourceIndex(0) +7 >Emitted(58, 32) Source(68, 11) + SourceIndex(0) +8 >Emitted(58, 46) Source(68, 17) + SourceIndex(0) +9 >Emitted(58, 48) Source(68, 19) + SourceIndex(0) +10>Emitted(58, 58) Source(68, 51) + SourceIndex(0) +11>Emitted(58, 60) Source(68, 20) + SourceIndex(0) +12>Emitted(58, 81) Source(68, 33) + SourceIndex(0) +13>Emitted(58, 83) Source(68, 35) + SourceIndex(0) +14>Emitted(58, 106) Source(68, 50) + SourceIndex(0) +15>Emitted(58, 108) Source(68, 72) + SourceIndex(0) +16>Emitted(58, 109) Source(68, 73) + SourceIndex(0) +17>Emitted(58, 112) Source(68, 76) + SourceIndex(0) +18>Emitted(58, 113) Source(68, 77) + SourceIndex(0) +19>Emitted(58, 115) Source(68, 79) + SourceIndex(0) +20>Emitted(58, 116) Source(68, 80) + SourceIndex(0) +21>Emitted(58, 119) Source(68, 83) + SourceIndex(0) +22>Emitted(58, 120) Source(68, 84) + SourceIndex(0) +23>Emitted(58, 122) Source(68, 86) + SourceIndex(0) +24>Emitted(58, 123) Source(68, 87) + SourceIndex(0) +25>Emitted(58, 125) Source(68, 89) + SourceIndex(0) +26>Emitted(58, 127) Source(68, 91) + SourceIndex(0) +27>Emitted(58, 128) Source(68, 92) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -1970,81 +1991,84 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^ +26> ^^ +27> ^ 1-> > 2 >for 3 > -4 > (let -5 > [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] -6 > -7 > nameMA -8 > , -9 > [primarySkillA, secondarySkillA] -10> -11> primarySkillA -12> , -13> secondarySkillA -14> ]] = ["trimmer", ["trimming", "edging"]], -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > ( +5 > +6 > let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]] +7 > +8 > nameMA +9 > , +10> [primarySkillA, secondarySkillA] +11> +12> primarySkillA +13> , +14> secondarySkillA +15> ]] = ["trimmer", ["trimming", "edging"]], +16> i +17> = +18> 0 +19> ; +20> i +21> < +22> 1 +23> ; +24> i +25> ++ +26> ) +27> { 1->Emitted(61, 1) Source(71, 1) + SourceIndex(0) 2 >Emitted(61, 4) Source(71, 4) + SourceIndex(0) 3 >Emitted(61, 5) Source(71, 5) + SourceIndex(0) -4 >Emitted(61, 6) Source(71, 10) + SourceIndex(0) -5 >Emitted(61, 50) Source(71, 90) + SourceIndex(0) -6 >Emitted(61, 52) Source(71, 11) + SourceIndex(0) -7 >Emitted(61, 66) Source(71, 17) + SourceIndex(0) -8 >Emitted(61, 68) Source(71, 19) + SourceIndex(0) -9 >Emitted(61, 78) Source(71, 51) + SourceIndex(0) -10>Emitted(61, 80) Source(71, 20) + SourceIndex(0) -11>Emitted(61, 101) Source(71, 33) + SourceIndex(0) -12>Emitted(61, 103) Source(71, 35) + SourceIndex(0) -13>Emitted(61, 126) Source(71, 50) + SourceIndex(0) -14>Emitted(61, 128) Source(71, 92) + SourceIndex(0) -15>Emitted(61, 129) Source(71, 93) + SourceIndex(0) -16>Emitted(61, 132) Source(71, 96) + SourceIndex(0) -17>Emitted(61, 133) Source(71, 97) + SourceIndex(0) -18>Emitted(61, 135) Source(71, 99) + SourceIndex(0) -19>Emitted(61, 136) Source(71, 100) + SourceIndex(0) -20>Emitted(61, 139) Source(71, 103) + SourceIndex(0) -21>Emitted(61, 140) Source(71, 104) + SourceIndex(0) -22>Emitted(61, 142) Source(71, 106) + SourceIndex(0) -23>Emitted(61, 143) Source(71, 107) + SourceIndex(0) -24>Emitted(61, 145) Source(71, 109) + SourceIndex(0) -25>Emitted(61, 147) Source(71, 111) + SourceIndex(0) -26>Emitted(61, 148) Source(71, 112) + SourceIndex(0) +4 >Emitted(61, 6) Source(71, 6) + SourceIndex(0) +5 >Emitted(61, 10) Source(71, 6) + SourceIndex(0) +6 >Emitted(61, 50) Source(71, 90) + SourceIndex(0) +7 >Emitted(61, 52) Source(71, 11) + SourceIndex(0) +8 >Emitted(61, 66) Source(71, 17) + SourceIndex(0) +9 >Emitted(61, 68) Source(71, 19) + SourceIndex(0) +10>Emitted(61, 78) Source(71, 51) + SourceIndex(0) +11>Emitted(61, 80) Source(71, 20) + SourceIndex(0) +12>Emitted(61, 101) Source(71, 33) + SourceIndex(0) +13>Emitted(61, 103) Source(71, 35) + SourceIndex(0) +14>Emitted(61, 126) Source(71, 50) + SourceIndex(0) +15>Emitted(61, 128) Source(71, 92) + SourceIndex(0) +16>Emitted(61, 129) Source(71, 93) + SourceIndex(0) +17>Emitted(61, 132) Source(71, 96) + SourceIndex(0) +18>Emitted(61, 133) Source(71, 97) + SourceIndex(0) +19>Emitted(61, 135) Source(71, 99) + SourceIndex(0) +20>Emitted(61, 136) Source(71, 100) + SourceIndex(0) +21>Emitted(61, 139) Source(71, 103) + SourceIndex(0) +22>Emitted(61, 140) Source(71, 104) + SourceIndex(0) +23>Emitted(61, 142) Source(71, 106) + SourceIndex(0) +24>Emitted(61, 143) Source(71, 107) + SourceIndex(0) +25>Emitted(61, 145) Source(71, 109) + SourceIndex(0) +26>Emitted(61, 147) Source(71, 111) + SourceIndex(0) +27>Emitted(61, 148) Source(71, 112) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2189,69 +2213,72 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^ +13> ^^^ +14> ^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^ +22> ^^ +23> ^ 1-> > 2 >for 3 > -4 > (let -5 > [numberA3, ...robotAInfo] = getRobot() -6 > -7 > numberA3 -8 > , -9 > ...robotAInfo -10> ] = getRobot(), -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > ( +5 > +6 > let [numberA3, ...robotAInfo] = getRobot() +7 > +8 > numberA3 +9 > , +10> ...robotAInfo +11> ] = getRobot(), +12> i +13> = +14> 0 +15> ; +16> i +17> < +18> 1 +19> ; +20> i +21> ++ +22> ) +23> { 1->Emitted(67, 1) Source(78, 1) + SourceIndex(0) 2 >Emitted(67, 4) Source(78, 4) + SourceIndex(0) 3 >Emitted(67, 5) Source(78, 5) + SourceIndex(0) -4 >Emitted(67, 6) Source(78, 10) + SourceIndex(0) -5 >Emitted(67, 25) Source(78, 48) + SourceIndex(0) -6 >Emitted(67, 27) Source(78, 11) + SourceIndex(0) -7 >Emitted(67, 43) Source(78, 19) + SourceIndex(0) -8 >Emitted(67, 45) Source(78, 21) + SourceIndex(0) -9 >Emitted(67, 69) Source(78, 34) + SourceIndex(0) -10>Emitted(67, 71) Source(78, 50) + SourceIndex(0) -11>Emitted(67, 72) Source(78, 51) + SourceIndex(0) -12>Emitted(67, 75) Source(78, 54) + SourceIndex(0) -13>Emitted(67, 76) Source(78, 55) + SourceIndex(0) -14>Emitted(67, 78) Source(78, 57) + SourceIndex(0) -15>Emitted(67, 79) Source(78, 58) + SourceIndex(0) -16>Emitted(67, 82) Source(78, 61) + SourceIndex(0) -17>Emitted(67, 83) Source(78, 62) + SourceIndex(0) -18>Emitted(67, 85) Source(78, 64) + SourceIndex(0) -19>Emitted(67, 86) Source(78, 65) + SourceIndex(0) -20>Emitted(67, 88) Source(78, 67) + SourceIndex(0) -21>Emitted(67, 90) Source(78, 69) + SourceIndex(0) -22>Emitted(67, 91) Source(78, 70) + SourceIndex(0) +4 >Emitted(67, 6) Source(78, 6) + SourceIndex(0) +5 >Emitted(67, 10) Source(78, 6) + SourceIndex(0) +6 >Emitted(67, 25) Source(78, 48) + SourceIndex(0) +7 >Emitted(67, 27) Source(78, 11) + SourceIndex(0) +8 >Emitted(67, 43) Source(78, 19) + SourceIndex(0) +9 >Emitted(67, 45) Source(78, 21) + SourceIndex(0) +10>Emitted(67, 69) Source(78, 34) + SourceIndex(0) +11>Emitted(67, 71) Source(78, 50) + SourceIndex(0) +12>Emitted(67, 72) Source(78, 51) + SourceIndex(0) +13>Emitted(67, 75) Source(78, 54) + SourceIndex(0) +14>Emitted(67, 76) Source(78, 55) + SourceIndex(0) +15>Emitted(67, 78) Source(78, 57) + SourceIndex(0) +16>Emitted(67, 79) Source(78, 58) + SourceIndex(0) +17>Emitted(67, 82) Source(78, 61) + SourceIndex(0) +18>Emitted(67, 83) Source(78, 62) + SourceIndex(0) +19>Emitted(67, 85) Source(78, 64) + SourceIndex(0) +20>Emitted(67, 86) Source(78, 65) + SourceIndex(0) +21>Emitted(67, 88) Source(78, 67) + SourceIndex(0) +22>Emitted(67, 90) Source(78, 69) + SourceIndex(0) +23>Emitted(67, 91) Source(78, 70) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2295,69 +2322,72 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^ +13> ^^^ +14> ^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^ +22> ^^ +23> ^ 1-> > 2 >for 3 > -4 > (let -5 > [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] -6 > -7 > numberA3 -8 > , -9 > ...robotAInfo -10> ] = [2, "trimmer", "trimming"], -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > ( +5 > +6 > let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"] +7 > +8 > numberA3 +9 > , +10> ...robotAInfo +11> ] = [2, "trimmer", "trimming"], +12> i +13> = +14> 0 +15> ; +16> i +17> < +18> 1 +19> ; +20> i +21> ++ +22> ) +23> { 1->Emitted(70, 1) Source(81, 1) + SourceIndex(0) 2 >Emitted(70, 4) Source(81, 4) + SourceIndex(0) 3 >Emitted(70, 5) Source(81, 5) + SourceIndex(0) -4 >Emitted(70, 6) Source(81, 10) + SourceIndex(0) -5 >Emitted(70, 41) Source(81, 64) + SourceIndex(0) -6 >Emitted(70, 43) Source(81, 11) + SourceIndex(0) -7 >Emitted(70, 59) Source(81, 19) + SourceIndex(0) -8 >Emitted(70, 61) Source(81, 21) + SourceIndex(0) -9 >Emitted(70, 85) Source(81, 34) + SourceIndex(0) -10>Emitted(70, 87) Source(81, 66) + SourceIndex(0) -11>Emitted(70, 88) Source(81, 67) + SourceIndex(0) -12>Emitted(70, 91) Source(81, 70) + SourceIndex(0) -13>Emitted(70, 92) Source(81, 71) + SourceIndex(0) -14>Emitted(70, 94) Source(81, 73) + SourceIndex(0) -15>Emitted(70, 95) Source(81, 74) + SourceIndex(0) -16>Emitted(70, 98) Source(81, 77) + SourceIndex(0) -17>Emitted(70, 99) Source(81, 78) + SourceIndex(0) -18>Emitted(70, 101) Source(81, 80) + SourceIndex(0) -19>Emitted(70, 102) Source(81, 81) + SourceIndex(0) -20>Emitted(70, 104) Source(81, 83) + SourceIndex(0) -21>Emitted(70, 106) Source(81, 85) + SourceIndex(0) -22>Emitted(70, 107) Source(81, 86) + SourceIndex(0) +4 >Emitted(70, 6) Source(81, 6) + SourceIndex(0) +5 >Emitted(70, 10) Source(81, 6) + SourceIndex(0) +6 >Emitted(70, 41) Source(81, 64) + SourceIndex(0) +7 >Emitted(70, 43) Source(81, 11) + SourceIndex(0) +8 >Emitted(70, 59) Source(81, 19) + SourceIndex(0) +9 >Emitted(70, 61) Source(81, 21) + SourceIndex(0) +10>Emitted(70, 85) Source(81, 34) + SourceIndex(0) +11>Emitted(70, 87) Source(81, 66) + SourceIndex(0) +12>Emitted(70, 88) Source(81, 67) + SourceIndex(0) +13>Emitted(70, 91) Source(81, 70) + SourceIndex(0) +14>Emitted(70, 92) Source(81, 71) + SourceIndex(0) +15>Emitted(70, 94) Source(81, 73) + SourceIndex(0) +16>Emitted(70, 95) Source(81, 74) + SourceIndex(0) +17>Emitted(70, 98) Source(81, 77) + SourceIndex(0) +18>Emitted(70, 99) Source(81, 78) + SourceIndex(0) +19>Emitted(70, 101) Source(81, 80) + SourceIndex(0) +20>Emitted(70, 102) Source(81, 81) + SourceIndex(0) +21>Emitted(70, 104) Source(81, 83) + SourceIndex(0) +22>Emitted(70, 106) Source(81, 85) + SourceIndex(0) +23>Emitted(70, 107) Source(81, 86) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map index a007a60e41f..046cd61ad40 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt index 87d063f6ca5..186dc717e61 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPattern2.sourcemap.txt @@ -1043,9 +1043,9 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 2 >for 3 > 4 > ( -5 > -6 > [numberB] = robotA -7 > +5 > [ +6 > numberB +7 > ] = 8 > robotA 9 > 10> , @@ -1065,8 +1065,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 2 >Emitted(33, 4) Source(43, 4) + SourceIndex(0) 3 >Emitted(33, 5) Source(43, 5) + SourceIndex(0) 4 >Emitted(33, 6) Source(43, 6) + SourceIndex(0) -5 >Emitted(33, 7) Source(43, 6) + SourceIndex(0) -6 >Emitted(33, 26) Source(43, 24) + SourceIndex(0) +5 >Emitted(33, 7) Source(43, 7) + SourceIndex(0) +6 >Emitted(33, 26) Source(43, 14) + SourceIndex(0) 7 >Emitted(33, 28) Source(43, 18) + SourceIndex(0) 8 >Emitted(33, 34) Source(43, 24) + SourceIndex(0) 9 >Emitted(33, 35) Source(43, 24) + SourceIndex(0) @@ -1152,8 +1152,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 5 > 6 > [numberB] = getRobot() 7 > -8 > [numberB] = getRobot() -9 > +8 > numberB +9 > ] = getRobot() 10> , 11> i 12> = @@ -1173,8 +1173,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 4 >Emitted(36, 6) Source(46, 6) + SourceIndex(0) 5 >Emitted(36, 7) Source(46, 6) + SourceIndex(0) 6 >Emitted(36, 22) Source(46, 28) + SourceIndex(0) -7 >Emitted(36, 24) Source(46, 6) + SourceIndex(0) -8 >Emitted(36, 39) Source(46, 28) + SourceIndex(0) +7 >Emitted(36, 24) Source(46, 7) + SourceIndex(0) +8 >Emitted(36, 39) Source(46, 14) + SourceIndex(0) 9 >Emitted(36, 44) Source(46, 28) + SourceIndex(0) 10>Emitted(36, 46) Source(46, 30) + SourceIndex(0) 11>Emitted(36, 47) Source(46, 31) + SourceIndex(0) @@ -1258,8 +1258,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 5 > 6 > [numberB] = [2, "trimmer", "trimming"] 7 > -8 > [numberB] = [2, "trimmer", "trimming"] -9 > +8 > numberB +9 > ] = [2, "trimmer", "trimming"] 10> , 11> i 12> = @@ -1279,8 +1279,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 4 >Emitted(39, 6) Source(49, 6) + SourceIndex(0) 5 >Emitted(39, 7) Source(49, 6) + SourceIndex(0) 6 >Emitted(39, 38) Source(49, 44) + SourceIndex(0) -7 >Emitted(39, 40) Source(49, 6) + SourceIndex(0) -8 >Emitted(39, 55) Source(49, 44) + SourceIndex(0) +7 >Emitted(39, 40) Source(49, 7) + SourceIndex(0) +8 >Emitted(39, 55) Source(49, 14) + SourceIndex(0) 9 >Emitted(39, 60) Source(49, 44) + SourceIndex(0) 10>Emitted(39, 62) Source(49, 46) + SourceIndex(0) 11>Emitted(39, 63) Source(49, 47) + SourceIndex(0) @@ -1361,9 +1361,9 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 2 >for 3 > 4 > ( -5 > -6 > [nameB] = multiRobotA -7 > +5 > [ +6 > nameB +7 > ] = 8 > multiRobotA 9 > 10> , @@ -1383,8 +1383,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 2 >Emitted(42, 4) Source(52, 4) + SourceIndex(0) 3 >Emitted(42, 5) Source(52, 5) + SourceIndex(0) 4 >Emitted(42, 6) Source(52, 6) + SourceIndex(0) -5 >Emitted(42, 7) Source(52, 6) + SourceIndex(0) -6 >Emitted(42, 29) Source(52, 27) + SourceIndex(0) +5 >Emitted(42, 7) Source(52, 7) + SourceIndex(0) +6 >Emitted(42, 29) Source(52, 12) + SourceIndex(0) 7 >Emitted(42, 31) Source(52, 16) + SourceIndex(0) 8 >Emitted(42, 42) Source(52, 27) + SourceIndex(0) 9 >Emitted(42, 43) Source(52, 27) + SourceIndex(0) @@ -1470,8 +1470,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 5 > 6 > [nameB] = getMultiRobot() 7 > -8 > [nameB] = getMultiRobot() -9 > +8 > nameB +9 > ] = getMultiRobot() 10> , 11> i 12> = @@ -1491,8 +1491,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 4 >Emitted(45, 6) Source(55, 6) + SourceIndex(0) 5 >Emitted(45, 7) Source(55, 6) + SourceIndex(0) 6 >Emitted(45, 27) Source(55, 31) + SourceIndex(0) -7 >Emitted(45, 29) Source(55, 6) + SourceIndex(0) -8 >Emitted(45, 42) Source(55, 31) + SourceIndex(0) +7 >Emitted(45, 29) Source(55, 7) + SourceIndex(0) +8 >Emitted(45, 42) Source(55, 12) + SourceIndex(0) 9 >Emitted(45, 47) Source(55, 31) + SourceIndex(0) 10>Emitted(45, 49) Source(55, 33) + SourceIndex(0) 11>Emitted(45, 50) Source(55, 34) + SourceIndex(0) @@ -1576,8 +1576,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 5 > 6 > [nameB] = ["trimmer", ["trimming", "edging"]] 7 > -8 > [nameB] = ["trimmer", ["trimming", "edging"]] -9 > +8 > nameB +9 > ] = ["trimmer", ["trimming", "edging"]] 10> , 11> i 12> = @@ -1597,8 +1597,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 4 >Emitted(48, 6) Source(58, 6) + SourceIndex(0) 5 >Emitted(48, 7) Source(58, 6) + SourceIndex(0) 6 >Emitted(48, 47) Source(58, 51) + SourceIndex(0) -7 >Emitted(48, 49) Source(58, 6) + SourceIndex(0) -8 >Emitted(48, 62) Source(58, 51) + SourceIndex(0) +7 >Emitted(48, 49) Source(58, 7) + SourceIndex(0) +8 >Emitted(48, 62) Source(58, 12) + SourceIndex(0) 9 >Emitted(48, 67) Source(58, 51) + SourceIndex(0) 10>Emitted(48, 69) Source(58, 53) + SourceIndex(0) 11>Emitted(48, 70) Source(58, 54) + SourceIndex(0) @@ -2743,9 +2743,9 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 2 >for 3 > 4 > ( -5 > -6 > [...multiRobotAInfo] = multiRobotA -7 > +5 > [ +6 > ...multiRobotAInfo +7 > ] = 8 > multiRobotA 9 > 10> , @@ -2765,8 +2765,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 2 >Emitted(78, 4) Source(90, 4) + SourceIndex(0) 3 >Emitted(78, 5) Source(90, 5) + SourceIndex(0) 4 >Emitted(78, 6) Source(90, 6) + SourceIndex(0) -5 >Emitted(78, 7) Source(90, 6) + SourceIndex(0) -6 >Emitted(78, 45) Source(90, 40) + SourceIndex(0) +5 >Emitted(78, 7) Source(90, 7) + SourceIndex(0) +6 >Emitted(78, 45) Source(90, 25) + SourceIndex(0) 7 >Emitted(78, 47) Source(90, 29) + SourceIndex(0) 8 >Emitted(78, 58) Source(90, 40) + SourceIndex(0) 9 >Emitted(78, 59) Source(90, 40) + SourceIndex(0) @@ -2852,8 +2852,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 5 > 6 > [...multiRobotAInfo] = getMultiRobot() 7 > -8 > [...multiRobotAInfo] = getMultiRobot() -9 > +8 > ...multiRobotAInfo +9 > ] = getMultiRobot() 10> , 11> i 12> = @@ -2873,8 +2873,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 4 >Emitted(81, 6) Source(93, 6) + SourceIndex(0) 5 >Emitted(81, 7) Source(93, 6) + SourceIndex(0) 6 >Emitted(81, 27) Source(93, 44) + SourceIndex(0) -7 >Emitted(81, 29) Source(93, 6) + SourceIndex(0) -8 >Emitted(81, 58) Source(93, 44) + SourceIndex(0) +7 >Emitted(81, 29) Source(93, 7) + SourceIndex(0) +8 >Emitted(81, 58) Source(93, 25) + SourceIndex(0) 9 >Emitted(81, 63) Source(93, 44) + SourceIndex(0) 10>Emitted(81, 65) Source(93, 46) + SourceIndex(0) 11>Emitted(81, 66) Source(93, 47) + SourceIndex(0) @@ -2958,8 +2958,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 5 > 6 > [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] 7 > -8 > [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] -9 > +8 > ...multiRobotAInfo +9 > ] = ["trimmer", ["trimming", "edging"]] 10> , 11> i 12> = @@ -2979,8 +2979,8 @@ sourceFile:sourceMapValidationDestructuringForArrayBindingPattern2.ts 4 >Emitted(84, 6) Source(96, 6) + SourceIndex(0) 5 >Emitted(84, 7) Source(96, 6) + SourceIndex(0) 6 >Emitted(84, 47) Source(96, 83) + SourceIndex(0) -7 >Emitted(84, 49) Source(96, 6) + SourceIndex(0) -8 >Emitted(84, 78) Source(96, 83) + SourceIndex(0) +7 >Emitted(84, 49) Source(96, 7) + SourceIndex(0) +8 >Emitted(84, 78) Source(96, 25) + SourceIndex(0) 9 >Emitted(84, 83) Source(96, 83) + SourceIndex(0) 10>Emitted(84, 85) Source(96, 85) + SourceIndex(0) 11>Emitted(84, 86) Source(96, 86) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map index ba21829737b..d9f2e446f04 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt index d68da51e880..61689b46799 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern.sourcemap.txt @@ -917,69 +917,72 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^ +13> ^^^ +14> ^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^ +22> ^^ +23> ^ 1-> > 2 >for 3 > -4 > (let -5 > {name: nameA, skill: skillA } = getRobot() -6 > -7 > name: nameA -8 > , -9 > skill: skillA -10> } = getRobot(), -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > ( +5 > +6 > let {name: nameA, skill: skillA } = getRobot() +7 > +8 > name: nameA +9 > , +10> skill: skillA +11> } = getRobot(), +12> i +13> = +14> 0 +15> ; +16> i +17> < +18> 1 +19> ; +20> i +21> ++ +22> ) +23> { 1->Emitted(30, 1) Source(50, 1) + SourceIndex(0) 2 >Emitted(30, 4) Source(50, 4) + SourceIndex(0) 3 >Emitted(30, 5) Source(50, 5) + SourceIndex(0) -4 >Emitted(30, 6) Source(50, 10) + SourceIndex(0) -5 >Emitted(30, 25) Source(50, 52) + SourceIndex(0) -6 >Emitted(30, 27) Source(50, 11) + SourceIndex(0) -7 >Emitted(30, 42) Source(50, 22) + SourceIndex(0) -8 >Emitted(30, 44) Source(50, 24) + SourceIndex(0) -9 >Emitted(30, 61) Source(50, 37) + SourceIndex(0) -10>Emitted(30, 63) Source(50, 54) + SourceIndex(0) -11>Emitted(30, 64) Source(50, 55) + SourceIndex(0) -12>Emitted(30, 67) Source(50, 58) + SourceIndex(0) -13>Emitted(30, 68) Source(50, 59) + SourceIndex(0) -14>Emitted(30, 70) Source(50, 61) + SourceIndex(0) -15>Emitted(30, 71) Source(50, 62) + SourceIndex(0) -16>Emitted(30, 74) Source(50, 65) + SourceIndex(0) -17>Emitted(30, 75) Source(50, 66) + SourceIndex(0) -18>Emitted(30, 77) Source(50, 68) + SourceIndex(0) -19>Emitted(30, 78) Source(50, 69) + SourceIndex(0) -20>Emitted(30, 80) Source(50, 71) + SourceIndex(0) -21>Emitted(30, 82) Source(50, 73) + SourceIndex(0) -22>Emitted(30, 83) Source(50, 74) + SourceIndex(0) +4 >Emitted(30, 6) Source(50, 6) + SourceIndex(0) +5 >Emitted(30, 10) Source(50, 6) + SourceIndex(0) +6 >Emitted(30, 25) Source(50, 52) + SourceIndex(0) +7 >Emitted(30, 27) Source(50, 11) + SourceIndex(0) +8 >Emitted(30, 42) Source(50, 22) + SourceIndex(0) +9 >Emitted(30, 44) Source(50, 24) + SourceIndex(0) +10>Emitted(30, 61) Source(50, 37) + SourceIndex(0) +11>Emitted(30, 63) Source(50, 54) + SourceIndex(0) +12>Emitted(30, 64) Source(50, 55) + SourceIndex(0) +13>Emitted(30, 67) Source(50, 58) + SourceIndex(0) +14>Emitted(30, 68) Source(50, 59) + SourceIndex(0) +15>Emitted(30, 70) Source(50, 61) + SourceIndex(0) +16>Emitted(30, 71) Source(50, 62) + SourceIndex(0) +17>Emitted(30, 74) Source(50, 65) + SourceIndex(0) +18>Emitted(30, 75) Source(50, 66) + SourceIndex(0) +19>Emitted(30, 77) Source(50, 68) + SourceIndex(0) +20>Emitted(30, 78) Source(50, 69) + SourceIndex(0) +21>Emitted(30, 80) Source(50, 71) + SourceIndex(0) +22>Emitted(30, 82) Source(50, 73) + SourceIndex(0) +23>Emitted(30, 83) Source(50, 74) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1023,69 +1026,72 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^ -21> ^^ -22> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^ +13> ^^^ +14> ^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^ +22> ^^ +23> ^ 1-> > 2 >for 3 > -4 > (let -5 > {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } -6 > -7 > name: nameA -8 > , -9 > skill: skillA -10> } = { name: "trimmer", skill: "trimming" }, -11> i -12> = -13> 0 -14> ; -15> i -16> < -17> 1 -18> ; -19> i -20> ++ -21> ) -22> { +4 > ( +5 > +6 > let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" } +7 > +8 > name: nameA +9 > , +10> skill: skillA +11> } = { name: "trimmer", skill: "trimming" }, +12> i +13> = +14> 0 +15> ; +16> i +17> < +18> 1 +19> ; +20> i +21> ++ +22> ) +23> { 1->Emitted(33, 1) Source(53, 1) + SourceIndex(0) 2 >Emitted(33, 4) Source(53, 4) + SourceIndex(0) 3 >Emitted(33, 5) Source(53, 5) + SourceIndex(0) -4 >Emitted(33, 6) Source(53, 10) + SourceIndex(0) -5 >Emitted(33, 53) Source(53, 87) + SourceIndex(0) -6 >Emitted(33, 55) Source(53, 11) + SourceIndex(0) -7 >Emitted(33, 70) Source(53, 22) + SourceIndex(0) -8 >Emitted(33, 72) Source(53, 24) + SourceIndex(0) -9 >Emitted(33, 89) Source(53, 37) + SourceIndex(0) -10>Emitted(33, 91) Source(53, 89) + SourceIndex(0) -11>Emitted(33, 92) Source(53, 90) + SourceIndex(0) -12>Emitted(33, 95) Source(53, 93) + SourceIndex(0) -13>Emitted(33, 96) Source(53, 94) + SourceIndex(0) -14>Emitted(33, 98) Source(53, 96) + SourceIndex(0) -15>Emitted(33, 99) Source(53, 97) + SourceIndex(0) -16>Emitted(33, 102) Source(53, 100) + SourceIndex(0) -17>Emitted(33, 103) Source(53, 101) + SourceIndex(0) -18>Emitted(33, 105) Source(53, 103) + SourceIndex(0) -19>Emitted(33, 106) Source(53, 104) + SourceIndex(0) -20>Emitted(33, 108) Source(53, 106) + SourceIndex(0) -21>Emitted(33, 110) Source(53, 108) + SourceIndex(0) -22>Emitted(33, 111) Source(53, 109) + SourceIndex(0) +4 >Emitted(33, 6) Source(53, 6) + SourceIndex(0) +5 >Emitted(33, 10) Source(53, 6) + SourceIndex(0) +6 >Emitted(33, 53) Source(53, 87) + SourceIndex(0) +7 >Emitted(33, 55) Source(53, 11) + SourceIndex(0) +8 >Emitted(33, 70) Source(53, 22) + SourceIndex(0) +9 >Emitted(33, 72) Source(53, 24) + SourceIndex(0) +10>Emitted(33, 89) Source(53, 37) + SourceIndex(0) +11>Emitted(33, 91) Source(53, 89) + SourceIndex(0) +12>Emitted(33, 92) Source(53, 90) + SourceIndex(0) +13>Emitted(33, 95) Source(53, 93) + SourceIndex(0) +14>Emitted(33, 96) Source(53, 94) + SourceIndex(0) +15>Emitted(33, 98) Source(53, 96) + SourceIndex(0) +16>Emitted(33, 99) Source(53, 97) + SourceIndex(0) +17>Emitted(33, 102) Source(53, 100) + SourceIndex(0) +18>Emitted(33, 103) Source(53, 101) + SourceIndex(0) +19>Emitted(33, 105) Source(53, 103) + SourceIndex(0) +20>Emitted(33, 106) Source(53, 104) + SourceIndex(0) +21>Emitted(33, 108) Source(53, 106) + SourceIndex(0) +22>Emitted(33, 110) Source(53, 108) + SourceIndex(0) +23>Emitted(33, 111) Source(53, 109) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1241,81 +1247,84 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^ +26> ^^ +27> ^ 1-> > 2 >for 3 > -4 > (let -5 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() -6 > -7 > name: nameA -8 > , -9 > skills: { primary: primaryA, secondary: secondaryA } -10> -11> primary: primaryA -12> , -13> secondary: secondaryA -14> } } = getMultiRobot(), -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +4 > ( +5 > +6 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() +7 > +8 > name: nameA +9 > , +10> skills: { primary: primaryA, secondary: secondaryA } +11> +12> primary: primaryA +13> , +14> secondary: secondaryA +15> } } = getMultiRobot(), +16> i +17> = +18> 0 +19> ; +20> i +21> < +22> 1 +23> ; +24> i +25> ++ +26> ) +27> { 1->Emitted(39, 1) Source(59, 1) + SourceIndex(0) 2 >Emitted(39, 4) Source(59, 4) + SourceIndex(0) 3 >Emitted(39, 5) Source(59, 5) + SourceIndex(0) -4 >Emitted(39, 6) Source(59, 10) + SourceIndex(0) -5 >Emitted(39, 30) Source(59, 96) + SourceIndex(0) -6 >Emitted(39, 32) Source(59, 11) + SourceIndex(0) -7 >Emitted(39, 47) Source(59, 22) + SourceIndex(0) -8 >Emitted(39, 49) Source(59, 24) + SourceIndex(0) -9 >Emitted(39, 63) Source(59, 76) + SourceIndex(0) -10>Emitted(39, 65) Source(59, 34) + SourceIndex(0) -11>Emitted(39, 86) Source(59, 51) + SourceIndex(0) -12>Emitted(39, 88) Source(59, 53) + SourceIndex(0) -13>Emitted(39, 113) Source(59, 74) + SourceIndex(0) -14>Emitted(39, 115) Source(59, 98) + SourceIndex(0) -15>Emitted(39, 116) Source(59, 99) + SourceIndex(0) -16>Emitted(39, 119) Source(59, 102) + SourceIndex(0) -17>Emitted(39, 120) Source(59, 103) + SourceIndex(0) -18>Emitted(39, 122) Source(59, 105) + SourceIndex(0) -19>Emitted(39, 123) Source(59, 106) + SourceIndex(0) -20>Emitted(39, 126) Source(59, 109) + SourceIndex(0) -21>Emitted(39, 127) Source(59, 110) + SourceIndex(0) -22>Emitted(39, 129) Source(59, 112) + SourceIndex(0) -23>Emitted(39, 130) Source(59, 113) + SourceIndex(0) -24>Emitted(39, 132) Source(59, 115) + SourceIndex(0) -25>Emitted(39, 134) Source(59, 117) + SourceIndex(0) -26>Emitted(39, 135) Source(59, 118) + SourceIndex(0) +4 >Emitted(39, 6) Source(59, 6) + SourceIndex(0) +5 >Emitted(39, 10) Source(59, 6) + SourceIndex(0) +6 >Emitted(39, 30) Source(59, 96) + SourceIndex(0) +7 >Emitted(39, 32) Source(59, 11) + SourceIndex(0) +8 >Emitted(39, 47) Source(59, 22) + SourceIndex(0) +9 >Emitted(39, 49) Source(59, 24) + SourceIndex(0) +10>Emitted(39, 63) Source(59, 76) + SourceIndex(0) +11>Emitted(39, 65) Source(59, 34) + SourceIndex(0) +12>Emitted(39, 86) Source(59, 51) + SourceIndex(0) +13>Emitted(39, 88) Source(59, 53) + SourceIndex(0) +14>Emitted(39, 113) Source(59, 74) + SourceIndex(0) +15>Emitted(39, 115) Source(59, 98) + SourceIndex(0) +16>Emitted(39, 116) Source(59, 99) + SourceIndex(0) +17>Emitted(39, 119) Source(59, 102) + SourceIndex(0) +18>Emitted(39, 120) Source(59, 103) + SourceIndex(0) +19>Emitted(39, 122) Source(59, 105) + SourceIndex(0) +20>Emitted(39, 123) Source(59, 106) + SourceIndex(0) +21>Emitted(39, 126) Source(59, 109) + SourceIndex(0) +22>Emitted(39, 127) Source(59, 110) + SourceIndex(0) +23>Emitted(39, 129) Source(59, 112) + SourceIndex(0) +24>Emitted(39, 130) Source(59, 113) + SourceIndex(0) +25>Emitted(39, 132) Source(59, 115) + SourceIndex(0) +26>Emitted(39, 134) Source(59, 117) + SourceIndex(0) +27>Emitted(39, 135) Source(59, 118) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ @@ -1359,84 +1368,87 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^ -12> ^^ -13> ^^^^^^^^^^^^^^^^^^^^^^^^^ -14> ^^ -15> ^ -16> ^^^ -17> ^ -18> ^^ -19> ^ -20> ^^^ -21> ^ -22> ^^ -23> ^ -24> ^^ -25> ^^ -26> ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^ +26> ^^ +27> ^ 1-> > 2 >for 3 > -4 > (let -5 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } -6 > -7 > name: nameA -8 > , -9 > skills: { primary: primaryA, secondary: secondaryA } -10> -11> primary: primaryA -12> , -13> secondary: secondaryA -14> } } = +4 > ( +5 > +6 > let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > name: nameA +9 > , +10> skills: { primary: primaryA, secondary: secondaryA } +11> +12> primary: primaryA +13> , +14> secondary: secondaryA +15> } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, > -15> i -16> = -17> 0 -18> ; -19> i -20> < -21> 1 -22> ; -23> i -24> ++ -25> ) -26> { +16> i +17> = +18> 0 +19> ; +20> i +21> < +22> 1 +23> ; +24> i +25> ++ +26> ) +27> { 1->Emitted(42, 1) Source(62, 1) + SourceIndex(0) 2 >Emitted(42, 4) Source(62, 4) + SourceIndex(0) 3 >Emitted(42, 5) Source(62, 5) + SourceIndex(0) -4 >Emitted(42, 6) Source(62, 10) + SourceIndex(0) -5 >Emitted(42, 88) Source(63, 90) + SourceIndex(0) -6 >Emitted(42, 90) Source(62, 11) + SourceIndex(0) -7 >Emitted(42, 105) Source(62, 22) + SourceIndex(0) -8 >Emitted(42, 107) Source(62, 24) + SourceIndex(0) -9 >Emitted(42, 121) Source(62, 76) + SourceIndex(0) -10>Emitted(42, 123) Source(62, 34) + SourceIndex(0) -11>Emitted(42, 144) Source(62, 51) + SourceIndex(0) -12>Emitted(42, 146) Source(62, 53) + SourceIndex(0) -13>Emitted(42, 171) Source(62, 74) + SourceIndex(0) -14>Emitted(42, 173) Source(64, 5) + SourceIndex(0) -15>Emitted(42, 174) Source(64, 6) + SourceIndex(0) -16>Emitted(42, 177) Source(64, 9) + SourceIndex(0) -17>Emitted(42, 178) Source(64, 10) + SourceIndex(0) -18>Emitted(42, 180) Source(64, 12) + SourceIndex(0) -19>Emitted(42, 181) Source(64, 13) + SourceIndex(0) -20>Emitted(42, 184) Source(64, 16) + SourceIndex(0) -21>Emitted(42, 185) Source(64, 17) + SourceIndex(0) -22>Emitted(42, 187) Source(64, 19) + SourceIndex(0) -23>Emitted(42, 188) Source(64, 20) + SourceIndex(0) -24>Emitted(42, 190) Source(64, 22) + SourceIndex(0) -25>Emitted(42, 192) Source(64, 24) + SourceIndex(0) -26>Emitted(42, 193) Source(64, 25) + SourceIndex(0) +4 >Emitted(42, 6) Source(62, 6) + SourceIndex(0) +5 >Emitted(42, 10) Source(62, 6) + SourceIndex(0) +6 >Emitted(42, 88) Source(63, 90) + SourceIndex(0) +7 >Emitted(42, 90) Source(62, 11) + SourceIndex(0) +8 >Emitted(42, 105) Source(62, 22) + SourceIndex(0) +9 >Emitted(42, 107) Source(62, 24) + SourceIndex(0) +10>Emitted(42, 121) Source(62, 76) + SourceIndex(0) +11>Emitted(42, 123) Source(62, 34) + SourceIndex(0) +12>Emitted(42, 144) Source(62, 51) + SourceIndex(0) +13>Emitted(42, 146) Source(62, 53) + SourceIndex(0) +14>Emitted(42, 171) Source(62, 74) + SourceIndex(0) +15>Emitted(42, 173) Source(64, 5) + SourceIndex(0) +16>Emitted(42, 174) Source(64, 6) + SourceIndex(0) +17>Emitted(42, 177) Source(64, 9) + SourceIndex(0) +18>Emitted(42, 178) Source(64, 10) + SourceIndex(0) +19>Emitted(42, 180) Source(64, 12) + SourceIndex(0) +20>Emitted(42, 181) Source(64, 13) + SourceIndex(0) +21>Emitted(42, 184) Source(64, 16) + SourceIndex(0) +22>Emitted(42, 185) Source(64, 17) + SourceIndex(0) +23>Emitted(42, 187) Source(64, 19) + SourceIndex(0) +24>Emitted(42, 188) Source(64, 20) + SourceIndex(0) +25>Emitted(42, 190) Source(64, 22) + SourceIndex(0) +26>Emitted(42, 192) Source(64, 24) + SourceIndex(0) +27>Emitted(42, 193) Source(64, 25) + SourceIndex(0) --- >>> console.log(primaryA); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map index 83ec7f83efa..cb6d6d9fe4a 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForObjectBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt index 18aea40d2f2..3744cc2e7ab 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPattern2.sourcemap.txt @@ -311,9 +311,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > -6 > { name: nameA } = robot -7 > +5 > { +6 > name: nameA +7 > } = 8 > robot 9 > 10> , @@ -333,8 +333,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(11, 4) Source(29, 4) + SourceIndex(0) 3 >Emitted(11, 5) Source(29, 5) + SourceIndex(0) 4 >Emitted(11, 6) Source(29, 6) + SourceIndex(0) -5 >Emitted(11, 7) Source(29, 6) + SourceIndex(0) -6 >Emitted(11, 25) Source(29, 29) + SourceIndex(0) +5 >Emitted(11, 7) Source(29, 8) + SourceIndex(0) +6 >Emitted(11, 25) Source(29, 19) + SourceIndex(0) 7 >Emitted(11, 27) Source(29, 24) + SourceIndex(0) 8 >Emitted(11, 32) Source(29, 29) + SourceIndex(0) 9 >Emitted(11, 33) Source(29, 29) + SourceIndex(0) @@ -420,8 +420,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name: nameA } = getRobot() 7 > -8 > { name: nameA } = getRobot() -9 > +8 > name: nameA +9 > } = getRobot() 10> , 11> i 12> = @@ -441,8 +441,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(14, 6) Source(32, 6) + SourceIndex(0) 5 >Emitted(14, 7) Source(32, 6) + SourceIndex(0) 6 >Emitted(14, 22) Source(32, 34) + SourceIndex(0) -7 >Emitted(14, 24) Source(32, 6) + SourceIndex(0) -8 >Emitted(14, 39) Source(32, 34) + SourceIndex(0) +7 >Emitted(14, 24) Source(32, 8) + SourceIndex(0) +8 >Emitted(14, 39) Source(32, 19) + SourceIndex(0) 9 >Emitted(14, 44) Source(32, 34) + SourceIndex(0) 10>Emitted(14, 46) Source(32, 36) + SourceIndex(0) 11>Emitted(14, 47) Source(32, 37) + SourceIndex(0) @@ -526,8 +526,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name: nameA } = { name: "trimmer", skill: "trimming" } 7 > -8 > { name: nameA } = { name: "trimmer", skill: "trimming" } -9 > +8 > name: nameA +9 > } = { name: "trimmer", skill: "trimming" } 10> , 11> i 12> = @@ -547,8 +547,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(17, 6) Source(35, 6) + SourceIndex(0) 5 >Emitted(17, 7) Source(35, 6) + SourceIndex(0) 6 >Emitted(17, 50) Source(35, 69) + SourceIndex(0) -7 >Emitted(17, 52) Source(35, 6) + SourceIndex(0) -8 >Emitted(17, 67) Source(35, 69) + SourceIndex(0) +7 >Emitted(17, 52) Source(35, 8) + SourceIndex(0) +8 >Emitted(17, 67) Source(35, 19) + SourceIndex(0) 9 >Emitted(17, 72) Source(35, 69) + SourceIndex(0) 10>Emitted(17, 74) Source(35, 71) + SourceIndex(0) 11>Emitted(17, 75) Source(35, 72) + SourceIndex(0) @@ -633,8 +633,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > { skills: -6 > { primary: primaryA, secondary: secondaryA } +5 > { +6 > skills: { primary: primaryA, secondary: secondaryA } 7 > 8 > primary: primaryA 9 > , @@ -659,7 +659,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(20, 4) Source(38, 4) + SourceIndex(0) 3 >Emitted(20, 5) Source(38, 5) + SourceIndex(0) 4 >Emitted(20, 6) Source(38, 6) + SourceIndex(0) -5 >Emitted(20, 7) Source(38, 16) + SourceIndex(0) +5 >Emitted(20, 7) Source(38, 8) + SourceIndex(0) 6 >Emitted(20, 29) Source(38, 60) + SourceIndex(0) 7 >Emitted(20, 31) Source(38, 18) + SourceIndex(0) 8 >Emitted(20, 52) Source(38, 35) + SourceIndex(0) @@ -754,7 +754,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() 7 > -8 > { primary: primaryA, secondary: secondaryA } +8 > skills: { primary: primaryA, secondary: secondaryA } 9 > 10> primary: primaryA 11> , @@ -779,7 +779,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(23, 6) Source(41, 6) + SourceIndex(0) 5 >Emitted(23, 7) Source(41, 6) + SourceIndex(0) 6 >Emitted(23, 27) Source(41, 80) + SourceIndex(0) -7 >Emitted(23, 29) Source(41, 16) + SourceIndex(0) +7 >Emitted(23, 29) Source(41, 8) + SourceIndex(0) 8 >Emitted(23, 43) Source(41, 60) + SourceIndex(0) 9 >Emitted(23, 45) Source(41, 18) + SourceIndex(0) 10>Emitted(23, 66) Source(41, 35) + SourceIndex(0) @@ -860,7 +860,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { skills: { primary: primaryA, secondary: secondaryA } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > -8 > { primary: primaryA, secondary: secondaryA } +8 > skills: { primary: primaryA, secondary: secondaryA } 9 > 10> primary: primaryA 11> , @@ -873,7 +873,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(26, 6) Source(44, 6) + SourceIndex(0) 5 >Emitted(26, 7) Source(44, 6) + SourceIndex(0) 6 >Emitted(26, 85) Source(45, 90) + SourceIndex(0) -7 >Emitted(26, 87) Source(44, 16) + SourceIndex(0) +7 >Emitted(26, 87) Source(44, 8) + SourceIndex(0) 8 >Emitted(26, 101) Source(44, 60) + SourceIndex(0) 9 >Emitted(26, 103) Source(44, 18) + SourceIndex(0) 10>Emitted(26, 124) Source(44, 35) + SourceIndex(0) @@ -989,9 +989,9 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > -6 > { name } = robot -7 > +5 > { +6 > name +7 > } = 8 > robot 9 > 10> , @@ -1011,8 +1011,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(30, 4) Source(49, 4) + SourceIndex(0) 3 >Emitted(30, 5) Source(49, 5) + SourceIndex(0) 4 >Emitted(30, 6) Source(49, 6) + SourceIndex(0) -5 >Emitted(30, 7) Source(49, 6) + SourceIndex(0) -6 >Emitted(30, 24) Source(49, 22) + SourceIndex(0) +5 >Emitted(30, 7) Source(49, 8) + SourceIndex(0) +6 >Emitted(30, 24) Source(49, 12) + SourceIndex(0) 7 >Emitted(30, 26) Source(49, 17) + SourceIndex(0) 8 >Emitted(30, 31) Source(49, 22) + SourceIndex(0) 9 >Emitted(30, 32) Source(49, 22) + SourceIndex(0) @@ -1098,8 +1098,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name } = getRobot() 7 > -8 > { name } = getRobot() -9 > +8 > name +9 > } = getRobot() 10> , 11> i 12> = @@ -1119,8 +1119,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(33, 6) Source(52, 6) + SourceIndex(0) 5 >Emitted(33, 7) Source(52, 6) + SourceIndex(0) 6 >Emitted(33, 22) Source(52, 27) + SourceIndex(0) -7 >Emitted(33, 24) Source(52, 6) + SourceIndex(0) -8 >Emitted(33, 38) Source(52, 27) + SourceIndex(0) +7 >Emitted(33, 24) Source(52, 8) + SourceIndex(0) +8 >Emitted(33, 38) Source(52, 12) + SourceIndex(0) 9 >Emitted(33, 43) Source(52, 27) + SourceIndex(0) 10>Emitted(33, 45) Source(52, 29) + SourceIndex(0) 11>Emitted(33, 46) Source(52, 30) + SourceIndex(0) @@ -1204,8 +1204,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { name } = { name: "trimmer", skill: "trimming" } 7 > -8 > { name } = { name: "trimmer", skill: "trimming" } -9 > +8 > name +9 > } = { name: "trimmer", skill: "trimming" } 10> , 11> i 12> = @@ -1225,8 +1225,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(36, 6) Source(55, 6) + SourceIndex(0) 5 >Emitted(36, 7) Source(55, 6) + SourceIndex(0) 6 >Emitted(36, 50) Source(55, 62) + SourceIndex(0) -7 >Emitted(36, 52) Source(55, 6) + SourceIndex(0) -8 >Emitted(36, 66) Source(55, 62) + SourceIndex(0) +7 >Emitted(36, 52) Source(55, 8) + SourceIndex(0) +8 >Emitted(36, 66) Source(55, 12) + SourceIndex(0) 9 >Emitted(36, 71) Source(55, 62) + SourceIndex(0) 10>Emitted(36, 73) Source(55, 64) + SourceIndex(0) 11>Emitted(36, 74) Source(55, 65) + SourceIndex(0) @@ -1311,8 +1311,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >for 3 > 4 > ( -5 > { skills: -6 > { primary, secondary } +5 > { +6 > skills: { primary, secondary } 7 > 8 > primary 9 > , @@ -1337,7 +1337,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 2 >Emitted(39, 4) Source(58, 4) + SourceIndex(0) 3 >Emitted(39, 5) Source(58, 5) + SourceIndex(0) 4 >Emitted(39, 6) Source(58, 6) + SourceIndex(0) -5 >Emitted(39, 7) Source(58, 16) + SourceIndex(0) +5 >Emitted(39, 7) Source(58, 8) + SourceIndex(0) 6 >Emitted(39, 29) Source(58, 38) + SourceIndex(0) 7 >Emitted(39, 31) Source(58, 18) + SourceIndex(0) 8 >Emitted(39, 51) Source(58, 25) + SourceIndex(0) @@ -1432,7 +1432,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 5 > 6 > { skills: { primary, secondary } } = getMultiRobot() 7 > -8 > { primary, secondary } +8 > skills: { primary, secondary } 9 > 10> primary 11> , @@ -1457,7 +1457,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(42, 6) Source(61, 6) + SourceIndex(0) 5 >Emitted(42, 7) Source(61, 6) + SourceIndex(0) 6 >Emitted(42, 27) Source(61, 58) + SourceIndex(0) -7 >Emitted(42, 29) Source(61, 16) + SourceIndex(0) +7 >Emitted(42, 29) Source(61, 8) + SourceIndex(0) 8 >Emitted(42, 43) Source(61, 38) + SourceIndex(0) 9 >Emitted(42, 45) Source(61, 18) + SourceIndex(0) 10>Emitted(42, 65) Source(61, 25) + SourceIndex(0) @@ -1538,7 +1538,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { skills: { primary, secondary } } = > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > -8 > { primary, secondary } +8 > skills: { primary, secondary } 9 > 10> primary 11> , @@ -1551,7 +1551,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(45, 6) Source(64, 6) + SourceIndex(0) 5 >Emitted(45, 7) Source(64, 6) + SourceIndex(0) 6 >Emitted(45, 85) Source(65, 90) + SourceIndex(0) -7 >Emitted(45, 87) Source(64, 16) + SourceIndex(0) +7 >Emitted(45, 87) Source(64, 8) + SourceIndex(0) 8 >Emitted(45, 101) Source(64, 38) + SourceIndex(0) 9 >Emitted(45, 103) Source(64, 18) + SourceIndex(0) 10>Emitted(45, 123) Source(64, 25) + SourceIndex(0) @@ -2013,8 +2013,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 > ( 5 > { 6 > name: nameA -7 > , skills: -8 > { primary: primaryA, secondary: secondaryA } +7 > , +8 > skills: { primary: primaryA, secondary: secondaryA } 9 > 10> primary: primaryA 11> , @@ -2041,7 +2041,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(58, 6) Source(80, 6) + SourceIndex(0) 5 >Emitted(58, 7) Source(80, 8) + SourceIndex(0) 6 >Emitted(58, 30) Source(80, 19) + SourceIndex(0) -7 >Emitted(58, 32) Source(80, 29) + SourceIndex(0) +7 >Emitted(58, 32) Source(80, 21) + SourceIndex(0) 8 >Emitted(58, 54) Source(80, 73) + SourceIndex(0) 9 >Emitted(58, 56) Source(80, 31) + SourceIndex(0) 10>Emitted(58, 77) Source(80, 48) + SourceIndex(0) @@ -2139,8 +2139,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot() 7 > 8 > name: nameA -9 > , skills: -10> { primary: primaryA, secondary: secondaryA } +9 > , +10> skills: { primary: primaryA, secondary: secondaryA } 11> 12> primary: primaryA 13> , @@ -2167,7 +2167,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(61, 27) Source(83, 93) + SourceIndex(0) 7 >Emitted(61, 29) Source(83, 8) + SourceIndex(0) 8 >Emitted(61, 44) Source(83, 19) + SourceIndex(0) -9 >Emitted(61, 46) Source(83, 29) + SourceIndex(0) +9 >Emitted(61, 46) Source(83, 21) + SourceIndex(0) 10>Emitted(61, 60) Source(83, 73) + SourceIndex(0) 11>Emitted(61, 62) Source(83, 31) + SourceIndex(0) 12>Emitted(61, 83) Source(83, 48) + SourceIndex(0) @@ -2251,8 +2251,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > 8 > name: nameA -9 > , skills: -10> { primary: primaryA, secondary: secondaryA } +9 > , +10> skills: { primary: primaryA, secondary: secondaryA } 11> 12> primary: primaryA 13> , @@ -2267,7 +2267,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(64, 85) Source(87, 90) + SourceIndex(0) 7 >Emitted(64, 87) Source(86, 8) + SourceIndex(0) 8 >Emitted(64, 102) Source(86, 19) + SourceIndex(0) -9 >Emitted(64, 104) Source(86, 29) + SourceIndex(0) +9 >Emitted(64, 104) Source(86, 21) + SourceIndex(0) 10>Emitted(64, 118) Source(86, 73) + SourceIndex(0) 11>Emitted(64, 120) Source(86, 31) + SourceIndex(0) 12>Emitted(64, 141) Source(86, 48) + SourceIndex(0) @@ -2727,8 +2727,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 > ( 5 > { 6 > name -7 > , skills: -8 > { primary, secondary } +7 > , +8 > skills: { primary, secondary } 9 > 10> primary 11> , @@ -2755,7 +2755,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 4 >Emitted(77, 6) Source(100, 6) + SourceIndex(0) 5 >Emitted(77, 7) Source(100, 8) + SourceIndex(0) 6 >Emitted(77, 29) Source(100, 12) + SourceIndex(0) -7 >Emitted(77, 31) Source(100, 22) + SourceIndex(0) +7 >Emitted(77, 31) Source(100, 14) + SourceIndex(0) 8 >Emitted(77, 53) Source(100, 44) + SourceIndex(0) 9 >Emitted(77, 55) Source(100, 24) + SourceIndex(0) 10>Emitted(77, 75) Source(100, 31) + SourceIndex(0) @@ -2853,8 +2853,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 > { name, skills: { primary, secondary } } = getMultiRobot() 7 > 8 > name -9 > , skills: -10> { primary, secondary } +9 > , +10> skills: { primary, secondary } 11> 12> primary 13> , @@ -2881,7 +2881,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(80, 27) Source(103, 64) + SourceIndex(0) 7 >Emitted(80, 29) Source(103, 8) + SourceIndex(0) 8 >Emitted(80, 43) Source(103, 12) + SourceIndex(0) -9 >Emitted(80, 45) Source(103, 22) + SourceIndex(0) +9 >Emitted(80, 45) Source(103, 14) + SourceIndex(0) 10>Emitted(80, 59) Source(103, 44) + SourceIndex(0) 11>Emitted(80, 61) Source(103, 24) + SourceIndex(0) 12>Emitted(80, 81) Source(103, 31) + SourceIndex(0) @@ -2965,8 +2965,8 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } 7 > 8 > name -9 > , skills: -10> { primary, secondary } +9 > , +10> skills: { primary, secondary } 11> 12> primary 13> , @@ -2981,7 +2981,7 @@ sourceFile:sourceMapValidationDestructuringForObjectBindingPattern2.ts 6 >Emitted(83, 85) Source(107, 90) + SourceIndex(0) 7 >Emitted(83, 87) Source(106, 8) + SourceIndex(0) 8 >Emitted(83, 101) Source(106, 12) + SourceIndex(0) -9 >Emitted(83, 103) Source(106, 22) + SourceIndex(0) +9 >Emitted(83, 103) Source(106, 14) + SourceIndex(0) 10>Emitted(83, 117) Source(106, 44) + SourceIndex(0) 11>Emitted(83, 119) Source(106, 24) + SourceIndex(0) 12>Emitted(83, 139) Source(106, 31) + SourceIndex(0) diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map index fa0a2e18ac9..ca3d6f8d90f 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern2.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9B;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE,IAAI,WAAW,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC7C;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC;AAED,IAAI,KAAa,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAClE,IAAI,OAAe,EAAE,KAAa,CAAC;AACnC,IAAI,QAAgB,EAAE,MAAc,EAAE,OAAe,EAAE,MAAc,CAAC;AACtE,IAAI,QAAgB,EAAE,UAA+B,EAAE,eAA8C,CAAC;AAEtG,GAAG,CAAC,CAAc,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAApB,mBAAG,aAAK;IACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAc,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAAzB,aAAG,aAAK;IACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAc,UAAgB,EAAhB,MAAC,MAAM,EAAE,MAAM,CAAC,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAA9B,aAAG,aAAK;IACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAyC,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,CAAC;IAApD,wBAAG,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IACnC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAC9B;AACD,GAAG,CAAC,CAAyC,UAAgB,EAAhB,KAAA,cAAc,EAAE,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAAzD,aAAG,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IACnC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAC9B;AACD,GAAG,CAAC,CAAyC,UAA0B,EAA1B,MAAC,WAAW,EAAE,WAAW,CAAC,EAA1B,cAA0B,EAA1B,IAA0B,CAAC;IAAnE,aAAG,UAAgC,EAA/B,qBAAa,EAAE,uBAAe;IACnC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;CAC9B;AAED,GAAG,CAAC,CAAc,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAnB,yBAAO;IACT,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;CACxB;AACD,GAAG,CAAC,CAAc,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAAxB,mBAAO;IACT,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;CACxB;AACD,GAAG,CAAC,CAAc,UAAgB,EAAhB,MAAC,MAAM,EAAE,MAAM,CAAC,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAA7B,mBAAO;IACT,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;CACxB;AACD,GAAG,CAAC,CAAY,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,CAAC;IAAtB,4BAAK;IACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAY,UAAgB,EAAhB,KAAA,cAAc,EAAE,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAA3B,iBAAK;IACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAY,UAA0B,EAA1B,MAAC,WAAW,EAAE,WAAW,CAAC,EAA1B,cAA0B,EAA1B,IAA0B,CAAC;IAArC,iBAAK;IACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AAED,GAAG,CAAC,CAAgC,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAtC,mBAAC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AACD,GAAG,CAAC,CAAgC,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAA3C,aAAC,gBAAQ,EAAE,cAAM,EAAE,eAAO;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AACD,GAAG,CAAC,CAAgC,UAAgB,EAAhB,OAAC,MAAM,EAAE,MAAM,CAAC,EAAhB,eAAgB,EAAhB,IAAgB,CAAC;IAAhD,eAAC,iBAAQ,EAAE,eAAM,EAAE,gBAAO;IAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AACD,GAAG,CAAC,CAA+C,WAAW,EAAX,2BAAW,EAAX,0BAAW,EAAX,KAAW,CAAC;IAA1D,0BAAC,eAAM,EAAE,YAAgC,EAA/B,sBAAa,EAAE,wBAAe;IACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AACD,GAAG,CAAC,CAA+C,WAAgB,EAAhB,MAAA,cAAc,EAAE,EAAhB,gBAAgB,EAAhB,KAAgB,CAAC;IAA/D,gBAAC,eAAM,EAAE,YAAgC,EAA/B,sBAAa,EAAE,wBAAe;IACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AACD,GAAG,CAAC,CAA+C,WAA0B,EAA1B,OAAC,WAAW,EAAE,WAAW,CAAC,EAA1B,gBAA0B,EAA1B,KAA0B,CAAC;IAAzE,gBAAC,eAAM,EAAE,YAAgC,EAA/B,sBAAa,EAAE,wBAAe;IACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AAED,GAAG,CAAC,CAA8B,WAAM,EAAN,iBAAM,EAAN,qBAAM,EAAN,KAAM,CAAC;IAApC,qBAAC,iBAAQ,EAAE,yBAAa;IACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAA8B,WAAW,EAAX,MAAA,SAAS,EAAE,EAAX,gBAAW,EAAX,KAAW,CAAC;IAAzC,gBAAC,iBAAQ,EAAE,yBAAa;IACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAA8B,WAAgB,EAAhB,OAAC,MAAM,EAAE,MAAM,CAAC,EAAhB,gBAAgB,EAAhB,KAAgB,CAAC;IAA9C,gBAAC,iBAAQ,EAAE,yBAAa;IACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAAyB,WAAW,EAAX,2BAAW,EAAX,0BAAW,EAAX,KAAW,CAAC;IAAnC,6CAAkB;IACpB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CAChC;AACD,GAAG,CAAC,CAAyB,WAAgB,EAAhB,MAAA,cAAc,EAAE,EAAhB,gBAAgB,EAAhB,KAAgB,CAAC;IAAxC,mCAAkB;IACpB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CAChC;AACD,GAAG,CAAC,CAAyB,WAA0B,EAA1B,OAAC,WAAW,EAAE,WAAW,CAAC,EAA1B,gBAA0B,EAA1B,KAA0B,CAAC;IAAlD,mCAAkB;IACpB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;CAChC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt index 409629e1081..60c28ff0174 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt @@ -474,17 +474,14 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _a = robots_1[_i], nameA = _a[1]; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^ 1 > -2 > [, nameA] -3 > -4 > nameA +2 > [, +3 > nameA 1 >Emitted(18, 5) Source(26, 6) + SourceIndex(0) -2 >Emitted(18, 22) Source(26, 15) + SourceIndex(0) -3 >Emitted(18, 24) Source(26, 9) + SourceIndex(0) -4 >Emitted(18, 37) Source(26, 14) + SourceIndex(0) +2 >Emitted(18, 24) Source(26, 9) + SourceIndex(0) +3 >Emitted(18, 37) Source(26, 14) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -567,17 +564,14 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _d = _c[_b], nameA = _d[1]; 1 >^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^ 1 > -2 > [, nameA] -3 > -4 > nameA +2 > [, +3 > nameA 1 >Emitted(22, 5) Source(29, 6) + SourceIndex(0) -2 >Emitted(22, 16) Source(29, 15) + SourceIndex(0) -3 >Emitted(22, 18) Source(29, 9) + SourceIndex(0) -4 >Emitted(22, 31) Source(29, 14) + SourceIndex(0) +2 >Emitted(22, 18) Source(29, 9) + SourceIndex(0) +3 >Emitted(22, 31) Source(29, 14) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -666,17 +660,14 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _g = _f[_e], nameA = _g[1]; 1 >^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^ 1 > -2 > [, nameA] -3 > -4 > nameA +2 > [, +3 > nameA 1 >Emitted(26, 5) Source(32, 6) + SourceIndex(0) -2 >Emitted(26, 16) Source(32, 15) + SourceIndex(0) -3 >Emitted(26, 18) Source(32, 9) + SourceIndex(0) -4 >Emitted(26, 31) Source(32, 14) + SourceIndex(0) +2 >Emitted(26, 18) Source(32, 9) + SourceIndex(0) +3 >Emitted(26, 31) Source(32, 14) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -754,29 +745,26 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [, [primarySkillA, secondarySkillA]] -3 > -4 > [primarySkillA, secondarySkillA] -5 > -6 > primarySkillA -7 > , -8 > secondarySkillA +2 > [, +3 > [primarySkillA, secondarySkillA] +4 > +5 > primarySkillA +6 > , +7 > secondarySkillA 1->Emitted(30, 5) Source(35, 6) + SourceIndex(0) -2 >Emitted(30, 27) Source(35, 42) + SourceIndex(0) -3 >Emitted(30, 29) Source(35, 9) + SourceIndex(0) -4 >Emitted(30, 39) Source(35, 41) + SourceIndex(0) -5 >Emitted(30, 41) Source(35, 10) + SourceIndex(0) -6 >Emitted(30, 62) Source(35, 23) + SourceIndex(0) -7 >Emitted(30, 64) Source(35, 25) + SourceIndex(0) -8 >Emitted(30, 87) Source(35, 40) + SourceIndex(0) +2 >Emitted(30, 29) Source(35, 9) + SourceIndex(0) +3 >Emitted(30, 39) Source(35, 41) + SourceIndex(0) +4 >Emitted(30, 41) Source(35, 10) + SourceIndex(0) +5 >Emitted(30, 62) Source(35, 23) + SourceIndex(0) +6 >Emitted(30, 64) Source(35, 25) + SourceIndex(0) +7 >Emitted(30, 87) Source(35, 40) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -860,29 +848,26 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; 1->^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [, [primarySkillA, secondarySkillA]] -3 > -4 > [primarySkillA, secondarySkillA] -5 > -6 > primarySkillA -7 > , -8 > secondarySkillA +2 > [, +3 > [primarySkillA, secondarySkillA] +4 > +5 > primarySkillA +6 > , +7 > secondarySkillA 1->Emitted(34, 5) Source(38, 6) + SourceIndex(0) -2 >Emitted(34, 16) Source(38, 42) + SourceIndex(0) -3 >Emitted(34, 18) Source(38, 9) + SourceIndex(0) -4 >Emitted(34, 28) Source(38, 41) + SourceIndex(0) -5 >Emitted(34, 30) Source(38, 10) + SourceIndex(0) -6 >Emitted(34, 51) Source(38, 23) + SourceIndex(0) -7 >Emitted(34, 53) Source(38, 25) + SourceIndex(0) -8 >Emitted(34, 76) Source(38, 40) + SourceIndex(0) +2 >Emitted(34, 18) Source(38, 9) + SourceIndex(0) +3 >Emitted(34, 28) Source(38, 41) + SourceIndex(0) +4 >Emitted(34, 30) Source(38, 10) + SourceIndex(0) +5 >Emitted(34, 51) Source(38, 23) + SourceIndex(0) +6 >Emitted(34, 53) Source(38, 25) + SourceIndex(0) +7 >Emitted(34, 76) Source(38, 40) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -972,29 +957,26 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; 1->^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [, [primarySkillA, secondarySkillA]] -3 > -4 > [primarySkillA, secondarySkillA] -5 > -6 > primarySkillA -7 > , -8 > secondarySkillA +2 > [, +3 > [primarySkillA, secondarySkillA] +4 > +5 > primarySkillA +6 > , +7 > secondarySkillA 1->Emitted(38, 5) Source(41, 6) + SourceIndex(0) -2 >Emitted(38, 16) Source(41, 42) + SourceIndex(0) -3 >Emitted(38, 18) Source(41, 9) + SourceIndex(0) -4 >Emitted(38, 28) Source(41, 41) + SourceIndex(0) -5 >Emitted(38, 30) Source(41, 10) + SourceIndex(0) -6 >Emitted(38, 51) Source(41, 23) + SourceIndex(0) -7 >Emitted(38, 53) Source(41, 25) + SourceIndex(0) -8 >Emitted(38, 76) Source(41, 40) + SourceIndex(0) +2 >Emitted(38, 18) Source(41, 9) + SourceIndex(0) +3 >Emitted(38, 28) Source(41, 41) + SourceIndex(0) +4 >Emitted(38, 30) Source(41, 10) + SourceIndex(0) +5 >Emitted(38, 51) Source(41, 23) + SourceIndex(0) +6 >Emitted(38, 53) Source(41, 25) + SourceIndex(0) +7 >Emitted(38, 76) Source(41, 40) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -1074,9 +1056,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [numberB] -1 >Emitted(42, 5) Source(45, 6) + SourceIndex(0) -2 >Emitted(42, 30) Source(45, 15) + SourceIndex(0) +2 > numberB +1 >Emitted(42, 5) Source(45, 7) + SourceIndex(0) +2 >Emitted(42, 30) Source(45, 14) + SourceIndex(0) --- >>> console.log(numberB); 1 >^^^^ @@ -1087,7 +1069,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1 > of robots) { +1 >] of robots) { > 2 > console 3 > . @@ -1162,9 +1144,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^^^ 3 > ^^^-> 1 > -2 > [numberB] -1 >Emitted(46, 5) Source(48, 6) + SourceIndex(0) -2 >Emitted(46, 24) Source(48, 15) + SourceIndex(0) +2 > numberB +1 >Emitted(46, 5) Source(48, 7) + SourceIndex(0) +2 >Emitted(46, 24) Source(48, 14) + SourceIndex(0) --- >>> console.log(numberB); 1->^^^^ @@ -1175,7 +1157,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1-> of getRobots()) { +1->] of getRobots()) { > 2 > console 3 > . @@ -1256,9 +1238,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^^^ 3 > ^^^-> 1 > -2 > [numberB] -1 >Emitted(50, 5) Source(51, 6) + SourceIndex(0) -2 >Emitted(50, 24) Source(51, 15) + SourceIndex(0) +2 > numberB +1 >Emitted(50, 5) Source(51, 7) + SourceIndex(0) +2 >Emitted(50, 24) Source(51, 14) + SourceIndex(0) --- >>> console.log(numberB); 1->^^^^ @@ -1269,7 +1251,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^^^ 7 > ^ 8 > ^ -1-> of [robotA, robotB]) { +1->] of [robotA, robotB]) { > 2 > console 3 > . @@ -1337,9 +1319,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [nameB] -1 >Emitted(54, 5) Source(54, 6) + SourceIndex(0) -2 >Emitted(54, 33) Source(54, 13) + SourceIndex(0) +2 > nameB +1 >Emitted(54, 5) Source(54, 7) + SourceIndex(0) +2 >Emitted(54, 33) Source(54, 12) + SourceIndex(0) --- >>> console.log(nameB); 1 >^^^^ @@ -1350,7 +1332,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of multiRobots) { +1 >] of multiRobots) { > 2 > console 3 > . @@ -1425,9 +1407,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^ 3 > ^^^-> 1 > -2 > [nameB] -1 >Emitted(58, 5) Source(57, 6) + SourceIndex(0) -2 >Emitted(58, 22) Source(57, 13) + SourceIndex(0) +2 > nameB +1 >Emitted(58, 5) Source(57, 7) + SourceIndex(0) +2 >Emitted(58, 22) Source(57, 12) + SourceIndex(0) --- >>> console.log(nameB); 1->^^^^ @@ -1438,7 +1420,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1-> of getMultiRobots()) { +1->] of getMultiRobots()) { > 2 > console 3 > . @@ -1519,9 +1501,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^ 3 > ^^^-> 1 > -2 > [nameB] -1 >Emitted(62, 5) Source(60, 6) + SourceIndex(0) -2 >Emitted(62, 22) Source(60, 13) + SourceIndex(0) +2 > nameB +1 >Emitted(62, 5) Source(60, 7) + SourceIndex(0) +2 >Emitted(62, 22) Source(60, 12) + SourceIndex(0) --- >>> console.log(nameB); 1->^^^^ @@ -1532,7 +1514,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1-> of [multiRobotA, multiRobotB]) { +1->] of [multiRobotA, multiRobotB]) { > 2 > console 3 > . @@ -1600,29 +1582,26 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ 1-> -2 > [numberA2, nameA2, skillA2] -3 > -4 > numberA2 -5 > , -6 > nameA2 -7 > , -8 > skillA2 +2 > [ +3 > numberA2 +4 > , +5 > nameA2 +6 > , +7 > skillA2 1->Emitted(66, 5) Source(64, 6) + SourceIndex(0) -2 >Emitted(66, 22) Source(64, 33) + SourceIndex(0) -3 >Emitted(66, 24) Source(64, 7) + SourceIndex(0) -4 >Emitted(66, 40) Source(64, 15) + SourceIndex(0) -5 >Emitted(66, 42) Source(64, 17) + SourceIndex(0) -6 >Emitted(66, 56) Source(64, 23) + SourceIndex(0) -7 >Emitted(66, 58) Source(64, 25) + SourceIndex(0) -8 >Emitted(66, 73) Source(64, 32) + SourceIndex(0) +2 >Emitted(66, 24) Source(64, 7) + SourceIndex(0) +3 >Emitted(66, 40) Source(64, 15) + SourceIndex(0) +4 >Emitted(66, 42) Source(64, 17) + SourceIndex(0) +5 >Emitted(66, 56) Source(64, 23) + SourceIndex(0) +6 >Emitted(66, 58) Source(64, 25) + SourceIndex(0) +7 >Emitted(66, 73) Source(64, 32) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1706,29 +1685,26 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; 1->^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ 1-> -2 > [numberA2, nameA2, skillA2] -3 > -4 > numberA2 -5 > , -6 > nameA2 -7 > , -8 > skillA2 +2 > [ +3 > numberA2 +4 > , +5 > nameA2 +6 > , +7 > skillA2 1->Emitted(70, 5) Source(67, 6) + SourceIndex(0) -2 >Emitted(70, 16) Source(67, 33) + SourceIndex(0) -3 >Emitted(70, 18) Source(67, 7) + SourceIndex(0) -4 >Emitted(70, 34) Source(67, 15) + SourceIndex(0) -5 >Emitted(70, 36) Source(67, 17) + SourceIndex(0) -6 >Emitted(70, 50) Source(67, 23) + SourceIndex(0) -7 >Emitted(70, 52) Source(67, 25) + SourceIndex(0) -8 >Emitted(70, 67) Source(67, 32) + SourceIndex(0) +2 >Emitted(70, 18) Source(67, 7) + SourceIndex(0) +3 >Emitted(70, 34) Source(67, 15) + SourceIndex(0) +4 >Emitted(70, 36) Source(67, 17) + SourceIndex(0) +5 >Emitted(70, 50) Source(67, 23) + SourceIndex(0) +6 >Emitted(70, 52) Source(67, 25) + SourceIndex(0) +7 >Emitted(70, 67) Source(67, 32) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1818,29 +1794,26 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^ 1-> -2 > [numberA2, nameA2, skillA2] -3 > -4 > numberA2 -5 > , -6 > nameA2 -7 > , -8 > skillA2 +2 > [ +3 > numberA2 +4 > , +5 > nameA2 +6 > , +7 > skillA2 1->Emitted(74, 5) Source(70, 6) + SourceIndex(0) -2 >Emitted(74, 18) Source(70, 33) + SourceIndex(0) -3 >Emitted(74, 20) Source(70, 7) + SourceIndex(0) -4 >Emitted(74, 37) Source(70, 15) + SourceIndex(0) -5 >Emitted(74, 39) Source(70, 17) + SourceIndex(0) -6 >Emitted(74, 54) Source(70, 23) + SourceIndex(0) -7 >Emitted(74, 56) Source(70, 25) + SourceIndex(0) -8 >Emitted(74, 72) Source(70, 32) + SourceIndex(0) +2 >Emitted(74, 20) Source(70, 7) + SourceIndex(0) +3 >Emitted(74, 37) Source(70, 15) + SourceIndex(0) +4 >Emitted(74, 39) Source(70, 17) + SourceIndex(0) +5 >Emitted(74, 54) Source(70, 23) + SourceIndex(0) +6 >Emitted(74, 56) Source(70, 25) + SourceIndex(0) +7 >Emitted(74, 72) Source(70, 32) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1918,35 +1891,32 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [nameMA, [primarySkillA, secondarySkillA]] -3 > -4 > nameMA -5 > , -6 > [primarySkillA, secondarySkillA] -7 > -8 > primarySkillA -9 > , -10> secondarySkillA +2 > [ +3 > nameMA +4 > , +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA 1->Emitted(78, 5) Source(73, 6) + SourceIndex(0) -2 >Emitted(78, 29) Source(73, 48) + SourceIndex(0) -3 >Emitted(78, 31) Source(73, 7) + SourceIndex(0) -4 >Emitted(78, 46) Source(73, 13) + SourceIndex(0) -5 >Emitted(78, 48) Source(73, 15) + SourceIndex(0) -6 >Emitted(78, 60) Source(73, 47) + SourceIndex(0) -7 >Emitted(78, 62) Source(73, 16) + SourceIndex(0) -8 >Emitted(78, 84) Source(73, 29) + SourceIndex(0) -9 >Emitted(78, 86) Source(73, 31) + SourceIndex(0) -10>Emitted(78, 110) Source(73, 46) + SourceIndex(0) +2 >Emitted(78, 31) Source(73, 7) + SourceIndex(0) +3 >Emitted(78, 46) Source(73, 13) + SourceIndex(0) +4 >Emitted(78, 48) Source(73, 15) + SourceIndex(0) +5 >Emitted(78, 60) Source(73, 47) + SourceIndex(0) +6 >Emitted(78, 62) Source(73, 16) + SourceIndex(0) +7 >Emitted(78, 84) Source(73, 29) + SourceIndex(0) +8 >Emitted(78, 86) Source(73, 31) + SourceIndex(0) +9 >Emitted(78, 110) Source(73, 46) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2030,35 +2000,32 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [nameMA, [primarySkillA, secondarySkillA]] -3 > -4 > nameMA -5 > , -6 > [primarySkillA, secondarySkillA] -7 > -8 > primarySkillA -9 > , -10> secondarySkillA +2 > [ +3 > nameMA +4 > , +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA 1->Emitted(82, 5) Source(76, 6) + SourceIndex(0) -2 >Emitted(82, 19) Source(76, 48) + SourceIndex(0) -3 >Emitted(82, 21) Source(76, 7) + SourceIndex(0) -4 >Emitted(82, 36) Source(76, 13) + SourceIndex(0) -5 >Emitted(82, 38) Source(76, 15) + SourceIndex(0) -6 >Emitted(82, 50) Source(76, 47) + SourceIndex(0) -7 >Emitted(82, 52) Source(76, 16) + SourceIndex(0) -8 >Emitted(82, 74) Source(76, 29) + SourceIndex(0) -9 >Emitted(82, 76) Source(76, 31) + SourceIndex(0) -10>Emitted(82, 100) Source(76, 46) + SourceIndex(0) +2 >Emitted(82, 21) Source(76, 7) + SourceIndex(0) +3 >Emitted(82, 36) Source(76, 13) + SourceIndex(0) +4 >Emitted(82, 38) Source(76, 15) + SourceIndex(0) +5 >Emitted(82, 50) Source(76, 47) + SourceIndex(0) +6 >Emitted(82, 52) Source(76, 16) + SourceIndex(0) +7 >Emitted(82, 74) Source(76, 29) + SourceIndex(0) +8 >Emitted(82, 76) Source(76, 31) + SourceIndex(0) +9 >Emitted(82, 100) Source(76, 46) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2148,35 +2115,32 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [nameMA, [primarySkillA, secondarySkillA]] -3 > -4 > nameMA -5 > , -6 > [primarySkillA, secondarySkillA] -7 > -8 > primarySkillA -9 > , -10> secondarySkillA +2 > [ +3 > nameMA +4 > , +5 > [primarySkillA, secondarySkillA] +6 > +7 > primarySkillA +8 > , +9 > secondarySkillA 1->Emitted(86, 5) Source(79, 6) + SourceIndex(0) -2 >Emitted(86, 19) Source(79, 48) + SourceIndex(0) -3 >Emitted(86, 21) Source(79, 7) + SourceIndex(0) -4 >Emitted(86, 36) Source(79, 13) + SourceIndex(0) -5 >Emitted(86, 38) Source(79, 15) + SourceIndex(0) -6 >Emitted(86, 50) Source(79, 47) + SourceIndex(0) -7 >Emitted(86, 52) Source(79, 16) + SourceIndex(0) -8 >Emitted(86, 74) Source(79, 29) + SourceIndex(0) -9 >Emitted(86, 76) Source(79, 31) + SourceIndex(0) -10>Emitted(86, 100) Source(79, 46) + SourceIndex(0) +2 >Emitted(86, 21) Source(79, 7) + SourceIndex(0) +3 >Emitted(86, 36) Source(79, 13) + SourceIndex(0) +4 >Emitted(86, 38) Source(79, 15) + SourceIndex(0) +5 >Emitted(86, 50) Source(79, 47) + SourceIndex(0) +6 >Emitted(86, 52) Source(79, 16) + SourceIndex(0) +7 >Emitted(86, 74) Source(79, 29) + SourceIndex(0) +8 >Emitted(86, 76) Source(79, 31) + SourceIndex(0) +9 >Emitted(86, 100) Source(79, 46) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2255,23 +2219,20 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [numberA3, ...robotAInfo] -3 > -4 > numberA3 -5 > , -6 > ...robotAInfo +2 > [ +3 > numberA3 +4 > , +5 > ...robotAInfo 1->Emitted(90, 5) Source(83, 6) + SourceIndex(0) -2 >Emitted(90, 24) Source(83, 31) + SourceIndex(0) -3 >Emitted(90, 26) Source(83, 7) + SourceIndex(0) -4 >Emitted(90, 43) Source(83, 15) + SourceIndex(0) -5 >Emitted(90, 45) Source(83, 17) + SourceIndex(0) -6 >Emitted(90, 70) Source(83, 30) + SourceIndex(0) +2 >Emitted(90, 26) Source(83, 7) + SourceIndex(0) +3 >Emitted(90, 43) Source(83, 15) + SourceIndex(0) +4 >Emitted(90, 45) Source(83, 17) + SourceIndex(0) +5 >Emitted(90, 70) Source(83, 30) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2355,23 +2316,20 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [numberA3, ...robotAInfo] -3 > -4 > numberA3 -5 > , -6 > ...robotAInfo +2 > [ +3 > numberA3 +4 > , +5 > ...robotAInfo 1->Emitted(94, 5) Source(86, 6) + SourceIndex(0) -2 >Emitted(94, 19) Source(86, 31) + SourceIndex(0) -3 >Emitted(94, 21) Source(86, 7) + SourceIndex(0) -4 >Emitted(94, 38) Source(86, 15) + SourceIndex(0) -5 >Emitted(94, 40) Source(86, 17) + SourceIndex(0) -6 >Emitted(94, 65) Source(86, 30) + SourceIndex(0) +2 >Emitted(94, 21) Source(86, 7) + SourceIndex(0) +3 >Emitted(94, 38) Source(86, 15) + SourceIndex(0) +4 >Emitted(94, 40) Source(86, 17) + SourceIndex(0) +5 >Emitted(94, 65) Source(86, 30) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2460,23 +2418,20 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); 1 >^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [numberA3, ...robotAInfo] -3 > -4 > numberA3 -5 > , -6 > ...robotAInfo +2 > [ +3 > numberA3 +4 > , +5 > ...robotAInfo 1 >Emitted(98, 5) Source(89, 6) + SourceIndex(0) -2 >Emitted(98, 19) Source(89, 31) + SourceIndex(0) -3 >Emitted(98, 21) Source(89, 7) + SourceIndex(0) -4 >Emitted(98, 38) Source(89, 15) + SourceIndex(0) -5 >Emitted(98, 40) Source(89, 17) + SourceIndex(0) -6 >Emitted(98, 65) Source(89, 30) + SourceIndex(0) +2 >Emitted(98, 21) Source(89, 7) + SourceIndex(0) +3 >Emitted(98, 38) Source(89, 15) + SourceIndex(0) +4 >Emitted(98, 40) Source(89, 17) + SourceIndex(0) +5 >Emitted(98, 65) Source(89, 30) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2555,9 +2510,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [...multiRobotAInfo] -1 >Emitted(102, 5) Source(92, 6) + SourceIndex(0) -2 >Emitted(102, 50) Source(92, 26) + SourceIndex(0) +2 > ...multiRobotAInfo +1 >Emitted(102, 5) Source(92, 7) + SourceIndex(0) +2 >Emitted(102, 50) Source(92, 25) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2568,7 +2523,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 > of multiRobots) { +1 >] of multiRobots) { > 2 > console 3 > . @@ -2642,9 +2597,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [...multiRobotAInfo] -1 >Emitted(106, 5) Source(95, 6) + SourceIndex(0) -2 >Emitted(106, 40) Source(95, 26) + SourceIndex(0) +2 > ...multiRobotAInfo +1 >Emitted(106, 5) Source(95, 7) + SourceIndex(0) +2 >Emitted(106, 40) Source(95, 25) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2655,7 +2610,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 > of getMultiRobots()) { +1 >] of getMultiRobots()) { > 2 > console 3 > . @@ -2735,9 +2690,9 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [...multiRobotAInfo] -1 >Emitted(110, 5) Source(98, 6) + SourceIndex(0) -2 >Emitted(110, 40) Source(98, 26) + SourceIndex(0) +2 > ...multiRobotAInfo +1 >Emitted(110, 5) Source(98, 7) + SourceIndex(0) +2 >Emitted(110, 40) Source(98, 25) + SourceIndex(0) --- >>> console.log(multiRobotAInfo); 1 >^^^^ @@ -2748,7 +2703,7 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts 6 > ^^^^^^^^^^^^^^^ 7 > ^ 8 > ^ -1 > of [multiRobotA, multiRobotB]) { +1 >] of [multiRobotA, multiRobotB]) { > 2 > console 3 > . diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map index 2fb57235dec..c779b1ebe26 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt index bde5b81177d..17802c4e86a 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt @@ -426,9 +426,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > {name: nameA } -1 >Emitted(13, 5) Source(32, 6) + SourceIndex(0) -2 >Emitted(13, 30) Source(32, 20) + SourceIndex(0) +2 > name: nameA +1 >Emitted(13, 5) Source(32, 7) + SourceIndex(0) +2 >Emitted(13, 30) Source(32, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -439,7 +439,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of robots) { +1 > } of robots) { > 2 > console 3 > . @@ -514,9 +514,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^^^ 3 > ^-> 1 > -2 > {name: nameA } -1 >Emitted(17, 5) Source(35, 6) + SourceIndex(0) -2 >Emitted(17, 24) Source(35, 20) + SourceIndex(0) +2 > name: nameA +1 >Emitted(17, 5) Source(35, 7) + SourceIndex(0) +2 >Emitted(17, 24) Source(35, 18) + SourceIndex(0) --- >>> console.log(nameA); 1->^^^^ @@ -527,7 +527,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1-> of getRobots()) { +1-> } of getRobots()) { > 2 > console 3 > . @@ -656,9 +656,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^^^ 3 > ^-> 1 > -2 > {name: nameA } -1 >Emitted(21, 5) Source(38, 6) + SourceIndex(0) -2 >Emitted(21, 24) Source(38, 20) + SourceIndex(0) +2 > name: nameA +1 >Emitted(21, 5) Source(38, 7) + SourceIndex(0) +2 >Emitted(21, 24) Source(38, 18) + SourceIndex(0) --- >>> console.log(nameA); 1->^^^^ @@ -669,7 +669,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1-> of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +1-> } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { > 2 > console 3 > . @@ -742,12 +742,12 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { primary: primaryA, secondary: secondaryA } +2 > skills: { primary: primaryA, secondary: secondaryA } 3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA -1->Emitted(25, 5) Source(41, 16) + SourceIndex(0) +1->Emitted(25, 5) Source(41, 8) + SourceIndex(0) 2 >Emitted(25, 34) Source(41, 60) + SourceIndex(0) 3 >Emitted(25, 36) Source(41, 18) + SourceIndex(0) 4 >Emitted(25, 57) Source(41, 35) + SourceIndex(0) @@ -842,12 +842,12 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { primary: primaryA, secondary: secondaryA } +2 > skills: { primary: primaryA, secondary: secondaryA } 3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA -1->Emitted(29, 5) Source(44, 16) + SourceIndex(0) +1->Emitted(29, 5) Source(44, 8) + SourceIndex(0) 2 >Emitted(29, 23) Source(44, 60) + SourceIndex(0) 3 >Emitted(29, 25) Source(44, 18) + SourceIndex(0) 4 >Emitted(29, 46) Source(44, 35) + SourceIndex(0) @@ -1050,12 +1050,12 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > { primary: primaryA, secondary: secondaryA } +2 > skills: { primary: primaryA, secondary: secondaryA } 3 > 4 > primary: primaryA 5 > , 6 > secondary: secondaryA -1 >Emitted(34, 5) Source(47, 16) + SourceIndex(0) +1 >Emitted(34, 5) Source(47, 8) + SourceIndex(0) 2 >Emitted(34, 23) Source(47, 60) + SourceIndex(0) 3 >Emitted(34, 25) Source(47, 18) + SourceIndex(0) 4 >Emitted(34, 46) Source(47, 35) + SourceIndex(0) @@ -1140,9 +1140,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 1 >^^^^ 2 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > {name } -1 >Emitted(38, 5) Source(51, 6) + SourceIndex(0) -2 >Emitted(38, 29) Source(51, 13) + SourceIndex(0) +2 > name +1 >Emitted(38, 5) Source(51, 7) + SourceIndex(0) +2 >Emitted(38, 29) Source(51, 11) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1153,7 +1153,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1 > of robots) { +1 > } of robots) { > 2 > console 3 > . @@ -1228,9 +1228,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^^ 3 > ^^-> 1 > -2 > {name } -1 >Emitted(42, 5) Source(54, 6) + SourceIndex(0) -2 >Emitted(42, 23) Source(54, 13) + SourceIndex(0) +2 > name +1 >Emitted(42, 5) Source(54, 7) + SourceIndex(0) +2 >Emitted(42, 23) Source(54, 11) + SourceIndex(0) --- >>> console.log(nameA); 1->^^^^ @@ -1241,7 +1241,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1-> of getRobots()) { +1-> } of getRobots()) { > 2 > console 3 > . @@ -1370,9 +1370,9 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 2 > ^^^^^^^^^^^^^^^^^^ 3 > ^^-> 1 > -2 > {name } -1 >Emitted(46, 5) Source(57, 6) + SourceIndex(0) -2 >Emitted(46, 23) Source(57, 13) + SourceIndex(0) +2 > name +1 >Emitted(46, 5) Source(57, 7) + SourceIndex(0) +2 >Emitted(46, 23) Source(57, 11) + SourceIndex(0) --- >>> console.log(nameA); 1->^^^^ @@ -1383,7 +1383,7 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 6 > ^^^^^ 7 > ^ 8 > ^ -1-> of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +1-> } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { > 2 > console 3 > . @@ -1456,12 +1456,12 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { primary, secondary } +2 > skills: { primary, secondary } 3 > 4 > primary 5 > , 6 > secondary -1->Emitted(50, 5) Source(60, 16) + SourceIndex(0) +1->Emitted(50, 5) Source(60, 8) + SourceIndex(0) 2 >Emitted(50, 34) Source(60, 38) + SourceIndex(0) 3 >Emitted(50, 36) Source(60, 18) + SourceIndex(0) 4 >Emitted(50, 56) Source(60, 25) + SourceIndex(0) @@ -1556,12 +1556,12 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { primary, secondary } +2 > skills: { primary, secondary } 3 > 4 > primary 5 > , 6 > secondary -1->Emitted(54, 5) Source(63, 16) + SourceIndex(0) +1->Emitted(54, 5) Source(63, 8) + SourceIndex(0) 2 >Emitted(54, 23) Source(63, 38) + SourceIndex(0) 3 >Emitted(54, 25) Source(63, 18) + SourceIndex(0) 4 >Emitted(54, 45) Source(63, 25) + SourceIndex(0) @@ -1764,12 +1764,12 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts 5 > ^^ 6 > ^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > { primary, secondary } +2 > skills: { primary, secondary } 3 > 4 > primary 5 > , 6 > secondary -1 >Emitted(59, 5) Source(66, 16) + SourceIndex(0) +1 >Emitted(59, 5) Source(66, 8) + SourceIndex(0) 2 >Emitted(59, 23) Source(66, 38) + SourceIndex(0) 3 >Emitted(59, 25) Source(66, 18) + SourceIndex(0) 4 >Emitted(59, 45) Source(66, 25) + SourceIndex(0) @@ -1854,23 +1854,20 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _2 = robots_3[_1], nameA = _2.name, skillA = _2.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ 1 > -2 > {name: nameA, skill: skillA } -3 > -4 > name: nameA -5 > , -6 > skill: skillA +2 > { +3 > name: nameA +4 > , +5 > skill: skillA 1 >Emitted(63, 5) Source(72, 6) + SourceIndex(0) -2 >Emitted(63, 22) Source(72, 35) + SourceIndex(0) -3 >Emitted(63, 24) Source(72, 7) + SourceIndex(0) -4 >Emitted(63, 39) Source(72, 18) + SourceIndex(0) -5 >Emitted(63, 41) Source(72, 20) + SourceIndex(0) -6 >Emitted(63, 58) Source(72, 33) + SourceIndex(0) +2 >Emitted(63, 24) Source(72, 7) + SourceIndex(0) +3 >Emitted(63, 39) Source(72, 18) + SourceIndex(0) +4 >Emitted(63, 41) Source(72, 20) + SourceIndex(0) +5 >Emitted(63, 58) Source(72, 33) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1953,23 +1950,20 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _5 = _4[_3], nameA = _5.name, skillA = _5.skill; 1 >^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ 1 > -2 > {name: nameA, skill: skillA } -3 > -4 > name: nameA -5 > , -6 > skill: skillA +2 > { +3 > name: nameA +4 > , +5 > skill: skillA 1 >Emitted(67, 5) Source(75, 6) + SourceIndex(0) -2 >Emitted(67, 16) Source(75, 35) + SourceIndex(0) -3 >Emitted(67, 18) Source(75, 7) + SourceIndex(0) -4 >Emitted(67, 33) Source(75, 18) + SourceIndex(0) -5 >Emitted(67, 35) Source(75, 20) + SourceIndex(0) -6 >Emitted(67, 52) Source(75, 33) + SourceIndex(0) +2 >Emitted(67, 18) Source(75, 7) + SourceIndex(0) +3 >Emitted(67, 33) Source(75, 18) + SourceIndex(0) +4 >Emitted(67, 35) Source(75, 20) + SourceIndex(0) +5 >Emitted(67, 52) Source(75, 33) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2106,23 +2100,20 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _8 = _7[_6], nameA = _8.name, skillA = _8.skill; 1 >^^^^ -2 > ^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ 1 > -2 > {name: nameA, skill: skillA } -3 > -4 > name: nameA -5 > , -6 > skill: skillA +2 > { +3 > name: nameA +4 > , +5 > skill: skillA 1 >Emitted(71, 5) Source(78, 6) + SourceIndex(0) -2 >Emitted(71, 16) Source(78, 35) + SourceIndex(0) -3 >Emitted(71, 18) Source(78, 7) + SourceIndex(0) -4 >Emitted(71, 33) Source(78, 18) + SourceIndex(0) -5 >Emitted(71, 35) Source(78, 20) + SourceIndex(0) -6 >Emitted(71, 52) Source(78, 33) + SourceIndex(0) +2 >Emitted(71, 18) Source(78, 7) + SourceIndex(0) +3 >Emitted(71, 33) Source(78, 18) + SourceIndex(0) +4 >Emitted(71, 35) Source(78, 20) + SourceIndex(0) +5 >Emitted(71, 52) Source(78, 33) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2200,35 +2191,32 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _10 = multiRobots_3[_9], nameA = _10.name, _11 = _10.skills, primaryA = _11.primary, secondaryA = _11.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } -3 > -4 > name: nameA -5 > , skills: -6 > { primary: primaryA, secondary: secondaryA } -7 > -8 > primary: primaryA -9 > , -10> secondary: secondaryA +2 > { +3 > name: nameA +4 > , +5 > skills: { primary: primaryA, secondary: secondaryA } +6 > +7 > primary: primaryA +8 > , +9 > secondary: secondaryA 1->Emitted(75, 5) Source(81, 6) + SourceIndex(0) -2 >Emitted(75, 28) Source(81, 74) + SourceIndex(0) -3 >Emitted(75, 30) Source(81, 7) + SourceIndex(0) -4 >Emitted(75, 46) Source(81, 18) + SourceIndex(0) -5 >Emitted(75, 48) Source(81, 28) + SourceIndex(0) -6 >Emitted(75, 64) Source(81, 72) + SourceIndex(0) -7 >Emitted(75, 66) Source(81, 30) + SourceIndex(0) -8 >Emitted(75, 88) Source(81, 47) + SourceIndex(0) -9 >Emitted(75, 90) Source(81, 49) + SourceIndex(0) -10>Emitted(75, 116) Source(81, 70) + SourceIndex(0) +2 >Emitted(75, 30) Source(81, 7) + SourceIndex(0) +3 >Emitted(75, 46) Source(81, 18) + SourceIndex(0) +4 >Emitted(75, 48) Source(81, 20) + SourceIndex(0) +5 >Emitted(75, 64) Source(81, 72) + SourceIndex(0) +6 >Emitted(75, 66) Source(81, 30) + SourceIndex(0) +7 >Emitted(75, 88) Source(81, 47) + SourceIndex(0) +8 >Emitted(75, 90) Source(81, 49) + SourceIndex(0) +9 >Emitted(75, 116) Source(81, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2312,35 +2300,32 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _14 = _13[_12], nameA = _14.name, _15 = _14.skills, primaryA = _15.primary, secondaryA = _15.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } -3 > -4 > name: nameA -5 > , skills: -6 > { primary: primaryA, secondary: secondaryA } -7 > -8 > primary: primaryA -9 > , -10> secondary: secondaryA +2 > { +3 > name: nameA +4 > , +5 > skills: { primary: primaryA, secondary: secondaryA } +6 > +7 > primary: primaryA +8 > , +9 > secondary: secondaryA 1->Emitted(79, 5) Source(84, 6) + SourceIndex(0) -2 >Emitted(79, 19) Source(84, 74) + SourceIndex(0) -3 >Emitted(79, 21) Source(84, 7) + SourceIndex(0) -4 >Emitted(79, 37) Source(84, 18) + SourceIndex(0) -5 >Emitted(79, 39) Source(84, 28) + SourceIndex(0) -6 >Emitted(79, 55) Source(84, 72) + SourceIndex(0) -7 >Emitted(79, 57) Source(84, 30) + SourceIndex(0) -8 >Emitted(79, 79) Source(84, 47) + SourceIndex(0) -9 >Emitted(79, 81) Source(84, 49) + SourceIndex(0) -10>Emitted(79, 107) Source(84, 70) + SourceIndex(0) +2 >Emitted(79, 21) Source(84, 7) + SourceIndex(0) +3 >Emitted(79, 37) Source(84, 18) + SourceIndex(0) +4 >Emitted(79, 39) Source(84, 20) + SourceIndex(0) +5 >Emitted(79, 55) Source(84, 72) + SourceIndex(0) +6 >Emitted(79, 57) Source(84, 30) + SourceIndex(0) +7 >Emitted(79, 79) Source(84, 47) + SourceIndex(0) +8 >Emitted(79, 81) Source(84, 49) + SourceIndex(0) +9 >Emitted(79, 107) Source(84, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2533,35 +2518,32 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _18 = _17[_16], nameA = _18.name, _19 = _18.skills, primaryA = _19.primary, secondaryA = _19.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } -3 > -4 > name: nameA -5 > , skills: -6 > { primary: primaryA, secondary: secondaryA } -7 > -8 > primary: primaryA -9 > , -10> secondary: secondaryA +2 > { +3 > name: nameA +4 > , +5 > skills: { primary: primaryA, secondary: secondaryA } +6 > +7 > primary: primaryA +8 > , +9 > secondary: secondaryA 1->Emitted(84, 5) Source(87, 6) + SourceIndex(0) -2 >Emitted(84, 19) Source(87, 74) + SourceIndex(0) -3 >Emitted(84, 21) Source(87, 7) + SourceIndex(0) -4 >Emitted(84, 37) Source(87, 18) + SourceIndex(0) -5 >Emitted(84, 39) Source(87, 28) + SourceIndex(0) -6 >Emitted(84, 55) Source(87, 72) + SourceIndex(0) -7 >Emitted(84, 57) Source(87, 30) + SourceIndex(0) -8 >Emitted(84, 79) Source(87, 47) + SourceIndex(0) -9 >Emitted(84, 81) Source(87, 49) + SourceIndex(0) -10>Emitted(84, 107) Source(87, 70) + SourceIndex(0) +2 >Emitted(84, 21) Source(87, 7) + SourceIndex(0) +3 >Emitted(84, 37) Source(87, 18) + SourceIndex(0) +4 >Emitted(84, 39) Source(87, 20) + SourceIndex(0) +5 >Emitted(84, 55) Source(87, 72) + SourceIndex(0) +6 >Emitted(84, 57) Source(87, 30) + SourceIndex(0) +7 >Emitted(84, 79) Source(87, 47) + SourceIndex(0) +8 >Emitted(84, 81) Source(87, 49) + SourceIndex(0) +9 >Emitted(84, 107) Source(87, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2639,23 +2621,20 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _21 = robots_4[_20], name = _21.name, skill = _21.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ 1 > -2 > {name, skill } -3 > -4 > name -5 > , -6 > skill +2 > { +3 > name +4 > , +5 > skill 1 >Emitted(88, 5) Source(91, 6) + SourceIndex(0) -2 >Emitted(88, 24) Source(91, 20) + SourceIndex(0) -3 >Emitted(88, 26) Source(91, 7) + SourceIndex(0) -4 >Emitted(88, 41) Source(91, 11) + SourceIndex(0) -5 >Emitted(88, 43) Source(91, 13) + SourceIndex(0) -6 >Emitted(88, 60) Source(91, 18) + SourceIndex(0) +2 >Emitted(88, 26) Source(91, 7) + SourceIndex(0) +3 >Emitted(88, 41) Source(91, 11) + SourceIndex(0) +4 >Emitted(88, 43) Source(91, 13) + SourceIndex(0) +5 >Emitted(88, 60) Source(91, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2738,23 +2717,20 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _24 = _23[_22], name = _24.name, skill = _24.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ 1 > -2 > {name, skill } -3 > -4 > name -5 > , -6 > skill +2 > { +3 > name +4 > , +5 > skill 1 >Emitted(92, 5) Source(94, 6) + SourceIndex(0) -2 >Emitted(92, 19) Source(94, 20) + SourceIndex(0) -3 >Emitted(92, 21) Source(94, 7) + SourceIndex(0) -4 >Emitted(92, 36) Source(94, 11) + SourceIndex(0) -5 >Emitted(92, 38) Source(94, 13) + SourceIndex(0) -6 >Emitted(92, 55) Source(94, 18) + SourceIndex(0) +2 >Emitted(92, 21) Source(94, 7) + SourceIndex(0) +3 >Emitted(92, 36) Source(94, 11) + SourceIndex(0) +4 >Emitted(92, 38) Source(94, 13) + SourceIndex(0) +5 >Emitted(92, 55) Source(94, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2891,23 +2867,20 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _27 = _26[_25], name = _27.name, skill = _27.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^ 1 > -2 > {name, skill } -3 > -4 > name -5 > , -6 > skill +2 > { +3 > name +4 > , +5 > skill 1 >Emitted(96, 5) Source(97, 6) + SourceIndex(0) -2 >Emitted(96, 19) Source(97, 20) + SourceIndex(0) -3 >Emitted(96, 21) Source(97, 7) + SourceIndex(0) -4 >Emitted(96, 36) Source(97, 11) + SourceIndex(0) -5 >Emitted(96, 38) Source(97, 13) + SourceIndex(0) -6 >Emitted(96, 55) Source(97, 18) + SourceIndex(0) +2 >Emitted(96, 21) Source(97, 7) + SourceIndex(0) +3 >Emitted(96, 36) Source(97, 11) + SourceIndex(0) +4 >Emitted(96, 38) Source(97, 13) + SourceIndex(0) +5 >Emitted(96, 55) Source(97, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2985,35 +2958,32 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _29 = multiRobots_4[_28], name = _29.name, _30 = _29.skills, primary = _30.primary, secondary = _30.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > {name, skills: { primary, secondary } } -3 > -4 > name -5 > , skills: -6 > { primary, secondary } -7 > -8 > primary -9 > , -10> secondary +2 > { +3 > name +4 > , +5 > skills: { primary, secondary } +6 > +7 > primary +8 > , +9 > secondary 1->Emitted(100, 5) Source(100, 6) + SourceIndex(0) -2 >Emitted(100, 29) Source(100, 45) + SourceIndex(0) -3 >Emitted(100, 31) Source(100, 7) + SourceIndex(0) -4 >Emitted(100, 46) Source(100, 11) + SourceIndex(0) -5 >Emitted(100, 48) Source(100, 21) + SourceIndex(0) -6 >Emitted(100, 64) Source(100, 43) + SourceIndex(0) -7 >Emitted(100, 66) Source(100, 23) + SourceIndex(0) -8 >Emitted(100, 87) Source(100, 30) + SourceIndex(0) -9 >Emitted(100, 89) Source(100, 32) + SourceIndex(0) -10>Emitted(100, 114) Source(100, 41) + SourceIndex(0) +2 >Emitted(100, 31) Source(100, 7) + SourceIndex(0) +3 >Emitted(100, 46) Source(100, 11) + SourceIndex(0) +4 >Emitted(100, 48) Source(100, 13) + SourceIndex(0) +5 >Emitted(100, 64) Source(100, 43) + SourceIndex(0) +6 >Emitted(100, 66) Source(100, 23) + SourceIndex(0) +7 >Emitted(100, 87) Source(100, 30) + SourceIndex(0) +8 >Emitted(100, 89) Source(100, 32) + SourceIndex(0) +9 >Emitted(100, 114) Source(100, 41) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -3097,35 +3067,32 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _33 = _32[_31], name = _33.name, _34 = _33.skills, primary = _34.primary, secondary = _34.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > {name, skills: { primary, secondary } } -3 > -4 > name -5 > , skills: -6 > { primary, secondary } -7 > -8 > primary -9 > , -10> secondary +2 > { +3 > name +4 > , +5 > skills: { primary, secondary } +6 > +7 > primary +8 > , +9 > secondary 1->Emitted(104, 5) Source(103, 6) + SourceIndex(0) -2 >Emitted(104, 19) Source(103, 45) + SourceIndex(0) -3 >Emitted(104, 21) Source(103, 7) + SourceIndex(0) -4 >Emitted(104, 36) Source(103, 11) + SourceIndex(0) -5 >Emitted(104, 38) Source(103, 21) + SourceIndex(0) -6 >Emitted(104, 54) Source(103, 43) + SourceIndex(0) -7 >Emitted(104, 56) Source(103, 23) + SourceIndex(0) -8 >Emitted(104, 77) Source(103, 30) + SourceIndex(0) -9 >Emitted(104, 79) Source(103, 32) + SourceIndex(0) -10>Emitted(104, 104) Source(103, 41) + SourceIndex(0) +2 >Emitted(104, 21) Source(103, 7) + SourceIndex(0) +3 >Emitted(104, 36) Source(103, 11) + SourceIndex(0) +4 >Emitted(104, 38) Source(103, 13) + SourceIndex(0) +5 >Emitted(104, 54) Source(103, 43) + SourceIndex(0) +6 >Emitted(104, 56) Source(103, 23) + SourceIndex(0) +7 >Emitted(104, 77) Source(103, 30) + SourceIndex(0) +8 >Emitted(104, 79) Source(103, 32) + SourceIndex(0) +9 >Emitted(104, 104) Source(103, 41) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -3318,35 +3285,32 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _37 = _36[_35], name = _37.name, _38 = _37.skills, primary = _38.primary, secondary = _38.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > {name, skills: { primary, secondary } } -3 > -4 > name -5 > , skills: -6 > { primary, secondary } -7 > -8 > primary -9 > , -10> secondary +2 > { +3 > name +4 > , +5 > skills: { primary, secondary } +6 > +7 > primary +8 > , +9 > secondary 1->Emitted(109, 5) Source(106, 6) + SourceIndex(0) -2 >Emitted(109, 19) Source(106, 45) + SourceIndex(0) -3 >Emitted(109, 21) Source(106, 7) + SourceIndex(0) -4 >Emitted(109, 36) Source(106, 11) + SourceIndex(0) -5 >Emitted(109, 38) Source(106, 21) + SourceIndex(0) -6 >Emitted(109, 54) Source(106, 43) + SourceIndex(0) -7 >Emitted(109, 56) Source(106, 23) + SourceIndex(0) -8 >Emitted(109, 77) Source(106, 30) + SourceIndex(0) -9 >Emitted(109, 79) Source(106, 32) + SourceIndex(0) -10>Emitted(109, 104) Source(106, 41) + SourceIndex(0) +2 >Emitted(109, 21) Source(106, 7) + SourceIndex(0) +3 >Emitted(109, 36) Source(106, 11) + SourceIndex(0) +4 >Emitted(109, 38) Source(106, 13) + SourceIndex(0) +5 >Emitted(109, 54) Source(106, 43) + SourceIndex(0) +6 >Emitted(109, 56) Source(106, 23) + SourceIndex(0) +7 >Emitted(109, 77) Source(106, 30) + SourceIndex(0) +8 >Emitted(109, 79) Source(106, 32) + SourceIndex(0) +9 >Emitted(109, 104) Source(106, 41) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map index 782a7682168..17d9a9b0411 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatement.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrD,uBAAW,CAAY;AACvB,uBAAW,EAAE,qBAAa,CAAY;AACxC,kDAA0E,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatement.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrD,uBAAW,CAAY;AACvB,uBAAW,EAAE,qBAAa,CAAY;AAC5C,IAAA,8CAA8E,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAC/E,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt index b58075c8b70..f066ec465cf 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement.sourcemap.txt @@ -161,27 +161,30 @@ sourceFile:sourceMapValidationDestructuringVariableStatement.ts --- >>>var _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; 1-> -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^^^^ -7 > ^ +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^ 1-> - >var -2 >{ name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } -3 > -4 > name: nameC -5 > , -6 > skill: skillC -7 > } = { name: "Edger", skill: "cutting edges" }; -1->Emitted(6, 1) Source(13, 5) + SourceIndex(0) -2 >Emitted(6, 51) Source(13, 79) + SourceIndex(0) -3 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) -4 >Emitted(6, 68) Source(13, 18) + SourceIndex(0) -5 >Emitted(6, 70) Source(13, 20) + SourceIndex(0) -6 >Emitted(6, 87) Source(13, 33) + SourceIndex(0) -7 >Emitted(6, 88) Source(13, 80) + SourceIndex(0) + > +2 > +3 > var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } +4 > +5 > name: nameC +6 > , +7 > skill: skillC +8 > } = { name: "Edger", skill: "cutting edges" }; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 1) + SourceIndex(0) +3 >Emitted(6, 51) Source(13, 79) + SourceIndex(0) +4 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) +5 >Emitted(6, 68) Source(13, 18) + SourceIndex(0) +6 >Emitted(6, 70) Source(13, 20) + SourceIndex(0) +7 >Emitted(6, 87) Source(13, 33) + SourceIndex(0) +8 >Emitted(6, 88) Source(13, 80) + SourceIndex(0) --- >>>if (nameA == nameB) { 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map index 3db6913ce13..cf91be353da 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAGxC,qBAAK,CAAW;AAClB,uBAAO,CAAW;AAClB,wBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEpC,iDAAQ,CAAoC;AAC7C,wCAA0D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE1D,wBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAGxC,qBAAK,CAAW;AAClB,uBAAO,CAAW;AAClB,wBAAQ,EAAE,kBAAM,EAAE,mBAAO,CAAW;AAEpC,iDAAQ,CAAoC;AACjD,IAAA,oCAA8D,EAAzD,eAAO,EAAE,aAAK,EAAE,cAAM,CAAoC;AAE1D,wBAAQ,EAAE,4BAAa,CAAW;AAEvC,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt index 6aa11106d90..43bcf108a9d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern.sourcemap.txt @@ -158,33 +158,36 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern. --- >>>var _a = [3, "edging", "Trimming edges"], numberC = _a[0], nameC = _a[1], skillC = _a[2]; 1-> -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^ -9 > ^ +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^ 1-> - >let -2 >[numberC, nameC, skillC] = [3, "edging", "Trimming edges"] -3 > -4 > numberC -5 > , -6 > nameC -7 > , -8 > skillC -9 > ] = [3, "edging", "Trimming edges"]; -1->Emitted(7, 1) Source(14, 5) + SourceIndex(0) -2 >Emitted(7, 41) Source(14, 63) + SourceIndex(0) -3 >Emitted(7, 43) Source(14, 6) + SourceIndex(0) -4 >Emitted(7, 58) Source(14, 13) + SourceIndex(0) -5 >Emitted(7, 60) Source(14, 15) + SourceIndex(0) -6 >Emitted(7, 73) Source(14, 20) + SourceIndex(0) -7 >Emitted(7, 75) Source(14, 22) + SourceIndex(0) -8 >Emitted(7, 89) Source(14, 28) + SourceIndex(0) -9 >Emitted(7, 90) Source(14, 64) + SourceIndex(0) + > +2 > +3 > let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"] +4 > +5 > numberC +6 > , +7 > nameC +8 > , +9 > skillC +10> ] = [3, "edging", "Trimming edges"]; +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 1) + SourceIndex(0) +3 >Emitted(7, 41) Source(14, 63) + SourceIndex(0) +4 >Emitted(7, 43) Source(14, 6) + SourceIndex(0) +5 >Emitted(7, 58) Source(14, 13) + SourceIndex(0) +6 >Emitted(7, 60) Source(14, 15) + SourceIndex(0) +7 >Emitted(7, 73) Source(14, 20) + SourceIndex(0) +8 >Emitted(7, 75) Source(14, 22) + SourceIndex(0) +9 >Emitted(7, 89) Source(14, 28) + SourceIndex(0) +10>Emitted(7, 90) Source(14, 64) + SourceIndex(0) --- >>>var numberA3 = robotA[0], robotAInfo = robotA.slice(1); 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map index 581a6a4bc5d..6d0bcc3b9b2 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,2BAAM,CAAgB;AACxB,2BAAM,CAAgB;AACtB,2BAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAExD,iDAAM,CAAsC;AAC7C,0CAA+E,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAE/E,0CAAkB,CAAgB;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,2BAAM,CAAgB;AACxB,2BAAM,CAAgB;AACtB,2BAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AAExD,iDAAM,CAAsC;AACjD,IAAA,sCAAmF,EAA9E,eAAO,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAuC;AAE/E,0CAAkB,CAAgB;AAEvC,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt index d0293fdaac9..64e22a28771 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern2.sourcemap.txt @@ -175,39 +175,42 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern2 --- >>>var _b = ["roomba", ["vaccum", "mopping"]], nameMC2 = _b[0], _c = _b[1], primarySkillC = _c[0], secondarySkillC = _c[1]; 1-> -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^ -11> ^ +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^ +12> ^ 1-> - >let -2 >[nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]] -3 > -4 > nameMC2 -5 > , -6 > [primarySkillC, secondarySkillC] -7 > -8 > primarySkillC -9 > , -10> secondarySkillC -11> ]] = ["roomba", ["vaccum", "mopping"]]; -1->Emitted(7, 1) Source(13, 5) + SourceIndex(0) -2 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) -3 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) -4 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) -5 >Emitted(7, 62) Source(13, 15) + SourceIndex(0) -6 >Emitted(7, 72) Source(13, 47) + SourceIndex(0) -7 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) -8 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) -9 >Emitted(7, 97) Source(13, 31) + SourceIndex(0) -10>Emitted(7, 120) Source(13, 46) + SourceIndex(0) -11>Emitted(7, 121) Source(13, 85) + SourceIndex(0) + > +2 > +3 > let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]] +4 > +5 > nameMC2 +6 > , +7 > [primarySkillC, secondarySkillC] +8 > +9 > primarySkillC +10> , +11> secondarySkillC +12> ]] = ["roomba", ["vaccum", "mopping"]]; +1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(13, 1) + SourceIndex(0) +3 >Emitted(7, 43) Source(13, 84) + SourceIndex(0) +4 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) +5 >Emitted(7, 60) Source(13, 13) + SourceIndex(0) +6 >Emitted(7, 62) Source(13, 15) + SourceIndex(0) +7 >Emitted(7, 72) Source(13, 47) + SourceIndex(0) +8 >Emitted(7, 74) Source(13, 16) + SourceIndex(0) +9 >Emitted(7, 95) Source(13, 29) + SourceIndex(0) +10>Emitted(7, 97) Source(13, 31) + SourceIndex(0) +11>Emitted(7, 120) Source(13, 46) + SourceIndex(0) +12>Emitted(7, 121) Source(13, 85) + SourceIndex(0) --- >>>var multiRobotAInfo = multiRobotA.slice(0); 1 > diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map index 61afc3ab57b..1b6c788952d 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,MAAc,CAAC;AAClE,IAAI,UAA+B,CAAC;AAEpC,IAAI,WAA6B,EAAE,MAAc,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAClG,IAAI,eAA8C,CAAC;AAEhD,iBAAK,CAAW;AACnB,gBAAuB,EAApB,aAAK,CAAgB;AACxB,+BAAsC,EAAnC,aAAK,CAA+B;AACpC,4BAAW,CAAgB;AAC9B,qBAAkC,EAA/B,mBAAW,CAAqB;AACnC,sCAAmD,EAAhD,mBAAW,CAAsC;AAEpD,mBAAkB,CAAC;AACnB,wBAAuB,CAAC;AACxB,uCAAsC,CAAC;AACvC,uBAAsB,CAAC;AACvB,4BAA2B,CAAC;AAC5B,+CAA8C,CAAC;AAE9C,mBAAO,EAAE,iBAAK,EAAE,kBAAM,CAAW;AAClC,gBAAsC,EAArC,eAAO,EAAE,aAAK,EAAE,cAAM,CAAgB;AACvC,+BAAqD,EAApD,eAAO,EAAE,aAAK,EAAE,cAAM,CAA+B;AACrD,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AACzD,qBAA6D,EAA5D,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAsB;AAC9D,wCAAgF,EAA/E,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAyC;AAEhF,mBAAO,EAAE,4BAAa,CAAW;AAClC,gBAAsC,EAArC,eAAO,EAAE,wBAAa,CAAgB;AACvC,+BAA4D,EAA3D,eAAO,EAAE,wBAAa,CAAsC;AAC7D,sCAAkC,CAAC;AACnC,2CAAuC,CAAC;AACxC,8DAA0D,CAAC;AAE3D,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,MAAc,CAAC;AAClE,IAAI,UAA+B,CAAC;AAEpC,IAAI,WAA6B,EAAE,MAAc,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAClG,IAAI,eAA8C,CAAC;AAEhD,iBAAK,CAAW;AACnB,gBAAuB,EAApB,aAAK,CAAgB;AACxB,+BAAsC,EAAnC,aAAK,CAA+B;AACpC,4BAAW,CAAgB;AAC9B,qBAAkC,EAA/B,mBAAW,CAAqB;AACnC,sCAAmD,EAAhD,mBAAW,CAAsC;AAEnD,mBAAO,CAAW;AAClB,wBAAO,CAAgB;AACvB,uCAAO,CAA+B;AACtC,uBAAM,CAAgB;AACtB,4BAAM,CAAqB;AAC3B,+CAAM,CAAwC;AAE9C,mBAAO,EAAE,iBAAK,EAAE,kBAAM,CAAW;AAClC,gBAAsC,EAArC,eAAO,EAAE,aAAK,EAAE,cAAM,CAAgB;AACvC,+BAAqD,EAApD,eAAO,EAAE,aAAK,EAAE,cAAM,CAA+B;AACrD,uBAAM,EAAE,mBAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAiB;AACzD,qBAA6D,EAA5D,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAsB;AAC9D,wCAAgF,EAA/E,cAAM,EAAE,UAAgC,EAA/B,qBAAa,EAAE,uBAAe,CAAyC;AAEhF,mBAAO,EAAE,4BAAa,CAAW;AAClC,gBAAsC,EAArC,eAAO,EAAE,wBAAa,CAAgB;AACvC,+BAA4D,EAA3D,eAAO,EAAE,wBAAa,CAAsC;AAC5D,sCAAkB,CAAgB;AAClC,2CAAkB,CAAqB;AACvC,8DAAkB,CAAwC;AAE3D,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt index 3c02134201b..466b36630c3 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPattern3.sourcemap.txt @@ -391,11 +391,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 4 > ^^^^^^-> 1 > > - > -2 >[numberB] = robotB -3 > ; -1 >Emitted(15, 1) Source(25, 1) + SourceIndex(0) -2 >Emitted(15, 20) Source(25, 19) + SourceIndex(0) + >[ +2 >numberB +3 > ] = robotB; +1 >Emitted(15, 1) Source(25, 2) + SourceIndex(0) +2 >Emitted(15, 20) Source(25, 9) + SourceIndex(0) 3 >Emitted(15, 21) Source(25, 20) + SourceIndex(0) --- >>>numberB = getRobotB()[0]; @@ -404,11 +404,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^^^^^^^^^^^-> 1-> - > -2 >[numberB] = getRobotB() -3 > ; -1->Emitted(16, 1) Source(26, 1) + SourceIndex(0) -2 >Emitted(16, 25) Source(26, 24) + SourceIndex(0) + >[ +2 >numberB +3 > ] = getRobotB(); +1->Emitted(16, 1) Source(26, 2) + SourceIndex(0) +2 >Emitted(16, 25) Source(26, 9) + SourceIndex(0) 3 >Emitted(16, 26) Source(26, 25) + SourceIndex(0) --- >>>numberB = [2, "trimmer", "trimming"][0]; @@ -416,11 +416,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3 > ^ 1-> - > -2 >[numberB] = [2, "trimmer", "trimming"] -3 > ; -1->Emitted(17, 1) Source(27, 1) + SourceIndex(0) -2 >Emitted(17, 40) Source(27, 39) + SourceIndex(0) + >[ +2 >numberB +3 > ] = [2, "trimmer", "trimming"]; +1->Emitted(17, 1) Source(27, 2) + SourceIndex(0) +2 >Emitted(17, 40) Source(27, 9) + SourceIndex(0) 3 >Emitted(17, 41) Source(27, 40) + SourceIndex(0) --- >>>nameMB = multiRobotB[0]; @@ -429,11 +429,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^-> 1 > - > -2 >[nameMB] = multiRobotB -3 > ; -1 >Emitted(18, 1) Source(28, 1) + SourceIndex(0) -2 >Emitted(18, 24) Source(28, 23) + SourceIndex(0) + >[ +2 >nameMB +3 > ] = multiRobotB; +1 >Emitted(18, 1) Source(28, 2) + SourceIndex(0) +2 >Emitted(18, 24) Source(28, 8) + SourceIndex(0) 3 >Emitted(18, 25) Source(28, 24) + SourceIndex(0) --- >>>nameMB = getMultiRobotB()[0]; @@ -442,11 +442,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^^^^^^^^^^^^^^^-> 1-> - > -2 >[nameMB] = getMultiRobotB() -3 > ; -1->Emitted(19, 1) Source(29, 1) + SourceIndex(0) -2 >Emitted(19, 29) Source(29, 28) + SourceIndex(0) + >[ +2 >nameMB +3 > ] = getMultiRobotB(); +1->Emitted(19, 1) Source(29, 2) + SourceIndex(0) +2 >Emitted(19, 29) Source(29, 8) + SourceIndex(0) 3 >Emitted(19, 30) Source(29, 29) + SourceIndex(0) --- >>>nameMB = ["trimmer", ["trimming", "edging"]][0]; @@ -455,11 +455,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^^^^^^^-> 1-> - > -2 >[nameMB] = ["trimmer", ["trimming", "edging"]] -3 > ; -1->Emitted(20, 1) Source(30, 1) + SourceIndex(0) -2 >Emitted(20, 48) Source(30, 47) + SourceIndex(0) + >[ +2 >nameMB +3 > ] = ["trimmer", ["trimming", "edging"]]; +1->Emitted(20, 1) Source(30, 2) + SourceIndex(0) +2 >Emitted(20, 48) Source(30, 8) + SourceIndex(0) 3 >Emitted(20, 49) Source(30, 48) + SourceIndex(0) --- >>>numberB = robotB[0], nameB = robotB[1], skillB = robotB[2]; @@ -729,11 +729,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^-> 1 > - > -2 >[...multiRobotAInfo] = multiRobotA -3 > ; -1 >Emitted(30, 1) Source(42, 1) + SourceIndex(0) -2 >Emitted(30, 39) Source(42, 35) + SourceIndex(0) + >[ +2 >...multiRobotAInfo +3 > ] = multiRobotA; +1 >Emitted(30, 1) Source(42, 2) + SourceIndex(0) +2 >Emitted(30, 39) Source(42, 20) + SourceIndex(0) 3 >Emitted(30, 40) Source(42, 36) + SourceIndex(0) --- >>>multiRobotAInfo = getMultiRobotB().slice(0); @@ -742,11 +742,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 3 > ^ 4 > ^^^^^^^^^^^^^^^^^^^^-> 1-> - > -2 >[...multiRobotAInfo] = getMultiRobotB() -3 > ; -1->Emitted(31, 1) Source(43, 1) + SourceIndex(0) -2 >Emitted(31, 44) Source(43, 40) + SourceIndex(0) + >[ +2 >...multiRobotAInfo +3 > ] = getMultiRobotB(); +1->Emitted(31, 1) Source(43, 2) + SourceIndex(0) +2 >Emitted(31, 44) Source(43, 20) + SourceIndex(0) 3 >Emitted(31, 45) Source(43, 41) + SourceIndex(0) --- >>>multiRobotAInfo = ["trimmer", ["trimming", "edging"]].slice(0); @@ -754,11 +754,11 @@ sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPattern3 2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3 > ^ 1-> - > -2 >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] -3 > ; -1->Emitted(32, 1) Source(44, 1) + SourceIndex(0) -2 >Emitted(32, 63) Source(44, 59) + SourceIndex(0) + >[ +2 >...multiRobotAInfo +3 > ] = ["trimmer", ["trimming", "edging"]]; +1->Emitted(32, 1) Source(44, 2) + SourceIndex(0) +2 >Emitted(32, 63) Source(44, 20) + SourceIndex(0) 3 >Emitted(32, 64) Source(44, 60) + SourceIndex(0) --- >>>if (nameA == nameB) { diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map index 41074c2d999..cd7a9813374 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js.map] -{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAExF,sBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAc;AAChE,uBAAW,EAAE,kBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAc;AAC/E,uFAAsJ,EAApJ,eAAW,EAAE,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAExF,sBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAc;AAChE,uBAAW,EAAE,kBAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAc;AACnF,IAAA,mFAA0J,EAApJ,eAAW,EAAE,cAAoD,EAA1C,qBAAiB,EAAE,yBAAqB,CAAsF;AAE3J,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt index deb5b3918f9..4d0845e1a75 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPattern.sourcemap.txt @@ -215,39 +215,42 @@ sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingP --- >>>var _c = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, nameC = _c.name, _d = _c.skills, primaryB = _d.primary, secondaryB = _d.secondary; 1-> -2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^ -4 > ^^^^^^^^^^^^^^^ -5 > ^^ -6 > ^^^^^^^^^^^^^^ -7 > ^^ -8 > ^^^^^^^^^^^^^^^^^^^^^ -9 > ^^ -10> ^^^^^^^^^^^^^^^^^^^^^^^^^ -11> ^ +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^ 1-> - >var -2 >{ name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } -3 > -4 > name: nameC -5 > , -6 > skills: { primary: primaryB, secondary: secondaryB } -7 > -8 > primary: primaryB -9 > , -10> secondary: secondaryB -11> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; -1->Emitted(5, 1) Source(16, 5) + SourceIndex(0) -2 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) -3 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) -4 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) -5 >Emitted(5, 107) Source(16, 20) + SourceIndex(0) -6 >Emitted(5, 121) Source(16, 72) + SourceIndex(0) -7 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) -8 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) -9 >Emitted(5, 146) Source(16, 49) + SourceIndex(0) -10>Emitted(5, 171) Source(16, 70) + SourceIndex(0) -11>Emitted(5, 172) Source(16, 156) + SourceIndex(0) + > +2 > +3 > var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } +4 > +5 > name: nameC +6 > , +7 > skills: { primary: primaryB, secondary: secondaryB } +8 > +9 > primary: primaryB +10> , +11> secondary: secondaryB +12> } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +1->Emitted(5, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(16, 1) + SourceIndex(0) +3 >Emitted(5, 88) Source(16, 155) + SourceIndex(0) +4 >Emitted(5, 90) Source(16, 7) + SourceIndex(0) +5 >Emitted(5, 105) Source(16, 18) + SourceIndex(0) +6 >Emitted(5, 107) Source(16, 20) + SourceIndex(0) +7 >Emitted(5, 121) Source(16, 72) + SourceIndex(0) +8 >Emitted(5, 123) Source(16, 30) + SourceIndex(0) +9 >Emitted(5, 144) Source(16, 47) + SourceIndex(0) +10>Emitted(5, 146) Source(16, 49) + SourceIndex(0) +11>Emitted(5, 171) Source(16, 70) + SourceIndex(0) +12>Emitted(5, 172) Source(16, 156) + SourceIndex(0) --- >>>if (nameB == nameB) { 1 > From 631e62d7ba30f098992c199019c2853fd4ea5b67 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 10 Dec 2015 14:44:46 -0800 Subject: [PATCH 052/164] Tests for source map of variable declarations with binding pattern in differnt order in the declaration list --- ...lidationDestructuringVariableStatement1.js | 49 ++ ...tionDestructuringVariableStatement1.js.map | 2 + ...tructuringVariableStatement1.sourcemap.txt | 571 ++++++++++++++++++ ...ionDestructuringVariableStatement1.symbols | 127 ++++ ...ationDestructuringVariableStatement1.types | 149 +++++ ...lidationDestructuringVariableStatement1.ts | 28 + 6 files changed, 926 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js new file mode 100644 index 00000000000..cdf4451195e --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js @@ -0,0 +1,49 @@ +//// [sourceMapValidationDestructuringVariableStatement1.ts] +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +var a: string, { name: nameA } = robotA; +var b: string, { name: nameB, skill: skillB } = robotB; +var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + +var { name: nameA } = robotA, a = hello; +var { name: nameB, skill: skillB } = robotB, b = " hello"; +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; + +var a = hello, { name: nameA } = robotA, a1= "hello"; +var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; +var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} + +//// [sourceMapValidationDestructuringVariableStatement1.js] +var hello = "hello"; +var robotA = { name: "mower", skill: "mowing" }; +var robotB = { name: "trimmer", skill: "trimming" }; +var a, nameA = robotA.name; +var b, nameB = robotB.name, skillB = robotB.skill; +var c, _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; +var nameA = robotA.name, a = hello; +var nameB = robotB.name, skillB = robotB.skill, b = " hello"; +var _b = { name: "Edger", skill: "cutting edges" }, nameC = _b.name, skillC = _b.skill, c = hello; +var a = hello, nameA = robotA.name, a1 = "hello"; +var b = hello, nameB = robotB.name, skillB = robotB.skill, b1 = "hello"; +var c = hello, _c = { name: "Edger", skill: "cutting edges" }, nameC = _c.name, skillC = _c.skill, c1 = hello; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatement1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js.map new file mode 100644 index 00000000000..cc2ae54143d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatement1.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatement1.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatement1.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC3D,IAAI,CAAS,EAAI,mBAAW,CAAY;AACxC,IAAI,CAAS,EAAI,mBAAW,EAAE,qBAAa,CAAY;AACvD,IAAI,CAAS,EAAE,8CAA0E,EAAxE,eAAW,EAAE,iBAAa,CAA+C;AAEpF,uBAAW,EAAa,CAAC,GAAG,KAAK,CAAC;AAClC,uBAAW,EAAE,qBAAa,EAAa,CAAC,GAAG,QAAQ,CAAC;AAC1D,IAAA,8CAA8E,EAAxE,eAAW,EAAE,iBAAa,EAAgD,CAAC,GAAG,KAAK,CAAC;AAE1F,IAAI,CAAC,GAAG,KAAK,EAAI,mBAAW,EAAa,EAAE,GAAE,OAAO,CAAC;AACrD,IAAI,CAAC,GAAG,KAAK,EAAI,mBAAW,EAAE,qBAAa,EAAa,EAAE,GAAG,OAAO,CAAC;AACrE,IAAI,CAAC,GAAG,KAAK,EAAE,8CAA0E,EAAxE,eAAW,EAAE,iBAAa,EAAgD,EAAE,GAAG,KAAK,CAAC;AACtG,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.sourcemap.txt new file mode 100644 index 00000000000..70407ad9f81 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.sourcemap.txt @@ -0,0 +1,571 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatement1.js +mapUrl: sourceMapValidationDestructuringVariableStatement1.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatement1.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.js +sourceFile:sourceMapValidationDestructuringVariableStatement1.ts +------------------------------------------------------------------- +>>>var hello = "hello"; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >interface Robot { + > name: string; + > skill: string; + >} + >declare var console: { + > log(msg: string): void; + >} + > +2 >var +3 > hello +4 > = +5 > "hello" +6 > ; +1 >Emitted(1, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(8, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(8, 13) + SourceIndex(0) +5 >Emitted(1, 20) Source(8, 20) + SourceIndex(0) +6 >Emitted(1, 21) Source(8, 21) + SourceIndex(0) +--- +>>>var robotA = { name: "mower", skill: "mowing" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^-> +1-> + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1->Emitted(2, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(9, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(9, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(9, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(9, 29) + SourceIndex(0) +8 >Emitted(2, 29) Source(9, 36) + SourceIndex(0) +9 >Emitted(2, 31) Source(9, 38) + SourceIndex(0) +10>Emitted(2, 36) Source(9, 43) + SourceIndex(0) +11>Emitted(2, 38) Source(9, 45) + SourceIndex(0) +12>Emitted(2, 46) Source(9, 53) + SourceIndex(0) +13>Emitted(2, 48) Source(9, 55) + SourceIndex(0) +14>Emitted(2, 49) Source(9, 56) + SourceIndex(0) +--- +>>>var robotB = { name: "trimmer", skill: "trimming" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^ +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > { +6 > name +7 > : +8 > "trimmer" +9 > , +10> skill +11> : +12> "trimming" +13> } +14> ; +1->Emitted(3, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(10, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(10, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(10, 21) + SourceIndex(0) +5 >Emitted(3, 16) Source(10, 23) + SourceIndex(0) +6 >Emitted(3, 20) Source(10, 27) + SourceIndex(0) +7 >Emitted(3, 22) Source(10, 29) + SourceIndex(0) +8 >Emitted(3, 31) Source(10, 38) + SourceIndex(0) +9 >Emitted(3, 33) Source(10, 40) + SourceIndex(0) +10>Emitted(3, 38) Source(10, 45) + SourceIndex(0) +11>Emitted(3, 40) Source(10, 47) + SourceIndex(0) +12>Emitted(3, 50) Source(10, 57) + SourceIndex(0) +13>Emitted(3, 52) Source(10, 59) + SourceIndex(0) +14>Emitted(3, 53) Source(10, 60) + SourceIndex(0) +--- +>>>var a, nameA = robotA.name; +1 > +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >var +3 > a: string +4 > , { +5 > name: nameA +6 > } = robotA; +1 >Emitted(4, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(11, 5) + SourceIndex(0) +3 >Emitted(4, 6) Source(11, 14) + SourceIndex(0) +4 >Emitted(4, 8) Source(11, 18) + SourceIndex(0) +5 >Emitted(4, 27) Source(11, 29) + SourceIndex(0) +6 >Emitted(4, 28) Source(11, 41) + SourceIndex(0) +--- +>>>var b, nameB = robotB.name, skillB = robotB.skill; +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^ +8 > ^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var +3 > b: string +4 > , { +5 > name: nameB +6 > , +7 > skill: skillB +8 > } = robotB; +1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 6) Source(12, 14) + SourceIndex(0) +4 >Emitted(5, 8) Source(12, 18) + SourceIndex(0) +5 >Emitted(5, 27) Source(12, 29) + SourceIndex(0) +6 >Emitted(5, 29) Source(12, 31) + SourceIndex(0) +7 >Emitted(5, 50) Source(12, 44) + SourceIndex(0) +8 >Emitted(5, 51) Source(12, 56) + SourceIndex(0) +--- +>>>var c, _a = { name: "Edger", skill: "cutting edges" }, nameC = _a.name, skillC = _a.skill; +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^ +10> ^ +1-> + > +2 >var +3 > c: string +4 > , +5 > { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } +6 > +7 > name: nameC +8 > , +9 > skill: skillC +10> } = { name: "Edger", skill: "cutting edges" }; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 6) Source(13, 14) + SourceIndex(0) +4 >Emitted(6, 8) Source(13, 16) + SourceIndex(0) +5 >Emitted(6, 54) Source(13, 90) + SourceIndex(0) +6 >Emitted(6, 56) Source(13, 18) + SourceIndex(0) +7 >Emitted(6, 71) Source(13, 29) + SourceIndex(0) +8 >Emitted(6, 73) Source(13, 31) + SourceIndex(0) +9 >Emitted(6, 90) Source(13, 44) + SourceIndex(0) +10>Emitted(6, 91) Source(13, 91) + SourceIndex(0) +--- +>>>var nameA = robotA.name, a = hello; +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^ +5 > ^^^ +6 > ^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + >var { +2 >name: nameA +3 > } = robotA, +4 > a +5 > = +6 > hello +7 > ; +1 >Emitted(7, 1) Source(15, 7) + SourceIndex(0) +2 >Emitted(7, 24) Source(15, 18) + SourceIndex(0) +3 >Emitted(7, 26) Source(15, 31) + SourceIndex(0) +4 >Emitted(7, 27) Source(15, 32) + SourceIndex(0) +5 >Emitted(7, 30) Source(15, 35) + SourceIndex(0) +6 >Emitted(7, 35) Source(15, 40) + SourceIndex(0) +7 >Emitted(7, 36) Source(15, 41) + SourceIndex(0) +--- +>>>var nameB = robotB.name, skillB = robotB.skill, b = " hello"; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^^^^^^^^ +9 > ^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + >var { +2 >name: nameB +3 > , +4 > skill: skillB +5 > } = robotB, +6 > b +7 > = +8 > " hello" +9 > ; +1->Emitted(8, 1) Source(16, 7) + SourceIndex(0) +2 >Emitted(8, 24) Source(16, 18) + SourceIndex(0) +3 >Emitted(8, 26) Source(16, 20) + SourceIndex(0) +4 >Emitted(8, 47) Source(16, 33) + SourceIndex(0) +5 >Emitted(8, 49) Source(16, 46) + SourceIndex(0) +6 >Emitted(8, 50) Source(16, 47) + SourceIndex(0) +7 >Emitted(8, 53) Source(16, 50) + SourceIndex(0) +8 >Emitted(8, 61) Source(16, 58) + SourceIndex(0) +9 >Emitted(8, 62) Source(16, 59) + SourceIndex(0) +--- +>>>var _b = { name: "Edger", skill: "cutting edges" }, nameC = _b.name, skillC = _b.skill, c = hello; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^^^^^ +12> ^ +1-> + > +2 > +3 > var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } +4 > +5 > name: nameC +6 > , +7 > skill: skillC +8 > } = { name: "Edger", skill: "cutting edges" }, +9 > c +10> = +11> hello +12> ; +1->Emitted(9, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(17, 1) + SourceIndex(0) +3 >Emitted(9, 51) Source(17, 79) + SourceIndex(0) +4 >Emitted(9, 53) Source(17, 7) + SourceIndex(0) +5 >Emitted(9, 68) Source(17, 18) + SourceIndex(0) +6 >Emitted(9, 70) Source(17, 20) + SourceIndex(0) +7 >Emitted(9, 87) Source(17, 33) + SourceIndex(0) +8 >Emitted(9, 89) Source(17, 81) + SourceIndex(0) +9 >Emitted(9, 90) Source(17, 82) + SourceIndex(0) +10>Emitted(9, 93) Source(17, 85) + SourceIndex(0) +11>Emitted(9, 98) Source(17, 90) + SourceIndex(0) +12>Emitted(9, 99) Source(17, 91) + SourceIndex(0) +--- +>>>var a = hello, nameA = robotA.name, a1 = "hello"; +1 > +2 >^^^^ +3 > ^ +4 > ^^^ +5 > ^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^ +11> ^^^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >var +3 > a +4 > = +5 > hello +6 > , { +7 > name: nameA +8 > } = robotA, +9 > a1 +10> = +11> "hello" +12> ; +1 >Emitted(10, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(19, 5) + SourceIndex(0) +3 >Emitted(10, 6) Source(19, 6) + SourceIndex(0) +4 >Emitted(10, 9) Source(19, 9) + SourceIndex(0) +5 >Emitted(10, 14) Source(19, 14) + SourceIndex(0) +6 >Emitted(10, 16) Source(19, 18) + SourceIndex(0) +7 >Emitted(10, 35) Source(19, 29) + SourceIndex(0) +8 >Emitted(10, 37) Source(19, 42) + SourceIndex(0) +9 >Emitted(10, 39) Source(19, 44) + SourceIndex(0) +10>Emitted(10, 42) Source(19, 46) + SourceIndex(0) +11>Emitted(10, 49) Source(19, 53) + SourceIndex(0) +12>Emitted(10, 50) Source(19, 54) + SourceIndex(0) +--- +>>>var b = hello, nameB = robotB.name, skillB = robotB.skill, b1 = "hello"; +1-> +2 >^^^^ +3 > ^ +4 > ^^^ +5 > ^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^ +12> ^^^ +13> ^^^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var +3 > b +4 > = +5 > hello +6 > , { +7 > name: nameB +8 > , +9 > skill: skillB +10> } = robotB, +11> b1 +12> = +13> "hello" +14> ; +1->Emitted(11, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(11, 5) Source(20, 5) + SourceIndex(0) +3 >Emitted(11, 6) Source(20, 6) + SourceIndex(0) +4 >Emitted(11, 9) Source(20, 9) + SourceIndex(0) +5 >Emitted(11, 14) Source(20, 14) + SourceIndex(0) +6 >Emitted(11, 16) Source(20, 18) + SourceIndex(0) +7 >Emitted(11, 35) Source(20, 29) + SourceIndex(0) +8 >Emitted(11, 37) Source(20, 31) + SourceIndex(0) +9 >Emitted(11, 58) Source(20, 44) + SourceIndex(0) +10>Emitted(11, 60) Source(20, 57) + SourceIndex(0) +11>Emitted(11, 62) Source(20, 59) + SourceIndex(0) +12>Emitted(11, 65) Source(20, 62) + SourceIndex(0) +13>Emitted(11, 72) Source(20, 69) + SourceIndex(0) +14>Emitted(11, 73) Source(20, 70) + SourceIndex(0) +--- +>>>var c = hello, _c = { name: "Edger", skill: "cutting edges" }, nameC = _c.name, skillC = _c.skill, c1 = hello; +1-> +2 >^^^^ +3 > ^ +4 > ^^^ +5 > ^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^ +14> ^^^ +15> ^^^^^ +16> ^ +1-> + > +2 >var +3 > c +4 > = +5 > hello +6 > , +7 > { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } +8 > +9 > name: nameC +10> , +11> skill: skillC +12> } = { name: "Edger", skill: "cutting edges" }, +13> c1 +14> = +15> hello +16> ; +1->Emitted(12, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(12, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(12, 6) Source(21, 6) + SourceIndex(0) +4 >Emitted(12, 9) Source(21, 9) + SourceIndex(0) +5 >Emitted(12, 14) Source(21, 14) + SourceIndex(0) +6 >Emitted(12, 16) Source(21, 16) + SourceIndex(0) +7 >Emitted(12, 62) Source(21, 90) + SourceIndex(0) +8 >Emitted(12, 64) Source(21, 18) + SourceIndex(0) +9 >Emitted(12, 79) Source(21, 29) + SourceIndex(0) +10>Emitted(12, 81) Source(21, 31) + SourceIndex(0) +11>Emitted(12, 98) Source(21, 44) + SourceIndex(0) +12>Emitted(12, 100) Source(21, 92) + SourceIndex(0) +13>Emitted(12, 102) Source(21, 94) + SourceIndex(0) +14>Emitted(12, 105) Source(21, 97) + SourceIndex(0) +15>Emitted(12, 110) Source(21, 102) + SourceIndex(0) +16>Emitted(12, 111) Source(21, 103) + SourceIndex(0) +--- +>>>if (nameA == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(13, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(13, 3) Source(22, 3) + SourceIndex(0) +3 >Emitted(13, 4) Source(22, 4) + SourceIndex(0) +4 >Emitted(13, 5) Source(22, 5) + SourceIndex(0) +5 >Emitted(13, 10) Source(22, 10) + SourceIndex(0) +6 >Emitted(13, 14) Source(22, 14) + SourceIndex(0) +7 >Emitted(13, 19) Source(22, 19) + SourceIndex(0) +8 >Emitted(13, 20) Source(22, 20) + SourceIndex(0) +9 >Emitted(13, 21) Source(22, 21) + SourceIndex(0) +10>Emitted(13, 22) Source(22, 22) + SourceIndex(0) +--- +>>> console.log(skillB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillB +7 > ) +8 > ; +1->Emitted(14, 5) Source(23, 5) + SourceIndex(0) +2 >Emitted(14, 12) Source(23, 12) + SourceIndex(0) +3 >Emitted(14, 13) Source(23, 13) + SourceIndex(0) +4 >Emitted(14, 16) Source(23, 16) + SourceIndex(0) +5 >Emitted(14, 17) Source(23, 17) + SourceIndex(0) +6 >Emitted(14, 23) Source(23, 23) + SourceIndex(0) +7 >Emitted(14, 24) Source(23, 24) + SourceIndex(0) +8 >Emitted(14, 25) Source(23, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^-> +1 > + > +2 >} +1 >Emitted(15, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(15, 2) Source(24, 2) + SourceIndex(0) +--- +>>>else { +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >else +3 > +4 > { +1->Emitted(16, 1) Source(25, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(25, 5) + SourceIndex(0) +3 >Emitted(16, 6) Source(25, 6) + SourceIndex(0) +4 >Emitted(16, 7) Source(25, 7) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(17, 5) Source(26, 5) + SourceIndex(0) +2 >Emitted(17, 12) Source(26, 12) + SourceIndex(0) +3 >Emitted(17, 13) Source(26, 13) + SourceIndex(0) +4 >Emitted(17, 16) Source(26, 16) + SourceIndex(0) +5 >Emitted(17, 17) Source(26, 17) + SourceIndex(0) +6 >Emitted(17, 22) Source(26, 22) + SourceIndex(0) +7 >Emitted(17, 23) Source(26, 23) + SourceIndex(0) +8 >Emitted(17, 24) Source(26, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(18, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(18, 2) Source(27, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatement1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols new file mode 100644 index 00000000000..eb009ba9ad7 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.symbols @@ -0,0 +1,127 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.ts === +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 0)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 1, 17)) +} +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 5, 8)) +} +var hello = "hello"; +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 8, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 8, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 8, 36)) + +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 9, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 9, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 9, 38)) + +var a: string, { name: nameA } = robotA; +>a : Symbol(a, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 3)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 16)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 8, 3)) + +var b: string, { name: nameB, skill: skillB } = robotB; +>b : Symbol(b, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 44), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 3)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 16)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 1, 17)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 29)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 9, 3)) + +var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +>c : Symbol(c, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 79), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 3)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 49)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 16)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 64)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 29)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 49)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 64)) + +var { name: nameA } = robotA, a = hello; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 16)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 8, 3)) +>a : Symbol(a, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 3)) +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) + +var { name: nameB, skill: skillB } = robotB, b = " hello"; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 16)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 1, 17)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 29)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 9, 3)) +>b : Symbol(b, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 44), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 3)) + +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 38)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 16)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 53)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 29)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 38)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 53)) +>c : Symbol(c, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 79), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 3)) +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) + +var a = hello, { name: nameA } = robotA, a1= "hello"; +>a : Symbol(a, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 3)) +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 16)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 8, 3)) +>a1 : Symbol(a1, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 40)) + +var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; +>b : Symbol(b, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 44), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 3)) +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 16)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 1, 17)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 29)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 9, 3)) +>b1 : Symbol(b1, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 55)) + +var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; +>c : Symbol(c, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 3), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 79), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 3)) +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 49)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 16)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 64)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 29)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 49)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 64)) +>c1 : Symbol(c1, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 90)) +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 7, 3)) + +if (nameA == nameB) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 10, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 14, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 18, 16)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 16)) + + console.log(skillB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 22)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 11, 29), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 15, 18), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 19, 29)) +} +else { + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 4, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatement1.ts, 12, 16), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 16, 5), Decl(sourceMapValidationDestructuringVariableStatement1.ts, 20, 16)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.types new file mode 100644 index 00000000000..9d8023f5f74 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatement1.types @@ -0,0 +1,149 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.ts === +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +var hello = "hello"; +>hello : string +>"hello" : string + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +>robotB : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +var a: string, { name: nameA } = robotA; +>a : string +>name : any +>nameA : string +>robotA : Robot + +var b: string, { name: nameB, skill: skillB } = robotB; +>b : string +>name : any +>nameB : string +>skill : any +>skillB : string +>robotB : Robot + +var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +>c : string +>name : any +>nameC : string +>skill : any +>skillC : string +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +var { name: nameA } = robotA, a = hello; +>name : any +>nameA : string +>robotA : Robot +>a : string +>hello : string + +var { name: nameB, skill: skillB } = robotB, b = " hello"; +>name : any +>nameB : string +>skill : any +>skillB : string +>robotB : Robot +>b : string +>" hello" : string + +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; +>name : any +>nameC : string +>skill : any +>skillC : string +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string +>c : string +>hello : string + +var a = hello, { name: nameA } = robotA, a1= "hello"; +>a : string +>hello : string +>name : any +>nameA : string +>robotA : Robot +>a1 : string +>"hello" : string + +var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; +>b : string +>hello : string +>name : any +>nameB : string +>skill : any +>skillB : string +>robotB : Robot +>b1 : string +>"hello" : string + +var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; +>c : string +>hello : string +>name : any +>nameC : string +>skill : any +>skillC : string +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string +>c1 : string +>hello : string + +if (nameA == nameB) { +>nameA == nameB : boolean +>nameA : string +>nameB : string + + console.log(skillB); +>console.log(skillB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillB : string +} +else { + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.ts new file mode 100644 index 00000000000..3697402bbcf --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatement1.ts @@ -0,0 +1,28 @@ +// @sourcemap: true +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +var a: string, { name: nameA } = robotA; +var b: string, { name: nameB, skill: skillB } = robotB; +var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + +var { name: nameA } = robotA, a = hello; +var { name: nameB, skill: skillB } = robotB, b = " hello"; +var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; + +var a = hello, { name: nameA } = robotA, a1= "hello"; +var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; +var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} \ No newline at end of file From 513e1f5fce5edfb2151eab9087f8aa82ef2bbf4a Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 10 Dec 2015 15:03:10 -0800 Subject: [PATCH 053/164] If the destructuring assignment is synthetic use the left side as source map This helps in scenarios like below where the assignment is created synthetically for ({a} of {a: string}) { } --- src/compiler/emitter.ts | 5 +- ...tructuringForOfArrayBindingPattern2.js.map | 2 +- ...ingForOfArrayBindingPattern2.sourcemap.txt | 513 ++++++++++-------- ...ructuringForOfObjectBindingPattern2.js.map | 2 +- ...ngForOfObjectBindingPattern2.sourcemap.txt | 468 ++++++++-------- 5 files changed, 537 insertions(+), 453 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index f152618312a..a4bbe9b7528 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3955,7 +3955,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } else if (isAssignmentExpressionStatement) { // Source map node for root.left = root.right is root - emitDestructuringAssignment(target, value, root); + // but if root is synthetic, which could be in below case, use the target which is { a } + // for ({a} of {a: string}) { + // } + emitDestructuringAssignment(target, value, nodeIsSynthesized(root) ? target : root); } else { if (root.parent.kind !== SyntaxKind.ParenthesizedExpression) { diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map index ca3d6f8d90f..cae221df0f2 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfArrayBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt index 60c28ff0174..72970488233 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPattern2.sourcemap.txt @@ -474,14 +474,17 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _a = robots_1[_i], nameA = _a[1]; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ 1 > -2 > [, -3 > nameA +2 > [, nameA] +3 > +4 > nameA 1 >Emitted(18, 5) Source(26, 6) + SourceIndex(0) -2 >Emitted(18, 24) Source(26, 9) + SourceIndex(0) -3 >Emitted(18, 37) Source(26, 14) + SourceIndex(0) +2 >Emitted(18, 22) Source(26, 15) + SourceIndex(0) +3 >Emitted(18, 24) Source(26, 9) + SourceIndex(0) +4 >Emitted(18, 37) Source(26, 14) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -564,14 +567,17 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _d = _c[_b], nameA = _d[1]; 1 >^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ 1 > -2 > [, -3 > nameA +2 > [, nameA] +3 > +4 > nameA 1 >Emitted(22, 5) Source(29, 6) + SourceIndex(0) -2 >Emitted(22, 18) Source(29, 9) + SourceIndex(0) -3 >Emitted(22, 31) Source(29, 14) + SourceIndex(0) +2 >Emitted(22, 16) Source(29, 15) + SourceIndex(0) +3 >Emitted(22, 18) Source(29, 9) + SourceIndex(0) +4 >Emitted(22, 31) Source(29, 14) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -660,14 +666,17 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _g = _f[_e], nameA = _g[1]; 1 >^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^ 1 > -2 > [, -3 > nameA +2 > [, nameA] +3 > +4 > nameA 1 >Emitted(26, 5) Source(32, 6) + SourceIndex(0) -2 >Emitted(26, 18) Source(32, 9) + SourceIndex(0) -3 >Emitted(26, 31) Source(32, 14) + SourceIndex(0) +2 >Emitted(26, 16) Source(32, 15) + SourceIndex(0) +3 >Emitted(26, 18) Source(32, 9) + SourceIndex(0) +4 >Emitted(26, 31) Source(32, 14) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -745,26 +754,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _j = multiRobots_1[_h], _k = _j[1], primarySkillA = _k[0], secondarySkillA = _k[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [, -3 > [primarySkillA, secondarySkillA] -4 > -5 > primarySkillA -6 > , -7 > secondarySkillA +2 > [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA 1->Emitted(30, 5) Source(35, 6) + SourceIndex(0) -2 >Emitted(30, 29) Source(35, 9) + SourceIndex(0) -3 >Emitted(30, 39) Source(35, 41) + SourceIndex(0) -4 >Emitted(30, 41) Source(35, 10) + SourceIndex(0) -5 >Emitted(30, 62) Source(35, 23) + SourceIndex(0) -6 >Emitted(30, 64) Source(35, 25) + SourceIndex(0) -7 >Emitted(30, 87) Source(35, 40) + SourceIndex(0) +2 >Emitted(30, 27) Source(35, 42) + SourceIndex(0) +3 >Emitted(30, 29) Source(35, 9) + SourceIndex(0) +4 >Emitted(30, 39) Source(35, 41) + SourceIndex(0) +5 >Emitted(30, 41) Source(35, 10) + SourceIndex(0) +6 >Emitted(30, 62) Source(35, 23) + SourceIndex(0) +7 >Emitted(30, 64) Source(35, 25) + SourceIndex(0) +8 >Emitted(30, 87) Source(35, 40) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -848,26 +860,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _o = _m[_l], _p = _o[1], primarySkillA = _p[0], secondarySkillA = _p[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [, -3 > [primarySkillA, secondarySkillA] -4 > -5 > primarySkillA -6 > , -7 > secondarySkillA +2 > [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA 1->Emitted(34, 5) Source(38, 6) + SourceIndex(0) -2 >Emitted(34, 18) Source(38, 9) + SourceIndex(0) -3 >Emitted(34, 28) Source(38, 41) + SourceIndex(0) -4 >Emitted(34, 30) Source(38, 10) + SourceIndex(0) -5 >Emitted(34, 51) Source(38, 23) + SourceIndex(0) -6 >Emitted(34, 53) Source(38, 25) + SourceIndex(0) -7 >Emitted(34, 76) Source(38, 40) + SourceIndex(0) +2 >Emitted(34, 16) Source(38, 42) + SourceIndex(0) +3 >Emitted(34, 18) Source(38, 9) + SourceIndex(0) +4 >Emitted(34, 28) Source(38, 41) + SourceIndex(0) +5 >Emitted(34, 30) Source(38, 10) + SourceIndex(0) +6 >Emitted(34, 51) Source(38, 23) + SourceIndex(0) +7 >Emitted(34, 53) Source(38, 25) + SourceIndex(0) +8 >Emitted(34, 76) Source(38, 40) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -957,26 +972,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _s = _r[_q], _t = _s[1], primarySkillA = _t[0], secondarySkillA = _t[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [, -3 > [primarySkillA, secondarySkillA] -4 > -5 > primarySkillA -6 > , -7 > secondarySkillA +2 > [, [primarySkillA, secondarySkillA]] +3 > +4 > [primarySkillA, secondarySkillA] +5 > +6 > primarySkillA +7 > , +8 > secondarySkillA 1->Emitted(38, 5) Source(41, 6) + SourceIndex(0) -2 >Emitted(38, 18) Source(41, 9) + SourceIndex(0) -3 >Emitted(38, 28) Source(41, 41) + SourceIndex(0) -4 >Emitted(38, 30) Source(41, 10) + SourceIndex(0) -5 >Emitted(38, 51) Source(41, 23) + SourceIndex(0) -6 >Emitted(38, 53) Source(41, 25) + SourceIndex(0) -7 >Emitted(38, 76) Source(41, 40) + SourceIndex(0) +2 >Emitted(38, 16) Source(41, 42) + SourceIndex(0) +3 >Emitted(38, 18) Source(41, 9) + SourceIndex(0) +4 >Emitted(38, 28) Source(41, 41) + SourceIndex(0) +5 >Emitted(38, 30) Source(41, 10) + SourceIndex(0) +6 >Emitted(38, 51) Source(41, 23) + SourceIndex(0) +7 >Emitted(38, 53) Source(41, 25) + SourceIndex(0) +8 >Emitted(38, 76) Source(41, 40) + SourceIndex(0) --- >>> console.log(primarySkillA); 1 >^^^^ @@ -1582,26 +1600,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _5 = robots_3[_4], numberA2 = _5[0], nameA2 = _5[1], skillA2 = _5[2]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > numberA2 -4 > , -5 > nameA2 -6 > , -7 > skillA2 +2 > [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 1->Emitted(66, 5) Source(64, 6) + SourceIndex(0) -2 >Emitted(66, 24) Source(64, 7) + SourceIndex(0) -3 >Emitted(66, 40) Source(64, 15) + SourceIndex(0) -4 >Emitted(66, 42) Source(64, 17) + SourceIndex(0) -5 >Emitted(66, 56) Source(64, 23) + SourceIndex(0) -6 >Emitted(66, 58) Source(64, 25) + SourceIndex(0) -7 >Emitted(66, 73) Source(64, 32) + SourceIndex(0) +2 >Emitted(66, 22) Source(64, 33) + SourceIndex(0) +3 >Emitted(66, 24) Source(64, 7) + SourceIndex(0) +4 >Emitted(66, 40) Source(64, 15) + SourceIndex(0) +5 >Emitted(66, 42) Source(64, 17) + SourceIndex(0) +6 >Emitted(66, 56) Source(64, 23) + SourceIndex(0) +7 >Emitted(66, 58) Source(64, 25) + SourceIndex(0) +8 >Emitted(66, 73) Source(64, 32) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1685,26 +1706,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _8 = _7[_6], numberA2 = _8[0], nameA2 = _8[1], skillA2 = _8[2]; 1->^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > numberA2 -4 > , -5 > nameA2 -6 > , -7 > skillA2 +2 > [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 1->Emitted(70, 5) Source(67, 6) + SourceIndex(0) -2 >Emitted(70, 18) Source(67, 7) + SourceIndex(0) -3 >Emitted(70, 34) Source(67, 15) + SourceIndex(0) -4 >Emitted(70, 36) Source(67, 17) + SourceIndex(0) -5 >Emitted(70, 50) Source(67, 23) + SourceIndex(0) -6 >Emitted(70, 52) Source(67, 25) + SourceIndex(0) -7 >Emitted(70, 67) Source(67, 32) + SourceIndex(0) +2 >Emitted(70, 16) Source(67, 33) + SourceIndex(0) +3 >Emitted(70, 18) Source(67, 7) + SourceIndex(0) +4 >Emitted(70, 34) Source(67, 15) + SourceIndex(0) +5 >Emitted(70, 36) Source(67, 17) + SourceIndex(0) +6 >Emitted(70, 50) Source(67, 23) + SourceIndex(0) +7 >Emitted(70, 52) Source(67, 25) + SourceIndex(0) +8 >Emitted(70, 67) Source(67, 32) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1794,26 +1818,29 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _11 = _10[_9], numberA2 = _11[0], nameA2 = _11[1], skillA2 = _11[2]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > numberA2 -4 > , -5 > nameA2 -6 > , -7 > skillA2 +2 > [numberA2, nameA2, skillA2] +3 > +4 > numberA2 +5 > , +6 > nameA2 +7 > , +8 > skillA2 1->Emitted(74, 5) Source(70, 6) + SourceIndex(0) -2 >Emitted(74, 20) Source(70, 7) + SourceIndex(0) -3 >Emitted(74, 37) Source(70, 15) + SourceIndex(0) -4 >Emitted(74, 39) Source(70, 17) + SourceIndex(0) -5 >Emitted(74, 54) Source(70, 23) + SourceIndex(0) -6 >Emitted(74, 56) Source(70, 25) + SourceIndex(0) -7 >Emitted(74, 72) Source(70, 32) + SourceIndex(0) +2 >Emitted(74, 18) Source(70, 33) + SourceIndex(0) +3 >Emitted(74, 20) Source(70, 7) + SourceIndex(0) +4 >Emitted(74, 37) Source(70, 15) + SourceIndex(0) +5 >Emitted(74, 39) Source(70, 17) + SourceIndex(0) +6 >Emitted(74, 54) Source(70, 23) + SourceIndex(0) +7 >Emitted(74, 56) Source(70, 25) + SourceIndex(0) +8 >Emitted(74, 72) Source(70, 32) + SourceIndex(0) --- >>> console.log(nameA2); 1 >^^^^ @@ -1891,32 +1918,35 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _13 = multiRobots_3[_12], nameMA = _13[0], _14 = _13[1], primarySkillA = _14[0], secondarySkillA = _14[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > nameMA -4 > , -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA +2 > [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA 1->Emitted(78, 5) Source(73, 6) + SourceIndex(0) -2 >Emitted(78, 31) Source(73, 7) + SourceIndex(0) -3 >Emitted(78, 46) Source(73, 13) + SourceIndex(0) -4 >Emitted(78, 48) Source(73, 15) + SourceIndex(0) -5 >Emitted(78, 60) Source(73, 47) + SourceIndex(0) -6 >Emitted(78, 62) Source(73, 16) + SourceIndex(0) -7 >Emitted(78, 84) Source(73, 29) + SourceIndex(0) -8 >Emitted(78, 86) Source(73, 31) + SourceIndex(0) -9 >Emitted(78, 110) Source(73, 46) + SourceIndex(0) +2 >Emitted(78, 29) Source(73, 48) + SourceIndex(0) +3 >Emitted(78, 31) Source(73, 7) + SourceIndex(0) +4 >Emitted(78, 46) Source(73, 13) + SourceIndex(0) +5 >Emitted(78, 48) Source(73, 15) + SourceIndex(0) +6 >Emitted(78, 60) Source(73, 47) + SourceIndex(0) +7 >Emitted(78, 62) Source(73, 16) + SourceIndex(0) +8 >Emitted(78, 84) Source(73, 29) + SourceIndex(0) +9 >Emitted(78, 86) Source(73, 31) + SourceIndex(0) +10>Emitted(78, 110) Source(73, 46) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2000,32 +2030,35 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _17 = _16[_15], nameMA = _17[0], _18 = _17[1], primarySkillA = _18[0], secondarySkillA = _18[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > nameMA -4 > , -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA +2 > [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA 1->Emitted(82, 5) Source(76, 6) + SourceIndex(0) -2 >Emitted(82, 21) Source(76, 7) + SourceIndex(0) -3 >Emitted(82, 36) Source(76, 13) + SourceIndex(0) -4 >Emitted(82, 38) Source(76, 15) + SourceIndex(0) -5 >Emitted(82, 50) Source(76, 47) + SourceIndex(0) -6 >Emitted(82, 52) Source(76, 16) + SourceIndex(0) -7 >Emitted(82, 74) Source(76, 29) + SourceIndex(0) -8 >Emitted(82, 76) Source(76, 31) + SourceIndex(0) -9 >Emitted(82, 100) Source(76, 46) + SourceIndex(0) +2 >Emitted(82, 19) Source(76, 48) + SourceIndex(0) +3 >Emitted(82, 21) Source(76, 7) + SourceIndex(0) +4 >Emitted(82, 36) Source(76, 13) + SourceIndex(0) +5 >Emitted(82, 38) Source(76, 15) + SourceIndex(0) +6 >Emitted(82, 50) Source(76, 47) + SourceIndex(0) +7 >Emitted(82, 52) Source(76, 16) + SourceIndex(0) +8 >Emitted(82, 74) Source(76, 29) + SourceIndex(0) +9 >Emitted(82, 76) Source(76, 31) + SourceIndex(0) +10>Emitted(82, 100) Source(76, 46) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2115,32 +2148,35 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _21 = _20[_19], nameMA = _21[0], _22 = _21[1], primarySkillA = _22[0], secondarySkillA = _22[1]; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > nameMA -4 > , -5 > [primarySkillA, secondarySkillA] -6 > -7 > primarySkillA -8 > , -9 > secondarySkillA +2 > [nameMA, [primarySkillA, secondarySkillA]] +3 > +4 > nameMA +5 > , +6 > [primarySkillA, secondarySkillA] +7 > +8 > primarySkillA +9 > , +10> secondarySkillA 1->Emitted(86, 5) Source(79, 6) + SourceIndex(0) -2 >Emitted(86, 21) Source(79, 7) + SourceIndex(0) -3 >Emitted(86, 36) Source(79, 13) + SourceIndex(0) -4 >Emitted(86, 38) Source(79, 15) + SourceIndex(0) -5 >Emitted(86, 50) Source(79, 47) + SourceIndex(0) -6 >Emitted(86, 52) Source(79, 16) + SourceIndex(0) -7 >Emitted(86, 74) Source(79, 29) + SourceIndex(0) -8 >Emitted(86, 76) Source(79, 31) + SourceIndex(0) -9 >Emitted(86, 100) Source(79, 46) + SourceIndex(0) +2 >Emitted(86, 19) Source(79, 48) + SourceIndex(0) +3 >Emitted(86, 21) Source(79, 7) + SourceIndex(0) +4 >Emitted(86, 36) Source(79, 13) + SourceIndex(0) +5 >Emitted(86, 38) Source(79, 15) + SourceIndex(0) +6 >Emitted(86, 50) Source(79, 47) + SourceIndex(0) +7 >Emitted(86, 52) Source(79, 16) + SourceIndex(0) +8 >Emitted(86, 74) Source(79, 29) + SourceIndex(0) +9 >Emitted(86, 76) Source(79, 31) + SourceIndex(0) +10>Emitted(86, 100) Source(79, 46) + SourceIndex(0) --- >>> console.log(nameMA); 1 >^^^^ @@ -2219,20 +2255,23 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _24 = robots_4[_23], numberA3 = _24[0], robotAInfo = _24.slice(1); 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > numberA3 -4 > , -5 > ...robotAInfo +2 > [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo 1->Emitted(90, 5) Source(83, 6) + SourceIndex(0) -2 >Emitted(90, 26) Source(83, 7) + SourceIndex(0) -3 >Emitted(90, 43) Source(83, 15) + SourceIndex(0) -4 >Emitted(90, 45) Source(83, 17) + SourceIndex(0) -5 >Emitted(90, 70) Source(83, 30) + SourceIndex(0) +2 >Emitted(90, 24) Source(83, 31) + SourceIndex(0) +3 >Emitted(90, 26) Source(83, 7) + SourceIndex(0) +4 >Emitted(90, 43) Source(83, 15) + SourceIndex(0) +5 >Emitted(90, 45) Source(83, 17) + SourceIndex(0) +6 >Emitted(90, 70) Source(83, 30) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2316,20 +2355,23 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _27 = _26[_25], numberA3 = _27[0], robotAInfo = _27.slice(1); 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > [ -3 > numberA3 -4 > , -5 > ...robotAInfo +2 > [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo 1->Emitted(94, 5) Source(86, 6) + SourceIndex(0) -2 >Emitted(94, 21) Source(86, 7) + SourceIndex(0) -3 >Emitted(94, 38) Source(86, 15) + SourceIndex(0) -4 >Emitted(94, 40) Source(86, 17) + SourceIndex(0) -5 >Emitted(94, 65) Source(86, 30) + SourceIndex(0) +2 >Emitted(94, 19) Source(86, 31) + SourceIndex(0) +3 >Emitted(94, 21) Source(86, 7) + SourceIndex(0) +4 >Emitted(94, 38) Source(86, 15) + SourceIndex(0) +5 >Emitted(94, 40) Source(86, 17) + SourceIndex(0) +6 >Emitted(94, 65) Source(86, 30) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ @@ -2418,20 +2460,23 @@ sourceFile:sourceMapValidationDestructuringForOfArrayBindingPattern2.ts --- >>> _30 = _29[_28], numberA3 = _30[0], robotAInfo = _30.slice(1); 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^ 1 > -2 > [ -3 > numberA3 -4 > , -5 > ...robotAInfo +2 > [numberA3, ...robotAInfo] +3 > +4 > numberA3 +5 > , +6 > ...robotAInfo 1 >Emitted(98, 5) Source(89, 6) + SourceIndex(0) -2 >Emitted(98, 21) Source(89, 7) + SourceIndex(0) -3 >Emitted(98, 38) Source(89, 15) + SourceIndex(0) -4 >Emitted(98, 40) Source(89, 17) + SourceIndex(0) -5 >Emitted(98, 65) Source(89, 30) + SourceIndex(0) +2 >Emitted(98, 19) Source(89, 31) + SourceIndex(0) +3 >Emitted(98, 21) Source(89, 7) + SourceIndex(0) +4 >Emitted(98, 38) Source(89, 15) + SourceIndex(0) +5 >Emitted(98, 40) Source(89, 17) + SourceIndex(0) +6 >Emitted(98, 65) Source(89, 30) + SourceIndex(0) --- >>> console.log(numberA3); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map index c779b1ebe26..c8610cbeef8 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationDestructuringForOfObjectBindingPattern2.js.map] -{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPattern2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPattern2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt index 17802c4e86a..8a603317954 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPattern2.sourcemap.txt @@ -1854,20 +1854,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _2 = robots_3[_1], nameA = _2.name, skillA = _2.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > { -3 > name: nameA -4 > , -5 > skill: skillA +2 > {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA 1 >Emitted(63, 5) Source(72, 6) + SourceIndex(0) -2 >Emitted(63, 24) Source(72, 7) + SourceIndex(0) -3 >Emitted(63, 39) Source(72, 18) + SourceIndex(0) -4 >Emitted(63, 41) Source(72, 20) + SourceIndex(0) -5 >Emitted(63, 58) Source(72, 33) + SourceIndex(0) +2 >Emitted(63, 22) Source(72, 35) + SourceIndex(0) +3 >Emitted(63, 24) Source(72, 7) + SourceIndex(0) +4 >Emitted(63, 39) Source(72, 18) + SourceIndex(0) +5 >Emitted(63, 41) Source(72, 20) + SourceIndex(0) +6 >Emitted(63, 58) Source(72, 33) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -1950,20 +1953,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _5 = _4[_3], nameA = _5.name, skillA = _5.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > { -3 > name: nameA -4 > , -5 > skill: skillA +2 > {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA 1 >Emitted(67, 5) Source(75, 6) + SourceIndex(0) -2 >Emitted(67, 18) Source(75, 7) + SourceIndex(0) -3 >Emitted(67, 33) Source(75, 18) + SourceIndex(0) -4 >Emitted(67, 35) Source(75, 20) + SourceIndex(0) -5 >Emitted(67, 52) Source(75, 33) + SourceIndex(0) +2 >Emitted(67, 16) Source(75, 35) + SourceIndex(0) +3 >Emitted(67, 18) Source(75, 7) + SourceIndex(0) +4 >Emitted(67, 33) Source(75, 18) + SourceIndex(0) +5 >Emitted(67, 35) Source(75, 20) + SourceIndex(0) +6 >Emitted(67, 52) Source(75, 33) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2100,20 +2106,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _8 = _7[_6], nameA = _8.name, skillA = _8.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > { -3 > name: nameA -4 > , -5 > skill: skillA +2 > {name: nameA, skill: skillA } +3 > +4 > name: nameA +5 > , +6 > skill: skillA 1 >Emitted(71, 5) Source(78, 6) + SourceIndex(0) -2 >Emitted(71, 18) Source(78, 7) + SourceIndex(0) -3 >Emitted(71, 33) Source(78, 18) + SourceIndex(0) -4 >Emitted(71, 35) Source(78, 20) + SourceIndex(0) -5 >Emitted(71, 52) Source(78, 33) + SourceIndex(0) +2 >Emitted(71, 16) Source(78, 35) + SourceIndex(0) +3 >Emitted(71, 18) Source(78, 7) + SourceIndex(0) +4 >Emitted(71, 33) Source(78, 18) + SourceIndex(0) +5 >Emitted(71, 35) Source(78, 20) + SourceIndex(0) +6 >Emitted(71, 52) Source(78, 33) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2191,32 +2200,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _10 = multiRobots_3[_9], nameA = _10.name, _11 = _10.skills, primaryA = _11.primary, secondaryA = _11.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { -3 > name: nameA -4 > , -5 > skills: { primary: primaryA, secondary: secondaryA } -6 > -7 > primary: primaryA -8 > , -9 > secondary: secondaryA +2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills: { primary: primaryA, secondary: secondaryA } +7 > +8 > primary: primaryA +9 > , +10> secondary: secondaryA 1->Emitted(75, 5) Source(81, 6) + SourceIndex(0) -2 >Emitted(75, 30) Source(81, 7) + SourceIndex(0) -3 >Emitted(75, 46) Source(81, 18) + SourceIndex(0) -4 >Emitted(75, 48) Source(81, 20) + SourceIndex(0) -5 >Emitted(75, 64) Source(81, 72) + SourceIndex(0) -6 >Emitted(75, 66) Source(81, 30) + SourceIndex(0) -7 >Emitted(75, 88) Source(81, 47) + SourceIndex(0) -8 >Emitted(75, 90) Source(81, 49) + SourceIndex(0) -9 >Emitted(75, 116) Source(81, 70) + SourceIndex(0) +2 >Emitted(75, 28) Source(81, 74) + SourceIndex(0) +3 >Emitted(75, 30) Source(81, 7) + SourceIndex(0) +4 >Emitted(75, 46) Source(81, 18) + SourceIndex(0) +5 >Emitted(75, 48) Source(81, 20) + SourceIndex(0) +6 >Emitted(75, 64) Source(81, 72) + SourceIndex(0) +7 >Emitted(75, 66) Source(81, 30) + SourceIndex(0) +8 >Emitted(75, 88) Source(81, 47) + SourceIndex(0) +9 >Emitted(75, 90) Source(81, 49) + SourceIndex(0) +10>Emitted(75, 116) Source(81, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2300,32 +2312,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _14 = _13[_12], nameA = _14.name, _15 = _14.skills, primaryA = _15.primary, secondaryA = _15.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { -3 > name: nameA -4 > , -5 > skills: { primary: primaryA, secondary: secondaryA } -6 > -7 > primary: primaryA -8 > , -9 > secondary: secondaryA +2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills: { primary: primaryA, secondary: secondaryA } +7 > +8 > primary: primaryA +9 > , +10> secondary: secondaryA 1->Emitted(79, 5) Source(84, 6) + SourceIndex(0) -2 >Emitted(79, 21) Source(84, 7) + SourceIndex(0) -3 >Emitted(79, 37) Source(84, 18) + SourceIndex(0) -4 >Emitted(79, 39) Source(84, 20) + SourceIndex(0) -5 >Emitted(79, 55) Source(84, 72) + SourceIndex(0) -6 >Emitted(79, 57) Source(84, 30) + SourceIndex(0) -7 >Emitted(79, 79) Source(84, 47) + SourceIndex(0) -8 >Emitted(79, 81) Source(84, 49) + SourceIndex(0) -9 >Emitted(79, 107) Source(84, 70) + SourceIndex(0) +2 >Emitted(79, 19) Source(84, 74) + SourceIndex(0) +3 >Emitted(79, 21) Source(84, 7) + SourceIndex(0) +4 >Emitted(79, 37) Source(84, 18) + SourceIndex(0) +5 >Emitted(79, 39) Source(84, 20) + SourceIndex(0) +6 >Emitted(79, 55) Source(84, 72) + SourceIndex(0) +7 >Emitted(79, 57) Source(84, 30) + SourceIndex(0) +8 >Emitted(79, 79) Source(84, 47) + SourceIndex(0) +9 >Emitted(79, 81) Source(84, 49) + SourceIndex(0) +10>Emitted(79, 107) Source(84, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2518,32 +2533,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _18 = _17[_16], nameA = _18.name, _19 = _18.skills, primaryA = _19.primary, secondaryA = _19.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { -3 > name: nameA -4 > , -5 > skills: { primary: primaryA, secondary: secondaryA } -6 > -7 > primary: primaryA -8 > , -9 > secondary: secondaryA +2 > {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } +3 > +4 > name: nameA +5 > , +6 > skills: { primary: primaryA, secondary: secondaryA } +7 > +8 > primary: primaryA +9 > , +10> secondary: secondaryA 1->Emitted(84, 5) Source(87, 6) + SourceIndex(0) -2 >Emitted(84, 21) Source(87, 7) + SourceIndex(0) -3 >Emitted(84, 37) Source(87, 18) + SourceIndex(0) -4 >Emitted(84, 39) Source(87, 20) + SourceIndex(0) -5 >Emitted(84, 55) Source(87, 72) + SourceIndex(0) -6 >Emitted(84, 57) Source(87, 30) + SourceIndex(0) -7 >Emitted(84, 79) Source(87, 47) + SourceIndex(0) -8 >Emitted(84, 81) Source(87, 49) + SourceIndex(0) -9 >Emitted(84, 107) Source(87, 70) + SourceIndex(0) +2 >Emitted(84, 19) Source(87, 74) + SourceIndex(0) +3 >Emitted(84, 21) Source(87, 7) + SourceIndex(0) +4 >Emitted(84, 37) Source(87, 18) + SourceIndex(0) +5 >Emitted(84, 39) Source(87, 20) + SourceIndex(0) +6 >Emitted(84, 55) Source(87, 72) + SourceIndex(0) +7 >Emitted(84, 57) Source(87, 30) + SourceIndex(0) +8 >Emitted(84, 79) Source(87, 47) + SourceIndex(0) +9 >Emitted(84, 81) Source(87, 49) + SourceIndex(0) +10>Emitted(84, 107) Source(87, 70) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2621,20 +2639,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _21 = robots_4[_20], name = _21.name, skill = _21.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > { -3 > name -4 > , -5 > skill +2 > {name, skill } +3 > +4 > name +5 > , +6 > skill 1 >Emitted(88, 5) Source(91, 6) + SourceIndex(0) -2 >Emitted(88, 26) Source(91, 7) + SourceIndex(0) -3 >Emitted(88, 41) Source(91, 11) + SourceIndex(0) -4 >Emitted(88, 43) Source(91, 13) + SourceIndex(0) -5 >Emitted(88, 60) Source(91, 18) + SourceIndex(0) +2 >Emitted(88, 24) Source(91, 20) + SourceIndex(0) +3 >Emitted(88, 26) Source(91, 7) + SourceIndex(0) +4 >Emitted(88, 41) Source(91, 11) + SourceIndex(0) +5 >Emitted(88, 43) Source(91, 13) + SourceIndex(0) +6 >Emitted(88, 60) Source(91, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2717,20 +2738,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _24 = _23[_22], name = _24.name, skill = _24.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > { -3 > name -4 > , -5 > skill +2 > {name, skill } +3 > +4 > name +5 > , +6 > skill 1 >Emitted(92, 5) Source(94, 6) + SourceIndex(0) -2 >Emitted(92, 21) Source(94, 7) + SourceIndex(0) -3 >Emitted(92, 36) Source(94, 11) + SourceIndex(0) -4 >Emitted(92, 38) Source(94, 13) + SourceIndex(0) -5 >Emitted(92, 55) Source(94, 18) + SourceIndex(0) +2 >Emitted(92, 19) Source(94, 20) + SourceIndex(0) +3 >Emitted(92, 21) Source(94, 7) + SourceIndex(0) +4 >Emitted(92, 36) Source(94, 11) + SourceIndex(0) +5 >Emitted(92, 38) Source(94, 13) + SourceIndex(0) +6 >Emitted(92, 55) Source(94, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2867,20 +2891,23 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _27 = _26[_25], name = _27.name, skill = _27.skill; 1 >^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ 1 > -2 > { -3 > name -4 > , -5 > skill +2 > {name, skill } +3 > +4 > name +5 > , +6 > skill 1 >Emitted(96, 5) Source(97, 6) + SourceIndex(0) -2 >Emitted(96, 21) Source(97, 7) + SourceIndex(0) -3 >Emitted(96, 36) Source(97, 11) + SourceIndex(0) -4 >Emitted(96, 38) Source(97, 13) + SourceIndex(0) -5 >Emitted(96, 55) Source(97, 18) + SourceIndex(0) +2 >Emitted(96, 19) Source(97, 20) + SourceIndex(0) +3 >Emitted(96, 21) Source(97, 7) + SourceIndex(0) +4 >Emitted(96, 36) Source(97, 11) + SourceIndex(0) +5 >Emitted(96, 38) Source(97, 13) + SourceIndex(0) +6 >Emitted(96, 55) Source(97, 18) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -2958,32 +2985,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _29 = multiRobots_4[_28], name = _29.name, _30 = _29.skills, primary = _30.primary, secondary = _30.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { -3 > name -4 > , -5 > skills: { primary, secondary } -6 > -7 > primary -8 > , -9 > secondary +2 > {name, skills: { primary, secondary } } +3 > +4 > name +5 > , +6 > skills: { primary, secondary } +7 > +8 > primary +9 > , +10> secondary 1->Emitted(100, 5) Source(100, 6) + SourceIndex(0) -2 >Emitted(100, 31) Source(100, 7) + SourceIndex(0) -3 >Emitted(100, 46) Source(100, 11) + SourceIndex(0) -4 >Emitted(100, 48) Source(100, 13) + SourceIndex(0) -5 >Emitted(100, 64) Source(100, 43) + SourceIndex(0) -6 >Emitted(100, 66) Source(100, 23) + SourceIndex(0) -7 >Emitted(100, 87) Source(100, 30) + SourceIndex(0) -8 >Emitted(100, 89) Source(100, 32) + SourceIndex(0) -9 >Emitted(100, 114) Source(100, 41) + SourceIndex(0) +2 >Emitted(100, 29) Source(100, 45) + SourceIndex(0) +3 >Emitted(100, 31) Source(100, 7) + SourceIndex(0) +4 >Emitted(100, 46) Source(100, 11) + SourceIndex(0) +5 >Emitted(100, 48) Source(100, 13) + SourceIndex(0) +6 >Emitted(100, 64) Source(100, 43) + SourceIndex(0) +7 >Emitted(100, 66) Source(100, 23) + SourceIndex(0) +8 >Emitted(100, 87) Source(100, 30) + SourceIndex(0) +9 >Emitted(100, 89) Source(100, 32) + SourceIndex(0) +10>Emitted(100, 114) Source(100, 41) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -3067,32 +3097,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _33 = _32[_31], name = _33.name, _34 = _33.skills, primary = _34.primary, secondary = _34.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { -3 > name -4 > , -5 > skills: { primary, secondary } -6 > -7 > primary -8 > , -9 > secondary +2 > {name, skills: { primary, secondary } } +3 > +4 > name +5 > , +6 > skills: { primary, secondary } +7 > +8 > primary +9 > , +10> secondary 1->Emitted(104, 5) Source(103, 6) + SourceIndex(0) -2 >Emitted(104, 21) Source(103, 7) + SourceIndex(0) -3 >Emitted(104, 36) Source(103, 11) + SourceIndex(0) -4 >Emitted(104, 38) Source(103, 13) + SourceIndex(0) -5 >Emitted(104, 54) Source(103, 43) + SourceIndex(0) -6 >Emitted(104, 56) Source(103, 23) + SourceIndex(0) -7 >Emitted(104, 77) Source(103, 30) + SourceIndex(0) -8 >Emitted(104, 79) Source(103, 32) + SourceIndex(0) -9 >Emitted(104, 104) Source(103, 41) + SourceIndex(0) +2 >Emitted(104, 19) Source(103, 45) + SourceIndex(0) +3 >Emitted(104, 21) Source(103, 7) + SourceIndex(0) +4 >Emitted(104, 36) Source(103, 11) + SourceIndex(0) +5 >Emitted(104, 38) Source(103, 13) + SourceIndex(0) +6 >Emitted(104, 54) Source(103, 43) + SourceIndex(0) +7 >Emitted(104, 56) Source(103, 23) + SourceIndex(0) +8 >Emitted(104, 77) Source(103, 30) + SourceIndex(0) +9 >Emitted(104, 79) Source(103, 32) + SourceIndex(0) +10>Emitted(104, 104) Source(103, 41) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ @@ -3285,32 +3318,35 @@ sourceFile:sourceMapValidationDestructuringForOfObjectBindingPattern2.ts --- >>> _37 = _36[_35], name = _37.name, _38 = _37.skills, primary = _38.primary, secondary = _38.secondary; 1->^^^^ -2 > ^^^^^^^^^^^^^^^^ -3 > ^^^^^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > { -3 > name -4 > , -5 > skills: { primary, secondary } -6 > -7 > primary -8 > , -9 > secondary +2 > {name, skills: { primary, secondary } } +3 > +4 > name +5 > , +6 > skills: { primary, secondary } +7 > +8 > primary +9 > , +10> secondary 1->Emitted(109, 5) Source(106, 6) + SourceIndex(0) -2 >Emitted(109, 21) Source(106, 7) + SourceIndex(0) -3 >Emitted(109, 36) Source(106, 11) + SourceIndex(0) -4 >Emitted(109, 38) Source(106, 13) + SourceIndex(0) -5 >Emitted(109, 54) Source(106, 43) + SourceIndex(0) -6 >Emitted(109, 56) Source(106, 23) + SourceIndex(0) -7 >Emitted(109, 77) Source(106, 30) + SourceIndex(0) -8 >Emitted(109, 79) Source(106, 32) + SourceIndex(0) -9 >Emitted(109, 104) Source(106, 41) + SourceIndex(0) +2 >Emitted(109, 19) Source(106, 45) + SourceIndex(0) +3 >Emitted(109, 21) Source(106, 7) + SourceIndex(0) +4 >Emitted(109, 36) Source(106, 11) + SourceIndex(0) +5 >Emitted(109, 38) Source(106, 13) + SourceIndex(0) +6 >Emitted(109, 54) Source(106, 43) + SourceIndex(0) +7 >Emitted(109, 56) Source(106, 23) + SourceIndex(0) +8 >Emitted(109, 77) Source(106, 30) + SourceIndex(0) +9 >Emitted(109, 79) Source(106, 32) + SourceIndex(0) +10>Emitted(109, 104) Source(106, 41) + SourceIndex(0) --- >>> console.log(nameA); 1 >^^^^ From 9c413f7d5554e8e62510628a874caebd681ccbb9 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 10 Dec 2015 15:20:32 -0800 Subject: [PATCH 054/164] Accepting existing test cases baseline after verification --- tests/baselines/reference/ES5For-of26.js.map | 2 +- .../reference/ES5For-of26.sourcemap.txt | 57 +++-- tests/baselines/reference/ES5For-of8.js.map | 2 +- .../reference/ES5For-of8.sourcemap.txt | 9 +- .../reference/isolatedModulesSourceMap.js.map | 2 +- .../isolatedModulesSourceMap.sourcemap.txt | 35 +-- .../reference/sourceMapSample.js.map | 2 +- .../reference/sourceMapSample.sourcemap.txt | 188 ++++++++-------- .../sourceMapValidationClasses.js.map | 2 +- .../sourceMapValidationClasses.sourcemap.txt | 188 ++++++++-------- .../reference/sourceMapValidationFor.js.map | 2 +- .../sourceMapValidationFor.sourcemap.txt | 201 +++++++++--------- .../reference/sourceMapValidationForIn.js.map | 2 +- .../sourceMapValidationForIn.sourcemap.txt | 90 ++++---- .../sourceMapValidationStatements.js.map | 2 +- ...ourceMapValidationStatements.sourcemap.txt | 126 ++++++----- 16 files changed, 437 insertions(+), 473 deletions(-) diff --git a/tests/baselines/reference/ES5For-of26.js.map b/tests/baselines/reference/ES5For-of26.js.map index 5e128b4674c..9dcebf97134 100644 --- a/tests/baselines/reference/ES5For-of26.js.map +++ b/tests/baselines/reference/ES5For-of26.js.map @@ -1,2 +1,2 @@ //// [ES5For-of26.js.map] -{"version":3,"file":"ES5For-of26.js","sourceRoot":"","sources":["ES5For-of26.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAuB,UAAM,EAAN,MAAC,CAAC,EAAE,CAAC,CAAC,EAAN,cAAM,EAAN,IAAM,CAAC;IAA7B,IAAA,WAAkB,EAAb,UAAK,EAAL,0BAAK,EAAE,UAAK,EAAL,0BAAK;IAClB,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file +{"version":3,"file":"ES5For-of26.js","sourceRoot":"","sources":["ES5For-of26.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAuB,UAAM,EAAN,MAAC,CAAC,EAAE,CAAC,CAAC,EAAN,cAAM,EAAN,IAAM,CAAC;IAA7B,eAAkB,EAAb,UAAK,EAAL,0BAAK,EAAE,UAAK,EAAL,0BAAK;IAClB,CAAC,CAAC;IACF,CAAC,CAAC;CACL"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of26.sourcemap.txt b/tests/baselines/reference/ES5For-of26.sourcemap.txt index 112fb65c596..00a1cc55f37 100644 --- a/tests/baselines/reference/ES5For-of26.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of26.sourcemap.txt @@ -61,38 +61,35 @@ sourceFile:ES5For-of26.ts --- >>> var _b = _a[_i], _c = _b[0], a = _c === void 0 ? 0 : _c, _d = _b[1], b = _d === void 0 ? 1 : _d; 1->^^^^ -2 > ^^^^ -3 > ^^^^^^^^^^^ -4 > ^^ -5 > ^^^^^^^^^^ -6 > ^^ -7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ -8 > ^^ -9 > ^^^^^^^^^^ -10> ^^ -11> ^^^^^^^^^^^^^^^^^^^^^^^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^ 1-> -2 > -3 > var [a = 0, b = 1] -4 > -5 > a = 0 -6 > -7 > a = 0 -8 > , -9 > b = 1 -10> -11> b = 1 +2 > var [a = 0, b = 1] +3 > +4 > a = 0 +5 > +6 > a = 0 +7 > , +8 > b = 1 +9 > +10> b = 1 1->Emitted(2, 5) Source(1, 6) + SourceIndex(0) -2 >Emitted(2, 9) Source(1, 6) + SourceIndex(0) -3 >Emitted(2, 20) Source(1, 24) + SourceIndex(0) -4 >Emitted(2, 22) Source(1, 11) + SourceIndex(0) -5 >Emitted(2, 32) Source(1, 16) + SourceIndex(0) -6 >Emitted(2, 34) Source(1, 11) + SourceIndex(0) -7 >Emitted(2, 60) Source(1, 16) + SourceIndex(0) -8 >Emitted(2, 62) Source(1, 18) + SourceIndex(0) -9 >Emitted(2, 72) Source(1, 23) + SourceIndex(0) -10>Emitted(2, 74) Source(1, 18) + SourceIndex(0) -11>Emitted(2, 100) Source(1, 23) + SourceIndex(0) +2 >Emitted(2, 20) Source(1, 24) + SourceIndex(0) +3 >Emitted(2, 22) Source(1, 11) + SourceIndex(0) +4 >Emitted(2, 32) Source(1, 16) + SourceIndex(0) +5 >Emitted(2, 34) Source(1, 11) + SourceIndex(0) +6 >Emitted(2, 60) Source(1, 16) + SourceIndex(0) +7 >Emitted(2, 62) Source(1, 18) + SourceIndex(0) +8 >Emitted(2, 72) Source(1, 23) + SourceIndex(0) +9 >Emitted(2, 74) Source(1, 18) + SourceIndex(0) +10>Emitted(2, 100) Source(1, 23) + SourceIndex(0) --- >>> a; 1 >^^^^ diff --git a/tests/baselines/reference/ES5For-of8.js.map b/tests/baselines/reference/ES5For-of8.js.map index 65efa797e0d..3a1497eadcd 100644 --- a/tests/baselines/reference/ES5For-of8.js.map +++ b/tests/baselines/reference/ES5For-of8.js.map @@ -1,2 +1,2 @@ //// [ES5For-of8.js.map] -{"version":3,"file":"ES5For-of8.js","sourceRoot":"","sources":["ES5For-of8.ts"],"names":[],"mappings":"AAAA;IACI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAY,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAf,cAAe,EAAf,IAAe,CAAC;IAA3B,GAAG,EAAE,CAAC,CAAC,GAAP,MAAO;IACR,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;CACnB"} \ No newline at end of file +{"version":3,"file":"ES5For-of8.js","sourceRoot":"","sources":["ES5For-of8.ts"],"names":[],"mappings":"AAAA;IACI,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAY,UAAe,EAAf,MAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAf,cAAe,EAAf,IAAe,CAAC;IAA3B,GAAG,EAAE,CAAC,CAAC,SAAA;IACR,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;CACnB"} \ No newline at end of file diff --git a/tests/baselines/reference/ES5For-of8.sourcemap.txt b/tests/baselines/reference/ES5For-of8.sourcemap.txt index 8bc3f3d7aba..dbfce707ca6 100644 --- a/tests/baselines/reference/ES5For-of8.sourcemap.txt +++ b/tests/baselines/reference/ES5For-of8.sourcemap.txt @@ -117,23 +117,20 @@ sourceFile:ES5For-of8.ts 3 > ^^ 4 > ^ 5 > ^ -6 > ^^^ -7 > ^^^^^^ -8 > ^-> +6 > ^^^^^^^^^ +7 > ^-> 1 > 2 > foo 3 > () 4 > . 5 > x 6 > -7 > foo().x 1 >Emitted(5, 5) Source(4, 6) + SourceIndex(0) 2 >Emitted(5, 8) Source(4, 9) + SourceIndex(0) 3 >Emitted(5, 10) Source(4, 11) + SourceIndex(0) 4 >Emitted(5, 11) Source(4, 12) + SourceIndex(0) 5 >Emitted(5, 12) Source(4, 13) + SourceIndex(0) -6 >Emitted(5, 15) Source(4, 6) + SourceIndex(0) -7 >Emitted(5, 21) Source(4, 13) + SourceIndex(0) +6 >Emitted(5, 21) Source(4, 13) + SourceIndex(0) --- >>> var p = foo().x; 1->^^^^ diff --git a/tests/baselines/reference/isolatedModulesSourceMap.js.map b/tests/baselines/reference/isolatedModulesSourceMap.js.map index 3d86a0a7144..a6778476dda 100644 --- a/tests/baselines/reference/isolatedModulesSourceMap.js.map +++ b/tests/baselines/reference/isolatedModulesSourceMap.js.map @@ -1,2 +1,2 @@ //// [file1.js.map] -{"version":3,"file":"file1.js","sourceRoot":"","sources":["file1.ts"],"names":[],"mappings":"AACA,WAAW,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"file1.js","sourceRoot":"","sources":["file1.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/isolatedModulesSourceMap.sourcemap.txt b/tests/baselines/reference/isolatedModulesSourceMap.sourcemap.txt index 7edf071f5d1..57f604125d3 100644 --- a/tests/baselines/reference/isolatedModulesSourceMap.sourcemap.txt +++ b/tests/baselines/reference/isolatedModulesSourceMap.sourcemap.txt @@ -10,24 +10,27 @@ sourceFile:file1.ts ------------------------------------------------------------------- >>>export var x = 1; 1 > -2 >^^^^^^^^^^^ -3 > ^ -4 > ^^^ -5 > ^ -6 > ^ -7 > ^^^^^^^^^^^^^^^-> +2 >^^^^^^^ +3 > ^^^^ +4 > ^ +5 > ^^^ +6 > ^ +7 > ^ +8 > ^^^^^^^^^^^^^^^-> 1 > > -2 >export var -3 > x -4 > = -5 > 1 -6 > ; +2 >export +3 > var +4 > x +5 > = +6 > 1 +7 > ; 1 >Emitted(1, 1) Source(2, 1) + SourceIndex(0) -2 >Emitted(1, 12) Source(2, 12) + SourceIndex(0) -3 >Emitted(1, 13) Source(2, 13) + SourceIndex(0) -4 >Emitted(1, 16) Source(2, 16) + SourceIndex(0) -5 >Emitted(1, 17) Source(2, 17) + SourceIndex(0) -6 >Emitted(1, 18) Source(2, 18) + SourceIndex(0) +2 >Emitted(1, 8) Source(2, 8) + SourceIndex(0) +3 >Emitted(1, 12) Source(2, 12) + SourceIndex(0) +4 >Emitted(1, 13) Source(2, 13) + SourceIndex(0) +5 >Emitted(1, 16) Source(2, 16) + SourceIndex(0) +6 >Emitted(1, 17) Source(2, 17) + SourceIndex(0) +7 >Emitted(1, 18) Source(2, 18) + SourceIndex(0) --- >>>//# sourceMappingURL=file1.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapSample.js.map b/tests/baselines/reference/sourceMapSample.js.map index 2429a04c88b..0617ba4c1ba 100644 --- a/tests/baselines/reference/sourceMapSample.js.map +++ b/tests/baselines/reference/sourceMapSample.js.map @@ -1,2 +1,2 @@ //// [sourceMapSample.js.map] -{"version":3,"file":"sourceMapSample.js","sourceRoot":"","sources":["sourceMapSample.ts"],"names":[],"mappings":"AAAA,IAAO,GAAG,CAkCT;AAlCD,WAAO,GAAG;IAAC,IAAA,GAAG,CAkCb;IAlCU,WAAA,GAAG,EAAC,CAAC;QACZ,YAAY,CAAC;QAEb;YACI,iBAAmB,QAAgB;gBAAhB,aAAQ,GAAR,QAAQ,CAAQ;YACnC,CAAC;YAED,uBAAK,GAAL;gBACI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC5C,CAAC;YACL,cAAC;QAAD,CAAC,AAPD,IAOC;QAGD,aAAa,QAAgB;YACzB,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE1B,cAAc,QAAgB;YAAE,uBAA0B;iBAA1B,WAA0B,CAA1B,sBAA0B,CAA1B,IAA0B;gBAA1B,sCAA0B;;YACtD,IAAI,QAAQ,GAAc,EAAE,CAAC;YAC7B,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC,EAlCU,GAAG,GAAH,OAAG,KAAH,OAAG,QAkCb;AAAD,CAAC,EAlCM,GAAG,KAAH,GAAG,QAkCT"} \ No newline at end of file +{"version":3,"file":"sourceMapSample.js","sourceRoot":"","sources":["sourceMapSample.ts"],"names":[],"mappings":"AAAA,IAAO,GAAG,CAkCT;AAlCD,WAAO,GAAG;IAAC,IAAA,GAAG,CAkCb;IAlCU,WAAA,GAAG,EAAC,CAAC;QACZ,YAAY,CAAC;QAEb;YACI,iBAAmB,QAAgB;gBAAhB,aAAQ,GAAR,QAAQ,CAAQ;YACnC,CAAC;YAED,uBAAK,GAAL;gBACI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC5C,CAAC;YACL,cAAC;QAAD,CAAC,AAPD,IAOC;QAGD,aAAa,QAAgB;YACzB,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE1B,cAAc,QAAgB;YAAE,uBAA0B;iBAA1B,WAA0B,CAA1B,sBAA0B,CAA1B,IAA0B;gBAA1B,sCAA0B;;YACtD,IAAI,QAAQ,GAAc,EAAE,CAAC;YAC7B,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC,EAlCU,GAAG,GAAH,OAAG,KAAH,OAAG,QAkCb;AAAD,CAAC,EAlCM,GAAG,KAAH,GAAG,QAkCT"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapSample.sourcemap.txt b/tests/baselines/reference/sourceMapSample.sourcemap.txt index 8ea198b3129..97dd8db6cae 100644 --- a/tests/baselines/reference/sourceMapSample.sourcemap.txt +++ b/tests/baselines/reference/sourceMapSample.sourcemap.txt @@ -525,64 +525,61 @@ sourceFile:sourceMapSample.ts 2 > ^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^^^^^^^^^^^^^ -14> ^ -15> ^^^^^^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ -21> ^^-> +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^^^^^^^^^^^^^ +13> ^ +14> ^^^^^^ +15> ^^ +16> ^ +17> ^^ +18> ^^ +19> ^ +20> ^^-> 1-> > 2 > for 3 > 4 > ( -5 > var -6 > -7 > i -8 > = -9 > 0 -10> ; -11> i -12> < -13> restGreetings -14> . -15> length -16> ; -17> i -18> ++ -19> ) -20> { +5 > var +6 > i +7 > = +8 > 0 +9 > ; +10> i +11> < +12> restGreetings +13> . +14> length +15> ; +16> i +17> ++ +18> ) +19> { 1->Emitted(27, 13) Source(24, 9) + SourceIndex(0) 2 >Emitted(27, 16) Source(24, 12) + SourceIndex(0) 3 >Emitted(27, 17) Source(24, 13) + SourceIndex(0) 4 >Emitted(27, 18) Source(24, 14) + SourceIndex(0) -5 >Emitted(27, 21) Source(24, 17) + SourceIndex(0) -6 >Emitted(27, 22) Source(24, 18) + SourceIndex(0) -7 >Emitted(27, 23) Source(24, 19) + SourceIndex(0) -8 >Emitted(27, 26) Source(24, 22) + SourceIndex(0) -9 >Emitted(27, 27) Source(24, 23) + SourceIndex(0) -10>Emitted(27, 29) Source(24, 25) + SourceIndex(0) -11>Emitted(27, 30) Source(24, 26) + SourceIndex(0) -12>Emitted(27, 33) Source(24, 29) + SourceIndex(0) -13>Emitted(27, 46) Source(24, 42) + SourceIndex(0) -14>Emitted(27, 47) Source(24, 43) + SourceIndex(0) -15>Emitted(27, 53) Source(24, 49) + SourceIndex(0) -16>Emitted(27, 55) Source(24, 51) + SourceIndex(0) -17>Emitted(27, 56) Source(24, 52) + SourceIndex(0) -18>Emitted(27, 58) Source(24, 54) + SourceIndex(0) -19>Emitted(27, 60) Source(24, 56) + SourceIndex(0) -20>Emitted(27, 61) Source(24, 57) + SourceIndex(0) +5 >Emitted(27, 22) Source(24, 18) + SourceIndex(0) +6 >Emitted(27, 23) Source(24, 19) + SourceIndex(0) +7 >Emitted(27, 26) Source(24, 22) + SourceIndex(0) +8 >Emitted(27, 27) Source(24, 23) + SourceIndex(0) +9 >Emitted(27, 29) Source(24, 25) + SourceIndex(0) +10>Emitted(27, 30) Source(24, 26) + SourceIndex(0) +11>Emitted(27, 33) Source(24, 29) + SourceIndex(0) +12>Emitted(27, 46) Source(24, 42) + SourceIndex(0) +13>Emitted(27, 47) Source(24, 43) + SourceIndex(0) +14>Emitted(27, 53) Source(24, 49) + SourceIndex(0) +15>Emitted(27, 55) Source(24, 51) + SourceIndex(0) +16>Emitted(27, 56) Source(24, 52) + SourceIndex(0) +17>Emitted(27, 58) Source(24, 54) + SourceIndex(0) +18>Emitted(27, 60) Source(24, 56) + SourceIndex(0) +19>Emitted(27, 61) Source(24, 57) + SourceIndex(0) --- >>> greeters.push(new Greeter(restGreetings[i])); 1->^^^^^^^^^^^^^^^^ @@ -720,63 +717,60 @@ sourceFile:sourceMapSample.ts 2 > ^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^ -15> ^^^^^^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^ +13> ^ +14> ^^^^^^ +15> ^^ +16> ^ +17> ^^ +18> ^^ +19> ^ 1-> > 2 > for 3 > 4 > ( -5 > var -6 > -7 > j -8 > = -9 > 0 -10> ; -11> j -12> < -13> b -14> . -15> length -16> ; -17> j -18> ++ -19> ) -20> { +5 > var +6 > j +7 > = +8 > 0 +9 > ; +10> j +11> < +12> b +13> . +14> length +15> ; +16> j +17> ++ +18> ) +19> { 1->Emitted(33, 9) Source(32, 5) + SourceIndex(0) 2 >Emitted(33, 12) Source(32, 8) + SourceIndex(0) 3 >Emitted(33, 13) Source(32, 9) + SourceIndex(0) 4 >Emitted(33, 14) Source(32, 10) + SourceIndex(0) -5 >Emitted(33, 17) Source(32, 13) + SourceIndex(0) -6 >Emitted(33, 18) Source(32, 14) + SourceIndex(0) -7 >Emitted(33, 19) Source(32, 15) + SourceIndex(0) -8 >Emitted(33, 22) Source(32, 18) + SourceIndex(0) -9 >Emitted(33, 23) Source(32, 19) + SourceIndex(0) -10>Emitted(33, 25) Source(32, 21) + SourceIndex(0) -11>Emitted(33, 26) Source(32, 22) + SourceIndex(0) -12>Emitted(33, 29) Source(32, 25) + SourceIndex(0) -13>Emitted(33, 30) Source(32, 26) + SourceIndex(0) -14>Emitted(33, 31) Source(32, 27) + SourceIndex(0) -15>Emitted(33, 37) Source(32, 33) + SourceIndex(0) -16>Emitted(33, 39) Source(32, 35) + SourceIndex(0) -17>Emitted(33, 40) Source(32, 36) + SourceIndex(0) -18>Emitted(33, 42) Source(32, 38) + SourceIndex(0) -19>Emitted(33, 44) Source(32, 40) + SourceIndex(0) -20>Emitted(33, 45) Source(32, 41) + SourceIndex(0) +5 >Emitted(33, 18) Source(32, 14) + SourceIndex(0) +6 >Emitted(33, 19) Source(32, 15) + SourceIndex(0) +7 >Emitted(33, 22) Source(32, 18) + SourceIndex(0) +8 >Emitted(33, 23) Source(32, 19) + SourceIndex(0) +9 >Emitted(33, 25) Source(32, 21) + SourceIndex(0) +10>Emitted(33, 26) Source(32, 22) + SourceIndex(0) +11>Emitted(33, 29) Source(32, 25) + SourceIndex(0) +12>Emitted(33, 30) Source(32, 26) + SourceIndex(0) +13>Emitted(33, 31) Source(32, 27) + SourceIndex(0) +14>Emitted(33, 37) Source(32, 33) + SourceIndex(0) +15>Emitted(33, 39) Source(32, 35) + SourceIndex(0) +16>Emitted(33, 40) Source(32, 36) + SourceIndex(0) +17>Emitted(33, 42) Source(32, 38) + SourceIndex(0) +18>Emitted(33, 44) Source(32, 40) + SourceIndex(0) +19>Emitted(33, 45) Source(32, 41) + SourceIndex(0) --- >>> b[j].greet(); 1 >^^^^^^^^^^^^ diff --git a/tests/baselines/reference/sourceMapValidationClasses.js.map b/tests/baselines/reference/sourceMapValidationClasses.js.map index 08ed68ebca7..bddc7694f10 100644 --- a/tests/baselines/reference/sourceMapValidationClasses.js.map +++ b/tests/baselines/reference/sourceMapValidationClasses.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationClasses.js.map] -{"version":3,"file":"sourceMapValidationClasses.js","sourceRoot":"","sources":["sourceMapValidationClasses.ts"],"names":[],"mappings":"AAAA,IAAO,GAAG,CAmCT;AAnCD,WAAO,GAAG;IAAC,IAAA,GAAG,CAmCb;IAnCU,WAAA,GAAG,EAAC,CAAC;QACZ,YAAY,CAAC;QAEb;YACI,iBAAmB,QAAgB;gBAAhB,aAAQ,GAAR,QAAQ,CAAQ;YACnC,CAAC;YAED,uBAAK,GAAL;gBACI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC5C,CAAC;YACL,cAAC;QAAD,CAAC,AAPD,IAOC;QAGD,aAAa,QAAgB;YACzB,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE1B,cAAc,QAAgB;YAAE,kBAAiB,mBAAmB,MAAU;iBAA9C,WAA8C,CAA9C,sBAA8C,CAA9C,IAA8C;gBAA9C,cAAiB,mBAAmB,yBAAU;;YAC1E,IAAI,QAAQ,GAAc,EAAE,CAAC,CAAC,0BAA0B;YACxD,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,qCAAqC;QACrC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC,EAnCU,GAAG,GAAH,OAAG,KAAH,OAAG,QAmCb;AAAD,CAAC,EAnCM,GAAG,KAAH,GAAG,QAmCT"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationClasses.js","sourceRoot":"","sources":["sourceMapValidationClasses.ts"],"names":[],"mappings":"AAAA,IAAO,GAAG,CAmCT;AAnCD,WAAO,GAAG;IAAC,IAAA,GAAG,CAmCb;IAnCU,WAAA,GAAG,EAAC,CAAC;QACZ,YAAY,CAAC;QAEb;YACI,iBAAmB,QAAgB;gBAAhB,aAAQ,GAAR,QAAQ,CAAQ;YACnC,CAAC;YAED,uBAAK,GAAL;gBACI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YAC5C,CAAC;YACL,cAAC;QAAD,CAAC,AAPD,IAOC;QAGD,aAAa,QAAgB;YACzB,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAE1B,cAAc,QAAgB;YAAE,kBAAiB,mBAAmB,MAAU;iBAA9C,WAA8C,CAA9C,sBAA8C,CAA9C,IAA8C;gBAA9C,cAAiB,mBAAmB,yBAAU;;YAC1E,IAAI,QAAQ,GAAc,EAAE,CAAC,CAAC,0BAA0B;YACxD,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,CAAC,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,qCAAqC;QACrC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC,EAnCU,GAAG,GAAH,OAAG,KAAH,OAAG,QAmCb;AAAD,CAAC,EAnCM,GAAG,KAAH,GAAG,QAmCT"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationClasses.sourcemap.txt b/tests/baselines/reference/sourceMapValidationClasses.sourcemap.txt index bbf9aa3eb2e..0a19c58c8eb 100644 --- a/tests/baselines/reference/sourceMapValidationClasses.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationClasses.sourcemap.txt @@ -545,64 +545,61 @@ sourceFile:sourceMapValidationClasses.ts 2 > ^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^^^^^^^^^^^^^ -14> ^ -15> ^^^^^^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ -21> ^^-> +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^^^^^^^^^^^^^ +13> ^ +14> ^^^^^^ +15> ^^ +16> ^ +17> ^^ +18> ^^ +19> ^ +20> ^^-> 1-> > 2 > for 3 > 4 > ( -5 > var -6 > -7 > i -8 > = -9 > 0 -10> ; -11> i -12> < -13> restGreetings -14> . -15> length -16> ; -17> i -18> ++ -19> ) -20> { +5 > var +6 > i +7 > = +8 > 0 +9 > ; +10> i +11> < +12> restGreetings +13> . +14> length +15> ; +16> i +17> ++ +18> ) +19> { 1->Emitted(27, 13) Source(24, 9) + SourceIndex(0) 2 >Emitted(27, 16) Source(24, 12) + SourceIndex(0) 3 >Emitted(27, 17) Source(24, 13) + SourceIndex(0) 4 >Emitted(27, 18) Source(24, 14) + SourceIndex(0) -5 >Emitted(27, 21) Source(24, 17) + SourceIndex(0) -6 >Emitted(27, 22) Source(24, 18) + SourceIndex(0) -7 >Emitted(27, 23) Source(24, 19) + SourceIndex(0) -8 >Emitted(27, 26) Source(24, 22) + SourceIndex(0) -9 >Emitted(27, 27) Source(24, 23) + SourceIndex(0) -10>Emitted(27, 29) Source(24, 25) + SourceIndex(0) -11>Emitted(27, 30) Source(24, 26) + SourceIndex(0) -12>Emitted(27, 33) Source(24, 29) + SourceIndex(0) -13>Emitted(27, 46) Source(24, 42) + SourceIndex(0) -14>Emitted(27, 47) Source(24, 43) + SourceIndex(0) -15>Emitted(27, 53) Source(24, 49) + SourceIndex(0) -16>Emitted(27, 55) Source(24, 51) + SourceIndex(0) -17>Emitted(27, 56) Source(24, 52) + SourceIndex(0) -18>Emitted(27, 58) Source(24, 54) + SourceIndex(0) -19>Emitted(27, 60) Source(24, 56) + SourceIndex(0) -20>Emitted(27, 61) Source(24, 57) + SourceIndex(0) +5 >Emitted(27, 22) Source(24, 18) + SourceIndex(0) +6 >Emitted(27, 23) Source(24, 19) + SourceIndex(0) +7 >Emitted(27, 26) Source(24, 22) + SourceIndex(0) +8 >Emitted(27, 27) Source(24, 23) + SourceIndex(0) +9 >Emitted(27, 29) Source(24, 25) + SourceIndex(0) +10>Emitted(27, 30) Source(24, 26) + SourceIndex(0) +11>Emitted(27, 33) Source(24, 29) + SourceIndex(0) +12>Emitted(27, 46) Source(24, 42) + SourceIndex(0) +13>Emitted(27, 47) Source(24, 43) + SourceIndex(0) +14>Emitted(27, 53) Source(24, 49) + SourceIndex(0) +15>Emitted(27, 55) Source(24, 51) + SourceIndex(0) +16>Emitted(27, 56) Source(24, 52) + SourceIndex(0) +17>Emitted(27, 58) Source(24, 54) + SourceIndex(0) +18>Emitted(27, 60) Source(24, 56) + SourceIndex(0) +19>Emitted(27, 61) Source(24, 57) + SourceIndex(0) --- >>> greeters.push(new Greeter(restGreetings[i])); 1->^^^^^^^^^^^^^^^^ @@ -749,63 +746,60 @@ sourceFile:sourceMapValidationClasses.ts 2 > ^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^ -14> ^ -15> ^^^^^^ -16> ^^ -17> ^ -18> ^^ -19> ^^ -20> ^ +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^ +13> ^ +14> ^^^^^^ +15> ^^ +16> ^ +17> ^^ +18> ^^ +19> ^ 1 > > 2 > for 3 > 4 > ( -5 > var -6 > -7 > j -8 > = -9 > 0 -10> ; -11> j -12> < -13> b -14> . -15> length -16> ; -17> j -18> ++ -19> ) -20> { +5 > var +6 > j +7 > = +8 > 0 +9 > ; +10> j +11> < +12> b +13> . +14> length +15> ; +16> j +17> ++ +18> ) +19> { 1 >Emitted(34, 9) Source(33, 5) + SourceIndex(0) 2 >Emitted(34, 12) Source(33, 8) + SourceIndex(0) 3 >Emitted(34, 13) Source(33, 9) + SourceIndex(0) 4 >Emitted(34, 14) Source(33, 10) + SourceIndex(0) -5 >Emitted(34, 17) Source(33, 13) + SourceIndex(0) -6 >Emitted(34, 18) Source(33, 14) + SourceIndex(0) -7 >Emitted(34, 19) Source(33, 15) + SourceIndex(0) -8 >Emitted(34, 22) Source(33, 18) + SourceIndex(0) -9 >Emitted(34, 23) Source(33, 19) + SourceIndex(0) -10>Emitted(34, 25) Source(33, 21) + SourceIndex(0) -11>Emitted(34, 26) Source(33, 22) + SourceIndex(0) -12>Emitted(34, 29) Source(33, 25) + SourceIndex(0) -13>Emitted(34, 30) Source(33, 26) + SourceIndex(0) -14>Emitted(34, 31) Source(33, 27) + SourceIndex(0) -15>Emitted(34, 37) Source(33, 33) + SourceIndex(0) -16>Emitted(34, 39) Source(33, 35) + SourceIndex(0) -17>Emitted(34, 40) Source(33, 36) + SourceIndex(0) -18>Emitted(34, 42) Source(33, 38) + SourceIndex(0) -19>Emitted(34, 44) Source(33, 40) + SourceIndex(0) -20>Emitted(34, 45) Source(33, 41) + SourceIndex(0) +5 >Emitted(34, 18) Source(33, 14) + SourceIndex(0) +6 >Emitted(34, 19) Source(33, 15) + SourceIndex(0) +7 >Emitted(34, 22) Source(33, 18) + SourceIndex(0) +8 >Emitted(34, 23) Source(33, 19) + SourceIndex(0) +9 >Emitted(34, 25) Source(33, 21) + SourceIndex(0) +10>Emitted(34, 26) Source(33, 22) + SourceIndex(0) +11>Emitted(34, 29) Source(33, 25) + SourceIndex(0) +12>Emitted(34, 30) Source(33, 26) + SourceIndex(0) +13>Emitted(34, 31) Source(33, 27) + SourceIndex(0) +14>Emitted(34, 37) Source(33, 33) + SourceIndex(0) +15>Emitted(34, 39) Source(33, 35) + SourceIndex(0) +16>Emitted(34, 40) Source(33, 36) + SourceIndex(0) +17>Emitted(34, 42) Source(33, 38) + SourceIndex(0) +18>Emitted(34, 44) Source(33, 40) + SourceIndex(0) +19>Emitted(34, 45) Source(33, 41) + SourceIndex(0) --- >>> b[j].greet(); 1 >^^^^^^^^^^^^ diff --git a/tests/baselines/reference/sourceMapValidationFor.js.map b/tests/baselines/reference/sourceMapValidationFor.js.map index 15d038297c7..5d6491ae1e5 100644 --- a/tests/baselines/reference/sourceMapValidationFor.js.map +++ b/tests/baselines/reference/sourceMapValidationFor.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationFor.js.map] -{"version":3,"file":"sourceMapValidationFor.js","sourceRoot":"","sources":["sourceMapValidationFor.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EACvB,CAAC;IACG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAI,CAAC;IACvB,CAAC,EAAE,CAAC;IACJ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACT,QAAQ,CAAC;IACb,CAAC;AACL,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAClB,CAAC;IACG,CAAC,EAAE,CAAC;AACR,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAChB,CAAC;AACD,CAAC;AACD,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACrB,CAAC;AACD,GAAG,CAAC,CAAC,IAAI,CAAC;IACN,CAAC,EAAE,CAAC;AACR,CAAC;AACD,GAAG,CAAC,CAAC,IACL,CAAC;IACG,CAAC,EAAE,CAAC;AACR,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationFor.js","sourceRoot":"","sources":["sourceMapValidationFor.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EACvB,CAAC;IACG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5B,CAAC;AACD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAI,CAAC;IACvB,CAAC,EAAE,CAAC;IACJ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACT,QAAQ,CAAC;IACb,CAAC;AACL,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAClB,CAAC;IACG,CAAC,EAAE,CAAC;AACR,CAAC;AACD,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAChB,CAAC;AACD,CAAC;AACD,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACrB,CAAC;AACD,GAAG,CAAC,CAAC,IAAI,CAAC;IACN,CAAC,EAAE,CAAC;AACR,CAAC;AACD,GAAG,CAAC,CAAC,IACL,CAAC;IACG,CAAC,EAAE,CAAC;AACR,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1C,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationFor.sourcemap.txt b/tests/baselines/reference/sourceMapValidationFor.sourcemap.txt index 609f9548a6b..583e60d75cf 100644 --- a/tests/baselines/reference/sourceMapValidationFor.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationFor.sourcemap.txt @@ -13,56 +13,53 @@ sourceFile:sourceMapValidationFor.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^^ -14> ^^ -15> ^ -16> ^^ -17> ^^ -18> ^ +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^^ +13> ^^ +14> ^ +15> ^^ +16> ^^ +17> ^ 1 > 2 >for 3 > 4 > ( -5 > var -6 > -7 > i -8 > = -9 > 0 -10> ; -11> i -12> < -13> 10 -14> ; -15> i -16> ++ -17> ) -18> { +5 > var +6 > i +7 > = +8 > 0 +9 > ; +10> i +11> < +12> 10 +13> ; +14> i +15> ++ +16> ) +17> { 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) 3 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) 4 >Emitted(1, 6) Source(1, 6) + SourceIndex(0) -5 >Emitted(1, 9) Source(1, 9) + SourceIndex(0) -6 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) -7 >Emitted(1, 11) Source(1, 11) + SourceIndex(0) -8 >Emitted(1, 14) Source(1, 14) + SourceIndex(0) -9 >Emitted(1, 15) Source(1, 15) + SourceIndex(0) -10>Emitted(1, 17) Source(1, 17) + SourceIndex(0) -11>Emitted(1, 18) Source(1, 18) + SourceIndex(0) -12>Emitted(1, 21) Source(1, 21) + SourceIndex(0) -13>Emitted(1, 23) Source(1, 23) + SourceIndex(0) -14>Emitted(1, 25) Source(1, 25) + SourceIndex(0) -15>Emitted(1, 26) Source(1, 26) + SourceIndex(0) -16>Emitted(1, 28) Source(1, 28) + SourceIndex(0) -17>Emitted(1, 30) Source(1, 30) + SourceIndex(0) -18>Emitted(1, 31) Source(1, 31) + SourceIndex(0) +5 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) +6 >Emitted(1, 11) Source(1, 11) + SourceIndex(0) +7 >Emitted(1, 14) Source(1, 14) + SourceIndex(0) +8 >Emitted(1, 15) Source(1, 15) + SourceIndex(0) +9 >Emitted(1, 17) Source(1, 17) + SourceIndex(0) +10>Emitted(1, 18) Source(1, 18) + SourceIndex(0) +11>Emitted(1, 21) Source(1, 21) + SourceIndex(0) +12>Emitted(1, 23) Source(1, 23) + SourceIndex(0) +13>Emitted(1, 25) Source(1, 25) + SourceIndex(0) +14>Emitted(1, 26) Source(1, 26) + SourceIndex(0) +15>Emitted(1, 28) Source(1, 28) + SourceIndex(0) +16>Emitted(1, 30) Source(1, 30) + SourceIndex(0) +17>Emitted(1, 31) Source(1, 31) + SourceIndex(0) --- >>> WScript.Echo("i: " + i); 1 >^^^^ @@ -208,48 +205,45 @@ sourceFile:sourceMapValidationFor.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^^ -14> ^^^ -15> ^ +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^^ +13> ^^^ +14> ^ 1-> > 2 >for 3 > 4 > ( -5 > var -6 > -7 > j -8 > = -9 > 0 -10> ; -11> j -12> < -13> 10 -14> ; ) -15> { +5 > var +6 > j +7 > = +8 > 0 +9 > ; +10> j +11> < +12> 10 +13> ; ) +14> { 1->Emitted(7, 1) Source(8, 1) + SourceIndex(0) 2 >Emitted(7, 4) Source(8, 4) + SourceIndex(0) 3 >Emitted(7, 5) Source(8, 5) + SourceIndex(0) 4 >Emitted(7, 6) Source(8, 6) + SourceIndex(0) -5 >Emitted(7, 9) Source(8, 9) + SourceIndex(0) -6 >Emitted(7, 10) Source(8, 10) + SourceIndex(0) -7 >Emitted(7, 11) Source(8, 11) + SourceIndex(0) -8 >Emitted(7, 14) Source(8, 14) + SourceIndex(0) -9 >Emitted(7, 15) Source(8, 15) + SourceIndex(0) -10>Emitted(7, 17) Source(8, 17) + SourceIndex(0) -11>Emitted(7, 18) Source(8, 18) + SourceIndex(0) -12>Emitted(7, 21) Source(8, 21) + SourceIndex(0) -13>Emitted(7, 23) Source(8, 23) + SourceIndex(0) -14>Emitted(7, 26) Source(8, 27) + SourceIndex(0) -15>Emitted(7, 27) Source(8, 28) + SourceIndex(0) +5 >Emitted(7, 10) Source(8, 10) + SourceIndex(0) +6 >Emitted(7, 11) Source(8, 11) + SourceIndex(0) +7 >Emitted(7, 14) Source(8, 14) + SourceIndex(0) +8 >Emitted(7, 15) Source(8, 15) + SourceIndex(0) +9 >Emitted(7, 17) Source(8, 17) + SourceIndex(0) +10>Emitted(7, 18) Source(8, 18) + SourceIndex(0) +11>Emitted(7, 21) Source(8, 21) + SourceIndex(0) +12>Emitted(7, 23) Source(8, 23) + SourceIndex(0) +13>Emitted(7, 26) Source(8, 27) + SourceIndex(0) +14>Emitted(7, 27) Source(8, 28) + SourceIndex(0) --- >>> j++; 1 >^^^^ @@ -405,45 +399,42 @@ sourceFile:sourceMapValidationFor.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^^ -11> ^ -12> ^^ -13> ^^ -14> ^ +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^^ +10> ^ +11> ^^ +12> ^^ +13> ^ 1-> > 2 >for 3 > 4 > ( -5 > var -6 > -7 > k -8 > = -9 > 0 -10> ;; -11> k -12> ++ -13> ) -14> { +5 > var +6 > k +7 > = +8 > 0 +9 > ;; +10> k +11> ++ +12> ) +13> { 1->Emitted(16, 1) Source(18, 1) + SourceIndex(0) 2 >Emitted(16, 4) Source(18, 4) + SourceIndex(0) 3 >Emitted(16, 5) Source(18, 5) + SourceIndex(0) 4 >Emitted(16, 6) Source(18, 6) + SourceIndex(0) -5 >Emitted(16, 9) Source(18, 9) + SourceIndex(0) -6 >Emitted(16, 10) Source(18, 10) + SourceIndex(0) -7 >Emitted(16, 11) Source(18, 11) + SourceIndex(0) -8 >Emitted(16, 14) Source(18, 14) + SourceIndex(0) -9 >Emitted(16, 15) Source(18, 15) + SourceIndex(0) -10>Emitted(16, 18) Source(18, 18) + SourceIndex(0) -11>Emitted(16, 19) Source(18, 19) + SourceIndex(0) -12>Emitted(16, 21) Source(18, 21) + SourceIndex(0) -13>Emitted(16, 23) Source(18, 23) + SourceIndex(0) -14>Emitted(16, 24) Source(18, 24) + SourceIndex(0) +5 >Emitted(16, 10) Source(18, 10) + SourceIndex(0) +6 >Emitted(16, 11) Source(18, 11) + SourceIndex(0) +7 >Emitted(16, 14) Source(18, 14) + SourceIndex(0) +8 >Emitted(16, 15) Source(18, 15) + SourceIndex(0) +9 >Emitted(16, 18) Source(18, 18) + SourceIndex(0) +10>Emitted(16, 19) Source(18, 19) + SourceIndex(0) +11>Emitted(16, 21) Source(18, 21) + SourceIndex(0) +12>Emitted(16, 23) Source(18, 23) + SourceIndex(0) +13>Emitted(16, 24) Source(18, 24) + SourceIndex(0) --- >>>} 1 > diff --git a/tests/baselines/reference/sourceMapValidationForIn.js.map b/tests/baselines/reference/sourceMapValidationForIn.js.map index 2c12dd5cdc1..2281e36f605 100644 --- a/tests/baselines/reference/sourceMapValidationForIn.js.map +++ b/tests/baselines/reference/sourceMapValidationForIn.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationForIn.js.map] -{"version":3,"file":"sourceMapValidationForIn.js","sourceRoot":"","sources":["sourceMapValidationForIn.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,CACtB,CAAC;IACG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CACjB,CAAC;IACG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationForIn.js","sourceRoot":"","sources":["sourceMapValidationForIn.ts"],"names":[],"mappings":"AAAA,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AACD,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,CACtB,CAAC;IACG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrB,CAAC;AACD,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CACjB,CAAC;IACG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationForIn.sourcemap.txt b/tests/baselines/reference/sourceMapValidationForIn.sourcemap.txt index ae7e34c025c..e84bb2323c4 100644 --- a/tests/baselines/reference/sourceMapValidationForIn.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationForIn.sourcemap.txt @@ -13,38 +13,35 @@ sourceFile:sourceMapValidationForIn.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^^ -9 > ^^^^^^ -10> ^ -11> ^ -12> ^ +5 > ^^^^ +6 > ^ +7 > ^^^^ +8 > ^^^^^^ +9 > ^ +10> ^ +11> ^ 1 > 2 >for 3 > 4 > ( -5 > var -6 > -7 > x -8 > in -9 > String -10> ) -11> -12> { +5 > var +6 > x +7 > in +8 > String +9 > ) +10> +11> { 1 >Emitted(1, 1) Source(1, 1) + SourceIndex(0) 2 >Emitted(1, 4) Source(1, 4) + SourceIndex(0) 3 >Emitted(1, 5) Source(1, 5) + SourceIndex(0) 4 >Emitted(1, 6) Source(1, 6) + SourceIndex(0) -5 >Emitted(1, 9) Source(1, 9) + SourceIndex(0) -6 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) -7 >Emitted(1, 11) Source(1, 11) + SourceIndex(0) -8 >Emitted(1, 15) Source(1, 15) + SourceIndex(0) -9 >Emitted(1, 21) Source(1, 21) + SourceIndex(0) -10>Emitted(1, 22) Source(1, 22) + SourceIndex(0) -11>Emitted(1, 23) Source(1, 23) + SourceIndex(0) -12>Emitted(1, 24) Source(1, 24) + SourceIndex(0) +5 >Emitted(1, 10) Source(1, 10) + SourceIndex(0) +6 >Emitted(1, 11) Source(1, 11) + SourceIndex(0) +7 >Emitted(1, 15) Source(1, 15) + SourceIndex(0) +8 >Emitted(1, 21) Source(1, 21) + SourceIndex(0) +9 >Emitted(1, 22) Source(1, 22) + SourceIndex(0) +10>Emitted(1, 23) Source(1, 23) + SourceIndex(0) +11>Emitted(1, 24) Source(1, 24) + SourceIndex(0) --- >>> WScript.Echo(x); 1 >^^^^ @@ -159,40 +156,37 @@ sourceFile:sourceMapValidationForIn.ts 2 >^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^^ -8 > ^^^^ -9 > ^^^^^^ -10> ^ -11> ^ -12> ^ +5 > ^^^^ +6 > ^^ +7 > ^^^^ +8 > ^^^^^^ +9 > ^ +10> ^ +11> ^ 1-> > 2 >for 3 > 4 > ( -5 > var -6 > -7 > x2 -8 > in -9 > String -10> ) -11> +5 > var +6 > x2 +7 > in +8 > String +9 > ) +10> > -12> { +11> { 1->Emitted(7, 1) Source(7, 1) + SourceIndex(0) 2 >Emitted(7, 4) Source(7, 4) + SourceIndex(0) 3 >Emitted(7, 5) Source(7, 5) + SourceIndex(0) 4 >Emitted(7, 6) Source(7, 6) + SourceIndex(0) -5 >Emitted(7, 9) Source(7, 9) + SourceIndex(0) -6 >Emitted(7, 10) Source(7, 10) + SourceIndex(0) -7 >Emitted(7, 12) Source(7, 12) + SourceIndex(0) -8 >Emitted(7, 16) Source(7, 16) + SourceIndex(0) -9 >Emitted(7, 22) Source(7, 22) + SourceIndex(0) -10>Emitted(7, 23) Source(7, 23) + SourceIndex(0) -11>Emitted(7, 24) Source(8, 1) + SourceIndex(0) -12>Emitted(7, 25) Source(8, 2) + SourceIndex(0) +5 >Emitted(7, 10) Source(7, 10) + SourceIndex(0) +6 >Emitted(7, 12) Source(7, 12) + SourceIndex(0) +7 >Emitted(7, 16) Source(7, 16) + SourceIndex(0) +8 >Emitted(7, 22) Source(7, 22) + SourceIndex(0) +9 >Emitted(7, 23) Source(7, 23) + SourceIndex(0) +10>Emitted(7, 24) Source(8, 1) + SourceIndex(0) +11>Emitted(7, 25) Source(8, 2) + SourceIndex(0) --- >>> WScript.Echo(x2); 1 >^^^^ diff --git a/tests/baselines/reference/sourceMapValidationStatements.js.map b/tests/baselines/reference/sourceMapValidationStatements.js.map index b4b5c48fc22..464ab4dc002 100644 --- a/tests/baselines/reference/sourceMapValidationStatements.js.map +++ b/tests/baselines/reference/sourceMapValidationStatements.js.map @@ -1,2 +1,2 @@ //// [sourceMapValidationStatements.js.map] -{"version":3,"file":"sourceMapValidationStatements.js","sourceRoot":"","sources":["sourceMapValidationStatements.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sourceMapValidationStatements.js","sourceRoot":"","sources":["sourceMapValidationStatements.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationStatements.sourcemap.txt b/tests/baselines/reference/sourceMapValidationStatements.sourcemap.txt index 41212b9b3db..ed7c9395d2f 100644 --- a/tests/baselines/reference/sourceMapValidationStatements.sourcemap.txt +++ b/tests/baselines/reference/sourceMapValidationStatements.sourcemap.txt @@ -57,57 +57,54 @@ sourceFile:sourceMapValidationStatements.ts 2 > ^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^ -9 > ^ -10> ^^ -11> ^ -12> ^^^ -13> ^^ -14> ^^ -15> ^ -16> ^^ -17> ^^ -18> ^ +5 > ^^^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^^ +12> ^^ +13> ^^ +14> ^ +15> ^^ +16> ^^ +17> ^ 1-> > 2 > for 3 > 4 > ( -5 > var -6 > -7 > i -8 > = -9 > 0 -10> ; -11> i -12> < -13> 10 -14> ; -15> i -16> ++ -17> ) -18> { +5 > var +6 > i +7 > = +8 > 0 +9 > ; +10> i +11> < +12> 10 +13> ; +14> i +15> ++ +16> ) +17> { 1->Emitted(4, 5) Source(4, 5) + SourceIndex(0) 2 >Emitted(4, 8) Source(4, 8) + SourceIndex(0) 3 >Emitted(4, 9) Source(4, 9) + SourceIndex(0) 4 >Emitted(4, 10) Source(4, 10) + SourceIndex(0) -5 >Emitted(4, 13) Source(4, 13) + SourceIndex(0) -6 >Emitted(4, 14) Source(4, 14) + SourceIndex(0) -7 >Emitted(4, 15) Source(4, 15) + SourceIndex(0) -8 >Emitted(4, 18) Source(4, 18) + SourceIndex(0) -9 >Emitted(4, 19) Source(4, 19) + SourceIndex(0) -10>Emitted(4, 21) Source(4, 21) + SourceIndex(0) -11>Emitted(4, 22) Source(4, 22) + SourceIndex(0) -12>Emitted(4, 25) Source(4, 25) + SourceIndex(0) -13>Emitted(4, 27) Source(4, 27) + SourceIndex(0) -14>Emitted(4, 29) Source(4, 29) + SourceIndex(0) -15>Emitted(4, 30) Source(4, 30) + SourceIndex(0) -16>Emitted(4, 32) Source(4, 32) + SourceIndex(0) -17>Emitted(4, 34) Source(4, 34) + SourceIndex(0) -18>Emitted(4, 35) Source(4, 35) + SourceIndex(0) +5 >Emitted(4, 14) Source(4, 14) + SourceIndex(0) +6 >Emitted(4, 15) Source(4, 15) + SourceIndex(0) +7 >Emitted(4, 18) Source(4, 18) + SourceIndex(0) +8 >Emitted(4, 19) Source(4, 19) + SourceIndex(0) +9 >Emitted(4, 21) Source(4, 21) + SourceIndex(0) +10>Emitted(4, 22) Source(4, 22) + SourceIndex(0) +11>Emitted(4, 25) Source(4, 25) + SourceIndex(0) +12>Emitted(4, 27) Source(4, 27) + SourceIndex(0) +13>Emitted(4, 29) Source(4, 29) + SourceIndex(0) +14>Emitted(4, 30) Source(4, 30) + SourceIndex(0) +15>Emitted(4, 32) Source(4, 32) + SourceIndex(0) +16>Emitted(4, 34) Source(4, 34) + SourceIndex(0) +17>Emitted(4, 35) Source(4, 35) + SourceIndex(0) --- >>> x += i; 1 >^^^^^^^^ @@ -390,39 +387,36 @@ sourceFile:sourceMapValidationStatements.ts 2 > ^^^ 3 > ^ 4 > ^ -5 > ^^^ -6 > ^ -7 > ^ -8 > ^^^^ -9 > ^ -10> ^ -11> ^ -12> ^ +5 > ^^^^ +6 > ^ +7 > ^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^ 1-> > 2 > for 3 > 4 > ( -5 > var -6 > -7 > j -8 > in -9 > a -10> ) -11> -12> { +5 > var +6 > j +7 > in +8 > a +9 > ) +10> +11> { 1->Emitted(24, 5) Source(23, 5) + SourceIndex(0) 2 >Emitted(24, 8) Source(23, 8) + SourceIndex(0) 3 >Emitted(24, 9) Source(23, 9) + SourceIndex(0) 4 >Emitted(24, 10) Source(23, 10) + SourceIndex(0) -5 >Emitted(24, 13) Source(23, 13) + SourceIndex(0) -6 >Emitted(24, 14) Source(23, 14) + SourceIndex(0) -7 >Emitted(24, 15) Source(23, 15) + SourceIndex(0) -8 >Emitted(24, 19) Source(23, 19) + SourceIndex(0) -9 >Emitted(24, 20) Source(23, 20) + SourceIndex(0) -10>Emitted(24, 21) Source(23, 21) + SourceIndex(0) -11>Emitted(24, 22) Source(23, 22) + SourceIndex(0) -12>Emitted(24, 23) Source(23, 23) + SourceIndex(0) +5 >Emitted(24, 14) Source(23, 14) + SourceIndex(0) +6 >Emitted(24, 15) Source(23, 15) + SourceIndex(0) +7 >Emitted(24, 19) Source(23, 19) + SourceIndex(0) +8 >Emitted(24, 20) Source(23, 20) + SourceIndex(0) +9 >Emitted(24, 21) Source(23, 21) + SourceIndex(0) +10>Emitted(24, 22) Source(23, 22) + SourceIndex(0) +11>Emitted(24, 23) Source(23, 23) + SourceIndex(0) --- >>> obj.z = a[j]; 1 >^^^^^^^^ From df3a74b6ca2d340aedf06e8595ce28fcf8320751 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 10 Dec 2015 15:35:47 -0800 Subject: [PATCH 055/164] Removed some unnecessary changes and added comments --- src/compiler/emitter.ts | 4 +++- src/compiler/sourcemap.ts | 15 ++++++--------- src/compiler/utilities.ts | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index a4bbe9b7528..8084ac3c4f1 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2832,6 +2832,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi else { write("var "); } + // Note here we specifically dont emit end so that if we are going to emit binding pattern + // we can alter the source map correctly return true; } @@ -3732,7 +3734,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === SyntaxKind.VariableDeclaration || name.parent.kind === SyntaxKind.BindingElement); - // If this is first var declaration, we need to stary at var/let/const keyword instead + // If this is first var declaration, we need to start at var/let/const keyword instead // otherwise use nodeForSourceMap as the start position emitStart(isFirstVariableDeclaration(nodeForSourceMap) ? nodeForSourceMap.parent : nodeForSourceMap); withTemporaryNoSourceMap(() => { diff --git a/src/compiler/sourcemap.ts b/src/compiler/sourcemap.ts index ab079c642ea..0e90cee1fb1 100644 --- a/src/compiler/sourcemap.ts +++ b/src/compiler/sourcemap.ts @@ -232,20 +232,17 @@ namespace ts { sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); } - function getSourceLinePos(pos: number) { - const sourceLinePos = getLineAndCharacterOfPosition(currentSourceFile, pos); - // Convert the location to be one-based. - sourceLinePos.line++; - sourceLinePos.character++; - return sourceLinePos; - } - function emitPos(pos: number) { if (pos === -1) { return; } - const sourceLinePos = getSourceLinePos(pos); + const sourceLinePos = getLineAndCharacterOfPosition(currentSourceFile, pos); + + // Convert the location to be one-based. + sourceLinePos.line++; + sourceLinePos.character++; + const emittedLine = writer.getLine(); const emittedColumn = writer.getColumn(); diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 0f0f50719c1..95bf4ff7fa3 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1616,7 +1616,7 @@ namespace ts { return node.kind === SyntaxKind.QualifiedName; } - export function nodeIsSynthesized(node: Node | TextRange): boolean { + export function nodeIsSynthesized(node: Node): boolean { return node.pos === -1; } From 59982aba224075cec05a7b365dc11adcc3cc0155 Mon Sep 17 00:00:00 2001 From: Yui T Date: Thu, 10 Dec 2015 17:35:10 -0800 Subject: [PATCH 056/164] Update testcases --- tests/cases/fourslash/tsxCompletion11.ts | 7 ----- tests/cases/fourslash/tsxCompletion13.ts | 8 ----- tests/cases/fourslash/tsxCompletion14.ts | 8 ----- tests/cases/fourslash/tsxCompletion15.ts | 9 ------ tests/cases/fourslash/tsxCompletion16.ts | 7 ----- tests/cases/fourslash/tsxCompletion17.ts | 8 ----- tests/cases/fourslash/tsxCompletion18.ts | 30 ------------------- ...ion12.ts => tsxCompletionOnClosingTag1.ts} | 0 .../fourslash/tsxCompletionOnClosingTag2.ts | 14 +++++++++ .../fourslash/tsxCompletionOnClosingTag3.ts | 20 +++++++++++++ .../fourslash/tsxCompletionOnClosingTag4.ts | 14 +++++++++ 11 files changed, 48 insertions(+), 77 deletions(-) delete mode 100644 tests/cases/fourslash/tsxCompletion11.ts delete mode 100644 tests/cases/fourslash/tsxCompletion13.ts delete mode 100644 tests/cases/fourslash/tsxCompletion14.ts delete mode 100644 tests/cases/fourslash/tsxCompletion15.ts delete mode 100644 tests/cases/fourslash/tsxCompletion16.ts delete mode 100644 tests/cases/fourslash/tsxCompletion17.ts delete mode 100644 tests/cases/fourslash/tsxCompletion18.ts rename tests/cases/fourslash/{tsxCompletion12.ts => tsxCompletionOnClosingTag1.ts} (100%) create mode 100644 tests/cases/fourslash/tsxCompletionOnClosingTag2.ts create mode 100644 tests/cases/fourslash/tsxCompletionOnClosingTag3.ts create mode 100644 tests/cases/fourslash/tsxCompletionOnClosingTag4.ts diff --git a/tests/cases/fourslash/tsxCompletion11.ts b/tests/cases/fourslash/tsxCompletion11.ts deleted file mode 100644 index 70626a84791..00000000000 --- a/tests/cases/fourslash/tsxCompletion11.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// - -//@Filename: file.tsx -//// var x1 = - -//@Filename: file.tsx -//// class MyElement {} -//// var x1 = - -//@Filename: file.tsx -//// class MyElement {} -//// var x1 = - -//@Filename: file.tsx -//// class MyElement {} -//// var x1 = - -//@Filename: file.tsx -//// var x1 = - -//@Filename: file.tsx -//// var x1 = - -//@Filename: file.tsx -//// var x =
-////

-//// -//// -//// - -goTo.marker("1"); -verify.memberListCount(1); -verify.completionListContains('h1'); - -goTo.marker("2"); -verify.memberListCount(1); -verify.completionListContains('div'); - -goTo.marker("3"); -verify.memberListCount(0); - -goTo.marker("4"); -verify.memberListCount(1); -verify.completionListContains('div'); - -goTo.marker("5"); -verify.memberListCount(0); - -goTo.marker("6"); -verify.memberListCount(1); -verify.completionListContains('div'); \ No newline at end of file diff --git a/tests/cases/fourslash/tsxCompletion12.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag1.ts similarity index 100% rename from tests/cases/fourslash/tsxCompletion12.ts rename to tests/cases/fourslash/tsxCompletionOnClosingTag1.ts diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTag2.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag2.ts new file mode 100644 index 00000000000..54a0b61879f --- /dev/null +++ b/tests/cases/fourslash/tsxCompletionOnClosingTag2.ts @@ -0,0 +1,14 @@ +/// + +//@Filename: file.tsx +//// declare module JSX { +//// interface Element { } +//// interface IntrinsicElements { +//// div: { ONE: string; TWO: number; } +//// } +//// } +//// var x1 =
+ +//@Filename: file.tsx +//// declare module JSX { +//// interface Element { } +//// interface IntrinsicElements { +//// div: { ONE: string; TWO: number; } +//// } +//// } +//// var x1 =
+////

Hello world +//// + +goTo.marker("1"); +verify.memberListCount(1); +verify.completionListContains('div'); + +goTo.marker("2"); +verify.memberListCount(1); +verify.completionListContains('h1') diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts new file mode 100644 index 00000000000..a36a933127d --- /dev/null +++ b/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts @@ -0,0 +1,14 @@ +/// + +//@Filename: file.tsx +//// var x1 =
+////

Hello world +//// + +goTo.marker("1"); +verify.memberListCount(1); +verify.completionListContains('div'); + +goTo.marker("2"); +verify.memberListCount(1); +verify.completionListContains('h1') From 9e6c196c36ce70178e0f4adc8bc4046fb8978266 Mon Sep 17 00:00:00 2001 From: Yui T Date: Thu, 10 Dec 2015 18:09:02 -0800 Subject: [PATCH 057/164] Remove includeGlobalSymbol boolean --- src/compiler/checker.ts | 6 ++---- src/compiler/types.ts | 2 +- src/services/services.ts | 13 +++++-------- tests/cases/fourslash/tsxCompletionOnClosingTag3.ts | 2 +- tests/cases/fourslash/tsxCompletionOnClosingTag4.ts | 2 +- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6077e76ed04..16b598ec211 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14576,7 +14576,7 @@ namespace ts { return false; } - function getSymbolsInScope(location: Node, meaning: SymbolFlags, includeGlobalSymbols: boolean): Symbol[] { + function getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[] { const symbols: SymbolTable = {}; let memberFlags: NodeFlags = 0; @@ -14639,9 +14639,7 @@ namespace ts { location = location.parent; } - if (includeGlobalSymbols) { - copySymbols(globals, meaning); - } + copySymbols(globals, meaning); } /** diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 9cec9dda241..0cb182e378b 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1717,7 +1717,7 @@ namespace ts { getBaseTypes(type: InterfaceType): ObjectType[]; getReturnTypeOfSignature(signature: Signature): Type; - getSymbolsInScope(location: Node, meaning: SymbolFlags, includeGlobalSymbols: boolean): Symbol[]; + getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; getSymbolAtLocation(node: Node): Symbol; getShorthandAssignmentValueSymbol(location: Node): Symbol; getTypeAtLocation(node: Node): Type; diff --git a/src/services/services.ts b/src/services/services.ts index 552af68ce40..6e8aa237f47 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3114,11 +3114,8 @@ namespace ts { } else if (isRightOfOpenTag) { let tagSymbols = typeChecker.getJsxIntrinsicTagNames(); - // In this case, we are handling completion list inside JSX opening tag. For example: - // !!(s.flags & SymbolFlags.Value))); } else { @@ -3142,7 +3139,7 @@ namespace ts { // For JavaScript or TypeScript, if we're not after a dot, then just try to get the // global symbols in scope. These results should be valid for either language as // the set of symbols that can be referenced from this location. - if (!tryGetGlobalSymbols(/*includeGlobalSymbols*/ true)) { + if (!tryGetGlobalSymbols()) { return undefined; } } @@ -3202,7 +3199,7 @@ namespace ts { } } - function tryGetGlobalSymbols(includeGlobalSymbols: boolean): boolean { + function tryGetGlobalSymbols(): boolean { let objectLikeContainer: ObjectLiteralExpression | BindingPattern; let namedImportsOrExports: NamedImportsOrExports; let jsxContainer: JsxOpeningLikeElement; @@ -3273,7 +3270,7 @@ namespace ts { /// TODO filter meaning based on the current context let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias; - symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings, includeGlobalSymbols); + symbols = typeChecker.getSymbolsInScope(scopeNode, symbolMeanings); return true; } diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts index 80d2b0c00ba..a39740df586 100644 --- a/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts +++ b/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts @@ -9,7 +9,7 @@ //// } //// var x1 =
////

Hello world -//// +//// goTo.marker("1"); verify.memberListCount(1); diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts index a36a933127d..04176ba7fcb 100644 --- a/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts +++ b/tests/cases/fourslash/tsxCompletionOnClosingTag4.ts @@ -3,7 +3,7 @@ //@Filename: file.tsx //// var x1 =
////

Hello world -//// +//// goTo.marker("1"); verify.memberListCount(1); From c7258db2b3096a9122d568d8a5db7082a07e6bad Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 11 Dec 2015 10:44:16 -0800 Subject: [PATCH 058/164] Test case for variable destructuring statement with object binding pattern and with default values --- ...ructuringVariableStatementDefaultValues.js | 35 ++ ...uringVariableStatementDefaultValues.js.map | 2 + ...riableStatementDefaultValues.sourcemap.txt | 344 +++++++++++++ ...ringVariableStatementDefaultValues.symbols | 69 +++ ...turingVariableStatementDefaultValues.types | 87 ++++ ...edObjectBindingPatternWithDefaultValues.js | 55 ++ ...jectBindingPatternWithDefaultValues.js.map | 2 + ...dingPatternWithDefaultValues.sourcemap.txt | 484 ++++++++++++++++++ ...ectBindingPatternWithDefaultValues.symbols | 127 +++++ ...bjectBindingPatternWithDefaultValues.types | 163 ++++++ ...ructuringVariableStatementDefaultValues.ts | 20 + ...edObjectBindingPatternWithDefaultValues.ts | 41 ++ 12 files changed, 1429 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js new file mode 100644 index 00000000000..64dea954ae7 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js @@ -0,0 +1,35 @@ +//// [sourceMapValidationDestructuringVariableStatementDefaultValues.ts] +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +var { name: nameA = "" } = robotA; +var { name: nameB = "", skill: skillB = "" } = robotB; +var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} + +//// [sourceMapValidationDestructuringVariableStatementDefaultValues.js] +var hello = "hello"; +var robotA = { name: "mower", skill: "mowing" }; +var robotB = { name: "trimmer", skill: "trimming" }; +var _a = robotA.name, nameA = _a === void 0 ? "" : _a; +var _b = robotB.name, nameB = _b === void 0 ? "" : _b, _c = robotB.skill, skillB = _c === void 0 ? "" : _c; +var _d = { name: "Edger", skill: "cutting edges" }, _e = _d.name, nameC = _e === void 0 ? "" : _e, _f = _d.skill, skillC = _f === void 0 ? "" : _f; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js.map new file mode 100644 index 00000000000..d85d9d2d669 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementDefaultValues.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvD,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACrD,oBAAwB,EAAxB,uCAAwB,CAAY;AACpC,oBAAwB,EAAxB,uCAAwB,EAAE,iBAAoC,EAApC,kDAAoC,CAAY;AAChF,IAAA,8CAAkH,EAA5G,YAAwB,EAAxB,uCAAwB,EAAE,aAAoC,EAApC,kDAAoC,CAA+C;AACnH,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..12e5526e77c --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.sourcemap.txt @@ -0,0 +1,344 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementDefaultValues.js +mapUrl: sourceMapValidationDestructuringVariableStatementDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.js +sourceFile:sourceMapValidationDestructuringVariableStatementDefaultValues.ts +------------------------------------------------------------------- +>>>var hello = "hello"; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >interface Robot { + > name: string; + > skill: string; + >} + >declare var console: { + > log(msg: string): void; + >} + > +2 >var +3 > hello +4 > = +5 > "hello" +6 > ; +1 >Emitted(1, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(8, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(8, 13) + SourceIndex(0) +5 >Emitted(1, 20) Source(8, 20) + SourceIndex(0) +6 >Emitted(1, 21) Source(8, 21) + SourceIndex(0) +--- +>>>var robotA = { name: "mower", skill: "mowing" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^-> +1-> + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1->Emitted(2, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(9, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(9, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(9, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(9, 29) + SourceIndex(0) +8 >Emitted(2, 29) Source(9, 36) + SourceIndex(0) +9 >Emitted(2, 31) Source(9, 38) + SourceIndex(0) +10>Emitted(2, 36) Source(9, 43) + SourceIndex(0) +11>Emitted(2, 38) Source(9, 45) + SourceIndex(0) +12>Emitted(2, 46) Source(9, 53) + SourceIndex(0) +13>Emitted(2, 48) Source(9, 55) + SourceIndex(0) +14>Emitted(2, 49) Source(9, 56) + SourceIndex(0) +--- +>>>var robotB = { name: "trimmer", skill: "trimming" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > { +6 > name +7 > : +8 > "trimmer" +9 > , +10> skill +11> : +12> "trimming" +13> } +14> ; +1->Emitted(3, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(10, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(10, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(10, 21) + SourceIndex(0) +5 >Emitted(3, 16) Source(10, 23) + SourceIndex(0) +6 >Emitted(3, 20) Source(10, 27) + SourceIndex(0) +7 >Emitted(3, 22) Source(10, 29) + SourceIndex(0) +8 >Emitted(3, 31) Source(10, 38) + SourceIndex(0) +9 >Emitted(3, 33) Source(10, 40) + SourceIndex(0) +10>Emitted(3, 38) Source(10, 45) + SourceIndex(0) +11>Emitted(3, 40) Source(10, 47) + SourceIndex(0) +12>Emitted(3, 50) Source(10, 57) + SourceIndex(0) +13>Emitted(3, 52) Source(10, 59) + SourceIndex(0) +14>Emitted(3, 53) Source(10, 60) + SourceIndex(0) +--- +>>>var _a = robotA.name, nameA = _a === void 0 ? "" : _a; +1-> +2 >^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + >var { +2 >name: nameA = "" +3 > +4 > name: nameA = "" +5 > } = robotA; +1->Emitted(4, 1) Source(11, 7) + SourceIndex(0) +2 >Emitted(4, 21) Source(11, 31) + SourceIndex(0) +3 >Emitted(4, 23) Source(11, 7) + SourceIndex(0) +4 >Emitted(4, 62) Source(11, 31) + SourceIndex(0) +5 >Emitted(4, 63) Source(11, 43) + SourceIndex(0) +--- +>>>var _b = robotB.name, nameB = _b === void 0 ? "" : _b, _c = robotB.skill, skillB = _c === void 0 ? "" : _c; +1-> +2 >^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + >var { +2 >name: nameB = "" +3 > +4 > name: nameB = "" +5 > , +6 > skill: skillB = "" +7 > +8 > skill: skillB = "" +9 > } = robotB; +1->Emitted(5, 1) Source(12, 7) + SourceIndex(0) +2 >Emitted(5, 21) Source(12, 31) + SourceIndex(0) +3 >Emitted(5, 23) Source(12, 7) + SourceIndex(0) +4 >Emitted(5, 62) Source(12, 31) + SourceIndex(0) +5 >Emitted(5, 64) Source(12, 33) + SourceIndex(0) +6 >Emitted(5, 81) Source(12, 69) + SourceIndex(0) +7 >Emitted(5, 83) Source(12, 33) + SourceIndex(0) +8 >Emitted(5, 133) Source(12, 69) + SourceIndex(0) +9 >Emitted(5, 134) Source(12, 81) + SourceIndex(0) +--- +>>>var _d = { name: "Edger", skill: "cutting edges" }, _e = _d.name, nameC = _e === void 0 ? "" : _e, _f = _d.skill, skillC = _f === void 0 ? "" : _f; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^ +1-> + > +2 > +3 > var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" } +4 > +5 > name: nameC = "" +6 > +7 > name: nameC = "" +8 > , +9 > skill: skillC = "" +10> +11> skill: skillC = "" +12> } = { name: "Edger", skill: "cutting edges" }; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 1) + SourceIndex(0) +3 >Emitted(6, 51) Source(13, 115) + SourceIndex(0) +4 >Emitted(6, 53) Source(13, 7) + SourceIndex(0) +5 >Emitted(6, 65) Source(13, 31) + SourceIndex(0) +6 >Emitted(6, 67) Source(13, 7) + SourceIndex(0) +7 >Emitted(6, 106) Source(13, 31) + SourceIndex(0) +8 >Emitted(6, 108) Source(13, 33) + SourceIndex(0) +9 >Emitted(6, 121) Source(13, 69) + SourceIndex(0) +10>Emitted(6, 123) Source(13, 33) + SourceIndex(0) +11>Emitted(6, 173) Source(13, 69) + SourceIndex(0) +12>Emitted(6, 174) Source(13, 116) + SourceIndex(0) +--- +>>>if (nameA == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 3) Source(14, 3) + SourceIndex(0) +3 >Emitted(7, 4) Source(14, 4) + SourceIndex(0) +4 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) +5 >Emitted(7, 10) Source(14, 10) + SourceIndex(0) +6 >Emitted(7, 14) Source(14, 14) + SourceIndex(0) +7 >Emitted(7, 19) Source(14, 19) + SourceIndex(0) +8 >Emitted(7, 20) Source(14, 20) + SourceIndex(0) +9 >Emitted(7, 21) Source(14, 21) + SourceIndex(0) +10>Emitted(7, 22) Source(14, 22) + SourceIndex(0) +--- +>>> console.log(skillB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillB +7 > ) +8 > ; +1->Emitted(8, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(15, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(15, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(15, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(15, 17) + SourceIndex(0) +6 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +7 >Emitted(8, 24) Source(15, 24) + SourceIndex(0) +8 >Emitted(8, 25) Source(15, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(16, 2) + SourceIndex(0) +--- +>>>else { +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >else +3 > +4 > { +1->Emitted(10, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(10, 6) Source(17, 6) + SourceIndex(0) +4 >Emitted(10, 7) Source(17, 7) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(11, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(11, 12) Source(18, 12) + SourceIndex(0) +3 >Emitted(11, 13) Source(18, 13) + SourceIndex(0) +4 >Emitted(11, 16) Source(18, 16) + SourceIndex(0) +5 >Emitted(11, 17) Source(18, 17) + SourceIndex(0) +6 >Emitted(11, 22) Source(18, 22) + SourceIndex(0) +7 >Emitted(11, 23) Source(18, 23) + SourceIndex(0) +8 >Emitted(11, 24) Source(18, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(19, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols new file mode 100644 index 00000000000..1fc07bf4a17 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.symbols @@ -0,0 +1,69 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.ts === +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 0)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 1, 17)) +} +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 5, 8)) +} +var hello = "hello"; +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 7, 3)) + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 8, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 8, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 8, 36)) + +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 9, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 9, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 9, 38)) + +var { name: nameA = "" } = robotA; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 10, 5)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 8, 3)) + +var { name: nameB = "", skill: skillB = "" } = robotB; +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 11, 5)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 1, 17)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 11, 31)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 9, 3)) + +var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 74)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 5)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 89)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 31)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 74)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 89)) + +if (nameA == nameB) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 10, 5)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 11, 5)) + + console.log(skillB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 22)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 11, 31)) +} +else { + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 4, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementDefaultValues.ts, 12, 5)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.types new file mode 100644 index 00000000000..0ad3330e867 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementDefaultValues.types @@ -0,0 +1,87 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.ts === +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +var hello = "hello"; +>hello : string +>"hello" : string + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +>robotB : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +var { name: nameA = "" } = robotA; +>name : any +>nameA : string +>"" : string +>robotA : Robot + +var { name: nameB = "", skill: skillB = "" } = robotB; +>name : any +>nameB : string +>"" : string +>skill : any +>skillB : string +>"" : string +>robotB : Robot + +var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; +>name : any +>nameC : string +>"" : string +>skill : any +>skillC : string +>"" : string +>{ name: "Edger", skill: "cutting edges" } : { name?: string; skill?: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +if (nameA == nameB) { +>nameA == nameB : boolean +>nameA : string +>nameB : string + + console.log(skillB); +>console.log(skillB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillB : string +} +else { + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js new file mode 100644 index 00000000000..694f1d9d30c --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js @@ -0,0 +1,55 @@ +//// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts] +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; + +var { + skills: { + primary: primaryA = "noSkill", + secondary: secondaryA = "noSkill" + } = { primary: "noSkill", secondary: "noSkill" } +} = robotA; +var { + name: nameB = "noNameSpecified", + skills: { + primary: primaryB = "noSkill", + secondary: secondaryB = "noSkill" + } = { primary: "noSkill", secondary: "noSkill" } +} = robotB; +var { + name: nameC = "noNameSpecified", + skills: { + primary: primaryB = "noSkill", + secondary: secondaryB = "noSkill" + } = { primary: "noSkill", secondary: "noSkill" } +} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + +if (nameB == nameB) { + console.log(nameC); +} +else { + console.log(nameC); +} + +//// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js] +var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +var robotB = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +var _a = robotA.skills, _b = _a === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _a, _c = _b.primary, primaryA = _c === void 0 ? "noSkill" : _c, _d = _b.secondary, secondaryA = _d === void 0 ? "noSkill" : _d; +var _e = robotB.name, nameB = _e === void 0 ? "noNameSpecified" : _e, _f = robotB.skills, _g = _f === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _f, _h = _g.primary, primaryB = _h === void 0 ? "noSkill" : _h, _j = _g.secondary, secondaryB = _j === void 0 ? "noSkill" : _j; +var _k = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, _l = _k.name, nameC = _l === void 0 ? "noNameSpecified" : _l, _m = _k.skills, _o = _m === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _m, _p = _o.primary, primaryB = _p === void 0 ? "noSkill" : _p, _q = _o.secondary, secondaryB = _q === void 0 ? "noSkill" : _q; +if (nameB == nameB) { + console.log(nameC); +} +else { + console.log(nameC); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map new file mode 100644 index 00000000000..9ad442f4698 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACxF,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC;AAG1F,sBAGgD,EAHhD,sEAGgD,EAF5C,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAiC,EAAjC,2CAAiC,CAE9B;AAEP,oBAA+B,EAA/B,8CAA+B,EAC/B,kBAGgD,EAHhD,sEAGgD,EAF5C,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAiC,EAAjC,2CAAiC,CAE9B;AACX,IAAA,mFAMyF,EALrF,YAA+B,EAA/B,8CAA+B,EAC/B,cAGgD,EAHhD,sEAGgD,EAF5C,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAiC,EAAjC,2CAAiC,CAEiD;AAE1F,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,IAAI,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..5e007440890 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.sourcemap.txt @@ -0,0 +1,484 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js +mapUrl: sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js +sourceFile:sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts +------------------------------------------------------------------- +>>>var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +23> ^^^^^^^-> +1 >declare var console: { + > log(msg: string): void; + >} + >interface Robot { + > name: string; + > skills: { + > primary?: string; + > secondary?: string; + > }; + >} + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1 >Emitted(1, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(11, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(11, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(11, 21) + SourceIndex(0) +5 >Emitted(1, 16) Source(11, 23) + SourceIndex(0) +6 >Emitted(1, 20) Source(11, 27) + SourceIndex(0) +7 >Emitted(1, 22) Source(11, 29) + SourceIndex(0) +8 >Emitted(1, 29) Source(11, 36) + SourceIndex(0) +9 >Emitted(1, 31) Source(11, 38) + SourceIndex(0) +10>Emitted(1, 37) Source(11, 44) + SourceIndex(0) +11>Emitted(1, 39) Source(11, 46) + SourceIndex(0) +12>Emitted(1, 41) Source(11, 48) + SourceIndex(0) +13>Emitted(1, 48) Source(11, 55) + SourceIndex(0) +14>Emitted(1, 50) Source(11, 57) + SourceIndex(0) +15>Emitted(1, 58) Source(11, 65) + SourceIndex(0) +16>Emitted(1, 60) Source(11, 67) + SourceIndex(0) +17>Emitted(1, 69) Source(11, 76) + SourceIndex(0) +18>Emitted(1, 71) Source(11, 78) + SourceIndex(0) +19>Emitted(1, 77) Source(11, 84) + SourceIndex(0) +20>Emitted(1, 79) Source(11, 86) + SourceIndex(0) +21>Emitted(1, 81) Source(11, 88) + SourceIndex(0) +22>Emitted(1, 82) Source(11, 89) + SourceIndex(0) +--- +>>>var robotB = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^^^ +20> ^^ +21> ^^ +22> ^ +23> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > { +6 > name +7 > : +8 > "trimmer" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "trimming" +16> , +17> secondary +18> : +19> "edging" +20> } +21> } +22> ; +1->Emitted(2, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(12, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(12, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(12, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(12, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(12, 29) + SourceIndex(0) +8 >Emitted(2, 31) Source(12, 38) + SourceIndex(0) +9 >Emitted(2, 33) Source(12, 40) + SourceIndex(0) +10>Emitted(2, 39) Source(12, 46) + SourceIndex(0) +11>Emitted(2, 41) Source(12, 48) + SourceIndex(0) +12>Emitted(2, 43) Source(12, 50) + SourceIndex(0) +13>Emitted(2, 50) Source(12, 57) + SourceIndex(0) +14>Emitted(2, 52) Source(12, 59) + SourceIndex(0) +15>Emitted(2, 62) Source(12, 69) + SourceIndex(0) +16>Emitted(2, 64) Source(12, 71) + SourceIndex(0) +17>Emitted(2, 73) Source(12, 80) + SourceIndex(0) +18>Emitted(2, 75) Source(12, 82) + SourceIndex(0) +19>Emitted(2, 83) Source(12, 90) + SourceIndex(0) +20>Emitted(2, 85) Source(12, 92) + SourceIndex(0) +21>Emitted(2, 87) Source(12, 94) + SourceIndex(0) +22>Emitted(2, 88) Source(12, 95) + SourceIndex(0) +--- +>>>var _a = robotA.skills, _b = _a === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _a, _c = _b.primary, primaryA = _c === void 0 ? "noSkill" : _c, _d = _b.secondary, secondaryA = _d === void 0 ? "noSkill" : _d; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + >var { + > +2 >skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } +3 > +4 > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "noSkill" +7 > +8 > primary: primaryA = "noSkill" +9 > , + > +10> secondary: secondaryA = "noSkill" +11> +12> secondary: secondaryA = "noSkill" +13> + > } = { primary: "noSkill", secondary: "noSkill" } + > } = robotA; +1->Emitted(3, 1) Source(15, 5) + SourceIndex(0) +2 >Emitted(3, 23) Source(18, 53) + SourceIndex(0) +3 >Emitted(3, 25) Source(15, 5) + SourceIndex(0) +4 >Emitted(3, 95) Source(18, 53) + SourceIndex(0) +5 >Emitted(3, 97) Source(16, 9) + SourceIndex(0) +6 >Emitted(3, 112) Source(16, 38) + SourceIndex(0) +7 >Emitted(3, 114) Source(16, 9) + SourceIndex(0) +8 >Emitted(3, 155) Source(16, 38) + SourceIndex(0) +9 >Emitted(3, 157) Source(17, 9) + SourceIndex(0) +10>Emitted(3, 174) Source(17, 42) + SourceIndex(0) +11>Emitted(3, 176) Source(17, 9) + SourceIndex(0) +12>Emitted(3, 219) Source(17, 42) + SourceIndex(0) +13>Emitted(3, 220) Source(19, 12) + SourceIndex(0) +--- +>>>var _e = robotB.name, nameB = _e === void 0 ? "noNameSpecified" : _e, _f = robotB.skills, _g = _f === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _f, _h = _g.primary, primaryB = _h === void 0 ? "noSkill" : _h, _j = _g.secondary, secondaryB = _j === void 0 ? "noSkill" : _j; +1-> +2 >^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + >var { + > +2 >name: nameB = "noNameSpecified" +3 > +4 > name: nameB = "noNameSpecified" +5 > , + > +6 > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } +7 > +8 > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> primary: primaryB = "noSkill" +11> +12> primary: primaryB = "noSkill" +13> , + > +14> secondary: secondaryB = "noSkill" +15> +16> secondary: secondaryB = "noSkill" +17> + > } = { primary: "noSkill", secondary: "noSkill" } + > } = robotB; +1->Emitted(4, 1) Source(21, 5) + SourceIndex(0) +2 >Emitted(4, 21) Source(21, 36) + SourceIndex(0) +3 >Emitted(4, 23) Source(21, 5) + SourceIndex(0) +4 >Emitted(4, 69) Source(21, 36) + SourceIndex(0) +5 >Emitted(4, 71) Source(22, 5) + SourceIndex(0) +6 >Emitted(4, 89) Source(25, 53) + SourceIndex(0) +7 >Emitted(4, 91) Source(22, 5) + SourceIndex(0) +8 >Emitted(4, 161) Source(25, 53) + SourceIndex(0) +9 >Emitted(4, 163) Source(23, 9) + SourceIndex(0) +10>Emitted(4, 178) Source(23, 38) + SourceIndex(0) +11>Emitted(4, 180) Source(23, 9) + SourceIndex(0) +12>Emitted(4, 221) Source(23, 38) + SourceIndex(0) +13>Emitted(4, 223) Source(24, 9) + SourceIndex(0) +14>Emitted(4, 240) Source(24, 42) + SourceIndex(0) +15>Emitted(4, 242) Source(24, 9) + SourceIndex(0) +16>Emitted(4, 285) Source(24, 42) + SourceIndex(0) +17>Emitted(4, 286) Source(26, 12) + SourceIndex(0) +--- +>>>var _k = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }, _l = _k.name, nameC = _l === void 0 ? "noNameSpecified" : _l, _m = _k.skills, _o = _m === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _m, _p = _o.primary, primaryB = _p === void 0 ? "noSkill" : _p, _q = _o.secondary, secondaryB = _q === void 0 ? "noSkill" : _q; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^^^^^^^^^ +18> ^^ +19> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +20> ^ +1-> + > +2 > +3 > var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + > } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } +4 > +5 > name: nameC = "noNameSpecified" +6 > +7 > name: nameC = "noNameSpecified" +8 > , + > +9 > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } +10> +11> skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } +12> +13> primary: primaryB = "noSkill" +14> +15> primary: primaryB = "noSkill" +16> , + > +17> secondary: secondaryB = "noSkill" +18> +19> secondary: secondaryB = "noSkill" +20> + > } = { primary: "noSkill", secondary: "noSkill" } + > } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +1->Emitted(5, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(27, 1) + SourceIndex(0) +3 >Emitted(5, 88) Source(33, 90) + SourceIndex(0) +4 >Emitted(5, 90) Source(28, 5) + SourceIndex(0) +5 >Emitted(5, 102) Source(28, 36) + SourceIndex(0) +6 >Emitted(5, 104) Source(28, 5) + SourceIndex(0) +7 >Emitted(5, 150) Source(28, 36) + SourceIndex(0) +8 >Emitted(5, 152) Source(29, 5) + SourceIndex(0) +9 >Emitted(5, 166) Source(32, 53) + SourceIndex(0) +10>Emitted(5, 168) Source(29, 5) + SourceIndex(0) +11>Emitted(5, 238) Source(32, 53) + SourceIndex(0) +12>Emitted(5, 240) Source(30, 9) + SourceIndex(0) +13>Emitted(5, 255) Source(30, 38) + SourceIndex(0) +14>Emitted(5, 257) Source(30, 9) + SourceIndex(0) +15>Emitted(5, 298) Source(30, 38) + SourceIndex(0) +16>Emitted(5, 300) Source(31, 9) + SourceIndex(0) +17>Emitted(5, 317) Source(31, 42) + SourceIndex(0) +18>Emitted(5, 319) Source(31, 9) + SourceIndex(0) +19>Emitted(5, 362) Source(31, 42) + SourceIndex(0) +20>Emitted(5, 363) Source(33, 91) + SourceIndex(0) +--- +>>>if (nameB == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameB +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(6, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(6, 3) Source(35, 3) + SourceIndex(0) +3 >Emitted(6, 4) Source(35, 4) + SourceIndex(0) +4 >Emitted(6, 5) Source(35, 5) + SourceIndex(0) +5 >Emitted(6, 10) Source(35, 10) + SourceIndex(0) +6 >Emitted(6, 14) Source(35, 14) + SourceIndex(0) +7 >Emitted(6, 19) Source(35, 19) + SourceIndex(0) +8 >Emitted(6, 20) Source(35, 20) + SourceIndex(0) +9 >Emitted(6, 21) Source(35, 21) + SourceIndex(0) +10>Emitted(6, 22) Source(35, 22) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(7, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(7, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(7, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(7, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(7, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(7, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(7, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(7, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^-> +1 > + > +2 >} +1 >Emitted(8, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(8, 2) Source(37, 2) + SourceIndex(0) +--- +>>>else { +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >else +3 > +4 > { +1->Emitted(9, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(38, 5) + SourceIndex(0) +3 >Emitted(9, 6) Source(38, 6) + SourceIndex(0) +4 >Emitted(9, 7) Source(38, 7) + SourceIndex(0) +--- +>>> console.log(nameC); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > nameC +7 > ) +8 > ; +1->Emitted(10, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(10, 22) Source(39, 22) + SourceIndex(0) +7 >Emitted(10, 23) Source(39, 23) + SourceIndex(0) +8 >Emitted(10, 24) Source(39, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(40, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(40, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols new file mode 100644 index 00000000000..a9a3a91f824 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.symbols @@ -0,0 +1,127 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 3, 17)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 4, 17)) + + primary?: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 5, 13)) + + secondary?: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 6, 25)) + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 10, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 10, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 10, 36)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 10, 46)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 10, 65)) + +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 11, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 11, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 11, 38)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 11, 48)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 11, 69)) + +var { + skills: { +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 4, 17)) + + primary: primaryA = "noSkill", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 5, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 14, 13)) + + secondary: secondaryA = "noSkill" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 6, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 15, 38)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 17, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 17, 29)) + +} = robotA; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 10, 3)) + +var { + name: nameB = "noNameSpecified", +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 3, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 19, 5)) + + skills: { +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 4, 17)) + + primary: primaryB = "noSkill", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 5, 13)) +>primaryB : Symbol(primaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 21, 13), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 28, 13)) + + secondary: secondaryB = "noSkill" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 6, 25)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 22, 38), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 29, 38)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 24, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 24, 29)) + +} = robotB; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 11, 3)) + +var { + name: nameC = "noNameSpecified", +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 3, 17)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 26, 5)) + + skills: { +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 4, 17)) + + primary: primaryB = "noSkill", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 5, 13)) +>primaryB : Symbol(primaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 21, 13), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 28, 13)) + + secondary: secondaryB = "noSkill" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 6, 25)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 22, 38), Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 29, 38)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 31, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 31, 29)) + +} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 32, 12)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 32, 27)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 32, 37)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 32, 56)) + +if (nameB == nameB) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 19, 5)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 19, 5)) + + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 26, 5)) +} +else { + console.log(nameC); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 0, 22)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts, 26, 5)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types new file mode 100644 index 00000000000..e3fdec19339 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.types @@ -0,0 +1,163 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } + + primary?: string; +>primary : string + + secondary?: string; +>secondary : string + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +>robotB : Robot +>Robot : Robot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + +var { + skills: { +>skills : any + + primary: primaryA = "noSkill", +>primary : any +>primaryA : string +>"noSkill" : string + + secondary: secondaryA = "noSkill" +>secondary : any +>secondaryA : string +>"noSkill" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} = robotA; +>robotA : Robot + +var { + name: nameB = "noNameSpecified", +>name : any +>nameB : string +>"noNameSpecified" : string + + skills: { +>skills : any + + primary: primaryB = "noSkill", +>primary : any +>primaryB : string +>"noSkill" : string + + secondary: secondaryB = "noSkill" +>secondary : any +>secondaryB : string +>"noSkill" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} = robotB; +>robotB : Robot + +var { + name: nameC = "noNameSpecified", +>name : any +>nameC : string +>"noNameSpecified" : string + + skills: { +>skills : any + + primary: primaryB = "noSkill", +>primary : any +>primaryB : string +>"noSkill" : string + + secondary: secondaryB = "noSkill" +>secondary : any +>secondaryB : string +>"noSkill" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : Robot +>Robot : Robot +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + +if (nameB == nameB) { +>nameB == nameB : boolean +>nameB : string +>nameB : string + + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} +else { + console.log(nameC); +>console.log(nameC) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameC : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.ts new file mode 100644 index 00000000000..b95e7e5464a --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementDefaultValues.ts @@ -0,0 +1,20 @@ +// @sourcemap: true +interface Robot { + name: string; + skill: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; +var robotB: Robot = { name: "trimmer", skill: "trimming" }; +var { name: nameA = "" } = robotA; +var { name: nameB = "", skill: skillB = "" } = robotB; +var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; +if (nameA == nameB) { + console.log(skillB); +} +else { + console.log(nameC); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts new file mode 100644 index 00000000000..95eda6f2050 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts @@ -0,0 +1,41 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; + +var { + skills: { + primary: primaryA = "noSkill", + secondary: secondaryA = "noSkill" + } = { primary: "noSkill", secondary: "noSkill" } +} = robotA; +var { + name: nameB = "noNameSpecified", + skills: { + primary: primaryB = "noSkill", + secondary: secondaryB = "noSkill" + } = { primary: "noSkill", secondary: "noSkill" } +} = robotB; +var { + name: nameC = "noNameSpecified", + skills: { + primary: primaryB = "noSkill", + secondary: secondaryB = "noSkill" + } = { primary: "noSkill", secondary: "noSkill" } +} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + +if (nameB == nameB) { + console.log(nameC); +} +else { + console.log(nameC); +} \ No newline at end of file From 321062a4d449079e7071a47d78c7d583d99c6a9c Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 11 Dec 2015 10:59:46 -0800 Subject: [PATCH 059/164] Test case for variable destructuring statement with array binding pattern and with default values --- ...atementArrayBindingPatternDefaultValues.js | 34 ++ ...entArrayBindingPatternDefaultValues.js.map | 2 + ...yBindingPatternDefaultValues.sourcemap.txt | 342 ++++++++++++++++ ...ntArrayBindingPatternDefaultValues.symbols | 56 +++ ...mentArrayBindingPatternDefaultValues.types | 90 +++++ ...tementArrayBindingPatternDefaultValues2.js | 31 ++ ...ntArrayBindingPatternDefaultValues2.js.map | 2 + ...BindingPatternDefaultValues2.sourcemap.txt | 377 ++++++++++++++++++ ...tArrayBindingPatternDefaultValues2.symbols | 52 +++ ...entArrayBindingPatternDefaultValues2.types | 97 +++++ ...atementArrayBindingPatternDefaultValues.ts | 20 + ...tementArrayBindingPatternDefaultValues2.ts | 18 + 12 files changed, 1121 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js new file mode 100644 index 00000000000..8cc61944e76 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js @@ -0,0 +1,34 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts] +declare var console: { + log(msg: string): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; + +let [, nameA = "noName"] = robotA; +let [numberB = -1] = robotB; +let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; + +let [numberC2 = -1] = [3, "edging", "Trimming edges"]; +let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; + +let [numberA3 = -1, ...robotAInfo] = robotA; + +if (nameA == nameA2) { + console.log(skillA2); +} + +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var _a = robotA[1], nameA = _a === void 0 ? "noName" : _a; +var _b = robotB[0], numberB = _b === void 0 ? -1 : _b; +var _c = robotA[0], numberA2 = _c === void 0 ? -1 : _c, _d = robotA[1], nameA2 = _d === void 0 ? "noName" : _d, _e = robotA[2], skillA2 = _e === void 0 ? "noSkill" : _e; +var _f = [3, "edging", "Trimming edges"][0], numberC2 = _f === void 0 ? -1 : _f; +var _g = [3, "edging", "Trimming edges"], _h = _g[0], numberC = _h === void 0 ? -1 : _h, _j = _g[1], nameC = _j === void 0 ? "noName" : _j, _k = _g[2], skillC = _k === void 0 ? "noSkill" : _k; +var _l = robotA[0], numberA3 = _l === void 0 ? -1 : _l, robotAInfo = robotA.slice(1); +if (nameA == nameA2) { + console.log(skillA2); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..ce017fbbbcd --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAExC,kBAAgB,EAAhB,qCAAgB,CAAW;AAC7B,kBAAY,EAAZ,iCAAY,CAAW;AACvB,kBAAa,EAAb,kCAAa,EAAE,cAAiB,EAAjB,sCAAiB,EAAE,cAAmB,EAAnB,wCAAmB,CAAW;AAEhE,2CAAa,EAAb,kCAAa,CAAoC;AACtD,IAAA,oCAA0F,EAArF,UAAY,EAAZ,iCAAY,EAAE,UAAgB,EAAhB,qCAAgB,EAAE,UAAkB,EAAlB,uCAAkB,CAAoC;AAEtF,kBAAa,EAAb,kCAAa,EAAE,4BAAa,CAAW;AAE5C,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..9df44518ca1 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,342 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: string): void; + >} + >type Robot = [number, string, string]; + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(5, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(5, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(5, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(5, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(5, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(5, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(5, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(5, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(5, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(5, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(6, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(6, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(6, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(6, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(6, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(6, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(6, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(6, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(6, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(6, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(6, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(6, 48) + SourceIndex(0) +--- +>>>var _a = robotA[1], nameA = _a === void 0 ? "noName" : _a; +1-> +2 >^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +1-> + > + >let [, +2 >nameA = "noName" +3 > +4 > nameA = "noName" +5 > ] = robotA; +1->Emitted(3, 1) Source(8, 8) + SourceIndex(0) +2 >Emitted(3, 19) Source(8, 24) + SourceIndex(0) +3 >Emitted(3, 21) Source(8, 8) + SourceIndex(0) +4 >Emitted(3, 58) Source(8, 24) + SourceIndex(0) +5 >Emitted(3, 59) Source(8, 35) + SourceIndex(0) +--- +>>>var _b = robotB[0], numberB = _b === void 0 ? -1 : _b; +1 > +2 >^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >let [ +2 >numberB = -1 +3 > +4 > numberB = -1 +5 > ] = robotB; +1 >Emitted(4, 1) Source(9, 6) + SourceIndex(0) +2 >Emitted(4, 19) Source(9, 18) + SourceIndex(0) +3 >Emitted(4, 21) Source(9, 6) + SourceIndex(0) +4 >Emitted(4, 54) Source(9, 18) + SourceIndex(0) +5 >Emitted(4, 55) Source(9, 29) + SourceIndex(0) +--- +>>>var _c = robotA[0], numberA2 = _c === void 0 ? -1 : _c, _d = robotA[1], nameA2 = _d === void 0 ? "noName" : _d, _e = robotA[2], skillA2 = _e === void 0 ? "noSkill" : _e; +1-> +2 >^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^ +1-> + >let [ +2 >numberA2 = -1 +3 > +4 > numberA2 = -1 +5 > , +6 > nameA2 = "noName" +7 > +8 > nameA2 = "noName" +9 > , +10> skillA2 = "noSkill" +11> +12> skillA2 = "noSkill" +13> ] = robotA; +1->Emitted(5, 1) Source(10, 6) + SourceIndex(0) +2 >Emitted(5, 19) Source(10, 19) + SourceIndex(0) +3 >Emitted(5, 21) Source(10, 6) + SourceIndex(0) +4 >Emitted(5, 55) Source(10, 19) + SourceIndex(0) +5 >Emitted(5, 57) Source(10, 21) + SourceIndex(0) +6 >Emitted(5, 71) Source(10, 38) + SourceIndex(0) +7 >Emitted(5, 73) Source(10, 21) + SourceIndex(0) +8 >Emitted(5, 111) Source(10, 38) + SourceIndex(0) +9 >Emitted(5, 113) Source(10, 40) + SourceIndex(0) +10>Emitted(5, 127) Source(10, 59) + SourceIndex(0) +11>Emitted(5, 129) Source(10, 40) + SourceIndex(0) +12>Emitted(5, 169) Source(10, 59) + SourceIndex(0) +13>Emitted(5, 170) Source(10, 70) + SourceIndex(0) +--- +>>>var _f = [3, "edging", "Trimming edges"][0], numberC2 = _f === void 0 ? -1 : _f; +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + >let [ +2 >numberC2 = -1 +3 > +4 > numberC2 = -1 +5 > ] = [3, "edging", "Trimming edges"]; +1 >Emitted(6, 1) Source(12, 6) + SourceIndex(0) +2 >Emitted(6, 44) Source(12, 19) + SourceIndex(0) +3 >Emitted(6, 46) Source(12, 6) + SourceIndex(0) +4 >Emitted(6, 80) Source(12, 19) + SourceIndex(0) +5 >Emitted(6, 81) Source(12, 55) + SourceIndex(0) +--- +>>>var _g = [3, "edging", "Trimming edges"], _h = _g[0], numberC = _h === void 0 ? -1 : _h, _j = _g[1], nameC = _j === void 0 ? "noName" : _j, _k = _g[2], skillC = _k === void 0 ? "noSkill" : _k; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^ +1-> + > +2 > +3 > let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"] +4 > +5 > numberC = -1 +6 > +7 > numberC = -1 +8 > , +9 > nameC = "noName" +10> +11> nameC = "noName" +12> , +13> skillC = "noSkill" +14> +15> skillC = "noSkill" +16> ] = [3, "edging", "Trimming edges"]; +1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(13, 1) + SourceIndex(0) +3 >Emitted(7, 41) Source(13, 91) + SourceIndex(0) +4 >Emitted(7, 43) Source(13, 6) + SourceIndex(0) +5 >Emitted(7, 53) Source(13, 18) + SourceIndex(0) +6 >Emitted(7, 55) Source(13, 6) + SourceIndex(0) +7 >Emitted(7, 88) Source(13, 18) + SourceIndex(0) +8 >Emitted(7, 90) Source(13, 20) + SourceIndex(0) +9 >Emitted(7, 100) Source(13, 36) + SourceIndex(0) +10>Emitted(7, 102) Source(13, 20) + SourceIndex(0) +11>Emitted(7, 139) Source(13, 36) + SourceIndex(0) +12>Emitted(7, 141) Source(13, 38) + SourceIndex(0) +13>Emitted(7, 151) Source(13, 56) + SourceIndex(0) +14>Emitted(7, 153) Source(13, 38) + SourceIndex(0) +15>Emitted(7, 192) Source(13, 56) + SourceIndex(0) +16>Emitted(7, 193) Source(13, 92) + SourceIndex(0) +--- +>>>var _l = robotA[0], numberA3 = _l === void 0 ? -1 : _l, robotAInfo = robotA.slice(1); +1 > +2 >^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +1 > + > + >let [ +2 >numberA3 = -1 +3 > +4 > numberA3 = -1 +5 > , +6 > ...robotAInfo +7 > ] = robotA; +1 >Emitted(8, 1) Source(15, 6) + SourceIndex(0) +2 >Emitted(8, 19) Source(15, 19) + SourceIndex(0) +3 >Emitted(8, 21) Source(15, 6) + SourceIndex(0) +4 >Emitted(8, 55) Source(15, 19) + SourceIndex(0) +5 >Emitted(8, 57) Source(15, 21) + SourceIndex(0) +6 >Emitted(8, 85) Source(15, 34) + SourceIndex(0) +7 >Emitted(8, 86) Source(15, 45) + SourceIndex(0) +--- +>>>if (nameA == nameA2) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameA2 +8 > ) +9 > +10> { +1 >Emitted(9, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(9, 3) Source(17, 3) + SourceIndex(0) +3 >Emitted(9, 4) Source(17, 4) + SourceIndex(0) +4 >Emitted(9, 5) Source(17, 5) + SourceIndex(0) +5 >Emitted(9, 10) Source(17, 10) + SourceIndex(0) +6 >Emitted(9, 14) Source(17, 14) + SourceIndex(0) +7 >Emitted(9, 20) Source(17, 20) + SourceIndex(0) +8 >Emitted(9, 21) Source(17, 21) + SourceIndex(0) +9 >Emitted(9, 22) Source(17, 22) + SourceIndex(0) +10>Emitted(9, 23) Source(17, 23) + SourceIndex(0) +--- +>>> console.log(skillA2); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillA2 +7 > ) +8 > ; +1->Emitted(10, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(18, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(18, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(18, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(18, 17) + SourceIndex(0) +6 >Emitted(10, 24) Source(18, 24) + SourceIndex(0) +7 >Emitted(10, 25) Source(18, 25) + SourceIndex(0) +8 >Emitted(10, 26) Source(18, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(19, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..1800b3bd03c --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.symbols @@ -0,0 +1,56 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 2, 1)) + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 4, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 2, 1)) + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 5, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 2, 1)) + +let [, nameA = "noName"] = robotA; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 7, 6)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 4, 3)) + +let [numberB = -1] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 8, 5)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 5, 3)) + +let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 9, 5)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 9, 19)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 9, 38)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 4, 3)) + +let [numberC2 = -1] = [3, "edging", "Trimming edges"]; +>numberC2 : Symbol(numberC2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 11, 5)) + +let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; +>numberC : Symbol(numberC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 12, 5)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 12, 18)) +>skillC : Symbol(skillC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 12, 36)) + +let [numberA3 = -1, ...robotAInfo] = robotA; +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 14, 5)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 14, 19)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 4, 3)) + +if (nameA == nameA2) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 7, 6)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 9, 19)) + + console.log(skillA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 0, 22)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts, 9, 38)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types new file mode 100644 index 00000000000..2dad459725e --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.types @@ -0,0 +1,90 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +let [, nameA = "noName"] = robotA; +> : undefined +>nameA : string +>"noName" : string +>robotA : [number, string, string] + +let [numberB = -1] = robotB; +>numberB : number +>-1 : number +>1 : number +>robotB : [number, string, string] + +let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"noName" : string +>skillA2 : string +>"noSkill" : string +>robotA : [number, string, string] + +let [numberC2 = -1] = [3, "edging", "Trimming edges"]; +>numberC2 : number +>-1 : number +>1 : number +>[3, "edging", "Trimming edges"] : [number, string, string] +>3 : number +>"edging" : string +>"Trimming edges" : string + +let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; +>numberC : number +>-1 : number +>1 : number +>nameC : string +>"noName" : string +>skillC : string +>"noSkill" : string +>[3, "edging", "Trimming edges"] : [number, string, string] +>3 : number +>"edging" : string +>"Trimming edges" : string + +let [numberA3 = -1, ...robotAInfo] = robotA; +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>robotA : [number, string, string] + +if (nameA == nameA2) { +>nameA == nameA2 : boolean +>nameA : string +>nameA2 : string + + console.log(skillA2); +>console.log(skillA2) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillA2 : string +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js new file mode 100644 index 00000000000..b20e0be4fe0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js @@ -0,0 +1,31 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts] +declare var console: { + log(msg: string): void; +} +type MultiSkilledRobot = [string, string[]]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let [, skillA = ["noSkill", "noSkill"]] = multiRobotA; +let [nameMB = "noName" ] = multiRobotB; +let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + +let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; +let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + +if (nameMB == nameMA) { + console.log(skillA[0] + skillA[1]); +} + +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js] +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var _a = multiRobotA[1], skillA = _a === void 0 ? ["noSkill", "noSkill"] : _a; +var _b = multiRobotB[0], nameMB = _b === void 0 ? "noName" : _b; +var _c = multiRobotA[0], nameMA = _c === void 0 ? "noName" : _c, _d = multiRobotA[1], _e = _d === void 0 ? ["noSkill", "noSkill"] : _d, _f = _e[0], primarySkillA = _f === void 0 ? "noSkill" : _f, _g = _e[1], secondarySkillA = _g === void 0 ? "noSkill" : _g; +var _h = ["roomba", ["vaccum", "mopping"]][0], nameMC = _h === void 0 ? "noName" : _h; +var _j = ["roomba", ["vaccum", "mopping"]], _k = _j[0], nameMC2 = _k === void 0 ? "noName" : _k, _l = _j[1], _m = _l === void 0 ? ["noSkill", "noSkill"] : _l, _o = _m[0], primarySkillC = _o === void 0 ? "noSkill" : _o, _p = _m[1], secondarySkillC = _p === void 0 ? "noSkill" : _p; +if (nameMB == nameMA) { + console.log(skillA[0] + skillA[1]); +} +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map new file mode 100644 index 00000000000..11ca67c19ad --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts"],"names":[],"mappings":"AAIA,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElE,uBAA+B,EAA/B,oDAA+B,CAAgB;AACjD,uBAAiB,EAAjB,sCAAiB,CAAiB;AAClC,uBAAiB,EAAjB,sCAAiB,EAAE,mBAAiF,EAAjF,gDAAiF,EAAhF,UAAyB,EAAzB,8CAAyB,EAAE,UAA2B,EAA3B,gDAA2B,CAA0C;AAEpH,6CAAiB,EAAjB,sCAAiB,CAAuC;AAC7D,IAAA,sCAA+I,EAA1I,UAAkB,EAAlB,uCAAkB,EAAE,UAAiF,EAAjF,gDAAiF,EAAhF,UAAyB,EAAzB,8CAAyB,EAAE,UAA2B,EAA3B,gDAA2B,CAAgE;AAEhJ,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.sourcemap.txt new file mode 100644 index 00000000000..30f2ee65592 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.sourcemap.txt @@ -0,0 +1,377 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js +mapUrl: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js +sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts +------------------------------------------------------------------- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1 >declare var console: { + > log(msg: string): void; + >} + >type MultiSkilledRobot = [string, string[]]; + > +2 >var +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 16) Source(5, 16) + SourceIndex(0) +4 >Emitted(1, 19) Source(5, 38) + SourceIndex(0) +5 >Emitted(1, 20) Source(5, 39) + SourceIndex(0) +6 >Emitted(1, 27) Source(5, 46) + SourceIndex(0) +7 >Emitted(1, 29) Source(5, 48) + SourceIndex(0) +8 >Emitted(1, 30) Source(5, 49) + SourceIndex(0) +9 >Emitted(1, 38) Source(5, 57) + SourceIndex(0) +10>Emitted(1, 40) Source(5, 59) + SourceIndex(0) +11>Emitted(1, 42) Source(5, 61) + SourceIndex(0) +12>Emitted(1, 43) Source(5, 62) + SourceIndex(0) +13>Emitted(1, 44) Source(5, 63) + SourceIndex(0) +14>Emitted(1, 45) Source(5, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >var +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(2, 1) Source(6, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(6, 5) + SourceIndex(0) +3 >Emitted(2, 16) Source(6, 16) + SourceIndex(0) +4 >Emitted(2, 19) Source(6, 38) + SourceIndex(0) +5 >Emitted(2, 20) Source(6, 39) + SourceIndex(0) +6 >Emitted(2, 29) Source(6, 48) + SourceIndex(0) +7 >Emitted(2, 31) Source(6, 50) + SourceIndex(0) +8 >Emitted(2, 32) Source(6, 51) + SourceIndex(0) +9 >Emitted(2, 42) Source(6, 61) + SourceIndex(0) +10>Emitted(2, 44) Source(6, 63) + SourceIndex(0) +11>Emitted(2, 52) Source(6, 71) + SourceIndex(0) +12>Emitted(2, 53) Source(6, 72) + SourceIndex(0) +13>Emitted(2, 54) Source(6, 73) + SourceIndex(0) +14>Emitted(2, 55) Source(6, 74) + SourceIndex(0) +--- +>>>var _a = multiRobotA[1], skillA = _a === void 0 ? ["noSkill", "noSkill"] : _a; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +1-> + > + >let [, +2 >skillA = ["noSkill", "noSkill"] +3 > +4 > skillA = ["noSkill", "noSkill"] +5 > ] = multiRobotA; +1->Emitted(3, 1) Source(8, 8) + SourceIndex(0) +2 >Emitted(3, 24) Source(8, 39) + SourceIndex(0) +3 >Emitted(3, 26) Source(8, 8) + SourceIndex(0) +4 >Emitted(3, 78) Source(8, 39) + SourceIndex(0) +5 >Emitted(3, 79) Source(8, 55) + SourceIndex(0) +--- +>>>var _b = multiRobotB[0], nameMB = _b === void 0 ? "noName" : _b; +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >let [ +2 >nameMB = "noName" +3 > +4 > nameMB = "noName" +5 > ] = multiRobotB; +1 >Emitted(4, 1) Source(9, 6) + SourceIndex(0) +2 >Emitted(4, 24) Source(9, 23) + SourceIndex(0) +3 >Emitted(4, 26) Source(9, 6) + SourceIndex(0) +4 >Emitted(4, 64) Source(9, 23) + SourceIndex(0) +5 >Emitted(4, 65) Source(9, 40) + SourceIndex(0) +--- +>>>var _c = multiRobotA[0], nameMA = _c === void 0 ? "noName" : _c, _d = multiRobotA[1], _e = _d === void 0 ? ["noSkill", "noSkill"] : _d, _f = _e[0], primarySkillA = _f === void 0 ? "noSkill" : _f, _g = _e[1], secondarySkillA = _g === void 0 ? "noSkill" : _g; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^ +1-> + >let [ +2 >nameMA = "noName" +3 > +4 > nameMA = "noName" +5 > , +6 > [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"] +7 > +8 > [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"] +9 > +10> primarySkillA = "noSkill" +11> +12> primarySkillA = "noSkill" +13> , +14> secondarySkillA = "noSkill" +15> +16> secondarySkillA = "noSkill" +17> ] = ["noSkill", "noSkill"]] = multiRobotA; +1->Emitted(5, 1) Source(10, 6) + SourceIndex(0) +2 >Emitted(5, 24) Source(10, 23) + SourceIndex(0) +3 >Emitted(5, 26) Source(10, 6) + SourceIndex(0) +4 >Emitted(5, 64) Source(10, 23) + SourceIndex(0) +5 >Emitted(5, 66) Source(10, 25) + SourceIndex(0) +6 >Emitted(5, 85) Source(10, 106) + SourceIndex(0) +7 >Emitted(5, 87) Source(10, 25) + SourceIndex(0) +8 >Emitted(5, 135) Source(10, 106) + SourceIndex(0) +9 >Emitted(5, 137) Source(10, 26) + SourceIndex(0) +10>Emitted(5, 147) Source(10, 51) + SourceIndex(0) +11>Emitted(5, 149) Source(10, 26) + SourceIndex(0) +12>Emitted(5, 195) Source(10, 51) + SourceIndex(0) +13>Emitted(5, 197) Source(10, 53) + SourceIndex(0) +14>Emitted(5, 207) Source(10, 80) + SourceIndex(0) +15>Emitted(5, 209) Source(10, 53) + SourceIndex(0) +16>Emitted(5, 257) Source(10, 80) + SourceIndex(0) +17>Emitted(5, 258) Source(10, 122) + SourceIndex(0) +--- +>>>var _h = ["roomba", ["vaccum", "mopping"]][0], nameMC = _h === void 0 ? "noName" : _h; +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + >let [ +2 >nameMC = "noName" +3 > +4 > nameMC = "noName" +5 > ] = ["roomba", ["vaccum", "mopping"]]; +1 >Emitted(6, 1) Source(12, 6) + SourceIndex(0) +2 >Emitted(6, 46) Source(12, 23) + SourceIndex(0) +3 >Emitted(6, 48) Source(12, 6) + SourceIndex(0) +4 >Emitted(6, 86) Source(12, 23) + SourceIndex(0) +5 >Emitted(6, 87) Source(12, 62) + SourceIndex(0) +--- +>>>var _j = ["roomba", ["vaccum", "mopping"]], _k = _j[0], nameMC2 = _k === void 0 ? "noName" : _k, _l = _j[1], _m = _l === void 0 ? ["noSkill", "noSkill"] : _l, _o = _m[0], primarySkillC = _o === void 0 ? "noSkill" : _o, _p = _m[1], secondarySkillC = _p === void 0 ? "noSkill" : _p; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^^ +18> ^^ +19> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +20> ^ +1-> + > +2 > +3 > let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]] +4 > +5 > nameMC2 = "noName" +6 > +7 > nameMC2 = "noName" +8 > , +9 > [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"] +10> +11> [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"] +12> +13> primarySkillC = "noSkill" +14> +15> primarySkillC = "noSkill" +16> , +17> secondarySkillC = "noSkill" +18> +19> secondarySkillC = "noSkill" +20> ] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; +1->Emitted(7, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(13, 1) + SourceIndex(0) +3 >Emitted(7, 43) Source(13, 144) + SourceIndex(0) +4 >Emitted(7, 45) Source(13, 6) + SourceIndex(0) +5 >Emitted(7, 55) Source(13, 24) + SourceIndex(0) +6 >Emitted(7, 57) Source(13, 6) + SourceIndex(0) +7 >Emitted(7, 96) Source(13, 24) + SourceIndex(0) +8 >Emitted(7, 98) Source(13, 26) + SourceIndex(0) +9 >Emitted(7, 108) Source(13, 107) + SourceIndex(0) +10>Emitted(7, 110) Source(13, 26) + SourceIndex(0) +11>Emitted(7, 158) Source(13, 107) + SourceIndex(0) +12>Emitted(7, 160) Source(13, 27) + SourceIndex(0) +13>Emitted(7, 170) Source(13, 52) + SourceIndex(0) +14>Emitted(7, 172) Source(13, 27) + SourceIndex(0) +15>Emitted(7, 218) Source(13, 52) + SourceIndex(0) +16>Emitted(7, 220) Source(13, 54) + SourceIndex(0) +17>Emitted(7, 230) Source(13, 81) + SourceIndex(0) +18>Emitted(7, 232) Source(13, 54) + SourceIndex(0) +19>Emitted(7, 280) Source(13, 81) + SourceIndex(0) +20>Emitted(7, 281) Source(13, 145) + SourceIndex(0) +--- +>>>if (nameMB == nameMA) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^^ +6 > ^^^^ +7 > ^^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameMB +6 > == +7 > nameMA +8 > ) +9 > +10> { +1 >Emitted(8, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(8, 3) Source(15, 3) + SourceIndex(0) +3 >Emitted(8, 4) Source(15, 4) + SourceIndex(0) +4 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) +5 >Emitted(8, 11) Source(15, 11) + SourceIndex(0) +6 >Emitted(8, 15) Source(15, 15) + SourceIndex(0) +7 >Emitted(8, 21) Source(15, 21) + SourceIndex(0) +8 >Emitted(8, 22) Source(15, 22) + SourceIndex(0) +9 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +10>Emitted(8, 24) Source(15, 24) + SourceIndex(0) +--- +>>> console.log(skillA[0] + skillA[1]); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +9 > ^ +10> ^^^ +11> ^^^^^^ +12> ^ +13> ^ +14> ^ +15> ^ +16> ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillA +7 > [ +8 > 0 +9 > ] +10> + +11> skillA +12> [ +13> 1 +14> ] +15> ) +16> ; +1->Emitted(9, 5) Source(16, 5) + SourceIndex(0) +2 >Emitted(9, 12) Source(16, 12) + SourceIndex(0) +3 >Emitted(9, 13) Source(16, 13) + SourceIndex(0) +4 >Emitted(9, 16) Source(16, 16) + SourceIndex(0) +5 >Emitted(9, 17) Source(16, 17) + SourceIndex(0) +6 >Emitted(9, 23) Source(16, 23) + SourceIndex(0) +7 >Emitted(9, 24) Source(16, 24) + SourceIndex(0) +8 >Emitted(9, 25) Source(16, 25) + SourceIndex(0) +9 >Emitted(9, 26) Source(16, 26) + SourceIndex(0) +10>Emitted(9, 29) Source(16, 29) + SourceIndex(0) +11>Emitted(9, 35) Source(16, 35) + SourceIndex(0) +12>Emitted(9, 36) Source(16, 36) + SourceIndex(0) +13>Emitted(9, 37) Source(16, 37) + SourceIndex(0) +14>Emitted(9, 38) Source(16, 38) + SourceIndex(0) +15>Emitted(9, 39) Source(16, 39) + SourceIndex(0) +16>Emitted(9, 40) Source(16, 40) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(10, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(10, 2) Source(17, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.symbols new file mode 100644 index 00000000000..76be77a8095 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.symbols @@ -0,0 +1,52 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 1, 8)) +} +type MultiSkilledRobot = [string, string[]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 2, 1)) + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 4, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 2, 1)) + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 5, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 2, 1)) + +let [, skillA = ["noSkill", "noSkill"]] = multiRobotA; +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 7, 6)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 4, 3)) + +let [nameMB = "noName" ] = multiRobotB; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 8, 5)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 5, 3)) + +let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 9, 5)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 9, 25)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 9, 51)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 4, 3)) + +let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; +>nameMC : Symbol(nameMC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 11, 5)) + +let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; +>nameMC2 : Symbol(nameMC2, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 12, 5)) +>primarySkillC : Symbol(primarySkillC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 12, 26)) +>secondarySkillC : Symbol(secondarySkillC, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 12, 52)) + +if (nameMB == nameMA) { +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 8, 5)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 9, 5)) + + console.log(skillA[0] + skillA[1]); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 0, 22)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 7, 6)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts, 7, 6)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.types new file mode 100644 index 00000000000..12215507d4a --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.types @@ -0,0 +1,97 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +type MultiSkilledRobot = [string, string[]]; +>MultiSkilledRobot : [string, string[]] + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, string[]] +>MultiSkilledRobot : [string, string[]] +>["mower", ["mowing", ""]] : [string, string[]] +>"mower" : string +>["mowing", ""] : string[] +>"mowing" : string +>"" : string + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, string[]] +>MultiSkilledRobot : [string, string[]] +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string + +let [, skillA = ["noSkill", "noSkill"]] = multiRobotA; +> : undefined +>skillA : string[] +>["noSkill", "noSkill"] : string[] +>"noSkill" : string +>"noSkill" : string +>multiRobotA : [string, string[]] + +let [nameMB = "noName" ] = multiRobotB; +>nameMB : string +>"noName" : string +>multiRobotB : [string, string[]] + +let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; +>nameMA : string +>"noName" : string +>primarySkillA : string +>"noSkill" : string +>secondarySkillA : string +>"noSkill" : string +>["noSkill", "noSkill"] : [string, string] +>"noSkill" : string +>"noSkill" : string +>multiRobotA : [string, string[]] + +let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; +>nameMC : string +>"noName" : string +>["roomba", ["vaccum", "mopping"]] : [string, string[]] +>"roomba" : string +>["vaccum", "mopping"] : string[] +>"vaccum" : string +>"mopping" : string + +let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; +>nameMC2 : string +>"noName" : string +>primarySkillC : string +>"noSkill" : string +>secondarySkillC : string +>"noSkill" : string +>["noSkill", "noSkill"] : [string, string] +>"noSkill" : string +>"noSkill" : string +>["roomba", ["vaccum", "mopping"]] : [string, [string, string]] +>"roomba" : string +>["vaccum", "mopping"] : [string, string] +>"vaccum" : string +>"mopping" : string + +if (nameMB == nameMA) { +>nameMB == nameMA : boolean +>nameMB : string +>nameMA : string + + console.log(skillA[0] + skillA[1]); +>console.log(skillA[0] + skillA[1]) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skillA[0] + skillA[1] : string +>skillA[0] : string +>skillA : string[] +>0 : number +>skillA[1] : string +>skillA : string[] +>1 : number +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..fb942310389 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts @@ -0,0 +1,20 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; + +let [, nameA = "noName"] = robotA; +let [numberB = -1] = robotB; +let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; + +let [numberC2 = -1] = [3, "edging", "Trimming edges"]; +let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; + +let [numberA3 = -1, ...robotAInfo] = robotA; + +if (nameA == nameA2) { + console.log(skillA2); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..4b4ef07d232 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts @@ -0,0 +1,18 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +type MultiSkilledRobot = [string, string[]]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let [, skillA = ["noSkill", "noSkill"]] = multiRobotA; +let [nameMB = "noName" ] = multiRobotB; +let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + +let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; +let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + +if (nameMB == nameMA) { + console.log(skillA[0] + skillA[1]); +} \ No newline at end of file From e362cb2c722f1ac2c4e520ac6cad8445a7745dc7 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 11 Dec 2015 11:00:55 -0800 Subject: [PATCH 060/164] Test case for array binding pattern destructuring assignment with default values --- ...tementArrayBindingPatternDefaultValues3.js | 97 ++ ...ntArrayBindingPatternDefaultValues3.js.map | 2 + ...BindingPatternDefaultValues3.sourcemap.txt | 1090 +++++++++++++++++ ...tArrayBindingPatternDefaultValues3.symbols | 167 +++ ...entArrayBindingPatternDefaultValues3.types | 361 ++++++ ...tementArrayBindingPatternDefaultValues3.ts | 55 + 6 files changed, 1772 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js new file mode 100644 index 00000000000..deb2680000f --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js @@ -0,0 +1,97 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, string[]]; + +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let nameA: string, numberB: number, nameB: string, skillB: string; +let robotAInfo: (number | string)[]; + +let multiSkillB: string[], nameMB: string, primarySkillB: string, secondarySkillB: string; +let multiRobotAInfo: (string | string[])[]; + +[, nameA = "helloNoName"] = robotA; +[, nameB = "helloNoName"] = getRobotB(); +[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; +[, multiSkillB = []] = multiRobotB; +[, multiSkillB = []] = getMultiRobotB(); +[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; + +[numberB = -1] = robotB; +[numberB = -1] = getRobotB(); +[numberB = -1] = [2, "trimmer", "trimming"]; +[nameMB = "helloNoName"] = multiRobotB; +[nameMB = "helloNoName"] = getMultiRobotB(); +[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + ["trimmer", ["trimming", "edging"]]; + +[numberB = -1, ...robotAInfo] = robotB; +[numberB = -1, ...robotAInfo] = getRobotB(); +[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; + +if (nameA == nameB) { + console.log(skillB); +} + +function getRobotB() { + return robotB; +} + +function getMultiRobotB() { + return multiRobotB; +} + +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var nameA, numberB, nameB, skillB; +var robotAInfo; +var multiSkillB, nameMB, primarySkillB, secondarySkillB; +var multiRobotAInfo; +_a = robotA[1], nameA = _a === void 0 ? "helloNoName" : _a; +_b = getRobotB(), _c = _b[1], nameB = _c === void 0 ? "helloNoName" : _c; +_d = [2, "trimmer", "trimming"], _e = _d[1], nameB = _e === void 0 ? "helloNoName" : _e; +_f = multiRobotB[1], multiSkillB = _f === void 0 ? [] : _f; +_g = getMultiRobotB(), _h = _g[1], multiSkillB = _h === void 0 ? [] : _h; +_j = ["roomba", ["vaccum", "mopping"]], _k = _j[1], multiSkillB = _k === void 0 ? [] : _k; +_l = robotB[0], numberB = _l === void 0 ? -1 : _l; +_m = getRobotB()[0], numberB = _m === void 0 ? -1 : _m; +_o = [2, "trimmer", "trimming"][0], numberB = _o === void 0 ? -1 : _o; +_p = multiRobotB[0], nameMB = _p === void 0 ? "helloNoName" : _p; +_q = getMultiRobotB()[0], nameMB = _q === void 0 ? "helloNoName" : _q; +_r = ["trimmer", ["trimming", "edging"]][0], nameMB = _r === void 0 ? "helloNoName" : _r; +_s = robotB[0], numberB = _s === void 0 ? -1 : _s, _t = robotB[1], nameB = _t === void 0 ? "helloNoName" : _t, _u = robotB[2], skillB = _u === void 0 ? "noSkill" : _u; +_v = getRobotB(), _w = _v[0], numberB = _w === void 0 ? -1 : _w, _x = _v[1], nameB = _x === void 0 ? "helloNoName" : _x, _y = _v[2], skillB = _y === void 0 ? "noSkill" : _y; +_z = [2, "trimmer", "trimming"], _0 = _z[0], numberB = _0 === void 0 ? -1 : _0, _1 = _z[1], nameB = _1 === void 0 ? "helloNoName" : _1, _2 = _z[2], skillB = _2 === void 0 ? "noSkill" : _2; +_3 = multiRobotB[0], nameMB = _3 === void 0 ? "helloNoName" : _3, _4 = multiRobotB[1], _5 = _4 === void 0 ? [] : _4, _6 = _5[0], primarySkillB = _6 === void 0 ? "noSkill" : _6, _7 = _5[1], secondarySkillB = _7 === void 0 ? "noSkill" : _7; +_8 = getMultiRobotB(), _9 = _8[0], nameMB = _9 === void 0 ? "helloNoName" : _9, _10 = _8[1], _11 = _10 === void 0 ? [] : _10, _12 = _11[0], primarySkillB = _12 === void 0 ? "noSkill" : _12, _13 = _11[1], secondarySkillB = _13 === void 0 ? "noSkill" : _13; +_14 = ["trimmer", ["trimming", "edging"]], _15 = _14[0], nameMB = _15 === void 0 ? "helloNoName" : _15, _16 = _14[1], _17 = _16 === void 0 ? [] : _16, _18 = _17[0], primarySkillB = _18 === void 0 ? "noSkill" : _18, _19 = _17[1], secondarySkillB = _19 === void 0 ? "noSkill" : _19; +_20 = robotB[0], numberB = _20 === void 0 ? -1 : _20, robotAInfo = robotB.slice(1); +_21 = getRobotB(), _22 = _21[0], numberB = _22 === void 0 ? -1 : _22, robotAInfo = _21.slice(1); +_23 = [2, "trimmer", "trimming"], _24 = _23[0], numberB = _24 === void 0 ? -1 : _24, robotAInfo = _23.slice(1); +if (nameA == nameB) { + console.log(skillB); +} +function getRobotB() { + return robotB; +} +function getMultiRobotB() { + return multiRobotB; +} +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24; +//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map new file mode 100644 index 00000000000..1b7453826e4 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map] +{"version":3,"file":"sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js","sourceRoot":"","sources":["sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts"],"names":[],"mappings":"AAMA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC/C,IAAI,WAAW,GAAsB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/D,IAAI,WAAW,GAAsB,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEzE,IAAI,KAAa,EAAE,OAAe,EAAE,KAAa,EAAE,MAAc,CAAC;AAClE,IAAI,UAA+B,CAAC;AAEpC,IAAI,WAAqB,EAAE,MAAc,EAAE,aAAqB,EAAE,eAAuB,CAAC;AAC1F,IAAI,eAAsC,CAAC;AAExC,cAAqB,EAArB,0CAAqB,CAAW;AACnC,gBAAuC,EAApC,UAAqB,EAArB,0CAAqB,CAAgB;AACxC,+BAAsD,EAAnD,UAAqB,EAArB,0CAAqB,CAA+B;AACpD,mBAAgB,EAAhB,qCAAgB,CAAgB;AACnC,qBAAuC,EAApC,UAAgB,EAAhB,qCAAgB,CAAqB;AACxC,sCAAwD,EAArD,UAAgB,EAAhB,qCAAgB,CAAsC;AAExD,cAAY,EAAZ,iCAAY,CAAW;AACvB,mBAAY,EAAZ,iCAAY,CAAgB;AAC5B,kCAAY,EAAZ,iCAAY,CAA+B;AAC3C,mBAAsB,EAAtB,2CAAsB,CAAgB;AACtC,wBAAsB,EAAtB,2CAAsB,CAAqB;AAC3C,2CAAsB,EAAtB,2CAAsB,CAAwC;AAE9D,cAAY,EAAZ,iCAAY,EAAE,cAAqB,EAArB,0CAAqB,EAAE,cAAkB,EAAlB,uCAAkB,CAAW;AACnE,gBAAuE,EAAtE,UAAY,EAAZ,iCAAY,EAAE,UAAqB,EAArB,0CAAqB,EAAE,UAAkB,EAAlB,uCAAkB,CAAgB;AACxE,+BAAsF,EAArF,UAAY,EAAZ,iCAAY,EAAE,UAAqB,EAArB,0CAAqB,EAAE,UAAkB,EAAlB,uCAAkB,CAA+B;AACtF,mBAAsB,EAAtB,2CAAsB,EAAE,mBAA6D,EAA7D,4BAA6D,EAA5D,UAAyB,EAAzB,8CAAyB,EAAE,UAA2B,EAA3B,gDAA2B,CAAsB;AACtG,qBAA0G,EAAzG,UAAsB,EAAtB,2CAAsB,EAAE,WAA6D,EAA7D,+BAA6D,EAA5D,YAAyB,EAAzB,gDAAyB,EAAE,YAA2B,EAA3B,kDAA2B,CAA2B;AAC3G,yCACuC,EADtC,YAAsB,EAAtB,6CAAsB,EAAE,YAA6D,EAA7D,+BAA6D,EAA5D,YAAyB,EAAzB,gDAAyB,EAAE,YAA2B,EAA3B,kDAA2B,CACxC;AAEvC,eAAY,EAAZ,mCAAY,EAAE,4BAAa,CAAW;AACvC,iBAA2C,EAA1C,YAAY,EAAZ,mCAAY,EAAE,yBAAa,CAAgB;AAC5C,gCAAiE,EAAhE,YAAY,EAAZ,mCAAY,EAAE,yBAAa,CAAsC;AAElE,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.sourcemap.txt new file mode 100644 index 00000000000..c9784dc30a3 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.sourcemap.txt @@ -0,0 +1,1090 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js +mapUrl: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map +sourceRoot: +sources: sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js +sourceFile:sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, string[]]; + > + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1-> + > +2 >var +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(8, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(8, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(8, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(8, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(8, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(8, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(8, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(8, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(8, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(8, 48) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > +2 >var +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 16) Source(9, 16) + SourceIndex(0) +4 >Emitted(3, 19) Source(9, 38) + SourceIndex(0) +5 >Emitted(3, 20) Source(9, 39) + SourceIndex(0) +6 >Emitted(3, 27) Source(9, 46) + SourceIndex(0) +7 >Emitted(3, 29) Source(9, 48) + SourceIndex(0) +8 >Emitted(3, 30) Source(9, 49) + SourceIndex(0) +9 >Emitted(3, 38) Source(9, 57) + SourceIndex(0) +10>Emitted(3, 40) Source(9, 59) + SourceIndex(0) +11>Emitted(3, 42) Source(9, 61) + SourceIndex(0) +12>Emitted(3, 43) Source(9, 62) + SourceIndex(0) +13>Emitted(3, 44) Source(9, 63) + SourceIndex(0) +14>Emitted(3, 45) Source(9, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >var +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 5) Source(10, 5) + SourceIndex(0) +3 >Emitted(4, 16) Source(10, 16) + SourceIndex(0) +4 >Emitted(4, 19) Source(10, 38) + SourceIndex(0) +5 >Emitted(4, 20) Source(10, 39) + SourceIndex(0) +6 >Emitted(4, 29) Source(10, 48) + SourceIndex(0) +7 >Emitted(4, 31) Source(10, 50) + SourceIndex(0) +8 >Emitted(4, 32) Source(10, 51) + SourceIndex(0) +9 >Emitted(4, 42) Source(10, 61) + SourceIndex(0) +10>Emitted(4, 44) Source(10, 63) + SourceIndex(0) +11>Emitted(4, 52) Source(10, 71) + SourceIndex(0) +12>Emitted(4, 53) Source(10, 72) + SourceIndex(0) +13>Emitted(4, 54) Source(10, 73) + SourceIndex(0) +14>Emitted(4, 55) Source(10, 74) + SourceIndex(0) +--- +>>>var nameA, numberB, nameB, skillB; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^ +1 > + > + > +2 >let +3 > nameA: string +4 > , +5 > numberB: number +6 > , +7 > nameB: string +8 > , +9 > skillB: string +10> ; +1 >Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 10) Source(12, 18) + SourceIndex(0) +4 >Emitted(5, 12) Source(12, 20) + SourceIndex(0) +5 >Emitted(5, 19) Source(12, 35) + SourceIndex(0) +6 >Emitted(5, 21) Source(12, 37) + SourceIndex(0) +7 >Emitted(5, 26) Source(12, 50) + SourceIndex(0) +8 >Emitted(5, 28) Source(12, 52) + SourceIndex(0) +9 >Emitted(5, 34) Source(12, 66) + SourceIndex(0) +10>Emitted(5, 35) Source(12, 67) + SourceIndex(0) +--- +>>>var robotAInfo; +1 > +2 >^^^^ +3 > ^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > robotAInfo: (number | string)[] +4 > ; +1 >Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 15) Source(13, 36) + SourceIndex(0) +4 >Emitted(6, 16) Source(13, 37) + SourceIndex(0) +--- +>>>var multiSkillB, nameMB, primarySkillB, secondarySkillB; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^ +5 > ^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^ +1-> + > + > +2 >let +3 > multiSkillB: string[] +4 > , +5 > nameMB: string +6 > , +7 > primarySkillB: string +8 > , +9 > secondarySkillB: string +10> ; +1->Emitted(7, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(7, 16) Source(15, 26) + SourceIndex(0) +4 >Emitted(7, 18) Source(15, 28) + SourceIndex(0) +5 >Emitted(7, 24) Source(15, 42) + SourceIndex(0) +6 >Emitted(7, 26) Source(15, 44) + SourceIndex(0) +7 >Emitted(7, 39) Source(15, 65) + SourceIndex(0) +8 >Emitted(7, 41) Source(15, 67) + SourceIndex(0) +9 >Emitted(7, 56) Source(15, 90) + SourceIndex(0) +10>Emitted(7, 57) Source(15, 91) + SourceIndex(0) +--- +>>>var multiRobotAInfo; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^^^^^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > multiRobotAInfo: (string | string[])[] +4 > ; +1 >Emitted(8, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(16, 5) + SourceIndex(0) +3 >Emitted(8, 20) Source(16, 43) + SourceIndex(0) +4 >Emitted(8, 21) Source(16, 44) + SourceIndex(0) +--- +>>>_a = robotA[1], nameA = _a === void 0 ? "helloNoName" : _a; +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^-> +1-> + > + >[, +2 >nameA = "helloNoName" +3 > +4 > nameA = "helloNoName" +5 > ] = robotA; +1->Emitted(9, 1) Source(18, 4) + SourceIndex(0) +2 >Emitted(9, 15) Source(18, 25) + SourceIndex(0) +3 >Emitted(9, 17) Source(18, 4) + SourceIndex(0) +4 >Emitted(9, 59) Source(18, 25) + SourceIndex(0) +5 >Emitted(9, 60) Source(18, 36) + SourceIndex(0) +--- +>>>_b = getRobotB(), _c = _b[1], nameB = _c === void 0 ? "helloNoName" : _c; +1-> +2 >^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^-> +1-> + > +2 >[, nameB = "helloNoName"] = getRobotB() +3 > +4 > nameB = "helloNoName" +5 > +6 > nameB = "helloNoName" +7 > ] = getRobotB(); +1->Emitted(10, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(10, 17) Source(19, 40) + SourceIndex(0) +3 >Emitted(10, 19) Source(19, 4) + SourceIndex(0) +4 >Emitted(10, 29) Source(19, 25) + SourceIndex(0) +5 >Emitted(10, 31) Source(19, 4) + SourceIndex(0) +6 >Emitted(10, 73) Source(19, 25) + SourceIndex(0) +7 >Emitted(10, 74) Source(19, 41) + SourceIndex(0) +--- +>>>_d = [2, "trimmer", "trimming"], _e = _d[1], nameB = _e === void 0 ? "helloNoName" : _e; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +1-> + > +2 >[, nameB = "helloNoName"] = [2, "trimmer", "trimming"] +3 > +4 > nameB = "helloNoName" +5 > +6 > nameB = "helloNoName" +7 > ] = [2, "trimmer", "trimming"]; +1->Emitted(11, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(11, 32) Source(20, 55) + SourceIndex(0) +3 >Emitted(11, 34) Source(20, 4) + SourceIndex(0) +4 >Emitted(11, 44) Source(20, 25) + SourceIndex(0) +5 >Emitted(11, 46) Source(20, 4) + SourceIndex(0) +6 >Emitted(11, 88) Source(20, 25) + SourceIndex(0) +7 >Emitted(11, 89) Source(20, 56) + SourceIndex(0) +--- +>>>_f = multiRobotB[1], multiSkillB = _f === void 0 ? [] : _f; +1 > +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^-> +1 > + >[, +2 >multiSkillB = [] +3 > +4 > multiSkillB = [] +5 > ] = multiRobotB; +1 >Emitted(12, 1) Source(21, 4) + SourceIndex(0) +2 >Emitted(12, 20) Source(21, 20) + SourceIndex(0) +3 >Emitted(12, 22) Source(21, 4) + SourceIndex(0) +4 >Emitted(12, 59) Source(21, 20) + SourceIndex(0) +5 >Emitted(12, 60) Source(21, 36) + SourceIndex(0) +--- +>>>_g = getMultiRobotB(), _h = _g[1], multiSkillB = _h === void 0 ? [] : _h; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >[, multiSkillB = []] = getMultiRobotB() +3 > +4 > multiSkillB = [] +5 > +6 > multiSkillB = [] +7 > ] = getMultiRobotB(); +1->Emitted(13, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(13, 22) Source(22, 40) + SourceIndex(0) +3 >Emitted(13, 24) Source(22, 4) + SourceIndex(0) +4 >Emitted(13, 34) Source(22, 20) + SourceIndex(0) +5 >Emitted(13, 36) Source(22, 4) + SourceIndex(0) +6 >Emitted(13, 73) Source(22, 20) + SourceIndex(0) +7 >Emitted(13, 74) Source(22, 41) + SourceIndex(0) +--- +>>>_j = ["roomba", ["vaccum", "mopping"]], _k = _j[1], multiSkillB = _k === void 0 ? [] : _k; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +1-> + > +2 >[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]] +3 > +4 > multiSkillB = [] +5 > +6 > multiSkillB = [] +7 > ] = ["roomba", ["vaccum", "mopping"]]; +1->Emitted(14, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(14, 39) Source(23, 57) + SourceIndex(0) +3 >Emitted(14, 41) Source(23, 4) + SourceIndex(0) +4 >Emitted(14, 51) Source(23, 20) + SourceIndex(0) +5 >Emitted(14, 53) Source(23, 4) + SourceIndex(0) +6 >Emitted(14, 90) Source(23, 20) + SourceIndex(0) +7 >Emitted(14, 91) Source(23, 58) + SourceIndex(0) +--- +>>>_l = robotB[0], numberB = _l === void 0 ? -1 : _l; +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^-> +1 > + > + >[ +2 >numberB = -1 +3 > +4 > numberB = -1 +5 > ] = robotB; +1 >Emitted(15, 1) Source(25, 2) + SourceIndex(0) +2 >Emitted(15, 15) Source(25, 14) + SourceIndex(0) +3 >Emitted(15, 17) Source(25, 2) + SourceIndex(0) +4 >Emitted(15, 50) Source(25, 14) + SourceIndex(0) +5 >Emitted(15, 51) Source(25, 25) + SourceIndex(0) +--- +>>>_m = getRobotB()[0], numberB = _m === void 0 ? -1 : _m; +1-> +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^-> +1-> + >[ +2 >numberB = -1 +3 > +4 > numberB = -1 +5 > ] = getRobotB(); +1->Emitted(16, 1) Source(26, 2) + SourceIndex(0) +2 >Emitted(16, 20) Source(26, 14) + SourceIndex(0) +3 >Emitted(16, 22) Source(26, 2) + SourceIndex(0) +4 >Emitted(16, 55) Source(26, 14) + SourceIndex(0) +5 >Emitted(16, 56) Source(26, 30) + SourceIndex(0) +--- +>>>_o = [2, "trimmer", "trimming"][0], numberB = _o === void 0 ? -1 : _o; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +1-> + >[ +2 >numberB = -1 +3 > +4 > numberB = -1 +5 > ] = [2, "trimmer", "trimming"]; +1->Emitted(17, 1) Source(27, 2) + SourceIndex(0) +2 >Emitted(17, 35) Source(27, 14) + SourceIndex(0) +3 >Emitted(17, 37) Source(27, 2) + SourceIndex(0) +4 >Emitted(17, 70) Source(27, 14) + SourceIndex(0) +5 >Emitted(17, 71) Source(27, 45) + SourceIndex(0) +--- +>>>_p = multiRobotB[0], nameMB = _p === void 0 ? "helloNoName" : _p; +1 > +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^-> +1 > + >[ +2 >nameMB = "helloNoName" +3 > +4 > nameMB = "helloNoName" +5 > ] = multiRobotB; +1 >Emitted(18, 1) Source(28, 2) + SourceIndex(0) +2 >Emitted(18, 20) Source(28, 24) + SourceIndex(0) +3 >Emitted(18, 22) Source(28, 2) + SourceIndex(0) +4 >Emitted(18, 65) Source(28, 24) + SourceIndex(0) +5 >Emitted(18, 66) Source(28, 40) + SourceIndex(0) +--- +>>>_q = getMultiRobotB()[0], nameMB = _q === void 0 ? "helloNoName" : _q; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^-> +1-> + >[ +2 >nameMB = "helloNoName" +3 > +4 > nameMB = "helloNoName" +5 > ] = getMultiRobotB(); +1->Emitted(19, 1) Source(29, 2) + SourceIndex(0) +2 >Emitted(19, 25) Source(29, 24) + SourceIndex(0) +3 >Emitted(19, 27) Source(29, 2) + SourceIndex(0) +4 >Emitted(19, 70) Source(29, 24) + SourceIndex(0) +5 >Emitted(19, 71) Source(29, 45) + SourceIndex(0) +--- +>>>_r = ["trimmer", ["trimming", "edging"]][0], nameMB = _r === void 0 ? "helloNoName" : _r; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + >[ +2 >nameMB = "helloNoName" +3 > +4 > nameMB = "helloNoName" +5 > ] = ["trimmer", ["trimming", "edging"]]; +1->Emitted(20, 1) Source(30, 2) + SourceIndex(0) +2 >Emitted(20, 44) Source(30, 24) + SourceIndex(0) +3 >Emitted(20, 46) Source(30, 2) + SourceIndex(0) +4 >Emitted(20, 89) Source(30, 24) + SourceIndex(0) +5 >Emitted(20, 90) Source(30, 64) + SourceIndex(0) +--- +>>>_s = robotB[0], numberB = _s === void 0 ? -1 : _s, _t = robotB[1], nameB = _t === void 0 ? "helloNoName" : _t, _u = robotB[2], skillB = _u === void 0 ? "noSkill" : _u; +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^ +14> ^^^^^^^-> +1-> + > + >[ +2 >numberB = -1 +3 > +4 > numberB = -1 +5 > , +6 > nameB = "helloNoName" +7 > +8 > nameB = "helloNoName" +9 > , +10> skillB = "noSkill" +11> +12> skillB = "noSkill" +13> ] = robotB; +1->Emitted(21, 1) Source(32, 2) + SourceIndex(0) +2 >Emitted(21, 15) Source(32, 14) + SourceIndex(0) +3 >Emitted(21, 17) Source(32, 2) + SourceIndex(0) +4 >Emitted(21, 50) Source(32, 14) + SourceIndex(0) +5 >Emitted(21, 52) Source(32, 16) + SourceIndex(0) +6 >Emitted(21, 66) Source(32, 37) + SourceIndex(0) +7 >Emitted(21, 68) Source(32, 16) + SourceIndex(0) +8 >Emitted(21, 110) Source(32, 37) + SourceIndex(0) +9 >Emitted(21, 112) Source(32, 39) + SourceIndex(0) +10>Emitted(21, 126) Source(32, 57) + SourceIndex(0) +11>Emitted(21, 128) Source(32, 39) + SourceIndex(0) +12>Emitted(21, 167) Source(32, 57) + SourceIndex(0) +13>Emitted(21, 168) Source(32, 68) + SourceIndex(0) +--- +>>>_v = getRobotB(), _w = _v[0], numberB = _w === void 0 ? -1 : _w, _x = _v[1], nameB = _x === void 0 ? "helloNoName" : _x, _y = _v[2], skillB = _y === void 0 ? "noSkill" : _y; +1-> +2 >^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^ +16> ^^^^^^^^^^^^^^^^-> +1-> + > +2 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB() +3 > +4 > numberB = -1 +5 > +6 > numberB = -1 +7 > , +8 > nameB = "helloNoName" +9 > +10> nameB = "helloNoName" +11> , +12> skillB = "noSkill" +13> +14> skillB = "noSkill" +15> ] = getRobotB(); +1->Emitted(22, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(22, 17) Source(33, 72) + SourceIndex(0) +3 >Emitted(22, 19) Source(33, 2) + SourceIndex(0) +4 >Emitted(22, 29) Source(33, 14) + SourceIndex(0) +5 >Emitted(22, 31) Source(33, 2) + SourceIndex(0) +6 >Emitted(22, 64) Source(33, 14) + SourceIndex(0) +7 >Emitted(22, 66) Source(33, 16) + SourceIndex(0) +8 >Emitted(22, 76) Source(33, 37) + SourceIndex(0) +9 >Emitted(22, 78) Source(33, 16) + SourceIndex(0) +10>Emitted(22, 120) Source(33, 37) + SourceIndex(0) +11>Emitted(22, 122) Source(33, 39) + SourceIndex(0) +12>Emitted(22, 132) Source(33, 57) + SourceIndex(0) +13>Emitted(22, 134) Source(33, 39) + SourceIndex(0) +14>Emitted(22, 173) Source(33, 57) + SourceIndex(0) +15>Emitted(22, 174) Source(33, 73) + SourceIndex(0) +--- +>>>_z = [2, "trimmer", "trimming"], _0 = _z[0], numberB = _0 === void 0 ? -1 : _0, _1 = _z[1], nameB = _1 === void 0 ? "helloNoName" : _1, _2 = _z[2], skillB = _2 === void 0 ? "noSkill" : _2; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"] +3 > +4 > numberB = -1 +5 > +6 > numberB = -1 +7 > , +8 > nameB = "helloNoName" +9 > +10> nameB = "helloNoName" +11> , +12> skillB = "noSkill" +13> +14> skillB = "noSkill" +15> ] = [2, "trimmer", "trimming"]; +1->Emitted(23, 1) Source(34, 1) + SourceIndex(0) +2 >Emitted(23, 32) Source(34, 87) + SourceIndex(0) +3 >Emitted(23, 34) Source(34, 2) + SourceIndex(0) +4 >Emitted(23, 44) Source(34, 14) + SourceIndex(0) +5 >Emitted(23, 46) Source(34, 2) + SourceIndex(0) +6 >Emitted(23, 79) Source(34, 14) + SourceIndex(0) +7 >Emitted(23, 81) Source(34, 16) + SourceIndex(0) +8 >Emitted(23, 91) Source(34, 37) + SourceIndex(0) +9 >Emitted(23, 93) Source(34, 16) + SourceIndex(0) +10>Emitted(23, 135) Source(34, 37) + SourceIndex(0) +11>Emitted(23, 137) Source(34, 39) + SourceIndex(0) +12>Emitted(23, 147) Source(34, 57) + SourceIndex(0) +13>Emitted(23, 149) Source(34, 39) + SourceIndex(0) +14>Emitted(23, 188) Source(34, 57) + SourceIndex(0) +15>Emitted(23, 189) Source(34, 88) + SourceIndex(0) +--- +>>>_3 = multiRobotB[0], nameMB = _3 === void 0 ? "helloNoName" : _3, _4 = multiRobotB[1], _5 = _4 === void 0 ? [] : _4, _6 = _5[0], primarySkillB = _6 === void 0 ? "noSkill" : _6, _7 = _5[1], secondarySkillB = _7 === void 0 ? "noSkill" : _7; +1-> +2 >^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^ +18> ^^^^^^^^^^^^^^^^^^-> +1-> + >[ +2 >nameMB = "helloNoName" +3 > +4 > nameMB = "helloNoName" +5 > , +6 > [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] +7 > +8 > [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] +9 > +10> primarySkillB = "noSkill" +11> +12> primarySkillB = "noSkill" +13> , +14> secondarySkillB = "noSkill" +15> +16> secondarySkillB = "noSkill" +17> ] = []] = multiRobotB; +1->Emitted(24, 1) Source(35, 2) + SourceIndex(0) +2 >Emitted(24, 20) Source(35, 24) + SourceIndex(0) +3 >Emitted(24, 22) Source(35, 2) + SourceIndex(0) +4 >Emitted(24, 65) Source(35, 24) + SourceIndex(0) +5 >Emitted(24, 67) Source(35, 26) + SourceIndex(0) +6 >Emitted(24, 86) Source(35, 87) + SourceIndex(0) +7 >Emitted(24, 88) Source(35, 26) + SourceIndex(0) +8 >Emitted(24, 116) Source(35, 87) + SourceIndex(0) +9 >Emitted(24, 118) Source(35, 27) + SourceIndex(0) +10>Emitted(24, 128) Source(35, 52) + SourceIndex(0) +11>Emitted(24, 130) Source(35, 27) + SourceIndex(0) +12>Emitted(24, 176) Source(35, 52) + SourceIndex(0) +13>Emitted(24, 178) Source(35, 54) + SourceIndex(0) +14>Emitted(24, 188) Source(35, 81) + SourceIndex(0) +15>Emitted(24, 190) Source(35, 54) + SourceIndex(0) +16>Emitted(24, 238) Source(35, 81) + SourceIndex(0) +17>Emitted(24, 239) Source(35, 103) + SourceIndex(0) +--- +>>>_8 = getMultiRobotB(), _9 = _8[0], nameMB = _9 === void 0 ? "helloNoName" : _9, _10 = _8[1], _11 = _10 === void 0 ? [] : _10, _12 = _11[0], primarySkillB = _12 === void 0 ? "noSkill" : _12, _13 = _11[1], secondarySkillB = _13 === void 0 ? "noSkill" : _13; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^ +20> ^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB() +3 > +4 > nameMB = "helloNoName" +5 > +6 > nameMB = "helloNoName" +7 > , +8 > [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] +9 > +10> [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] +11> +12> primarySkillB = "noSkill" +13> +14> primarySkillB = "noSkill" +15> , +16> secondarySkillB = "noSkill" +17> +18> secondarySkillB = "noSkill" +19> ] = []] = getMultiRobotB(); +1->Emitted(25, 1) Source(36, 1) + SourceIndex(0) +2 >Emitted(25, 22) Source(36, 107) + SourceIndex(0) +3 >Emitted(25, 24) Source(36, 2) + SourceIndex(0) +4 >Emitted(25, 34) Source(36, 24) + SourceIndex(0) +5 >Emitted(25, 36) Source(36, 2) + SourceIndex(0) +6 >Emitted(25, 79) Source(36, 24) + SourceIndex(0) +7 >Emitted(25, 81) Source(36, 26) + SourceIndex(0) +8 >Emitted(25, 92) Source(36, 87) + SourceIndex(0) +9 >Emitted(25, 94) Source(36, 26) + SourceIndex(0) +10>Emitted(25, 125) Source(36, 87) + SourceIndex(0) +11>Emitted(25, 127) Source(36, 27) + SourceIndex(0) +12>Emitted(25, 139) Source(36, 52) + SourceIndex(0) +13>Emitted(25, 141) Source(36, 27) + SourceIndex(0) +14>Emitted(25, 189) Source(36, 52) + SourceIndex(0) +15>Emitted(25, 191) Source(36, 54) + SourceIndex(0) +16>Emitted(25, 203) Source(36, 81) + SourceIndex(0) +17>Emitted(25, 205) Source(36, 54) + SourceIndex(0) +18>Emitted(25, 255) Source(36, 81) + SourceIndex(0) +19>Emitted(25, 256) Source(36, 108) + SourceIndex(0) +--- +>>>_14 = ["trimmer", ["trimming", "edging"]], _15 = _14[0], nameMB = _15 === void 0 ? "helloNoName" : _15, _16 = _14[1], _17 = _16 === void 0 ? [] : _16, _18 = _17[0], primarySkillB = _18 === void 0 ? "noSkill" : _18, _19 = _17[1], secondarySkillB = _19 === void 0 ? "noSkill" : _19; +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^ +1-> + > +2 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + > ["trimmer", ["trimming", "edging"]] +3 > +4 > nameMB = "helloNoName" +5 > +6 > nameMB = "helloNoName" +7 > , +8 > [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] +9 > +10> [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] +11> +12> primarySkillB = "noSkill" +13> +14> primarySkillB = "noSkill" +15> , +16> secondarySkillB = "noSkill" +17> +18> secondarySkillB = "noSkill" +19> ] = []] = + > ["trimmer", ["trimming", "edging"]]; +1->Emitted(26, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(26, 42) Source(38, 40) + SourceIndex(0) +3 >Emitted(26, 44) Source(37, 2) + SourceIndex(0) +4 >Emitted(26, 56) Source(37, 24) + SourceIndex(0) +5 >Emitted(26, 58) Source(37, 2) + SourceIndex(0) +6 >Emitted(26, 103) Source(37, 24) + SourceIndex(0) +7 >Emitted(26, 105) Source(37, 26) + SourceIndex(0) +8 >Emitted(26, 117) Source(37, 87) + SourceIndex(0) +9 >Emitted(26, 119) Source(37, 26) + SourceIndex(0) +10>Emitted(26, 150) Source(37, 87) + SourceIndex(0) +11>Emitted(26, 152) Source(37, 27) + SourceIndex(0) +12>Emitted(26, 164) Source(37, 52) + SourceIndex(0) +13>Emitted(26, 166) Source(37, 27) + SourceIndex(0) +14>Emitted(26, 214) Source(37, 52) + SourceIndex(0) +15>Emitted(26, 216) Source(37, 54) + SourceIndex(0) +16>Emitted(26, 228) Source(37, 81) + SourceIndex(0) +17>Emitted(26, 230) Source(37, 54) + SourceIndex(0) +18>Emitted(26, 280) Source(37, 81) + SourceIndex(0) +19>Emitted(26, 281) Source(38, 41) + SourceIndex(0) +--- +>>>_20 = robotB[0], numberB = _20 === void 0 ? -1 : _20, robotAInfo = robotB.slice(1); +1 > +2 >^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^ +8 > ^^^^^^^^^^^^^^-> +1 > + > + >[ +2 >numberB = -1 +3 > +4 > numberB = -1 +5 > , +6 > ...robotAInfo +7 > ] = robotB; +1 >Emitted(27, 1) Source(40, 2) + SourceIndex(0) +2 >Emitted(27, 16) Source(40, 14) + SourceIndex(0) +3 >Emitted(27, 18) Source(40, 2) + SourceIndex(0) +4 >Emitted(27, 53) Source(40, 14) + SourceIndex(0) +5 >Emitted(27, 55) Source(40, 16) + SourceIndex(0) +6 >Emitted(27, 83) Source(40, 29) + SourceIndex(0) +7 >Emitted(27, 84) Source(40, 40) + SourceIndex(0) +--- +>>>_21 = getRobotB(), _22 = _21[0], numberB = _22 === void 0 ? -1 : _22, robotAInfo = _21.slice(1); +1-> +2 >^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^ +10> ^^^^^^^^^^^^^^^^-> +1-> + > +2 >[numberB = -1, ...robotAInfo] = getRobotB() +3 > +4 > numberB = -1 +5 > +6 > numberB = -1 +7 > , +8 > ...robotAInfo +9 > ] = getRobotB(); +1->Emitted(28, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(28, 18) Source(41, 44) + SourceIndex(0) +3 >Emitted(28, 20) Source(41, 2) + SourceIndex(0) +4 >Emitted(28, 32) Source(41, 14) + SourceIndex(0) +5 >Emitted(28, 34) Source(41, 2) + SourceIndex(0) +6 >Emitted(28, 69) Source(41, 14) + SourceIndex(0) +7 >Emitted(28, 71) Source(41, 16) + SourceIndex(0) +8 >Emitted(28, 96) Source(41, 29) + SourceIndex(0) +9 >Emitted(28, 97) Source(41, 45) + SourceIndex(0) +--- +>>>_23 = [2, "trimmer", "trimming"], _24 = _23[0], numberB = _24 === void 0 ? -1 : _24, robotAInfo = _23.slice(1); +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^ +1-> + > +2 >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"] +3 > +4 > numberB = -1 +5 > +6 > numberB = -1 +7 > , +8 > ...robotAInfo +9 > ] = [2, "trimmer", "trimming"]; +1->Emitted(29, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(29, 33) Source(42, 66) + SourceIndex(0) +3 >Emitted(29, 35) Source(42, 2) + SourceIndex(0) +4 >Emitted(29, 47) Source(42, 14) + SourceIndex(0) +5 >Emitted(29, 49) Source(42, 2) + SourceIndex(0) +6 >Emitted(29, 84) Source(42, 14) + SourceIndex(0) +7 >Emitted(29, 86) Source(42, 16) + SourceIndex(0) +8 >Emitted(29, 111) Source(42, 29) + SourceIndex(0) +9 >Emitted(29, 112) Source(42, 67) + SourceIndex(0) +--- +>>>if (nameA == nameB) { +1 > +2 >^^ +3 > ^ +4 > ^ +5 > ^^^^^ +6 > ^^^^ +7 > ^^^^^ +8 > ^ +9 > ^ +10> ^ +11> ^^^^-> +1 > + > + > +2 >if +3 > +4 > ( +5 > nameA +6 > == +7 > nameB +8 > ) +9 > +10> { +1 >Emitted(30, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(30, 3) Source(44, 3) + SourceIndex(0) +3 >Emitted(30, 4) Source(44, 4) + SourceIndex(0) +4 >Emitted(30, 5) Source(44, 5) + SourceIndex(0) +5 >Emitted(30, 10) Source(44, 10) + SourceIndex(0) +6 >Emitted(30, 14) Source(44, 14) + SourceIndex(0) +7 >Emitted(30, 19) Source(44, 19) + SourceIndex(0) +8 >Emitted(30, 20) Source(44, 20) + SourceIndex(0) +9 >Emitted(30, 21) Source(44, 21) + SourceIndex(0) +10>Emitted(30, 22) Source(44, 22) + SourceIndex(0) +--- +>>> console.log(skillB); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > skillB +7 > ) +8 > ; +1->Emitted(31, 5) Source(45, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(45, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(45, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(45, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(45, 17) + SourceIndex(0) +6 >Emitted(31, 23) Source(45, 23) + SourceIndex(0) +7 >Emitted(31, 24) Source(45, 24) + SourceIndex(0) +8 >Emitted(31, 25) Source(45, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(46, 2) + SourceIndex(0) +--- +>>>function getRobotB() { +1-> +2 >^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(33, 1) Source(48, 1) + SourceIndex(0) +--- +>>> return robotB; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobotB() { + > +2 > return +3 > +4 > robotB +5 > ; +1->Emitted(34, 5) Source(49, 5) + SourceIndex(0) +2 >Emitted(34, 11) Source(49, 11) + SourceIndex(0) +3 >Emitted(34, 12) Source(49, 12) + SourceIndex(0) +4 >Emitted(34, 18) Source(49, 18) + SourceIndex(0) +5 >Emitted(34, 19) Source(49, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(50, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(50, 2) + SourceIndex(0) +--- +>>>function getMultiRobotB() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(36, 1) Source(52, 1) + SourceIndex(0) +--- +>>> return multiRobotB; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobotB() { + > +2 > return +3 > +4 > multiRobotB +5 > ; +1->Emitted(37, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(37, 11) Source(53, 11) + SourceIndex(0) +3 >Emitted(37, 12) Source(53, 12) + SourceIndex(0) +4 >Emitted(37, 23) Source(53, 23) + SourceIndex(0) +5 >Emitted(37, 24) Source(53, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(54, 2) + SourceIndex(0) +--- +>>>var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24; +>>>//# sourceMappingURL=sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.symbols b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.symbols new file mode 100644 index 00000000000..c4d6b52fc4a --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.symbols @@ -0,0 +1,167 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 2, 1)) + +type MultiSkilledRobot = [string, string[]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 3, 38)) + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 2, 1)) + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 7, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 2, 1)) + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 8, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 3, 38)) + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 9, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 3, 38)) + +let nameA: string, numberB: number, nameB: string, skillB: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 3)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 50)) + +let robotAInfo: (number | string)[]; +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 12, 3)) + +let multiSkillB: string[], nameMB: string, primarySkillB: string, secondarySkillB: string; +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 3)) +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 42)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 65)) + +let multiRobotAInfo: (string | string[])[]; +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 15, 3)) + +[, nameA = "helloNoName"] = robotA; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 6, 3)) + +[, nameB = "helloNoName"] = getRobotB(); +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 45, 1)) + +[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) + +[, multiSkillB = []] = multiRobotB; +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 9, 3)) + +[, multiSkillB = []] = getMultiRobotB(); +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 3)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 49, 1)) + +[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; +>multiSkillB : Symbol(multiSkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 3)) + +[numberB = -1] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 7, 3)) + +[numberB = -1] = getRobotB(); +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 45, 1)) + +[numberB = -1] = [2, "trimmer", "trimming"]; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) + +[nameMB = "helloNoName"] = multiRobotB; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 9, 3)) + +[nameMB = "helloNoName"] = getMultiRobotB(); +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 49, 1)) + +[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 50)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 7, 3)) + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 50)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 45, 1)) + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 50)) + +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 42)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 65)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 9, 3)) + +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 42)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 65)) +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 49, 1)) + +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 26)) +>primarySkillB : Symbol(primarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 42)) +>secondarySkillB : Symbol(secondarySkillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 14, 65)) + + ["trimmer", ["trimming", "edging"]]; + +[numberB = -1, ...robotAInfo] = robotB; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 12, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 7, 3)) + +[numberB = -1, ...robotAInfo] = getRobotB(); +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 12, 3)) +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 45, 1)) + +[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 18)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 12, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 2, 1)) + +if (nameA == nameB) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 3)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 35)) + + console.log(skillB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 0, 22)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 11, 50)) +} + +function getRobotB() { +>getRobotB : Symbol(getRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 45, 1)) + + return robotB; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 7, 3)) +} + +function getMultiRobotB() { +>getMultiRobotB : Symbol(getMultiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 49, 1)) + + return multiRobotB; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts, 9, 3)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types new file mode 100644 index 00000000000..7edf6c63e4a --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.types @@ -0,0 +1,361 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, string[]]; +>MultiSkilledRobot : [string, string[]] + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +var robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, string[]] +>MultiSkilledRobot : [string, string[]] +>["mower", ["mowing", ""]] : [string, string[]] +>"mower" : string +>["mowing", ""] : string[] +>"mowing" : string +>"" : string + +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, string[]] +>MultiSkilledRobot : [string, string[]] +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string + +let nameA: string, numberB: number, nameB: string, skillB: string; +>nameA : string +>numberB : number +>nameB : string +>skillB : string + +let robotAInfo: (number | string)[]; +>robotAInfo : (number | string)[] + +let multiSkillB: string[], nameMB: string, primarySkillB: string, secondarySkillB: string; +>multiSkillB : string[] +>nameMB : string +>primarySkillB : string +>secondarySkillB : string + +let multiRobotAInfo: (string | string[])[]; +>multiRobotAInfo : (string | string[])[] + +[, nameA = "helloNoName"] = robotA; +>[, nameA = "helloNoName"] = robotA : [number, string, string] +>[, nameA = "helloNoName"] : [undefined, string] +> : undefined +>nameA = "helloNoName" : string +>nameA : string +>"helloNoName" : string +>robotA : [number, string, string] + +[, nameB = "helloNoName"] = getRobotB(); +>[, nameB = "helloNoName"] = getRobotB() : [number, string, string] +>[, nameB = "helloNoName"] : [undefined, string] +> : undefined +>nameB = "helloNoName" : string +>nameB : string +>"helloNoName" : string +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; +>[, nameB = "helloNoName"] = [2, "trimmer", "trimming"] : [number, string, string] +>[, nameB = "helloNoName"] : [undefined, string] +> : undefined +>nameB = "helloNoName" : string +>nameB : string +>"helloNoName" : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[, multiSkillB = []] = multiRobotB; +>[, multiSkillB = []] = multiRobotB : [string, string[]] +>[, multiSkillB = []] : [undefined, undefined[]] +> : undefined +>multiSkillB = [] : undefined[] +>multiSkillB : string[] +>[] : undefined[] +>multiRobotB : [string, string[]] + +[, multiSkillB = []] = getMultiRobotB(); +>[, multiSkillB = []] = getMultiRobotB() : [string, string[]] +>[, multiSkillB = []] : [undefined, undefined[]] +> : undefined +>multiSkillB = [] : undefined[] +>multiSkillB : string[] +>[] : undefined[] +>getMultiRobotB() : [string, string[]] +>getMultiRobotB : () => [string, string[]] + +[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; +>[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]] : [string, string[]] +>[, multiSkillB = []] : [undefined, undefined[]] +> : undefined +>multiSkillB = [] : undefined[] +>multiSkillB : string[] +>[] : undefined[] +>["roomba", ["vaccum", "mopping"]] : [string, string[]] +>"roomba" : string +>["vaccum", "mopping"] : string[] +>"vaccum" : string +>"mopping" : string + +[numberB = -1] = robotB; +>[numberB = -1] = robotB : [number, string, string] +>[numberB = -1] : [number] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>robotB : [number, string, string] + +[numberB = -1] = getRobotB(); +>[numberB = -1] = getRobotB() : [number, string, string] +>[numberB = -1] : [number] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[numberB = -1] = [2, "trimmer", "trimming"]; +>[numberB = -1] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB = -1] : [number] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[nameMB = "helloNoName"] = multiRobotB; +>[nameMB = "helloNoName"] = multiRobotB : [string, string[]] +>[nameMB = "helloNoName"] : [string] +>nameMB = "helloNoName" : string +>nameMB : string +>"helloNoName" : string +>multiRobotB : [string, string[]] + +[nameMB = "helloNoName"] = getMultiRobotB(); +>[nameMB = "helloNoName"] = getMultiRobotB() : [string, string[]] +>[nameMB = "helloNoName"] : [string] +>nameMB = "helloNoName" : string +>nameMB : string +>"helloNoName" : string +>getMultiRobotB() : [string, string[]] +>getMultiRobotB : () => [string, string[]] + +[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; +>[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]] : [string, string[]] +>[nameMB = "helloNoName"] : [string] +>nameMB = "helloNoName" : string +>nameMB : string +>"helloNoName" : string +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; +>[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB : [number, string, string] +>[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] : [number, string, string] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>nameB = "helloNoName" : string +>nameB : string +>"helloNoName" : string +>skillB = "noSkill" : string +>skillB : string +>"noSkill" : string +>robotB : [number, string, string] + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); +>[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB() : [number, string, string] +>[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] : [number, string, string] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>nameB = "helloNoName" : string +>nameB : string +>"helloNoName" : string +>skillB = "noSkill" : string +>skillB : string +>"noSkill" : string +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; +>[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] : [number, string, string] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>nameB = "helloNoName" : string +>nameB : string +>"helloNoName" : string +>skillB = "noSkill" : string +>skillB : string +>"noSkill" : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB : [string, string[]] +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]] +>nameMB = "helloNoName" : string +>nameMB : string +>"helloNoName" : string +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string] +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string] +>primarySkillB = "noSkill" : string +>primarySkillB : string +>"noSkill" : string +>secondarySkillB = "noSkill" : string +>secondarySkillB : string +>"noSkill" : string +>[] : [string, string] +>multiRobotB : [string, string[]] + +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB() : [string, string[]] +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]] +>nameMB = "helloNoName" : string +>nameMB : string +>"helloNoName" : string +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string] +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string] +>primarySkillB = "noSkill" : string +>primarySkillB : string +>"noSkill" : string +>secondarySkillB = "noSkill" : string +>secondarySkillB : string +>"noSkill" : string +>[] : [string, string] +>getMultiRobotB() : [string, string[]] +>getMultiRobotB : () => [string, string[]] + +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]] +>nameMB = "helloNoName" : string +>nameMB : string +>"helloNoName" : string +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string] +>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string] +>primarySkillB = "noSkill" : string +>primarySkillB : string +>"noSkill" : string +>secondarySkillB = "noSkill" : string +>secondarySkillB : string +>"noSkill" : string +>[] : [string, string] + + ["trimmer", ["trimming", "edging"]]; +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +[numberB = -1, ...robotAInfo] = robotB; +>[numberB = -1, ...robotAInfo] = robotB : [number, string, string] +>[numberB = -1, ...robotAInfo] : (number | string)[] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>robotB : [number, string, string] + +[numberB = -1, ...robotAInfo] = getRobotB(); +>[numberB = -1, ...robotAInfo] = getRobotB() : [number, string, string] +>[numberB = -1, ...robotAInfo] : (number | string)[] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>getRobotB() : [number, string, string] +>getRobotB : () => [number, string, string] + +[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; +>[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB = -1, ...robotAInfo] : (number | string)[] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>[2, "trimmer", "trimming"] : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +if (nameA == nameB) { +>nameA == nameB : boolean +>nameA : string +>nameB : string + + console.log(skillB); +>console.log(skillB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>skillB : string +} + +function getRobotB() { +>getRobotB : () => [number, string, string] + + return robotB; +>robotB : [number, string, string] +} + +function getMultiRobotB() { +>getMultiRobotB : () => [string, string[]] + + return multiRobotB; +>multiRobotB : [string, string[]] +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts new file mode 100644 index 00000000000..253d96d4b35 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringVariableStatementArrayBindingPatternDefaultValues3.ts @@ -0,0 +1,55 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, string[]]; + +var robotA: Robot = [1, "mower", "mowing"]; +var robotB: Robot = [2, "trimmer", "trimming"]; +var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + +let nameA: string, numberB: number, nameB: string, skillB: string; +let robotAInfo: (number | string)[]; + +let multiSkillB: string[], nameMB: string, primarySkillB: string, secondarySkillB: string; +let multiRobotAInfo: (string | string[])[]; + +[, nameA = "helloNoName"] = robotA; +[, nameB = "helloNoName"] = getRobotB(); +[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; +[, multiSkillB = []] = multiRobotB; +[, multiSkillB = []] = getMultiRobotB(); +[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; + +[numberB = -1] = robotB; +[numberB = -1] = getRobotB(); +[numberB = -1] = [2, "trimmer", "trimming"]; +[nameMB = "helloNoName"] = multiRobotB; +[nameMB = "helloNoName"] = getMultiRobotB(); +[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; + +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); +[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); +[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + ["trimmer", ["trimming", "edging"]]; + +[numberB = -1, ...robotAInfo] = robotB; +[numberB = -1, ...robotAInfo] = getRobotB(); +[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; + +if (nameA == nameB) { + console.log(skillB); +} + +function getRobotB() { + return robotB; +} + +function getMultiRobotB() { + return multiRobotB; +} \ No newline at end of file From 25c6b168941eb91c216f2540a6bec35f7a8d0c9b Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 11 Dec 2015 13:54:49 -0800 Subject: [PATCH 061/164] Test cases for destructuring with default values in parameter position --- ...NestedObjectBindingPatternDefaultValues.js | 67 ++ ...edObjectBindingPatternDefaultValues.js.map | 2 + ...tBindingPatternDefaultValues.sourcemap.txt | 669 ++++++++++++++++++ ...dObjectBindingPatternDefaultValues.symbols | 143 ++++ ...tedObjectBindingPatternDefaultValues.types | 219 ++++++ ...ameterObjectBindingPatternDefaultValues.js | 53 ++ ...erObjectBindingPatternDefaultValues.js.map | 2 + ...tBindingPatternDefaultValues.sourcemap.txt | 500 +++++++++++++ ...rObjectBindingPatternDefaultValues.symbols | 91 +++ ...terObjectBindingPatternDefaultValues.types | 120 ++++ ...ametertArrayBindingPatternDefaultValues.js | 62 ++ ...ertArrayBindingPatternDefaultValues.js.map | 2 + ...yBindingPatternDefaultValues.sourcemap.txt | 610 ++++++++++++++++ ...rtArrayBindingPatternDefaultValues.symbols | 94 +++ ...tertArrayBindingPatternDefaultValues.types | 156 ++++ ...metertArrayBindingPatternDefaultValues2.js | 52 ++ ...rtArrayBindingPatternDefaultValues2.js.map | 2 + ...BindingPatternDefaultValues2.sourcemap.txt | 512 ++++++++++++++ ...tArrayBindingPatternDefaultValues2.symbols | 80 +++ ...ertArrayBindingPatternDefaultValues2.types | 139 ++++ ...NestedObjectBindingPatternDefaultValues.ts | 44 ++ ...ameterObjectBindingPatternDefaultValues.ts | 29 + ...ametertArrayBindingPatternDefaultValues.ts | 34 + ...metertArrayBindingPatternDefaultValues2.ts | 30 + 24 files changed, 3712 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js new file mode 100644 index 00000000000..b67f5047965 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js @@ -0,0 +1,67 @@ +//// [sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts] +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + +function foo1( + { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }: Robot = robotA) { + console.log(primaryA); +} +function foo2( + { + name: nameC = "name", + skills: { + primary: primaryB = "primary", + secondary: secondaryB = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }: Robot = robotA) { + console.log(secondaryB); +} +function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { + console.log(skills.primary); +} + +foo1(robotA); +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo2(robotA); +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo3(robotA); +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + + +//// [sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js] +var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function foo1(_a) { + var _b = (_a === void 0 ? robotA : _a).skills, _c = _b === void 0 ? { primary: "SomeSkill", secondary: "someSkill" } : _b, _d = _c.primary, primaryA = _d === void 0 ? "primary" : _d, _e = _c.secondary, secondaryA = _e === void 0 ? "secondary" : _e; + console.log(primaryA); +} +function foo2(_a) { + var _b = _a === void 0 ? robotA : _a, _c = _b.name, nameC = _c === void 0 ? "name" : _c, _d = _b.skills, _e = _d === void 0 ? { primary: "SomeSkill", secondary: "someSkill" } : _d, _f = _e.primary, primaryB = _f === void 0 ? "primary" : _f, _g = _e.secondary, secondaryB = _g === void 0 ? "secondary" : _g; + console.log(secondaryB); +} +function foo3(_a) { + var _b = (_a === void 0 ? robotA : _a).skills, skills = _b === void 0 ? { primary: "SomeSkill", secondary: "someSkill" } : _b; + console.log(skills.primary); +} +foo1(robotA); +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +foo2(robotA); +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +foo3(robotA); +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +//# sourceMappingURL=sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..0fdd3c9bcec --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts"],"names":[],"mappings":"AAUA,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AAExF,cACI,EAKiB;QAJb,yCAGoD,EAHpD,0EAGoD,EAFhD,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAmC,EAAnC,6CAAmC;IAG3C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,cACI,EAMiB;QANjB,gCAMiB,EALb,YAAoB,EAApB,mCAAoB,EACpB,cAGoD,EAHpD,0EAGoD,EAFhD,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAmC,EAAnC,6CAAmC;IAG3C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AACD,cAAc,EAA8E;QAA5E,yCAAyD,EAAzD,8EAAyD;IACrE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAErF,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..aca1d58bcac --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,669 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robotA = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +1 >declare var console: { + > log(msg: string): void; + >} + >interface Robot { + > name: string; + > skills: { + > primary?: string; + > secondary?: string; + > }; + >} + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1 >Emitted(1, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(11, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(11, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(11, 21) + SourceIndex(0) +5 >Emitted(1, 16) Source(11, 23) + SourceIndex(0) +6 >Emitted(1, 20) Source(11, 27) + SourceIndex(0) +7 >Emitted(1, 22) Source(11, 29) + SourceIndex(0) +8 >Emitted(1, 29) Source(11, 36) + SourceIndex(0) +9 >Emitted(1, 31) Source(11, 38) + SourceIndex(0) +10>Emitted(1, 37) Source(11, 44) + SourceIndex(0) +11>Emitted(1, 39) Source(11, 46) + SourceIndex(0) +12>Emitted(1, 41) Source(11, 48) + SourceIndex(0) +13>Emitted(1, 48) Source(11, 55) + SourceIndex(0) +14>Emitted(1, 50) Source(11, 57) + SourceIndex(0) +15>Emitted(1, 58) Source(11, 65) + SourceIndex(0) +16>Emitted(1, 60) Source(11, 67) + SourceIndex(0) +17>Emitted(1, 69) Source(11, 76) + SourceIndex(0) +18>Emitted(1, 71) Source(11, 78) + SourceIndex(0) +19>Emitted(1, 77) Source(11, 84) + SourceIndex(0) +20>Emitted(1, 79) Source(11, 86) + SourceIndex(0) +21>Emitted(1, 81) Source(11, 88) + SourceIndex(0) +22>Emitted(1, 82) Source(11, 89) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >function foo1( + > +3 > { + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA +1 >Emitted(2, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(2, 15) Source(14, 5) + SourceIndex(0) +3 >Emitted(2, 17) Source(19, 22) + SourceIndex(0) +--- +>>> var _b = (_a === void 0 ? robotA : _a).skills, _c = _b === void 0 ? { primary: "SomeSkill", secondary: "someSkill" } : _b, _d = _c.primary, primaryA = _d === void 0 ? "primary" : _d, _e = _c.secondary, secondaryA = _e === void 0 ? "secondary" : _e; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } +3 > +4 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , + > +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(3, 9) Source(15, 9) + SourceIndex(0) +2 >Emitted(3, 50) Source(18, 61) + SourceIndex(0) +3 >Emitted(3, 52) Source(15, 9) + SourceIndex(0) +4 >Emitted(3, 126) Source(18, 61) + SourceIndex(0) +5 >Emitted(3, 128) Source(16, 13) + SourceIndex(0) +6 >Emitted(3, 143) Source(16, 42) + SourceIndex(0) +7 >Emitted(3, 145) Source(16, 13) + SourceIndex(0) +8 >Emitted(3, 186) Source(16, 42) + SourceIndex(0) +9 >Emitted(3, 188) Source(17, 13) + SourceIndex(0) +10>Emitted(3, 205) Source(17, 48) + SourceIndex(0) +11>Emitted(3, 207) Source(17, 13) + SourceIndex(0) +12>Emitted(3, 252) Source(17, 48) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(4, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(4, 12) Source(20, 12) + SourceIndex(0) +3 >Emitted(4, 13) Source(20, 13) + SourceIndex(0) +4 >Emitted(4, 16) Source(20, 16) + SourceIndex(0) +5 >Emitted(4, 17) Source(20, 17) + SourceIndex(0) +6 >Emitted(4, 25) Source(20, 25) + SourceIndex(0) +7 >Emitted(4, 26) Source(20, 26) + SourceIndex(0) +8 >Emitted(4, 27) Source(20, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(21, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >function foo2( + > +3 > { + > name: nameC = "name", + > skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA +1->Emitted(6, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(6, 15) Source(23, 5) + SourceIndex(0) +3 >Emitted(6, 17) Source(29, 22) + SourceIndex(0) +--- +>>> var _b = _a === void 0 ? robotA : _a, _c = _b.name, nameC = _c === void 0 ? "name" : _c, _d = _b.skills, _e = _d === void 0 ? { primary: "SomeSkill", secondary: "someSkill" } : _d, _f = _e.primary, primaryB = _f === void 0 ? "primary" : _f, _g = _e.secondary, secondaryB = _g === void 0 ? "secondary" : _g; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name: nameC = "name", + > skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA +3 > +4 > name: nameC = "name" +5 > +6 > name: nameC = "name" +7 > , + > +8 > skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } +9 > +10> skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } +11> +12> primary: primaryB = "primary" +13> +14> primary: primaryB = "primary" +15> , + > +16> secondary: secondaryB = "secondary" +17> +18> secondary: secondaryB = "secondary" +1->Emitted(7, 9) Source(23, 5) + SourceIndex(0) +2 >Emitted(7, 41) Source(29, 22) + SourceIndex(0) +3 >Emitted(7, 43) Source(24, 9) + SourceIndex(0) +4 >Emitted(7, 55) Source(24, 29) + SourceIndex(0) +5 >Emitted(7, 57) Source(24, 9) + SourceIndex(0) +6 >Emitted(7, 92) Source(24, 29) + SourceIndex(0) +7 >Emitted(7, 94) Source(25, 9) + SourceIndex(0) +8 >Emitted(7, 108) Source(28, 61) + SourceIndex(0) +9 >Emitted(7, 110) Source(25, 9) + SourceIndex(0) +10>Emitted(7, 184) Source(28, 61) + SourceIndex(0) +11>Emitted(7, 186) Source(26, 13) + SourceIndex(0) +12>Emitted(7, 201) Source(26, 42) + SourceIndex(0) +13>Emitted(7, 203) Source(26, 13) + SourceIndex(0) +14>Emitted(7, 244) Source(26, 42) + SourceIndex(0) +15>Emitted(7, 246) Source(27, 13) + SourceIndex(0) +16>Emitted(7, 263) Source(27, 48) + SourceIndex(0) +17>Emitted(7, 265) Source(27, 13) + SourceIndex(0) +18>Emitted(7, 310) Source(27, 48) + SourceIndex(0) +--- +>>> console.log(secondaryB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA) { + > +2 > console +3 > . +4 > log +5 > ( +6 > secondaryB +7 > ) +8 > ; +1 >Emitted(8, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(8, 27) Source(30, 27) + SourceIndex(0) +7 >Emitted(8, 28) Source(30, 28) + SourceIndex(0) +8 >Emitted(8, 29) Source(30, 29) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(31, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(31, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >function foo3( +3 > { skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA +1->Emitted(10, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(10, 15) Source(32, 15) + SourceIndex(0) +3 >Emitted(10, 17) Source(32, 93) + SourceIndex(0) +--- +>>> var _b = (_a === void 0 ? robotA : _a).skills, skills = _b === void 0 ? { primary: "SomeSkill", secondary: "someSkill" } : _b; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills = { primary: "SomeSkill", secondary: "someSkill" } +3 > +4 > skills = { primary: "SomeSkill", secondary: "someSkill" } +1->Emitted(11, 9) Source(32, 17) + SourceIndex(0) +2 >Emitted(11, 50) Source(32, 74) + SourceIndex(0) +3 >Emitted(11, 52) Source(32, 17) + SourceIndex(0) +4 >Emitted(11, 130) Source(32, 74) + SourceIndex(0) +--- +>>> console.log(skills.primary); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^^^^^^^ +9 > ^ +10> ^ +1 > }: Robot = robotA) { + > +2 > console +3 > . +4 > log +5 > ( +6 > skills +7 > . +8 > primary +9 > ) +10> ; +1 >Emitted(12, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(12, 23) Source(33, 23) + SourceIndex(0) +7 >Emitted(12, 24) Source(33, 24) + SourceIndex(0) +8 >Emitted(12, 31) Source(33, 31) + SourceIndex(0) +9 >Emitted(12, 32) Source(33, 32) + SourceIndex(0) +10>Emitted(12, 33) Source(33, 33) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(34, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(34, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(14, 1) Source(36, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(36, 5) + SourceIndex(0) +3 >Emitted(14, 6) Source(36, 6) + SourceIndex(0) +4 >Emitted(14, 12) Source(36, 12) + SourceIndex(0) +5 >Emitted(14, 13) Source(36, 13) + SourceIndex(0) +6 >Emitted(14, 14) Source(36, 14) + SourceIndex(0) +--- +>>>foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^^^ +15> ^^ +16> ^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^ +21> ^ +22> ^ +1-> + > +2 >foo1 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skills +10> : +11> { +12> primary +13> : +14> "edging" +15> , +16> secondary +17> : +18> "branch trimming" +19> } +20> } +21> ) +22> ; +1->Emitted(15, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(37, 5) + SourceIndex(0) +3 >Emitted(15, 6) Source(37, 6) + SourceIndex(0) +4 >Emitted(15, 8) Source(37, 8) + SourceIndex(0) +5 >Emitted(15, 12) Source(37, 12) + SourceIndex(0) +6 >Emitted(15, 14) Source(37, 14) + SourceIndex(0) +7 >Emitted(15, 21) Source(37, 21) + SourceIndex(0) +8 >Emitted(15, 23) Source(37, 23) + SourceIndex(0) +9 >Emitted(15, 29) Source(37, 29) + SourceIndex(0) +10>Emitted(15, 31) Source(37, 31) + SourceIndex(0) +11>Emitted(15, 33) Source(37, 33) + SourceIndex(0) +12>Emitted(15, 40) Source(37, 40) + SourceIndex(0) +13>Emitted(15, 42) Source(37, 42) + SourceIndex(0) +14>Emitted(15, 50) Source(37, 50) + SourceIndex(0) +15>Emitted(15, 52) Source(37, 52) + SourceIndex(0) +16>Emitted(15, 61) Source(37, 61) + SourceIndex(0) +17>Emitted(15, 63) Source(37, 63) + SourceIndex(0) +18>Emitted(15, 80) Source(37, 80) + SourceIndex(0) +19>Emitted(15, 82) Source(37, 82) + SourceIndex(0) +20>Emitted(15, 84) Source(37, 84) + SourceIndex(0) +21>Emitted(15, 85) Source(37, 85) + SourceIndex(0) +22>Emitted(15, 86) Source(37, 86) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(16, 1) Source(39, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(39, 5) + SourceIndex(0) +3 >Emitted(16, 6) Source(39, 6) + SourceIndex(0) +4 >Emitted(16, 12) Source(39, 12) + SourceIndex(0) +5 >Emitted(16, 13) Source(39, 13) + SourceIndex(0) +6 >Emitted(16, 14) Source(39, 14) + SourceIndex(0) +--- +>>>foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^^^ +15> ^^ +16> ^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^ +21> ^ +22> ^ +1-> + > +2 >foo2 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skills +10> : +11> { +12> primary +13> : +14> "edging" +15> , +16> secondary +17> : +18> "branch trimming" +19> } +20> } +21> ) +22> ; +1->Emitted(17, 1) Source(40, 1) + SourceIndex(0) +2 >Emitted(17, 5) Source(40, 5) + SourceIndex(0) +3 >Emitted(17, 6) Source(40, 6) + SourceIndex(0) +4 >Emitted(17, 8) Source(40, 8) + SourceIndex(0) +5 >Emitted(17, 12) Source(40, 12) + SourceIndex(0) +6 >Emitted(17, 14) Source(40, 14) + SourceIndex(0) +7 >Emitted(17, 21) Source(40, 21) + SourceIndex(0) +8 >Emitted(17, 23) Source(40, 23) + SourceIndex(0) +9 >Emitted(17, 29) Source(40, 29) + SourceIndex(0) +10>Emitted(17, 31) Source(40, 31) + SourceIndex(0) +11>Emitted(17, 33) Source(40, 33) + SourceIndex(0) +12>Emitted(17, 40) Source(40, 40) + SourceIndex(0) +13>Emitted(17, 42) Source(40, 42) + SourceIndex(0) +14>Emitted(17, 50) Source(40, 50) + SourceIndex(0) +15>Emitted(17, 52) Source(40, 52) + SourceIndex(0) +16>Emitted(17, 61) Source(40, 61) + SourceIndex(0) +17>Emitted(17, 63) Source(40, 63) + SourceIndex(0) +18>Emitted(17, 80) Source(40, 80) + SourceIndex(0) +19>Emitted(17, 82) Source(40, 82) + SourceIndex(0) +20>Emitted(17, 84) Source(40, 84) + SourceIndex(0) +21>Emitted(17, 85) Source(40, 85) + SourceIndex(0) +22>Emitted(17, 86) Source(40, 86) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(18, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(42, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(42, 6) + SourceIndex(0) +4 >Emitted(18, 12) Source(42, 12) + SourceIndex(0) +5 >Emitted(18, 13) Source(42, 13) + SourceIndex(0) +6 >Emitted(18, 14) Source(42, 14) + SourceIndex(0) +--- +>>>foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^^^ +15> ^^ +16> ^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^ +21> ^ +22> ^ +23> ^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo3 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skills +10> : +11> { +12> primary +13> : +14> "edging" +15> , +16> secondary +17> : +18> "branch trimming" +19> } +20> } +21> ) +22> ; +1->Emitted(19, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(43, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(43, 6) + SourceIndex(0) +4 >Emitted(19, 8) Source(43, 8) + SourceIndex(0) +5 >Emitted(19, 12) Source(43, 12) + SourceIndex(0) +6 >Emitted(19, 14) Source(43, 14) + SourceIndex(0) +7 >Emitted(19, 21) Source(43, 21) + SourceIndex(0) +8 >Emitted(19, 23) Source(43, 23) + SourceIndex(0) +9 >Emitted(19, 29) Source(43, 29) + SourceIndex(0) +10>Emitted(19, 31) Source(43, 31) + SourceIndex(0) +11>Emitted(19, 33) Source(43, 33) + SourceIndex(0) +12>Emitted(19, 40) Source(43, 40) + SourceIndex(0) +13>Emitted(19, 42) Source(43, 42) + SourceIndex(0) +14>Emitted(19, 50) Source(43, 50) + SourceIndex(0) +15>Emitted(19, 52) Source(43, 52) + SourceIndex(0) +16>Emitted(19, 61) Source(43, 61) + SourceIndex(0) +17>Emitted(19, 63) Source(43, 63) + SourceIndex(0) +18>Emitted(19, 80) Source(43, 80) + SourceIndex(0) +19>Emitted(19, 82) Source(43, 82) + SourceIndex(0) +20>Emitted(19, 84) Source(43, 84) + SourceIndex(0) +21>Emitted(19, 85) Source(43, 85) + SourceIndex(0) +22>Emitted(19, 86) Source(43, 86) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..229e9acb6da --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.symbols @@ -0,0 +1,143 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 3, 17)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 4, 17)) + + primary?: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 5, 13)) + + secondary?: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 6, 25)) + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 36)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 46)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 65)) + +function foo1( +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 88)) + { + skills: { +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 4, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 5, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 14, 17)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 6, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 15, 42)) + + } = { primary: "SomeSkill", secondary: "someSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 17, 13)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 17, 35)) + + }: Robot = robotA) { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 2, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 14, 17)) +} +function foo2( +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 20, 1)) + { + name: nameC = "name", +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameC : Symbol(nameC, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 22, 5)) + + skills: { +>skills : Symbol(Robot.skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 4, 17)) + + primary: primaryB = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 5, 13)) +>primaryB : Symbol(primaryB, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 24, 17)) + + secondary: secondaryB = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 6, 25)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 25, 42)) + + } = { primary: "SomeSkill", secondary: "someSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 27, 13)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 27, 35)) + + }: Robot = robotA) { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 2, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) + + console.log(secondaryB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>secondaryB : Symbol(secondaryB, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 25, 42)) +} +function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 30, 1)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 31, 15)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 31, 26)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 31, 48)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 2, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) + + console.log(skills.primary); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 0, 22)) +>skills.primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 5, 13)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 31, 15)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 5, 13)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 88)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) + +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 88)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 36, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 36, 21)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 36, 31)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 36, 50)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 20, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) + +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 20, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 39, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 39, 21)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 39, 31)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 39, 50)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 30, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 10, 3)) + +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 30, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 42, 6)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 42, 21)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 42, 31)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts, 42, 50)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types new file mode 100644 index 00000000000..a9e5c2d6ee6 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.types @@ -0,0 +1,219 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } + + primary?: string; +>primary : string + + secondary?: string; +>secondary : string + + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +function foo1( +>foo1 : ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }?: Robot) => void + { + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "SomeSkill", secondary: "someSkill" } +>{ primary: "SomeSkill", secondary: "someSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"SomeSkill" : string +>secondary : string +>"someSkill" : string + + }: Robot = robotA) { +>Robot : Robot +>robotA : Robot + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>primaryA : string +} +function foo2( +>foo2 : ({ + name: nameC = "name", + skills: { + primary: primaryB = "primary", + secondary: secondaryB = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }?: Robot) => void + { + name: nameC = "name", +>name : any +>nameC : string +>"name" : string + + skills: { +>skills : any + + primary: primaryB = "primary", +>primary : any +>primaryB : string +>"primary" : string + + secondary: secondaryB = "secondary" +>secondary : any +>secondaryB : string +>"secondary" : string + + } = { primary: "SomeSkill", secondary: "someSkill" } +>{ primary: "SomeSkill", secondary: "someSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"SomeSkill" : string +>secondary : string +>"someSkill" : string + + }: Robot = robotA) { +>Robot : Robot +>robotA : Robot + + console.log(secondaryB); +>console.log(secondaryB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>secondaryB : string +} +function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { +>foo3 : ({ skills = { primary: "SomeSkill", secondary: "someSkill" } }?: Robot) => void +>skills : { primary?: string; secondary?: string; } +>{ primary: "SomeSkill", secondary: "someSkill" } : { primary: string; secondary: string; } +>primary : string +>"SomeSkill" : string +>secondary : string +>"someSkill" : string +>Robot : Robot +>robotA : Robot + + console.log(skills.primary); +>console.log(skills.primary) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>skills.primary : string +>skills : { primary?: string; secondary?: string; } +>primary : string +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }?: Robot) => void +>robotA : Robot + +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) : void +>foo1 : ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }?: Robot) => void +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ({ + name: nameC = "name", + skills: { + primary: primaryB = "primary", + secondary: secondaryB = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }?: Robot) => void +>robotA : Robot + +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) : void +>foo2 : ({ + name: nameC = "name", + skills: { + primary: primaryB = "primary", + secondary: secondaryB = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }?: Robot) => void +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ({ skills = { primary: "SomeSkill", secondary: "someSkill" } }?: Robot) => void +>robotA : Robot + +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +>foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) : void +>foo3 : ({ skills = { primary: "SomeSkill", secondary: "someSkill" } }?: Robot) => void +>{ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"Edger" : string +>skills : { primary: string; secondary: string; } +>{ primary: "edging", secondary: "branch trimming" } : { primary: string; secondary: string; } +>primary : string +>"edging" : string +>secondary : string +>"branch trimming" : string + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js new file mode 100644 index 00000000000..9fd269c62cc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js @@ -0,0 +1,53 @@ +//// [sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts] +interface Robot { + name?: string; + skill?: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; + +function foo1({ name: nameA = "" }: Robot = { }) { + console.log(nameA); +} +function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + console.log(nameB); +} +function foo3({ name = "" }: Robot = {}) { + console.log(name); +} + +foo1(robotA); +foo1({ name: "Edger", skill: "cutting edges" }); + +foo2(robotA); +foo2({ name: "Edger", skill: "cutting edges" }); + +foo3(robotA); +foo3({ name: "Edger", skill: "cutting edges" }); + + +//// [sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js] +var hello = "hello"; +var robotA = { name: "mower", skill: "mowing" }; +function foo1(_a) { + var _b = (_a === void 0 ? {} : _a).name, nameA = _b === void 0 ? "" : _b; + console.log(nameA); +} +function foo2(_a) { + var _b = _a === void 0 ? {} : _a, _c = _b.name, nameB = _c === void 0 ? "" : _c, _d = _b.skill, skillB = _d === void 0 ? "noSkill" : _d; + console.log(nameB); +} +function foo3(_a) { + var _b = (_a === void 0 ? {} : _a).name, name = _b === void 0 ? "" : _b; + console.log(name); +} +foo1(robotA); +foo1({ name: "Edger", skill: "cutting edges" }); +foo2(robotA); +foo2({ name: "Edger", skill: "cutting edges" }); +foo3(robotA); +foo3({ name: "Edger", skill: "cutting edges" }); +//# sourceMappingURL=sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..ddf41d9e59f --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts"],"names":[],"mappings":"AAOA,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,MAAM,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAEvD,cAAc,EAAyC;QAAvC,mCAAwB,EAAxB,uCAAwB;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAmE;QAAnE,4BAAmE,EAAjE,YAAwB,EAAxB,uCAAwB,EAAE,aAAyB,EAAzB,uCAAyB;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,cAAc,EAAiC;QAA/B,mCAAiB,EAAjB,sCAAiB;IAC7B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..555bc560797 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,500 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var hello = "hello"; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >interface Robot { + > name?: string; + > skill?: string; + >} + >declare var console: { + > log(msg: string): void; + >} + > +2 >var +3 > hello +4 > = +5 > "hello" +6 > ; +1 >Emitted(1, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(8, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(8, 13) + SourceIndex(0) +5 >Emitted(1, 20) Source(8, 20) + SourceIndex(0) +6 >Emitted(1, 21) Source(8, 21) + SourceIndex(0) +--- +>>>var robotA = { name: "mower", skill: "mowing" }; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +1-> + > +2 >var +3 > robotA +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1->Emitted(2, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(9, 21) + SourceIndex(0) +5 >Emitted(2, 16) Source(9, 23) + SourceIndex(0) +6 >Emitted(2, 20) Source(9, 27) + SourceIndex(0) +7 >Emitted(2, 22) Source(9, 29) + SourceIndex(0) +8 >Emitted(2, 29) Source(9, 36) + SourceIndex(0) +9 >Emitted(2, 31) Source(9, 38) + SourceIndex(0) +10>Emitted(2, 36) Source(9, 43) + SourceIndex(0) +11>Emitted(2, 38) Source(9, 45) + SourceIndex(0) +12>Emitted(2, 46) Source(9, 53) + SourceIndex(0) +13>Emitted(2, 48) Source(9, 55) + SourceIndex(0) +14>Emitted(2, 49) Source(9, 56) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > { name: nameA = "" }: Robot = { } +1 >Emitted(3, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(3, 15) Source(11, 15) + SourceIndex(0) +3 >Emitted(3, 17) Source(11, 56) + SourceIndex(0) +--- +>>> var _b = (_a === void 0 ? {} : _a).name, nameA = _b === void 0 ? "" : _b; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameA = "" +3 > +4 > name: nameA = "" +1->Emitted(4, 9) Source(11, 17) + SourceIndex(0) +2 >Emitted(4, 44) Source(11, 41) + SourceIndex(0) +3 >Emitted(4, 46) Source(11, 17) + SourceIndex(0) +4 >Emitted(4, 85) Source(11, 41) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > }: Robot = { }) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +2 >Emitted(5, 12) Source(12, 12) + SourceIndex(0) +3 >Emitted(5, 13) Source(12, 13) + SourceIndex(0) +4 >Emitted(5, 16) Source(12, 16) + SourceIndex(0) +5 >Emitted(5, 17) Source(12, 17) + SourceIndex(0) +6 >Emitted(5, 22) Source(12, 22) + SourceIndex(0) +7 >Emitted(5, 23) Source(12, 23) + SourceIndex(0) +8 >Emitted(5, 24) Source(12, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(13, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >function foo2( +3 > { name: nameB = "", skill: skillB = "noSkill" }: Robot = {} +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 15) Source(14, 15) + SourceIndex(0) +3 >Emitted(7, 17) Source(14, 82) + SourceIndex(0) +--- +>>> var _b = _a === void 0 ? {} : _a, _c = _b.name, nameB = _c === void 0 ? "" : _c, _d = _b.skill, skillB = _d === void 0 ? "noSkill" : _d; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { name: nameB = "", skill: skillB = "noSkill" }: Robot = {} +3 > +4 > name: nameB = "" +5 > +6 > name: nameB = "" +7 > , +8 > skill: skillB = "noSkill" +9 > +10> skill: skillB = "noSkill" +1->Emitted(8, 9) Source(14, 15) + SourceIndex(0) +2 >Emitted(8, 37) Source(14, 82) + SourceIndex(0) +3 >Emitted(8, 39) Source(14, 17) + SourceIndex(0) +4 >Emitted(8, 51) Source(14, 41) + SourceIndex(0) +5 >Emitted(8, 53) Source(14, 17) + SourceIndex(0) +6 >Emitted(8, 92) Source(14, 41) + SourceIndex(0) +7 >Emitted(8, 94) Source(14, 43) + SourceIndex(0) +8 >Emitted(8, 107) Source(14, 68) + SourceIndex(0) +9 >Emitted(8, 109) Source(14, 43) + SourceIndex(0) +10>Emitted(8, 148) Source(14, 68) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > }: Robot = {}) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(9, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(9, 12) Source(15, 12) + SourceIndex(0) +3 >Emitted(9, 13) Source(15, 13) + SourceIndex(0) +4 >Emitted(9, 16) Source(15, 16) + SourceIndex(0) +5 >Emitted(9, 17) Source(15, 17) + SourceIndex(0) +6 >Emitted(9, 22) Source(15, 22) + SourceIndex(0) +7 >Emitted(9, 23) Source(15, 23) + SourceIndex(0) +8 >Emitted(9, 24) Source(15, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(10, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(10, 2) Source(16, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >function foo3( +3 > { name = "" }: Robot = {} +1->Emitted(11, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(11, 15) Source(17, 15) + SourceIndex(0) +3 >Emitted(11, 17) Source(17, 48) + SourceIndex(0) +--- +>>> var _b = (_a === void 0 ? {} : _a).name, name = _b === void 0 ? "" : _b; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name = "" +3 > +4 > name = "" +1->Emitted(12, 9) Source(17, 17) + SourceIndex(0) +2 >Emitted(12, 44) Source(17, 34) + SourceIndex(0) +3 >Emitted(12, 46) Source(17, 17) + SourceIndex(0) +4 >Emitted(12, 84) Source(17, 34) + SourceIndex(0) +--- +>>> console.log(name); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^ +7 > ^ +8 > ^ +1 > }: Robot = {}) { + > +2 > console +3 > . +4 > log +5 > ( +6 > name +7 > ) +8 > ; +1 >Emitted(13, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(13, 12) Source(18, 12) + SourceIndex(0) +3 >Emitted(13, 13) Source(18, 13) + SourceIndex(0) +4 >Emitted(13, 16) Source(18, 16) + SourceIndex(0) +5 >Emitted(13, 17) Source(18, 17) + SourceIndex(0) +6 >Emitted(13, 21) Source(18, 21) + SourceIndex(0) +7 >Emitted(13, 22) Source(18, 22) + SourceIndex(0) +8 >Emitted(13, 23) Source(18, 23) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(14, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(14, 2) Source(19, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(15, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(15, 6) Source(21, 6) + SourceIndex(0) +4 >Emitted(15, 12) Source(21, 12) + SourceIndex(0) +5 >Emitted(15, 13) Source(21, 13) + SourceIndex(0) +6 >Emitted(15, 14) Source(21, 14) + SourceIndex(0) +--- +>>>foo1({ name: "Edger", skill: "cutting edges" }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^ +1-> + > +2 >foo1 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> ) +14> ; +1->Emitted(16, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(16, 6) Source(22, 6) + SourceIndex(0) +4 >Emitted(16, 8) Source(22, 8) + SourceIndex(0) +5 >Emitted(16, 12) Source(22, 12) + SourceIndex(0) +6 >Emitted(16, 14) Source(22, 14) + SourceIndex(0) +7 >Emitted(16, 21) Source(22, 21) + SourceIndex(0) +8 >Emitted(16, 23) Source(22, 23) + SourceIndex(0) +9 >Emitted(16, 28) Source(22, 28) + SourceIndex(0) +10>Emitted(16, 30) Source(22, 30) + SourceIndex(0) +11>Emitted(16, 45) Source(22, 45) + SourceIndex(0) +12>Emitted(16, 47) Source(22, 47) + SourceIndex(0) +13>Emitted(16, 48) Source(22, 48) + SourceIndex(0) +14>Emitted(16, 49) Source(22, 49) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(17, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(17, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(17, 6) Source(24, 6) + SourceIndex(0) +4 >Emitted(17, 12) Source(24, 12) + SourceIndex(0) +5 >Emitted(17, 13) Source(24, 13) + SourceIndex(0) +6 >Emitted(17, 14) Source(24, 14) + SourceIndex(0) +--- +>>>foo2({ name: "Edger", skill: "cutting edges" }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^ +1-> + > +2 >foo2 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> ) +14> ; +1->Emitted(18, 1) Source(25, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(25, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(25, 6) + SourceIndex(0) +4 >Emitted(18, 8) Source(25, 8) + SourceIndex(0) +5 >Emitted(18, 12) Source(25, 12) + SourceIndex(0) +6 >Emitted(18, 14) Source(25, 14) + SourceIndex(0) +7 >Emitted(18, 21) Source(25, 21) + SourceIndex(0) +8 >Emitted(18, 23) Source(25, 23) + SourceIndex(0) +9 >Emitted(18, 28) Source(25, 28) + SourceIndex(0) +10>Emitted(18, 30) Source(25, 30) + SourceIndex(0) +11>Emitted(18, 45) Source(25, 45) + SourceIndex(0) +12>Emitted(18, 47) Source(25, 47) + SourceIndex(0) +13>Emitted(18, 48) Source(25, 48) + SourceIndex(0) +14>Emitted(18, 49) Source(25, 49) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(19, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(27, 6) + SourceIndex(0) +4 >Emitted(19, 12) Source(27, 12) + SourceIndex(0) +5 >Emitted(19, 13) Source(27, 13) + SourceIndex(0) +6 >Emitted(19, 14) Source(27, 14) + SourceIndex(0) +--- +>>>foo3({ name: "Edger", skill: "cutting edges" }); +1-> +2 >^^^^ +3 > ^ +4 > ^^ +5 > ^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo3 +3 > ( +4 > { +5 > name +6 > : +7 > "Edger" +8 > , +9 > skill +10> : +11> "cutting edges" +12> } +13> ) +14> ; +1->Emitted(20, 1) Source(28, 1) + SourceIndex(0) +2 >Emitted(20, 5) Source(28, 5) + SourceIndex(0) +3 >Emitted(20, 6) Source(28, 6) + SourceIndex(0) +4 >Emitted(20, 8) Source(28, 8) + SourceIndex(0) +5 >Emitted(20, 12) Source(28, 12) + SourceIndex(0) +6 >Emitted(20, 14) Source(28, 14) + SourceIndex(0) +7 >Emitted(20, 21) Source(28, 21) + SourceIndex(0) +8 >Emitted(20, 23) Source(28, 23) + SourceIndex(0) +9 >Emitted(20, 28) Source(28, 28) + SourceIndex(0) +10>Emitted(20, 30) Source(28, 30) + SourceIndex(0) +11>Emitted(20, 45) Source(28, 45) + SourceIndex(0) +12>Emitted(20, 47) Source(28, 47) + SourceIndex(0) +13>Emitted(20, 48) Source(28, 48) + SourceIndex(0) +14>Emitted(20, 49) Source(28, 49) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..7e3804a5e88 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.symbols @@ -0,0 +1,91 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts === +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 0)) + + name?: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 17)) + + skill?: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 1, 18)) +} +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 11)) + + log(msg: string): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 5, 8)) +} +var hello = "hello"; +>hello : Symbol(hello, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 7, 3)) + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 0)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 21)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 36)) + +function foo1({ name: nameA = "" }: Robot = { }) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 55)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 10, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 0)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 10, 15)) +} +function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 12, 1)) +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 17)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 13, 15)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 1, 18)) +>skillB : Symbol(skillB, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 13, 41)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 0)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 13, 15)) +} +function foo3({ name = "" }: Robot = {}) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 15, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 16, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 0, 0)) + + console.log(name); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 4, 22)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 16, 15)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 55)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 3)) + +foo1({ name: "Edger", skill: "cutting edges" }); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 55)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 21, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 21, 21)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 12, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 3)) + +foo2({ name: "Edger", skill: "cutting edges" }); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 12, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 24, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 24, 21)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 15, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 8, 3)) + +foo3({ name: "Edger", skill: "cutting edges" }); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 15, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 27, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts, 27, 21)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.types new file mode 100644 index 00000000000..669708f412f --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.types @@ -0,0 +1,120 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts === +interface Robot { +>Robot : Robot + + name?: string; +>name : string + + skill?: string; +>skill : string +} +declare var console: { +>console : { log(msg: string): void; } + + log(msg: string): void; +>log : (msg: string) => void +>msg : string +} +var hello = "hello"; +>hello : string +>"hello" : string + +var robotA: Robot = { name: "mower", skill: "mowing" }; +>robotA : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +function foo1({ name: nameA = "" }: Robot = { }) { +>foo1 : ({ name: nameA = "" }?: Robot) => void +>name : any +>nameA : string +>"" : string +>Robot : Robot +>{ } : {} + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameA : string +} +function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { +>foo2 : ({ name: nameB = "", skill: skillB = "noSkill" }?: Robot) => void +>name : any +>nameB : string +>"" : string +>skill : any +>skillB : string +>"noSkill" : string +>Robot : Robot +>{} : {} + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>nameB : string +} +function foo3({ name = "" }: Robot = {}) { +>foo3 : ({ name = "" }?: Robot) => void +>name : string +>"" : string +>Robot : Robot +>{} : {} + + console.log(name); +>console.log(name) : void +>console.log : (msg: string) => void +>console : { log(msg: string): void; } +>log : (msg: string) => void +>name : string +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ({ name: nameA = "" }?: Robot) => void +>robotA : Robot + +foo1({ name: "Edger", skill: "cutting edges" }); +>foo1({ name: "Edger", skill: "cutting edges" }) : void +>foo1 : ({ name: nameA = "" }?: Robot) => void +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ({ name: nameB = "", skill: skillB = "noSkill" }?: Robot) => void +>robotA : Robot + +foo2({ name: "Edger", skill: "cutting edges" }); +>foo2({ name: "Edger", skill: "cutting edges" }) : void +>foo2 : ({ name: nameB = "", skill: skillB = "noSkill" }?: Robot) => void +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ({ name = "" }?: Robot) => void +>robotA : Robot + +foo3({ name: "Edger", skill: "cutting edges" }); +>foo3({ name: "Edger", skill: "cutting edges" }) : void +>foo3 : ({ name = "" }?: Robot) => void +>{ name: "Edger", skill: "cutting edges" } : { name: string; skill: string; } +>name : string +>"Edger" : string +>skill : string +>"cutting edges" : string + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js new file mode 100644 index 00000000000..327791a6416 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js @@ -0,0 +1,62 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; + +function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { + console.log(nameA); +} + +function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { + console.log(numberB); +} + +function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + console.log(nameA2); +} + +function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + console.log(robotAInfo); +} + +foo1(robotA); +foo1([2, "trimmer", "trimming"]); + +foo2(robotA); +foo2([2, "trimmer", "trimming"]); + +foo3(robotA); +foo3([2, "trimmer", "trimming"]); + +foo4(robotA); +foo4([2, "trimmer", "trimming"]); + +//// [sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js] +var robotA = [1, "mower", "mowing"]; +function foo1(_a) { + var _b = _a === void 0 ? [-1, "name", "skill"] : _a, _c = _b[1], nameA = _c === void 0 ? "noName" : _c; + console.log(nameA); +} +function foo2(_a) { + var _b = (_a === void 0 ? [-1, "name", "skill"] : _a)[0], numberB = _b === void 0 ? -1 : _b; + console.log(numberB); +} +function foo3(_a) { + var _b = _a === void 0 ? [-1, "name", "skill"] : _a, _c = _b[0], numberA2 = _c === void 0 ? -1 : _c, _d = _b[1], nameA2 = _d === void 0 ? "name" : _d, _e = _b[2], skillA2 = _e === void 0 ? "skill" : _e; + console.log(nameA2); +} +function foo4(_a) { + var _b = _a === void 0 ? [-1, "name", "skill"] : _a, _c = _b[0], numberA3 = _c === void 0 ? -1 : _c, robotAInfo = _b.slice(1); + console.log(robotAInfo); +} +foo1(robotA); +foo1([2, "trimmer", "trimming"]); +foo2(robotA); +foo2([2, "trimmer", "trimming"]); +foo3(robotA); +foo3([2, "trimmer", "trimming"]); +foo4(robotA); +foo4([2, "trimmer", "trimming"]); +//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..7fdda34358b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAE3C,cAAc,EAAmD;QAAnD,+CAAmD,EAAhD,UAAgB,EAAhB,qCAAgB;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,cAAc,EAA6C;QAA5C,oDAAY,EAAZ,iCAAY;IACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,cAAc,EAAkF;QAAlF,+CAAkF,EAAjF,UAAa,EAAb,kCAAa,EAAE,UAAe,EAAf,oCAAe,EAAE,UAAiB,EAAjB,sCAAiB;IAC5D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA6D;QAA7D,+CAA6D,EAA5D,UAAa,EAAb,kCAAa,EAAE,wBAAa;IACvC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..250d7ec2931 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,610 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(5, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(5, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(5, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(5, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(5, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(5, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(5, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(5, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(5, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(5, 44) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > [, nameA = "noName"]: Robot = [-1, "name", "skill"] +1 >Emitted(2, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(2, 15) Source(7, 15) + SourceIndex(0) +3 >Emitted(2, 17) Source(7, 66) + SourceIndex(0) +--- +>>> var _b = _a === void 0 ? [-1, "name", "skill"] : _a, _c = _b[1], nameA = _c === void 0 ? "noName" : _c; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, nameA = "noName"]: Robot = [-1, "name", "skill"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(3, 9) Source(7, 15) + SourceIndex(0) +2 >Emitted(3, 56) Source(7, 66) + SourceIndex(0) +3 >Emitted(3, 58) Source(7, 18) + SourceIndex(0) +4 >Emitted(3, 68) Source(7, 34) + SourceIndex(0) +5 >Emitted(3, 70) Source(7, 18) + SourceIndex(0) +6 >Emitted(3, 107) Source(7, 34) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >]: Robot = [-1, "name", "skill"]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(4, 5) Source(8, 5) + SourceIndex(0) +2 >Emitted(4, 12) Source(8, 12) + SourceIndex(0) +3 >Emitted(4, 13) Source(8, 13) + SourceIndex(0) +4 >Emitted(4, 16) Source(8, 16) + SourceIndex(0) +5 >Emitted(4, 17) Source(8, 17) + SourceIndex(0) +6 >Emitted(4, 22) Source(8, 22) + SourceIndex(0) +7 >Emitted(4, 23) Source(8, 23) + SourceIndex(0) +8 >Emitted(4, 24) Source(8, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(9, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo2( +3 > [numberB = -1]: Robot = [-1, "name", "skill"] +1->Emitted(6, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(6, 15) Source(11, 15) + SourceIndex(0) +3 >Emitted(6, 17) Source(11, 60) + SourceIndex(0) +--- +>>> var _b = (_a === void 0 ? [-1, "name", "skill"] : _a)[0], numberB = _b === void 0 ? -1 : _b; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > numberB = -1 +3 > +4 > numberB = -1 +1->Emitted(7, 9) Source(11, 16) + SourceIndex(0) +2 >Emitted(7, 61) Source(11, 28) + SourceIndex(0) +3 >Emitted(7, 63) Source(11, 16) + SourceIndex(0) +4 >Emitted(7, 96) Source(11, 28) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot = [-1, "name", "skill"]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(8, 5) Source(12, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(12, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(12, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(12, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(12, 17) + SourceIndex(0) +6 >Emitted(8, 24) Source(12, 24) + SourceIndex(0) +7 >Emitted(8, 25) Source(12, 25) + SourceIndex(0) +8 >Emitted(8, 26) Source(12, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(13, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo3( +3 > [numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"] +1->Emitted(10, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(10, 15) Source(15, 15) + SourceIndex(0) +3 >Emitted(10, 17) Source(15, 97) + SourceIndex(0) +--- +>>> var _b = _a === void 0 ? [-1, "name", "skill"] : _a, _c = _b[0], numberA2 = _c === void 0 ? -1 : _c, _d = _b[1], nameA2 = _d === void 0 ? "name" : _d, _e = _b[2], skillA2 = _e === void 0 ? "skill" : _e; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "name" +9 > +10> nameA2 = "name" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(11, 9) Source(15, 15) + SourceIndex(0) +2 >Emitted(11, 56) Source(15, 97) + SourceIndex(0) +3 >Emitted(11, 58) Source(15, 16) + SourceIndex(0) +4 >Emitted(11, 68) Source(15, 29) + SourceIndex(0) +5 >Emitted(11, 70) Source(15, 16) + SourceIndex(0) +6 >Emitted(11, 104) Source(15, 29) + SourceIndex(0) +7 >Emitted(11, 106) Source(15, 31) + SourceIndex(0) +8 >Emitted(11, 116) Source(15, 46) + SourceIndex(0) +9 >Emitted(11, 118) Source(15, 31) + SourceIndex(0) +10>Emitted(11, 154) Source(15, 46) + SourceIndex(0) +11>Emitted(11, 156) Source(15, 48) + SourceIndex(0) +12>Emitted(11, 166) Source(15, 65) + SourceIndex(0) +13>Emitted(11, 168) Source(15, 48) + SourceIndex(0) +14>Emitted(11, 206) Source(15, 65) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot = [-1, "name", "skill"]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(12, 5) Source(16, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(16, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(16, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(16, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(16, 17) + SourceIndex(0) +6 >Emitted(12, 23) Source(16, 23) + SourceIndex(0) +7 >Emitted(12, 24) Source(16, 24) + SourceIndex(0) +8 >Emitted(12, 25) Source(16, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(17, 2) + SourceIndex(0) +--- +>>>function foo4(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo4( +3 > [numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"] +1->Emitted(14, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(14, 15) Source(19, 15) + SourceIndex(0) +3 >Emitted(14, 17) Source(19, 76) + SourceIndex(0) +--- +>>> var _b = _a === void 0 ? [-1, "name", "skill"] : _a, _c = _b[0], numberA3 = _c === void 0 ? -1 : _c, robotAInfo = _b.slice(1); +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(15, 9) Source(19, 15) + SourceIndex(0) +2 >Emitted(15, 56) Source(19, 76) + SourceIndex(0) +3 >Emitted(15, 58) Source(19, 16) + SourceIndex(0) +4 >Emitted(15, 68) Source(19, 29) + SourceIndex(0) +5 >Emitted(15, 70) Source(19, 16) + SourceIndex(0) +6 >Emitted(15, 104) Source(19, 29) + SourceIndex(0) +7 >Emitted(15, 106) Source(19, 31) + SourceIndex(0) +8 >Emitted(15, 130) Source(19, 44) + SourceIndex(0) +--- +>>> console.log(robotAInfo); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot = [-1, "name", "skill"]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > robotAInfo +7 > ) +8 > ; +1 >Emitted(16, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(20, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(20, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(20, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(20, 17) + SourceIndex(0) +6 >Emitted(16, 27) Source(20, 27) + SourceIndex(0) +7 >Emitted(16, 28) Source(20, 28) + SourceIndex(0) +8 >Emitted(16, 29) Source(20, 29) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(21, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(18, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(23, 6) + SourceIndex(0) +4 >Emitted(18, 12) Source(23, 12) + SourceIndex(0) +5 >Emitted(18, 13) Source(23, 13) + SourceIndex(0) +6 >Emitted(18, 14) Source(23, 14) + SourceIndex(0) +--- +>>>foo1([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +1-> + > +2 >foo1 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(19, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(24, 6) + SourceIndex(0) +4 >Emitted(19, 7) Source(24, 7) + SourceIndex(0) +5 >Emitted(19, 8) Source(24, 8) + SourceIndex(0) +6 >Emitted(19, 10) Source(24, 10) + SourceIndex(0) +7 >Emitted(19, 19) Source(24, 19) + SourceIndex(0) +8 >Emitted(19, 21) Source(24, 21) + SourceIndex(0) +9 >Emitted(19, 31) Source(24, 31) + SourceIndex(0) +10>Emitted(19, 32) Source(24, 32) + SourceIndex(0) +11>Emitted(19, 33) Source(24, 33) + SourceIndex(0) +12>Emitted(19, 34) Source(24, 34) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(20, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(20, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(20, 6) Source(26, 6) + SourceIndex(0) +4 >Emitted(20, 12) Source(26, 12) + SourceIndex(0) +5 >Emitted(20, 13) Source(26, 13) + SourceIndex(0) +6 >Emitted(20, 14) Source(26, 14) + SourceIndex(0) +--- +>>>foo2([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +1-> + > +2 >foo2 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(21, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(21, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(21, 6) Source(27, 6) + SourceIndex(0) +4 >Emitted(21, 7) Source(27, 7) + SourceIndex(0) +5 >Emitted(21, 8) Source(27, 8) + SourceIndex(0) +6 >Emitted(21, 10) Source(27, 10) + SourceIndex(0) +7 >Emitted(21, 19) Source(27, 19) + SourceIndex(0) +8 >Emitted(21, 21) Source(27, 21) + SourceIndex(0) +9 >Emitted(21, 31) Source(27, 31) + SourceIndex(0) +10>Emitted(21, 32) Source(27, 32) + SourceIndex(0) +11>Emitted(21, 33) Source(27, 33) + SourceIndex(0) +12>Emitted(21, 34) Source(27, 34) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(22, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(22, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(22, 6) Source(29, 6) + SourceIndex(0) +4 >Emitted(22, 12) Source(29, 12) + SourceIndex(0) +5 >Emitted(22, 13) Source(29, 13) + SourceIndex(0) +6 >Emitted(22, 14) Source(29, 14) + SourceIndex(0) +--- +>>>foo3([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +1-> + > +2 >foo3 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(23, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(23, 5) Source(30, 5) + SourceIndex(0) +3 >Emitted(23, 6) Source(30, 6) + SourceIndex(0) +4 >Emitted(23, 7) Source(30, 7) + SourceIndex(0) +5 >Emitted(23, 8) Source(30, 8) + SourceIndex(0) +6 >Emitted(23, 10) Source(30, 10) + SourceIndex(0) +7 >Emitted(23, 19) Source(30, 19) + SourceIndex(0) +8 >Emitted(23, 21) Source(30, 21) + SourceIndex(0) +9 >Emitted(23, 31) Source(30, 31) + SourceIndex(0) +10>Emitted(23, 32) Source(30, 32) + SourceIndex(0) +11>Emitted(23, 33) Source(30, 33) + SourceIndex(0) +12>Emitted(23, 34) Source(30, 34) + SourceIndex(0) +--- +>>>foo4(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo4 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(24, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(24, 5) Source(32, 5) + SourceIndex(0) +3 >Emitted(24, 6) Source(32, 6) + SourceIndex(0) +4 >Emitted(24, 12) Source(32, 12) + SourceIndex(0) +5 >Emitted(24, 13) Source(32, 13) + SourceIndex(0) +6 >Emitted(24, 14) Source(32, 14) + SourceIndex(0) +--- +>>>foo4([2, "trimmer", "trimming"]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^ +11> ^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo4 +3 > ( +4 > [ +5 > 2 +6 > , +7 > "trimmer" +8 > , +9 > "trimming" +10> ] +11> ) +12> ; +1->Emitted(25, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(25, 5) Source(33, 5) + SourceIndex(0) +3 >Emitted(25, 6) Source(33, 6) + SourceIndex(0) +4 >Emitted(25, 7) Source(33, 7) + SourceIndex(0) +5 >Emitted(25, 8) Source(33, 8) + SourceIndex(0) +6 >Emitted(25, 10) Source(33, 10) + SourceIndex(0) +7 >Emitted(25, 19) Source(33, 19) + SourceIndex(0) +8 >Emitted(25, 21) Source(33, 21) + SourceIndex(0) +9 >Emitted(25, 31) Source(33, 31) + SourceIndex(0) +10>Emitted(25, 32) Source(33, 32) + SourceIndex(0) +11>Emitted(25, 33) Source(33, 33) + SourceIndex(0) +12>Emitted(25, 34) Source(33, 34) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..e3502b769a8 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.symbols @@ -0,0 +1,94 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 2, 1)) + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 2, 1)) + +function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 43)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 6, 16)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 2, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 6, 16)) +} + +function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 8, 1)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 10, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 2, 1)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 10, 15)) +} + +function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 12, 1)) +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 14, 15)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 14, 29)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 14, 46)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 2, 1)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 14, 29)) +} + +function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 16, 1)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 18, 15)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 18, 29)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 2, 1)) + + console.log(robotAInfo); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 0, 22)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 18, 29)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 43)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 3)) + +foo1([2, "trimmer", "trimming"]); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 43)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 8, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 3)) + +foo2([2, "trimmer", "trimming"]); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 8, 1)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 12, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 3)) + +foo3([2, "trimmer", "trimming"]); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 12, 1)) + +foo4(robotA); +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 16, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 4, 3)) + +foo4([2, "trimmer", "trimming"]); +>foo4 : Symbol(foo4, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts, 16, 1)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types new file mode 100644 index 00000000000..8e12e876b1d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types @@ -0,0 +1,156 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +var robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { +>foo1 : ([, nameA = "noName"]?: [number, string, string]) => void +> : undefined +>nameA : string +>"noName" : string +>Robot : [number, string, string] +>[-1, "name", "skill"] : [number, string, string] +>-1 : number +>1 : number +>"name" : string +>"skill" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} + +function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { +>foo2 : ([numberB = -1]?: [number, string, string]) => void +>numberB : number +>-1 : number +>1 : number +>Robot : [number, string, string] +>[-1, "name", "skill"] : [number, string, string] +>-1 : number +>1 : number +>"name" : string +>"skill" : string + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} + +function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { +>foo3 : ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]?: [number, string, string]) => void +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"name" : string +>skillA2 : string +>"skill" : string +>Robot : [number, string, string] +>[-1, "name", "skill"] : [number, string, string] +>-1 : number +>1 : number +>"name" : string +>"skill" : string + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} + +function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { +>foo4 : ([numberA3 = -1, ...robotAInfo]?: [number, string, string]) => void +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>Robot : [number, string, string] +>[-1, "name", "skill"] : [number, string, string] +>-1 : number +>1 : number +>"name" : string +>"skill" : string + + console.log(robotAInfo); +>console.log(robotAInfo) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>robotAInfo : (number | string)[] +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ([, nameA = "noName"]?: [number, string, string]) => void +>robotA : [number, string, string] + +foo1([2, "trimmer", "trimming"]); +>foo1([2, "trimmer", "trimming"]) : void +>foo1 : ([, nameA = "noName"]?: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ([numberB = -1]?: [number, string, string]) => void +>robotA : [number, string, string] + +foo2([2, "trimmer", "trimming"]); +>foo2([2, "trimmer", "trimming"]) : void +>foo2 : ([numberB = -1]?: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]?: [number, string, string]) => void +>robotA : [number, string, string] + +foo3([2, "trimmer", "trimming"]); +>foo3([2, "trimmer", "trimming"]) : void +>foo3 : ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]?: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +foo4(robotA); +>foo4(robotA) : void +>foo4 : ([numberA3 = -1, ...robotAInfo]?: [number, string, string]) => void +>robotA : [number, string, string] + +foo4([2, "trimmer", "trimming"]); +>foo4([2, "trimmer", "trimming"]) : void +>foo4 : ([numberA3 = -1, ...robotAInfo]?: [number, string, string]) => void +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js new file mode 100644 index 00000000000..81add872b0d --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js @@ -0,0 +1,52 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [string, string[]]; +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; + +function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { + console.log(skillA); +} + +function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { + console.log(nameMB); +} + +function foo3([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["noSkill", "noSkill"]]: Robot) { + console.log(nameMA); +} + +foo1(robotA); +foo1(["roomba", ["vaccum", "mopping"]]); + +foo2(robotA); +foo2(["roomba", ["vaccum", "mopping"]]); + +foo3(robotA); +foo3(["roomba", ["vaccum", "mopping"]]); + +//// [sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js] +var robotA = ["trimmer", ["trimming", "edging"]]; +function foo1(_a) { + var _b = _a === void 0 ? ["name", ["skill1", "skill2"]] : _a, _c = _b[1], skillA = _c === void 0 ? ["noSkill", "noSkill"] : _c; + console.log(skillA); +} +function foo2(_a) { + var _b = (_a === void 0 ? ["name", ["skill1", "skill2"]] : _a)[0], nameMB = _b === void 0 ? "noName" : _b; + console.log(nameMB); +} +function foo3(_a) { + var _b = _a[0], nameMA = _b === void 0 ? "noName" : _b, _c = _a[1], _d = _c === void 0 ? ["noSkill", "noSkill"] : _c, _e = _d[0], primarySkillA = _e === void 0 ? "primary" : _e, _f = _d[1], secondarySkillA = _f === void 0 ? "secondary" : _f; + console.log(nameMA); +} +foo1(robotA); +foo1(["roomba", ["vaccum", "mopping"]]); +foo2(robotA); +foo2(["roomba", ["vaccum", "mopping"]]); +foo3(robotA); +foo3(["roomba", ["vaccum", "mopping"]]); +//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map new file mode 100644 index 00000000000..a489a3e41bf --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts"],"names":[],"mappings":"AAIA,IAAI,MAAM,GAAU,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExD,cAAc,EAA0E;QAA1E,wDAA0E,EAAvE,UAA+B,EAA/B,oDAA+B;IAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAA2D;QAA1D,6DAAiB,EAAjB,sCAAiB;IAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,cAAc,EAGoB;QAHnB,UAAiB,EAAjB,sCAAiB,EAAE,UAGR,EAHQ,gDAGR,EAFtB,UAAyB,EAAzB,8CAAyB,EACzB,UAA6B,EAA7B,kDAA6B;IAE7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAExC,IAAI,CAAC,MAAM,CAAC,CAAC;AACb,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.sourcemap.txt new file mode 100644 index 00000000000..28f94da65a1 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.sourcemap.txt @@ -0,0 +1,512 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js +mapUrl: sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js +sourceFile:sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts +------------------------------------------------------------------- +>>>var robotA = ["trimmer", ["trimming", "edging"]]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [string, string[]]; + > +2 >var +3 > robotA +4 > : Robot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1 >Emitted(1, 1) Source(5, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(5, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(5, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(5, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(5, 22) + SourceIndex(0) +6 >Emitted(1, 24) Source(5, 31) + SourceIndex(0) +7 >Emitted(1, 26) Source(5, 33) + SourceIndex(0) +8 >Emitted(1, 27) Source(5, 34) + SourceIndex(0) +9 >Emitted(1, 37) Source(5, 44) + SourceIndex(0) +10>Emitted(1, 39) Source(5, 46) + SourceIndex(0) +11>Emitted(1, 47) Source(5, 54) + SourceIndex(0) +12>Emitted(1, 48) Source(5, 55) + SourceIndex(0) +13>Emitted(1, 49) Source(5, 56) + SourceIndex(0) +14>Emitted(1, 50) Source(5, 57) + SourceIndex(0) +--- +>>>function foo1(_a) { +1 > +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >function foo1( +3 > [, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]] +1 >Emitted(2, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(2, 15) Source(7, 15) + SourceIndex(0) +3 >Emitted(2, 17) Source(7, 89) + SourceIndex(0) +--- +>>> var _b = _a === void 0 ? ["name", ["skill1", "skill2"]] : _a, _c = _b[1], skillA = _c === void 0 ? ["noSkill", "noSkill"] : _c; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]] +3 > +4 > skillA = ["noSkill", "noSkill"] +5 > +6 > skillA = ["noSkill", "noSkill"] +1->Emitted(3, 9) Source(7, 15) + SourceIndex(0) +2 >Emitted(3, 65) Source(7, 89) + SourceIndex(0) +3 >Emitted(3, 67) Source(7, 18) + SourceIndex(0) +4 >Emitted(3, 77) Source(7, 49) + SourceIndex(0) +5 >Emitted(3, 79) Source(7, 18) + SourceIndex(0) +6 >Emitted(3, 131) Source(7, 49) + SourceIndex(0) +--- +>>> console.log(skillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot= ["name", ["skill1", "skill2"]]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > skillA +7 > ) +8 > ; +1 >Emitted(4, 5) Source(8, 5) + SourceIndex(0) +2 >Emitted(4, 12) Source(8, 12) + SourceIndex(0) +3 >Emitted(4, 13) Source(8, 13) + SourceIndex(0) +4 >Emitted(4, 16) Source(8, 16) + SourceIndex(0) +5 >Emitted(4, 17) Source(8, 17) + SourceIndex(0) +6 >Emitted(4, 23) Source(8, 23) + SourceIndex(0) +7 >Emitted(4, 24) Source(8, 24) + SourceIndex(0) +8 >Emitted(4, 25) Source(8, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(9, 2) + SourceIndex(0) +--- +>>>function foo2(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo2( +3 > [nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]] +1->Emitted(6, 1) Source(11, 1) + SourceIndex(0) +2 >Emitted(6, 15) Source(11, 15) + SourceIndex(0) +3 >Emitted(6, 17) Source(11, 74) + SourceIndex(0) +--- +>>> var _b = (_a === void 0 ? ["name", ["skill1", "skill2"]] : _a)[0], nameMB = _b === void 0 ? "noName" : _b; +1->^^^^^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > nameMB = "noName" +3 > +4 > nameMB = "noName" +1->Emitted(7, 9) Source(11, 16) + SourceIndex(0) +2 >Emitted(7, 70) Source(11, 33) + SourceIndex(0) +3 >Emitted(7, 72) Source(11, 16) + SourceIndex(0) +4 >Emitted(7, 110) Source(11, 33) + SourceIndex(0) +--- +>>> console.log(nameMB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >]: Robot = ["name", ["skill1", "skill2"]]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMB +7 > ) +8 > ; +1 >Emitted(8, 5) Source(12, 5) + SourceIndex(0) +2 >Emitted(8, 12) Source(12, 12) + SourceIndex(0) +3 >Emitted(8, 13) Source(12, 13) + SourceIndex(0) +4 >Emitted(8, 16) Source(12, 16) + SourceIndex(0) +5 >Emitted(8, 17) Source(12, 17) + SourceIndex(0) +6 >Emitted(8, 23) Source(12, 23) + SourceIndex(0) +7 >Emitted(8, 24) Source(12, 24) + SourceIndex(0) +8 >Emitted(8, 25) Source(12, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(13, 2) + SourceIndex(0) +--- +>>>function foo3(_a) { +1-> +2 >^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >function foo3( +3 > [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["noSkill", "noSkill"]]: Robot +1->Emitted(10, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(10, 15) Source(15, 15) + SourceIndex(0) +3 >Emitted(10, 17) Source(18, 35) + SourceIndex(0) +--- +>>> var _b = _a[0], nameMA = _b === void 0 ? "noName" : _b, _c = _a[1], _d = _c === void 0 ? ["noSkill", "noSkill"] : _c, _e = _d[0], primarySkillA = _e === void 0 ? "primary" : _e, _f = _d[1], secondarySkillA = _f === void 0 ? "secondary" : _f; +1->^^^^^^^^ +2 > ^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > nameMA = "noName" +3 > +4 > nameMA = "noName" +5 > , +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["noSkill", "noSkill"] +7 > +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["noSkill", "noSkill"] +9 > +10> primarySkillA = "primary" +11> +12> primarySkillA = "primary" +13> , + > +14> secondarySkillA = "secondary" +15> +16> secondarySkillA = "secondary" +1->Emitted(11, 9) Source(15, 16) + SourceIndex(0) +2 >Emitted(11, 19) Source(15, 33) + SourceIndex(0) +3 >Emitted(11, 21) Source(15, 16) + SourceIndex(0) +4 >Emitted(11, 59) Source(15, 33) + SourceIndex(0) +5 >Emitted(11, 61) Source(15, 35) + SourceIndex(0) +6 >Emitted(11, 71) Source(18, 27) + SourceIndex(0) +7 >Emitted(11, 73) Source(15, 35) + SourceIndex(0) +8 >Emitted(11, 121) Source(18, 27) + SourceIndex(0) +9 >Emitted(11, 123) Source(16, 5) + SourceIndex(0) +10>Emitted(11, 133) Source(16, 30) + SourceIndex(0) +11>Emitted(11, 135) Source(16, 5) + SourceIndex(0) +12>Emitted(11, 181) Source(16, 30) + SourceIndex(0) +13>Emitted(11, 183) Source(17, 5) + SourceIndex(0) +14>Emitted(11, 193) Source(17, 34) + SourceIndex(0) +15>Emitted(11, 195) Source(17, 5) + SourceIndex(0) +16>Emitted(11, 245) Source(17, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["noSkill", "noSkill"]]: Robot) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(12, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(19, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(19, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(19, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(19, 17) + SourceIndex(0) +6 >Emitted(12, 23) Source(19, 23) + SourceIndex(0) +7 >Emitted(12, 24) Source(19, 24) + SourceIndex(0) +8 >Emitted(12, 25) Source(19, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(20, 2) + SourceIndex(0) +--- +>>>foo1(robotA); +1-> +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >foo1 +3 > ( +4 > robotA +5 > ) +6 > ; +1->Emitted(14, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(14, 6) Source(22, 6) + SourceIndex(0) +4 >Emitted(14, 12) Source(22, 12) + SourceIndex(0) +5 >Emitted(14, 13) Source(22, 13) + SourceIndex(0) +6 >Emitted(14, 14) Source(22, 14) + SourceIndex(0) +--- +>>>foo1(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >foo1 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(15, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(15, 6) Source(23, 6) + SourceIndex(0) +4 >Emitted(15, 7) Source(23, 7) + SourceIndex(0) +5 >Emitted(15, 15) Source(23, 15) + SourceIndex(0) +6 >Emitted(15, 17) Source(23, 17) + SourceIndex(0) +7 >Emitted(15, 18) Source(23, 18) + SourceIndex(0) +8 >Emitted(15, 26) Source(23, 26) + SourceIndex(0) +9 >Emitted(15, 28) Source(23, 28) + SourceIndex(0) +10>Emitted(15, 37) Source(23, 37) + SourceIndex(0) +11>Emitted(15, 38) Source(23, 38) + SourceIndex(0) +12>Emitted(15, 39) Source(23, 39) + SourceIndex(0) +13>Emitted(15, 40) Source(23, 40) + SourceIndex(0) +14>Emitted(15, 41) Source(23, 41) + SourceIndex(0) +--- +>>>foo2(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo2 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(16, 1) Source(25, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(25, 5) + SourceIndex(0) +3 >Emitted(16, 6) Source(25, 6) + SourceIndex(0) +4 >Emitted(16, 12) Source(25, 12) + SourceIndex(0) +5 >Emitted(16, 13) Source(25, 13) + SourceIndex(0) +6 >Emitted(16, 14) Source(25, 14) + SourceIndex(0) +--- +>>>foo2(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >foo2 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(17, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(17, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(17, 6) Source(26, 6) + SourceIndex(0) +4 >Emitted(17, 7) Source(26, 7) + SourceIndex(0) +5 >Emitted(17, 15) Source(26, 15) + SourceIndex(0) +6 >Emitted(17, 17) Source(26, 17) + SourceIndex(0) +7 >Emitted(17, 18) Source(26, 18) + SourceIndex(0) +8 >Emitted(17, 26) Source(26, 26) + SourceIndex(0) +9 >Emitted(17, 28) Source(26, 28) + SourceIndex(0) +10>Emitted(17, 37) Source(26, 37) + SourceIndex(0) +11>Emitted(17, 38) Source(26, 38) + SourceIndex(0) +12>Emitted(17, 39) Source(26, 39) + SourceIndex(0) +13>Emitted(17, 40) Source(26, 40) + SourceIndex(0) +14>Emitted(17, 41) Source(26, 41) + SourceIndex(0) +--- +>>>foo3(robotA); +1 > +2 >^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +2 >foo3 +3 > ( +4 > robotA +5 > ) +6 > ; +1 >Emitted(18, 1) Source(28, 1) + SourceIndex(0) +2 >Emitted(18, 5) Source(28, 5) + SourceIndex(0) +3 >Emitted(18, 6) Source(28, 6) + SourceIndex(0) +4 >Emitted(18, 12) Source(28, 12) + SourceIndex(0) +5 >Emitted(18, 13) Source(28, 13) + SourceIndex(0) +6 >Emitted(18, 14) Source(28, 14) + SourceIndex(0) +--- +>>>foo3(["roomba", ["vaccum", "mopping"]]); +1-> +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^ +8 > ^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^ +11> ^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >foo3 +3 > ( +4 > [ +5 > "roomba" +6 > , +7 > [ +8 > "vaccum" +9 > , +10> "mopping" +11> ] +12> ] +13> ) +14> ; +1->Emitted(19, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(19, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(19, 6) Source(29, 6) + SourceIndex(0) +4 >Emitted(19, 7) Source(29, 7) + SourceIndex(0) +5 >Emitted(19, 15) Source(29, 15) + SourceIndex(0) +6 >Emitted(19, 17) Source(29, 17) + SourceIndex(0) +7 >Emitted(19, 18) Source(29, 18) + SourceIndex(0) +8 >Emitted(19, 26) Source(29, 26) + SourceIndex(0) +9 >Emitted(19, 28) Source(29, 28) + SourceIndex(0) +10>Emitted(19, 37) Source(29, 37) + SourceIndex(0) +11>Emitted(19, 38) Source(29, 38) + SourceIndex(0) +12>Emitted(19, 39) Source(29, 39) + SourceIndex(0) +13>Emitted(19, 40) Source(29, 40) + SourceIndex(0) +14>Emitted(19, 41) Source(29, 41) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.symbols new file mode 100644 index 00000000000..923e8327e6c --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.symbols @@ -0,0 +1,80 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 1, 8)) +} +type Robot = [string, string[]]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 2, 1)) + +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 2, 1)) + +function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 56)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 6, 16)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 2, 1)) + + console.log(skillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 6, 16)) +} + +function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 8, 1)) +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 10, 15)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 2, 1)) + + console.log(nameMB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMB : Symbol(nameMB, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 10, 15)) +} + +function foo3([nameMA = "noName", [ +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 12, 1)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 14, 15)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 14, 35)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 15, 30)) + +] = ["noSkill", "noSkill"]]: Robot) { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 2, 1)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 14, 15)) +} + +foo1(robotA); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 56)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 3)) + +foo1(["roomba", ["vaccum", "mopping"]]); +>foo1 : Symbol(foo1, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 56)) + +foo2(robotA); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 8, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 3)) + +foo2(["roomba", ["vaccum", "mopping"]]); +>foo2 : Symbol(foo2, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 8, 1)) + +foo3(robotA); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 12, 1)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 4, 3)) + +foo3(["roomba", ["vaccum", "mopping"]]); +>foo3 : Symbol(foo3, Decl(sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts, 12, 1)) + diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types new file mode 100644 index 00000000000..52423dfce21 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types @@ -0,0 +1,139 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [string, string[]]; +>Robot : [string, string[]] + +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; +>robotA : [string, string[]] +>Robot : [string, string[]] +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string + +function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { +>foo1 : ([, skillA = ["noSkill", "noSkill"]]?: [string, string[]]) => void +> : undefined +>skillA : string[] +>["noSkill", "noSkill"] : string[] +>"noSkill" : string +>"noSkill" : string +>Robot : [string, string[]] +>["name", ["skill1", "skill2"]] : [string, string[]] +>"name" : string +>["skill1", "skill2"] : string[] +>"skill1" : string +>"skill2" : string + + console.log(skillA); +>console.log(skillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>skillA : string[] +} + +function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { +>foo2 : ([nameMB = "noName"]?: [string, string[]]) => void +>nameMB : string +>"noName" : string +>Robot : [string, string[]] +>["name", ["skill1", "skill2"]] : [string, string[]] +>"name" : string +>["skill1", "skill2"] : string[] +>"skill1" : string +>"skill2" : string + + console.log(nameMB); +>console.log(nameMB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMB : string +} + +function foo3([nameMA = "noName", [ +>foo3 : ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["noSkill", "noSkill"]]: [string, string[]]) => void +>nameMA : string +>"noName" : string + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["noSkill", "noSkill"]]: Robot) { +>["noSkill", "noSkill"] : [string, string] +>"noSkill" : string +>"noSkill" : string +>Robot : [string, string[]] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +foo1(robotA); +>foo1(robotA) : void +>foo1 : ([, skillA = ["noSkill", "noSkill"]]?: [string, string[]]) => void +>robotA : [string, string[]] + +foo1(["roomba", ["vaccum", "mopping"]]); +>foo1(["roomba", ["vaccum", "mopping"]]) : void +>foo1 : ([, skillA = ["noSkill", "noSkill"]]?: [string, string[]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, string[]] +>"roomba" : string +>["vaccum", "mopping"] : string[] +>"vaccum" : string +>"mopping" : string + +foo2(robotA); +>foo2(robotA) : void +>foo2 : ([nameMB = "noName"]?: [string, string[]]) => void +>robotA : [string, string[]] + +foo2(["roomba", ["vaccum", "mopping"]]); +>foo2(["roomba", ["vaccum", "mopping"]]) : void +>foo2 : ([nameMB = "noName"]?: [string, string[]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, string[]] +>"roomba" : string +>["vaccum", "mopping"] : string[] +>"vaccum" : string +>"mopping" : string + +foo3(robotA); +>foo3(robotA) : void +>foo3 : ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["noSkill", "noSkill"]]: [string, string[]]) => void +>robotA : [string, string[]] + +foo3(["roomba", ["vaccum", "mopping"]]); +>foo3(["roomba", ["vaccum", "mopping"]]) : void +>foo3 : ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["noSkill", "noSkill"]]: [string, string[]]) => void +>["roomba", ["vaccum", "mopping"]] : [string, string[]] +>"roomba" : string +>["vaccum", "mopping"] : string[] +>"vaccum" : string +>"mopping" : string + diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..c9dd735e8b6 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts @@ -0,0 +1,44 @@ +// @sourcemap: true +declare var console: { + log(msg: string): void; +} +interface Robot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} +var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + +function foo1( + { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }: Robot = robotA) { + console.log(primaryA); +} +function foo2( + { + name: nameC = "name", + skills: { + primary: primaryB = "primary", + secondary: secondaryB = "secondary" + } = { primary: "SomeSkill", secondary: "someSkill" } + }: Robot = robotA) { + console.log(secondaryB); +} +function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { + console.log(skills.primary); +} + +foo1(robotA); +foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo2(robotA); +foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + +foo3(robotA); +foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..6fc9c5a605e --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParameterObjectBindingPatternDefaultValues.ts @@ -0,0 +1,29 @@ +// @sourcemap: true +interface Robot { + name?: string; + skill?: string; +} +declare var console: { + log(msg: string): void; +} +var hello = "hello"; +var robotA: Robot = { name: "mower", skill: "mowing" }; + +function foo1({ name: nameA = "" }: Robot = { }) { + console.log(nameA); +} +function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + console.log(nameB); +} +function foo3({ name = "" }: Robot = {}) { + console.log(name); +} + +foo1(robotA); +foo1({ name: "Edger", skill: "cutting edges" }); + +foo2(robotA); +foo2({ name: "Edger", skill: "cutting edges" }); + +foo3(robotA); +foo3({ name: "Edger", skill: "cutting edges" }); diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..345d3965156 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.ts @@ -0,0 +1,34 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +var robotA: Robot = [1, "mower", "mowing"]; + +function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { + console.log(nameA); +} + +function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { + console.log(numberB); +} + +function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + console.log(nameA2); +} + +function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + console.log(robotAInfo); +} + +foo1(robotA); +foo1([2, "trimmer", "trimming"]); + +foo2(robotA); +foo2([2, "trimmer", "trimming"]); + +foo3(robotA); +foo3([2, "trimmer", "trimming"]); + +foo4(robotA); +foo4([2, "trimmer", "trimming"]); \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..83f95c09c02 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.ts @@ -0,0 +1,30 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [string, string[]]; +var robotA: Robot = ["trimmer", ["trimming", "edging"]]; + +function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { + console.log(skillA); +} + +function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { + console.log(nameMB); +} + +function foo3([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["noSkill", "noSkill"]]: Robot) { + console.log(nameMA); +} + +foo1(robotA); +foo1(["roomba", ["vaccum", "mopping"]]); + +foo2(robotA); +foo2(["roomba", ["vaccum", "mopping"]]); + +foo3(robotA); +foo3(["roomba", ["vaccum", "mopping"]]); \ No newline at end of file From 15ac9b32abf66acff66cdeb78c0718b55386d29f Mon Sep 17 00:00:00 2001 From: Yui T Date: Fri, 11 Dec 2015 14:12:57 -0800 Subject: [PATCH 062/164] Update tests --- .../fourslash/tsxCompletionOnClosingTag1.ts | 6 ++++++ .../fourslash/tsxCompletionOnClosingTag2.ts | 12 ++++++++--- .../fourslash/tsxCompletionOnClosingTag3.ts | 20 ------------------- .../tsxCompletionOnClosingTagWithoutJSX1.ts | 8 ++++++++ ...> tsxCompletionOnClosingTagWithoutJSX2.ts} | 0 .../tsxCompletionOnOpeningTagWithoutJSX1.ts | 8 ++++++++ 6 files changed, 31 insertions(+), 23 deletions(-) delete mode 100644 tests/cases/fourslash/tsxCompletionOnClosingTag3.ts create mode 100644 tests/cases/fourslash/tsxCompletionOnClosingTagWithoutJSX1.ts rename tests/cases/fourslash/{tsxCompletionOnClosingTag4.ts => tsxCompletionOnClosingTagWithoutJSX2.ts} (100%) create mode 100644 tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTag1.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag1.ts index 742009b487e..54a0b61879f 100644 --- a/tests/cases/fourslash/tsxCompletionOnClosingTag1.ts +++ b/tests/cases/fourslash/tsxCompletionOnClosingTag1.ts @@ -1,6 +1,12 @@ /// //@Filename: file.tsx +//// declare module JSX { +//// interface Element { } +//// interface IntrinsicElements { +//// div: { ONE: string; TWO: number; } +//// } +//// } //// var x1 =
+////

Hello world +//// -goTo.marker(); +goTo.marker("1"); verify.memberListCount(1); -verify.completionListContains('div'); \ No newline at end of file +verify.completionListContains('div'); + +goTo.marker("2"); +verify.memberListCount(1); +verify.completionListContains('h1') diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts b/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts deleted file mode 100644 index a39740df586..00000000000 --- a/tests/cases/fourslash/tsxCompletionOnClosingTag3.ts +++ /dev/null @@ -1,20 +0,0 @@ -/// - -//@Filename: file.tsx -//// declare module JSX { -//// interface Element { } -//// interface IntrinsicElements { -//// div: { ONE: string; TWO: number; } -//// } -//// } -//// var x1 =
-////

Hello world -//// - -goTo.marker("1"); -verify.memberListCount(1); -verify.completionListContains('div'); - -goTo.marker("2"); -verify.memberListCount(1); -verify.completionListContains('h1') diff --git a/tests/cases/fourslash/tsxCompletionOnClosingTagWithoutJSX1.ts b/tests/cases/fourslash/tsxCompletionOnClosingTagWithoutJSX1.ts new file mode 100644 index 00000000000..742009b487e --- /dev/null +++ b/tests/cases/fourslash/tsxCompletionOnClosingTagWithoutJSX1.ts @@ -0,0 +1,8 @@ +/// + +//@Filename: file.tsx +//// var x1 =
+ +//@Filename: file.tsx +//// var x =
Date: Fri, 11 Dec 2015 14:18:31 -0800 Subject: [PATCH 063/164] Test cases for destructuring with default values in "for of" --- ...ngForOfArrayBindingPatternDefaultValues.js | 204 + ...rOfArrayBindingPatternDefaultValues.js.map | 2 + ...yBindingPatternDefaultValues.sourcemap.txt | 2742 ++++++++++++ ...OfArrayBindingPatternDefaultValues.symbols | 325 ++ ...orOfArrayBindingPatternDefaultValues.types | 452 ++ ...gForOfArrayBindingPatternDefaultValues2.js | 214 + ...OfArrayBindingPatternDefaultValues2.js.map | 2 + ...BindingPatternDefaultValues2.sourcemap.txt | 2853 ++++++++++++ ...fArrayBindingPatternDefaultValues2.symbols | 345 ++ ...rOfArrayBindingPatternDefaultValues2.types | 544 +++ ...gForOfObjectBindingPatternDefaultValues.js | 152 + ...OfObjectBindingPatternDefaultValues.js.map | 2 + ...tBindingPatternDefaultValues.sourcemap.txt | 2082 +++++++++ ...fObjectBindingPatternDefaultValues.symbols | 314 ++ ...rOfObjectBindingPatternDefaultValues.types | 428 ++ ...ForOfObjectBindingPatternDefaultValues2.js | 282 ++ ...fObjectBindingPatternDefaultValues2.js.map | 2 + ...BindingPatternDefaultValues2.sourcemap.txt | 3951 +++++++++++++++++ ...ObjectBindingPatternDefaultValues2.symbols | 564 +++ ...OfObjectBindingPatternDefaultValues2.types | 829 ++++ ...ngForOfArrayBindingPatternDefaultValues.ts | 105 + ...gForOfArrayBindingPatternDefaultValues2.ts | 110 + ...gForOfObjectBindingPatternDefaultValues.ts | 90 + ...ForOfObjectBindingPatternDefaultValues2.ts | 167 + 24 files changed, 16761 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js new file mode 100644 index 00000000000..ff692af87f2 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js @@ -0,0 +1,204 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +for (let [, nameA = "noName"] of robots) { + console.log(nameA); +} +for (let [, nameA = "noName"] of getRobots()) { + console.log(nameA); +} +for (let [, nameA = "noName"] of [robotA, robotB]) { + console.log(nameA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for (let [numberB = -1] of robots) { + console.log(numberB); +} +for (let [numberB = -1] of getRobots()) { + console.log(numberB); +} +for (let [numberB = -1] of [robotA, robotB]) { + console.log(numberB); +} +for (let [nameB = "noName"] of multiRobots) { + console.log(nameB); +} +for (let [nameB = "noName"] of getMultiRobots()) { + console.log(nameB); +} +for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + console.log(nameA2); +} +for (let [nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(nameMA); +} +for (let [nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(nameMA); +} +for (let [nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for (let [numberA3 = -1, ...robotAInfo] of robots) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} + +//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var robots = [robotA, robotB]; +function getRobots() { + return robots; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + var _a = robots_1[_i], _b = _a[1], nameA = _b === void 0 ? "noName" : _b; + console.log(nameA); +} +for (var _c = 0, _d = getRobots(); _c < _d.length; _c++) { + var _e = _d[_c], _f = _e[1], nameA = _f === void 0 ? "noName" : _f; + console.log(nameA); +} +for (var _g = 0, _h = [robotA, robotB]; _g < _h.length; _g++) { + var _j = _h[_g], _k = _j[1], nameA = _k === void 0 ? "noName" : _k; + console.log(nameA); +} +for (var _l = 0, multiRobots_1 = multiRobots; _l < multiRobots_1.length; _l++) { + var _m = multiRobots_1[_l], _o = _m[1], _p = _o === void 0 ? ["skill1", "skill2"] : _o, _q = _p[0], primarySkillA = _q === void 0 ? "primary" : _q, _r = _p[1], secondarySkillA = _r === void 0 ? "secondary" : _r; + console.log(primarySkillA); +} +for (var _s = 0, _t = getMultiRobots(); _s < _t.length; _s++) { + var _u = _t[_s], _v = _u[1], _w = _v === void 0 ? ["skill1", "skill2"] : _v, _x = _w[0], primarySkillA = _x === void 0 ? "primary" : _x, _y = _w[1], secondarySkillA = _y === void 0 ? "secondary" : _y; + console.log(primarySkillA); +} +for (var _z = 0, _0 = [multiRobotA, multiRobotB]; _z < _0.length; _z++) { + var _1 = _0[_z], _2 = _1[1], _3 = _2 === void 0 ? ["skill1", "skill2"] : _2, _4 = _3[0], primarySkillA = _4 === void 0 ? "primary" : _4, _5 = _3[1], secondarySkillA = _5 === void 0 ? "secondary" : _5; + console.log(primarySkillA); +} +for (var _6 = 0, robots_2 = robots; _6 < robots_2.length; _6++) { + var _7 = robots_2[_6][0], numberB = _7 === void 0 ? -1 : _7; + console.log(numberB); +} +for (var _8 = 0, _9 = getRobots(); _8 < _9.length; _8++) { + var _10 = _9[_8][0], numberB = _10 === void 0 ? -1 : _10; + console.log(numberB); +} +for (var _11 = 0, _12 = [robotA, robotB]; _11 < _12.length; _11++) { + var _13 = _12[_11][0], numberB = _13 === void 0 ? -1 : _13; + console.log(numberB); +} +for (var _14 = 0, multiRobots_2 = multiRobots; _14 < multiRobots_2.length; _14++) { + var _15 = multiRobots_2[_14][0], nameB = _15 === void 0 ? "noName" : _15; + console.log(nameB); +} +for (var _16 = 0, _17 = getMultiRobots(); _16 < _17.length; _16++) { + var _18 = _17[_16][0], nameB = _18 === void 0 ? "noName" : _18; + console.log(nameB); +} +for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { + var _21 = _20[_19][0], nameB = _21 === void 0 ? "noName" : _21; + console.log(nameB); +} +for (var _22 = 0, robots_3 = robots; _22 < robots_3.length; _22++) { + var _23 = robots_3[_22], _24 = _23[0], numberA2 = _24 === void 0 ? -1 : _24, _25 = _23[1], nameA2 = _25 === void 0 ? "noName" : _25, _26 = _23[2], skillA2 = _26 === void 0 ? "skill" : _26; + console.log(nameA2); +} +for (var _27 = 0, _28 = getRobots(); _27 < _28.length; _27++) { + var _29 = _28[_27], _30 = _29[0], numberA2 = _30 === void 0 ? -1 : _30, _31 = _29[1], nameA2 = _31 === void 0 ? "noName" : _31, _32 = _29[2], skillA2 = _32 === void 0 ? "skill" : _32; + console.log(nameA2); +} +for (var _33 = 0, _34 = [robotA, robotB]; _33 < _34.length; _33++) { + var _35 = _34[_33], _36 = _35[0], numberA2 = _36 === void 0 ? -1 : _36, _37 = _35[1], nameA2 = _37 === void 0 ? "noName" : _37, _38 = _35[2], skillA2 = _38 === void 0 ? "skill" : _38; + console.log(nameA2); +} +for (var _39 = 0, multiRobots_3 = multiRobots; _39 < multiRobots_3.length; _39++) { + var _40 = multiRobots_3[_39], _41 = _40[0], nameMA = _41 === void 0 ? "noName" : _41, _42 = _40[1], _43 = _42 === void 0 ? ["skill1", "skill2"] : _42, _44 = _43[0], primarySkillA = _44 === void 0 ? "primary" : _44, _45 = _43[1], secondarySkillA = _45 === void 0 ? "secondary" : _45; + console.log(nameMA); +} +for (var _46 = 0, _47 = getMultiRobots(); _46 < _47.length; _46++) { + var _48 = _47[_46], _49 = _48[0], nameMA = _49 === void 0 ? "noName" : _49, _50 = _48[1], _51 = _50 === void 0 ? ["skill1", "skill2"] : _50, _52 = _51[0], primarySkillA = _52 === void 0 ? "primary" : _52, _53 = _51[1], secondarySkillA = _53 === void 0 ? "secondary" : _53; + console.log(nameMA); +} +for (var _54 = 0, _55 = [multiRobotA, multiRobotB]; _54 < _55.length; _54++) { + var _56 = _55[_54], _57 = _56[0], nameMA = _57 === void 0 ? "noName" : _57, _58 = _56[1], _59 = _58 === void 0 ? ["skill1", "skill2"] : _58, _60 = _59[0], primarySkillA = _60 === void 0 ? "primary" : _60, _61 = _59[1], secondarySkillA = _61 === void 0 ? "secondary" : _61; + console.log(nameMA); +} +for (var _62 = 0, robots_4 = robots; _62 < robots_4.length; _62++) { + var _63 = robots_4[_62], _64 = _63[0], numberA3 = _64 === void 0 ? -1 : _64, robotAInfo = _63.slice(1); + console.log(numberA3); +} +for (var _65 = 0, _66 = getRobots(); _65 < _66.length; _65++) { + var _67 = _66[_65], _68 = _67[0], numberA3 = _68 === void 0 ? -1 : _68, robotAInfo = _67.slice(1); + console.log(numberA3); +} +for (var _69 = 0, _70 = [robotA, robotB]; _69 < _70.length; _69++) { + var _71 = _70[_69], _72 = _71[0], numberA3 = _72 === void 0 ? -1 : _72, robotAInfo = _71.slice(1); + console.log(numberA3); +} +//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..4d12f811df1 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..de9a60de903 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,2742 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +1-> + > +2 >let +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(8, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(8, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(8, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(8, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(8, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(8, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(8, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(8, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(8, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(8, 48) + SourceIndex(0) +--- +>>>var robots = [robotA, robotB]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^^ +8 > ^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > robots +4 > = +5 > [ +6 > robotA +7 > , +8 > robotB +9 > ] +10> ; +1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(9, 14) + SourceIndex(0) +5 >Emitted(3, 15) Source(9, 15) + SourceIndex(0) +6 >Emitted(3, 21) Source(9, 21) + SourceIndex(0) +7 >Emitted(3, 23) Source(9, 23) + SourceIndex(0) +8 >Emitted(3, 29) Source(9, 29) + SourceIndex(0) +9 >Emitted(3, 30) Source(9, 30) + SourceIndex(0) +10>Emitted(3, 31) Source(9, 31) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(11, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(11, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) +3 >Emitted(7, 16) Source(14, 16) + SourceIndex(0) +4 >Emitted(7, 19) Source(14, 38) + SourceIndex(0) +5 >Emitted(7, 20) Source(14, 39) + SourceIndex(0) +6 >Emitted(7, 27) Source(14, 46) + SourceIndex(0) +7 >Emitted(7, 29) Source(14, 48) + SourceIndex(0) +8 >Emitted(7, 30) Source(14, 49) + SourceIndex(0) +9 >Emitted(7, 38) Source(14, 57) + SourceIndex(0) +10>Emitted(7, 40) Source(14, 59) + SourceIndex(0) +11>Emitted(7, 42) Source(14, 61) + SourceIndex(0) +12>Emitted(7, 43) Source(14, 62) + SourceIndex(0) +13>Emitted(7, 44) Source(14, 63) + SourceIndex(0) +14>Emitted(7, 45) Source(14, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(8, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(8, 16) Source(15, 16) + SourceIndex(0) +4 >Emitted(8, 19) Source(15, 38) + SourceIndex(0) +5 >Emitted(8, 20) Source(15, 39) + SourceIndex(0) +6 >Emitted(8, 29) Source(15, 48) + SourceIndex(0) +7 >Emitted(8, 31) Source(15, 50) + SourceIndex(0) +8 >Emitted(8, 32) Source(15, 51) + SourceIndex(0) +9 >Emitted(8, 42) Source(15, 61) + SourceIndex(0) +10>Emitted(8, 44) Source(15, 63) + SourceIndex(0) +11>Emitted(8, 52) Source(15, 71) + SourceIndex(0) +12>Emitted(8, 53) Source(15, 72) + SourceIndex(0) +13>Emitted(8, 54) Source(15, 73) + SourceIndex(0) +14>Emitted(8, 55) Source(15, 74) + SourceIndex(0) +--- +>>>var multiRobots = [multiRobotA, multiRobotB]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > multiRobots +4 > = +5 > [ +6 > multiRobotA +7 > , +8 > multiRobotB +9 > ] +10> ; +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(16, 5) + SourceIndex(0) +3 >Emitted(9, 16) Source(16, 16) + SourceIndex(0) +4 >Emitted(9, 19) Source(16, 19) + SourceIndex(0) +5 >Emitted(9, 20) Source(16, 20) + SourceIndex(0) +6 >Emitted(9, 31) Source(16, 31) + SourceIndex(0) +7 >Emitted(9, 33) Source(16, 33) + SourceIndex(0) +8 >Emitted(9, 44) Source(16, 44) + SourceIndex(0) +9 >Emitted(9, 45) Source(16, 45) + SourceIndex(0) +10>Emitted(9, 46) Source(16, 46) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(10, 1) Source(17, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(11, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(11, 11) Source(18, 11) + SourceIndex(0) +3 >Emitted(11, 12) Source(18, 12) + SourceIndex(0) +4 >Emitted(11, 23) Source(18, 23) + SourceIndex(0) +5 >Emitted(11, 24) Source(18, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(19, 2) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let [, nameA = "noName"] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 4) Source(21, 4) + SourceIndex(0) +3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +4 >Emitted(13, 6) Source(21, 34) + SourceIndex(0) +5 >Emitted(13, 16) Source(21, 40) + SourceIndex(0) +6 >Emitted(13, 18) Source(21, 34) + SourceIndex(0) +7 >Emitted(13, 35) Source(21, 40) + SourceIndex(0) +8 >Emitted(13, 37) Source(21, 34) + SourceIndex(0) +9 >Emitted(13, 57) Source(21, 40) + SourceIndex(0) +10>Emitted(13, 59) Source(21, 34) + SourceIndex(0) +11>Emitted(13, 63) Source(21, 40) + SourceIndex(0) +12>Emitted(13, 64) Source(21, 41) + SourceIndex(0) +--- +>>> var _a = robots_1[_i], _b = _a[1], nameA = _b === void 0 ? "noName" : _b; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [, nameA = "noName"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(14, 5) Source(21, 6) + SourceIndex(0) +2 >Emitted(14, 26) Source(21, 30) + SourceIndex(0) +3 >Emitted(14, 28) Source(21, 13) + SourceIndex(0) +4 >Emitted(14, 38) Source(21, 29) + SourceIndex(0) +5 >Emitted(14, 40) Source(21, 13) + SourceIndex(0) +6 >Emitted(14, 77) Source(21, 29) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(15, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(15, 12) Source(22, 12) + SourceIndex(0) +3 >Emitted(15, 13) Source(22, 13) + SourceIndex(0) +4 >Emitted(15, 16) Source(22, 16) + SourceIndex(0) +5 >Emitted(15, 17) Source(22, 17) + SourceIndex(0) +6 >Emitted(15, 22) Source(22, 22) + SourceIndex(0) +7 >Emitted(15, 23) Source(22, 23) + SourceIndex(0) +8 >Emitted(15, 24) Source(22, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(16, 2) Source(23, 2) + SourceIndex(0) +--- +>>>for (var _c = 0, _d = getRobots(); _c < _d.length; _c++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, nameA = "noName"] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(17, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(17, 4) Source(24, 4) + SourceIndex(0) +3 >Emitted(17, 5) Source(24, 5) + SourceIndex(0) +4 >Emitted(17, 6) Source(24, 34) + SourceIndex(0) +5 >Emitted(17, 16) Source(24, 45) + SourceIndex(0) +6 >Emitted(17, 18) Source(24, 34) + SourceIndex(0) +7 >Emitted(17, 23) Source(24, 34) + SourceIndex(0) +8 >Emitted(17, 32) Source(24, 43) + SourceIndex(0) +9 >Emitted(17, 34) Source(24, 45) + SourceIndex(0) +10>Emitted(17, 36) Source(24, 34) + SourceIndex(0) +11>Emitted(17, 50) Source(24, 45) + SourceIndex(0) +12>Emitted(17, 52) Source(24, 34) + SourceIndex(0) +13>Emitted(17, 56) Source(24, 45) + SourceIndex(0) +14>Emitted(17, 57) Source(24, 46) + SourceIndex(0) +--- +>>> var _e = _d[_c], _f = _e[1], nameA = _f === void 0 ? "noName" : _f; +1->^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [, nameA = "noName"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(18, 5) Source(24, 6) + SourceIndex(0) +2 >Emitted(18, 20) Source(24, 30) + SourceIndex(0) +3 >Emitted(18, 22) Source(24, 13) + SourceIndex(0) +4 >Emitted(18, 32) Source(24, 29) + SourceIndex(0) +5 >Emitted(18, 34) Source(24, 13) + SourceIndex(0) +6 >Emitted(18, 71) Source(24, 29) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(25, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(25, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(25, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(25, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(25, 17) + SourceIndex(0) +6 >Emitted(19, 22) Source(25, 22) + SourceIndex(0) +7 >Emitted(19, 23) Source(25, 23) + SourceIndex(0) +8 >Emitted(19, 24) Source(25, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(20, 2) Source(26, 2) + SourceIndex(0) +--- +>>>for (var _g = 0, _h = [robotA, robotB]; _g < _h.length; _g++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, nameA = "noName"] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(21, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(27, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(27, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(27, 34) + SourceIndex(0) +5 >Emitted(21, 16) Source(27, 50) + SourceIndex(0) +6 >Emitted(21, 18) Source(27, 34) + SourceIndex(0) +7 >Emitted(21, 24) Source(27, 35) + SourceIndex(0) +8 >Emitted(21, 30) Source(27, 41) + SourceIndex(0) +9 >Emitted(21, 32) Source(27, 43) + SourceIndex(0) +10>Emitted(21, 38) Source(27, 49) + SourceIndex(0) +11>Emitted(21, 39) Source(27, 50) + SourceIndex(0) +12>Emitted(21, 41) Source(27, 34) + SourceIndex(0) +13>Emitted(21, 55) Source(27, 50) + SourceIndex(0) +14>Emitted(21, 57) Source(27, 34) + SourceIndex(0) +15>Emitted(21, 61) Source(27, 50) + SourceIndex(0) +16>Emitted(21, 62) Source(27, 51) + SourceIndex(0) +--- +>>> var _j = _h[_g], _k = _j[1], nameA = _k === void 0 ? "noName" : _k; +1->^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [, nameA = "noName"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(22, 5) Source(27, 6) + SourceIndex(0) +2 >Emitted(22, 20) Source(27, 30) + SourceIndex(0) +3 >Emitted(22, 22) Source(27, 13) + SourceIndex(0) +4 >Emitted(22, 32) Source(27, 29) + SourceIndex(0) +5 >Emitted(22, 34) Source(27, 13) + SourceIndex(0) +6 >Emitted(22, 71) Source(27, 29) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(23, 5) Source(28, 5) + SourceIndex(0) +2 >Emitted(23, 12) Source(28, 12) + SourceIndex(0) +3 >Emitted(23, 13) Source(28, 13) + SourceIndex(0) +4 >Emitted(23, 16) Source(28, 16) + SourceIndex(0) +5 >Emitted(23, 17) Source(28, 17) + SourceIndex(0) +6 >Emitted(23, 22) Source(28, 22) + SourceIndex(0) +7 >Emitted(23, 23) Source(28, 23) + SourceIndex(0) +8 >Emitted(23, 24) Source(28, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(24, 2) Source(29, 2) + SourceIndex(0) +--- +>>>for (var _l = 0, multiRobots_1 = multiRobots; _l < multiRobots_1.length; _l++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(25, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(25, 4) Source(30, 4) + SourceIndex(0) +3 >Emitted(25, 5) Source(30, 5) + SourceIndex(0) +4 >Emitted(25, 6) Source(33, 30) + SourceIndex(0) +5 >Emitted(25, 16) Source(33, 41) + SourceIndex(0) +6 >Emitted(25, 18) Source(33, 30) + SourceIndex(0) +7 >Emitted(25, 45) Source(33, 41) + SourceIndex(0) +8 >Emitted(25, 47) Source(33, 30) + SourceIndex(0) +9 >Emitted(25, 72) Source(33, 41) + SourceIndex(0) +10>Emitted(25, 74) Source(33, 30) + SourceIndex(0) +11>Emitted(25, 78) Source(33, 41) + SourceIndex(0) +12>Emitted(25, 79) Source(33, 42) + SourceIndex(0) +--- +>>> var _m = multiRobots_1[_l], _o = _m[1], _p = _o === void 0 ? ["skill1", "skill2"] : _o, _q = _p[0], primarySkillA = _q === void 0 ? "primary" : _q, _r = _p[1], secondarySkillA = _r === void 0 ? "secondary" : _r; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +5 > +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +7 > +8 > primarySkillA = "primary" +9 > +10> primarySkillA = "primary" +11> , + > +12> secondarySkillA = "secondary" +13> +14> secondarySkillA = "secondary" +1->Emitted(26, 5) Source(30, 6) + SourceIndex(0) +2 >Emitted(26, 31) Source(33, 26) + SourceIndex(0) +3 >Emitted(26, 33) Source(30, 13) + SourceIndex(0) +4 >Emitted(26, 43) Source(33, 25) + SourceIndex(0) +5 >Emitted(26, 45) Source(30, 13) + SourceIndex(0) +6 >Emitted(26, 91) Source(33, 25) + SourceIndex(0) +7 >Emitted(26, 93) Source(31, 5) + SourceIndex(0) +8 >Emitted(26, 103) Source(31, 30) + SourceIndex(0) +9 >Emitted(26, 105) Source(31, 5) + SourceIndex(0) +10>Emitted(26, 151) Source(31, 30) + SourceIndex(0) +11>Emitted(26, 153) Source(32, 5) + SourceIndex(0) +12>Emitted(26, 163) Source(32, 34) + SourceIndex(0) +13>Emitted(26, 165) Source(32, 5) + SourceIndex(0) +14>Emitted(26, 215) Source(32, 34) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(27, 5) Source(34, 5) + SourceIndex(0) +2 >Emitted(27, 12) Source(34, 12) + SourceIndex(0) +3 >Emitted(27, 13) Source(34, 13) + SourceIndex(0) +4 >Emitted(27, 16) Source(34, 16) + SourceIndex(0) +5 >Emitted(27, 17) Source(34, 17) + SourceIndex(0) +6 >Emitted(27, 30) Source(34, 30) + SourceIndex(0) +7 >Emitted(27, 31) Source(34, 31) + SourceIndex(0) +8 >Emitted(27, 32) Source(34, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(28, 2) Source(35, 2) + SourceIndex(0) +--- +>>>for (var _s = 0, _t = getMultiRobots(); _s < _t.length; _s++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(29, 1) Source(36, 1) + SourceIndex(0) +2 >Emitted(29, 4) Source(36, 4) + SourceIndex(0) +3 >Emitted(29, 5) Source(36, 5) + SourceIndex(0) +4 >Emitted(29, 6) Source(39, 30) + SourceIndex(0) +5 >Emitted(29, 16) Source(39, 46) + SourceIndex(0) +6 >Emitted(29, 18) Source(39, 30) + SourceIndex(0) +7 >Emitted(29, 23) Source(39, 30) + SourceIndex(0) +8 >Emitted(29, 37) Source(39, 44) + SourceIndex(0) +9 >Emitted(29, 39) Source(39, 46) + SourceIndex(0) +10>Emitted(29, 41) Source(39, 30) + SourceIndex(0) +11>Emitted(29, 55) Source(39, 46) + SourceIndex(0) +12>Emitted(29, 57) Source(39, 30) + SourceIndex(0) +13>Emitted(29, 61) Source(39, 46) + SourceIndex(0) +14>Emitted(29, 62) Source(39, 47) + SourceIndex(0) +--- +>>> var _u = _t[_s], _v = _u[1], _w = _v === void 0 ? ["skill1", "skill2"] : _v, _x = _w[0], primarySkillA = _x === void 0 ? "primary" : _x, _y = _w[1], secondarySkillA = _y === void 0 ? "secondary" : _y; +1->^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +5 > +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +7 > +8 > primarySkillA = "primary" +9 > +10> primarySkillA = "primary" +11> , + > +12> secondarySkillA = "secondary" +13> +14> secondarySkillA = "secondary" +1->Emitted(30, 5) Source(36, 6) + SourceIndex(0) +2 >Emitted(30, 20) Source(39, 26) + SourceIndex(0) +3 >Emitted(30, 22) Source(36, 13) + SourceIndex(0) +4 >Emitted(30, 32) Source(39, 25) + SourceIndex(0) +5 >Emitted(30, 34) Source(36, 13) + SourceIndex(0) +6 >Emitted(30, 80) Source(39, 25) + SourceIndex(0) +7 >Emitted(30, 82) Source(37, 5) + SourceIndex(0) +8 >Emitted(30, 92) Source(37, 30) + SourceIndex(0) +9 >Emitted(30, 94) Source(37, 5) + SourceIndex(0) +10>Emitted(30, 140) Source(37, 30) + SourceIndex(0) +11>Emitted(30, 142) Source(38, 5) + SourceIndex(0) +12>Emitted(30, 152) Source(38, 34) + SourceIndex(0) +13>Emitted(30, 154) Source(38, 5) + SourceIndex(0) +14>Emitted(30, 204) Source(38, 34) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(40, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(40, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(40, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(40, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(40, 17) + SourceIndex(0) +6 >Emitted(31, 30) Source(40, 30) + SourceIndex(0) +7 >Emitted(31, 31) Source(40, 31) + SourceIndex(0) +8 >Emitted(31, 32) Source(40, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(32, 2) Source(41, 2) + SourceIndex(0) +--- +>>>for (var _z = 0, _0 = [multiRobotA, multiRobotB]; _z < _0.length; _z++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(33, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(42, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(42, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(45, 30) + SourceIndex(0) +5 >Emitted(33, 16) Source(45, 56) + SourceIndex(0) +6 >Emitted(33, 18) Source(45, 30) + SourceIndex(0) +7 >Emitted(33, 24) Source(45, 31) + SourceIndex(0) +8 >Emitted(33, 35) Source(45, 42) + SourceIndex(0) +9 >Emitted(33, 37) Source(45, 44) + SourceIndex(0) +10>Emitted(33, 48) Source(45, 55) + SourceIndex(0) +11>Emitted(33, 49) Source(45, 56) + SourceIndex(0) +12>Emitted(33, 51) Source(45, 30) + SourceIndex(0) +13>Emitted(33, 65) Source(45, 56) + SourceIndex(0) +14>Emitted(33, 67) Source(45, 30) + SourceIndex(0) +15>Emitted(33, 71) Source(45, 56) + SourceIndex(0) +16>Emitted(33, 72) Source(45, 57) + SourceIndex(0) +--- +>>> var _1 = _0[_z], _2 = _1[1], _3 = _2 === void 0 ? ["skill1", "skill2"] : _2, _4 = _3[0], primarySkillA = _4 === void 0 ? "primary" : _4, _5 = _3[1], secondarySkillA = _5 === void 0 ? "secondary" : _5; +1->^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +5 > +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +7 > +8 > primarySkillA = "primary" +9 > +10> primarySkillA = "primary" +11> , + > +12> secondarySkillA = "secondary" +13> +14> secondarySkillA = "secondary" +1->Emitted(34, 5) Source(42, 6) + SourceIndex(0) +2 >Emitted(34, 20) Source(45, 26) + SourceIndex(0) +3 >Emitted(34, 22) Source(42, 13) + SourceIndex(0) +4 >Emitted(34, 32) Source(45, 25) + SourceIndex(0) +5 >Emitted(34, 34) Source(42, 13) + SourceIndex(0) +6 >Emitted(34, 80) Source(45, 25) + SourceIndex(0) +7 >Emitted(34, 82) Source(43, 5) + SourceIndex(0) +8 >Emitted(34, 92) Source(43, 30) + SourceIndex(0) +9 >Emitted(34, 94) Source(43, 5) + SourceIndex(0) +10>Emitted(34, 140) Source(43, 30) + SourceIndex(0) +11>Emitted(34, 142) Source(44, 5) + SourceIndex(0) +12>Emitted(34, 152) Source(44, 34) + SourceIndex(0) +13>Emitted(34, 154) Source(44, 5) + SourceIndex(0) +14>Emitted(34, 204) Source(44, 34) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(35, 5) Source(46, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(46, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(46, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(46, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(46, 17) + SourceIndex(0) +6 >Emitted(35, 30) Source(46, 30) + SourceIndex(0) +7 >Emitted(35, 31) Source(46, 31) + SourceIndex(0) +8 >Emitted(35, 32) Source(46, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(36, 2) Source(47, 2) + SourceIndex(0) +--- +>>>for (var _6 = 0, robots_2 = robots; _6 < robots_2.length; _6++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^-> +1-> + > + > +2 >for +3 > +4 > (let [numberB = -1] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(37, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(49, 28) + SourceIndex(0) +5 >Emitted(37, 16) Source(49, 34) + SourceIndex(0) +6 >Emitted(37, 18) Source(49, 28) + SourceIndex(0) +7 >Emitted(37, 35) Source(49, 34) + SourceIndex(0) +8 >Emitted(37, 37) Source(49, 28) + SourceIndex(0) +9 >Emitted(37, 57) Source(49, 34) + SourceIndex(0) +10>Emitted(37, 59) Source(49, 28) + SourceIndex(0) +11>Emitted(37, 63) Source(49, 34) + SourceIndex(0) +12>Emitted(37, 64) Source(49, 35) + SourceIndex(0) +--- +>>> var _7 = robots_2[_6][0], numberB = _7 === void 0 ? -1 : _7; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > numberB = -1 +3 > +4 > numberB = -1 +1->Emitted(38, 5) Source(49, 11) + SourceIndex(0) +2 >Emitted(38, 29) Source(49, 23) + SourceIndex(0) +3 >Emitted(38, 31) Source(49, 11) + SourceIndex(0) +4 >Emitted(38, 64) Source(49, 23) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(39, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(39, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(39, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(39, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(39, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(39, 24) Source(50, 24) + SourceIndex(0) +7 >Emitted(39, 25) Source(50, 25) + SourceIndex(0) +8 >Emitted(39, 26) Source(50, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(40, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for (var _8 = 0, _9 = getRobots(); _8 < _9.length; _8++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberB = -1] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(41, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(41, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(41, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(41, 6) Source(52, 28) + SourceIndex(0) +5 >Emitted(41, 16) Source(52, 39) + SourceIndex(0) +6 >Emitted(41, 18) Source(52, 28) + SourceIndex(0) +7 >Emitted(41, 23) Source(52, 28) + SourceIndex(0) +8 >Emitted(41, 32) Source(52, 37) + SourceIndex(0) +9 >Emitted(41, 34) Source(52, 39) + SourceIndex(0) +10>Emitted(41, 36) Source(52, 28) + SourceIndex(0) +11>Emitted(41, 50) Source(52, 39) + SourceIndex(0) +12>Emitted(41, 52) Source(52, 28) + SourceIndex(0) +13>Emitted(41, 56) Source(52, 39) + SourceIndex(0) +14>Emitted(41, 57) Source(52, 40) + SourceIndex(0) +--- +>>> var _10 = _9[_8][0], numberB = _10 === void 0 ? -1 : _10; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > numberB = -1 +3 > +4 > numberB = -1 +1->Emitted(42, 5) Source(52, 11) + SourceIndex(0) +2 >Emitted(42, 24) Source(52, 23) + SourceIndex(0) +3 >Emitted(42, 26) Source(52, 11) + SourceIndex(0) +4 >Emitted(42, 61) Source(52, 23) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(43, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(43, 24) Source(53, 24) + SourceIndex(0) +7 >Emitted(43, 25) Source(53, 25) + SourceIndex(0) +8 >Emitted(43, 26) Source(53, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(44, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for (var _11 = 0, _12 = [robotA, robotB]; _11 < _12.length; _11++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > (let [numberB = -1] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(45, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(55, 28) + SourceIndex(0) +5 >Emitted(45, 17) Source(55, 44) + SourceIndex(0) +6 >Emitted(45, 19) Source(55, 28) + SourceIndex(0) +7 >Emitted(45, 26) Source(55, 29) + SourceIndex(0) +8 >Emitted(45, 32) Source(55, 35) + SourceIndex(0) +9 >Emitted(45, 34) Source(55, 37) + SourceIndex(0) +10>Emitted(45, 40) Source(55, 43) + SourceIndex(0) +11>Emitted(45, 41) Source(55, 44) + SourceIndex(0) +12>Emitted(45, 43) Source(55, 28) + SourceIndex(0) +13>Emitted(45, 59) Source(55, 44) + SourceIndex(0) +14>Emitted(45, 61) Source(55, 28) + SourceIndex(0) +15>Emitted(45, 66) Source(55, 44) + SourceIndex(0) +16>Emitted(45, 67) Source(55, 45) + SourceIndex(0) +--- +>>> var _13 = _12[_11][0], numberB = _13 === void 0 ? -1 : _13; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > numberB = -1 +3 > +4 > numberB = -1 +1 >Emitted(46, 5) Source(55, 11) + SourceIndex(0) +2 >Emitted(46, 26) Source(55, 23) + SourceIndex(0) +3 >Emitted(46, 28) Source(55, 11) + SourceIndex(0) +4 >Emitted(46, 63) Source(55, 23) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(47, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(47, 24) Source(56, 24) + SourceIndex(0) +7 >Emitted(47, 25) Source(56, 25) + SourceIndex(0) +8 >Emitted(47, 26) Source(56, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(48, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for (var _14 = 0, multiRobots_2 = multiRobots; _14 < multiRobots_2.length; _14++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > (let [nameB = "noName"] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(49, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(58, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(58, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(58, 32) + SourceIndex(0) +5 >Emitted(49, 17) Source(58, 43) + SourceIndex(0) +6 >Emitted(49, 19) Source(58, 32) + SourceIndex(0) +7 >Emitted(49, 46) Source(58, 43) + SourceIndex(0) +8 >Emitted(49, 48) Source(58, 32) + SourceIndex(0) +9 >Emitted(49, 74) Source(58, 43) + SourceIndex(0) +10>Emitted(49, 76) Source(58, 32) + SourceIndex(0) +11>Emitted(49, 81) Source(58, 43) + SourceIndex(0) +12>Emitted(49, 82) Source(58, 44) + SourceIndex(0) +--- +>>> var _15 = multiRobots_2[_14][0], nameB = _15 === void 0 ? "noName" : _15; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > nameB = "noName" +3 > +4 > nameB = "noName" +1 >Emitted(50, 5) Source(58, 11) + SourceIndex(0) +2 >Emitted(50, 36) Source(58, 27) + SourceIndex(0) +3 >Emitted(50, 38) Source(58, 11) + SourceIndex(0) +4 >Emitted(50, 77) Source(58, 27) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(51, 5) Source(59, 5) + SourceIndex(0) +2 >Emitted(51, 12) Source(59, 12) + SourceIndex(0) +3 >Emitted(51, 13) Source(59, 13) + SourceIndex(0) +4 >Emitted(51, 16) Source(59, 16) + SourceIndex(0) +5 >Emitted(51, 17) Source(59, 17) + SourceIndex(0) +6 >Emitted(51, 22) Source(59, 22) + SourceIndex(0) +7 >Emitted(51, 23) Source(59, 23) + SourceIndex(0) +8 >Emitted(51, 24) Source(59, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(52, 2) Source(60, 2) + SourceIndex(0) +--- +>>>for (var _16 = 0, _17 = getMultiRobots(); _16 < _17.length; _16++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^-> +1-> + > +2 >for +3 > +4 > (let [nameB = "noName"] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(53, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(53, 4) Source(61, 4) + SourceIndex(0) +3 >Emitted(53, 5) Source(61, 5) + SourceIndex(0) +4 >Emitted(53, 6) Source(61, 32) + SourceIndex(0) +5 >Emitted(53, 17) Source(61, 48) + SourceIndex(0) +6 >Emitted(53, 19) Source(61, 32) + SourceIndex(0) +7 >Emitted(53, 25) Source(61, 32) + SourceIndex(0) +8 >Emitted(53, 39) Source(61, 46) + SourceIndex(0) +9 >Emitted(53, 41) Source(61, 48) + SourceIndex(0) +10>Emitted(53, 43) Source(61, 32) + SourceIndex(0) +11>Emitted(53, 59) Source(61, 48) + SourceIndex(0) +12>Emitted(53, 61) Source(61, 32) + SourceIndex(0) +13>Emitted(53, 66) Source(61, 48) + SourceIndex(0) +14>Emitted(53, 67) Source(61, 49) + SourceIndex(0) +--- +>>> var _18 = _17[_16][0], nameB = _18 === void 0 ? "noName" : _18; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > nameB = "noName" +3 > +4 > nameB = "noName" +1->Emitted(54, 5) Source(61, 11) + SourceIndex(0) +2 >Emitted(54, 26) Source(61, 27) + SourceIndex(0) +3 >Emitted(54, 28) Source(61, 11) + SourceIndex(0) +4 >Emitted(54, 67) Source(61, 27) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(55, 5) Source(62, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(62, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(62, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(62, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(62, 17) + SourceIndex(0) +6 >Emitted(55, 22) Source(62, 22) + SourceIndex(0) +7 >Emitted(55, 23) Source(62, 23) + SourceIndex(0) +8 >Emitted(55, 24) Source(62, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(56, 2) Source(63, 2) + SourceIndex(0) +--- +>>>for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > (let [nameB = "noName"] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(57, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(64, 32) + SourceIndex(0) +5 >Emitted(57, 17) Source(64, 58) + SourceIndex(0) +6 >Emitted(57, 19) Source(64, 32) + SourceIndex(0) +7 >Emitted(57, 26) Source(64, 33) + SourceIndex(0) +8 >Emitted(57, 37) Source(64, 44) + SourceIndex(0) +9 >Emitted(57, 39) Source(64, 46) + SourceIndex(0) +10>Emitted(57, 50) Source(64, 57) + SourceIndex(0) +11>Emitted(57, 51) Source(64, 58) + SourceIndex(0) +12>Emitted(57, 53) Source(64, 32) + SourceIndex(0) +13>Emitted(57, 69) Source(64, 58) + SourceIndex(0) +14>Emitted(57, 71) Source(64, 32) + SourceIndex(0) +15>Emitted(57, 76) Source(64, 58) + SourceIndex(0) +16>Emitted(57, 77) Source(64, 59) + SourceIndex(0) +--- +>>> var _21 = _20[_19][0], nameB = _21 === void 0 ? "noName" : _21; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > nameB = "noName" +3 > +4 > nameB = "noName" +1 >Emitted(58, 5) Source(64, 11) + SourceIndex(0) +2 >Emitted(58, 26) Source(64, 27) + SourceIndex(0) +3 >Emitted(58, 28) Source(64, 11) + SourceIndex(0) +4 >Emitted(58, 67) Source(64, 27) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(59, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(65, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(65, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(65, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(65, 17) + SourceIndex(0) +6 >Emitted(59, 22) Source(65, 22) + SourceIndex(0) +7 >Emitted(59, 23) Source(65, 23) + SourceIndex(0) +8 >Emitted(59, 24) Source(65, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(60, 2) Source(66, 2) + SourceIndex(0) +--- +>>>for (var _22 = 0, robots_3 = robots; _22 < robots_3.length; _22++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(61, 1) Source(68, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(68, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(68, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(68, 67) + SourceIndex(0) +5 >Emitted(61, 17) Source(68, 73) + SourceIndex(0) +6 >Emitted(61, 19) Source(68, 67) + SourceIndex(0) +7 >Emitted(61, 36) Source(68, 73) + SourceIndex(0) +8 >Emitted(61, 38) Source(68, 67) + SourceIndex(0) +9 >Emitted(61, 59) Source(68, 73) + SourceIndex(0) +10>Emitted(61, 61) Source(68, 67) + SourceIndex(0) +11>Emitted(61, 66) Source(68, 73) + SourceIndex(0) +12>Emitted(61, 67) Source(68, 74) + SourceIndex(0) +--- +>>> var _23 = robots_3[_22], _24 = _23[0], numberA2 = _24 === void 0 ? -1 : _24, _25 = _23[1], nameA2 = _25 === void 0 ? "noName" : _25, _26 = _23[2], skillA2 = _26 === void 0 ? "skill" : _26; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "noName" +9 > +10> nameA2 = "noName" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(62, 5) Source(68, 6) + SourceIndex(0) +2 >Emitted(62, 28) Source(68, 63) + SourceIndex(0) +3 >Emitted(62, 30) Source(68, 11) + SourceIndex(0) +4 >Emitted(62, 42) Source(68, 24) + SourceIndex(0) +5 >Emitted(62, 44) Source(68, 11) + SourceIndex(0) +6 >Emitted(62, 80) Source(68, 24) + SourceIndex(0) +7 >Emitted(62, 82) Source(68, 26) + SourceIndex(0) +8 >Emitted(62, 94) Source(68, 43) + SourceIndex(0) +9 >Emitted(62, 96) Source(68, 26) + SourceIndex(0) +10>Emitted(62, 136) Source(68, 43) + SourceIndex(0) +11>Emitted(62, 138) Source(68, 45) + SourceIndex(0) +12>Emitted(62, 150) Source(68, 62) + SourceIndex(0) +13>Emitted(62, 152) Source(68, 45) + SourceIndex(0) +14>Emitted(62, 192) Source(68, 62) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(63, 5) Source(69, 5) + SourceIndex(0) +2 >Emitted(63, 12) Source(69, 12) + SourceIndex(0) +3 >Emitted(63, 13) Source(69, 13) + SourceIndex(0) +4 >Emitted(63, 16) Source(69, 16) + SourceIndex(0) +5 >Emitted(63, 17) Source(69, 17) + SourceIndex(0) +6 >Emitted(63, 23) Source(69, 23) + SourceIndex(0) +7 >Emitted(63, 24) Source(69, 24) + SourceIndex(0) +8 >Emitted(63, 25) Source(69, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(64, 2) Source(70, 2) + SourceIndex(0) +--- +>>>for (var _27 = 0, _28 = getRobots(); _27 < _28.length; _27++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(65, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(65, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(65, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(65, 6) Source(71, 67) + SourceIndex(0) +5 >Emitted(65, 17) Source(71, 78) + SourceIndex(0) +6 >Emitted(65, 19) Source(71, 67) + SourceIndex(0) +7 >Emitted(65, 25) Source(71, 67) + SourceIndex(0) +8 >Emitted(65, 34) Source(71, 76) + SourceIndex(0) +9 >Emitted(65, 36) Source(71, 78) + SourceIndex(0) +10>Emitted(65, 38) Source(71, 67) + SourceIndex(0) +11>Emitted(65, 54) Source(71, 78) + SourceIndex(0) +12>Emitted(65, 56) Source(71, 67) + SourceIndex(0) +13>Emitted(65, 61) Source(71, 78) + SourceIndex(0) +14>Emitted(65, 62) Source(71, 79) + SourceIndex(0) +--- +>>> var _29 = _28[_27], _30 = _29[0], numberA2 = _30 === void 0 ? -1 : _30, _31 = _29[1], nameA2 = _31 === void 0 ? "noName" : _31, _32 = _29[2], skillA2 = _32 === void 0 ? "skill" : _32; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "noName" +9 > +10> nameA2 = "noName" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(66, 5) Source(71, 6) + SourceIndex(0) +2 >Emitted(66, 23) Source(71, 63) + SourceIndex(0) +3 >Emitted(66, 25) Source(71, 11) + SourceIndex(0) +4 >Emitted(66, 37) Source(71, 24) + SourceIndex(0) +5 >Emitted(66, 39) Source(71, 11) + SourceIndex(0) +6 >Emitted(66, 75) Source(71, 24) + SourceIndex(0) +7 >Emitted(66, 77) Source(71, 26) + SourceIndex(0) +8 >Emitted(66, 89) Source(71, 43) + SourceIndex(0) +9 >Emitted(66, 91) Source(71, 26) + SourceIndex(0) +10>Emitted(66, 131) Source(71, 43) + SourceIndex(0) +11>Emitted(66, 133) Source(71, 45) + SourceIndex(0) +12>Emitted(66, 145) Source(71, 62) + SourceIndex(0) +13>Emitted(66, 147) Source(71, 45) + SourceIndex(0) +14>Emitted(66, 187) Source(71, 62) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(67, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(67, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(67, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(67, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(67, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(67, 23) Source(72, 23) + SourceIndex(0) +7 >Emitted(67, 24) Source(72, 24) + SourceIndex(0) +8 >Emitted(67, 25) Source(72, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(68, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for (var _33 = 0, _34 = [robotA, robotB]; _33 < _34.length; _33++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(69, 1) Source(74, 1) + SourceIndex(0) +2 >Emitted(69, 4) Source(74, 4) + SourceIndex(0) +3 >Emitted(69, 5) Source(74, 5) + SourceIndex(0) +4 >Emitted(69, 6) Source(74, 67) + SourceIndex(0) +5 >Emitted(69, 17) Source(74, 83) + SourceIndex(0) +6 >Emitted(69, 19) Source(74, 67) + SourceIndex(0) +7 >Emitted(69, 26) Source(74, 68) + SourceIndex(0) +8 >Emitted(69, 32) Source(74, 74) + SourceIndex(0) +9 >Emitted(69, 34) Source(74, 76) + SourceIndex(0) +10>Emitted(69, 40) Source(74, 82) + SourceIndex(0) +11>Emitted(69, 41) Source(74, 83) + SourceIndex(0) +12>Emitted(69, 43) Source(74, 67) + SourceIndex(0) +13>Emitted(69, 59) Source(74, 83) + SourceIndex(0) +14>Emitted(69, 61) Source(74, 67) + SourceIndex(0) +15>Emitted(69, 66) Source(74, 83) + SourceIndex(0) +16>Emitted(69, 67) Source(74, 84) + SourceIndex(0) +--- +>>> var _35 = _34[_33], _36 = _35[0], numberA2 = _36 === void 0 ? -1 : _36, _37 = _35[1], nameA2 = _37 === void 0 ? "noName" : _37, _38 = _35[2], skillA2 = _38 === void 0 ? "skill" : _38; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "noName" +9 > +10> nameA2 = "noName" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(70, 5) Source(74, 6) + SourceIndex(0) +2 >Emitted(70, 23) Source(74, 63) + SourceIndex(0) +3 >Emitted(70, 25) Source(74, 11) + SourceIndex(0) +4 >Emitted(70, 37) Source(74, 24) + SourceIndex(0) +5 >Emitted(70, 39) Source(74, 11) + SourceIndex(0) +6 >Emitted(70, 75) Source(74, 24) + SourceIndex(0) +7 >Emitted(70, 77) Source(74, 26) + SourceIndex(0) +8 >Emitted(70, 89) Source(74, 43) + SourceIndex(0) +9 >Emitted(70, 91) Source(74, 26) + SourceIndex(0) +10>Emitted(70, 131) Source(74, 43) + SourceIndex(0) +11>Emitted(70, 133) Source(74, 45) + SourceIndex(0) +12>Emitted(70, 145) Source(74, 62) + SourceIndex(0) +13>Emitted(70, 147) Source(74, 45) + SourceIndex(0) +14>Emitted(70, 187) Source(74, 62) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(71, 5) Source(75, 5) + SourceIndex(0) +2 >Emitted(71, 12) Source(75, 12) + SourceIndex(0) +3 >Emitted(71, 13) Source(75, 13) + SourceIndex(0) +4 >Emitted(71, 16) Source(75, 16) + SourceIndex(0) +5 >Emitted(71, 17) Source(75, 17) + SourceIndex(0) +6 >Emitted(71, 23) Source(75, 23) + SourceIndex(0) +7 >Emitted(71, 24) Source(75, 24) + SourceIndex(0) +8 >Emitted(71, 25) Source(75, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(72, 2) Source(76, 2) + SourceIndex(0) +--- +>>>for (var _39 = 0, multiRobots_3 = multiRobots; _39 < multiRobots_3.length; _39++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(73, 1) Source(77, 1) + SourceIndex(0) +2 >Emitted(73, 4) Source(77, 4) + SourceIndex(0) +3 >Emitted(73, 5) Source(77, 5) + SourceIndex(0) +4 >Emitted(73, 6) Source(80, 30) + SourceIndex(0) +5 >Emitted(73, 17) Source(80, 41) + SourceIndex(0) +6 >Emitted(73, 19) Source(80, 30) + SourceIndex(0) +7 >Emitted(73, 46) Source(80, 41) + SourceIndex(0) +8 >Emitted(73, 48) Source(80, 30) + SourceIndex(0) +9 >Emitted(73, 74) Source(80, 41) + SourceIndex(0) +10>Emitted(73, 76) Source(80, 30) + SourceIndex(0) +11>Emitted(73, 81) Source(80, 41) + SourceIndex(0) +12>Emitted(73, 82) Source(80, 42) + SourceIndex(0) +--- +>>> var _40 = multiRobots_3[_39], _41 = _40[0], nameMA = _41 === void 0 ? "noName" : _41, _42 = _40[1], _43 = _42 === void 0 ? ["skill1", "skill2"] : _42, _44 = _43[0], primarySkillA = _44 === void 0 ? "primary" : _44, _45 = _43[1], secondarySkillA = _45 === void 0 ? "secondary" : _45; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > nameMA = "noName" +5 > +6 > nameMA = "noName" +7 > , +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +1->Emitted(74, 5) Source(77, 6) + SourceIndex(0) +2 >Emitted(74, 33) Source(80, 26) + SourceIndex(0) +3 >Emitted(74, 35) Source(77, 11) + SourceIndex(0) +4 >Emitted(74, 47) Source(77, 28) + SourceIndex(0) +5 >Emitted(74, 49) Source(77, 11) + SourceIndex(0) +6 >Emitted(74, 89) Source(77, 28) + SourceIndex(0) +7 >Emitted(74, 91) Source(77, 30) + SourceIndex(0) +8 >Emitted(74, 103) Source(80, 25) + SourceIndex(0) +9 >Emitted(74, 105) Source(77, 30) + SourceIndex(0) +10>Emitted(74, 154) Source(80, 25) + SourceIndex(0) +11>Emitted(74, 156) Source(78, 5) + SourceIndex(0) +12>Emitted(74, 168) Source(78, 30) + SourceIndex(0) +13>Emitted(74, 170) Source(78, 5) + SourceIndex(0) +14>Emitted(74, 218) Source(78, 30) + SourceIndex(0) +15>Emitted(74, 220) Source(79, 5) + SourceIndex(0) +16>Emitted(74, 232) Source(79, 34) + SourceIndex(0) +17>Emitted(74, 234) Source(79, 5) + SourceIndex(0) +18>Emitted(74, 286) Source(79, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(75, 5) Source(81, 5) + SourceIndex(0) +2 >Emitted(75, 12) Source(81, 12) + SourceIndex(0) +3 >Emitted(75, 13) Source(81, 13) + SourceIndex(0) +4 >Emitted(75, 16) Source(81, 16) + SourceIndex(0) +5 >Emitted(75, 17) Source(81, 17) + SourceIndex(0) +6 >Emitted(75, 23) Source(81, 23) + SourceIndex(0) +7 >Emitted(75, 24) Source(81, 24) + SourceIndex(0) +8 >Emitted(75, 25) Source(81, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(76, 2) Source(82, 2) + SourceIndex(0) +--- +>>>for (var _46 = 0, _47 = getMultiRobots(); _46 < _47.length; _46++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(77, 1) Source(83, 1) + SourceIndex(0) +2 >Emitted(77, 4) Source(83, 4) + SourceIndex(0) +3 >Emitted(77, 5) Source(83, 5) + SourceIndex(0) +4 >Emitted(77, 6) Source(86, 30) + SourceIndex(0) +5 >Emitted(77, 17) Source(86, 46) + SourceIndex(0) +6 >Emitted(77, 19) Source(86, 30) + SourceIndex(0) +7 >Emitted(77, 25) Source(86, 30) + SourceIndex(0) +8 >Emitted(77, 39) Source(86, 44) + SourceIndex(0) +9 >Emitted(77, 41) Source(86, 46) + SourceIndex(0) +10>Emitted(77, 43) Source(86, 30) + SourceIndex(0) +11>Emitted(77, 59) Source(86, 46) + SourceIndex(0) +12>Emitted(77, 61) Source(86, 30) + SourceIndex(0) +13>Emitted(77, 66) Source(86, 46) + SourceIndex(0) +14>Emitted(77, 67) Source(86, 47) + SourceIndex(0) +--- +>>> var _48 = _47[_46], _49 = _48[0], nameMA = _49 === void 0 ? "noName" : _49, _50 = _48[1], _51 = _50 === void 0 ? ["skill1", "skill2"] : _50, _52 = _51[0], primarySkillA = _52 === void 0 ? "primary" : _52, _53 = _51[1], secondarySkillA = _53 === void 0 ? "secondary" : _53; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > nameMA = "noName" +5 > +6 > nameMA = "noName" +7 > , +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +1->Emitted(78, 5) Source(83, 6) + SourceIndex(0) +2 >Emitted(78, 23) Source(86, 26) + SourceIndex(0) +3 >Emitted(78, 25) Source(83, 11) + SourceIndex(0) +4 >Emitted(78, 37) Source(83, 28) + SourceIndex(0) +5 >Emitted(78, 39) Source(83, 11) + SourceIndex(0) +6 >Emitted(78, 79) Source(83, 28) + SourceIndex(0) +7 >Emitted(78, 81) Source(83, 30) + SourceIndex(0) +8 >Emitted(78, 93) Source(86, 25) + SourceIndex(0) +9 >Emitted(78, 95) Source(83, 30) + SourceIndex(0) +10>Emitted(78, 144) Source(86, 25) + SourceIndex(0) +11>Emitted(78, 146) Source(84, 5) + SourceIndex(0) +12>Emitted(78, 158) Source(84, 30) + SourceIndex(0) +13>Emitted(78, 160) Source(84, 5) + SourceIndex(0) +14>Emitted(78, 208) Source(84, 30) + SourceIndex(0) +15>Emitted(78, 210) Source(85, 5) + SourceIndex(0) +16>Emitted(78, 222) Source(85, 34) + SourceIndex(0) +17>Emitted(78, 224) Source(85, 5) + SourceIndex(0) +18>Emitted(78, 276) Source(85, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(79, 5) Source(87, 5) + SourceIndex(0) +2 >Emitted(79, 12) Source(87, 12) + SourceIndex(0) +3 >Emitted(79, 13) Source(87, 13) + SourceIndex(0) +4 >Emitted(79, 16) Source(87, 16) + SourceIndex(0) +5 >Emitted(79, 17) Source(87, 17) + SourceIndex(0) +6 >Emitted(79, 23) Source(87, 23) + SourceIndex(0) +7 >Emitted(79, 24) Source(87, 24) + SourceIndex(0) +8 >Emitted(79, 25) Source(87, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(80, 2) Source(88, 2) + SourceIndex(0) +--- +>>>for (var _54 = 0, _55 = [multiRobotA, multiRobotB]; _54 < _55.length; _54++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(81, 1) Source(89, 1) + SourceIndex(0) +2 >Emitted(81, 4) Source(89, 4) + SourceIndex(0) +3 >Emitted(81, 5) Source(89, 5) + SourceIndex(0) +4 >Emitted(81, 6) Source(92, 30) + SourceIndex(0) +5 >Emitted(81, 17) Source(92, 56) + SourceIndex(0) +6 >Emitted(81, 19) Source(92, 30) + SourceIndex(0) +7 >Emitted(81, 26) Source(92, 31) + SourceIndex(0) +8 >Emitted(81, 37) Source(92, 42) + SourceIndex(0) +9 >Emitted(81, 39) Source(92, 44) + SourceIndex(0) +10>Emitted(81, 50) Source(92, 55) + SourceIndex(0) +11>Emitted(81, 51) Source(92, 56) + SourceIndex(0) +12>Emitted(81, 53) Source(92, 30) + SourceIndex(0) +13>Emitted(81, 69) Source(92, 56) + SourceIndex(0) +14>Emitted(81, 71) Source(92, 30) + SourceIndex(0) +15>Emitted(81, 76) Source(92, 56) + SourceIndex(0) +16>Emitted(81, 77) Source(92, 57) + SourceIndex(0) +--- +>>> var _56 = _55[_54], _57 = _56[0], nameMA = _57 === void 0 ? "noName" : _57, _58 = _56[1], _59 = _58 === void 0 ? ["skill1", "skill2"] : _58, _60 = _59[0], primarySkillA = _60 === void 0 ? "primary" : _60, _61 = _59[1], secondarySkillA = _61 === void 0 ? "secondary" : _61; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > nameMA = "noName" +5 > +6 > nameMA = "noName" +7 > , +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +1->Emitted(82, 5) Source(89, 6) + SourceIndex(0) +2 >Emitted(82, 23) Source(92, 26) + SourceIndex(0) +3 >Emitted(82, 25) Source(89, 11) + SourceIndex(0) +4 >Emitted(82, 37) Source(89, 28) + SourceIndex(0) +5 >Emitted(82, 39) Source(89, 11) + SourceIndex(0) +6 >Emitted(82, 79) Source(89, 28) + SourceIndex(0) +7 >Emitted(82, 81) Source(89, 30) + SourceIndex(0) +8 >Emitted(82, 93) Source(92, 25) + SourceIndex(0) +9 >Emitted(82, 95) Source(89, 30) + SourceIndex(0) +10>Emitted(82, 144) Source(92, 25) + SourceIndex(0) +11>Emitted(82, 146) Source(90, 5) + SourceIndex(0) +12>Emitted(82, 158) Source(90, 30) + SourceIndex(0) +13>Emitted(82, 160) Source(90, 5) + SourceIndex(0) +14>Emitted(82, 208) Source(90, 30) + SourceIndex(0) +15>Emitted(82, 210) Source(91, 5) + SourceIndex(0) +16>Emitted(82, 222) Source(91, 34) + SourceIndex(0) +17>Emitted(82, 224) Source(91, 5) + SourceIndex(0) +18>Emitted(82, 276) Source(91, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(83, 5) Source(93, 5) + SourceIndex(0) +2 >Emitted(83, 12) Source(93, 12) + SourceIndex(0) +3 >Emitted(83, 13) Source(93, 13) + SourceIndex(0) +4 >Emitted(83, 16) Source(93, 16) + SourceIndex(0) +5 >Emitted(83, 17) Source(93, 17) + SourceIndex(0) +6 >Emitted(83, 23) Source(93, 23) + SourceIndex(0) +7 >Emitted(83, 24) Source(93, 24) + SourceIndex(0) +8 >Emitted(83, 25) Source(93, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(84, 2) Source(94, 2) + SourceIndex(0) +--- +>>>for (var _62 = 0, robots_4 = robots; _62 < robots_4.length; _62++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let [numberA3 = -1, ...robotAInfo] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(85, 1) Source(96, 1) + SourceIndex(0) +2 >Emitted(85, 4) Source(96, 4) + SourceIndex(0) +3 >Emitted(85, 5) Source(96, 5) + SourceIndex(0) +4 >Emitted(85, 6) Source(96, 44) + SourceIndex(0) +5 >Emitted(85, 17) Source(96, 50) + SourceIndex(0) +6 >Emitted(85, 19) Source(96, 44) + SourceIndex(0) +7 >Emitted(85, 36) Source(96, 50) + SourceIndex(0) +8 >Emitted(85, 38) Source(96, 44) + SourceIndex(0) +9 >Emitted(85, 59) Source(96, 50) + SourceIndex(0) +10>Emitted(85, 61) Source(96, 44) + SourceIndex(0) +11>Emitted(85, 66) Source(96, 50) + SourceIndex(0) +12>Emitted(85, 67) Source(96, 51) + SourceIndex(0) +--- +>>> var _63 = robots_4[_62], _64 = _63[0], numberA3 = _64 === void 0 ? -1 : _64, robotAInfo = _63.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [numberA3 = -1, ...robotAInfo] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(86, 5) Source(96, 6) + SourceIndex(0) +2 >Emitted(86, 28) Source(96, 40) + SourceIndex(0) +3 >Emitted(86, 30) Source(96, 11) + SourceIndex(0) +4 >Emitted(86, 42) Source(96, 24) + SourceIndex(0) +5 >Emitted(86, 44) Source(96, 11) + SourceIndex(0) +6 >Emitted(86, 80) Source(96, 24) + SourceIndex(0) +7 >Emitted(86, 82) Source(96, 26) + SourceIndex(0) +8 >Emitted(86, 107) Source(96, 39) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(87, 5) Source(97, 5) + SourceIndex(0) +2 >Emitted(87, 12) Source(97, 12) + SourceIndex(0) +3 >Emitted(87, 13) Source(97, 13) + SourceIndex(0) +4 >Emitted(87, 16) Source(97, 16) + SourceIndex(0) +5 >Emitted(87, 17) Source(97, 17) + SourceIndex(0) +6 >Emitted(87, 25) Source(97, 25) + SourceIndex(0) +7 >Emitted(87, 26) Source(97, 26) + SourceIndex(0) +8 >Emitted(87, 27) Source(97, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(88, 2) Source(98, 2) + SourceIndex(0) +--- +>>>for (var _65 = 0, _66 = getRobots(); _65 < _66.length; _65++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA3 = -1, ...robotAInfo] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(89, 1) Source(99, 1) + SourceIndex(0) +2 >Emitted(89, 4) Source(99, 4) + SourceIndex(0) +3 >Emitted(89, 5) Source(99, 5) + SourceIndex(0) +4 >Emitted(89, 6) Source(99, 44) + SourceIndex(0) +5 >Emitted(89, 17) Source(99, 55) + SourceIndex(0) +6 >Emitted(89, 19) Source(99, 44) + SourceIndex(0) +7 >Emitted(89, 25) Source(99, 44) + SourceIndex(0) +8 >Emitted(89, 34) Source(99, 53) + SourceIndex(0) +9 >Emitted(89, 36) Source(99, 55) + SourceIndex(0) +10>Emitted(89, 38) Source(99, 44) + SourceIndex(0) +11>Emitted(89, 54) Source(99, 55) + SourceIndex(0) +12>Emitted(89, 56) Source(99, 44) + SourceIndex(0) +13>Emitted(89, 61) Source(99, 55) + SourceIndex(0) +14>Emitted(89, 62) Source(99, 56) + SourceIndex(0) +--- +>>> var _67 = _66[_65], _68 = _67[0], numberA3 = _68 === void 0 ? -1 : _68, robotAInfo = _67.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [numberA3 = -1, ...robotAInfo] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(90, 5) Source(99, 6) + SourceIndex(0) +2 >Emitted(90, 23) Source(99, 40) + SourceIndex(0) +3 >Emitted(90, 25) Source(99, 11) + SourceIndex(0) +4 >Emitted(90, 37) Source(99, 24) + SourceIndex(0) +5 >Emitted(90, 39) Source(99, 11) + SourceIndex(0) +6 >Emitted(90, 75) Source(99, 24) + SourceIndex(0) +7 >Emitted(90, 77) Source(99, 26) + SourceIndex(0) +8 >Emitted(90, 102) Source(99, 39) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(91, 5) Source(100, 5) + SourceIndex(0) +2 >Emitted(91, 12) Source(100, 12) + SourceIndex(0) +3 >Emitted(91, 13) Source(100, 13) + SourceIndex(0) +4 >Emitted(91, 16) Source(100, 16) + SourceIndex(0) +5 >Emitted(91, 17) Source(100, 17) + SourceIndex(0) +6 >Emitted(91, 25) Source(100, 25) + SourceIndex(0) +7 >Emitted(91, 26) Source(100, 26) + SourceIndex(0) +8 >Emitted(91, 27) Source(100, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(92, 2) Source(101, 2) + SourceIndex(0) +--- +>>>for (var _69 = 0, _70 = [robotA, robotB]; _69 < _70.length; _69++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let [numberA3 = -1, ...robotAInfo] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(93, 1) Source(102, 1) + SourceIndex(0) +2 >Emitted(93, 4) Source(102, 4) + SourceIndex(0) +3 >Emitted(93, 5) Source(102, 5) + SourceIndex(0) +4 >Emitted(93, 6) Source(102, 44) + SourceIndex(0) +5 >Emitted(93, 17) Source(102, 60) + SourceIndex(0) +6 >Emitted(93, 19) Source(102, 44) + SourceIndex(0) +7 >Emitted(93, 26) Source(102, 45) + SourceIndex(0) +8 >Emitted(93, 32) Source(102, 51) + SourceIndex(0) +9 >Emitted(93, 34) Source(102, 53) + SourceIndex(0) +10>Emitted(93, 40) Source(102, 59) + SourceIndex(0) +11>Emitted(93, 41) Source(102, 60) + SourceIndex(0) +12>Emitted(93, 43) Source(102, 44) + SourceIndex(0) +13>Emitted(93, 59) Source(102, 60) + SourceIndex(0) +14>Emitted(93, 61) Source(102, 44) + SourceIndex(0) +15>Emitted(93, 66) Source(102, 60) + SourceIndex(0) +16>Emitted(93, 67) Source(102, 61) + SourceIndex(0) +--- +>>> var _71 = _70[_69], _72 = _71[0], numberA3 = _72 === void 0 ? -1 : _72, robotAInfo = _71.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let [numberA3 = -1, ...robotAInfo] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(94, 5) Source(102, 6) + SourceIndex(0) +2 >Emitted(94, 23) Source(102, 40) + SourceIndex(0) +3 >Emitted(94, 25) Source(102, 11) + SourceIndex(0) +4 >Emitted(94, 37) Source(102, 24) + SourceIndex(0) +5 >Emitted(94, 39) Source(102, 11) + SourceIndex(0) +6 >Emitted(94, 75) Source(102, 24) + SourceIndex(0) +7 >Emitted(94, 77) Source(102, 26) + SourceIndex(0) +8 >Emitted(94, 102) Source(102, 39) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(95, 5) Source(103, 5) + SourceIndex(0) +2 >Emitted(95, 12) Source(103, 12) + SourceIndex(0) +3 >Emitted(95, 13) Source(103, 13) + SourceIndex(0) +4 >Emitted(95, 16) Source(103, 16) + SourceIndex(0) +5 >Emitted(95, 17) Source(103, 17) + SourceIndex(0) +6 >Emitted(95, 25) Source(103, 25) + SourceIndex(0) +7 >Emitted(95, 26) Source(103, 26) + SourceIndex(0) +8 >Emitted(95, 27) Source(103, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(96, 2) Source(104, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..b398a8e6af5 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.symbols @@ -0,0 +1,325 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 2, 1)) + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 7, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 2, 1)) + +let robots = [robotA, robotB]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 7, 3)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 30)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 13, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 14, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 3, 38)) + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 3)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 14, 3)) + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 45)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 3)) +} + +for (let [, nameA = "noName"] of robots) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 20, 11)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 20, 11)) +} +for (let [, nameA = "noName"] of getRobots()) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 23, 11)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 30)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 23, 11)) +} +for (let [, nameA = "noName"] of [robotA, robotB]) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 26, 11)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 7, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 26, 11)) +} +for (let [, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 29, 13)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 30, 30)) + +] = ["skill1", "skill2"]] of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 29, 13)) +} +for (let [, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 35, 13)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 36, 30)) + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 45)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 35, 13)) +} +for (let [, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 41, 13)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 42, 30)) + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 14, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 41, 13)) +} + +for (let [numberB = -1] of robots) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 48, 10)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 48, 10)) +} +for (let [numberB = -1] of getRobots()) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 51, 10)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 30)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 51, 10)) +} +for (let [numberB = -1] of [robotA, robotB]) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 54, 10)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 7, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 54, 10)) +} +for (let [nameB = "noName"] of multiRobots) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 57, 10)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 57, 10)) +} +for (let [nameB = "noName"] of getMultiRobots()) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 60, 10)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 45)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 60, 10)) +} +for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 63, 10)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 14, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 63, 10)) +} + +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 67, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 67, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 67, 43)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 67, 24)) +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 70, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 70, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 70, 43)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 30)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 70, 24)) +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 73, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 73, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 73, 43)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 7, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 73, 24)) +} +for (let [nameMA = "noName", [ +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 76, 10)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 76, 30)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 77, 30)) + +] = ["skill1", "skill2"]] of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 76, 10)) +} +for (let [nameMA = "noName", [ +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 82, 10)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 82, 30)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 83, 30)) + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 15, 45)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 82, 10)) +} +for (let [nameMA = "noName", [ +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 88, 10)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 88, 30)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 89, 30)) + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 14, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 88, 10)) +} + +for (let [numberA3 = -1, ...robotAInfo] of robots) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 95, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 95, 24)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 95, 10)) +} +for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 98, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 98, 24)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 8, 30)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 98, 10)) +} +for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 101, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 101, 24)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 7, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts, 101, 10)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types new file mode 100644 index 00000000000..488b5c46145 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.types @@ -0,0 +1,452 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +let robots = [robotA, robotB]; +>robots : [number, string, string][] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + +function getRobots() { +>getRobots : () => [number, string, string][] + + return robots; +>robots : [number, string, string][] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : [string, [string, string]][] +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + +function getMultiRobots() { +>getMultiRobots : () => [string, [string, string]][] + + return multiRobots; +>multiRobots : [string, [string, string]][] +} + +for (let [, nameA = "noName"] of robots) { +> : undefined +>nameA : string +>"noName" : string +>robots : [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA = "noName"] of getRobots()) { +> : undefined +>nameA : string +>"noName" : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA = "noName"] of [robotA, robotB]) { +> : undefined +>nameA : string +>"noName" : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, [ +> : undefined + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of multiRobots) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>multiRobots : [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [ +> : undefined + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [ +> : undefined + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for (let [numberB = -1] of robots) { +>numberB : number +>-1 : number +>1 : number +>robots : [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB = -1] of getRobots()) { +>numberB : number +>-1 : number +>1 : number +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB = -1] of [robotA, robotB]) { +>numberB : number +>-1 : number +>1 : number +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [nameB = "noName"] of multiRobots) { +>nameB : string +>"noName" : string +>multiRobots : [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB = "noName"] of getMultiRobots()) { +>nameB : string +>"noName" : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { +>nameB : string +>"noName" : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"noName" : string +>skillA2 : string +>"skill" : string +>robots : [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"noName" : string +>skillA2 : string +>"skill" : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"noName" : string +>skillA2 : string +>"skill" : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [nameMA = "noName", [ +>nameMA : string +>"noName" : string + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of multiRobots) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>multiRobots : [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA = "noName", [ +>nameMA : string +>"noName" : string + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA = "noName", [ +>nameMA : string +>"noName" : string + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for (let [numberA3 = -1, ...robotAInfo] of robots) { +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>robots : [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js new file mode 100644 index 00000000000..9cff7412ea9 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js @@ -0,0 +1,214 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + +for ([, nameA = "noName"] of robots) { + console.log(nameA); +} +for ([, nameA = "noName"] of getRobots()) { + console.log(nameA); +} +for ([, nameA = "noName"] of [robotA, robotB]) { + console.log(nameA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for ([numberB = -1] of robots) { + console.log(numberB); +} +for ([numberB = -1] of getRobots()) { + console.log(numberB); +} +for ([numberB = -1] of [robotA, robotB]) { + console.log(numberB); +} +for ([nameB = "noName"] of multiRobots) { + console.log(nameB); +} +for ([nameB = "noName"] of getMultiRobots()) { + console.log(nameB); +} +for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + console.log(nameA2); +} +for ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(nameMA); +} +for ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(nameMA); +} +for ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for ([numberA3 = -1, ...robotAInfo] of robots) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} + +//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js] +var robotA = [1, "mower", "mowing"]; +var robotB = [2, "trimmer", "trimming"]; +var robots = [robotA, robotB]; +function getRobots() { + return robots; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +var multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} +var nameA, primarySkillA, secondarySkillA; +var numberB, nameB; +var numberA2, nameA2, skillA2, nameMA; +var numberA3, robotAInfo, multiRobotAInfo; +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + _a = robots_1[_i], _b = _a[1], nameA = _b === void 0 ? "noName" : _b; + console.log(nameA); +} +for (var _c = 0, _d = getRobots(); _c < _d.length; _c++) { + _e = _d[_c], _f = _e[1], nameA = _f === void 0 ? "noName" : _f; + console.log(nameA); +} +for (var _g = 0, _h = [robotA, robotB]; _g < _h.length; _g++) { + _j = _h[_g], _k = _j[1], nameA = _k === void 0 ? "noName" : _k; + console.log(nameA); +} +for (var _l = 0, multiRobots_1 = multiRobots; _l < multiRobots_1.length; _l++) { + _m = multiRobots_1[_l], _o = _m[1], _p = _o === void 0 ? ["skill1", "skill2"] : _o, _q = _p[0], primarySkillA = _q === void 0 ? "primary" : _q, _r = _p[1], secondarySkillA = _r === void 0 ? "secondary" : _r; + console.log(primarySkillA); +} +for (var _s = 0, _t = getMultiRobots(); _s < _t.length; _s++) { + _u = _t[_s], _v = _u[1], _w = _v === void 0 ? ["skill1", "skill2"] : _v, _x = _w[0], primarySkillA = _x === void 0 ? "primary" : _x, _y = _w[1], secondarySkillA = _y === void 0 ? "secondary" : _y; + console.log(primarySkillA); +} +for (var _z = 0, _0 = [multiRobotA, multiRobotB]; _z < _0.length; _z++) { + _1 = _0[_z], _2 = _1[1], _3 = _2 === void 0 ? ["skill1", "skill2"] : _2, _4 = _3[0], primarySkillA = _4 === void 0 ? "primary" : _4, _5 = _3[1], secondarySkillA = _5 === void 0 ? "secondary" : _5; + console.log(primarySkillA); +} +for (var _6 = 0, robots_2 = robots; _6 < robots_2.length; _6++) { + _7 = robots_2[_6][0], numberB = _7 === void 0 ? -1 : _7; + console.log(numberB); +} +for (var _8 = 0, _9 = getRobots(); _8 < _9.length; _8++) { + _10 = _9[_8][0], numberB = _10 === void 0 ? -1 : _10; + console.log(numberB); +} +for (var _11 = 0, _12 = [robotA, robotB]; _11 < _12.length; _11++) { + _13 = _12[_11][0], numberB = _13 === void 0 ? -1 : _13; + console.log(numberB); +} +for (var _14 = 0, multiRobots_2 = multiRobots; _14 < multiRobots_2.length; _14++) { + _15 = multiRobots_2[_14][0], nameB = _15 === void 0 ? "noName" : _15; + console.log(nameB); +} +for (var _16 = 0, _17 = getMultiRobots(); _16 < _17.length; _16++) { + _18 = _17[_16][0], nameB = _18 === void 0 ? "noName" : _18; + console.log(nameB); +} +for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { + _21 = _20[_19][0], nameB = _21 === void 0 ? "noName" : _21; + console.log(nameB); +} +for (var _22 = 0, robots_3 = robots; _22 < robots_3.length; _22++) { + _23 = robots_3[_22], _24 = _23[0], numberA2 = _24 === void 0 ? -1 : _24, _25 = _23[1], nameA2 = _25 === void 0 ? "noName" : _25, _26 = _23[2], skillA2 = _26 === void 0 ? "skill" : _26; + console.log(nameA2); +} +for (var _27 = 0, _28 = getRobots(); _27 < _28.length; _27++) { + _29 = _28[_27], _30 = _29[0], numberA2 = _30 === void 0 ? -1 : _30, _31 = _29[1], nameA2 = _31 === void 0 ? "noName" : _31, _32 = _29[2], skillA2 = _32 === void 0 ? "skill" : _32; + console.log(nameA2); +} +for (var _33 = 0, _34 = [robotA, robotB]; _33 < _34.length; _33++) { + _35 = _34[_33], _36 = _35[0], numberA2 = _36 === void 0 ? -1 : _36, _37 = _35[1], nameA2 = _37 === void 0 ? "noName" : _37, _38 = _35[2], skillA2 = _38 === void 0 ? "skill" : _38; + console.log(nameA2); +} +for (var _39 = 0, multiRobots_3 = multiRobots; _39 < multiRobots_3.length; _39++) { + _40 = multiRobots_3[_39], _41 = _40[0], nameMA = _41 === void 0 ? "noName" : _41, _42 = _40[1], _43 = _42 === void 0 ? ["skill1", "skill2"] : _42, _44 = _43[0], primarySkillA = _44 === void 0 ? "primary" : _44, _45 = _43[1], secondarySkillA = _45 === void 0 ? "secondary" : _45; + console.log(nameMA); +} +for (var _46 = 0, _47 = getMultiRobots(); _46 < _47.length; _46++) { + _48 = _47[_46], _49 = _48[0], nameMA = _49 === void 0 ? "noName" : _49, _50 = _48[1], _51 = _50 === void 0 ? ["skill1", "skill2"] : _50, _52 = _51[0], primarySkillA = _52 === void 0 ? "primary" : _52, _53 = _51[1], secondarySkillA = _53 === void 0 ? "secondary" : _53; + console.log(nameMA); +} +for (var _54 = 0, _55 = [multiRobotA, multiRobotB]; _54 < _55.length; _54++) { + _56 = _55[_54], _57 = _56[0], nameMA = _57 === void 0 ? "noName" : _57, _58 = _56[1], _59 = _58 === void 0 ? ["skill1", "skill2"] : _58, _60 = _59[0], primarySkillA = _60 === void 0 ? "primary" : _60, _61 = _59[1], secondarySkillA = _61 === void 0 ? "secondary" : _61; + console.log(nameMA); +} +for (var _62 = 0, robots_4 = robots; _62 < robots_4.length; _62++) { + _63 = robots_4[_62], _64 = _63[0], numberA3 = _64 === void 0 ? -1 : _64, robotAInfo = _63.slice(1); + console.log(numberA3); +} +for (var _65 = 0, _66 = getRobots(); _65 < _66.length; _65++) { + _67 = _66[_65], _68 = _67[0], numberA3 = _68 === void 0 ? -1 : _68, robotAInfo = _67.slice(1); + console.log(numberA3); +} +for (var _69 = 0, _70 = [robotA, robotB]; _69 < _70.length; _69++) { + _71 = _70[_69], _72 = _71[0], numberA3 = _72 === void 0 ? -1 : _72, robotAInfo = _71.slice(1); + console.log(numberA3); +} +var _a, _b, _e, _f, _j, _k, _m, _o, _p, _q, _r, _u, _v, _w, _x, _y, _1, _2, _3, _4, _5, _7, _10, _13, _15, _18, _21, _23, _24, _25, _26, _29, _30, _31, _32, _35, _36, _37, _38, _40, _41, _42, _43, _44, _45, _48, _49, _50, _51, _52, _53, _56, _57, _58, _59, _60, _61, _63, _64, _67, _68, _71, _72; +//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map new file mode 100644 index 00000000000..ccee72c33bf --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.sourcemap.txt new file mode 100644 index 00000000000..dc11eb52da9 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.sourcemap.txt @@ -0,0 +1,2853 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js +mapUrl: sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js +sourceFile:sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +13> ^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>var robotB = [2, "trimmer", "trimming"]; +1-> +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^ +12> ^ +1-> + > +2 >let +3 > robotB +4 > : Robot = +5 > [ +6 > 2 +7 > , +8 > "trimmer" +9 > , +10> "trimming" +11> ] +12> ; +1->Emitted(2, 1) Source(8, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(8, 5) + SourceIndex(0) +3 >Emitted(2, 11) Source(8, 11) + SourceIndex(0) +4 >Emitted(2, 14) Source(8, 21) + SourceIndex(0) +5 >Emitted(2, 15) Source(8, 22) + SourceIndex(0) +6 >Emitted(2, 16) Source(8, 23) + SourceIndex(0) +7 >Emitted(2, 18) Source(8, 25) + SourceIndex(0) +8 >Emitted(2, 27) Source(8, 34) + SourceIndex(0) +9 >Emitted(2, 29) Source(8, 36) + SourceIndex(0) +10>Emitted(2, 39) Source(8, 46) + SourceIndex(0) +11>Emitted(2, 40) Source(8, 47) + SourceIndex(0) +12>Emitted(2, 41) Source(8, 48) + SourceIndex(0) +--- +>>>var robots = [robotA, robotB]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^^ +8 > ^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > robots +4 > = +5 > [ +6 > robotA +7 > , +8 > robotB +9 > ] +10> ; +1 >Emitted(3, 1) Source(9, 1) + SourceIndex(0) +2 >Emitted(3, 5) Source(9, 5) + SourceIndex(0) +3 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +4 >Emitted(3, 14) Source(9, 14) + SourceIndex(0) +5 >Emitted(3, 15) Source(9, 15) + SourceIndex(0) +6 >Emitted(3, 21) Source(9, 21) + SourceIndex(0) +7 >Emitted(3, 23) Source(9, 23) + SourceIndex(0) +8 >Emitted(3, 29) Source(9, 29) + SourceIndex(0) +9 >Emitted(3, 30) Source(9, 30) + SourceIndex(0) +10>Emitted(3, 31) Source(9, 31) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(11, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(11, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(11, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(11, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(11, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(12, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(7, 1) Source(14, 1) + SourceIndex(0) +2 >Emitted(7, 5) Source(14, 5) + SourceIndex(0) +3 >Emitted(7, 16) Source(14, 16) + SourceIndex(0) +4 >Emitted(7, 19) Source(14, 38) + SourceIndex(0) +5 >Emitted(7, 20) Source(14, 39) + SourceIndex(0) +6 >Emitted(7, 27) Source(14, 46) + SourceIndex(0) +7 >Emitted(7, 29) Source(14, 48) + SourceIndex(0) +8 >Emitted(7, 30) Source(14, 49) + SourceIndex(0) +9 >Emitted(7, 38) Source(14, 57) + SourceIndex(0) +10>Emitted(7, 40) Source(14, 59) + SourceIndex(0) +11>Emitted(7, 42) Source(14, 61) + SourceIndex(0) +12>Emitted(7, 43) Source(14, 62) + SourceIndex(0) +13>Emitted(7, 44) Source(14, 63) + SourceIndex(0) +14>Emitted(7, 45) Source(14, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(8, 1) Source(15, 1) + SourceIndex(0) +2 >Emitted(8, 5) Source(15, 5) + SourceIndex(0) +3 >Emitted(8, 16) Source(15, 16) + SourceIndex(0) +4 >Emitted(8, 19) Source(15, 38) + SourceIndex(0) +5 >Emitted(8, 20) Source(15, 39) + SourceIndex(0) +6 >Emitted(8, 29) Source(15, 48) + SourceIndex(0) +7 >Emitted(8, 31) Source(15, 50) + SourceIndex(0) +8 >Emitted(8, 32) Source(15, 51) + SourceIndex(0) +9 >Emitted(8, 42) Source(15, 61) + SourceIndex(0) +10>Emitted(8, 44) Source(15, 63) + SourceIndex(0) +11>Emitted(8, 52) Source(15, 71) + SourceIndex(0) +12>Emitted(8, 53) Source(15, 72) + SourceIndex(0) +13>Emitted(8, 54) Source(15, 73) + SourceIndex(0) +14>Emitted(8, 55) Source(15, 74) + SourceIndex(0) +--- +>>>var multiRobots = [multiRobotA, multiRobotB]; +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^ +9 > ^ +10> ^ +1 > + > +2 >let +3 > multiRobots +4 > = +5 > [ +6 > multiRobotA +7 > , +8 > multiRobotB +9 > ] +10> ; +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(16, 5) + SourceIndex(0) +3 >Emitted(9, 16) Source(16, 16) + SourceIndex(0) +4 >Emitted(9, 19) Source(16, 19) + SourceIndex(0) +5 >Emitted(9, 20) Source(16, 20) + SourceIndex(0) +6 >Emitted(9, 31) Source(16, 31) + SourceIndex(0) +7 >Emitted(9, 33) Source(16, 33) + SourceIndex(0) +8 >Emitted(9, 44) Source(16, 44) + SourceIndex(0) +9 >Emitted(9, 45) Source(16, 45) + SourceIndex(0) +10>Emitted(9, 46) Source(16, 46) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(10, 1) Source(17, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(11, 5) Source(18, 5) + SourceIndex(0) +2 >Emitted(11, 11) Source(18, 11) + SourceIndex(0) +3 >Emitted(11, 12) Source(18, 12) + SourceIndex(0) +4 >Emitted(11, 23) Source(18, 23) + SourceIndex(0) +5 >Emitted(11, 24) Source(18, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(19, 2) + SourceIndex(0) +--- +>>>var nameA, primarySkillA, secondarySkillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primarySkillA: string +6 > , +7 > secondarySkillA: string +8 > ; +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(13, 10) Source(21, 18) + SourceIndex(0) +4 >Emitted(13, 12) Source(21, 20) + SourceIndex(0) +5 >Emitted(13, 25) Source(21, 41) + SourceIndex(0) +6 >Emitted(13, 27) Source(21, 43) + SourceIndex(0) +7 >Emitted(13, 42) Source(21, 66) + SourceIndex(0) +8 >Emitted(13, 43) Source(21, 67) + SourceIndex(0) +--- +>>>var numberB, nameB; +1 > +2 >^^^^ +3 > ^^^^^^^ +4 > ^^ +5 > ^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > numberB: number +4 > , +5 > nameB: string +6 > ; +1 >Emitted(14, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(14, 12) Source(22, 20) + SourceIndex(0) +4 >Emitted(14, 14) Source(22, 22) + SourceIndex(0) +5 >Emitted(14, 19) Source(22, 35) + SourceIndex(0) +6 >Emitted(14, 20) Source(22, 36) + SourceIndex(0) +--- +>>>var numberA2, nameA2, skillA2, nameMA; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^ +11> ^^^^^-> +1-> + > +2 >let +3 > numberA2: number +4 > , +5 > nameA2: string +6 > , +7 > skillA2: string +8 > , +9 > nameMA: string +10> ; +1->Emitted(15, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(15, 5) Source(23, 5) + SourceIndex(0) +3 >Emitted(15, 13) Source(23, 21) + SourceIndex(0) +4 >Emitted(15, 15) Source(23, 23) + SourceIndex(0) +5 >Emitted(15, 21) Source(23, 37) + SourceIndex(0) +6 >Emitted(15, 23) Source(23, 39) + SourceIndex(0) +7 >Emitted(15, 30) Source(23, 54) + SourceIndex(0) +8 >Emitted(15, 32) Source(23, 56) + SourceIndex(0) +9 >Emitted(15, 38) Source(23, 70) + SourceIndex(0) +10>Emitted(15, 39) Source(23, 71) + SourceIndex(0) +--- +>>>var numberA3, robotAInfo, multiRobotAInfo; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >let +3 > numberA3: number +4 > , +5 > robotAInfo: (number | string)[] +6 > , +7 > multiRobotAInfo: (string | [string, string])[] +8 > ; +1->Emitted(16, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) +3 >Emitted(16, 13) Source(24, 21) + SourceIndex(0) +4 >Emitted(16, 15) Source(24, 23) + SourceIndex(0) +5 >Emitted(16, 25) Source(24, 54) + SourceIndex(0) +6 >Emitted(16, 27) Source(24, 56) + SourceIndex(0) +7 >Emitted(16, 42) Source(24, 102) + SourceIndex(0) +8 >Emitted(16, 43) Source(24, 103) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > ([, nameA = "noName"] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(17, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(17, 4) Source(26, 4) + SourceIndex(0) +3 >Emitted(17, 5) Source(26, 5) + SourceIndex(0) +4 >Emitted(17, 6) Source(26, 30) + SourceIndex(0) +5 >Emitted(17, 16) Source(26, 36) + SourceIndex(0) +6 >Emitted(17, 18) Source(26, 30) + SourceIndex(0) +7 >Emitted(17, 35) Source(26, 36) + SourceIndex(0) +8 >Emitted(17, 37) Source(26, 30) + SourceIndex(0) +9 >Emitted(17, 57) Source(26, 36) + SourceIndex(0) +10>Emitted(17, 59) Source(26, 30) + SourceIndex(0) +11>Emitted(17, 63) Source(26, 36) + SourceIndex(0) +12>Emitted(17, 64) Source(26, 37) + SourceIndex(0) +--- +>>> _a = robots_1[_i], _b = _a[1], nameA = _b === void 0 ? "noName" : _b; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, nameA = "noName"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(18, 5) Source(26, 6) + SourceIndex(0) +2 >Emitted(18, 22) Source(26, 26) + SourceIndex(0) +3 >Emitted(18, 24) Source(26, 9) + SourceIndex(0) +4 >Emitted(18, 34) Source(26, 25) + SourceIndex(0) +5 >Emitted(18, 36) Source(26, 9) + SourceIndex(0) +6 >Emitted(18, 73) Source(26, 25) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(27, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(27, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(27, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(27, 17) + SourceIndex(0) +6 >Emitted(19, 22) Source(27, 22) + SourceIndex(0) +7 >Emitted(19, 23) Source(27, 23) + SourceIndex(0) +8 >Emitted(19, 24) Source(27, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(20, 2) Source(28, 2) + SourceIndex(0) +--- +>>>for (var _c = 0, _d = getRobots(); _c < _d.length; _c++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, nameA = "noName"] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(21, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(29, 30) + SourceIndex(0) +5 >Emitted(21, 16) Source(29, 41) + SourceIndex(0) +6 >Emitted(21, 18) Source(29, 30) + SourceIndex(0) +7 >Emitted(21, 23) Source(29, 30) + SourceIndex(0) +8 >Emitted(21, 32) Source(29, 39) + SourceIndex(0) +9 >Emitted(21, 34) Source(29, 41) + SourceIndex(0) +10>Emitted(21, 36) Source(29, 30) + SourceIndex(0) +11>Emitted(21, 50) Source(29, 41) + SourceIndex(0) +12>Emitted(21, 52) Source(29, 30) + SourceIndex(0) +13>Emitted(21, 56) Source(29, 41) + SourceIndex(0) +14>Emitted(21, 57) Source(29, 42) + SourceIndex(0) +--- +>>> _e = _d[_c], _f = _e[1], nameA = _f === void 0 ? "noName" : _f; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, nameA = "noName"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(22, 5) Source(29, 6) + SourceIndex(0) +2 >Emitted(22, 16) Source(29, 26) + SourceIndex(0) +3 >Emitted(22, 18) Source(29, 9) + SourceIndex(0) +4 >Emitted(22, 28) Source(29, 25) + SourceIndex(0) +5 >Emitted(22, 30) Source(29, 9) + SourceIndex(0) +6 >Emitted(22, 67) Source(29, 25) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(23, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(23, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(23, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(23, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(23, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(23, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(23, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(23, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(24, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for (var _g = 0, _h = [robotA, robotB]; _g < _h.length; _g++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, nameA = "noName"] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(25, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(25, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(25, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(25, 6) Source(32, 30) + SourceIndex(0) +5 >Emitted(25, 16) Source(32, 46) + SourceIndex(0) +6 >Emitted(25, 18) Source(32, 30) + SourceIndex(0) +7 >Emitted(25, 24) Source(32, 31) + SourceIndex(0) +8 >Emitted(25, 30) Source(32, 37) + SourceIndex(0) +9 >Emitted(25, 32) Source(32, 39) + SourceIndex(0) +10>Emitted(25, 38) Source(32, 45) + SourceIndex(0) +11>Emitted(25, 39) Source(32, 46) + SourceIndex(0) +12>Emitted(25, 41) Source(32, 30) + SourceIndex(0) +13>Emitted(25, 55) Source(32, 46) + SourceIndex(0) +14>Emitted(25, 57) Source(32, 30) + SourceIndex(0) +15>Emitted(25, 61) Source(32, 46) + SourceIndex(0) +16>Emitted(25, 62) Source(32, 47) + SourceIndex(0) +--- +>>> _j = _h[_g], _k = _j[1], nameA = _k === void 0 ? "noName" : _k; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, nameA = "noName"] +3 > +4 > nameA = "noName" +5 > +6 > nameA = "noName" +1->Emitted(26, 5) Source(32, 6) + SourceIndex(0) +2 >Emitted(26, 16) Source(32, 26) + SourceIndex(0) +3 >Emitted(26, 18) Source(32, 9) + SourceIndex(0) +4 >Emitted(26, 28) Source(32, 25) + SourceIndex(0) +5 >Emitted(26, 30) Source(32, 9) + SourceIndex(0) +6 >Emitted(26, 67) Source(32, 25) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(27, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(27, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(27, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(27, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(27, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(27, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(27, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(27, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(28, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _l = 0, multiRobots_1 = multiRobots; _l < multiRobots_1.length; _l++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(29, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(29, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(29, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(29, 6) Source(38, 30) + SourceIndex(0) +5 >Emitted(29, 16) Source(38, 41) + SourceIndex(0) +6 >Emitted(29, 18) Source(38, 30) + SourceIndex(0) +7 >Emitted(29, 45) Source(38, 41) + SourceIndex(0) +8 >Emitted(29, 47) Source(38, 30) + SourceIndex(0) +9 >Emitted(29, 72) Source(38, 41) + SourceIndex(0) +10>Emitted(29, 74) Source(38, 30) + SourceIndex(0) +11>Emitted(29, 78) Source(38, 41) + SourceIndex(0) +12>Emitted(29, 79) Source(38, 42) + SourceIndex(0) +--- +>>> _m = multiRobots_1[_l], _o = _m[1], _p = _o === void 0 ? ["skill1", "skill2"] : _o, _q = _p[0], primarySkillA = _q === void 0 ? "primary" : _q, _r = _p[1], secondarySkillA = _r === void 0 ? "secondary" : _r; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +5 > +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +7 > +8 > primarySkillA = "primary" +9 > +10> primarySkillA = "primary" +11> , + > +12> secondarySkillA = "secondary" +13> +14> secondarySkillA = "secondary" +1->Emitted(30, 5) Source(35, 6) + SourceIndex(0) +2 >Emitted(30, 27) Source(38, 26) + SourceIndex(0) +3 >Emitted(30, 29) Source(35, 9) + SourceIndex(0) +4 >Emitted(30, 39) Source(38, 25) + SourceIndex(0) +5 >Emitted(30, 41) Source(35, 9) + SourceIndex(0) +6 >Emitted(30, 87) Source(38, 25) + SourceIndex(0) +7 >Emitted(30, 89) Source(36, 5) + SourceIndex(0) +8 >Emitted(30, 99) Source(36, 30) + SourceIndex(0) +9 >Emitted(30, 101) Source(36, 5) + SourceIndex(0) +10>Emitted(30, 147) Source(36, 30) + SourceIndex(0) +11>Emitted(30, 149) Source(37, 5) + SourceIndex(0) +12>Emitted(30, 159) Source(37, 34) + SourceIndex(0) +13>Emitted(30, 161) Source(37, 5) + SourceIndex(0) +14>Emitted(30, 211) Source(37, 34) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(31, 30) Source(39, 30) + SourceIndex(0) +7 >Emitted(31, 31) Source(39, 31) + SourceIndex(0) +8 >Emitted(31, 32) Source(39, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(32, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for (var _s = 0, _t = getMultiRobots(); _s < _t.length; _s++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(33, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(44, 30) + SourceIndex(0) +5 >Emitted(33, 16) Source(44, 46) + SourceIndex(0) +6 >Emitted(33, 18) Source(44, 30) + SourceIndex(0) +7 >Emitted(33, 23) Source(44, 30) + SourceIndex(0) +8 >Emitted(33, 37) Source(44, 44) + SourceIndex(0) +9 >Emitted(33, 39) Source(44, 46) + SourceIndex(0) +10>Emitted(33, 41) Source(44, 30) + SourceIndex(0) +11>Emitted(33, 55) Source(44, 46) + SourceIndex(0) +12>Emitted(33, 57) Source(44, 30) + SourceIndex(0) +13>Emitted(33, 61) Source(44, 46) + SourceIndex(0) +14>Emitted(33, 62) Source(44, 47) + SourceIndex(0) +--- +>>> _u = _t[_s], _v = _u[1], _w = _v === void 0 ? ["skill1", "skill2"] : _v, _x = _w[0], primarySkillA = _x === void 0 ? "primary" : _x, _y = _w[1], secondarySkillA = _y === void 0 ? "secondary" : _y; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +5 > +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +7 > +8 > primarySkillA = "primary" +9 > +10> primarySkillA = "primary" +11> , + > +12> secondarySkillA = "secondary" +13> +14> secondarySkillA = "secondary" +1->Emitted(34, 5) Source(41, 6) + SourceIndex(0) +2 >Emitted(34, 16) Source(44, 26) + SourceIndex(0) +3 >Emitted(34, 18) Source(41, 9) + SourceIndex(0) +4 >Emitted(34, 28) Source(44, 25) + SourceIndex(0) +5 >Emitted(34, 30) Source(41, 9) + SourceIndex(0) +6 >Emitted(34, 76) Source(44, 25) + SourceIndex(0) +7 >Emitted(34, 78) Source(42, 5) + SourceIndex(0) +8 >Emitted(34, 88) Source(42, 30) + SourceIndex(0) +9 >Emitted(34, 90) Source(42, 5) + SourceIndex(0) +10>Emitted(34, 136) Source(42, 30) + SourceIndex(0) +11>Emitted(34, 138) Source(43, 5) + SourceIndex(0) +12>Emitted(34, 148) Source(43, 34) + SourceIndex(0) +13>Emitted(34, 150) Source(43, 5) + SourceIndex(0) +14>Emitted(34, 200) Source(43, 34) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(35, 5) Source(45, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(45, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(45, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(45, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(45, 17) + SourceIndex(0) +6 >Emitted(35, 30) Source(45, 30) + SourceIndex(0) +7 >Emitted(35, 31) Source(45, 31) + SourceIndex(0) +8 >Emitted(35, 32) Source(45, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(36, 2) Source(46, 2) + SourceIndex(0) +--- +>>>for (var _z = 0, _0 = [multiRobotA, multiRobotB]; _z < _0.length; _z++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(37, 1) Source(47, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(47, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(47, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(50, 30) + SourceIndex(0) +5 >Emitted(37, 16) Source(50, 56) + SourceIndex(0) +6 >Emitted(37, 18) Source(50, 30) + SourceIndex(0) +7 >Emitted(37, 24) Source(50, 31) + SourceIndex(0) +8 >Emitted(37, 35) Source(50, 42) + SourceIndex(0) +9 >Emitted(37, 37) Source(50, 44) + SourceIndex(0) +10>Emitted(37, 48) Source(50, 55) + SourceIndex(0) +11>Emitted(37, 49) Source(50, 56) + SourceIndex(0) +12>Emitted(37, 51) Source(50, 30) + SourceIndex(0) +13>Emitted(37, 65) Source(50, 56) + SourceIndex(0) +14>Emitted(37, 67) Source(50, 30) + SourceIndex(0) +15>Emitted(37, 71) Source(50, 56) + SourceIndex(0) +16>Emitted(37, 72) Source(50, 57) + SourceIndex(0) +--- +>>> _1 = _0[_z], _2 = _1[1], _3 = _2 === void 0 ? ["skill1", "skill2"] : _2, _4 = _3[0], primarySkillA = _4 === void 0 ? "primary" : _4, _5 = _3[1], secondarySkillA = _5 === void 0 ? "secondary" : _5; +1->^^^^ +2 > ^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +5 > +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +7 > +8 > primarySkillA = "primary" +9 > +10> primarySkillA = "primary" +11> , + > +12> secondarySkillA = "secondary" +13> +14> secondarySkillA = "secondary" +1->Emitted(38, 5) Source(47, 6) + SourceIndex(0) +2 >Emitted(38, 16) Source(50, 26) + SourceIndex(0) +3 >Emitted(38, 18) Source(47, 9) + SourceIndex(0) +4 >Emitted(38, 28) Source(50, 25) + SourceIndex(0) +5 >Emitted(38, 30) Source(47, 9) + SourceIndex(0) +6 >Emitted(38, 76) Source(50, 25) + SourceIndex(0) +7 >Emitted(38, 78) Source(48, 5) + SourceIndex(0) +8 >Emitted(38, 88) Source(48, 30) + SourceIndex(0) +9 >Emitted(38, 90) Source(48, 5) + SourceIndex(0) +10>Emitted(38, 136) Source(48, 30) + SourceIndex(0) +11>Emitted(38, 138) Source(49, 5) + SourceIndex(0) +12>Emitted(38, 148) Source(49, 34) + SourceIndex(0) +13>Emitted(38, 150) Source(49, 5) + SourceIndex(0) +14>Emitted(38, 200) Source(49, 34) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(39, 5) Source(51, 5) + SourceIndex(0) +2 >Emitted(39, 12) Source(51, 12) + SourceIndex(0) +3 >Emitted(39, 13) Source(51, 13) + SourceIndex(0) +4 >Emitted(39, 16) Source(51, 16) + SourceIndex(0) +5 >Emitted(39, 17) Source(51, 17) + SourceIndex(0) +6 >Emitted(39, 30) Source(51, 30) + SourceIndex(0) +7 >Emitted(39, 31) Source(51, 31) + SourceIndex(0) +8 >Emitted(39, 32) Source(51, 32) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(40, 2) Source(52, 2) + SourceIndex(0) +--- +>>>for (var _6 = 0, robots_2 = robots; _6 < robots_2.length; _6++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +1-> + > + > +2 >for +3 > +4 > ([numberB = -1] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(41, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(41, 4) Source(54, 4) + SourceIndex(0) +3 >Emitted(41, 5) Source(54, 5) + SourceIndex(0) +4 >Emitted(41, 6) Source(54, 24) + SourceIndex(0) +5 >Emitted(41, 16) Source(54, 30) + SourceIndex(0) +6 >Emitted(41, 18) Source(54, 24) + SourceIndex(0) +7 >Emitted(41, 35) Source(54, 30) + SourceIndex(0) +8 >Emitted(41, 37) Source(54, 24) + SourceIndex(0) +9 >Emitted(41, 57) Source(54, 30) + SourceIndex(0) +10>Emitted(41, 59) Source(54, 24) + SourceIndex(0) +11>Emitted(41, 63) Source(54, 30) + SourceIndex(0) +12>Emitted(41, 64) Source(54, 31) + SourceIndex(0) +--- +>>> _7 = robots_2[_6][0], numberB = _7 === void 0 ? -1 : _7; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > numberB = -1 +3 > +4 > numberB = -1 +1 >Emitted(42, 5) Source(54, 7) + SourceIndex(0) +2 >Emitted(42, 25) Source(54, 19) + SourceIndex(0) +3 >Emitted(42, 27) Source(54, 7) + SourceIndex(0) +4 >Emitted(42, 60) Source(54, 19) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(43, 5) Source(55, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(55, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(55, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(55, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(55, 17) + SourceIndex(0) +6 >Emitted(43, 24) Source(55, 24) + SourceIndex(0) +7 >Emitted(43, 25) Source(55, 25) + SourceIndex(0) +8 >Emitted(43, 26) Source(55, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(44, 2) Source(56, 2) + SourceIndex(0) +--- +>>>for (var _8 = 0, _9 = getRobots(); _8 < _9.length; _8++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^-> +1-> + > +2 >for +3 > +4 > ([numberB = -1] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(45, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(57, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(57, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(57, 24) + SourceIndex(0) +5 >Emitted(45, 16) Source(57, 35) + SourceIndex(0) +6 >Emitted(45, 18) Source(57, 24) + SourceIndex(0) +7 >Emitted(45, 23) Source(57, 24) + SourceIndex(0) +8 >Emitted(45, 32) Source(57, 33) + SourceIndex(0) +9 >Emitted(45, 34) Source(57, 35) + SourceIndex(0) +10>Emitted(45, 36) Source(57, 24) + SourceIndex(0) +11>Emitted(45, 50) Source(57, 35) + SourceIndex(0) +12>Emitted(45, 52) Source(57, 24) + SourceIndex(0) +13>Emitted(45, 56) Source(57, 35) + SourceIndex(0) +14>Emitted(45, 57) Source(57, 36) + SourceIndex(0) +--- +>>> _10 = _9[_8][0], numberB = _10 === void 0 ? -1 : _10; +1->^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > numberB = -1 +3 > +4 > numberB = -1 +1->Emitted(46, 5) Source(57, 7) + SourceIndex(0) +2 >Emitted(46, 20) Source(57, 19) + SourceIndex(0) +3 >Emitted(46, 22) Source(57, 7) + SourceIndex(0) +4 >Emitted(46, 57) Source(57, 19) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(47, 5) Source(58, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(58, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(58, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(58, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(58, 17) + SourceIndex(0) +6 >Emitted(47, 24) Source(58, 24) + SourceIndex(0) +7 >Emitted(47, 25) Source(58, 25) + SourceIndex(0) +8 >Emitted(47, 26) Source(58, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(48, 2) Source(59, 2) + SourceIndex(0) +--- +>>>for (var _11 = 0, _12 = [robotA, robotB]; _11 < _12.length; _11++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([numberB = -1] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(49, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(60, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(60, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(60, 24) + SourceIndex(0) +5 >Emitted(49, 17) Source(60, 40) + SourceIndex(0) +6 >Emitted(49, 19) Source(60, 24) + SourceIndex(0) +7 >Emitted(49, 26) Source(60, 25) + SourceIndex(0) +8 >Emitted(49, 32) Source(60, 31) + SourceIndex(0) +9 >Emitted(49, 34) Source(60, 33) + SourceIndex(0) +10>Emitted(49, 40) Source(60, 39) + SourceIndex(0) +11>Emitted(49, 41) Source(60, 40) + SourceIndex(0) +12>Emitted(49, 43) Source(60, 24) + SourceIndex(0) +13>Emitted(49, 59) Source(60, 40) + SourceIndex(0) +14>Emitted(49, 61) Source(60, 24) + SourceIndex(0) +15>Emitted(49, 66) Source(60, 40) + SourceIndex(0) +16>Emitted(49, 67) Source(60, 41) + SourceIndex(0) +--- +>>> _13 = _12[_11][0], numberB = _13 === void 0 ? -1 : _13; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > numberB = -1 +3 > +4 > numberB = -1 +1 >Emitted(50, 5) Source(60, 7) + SourceIndex(0) +2 >Emitted(50, 22) Source(60, 19) + SourceIndex(0) +3 >Emitted(50, 24) Source(60, 7) + SourceIndex(0) +4 >Emitted(50, 59) Source(60, 19) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(51, 5) Source(61, 5) + SourceIndex(0) +2 >Emitted(51, 12) Source(61, 12) + SourceIndex(0) +3 >Emitted(51, 13) Source(61, 13) + SourceIndex(0) +4 >Emitted(51, 16) Source(61, 16) + SourceIndex(0) +5 >Emitted(51, 17) Source(61, 17) + SourceIndex(0) +6 >Emitted(51, 24) Source(61, 24) + SourceIndex(0) +7 >Emitted(51, 25) Source(61, 25) + SourceIndex(0) +8 >Emitted(51, 26) Source(61, 26) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(52, 2) Source(62, 2) + SourceIndex(0) +--- +>>>for (var _14 = 0, multiRobots_2 = multiRobots; _14 < multiRobots_2.length; _14++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +1-> + > +2 >for +3 > +4 > ([nameB = "noName"] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(53, 1) Source(63, 1) + SourceIndex(0) +2 >Emitted(53, 4) Source(63, 4) + SourceIndex(0) +3 >Emitted(53, 5) Source(63, 5) + SourceIndex(0) +4 >Emitted(53, 6) Source(63, 28) + SourceIndex(0) +5 >Emitted(53, 17) Source(63, 39) + SourceIndex(0) +6 >Emitted(53, 19) Source(63, 28) + SourceIndex(0) +7 >Emitted(53, 46) Source(63, 39) + SourceIndex(0) +8 >Emitted(53, 48) Source(63, 28) + SourceIndex(0) +9 >Emitted(53, 74) Source(63, 39) + SourceIndex(0) +10>Emitted(53, 76) Source(63, 28) + SourceIndex(0) +11>Emitted(53, 81) Source(63, 39) + SourceIndex(0) +12>Emitted(53, 82) Source(63, 40) + SourceIndex(0) +--- +>>> _15 = multiRobots_2[_14][0], nameB = _15 === void 0 ? "noName" : _15; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > nameB = "noName" +3 > +4 > nameB = "noName" +1 >Emitted(54, 5) Source(63, 7) + SourceIndex(0) +2 >Emitted(54, 32) Source(63, 23) + SourceIndex(0) +3 >Emitted(54, 34) Source(63, 7) + SourceIndex(0) +4 >Emitted(54, 73) Source(63, 23) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(55, 5) Source(64, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(64, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(64, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(64, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(64, 17) + SourceIndex(0) +6 >Emitted(55, 22) Source(64, 22) + SourceIndex(0) +7 >Emitted(55, 23) Source(64, 23) + SourceIndex(0) +8 >Emitted(55, 24) Source(64, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(56, 2) Source(65, 2) + SourceIndex(0) +--- +>>>for (var _16 = 0, _17 = getMultiRobots(); _16 < _17.length; _16++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +1-> + > +2 >for +3 > +4 > ([nameB = "noName"] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(57, 1) Source(66, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(66, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(66, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(66, 28) + SourceIndex(0) +5 >Emitted(57, 17) Source(66, 44) + SourceIndex(0) +6 >Emitted(57, 19) Source(66, 28) + SourceIndex(0) +7 >Emitted(57, 25) Source(66, 28) + SourceIndex(0) +8 >Emitted(57, 39) Source(66, 42) + SourceIndex(0) +9 >Emitted(57, 41) Source(66, 44) + SourceIndex(0) +10>Emitted(57, 43) Source(66, 28) + SourceIndex(0) +11>Emitted(57, 59) Source(66, 44) + SourceIndex(0) +12>Emitted(57, 61) Source(66, 28) + SourceIndex(0) +13>Emitted(57, 66) Source(66, 44) + SourceIndex(0) +14>Emitted(57, 67) Source(66, 45) + SourceIndex(0) +--- +>>> _18 = _17[_16][0], nameB = _18 === void 0 ? "noName" : _18; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > nameB = "noName" +3 > +4 > nameB = "noName" +1 >Emitted(58, 5) Source(66, 7) + SourceIndex(0) +2 >Emitted(58, 22) Source(66, 23) + SourceIndex(0) +3 >Emitted(58, 24) Source(66, 7) + SourceIndex(0) +4 >Emitted(58, 63) Source(66, 23) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(59, 5) Source(67, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(67, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(67, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(67, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(67, 17) + SourceIndex(0) +6 >Emitted(59, 22) Source(67, 22) + SourceIndex(0) +7 >Emitted(59, 23) Source(67, 23) + SourceIndex(0) +8 >Emitted(59, 24) Source(67, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(60, 2) Source(68, 2) + SourceIndex(0) +--- +>>>for (var _19 = 0, _20 = [multiRobotA, multiRobotB]; _19 < _20.length; _19++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +1-> + > +2 >for +3 > +4 > ([nameB = "noName"] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(61, 1) Source(69, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(69, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(69, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(69, 28) + SourceIndex(0) +5 >Emitted(61, 17) Source(69, 54) + SourceIndex(0) +6 >Emitted(61, 19) Source(69, 28) + SourceIndex(0) +7 >Emitted(61, 26) Source(69, 29) + SourceIndex(0) +8 >Emitted(61, 37) Source(69, 40) + SourceIndex(0) +9 >Emitted(61, 39) Source(69, 42) + SourceIndex(0) +10>Emitted(61, 50) Source(69, 53) + SourceIndex(0) +11>Emitted(61, 51) Source(69, 54) + SourceIndex(0) +12>Emitted(61, 53) Source(69, 28) + SourceIndex(0) +13>Emitted(61, 69) Source(69, 54) + SourceIndex(0) +14>Emitted(61, 71) Source(69, 28) + SourceIndex(0) +15>Emitted(61, 76) Source(69, 54) + SourceIndex(0) +16>Emitted(61, 77) Source(69, 55) + SourceIndex(0) +--- +>>> _21 = _20[_19][0], nameB = _21 === void 0 ? "noName" : _21; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > nameB = "noName" +3 > +4 > nameB = "noName" +1 >Emitted(62, 5) Source(69, 7) + SourceIndex(0) +2 >Emitted(62, 22) Source(69, 23) + SourceIndex(0) +3 >Emitted(62, 24) Source(69, 7) + SourceIndex(0) +4 >Emitted(62, 63) Source(69, 23) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 >] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(63, 5) Source(70, 5) + SourceIndex(0) +2 >Emitted(63, 12) Source(70, 12) + SourceIndex(0) +3 >Emitted(63, 13) Source(70, 13) + SourceIndex(0) +4 >Emitted(63, 16) Source(70, 16) + SourceIndex(0) +5 >Emitted(63, 17) Source(70, 17) + SourceIndex(0) +6 >Emitted(63, 22) Source(70, 22) + SourceIndex(0) +7 >Emitted(63, 23) Source(70, 23) + SourceIndex(0) +8 >Emitted(63, 24) Source(70, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(64, 2) Source(71, 2) + SourceIndex(0) +--- +>>>for (var _22 = 0, robots_3 = robots; _22 < robots_3.length; _22++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(65, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(65, 4) Source(73, 4) + SourceIndex(0) +3 >Emitted(65, 5) Source(73, 5) + SourceIndex(0) +4 >Emitted(65, 6) Source(73, 63) + SourceIndex(0) +5 >Emitted(65, 17) Source(73, 69) + SourceIndex(0) +6 >Emitted(65, 19) Source(73, 63) + SourceIndex(0) +7 >Emitted(65, 36) Source(73, 69) + SourceIndex(0) +8 >Emitted(65, 38) Source(73, 63) + SourceIndex(0) +9 >Emitted(65, 59) Source(73, 69) + SourceIndex(0) +10>Emitted(65, 61) Source(73, 63) + SourceIndex(0) +11>Emitted(65, 66) Source(73, 69) + SourceIndex(0) +12>Emitted(65, 67) Source(73, 70) + SourceIndex(0) +--- +>>> _23 = robots_3[_22], _24 = _23[0], numberA2 = _24 === void 0 ? -1 : _24, _25 = _23[1], nameA2 = _25 === void 0 ? "noName" : _25, _26 = _23[2], skillA2 = _26 === void 0 ? "skill" : _26; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "noName" +9 > +10> nameA2 = "noName" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(66, 5) Source(73, 6) + SourceIndex(0) +2 >Emitted(66, 24) Source(73, 59) + SourceIndex(0) +3 >Emitted(66, 26) Source(73, 7) + SourceIndex(0) +4 >Emitted(66, 38) Source(73, 20) + SourceIndex(0) +5 >Emitted(66, 40) Source(73, 7) + SourceIndex(0) +6 >Emitted(66, 76) Source(73, 20) + SourceIndex(0) +7 >Emitted(66, 78) Source(73, 22) + SourceIndex(0) +8 >Emitted(66, 90) Source(73, 39) + SourceIndex(0) +9 >Emitted(66, 92) Source(73, 22) + SourceIndex(0) +10>Emitted(66, 132) Source(73, 39) + SourceIndex(0) +11>Emitted(66, 134) Source(73, 41) + SourceIndex(0) +12>Emitted(66, 146) Source(73, 58) + SourceIndex(0) +13>Emitted(66, 148) Source(73, 41) + SourceIndex(0) +14>Emitted(66, 188) Source(73, 58) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(67, 5) Source(74, 5) + SourceIndex(0) +2 >Emitted(67, 12) Source(74, 12) + SourceIndex(0) +3 >Emitted(67, 13) Source(74, 13) + SourceIndex(0) +4 >Emitted(67, 16) Source(74, 16) + SourceIndex(0) +5 >Emitted(67, 17) Source(74, 17) + SourceIndex(0) +6 >Emitted(67, 23) Source(74, 23) + SourceIndex(0) +7 >Emitted(67, 24) Source(74, 24) + SourceIndex(0) +8 >Emitted(67, 25) Source(74, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(68, 2) Source(75, 2) + SourceIndex(0) +--- +>>>for (var _27 = 0, _28 = getRobots(); _27 < _28.length; _27++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(69, 1) Source(76, 1) + SourceIndex(0) +2 >Emitted(69, 4) Source(76, 4) + SourceIndex(0) +3 >Emitted(69, 5) Source(76, 5) + SourceIndex(0) +4 >Emitted(69, 6) Source(76, 63) + SourceIndex(0) +5 >Emitted(69, 17) Source(76, 74) + SourceIndex(0) +6 >Emitted(69, 19) Source(76, 63) + SourceIndex(0) +7 >Emitted(69, 25) Source(76, 63) + SourceIndex(0) +8 >Emitted(69, 34) Source(76, 72) + SourceIndex(0) +9 >Emitted(69, 36) Source(76, 74) + SourceIndex(0) +10>Emitted(69, 38) Source(76, 63) + SourceIndex(0) +11>Emitted(69, 54) Source(76, 74) + SourceIndex(0) +12>Emitted(69, 56) Source(76, 63) + SourceIndex(0) +13>Emitted(69, 61) Source(76, 74) + SourceIndex(0) +14>Emitted(69, 62) Source(76, 75) + SourceIndex(0) +--- +>>> _29 = _28[_27], _30 = _29[0], numberA2 = _30 === void 0 ? -1 : _30, _31 = _29[1], nameA2 = _31 === void 0 ? "noName" : _31, _32 = _29[2], skillA2 = _32 === void 0 ? "skill" : _32; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "noName" +9 > +10> nameA2 = "noName" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(70, 5) Source(76, 6) + SourceIndex(0) +2 >Emitted(70, 19) Source(76, 59) + SourceIndex(0) +3 >Emitted(70, 21) Source(76, 7) + SourceIndex(0) +4 >Emitted(70, 33) Source(76, 20) + SourceIndex(0) +5 >Emitted(70, 35) Source(76, 7) + SourceIndex(0) +6 >Emitted(70, 71) Source(76, 20) + SourceIndex(0) +7 >Emitted(70, 73) Source(76, 22) + SourceIndex(0) +8 >Emitted(70, 85) Source(76, 39) + SourceIndex(0) +9 >Emitted(70, 87) Source(76, 22) + SourceIndex(0) +10>Emitted(70, 127) Source(76, 39) + SourceIndex(0) +11>Emitted(70, 129) Source(76, 41) + SourceIndex(0) +12>Emitted(70, 141) Source(76, 58) + SourceIndex(0) +13>Emitted(70, 143) Source(76, 41) + SourceIndex(0) +14>Emitted(70, 183) Source(76, 58) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(71, 5) Source(77, 5) + SourceIndex(0) +2 >Emitted(71, 12) Source(77, 12) + SourceIndex(0) +3 >Emitted(71, 13) Source(77, 13) + SourceIndex(0) +4 >Emitted(71, 16) Source(77, 16) + SourceIndex(0) +5 >Emitted(71, 17) Source(77, 17) + SourceIndex(0) +6 >Emitted(71, 23) Source(77, 23) + SourceIndex(0) +7 >Emitted(71, 24) Source(77, 24) + SourceIndex(0) +8 >Emitted(71, 25) Source(77, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(72, 2) Source(78, 2) + SourceIndex(0) +--- +>>>for (var _33 = 0, _34 = [robotA, robotB]; _33 < _34.length; _33++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(73, 1) Source(79, 1) + SourceIndex(0) +2 >Emitted(73, 4) Source(79, 4) + SourceIndex(0) +3 >Emitted(73, 5) Source(79, 5) + SourceIndex(0) +4 >Emitted(73, 6) Source(79, 63) + SourceIndex(0) +5 >Emitted(73, 17) Source(79, 79) + SourceIndex(0) +6 >Emitted(73, 19) Source(79, 63) + SourceIndex(0) +7 >Emitted(73, 26) Source(79, 64) + SourceIndex(0) +8 >Emitted(73, 32) Source(79, 70) + SourceIndex(0) +9 >Emitted(73, 34) Source(79, 72) + SourceIndex(0) +10>Emitted(73, 40) Source(79, 78) + SourceIndex(0) +11>Emitted(73, 41) Source(79, 79) + SourceIndex(0) +12>Emitted(73, 43) Source(79, 63) + SourceIndex(0) +13>Emitted(73, 59) Source(79, 79) + SourceIndex(0) +14>Emitted(73, 61) Source(79, 63) + SourceIndex(0) +15>Emitted(73, 66) Source(79, 79) + SourceIndex(0) +16>Emitted(73, 67) Source(79, 80) + SourceIndex(0) +--- +>>> _35 = _34[_33], _36 = _35[0], numberA2 = _36 === void 0 ? -1 : _36, _37 = _35[1], nameA2 = _37 === void 0 ? "noName" : _37, _38 = _35[2], skillA2 = _38 === void 0 ? "skill" : _38; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] +3 > +4 > numberA2 = -1 +5 > +6 > numberA2 = -1 +7 > , +8 > nameA2 = "noName" +9 > +10> nameA2 = "noName" +11> , +12> skillA2 = "skill" +13> +14> skillA2 = "skill" +1->Emitted(74, 5) Source(79, 6) + SourceIndex(0) +2 >Emitted(74, 19) Source(79, 59) + SourceIndex(0) +3 >Emitted(74, 21) Source(79, 7) + SourceIndex(0) +4 >Emitted(74, 33) Source(79, 20) + SourceIndex(0) +5 >Emitted(74, 35) Source(79, 7) + SourceIndex(0) +6 >Emitted(74, 71) Source(79, 20) + SourceIndex(0) +7 >Emitted(74, 73) Source(79, 22) + SourceIndex(0) +8 >Emitted(74, 85) Source(79, 39) + SourceIndex(0) +9 >Emitted(74, 87) Source(79, 22) + SourceIndex(0) +10>Emitted(74, 127) Source(79, 39) + SourceIndex(0) +11>Emitted(74, 129) Source(79, 41) + SourceIndex(0) +12>Emitted(74, 141) Source(79, 58) + SourceIndex(0) +13>Emitted(74, 143) Source(79, 41) + SourceIndex(0) +14>Emitted(74, 183) Source(79, 58) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(75, 5) Source(80, 5) + SourceIndex(0) +2 >Emitted(75, 12) Source(80, 12) + SourceIndex(0) +3 >Emitted(75, 13) Source(80, 13) + SourceIndex(0) +4 >Emitted(75, 16) Source(80, 16) + SourceIndex(0) +5 >Emitted(75, 17) Source(80, 17) + SourceIndex(0) +6 >Emitted(75, 23) Source(80, 23) + SourceIndex(0) +7 >Emitted(75, 24) Source(80, 24) + SourceIndex(0) +8 >Emitted(75, 25) Source(80, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(76, 2) Source(81, 2) + SourceIndex(0) +--- +>>>for (var _39 = 0, multiRobots_3 = multiRobots; _39 < multiRobots_3.length; _39++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(77, 1) Source(82, 1) + SourceIndex(0) +2 >Emitted(77, 4) Source(82, 4) + SourceIndex(0) +3 >Emitted(77, 5) Source(82, 5) + SourceIndex(0) +4 >Emitted(77, 6) Source(85, 30) + SourceIndex(0) +5 >Emitted(77, 17) Source(85, 41) + SourceIndex(0) +6 >Emitted(77, 19) Source(85, 30) + SourceIndex(0) +7 >Emitted(77, 46) Source(85, 41) + SourceIndex(0) +8 >Emitted(77, 48) Source(85, 30) + SourceIndex(0) +9 >Emitted(77, 74) Source(85, 41) + SourceIndex(0) +10>Emitted(77, 76) Source(85, 30) + SourceIndex(0) +11>Emitted(77, 81) Source(85, 41) + SourceIndex(0) +12>Emitted(77, 82) Source(85, 42) + SourceIndex(0) +--- +>>> _40 = multiRobots_3[_39], _41 = _40[0], nameMA = _41 === void 0 ? "noName" : _41, _42 = _40[1], _43 = _42 === void 0 ? ["skill1", "skill2"] : _42, _44 = _43[0], primarySkillA = _44 === void 0 ? "primary" : _44, _45 = _43[1], secondarySkillA = _45 === void 0 ? "secondary" : _45; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > nameMA = "noName" +5 > +6 > nameMA = "noName" +7 > , +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +1->Emitted(78, 5) Source(82, 6) + SourceIndex(0) +2 >Emitted(78, 29) Source(85, 26) + SourceIndex(0) +3 >Emitted(78, 31) Source(82, 7) + SourceIndex(0) +4 >Emitted(78, 43) Source(82, 24) + SourceIndex(0) +5 >Emitted(78, 45) Source(82, 7) + SourceIndex(0) +6 >Emitted(78, 85) Source(82, 24) + SourceIndex(0) +7 >Emitted(78, 87) Source(82, 26) + SourceIndex(0) +8 >Emitted(78, 99) Source(85, 25) + SourceIndex(0) +9 >Emitted(78, 101) Source(82, 26) + SourceIndex(0) +10>Emitted(78, 150) Source(85, 25) + SourceIndex(0) +11>Emitted(78, 152) Source(83, 5) + SourceIndex(0) +12>Emitted(78, 164) Source(83, 30) + SourceIndex(0) +13>Emitted(78, 166) Source(83, 5) + SourceIndex(0) +14>Emitted(78, 214) Source(83, 30) + SourceIndex(0) +15>Emitted(78, 216) Source(84, 5) + SourceIndex(0) +16>Emitted(78, 228) Source(84, 34) + SourceIndex(0) +17>Emitted(78, 230) Source(84, 5) + SourceIndex(0) +18>Emitted(78, 282) Source(84, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(79, 5) Source(86, 5) + SourceIndex(0) +2 >Emitted(79, 12) Source(86, 12) + SourceIndex(0) +3 >Emitted(79, 13) Source(86, 13) + SourceIndex(0) +4 >Emitted(79, 16) Source(86, 16) + SourceIndex(0) +5 >Emitted(79, 17) Source(86, 17) + SourceIndex(0) +6 >Emitted(79, 23) Source(86, 23) + SourceIndex(0) +7 >Emitted(79, 24) Source(86, 24) + SourceIndex(0) +8 >Emitted(79, 25) Source(86, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(80, 2) Source(87, 2) + SourceIndex(0) +--- +>>>for (var _46 = 0, _47 = getMultiRobots(); _46 < _47.length; _46++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(81, 1) Source(88, 1) + SourceIndex(0) +2 >Emitted(81, 4) Source(88, 4) + SourceIndex(0) +3 >Emitted(81, 5) Source(88, 5) + SourceIndex(0) +4 >Emitted(81, 6) Source(91, 30) + SourceIndex(0) +5 >Emitted(81, 17) Source(91, 46) + SourceIndex(0) +6 >Emitted(81, 19) Source(91, 30) + SourceIndex(0) +7 >Emitted(81, 25) Source(91, 30) + SourceIndex(0) +8 >Emitted(81, 39) Source(91, 44) + SourceIndex(0) +9 >Emitted(81, 41) Source(91, 46) + SourceIndex(0) +10>Emitted(81, 43) Source(91, 30) + SourceIndex(0) +11>Emitted(81, 59) Source(91, 46) + SourceIndex(0) +12>Emitted(81, 61) Source(91, 30) + SourceIndex(0) +13>Emitted(81, 66) Source(91, 46) + SourceIndex(0) +14>Emitted(81, 67) Source(91, 47) + SourceIndex(0) +--- +>>> _48 = _47[_46], _49 = _48[0], nameMA = _49 === void 0 ? "noName" : _49, _50 = _48[1], _51 = _50 === void 0 ? ["skill1", "skill2"] : _50, _52 = _51[0], primarySkillA = _52 === void 0 ? "primary" : _52, _53 = _51[1], secondarySkillA = _53 === void 0 ? "secondary" : _53; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > nameMA = "noName" +5 > +6 > nameMA = "noName" +7 > , +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +1->Emitted(82, 5) Source(88, 6) + SourceIndex(0) +2 >Emitted(82, 19) Source(91, 26) + SourceIndex(0) +3 >Emitted(82, 21) Source(88, 7) + SourceIndex(0) +4 >Emitted(82, 33) Source(88, 24) + SourceIndex(0) +5 >Emitted(82, 35) Source(88, 7) + SourceIndex(0) +6 >Emitted(82, 75) Source(88, 24) + SourceIndex(0) +7 >Emitted(82, 77) Source(88, 26) + SourceIndex(0) +8 >Emitted(82, 89) Source(91, 25) + SourceIndex(0) +9 >Emitted(82, 91) Source(88, 26) + SourceIndex(0) +10>Emitted(82, 140) Source(91, 25) + SourceIndex(0) +11>Emitted(82, 142) Source(89, 5) + SourceIndex(0) +12>Emitted(82, 154) Source(89, 30) + SourceIndex(0) +13>Emitted(82, 156) Source(89, 5) + SourceIndex(0) +14>Emitted(82, 204) Source(89, 30) + SourceIndex(0) +15>Emitted(82, 206) Source(90, 5) + SourceIndex(0) +16>Emitted(82, 218) Source(90, 34) + SourceIndex(0) +17>Emitted(82, 220) Source(90, 5) + SourceIndex(0) +18>Emitted(82, 272) Source(90, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(83, 5) Source(92, 5) + SourceIndex(0) +2 >Emitted(83, 12) Source(92, 12) + SourceIndex(0) +3 >Emitted(83, 13) Source(92, 13) + SourceIndex(0) +4 >Emitted(83, 16) Source(92, 16) + SourceIndex(0) +5 >Emitted(83, 17) Source(92, 17) + SourceIndex(0) +6 >Emitted(83, 23) Source(92, 23) + SourceIndex(0) +7 >Emitted(83, 24) Source(92, 24) + SourceIndex(0) +8 >Emitted(83, 25) Source(92, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(84, 2) Source(93, 2) + SourceIndex(0) +--- +>>>for (var _54 = 0, _55 = [multiRobotA, multiRobotB]; _54 < _55.length; _54++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] of +5 > [multiRobotA, multiRobotB] +6 > +7 > [ +8 > multiRobotA +9 > , +10> multiRobotB +11> ] +12> +13> [multiRobotA, multiRobotB] +14> +15> [multiRobotA, multiRobotB] +16> ) +1->Emitted(85, 1) Source(94, 1) + SourceIndex(0) +2 >Emitted(85, 4) Source(94, 4) + SourceIndex(0) +3 >Emitted(85, 5) Source(94, 5) + SourceIndex(0) +4 >Emitted(85, 6) Source(97, 30) + SourceIndex(0) +5 >Emitted(85, 17) Source(97, 56) + SourceIndex(0) +6 >Emitted(85, 19) Source(97, 30) + SourceIndex(0) +7 >Emitted(85, 26) Source(97, 31) + SourceIndex(0) +8 >Emitted(85, 37) Source(97, 42) + SourceIndex(0) +9 >Emitted(85, 39) Source(97, 44) + SourceIndex(0) +10>Emitted(85, 50) Source(97, 55) + SourceIndex(0) +11>Emitted(85, 51) Source(97, 56) + SourceIndex(0) +12>Emitted(85, 53) Source(97, 30) + SourceIndex(0) +13>Emitted(85, 69) Source(97, 56) + SourceIndex(0) +14>Emitted(85, 71) Source(97, 30) + SourceIndex(0) +15>Emitted(85, 76) Source(97, 56) + SourceIndex(0) +16>Emitted(85, 77) Source(97, 57) + SourceIndex(0) +--- +>>> _56 = _55[_54], _57 = _56[0], nameMA = _57 === void 0 ? "noName" : _57, _58 = _56[1], _59 = _58 === void 0 ? ["skill1", "skill2"] : _58, _60 = _59[0], primarySkillA = _60 === void 0 ? "primary" : _60, _61 = _59[1], secondarySkillA = _61 === void 0 ? "secondary" : _61; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"]] +3 > +4 > nameMA = "noName" +5 > +6 > nameMA = "noName" +7 > , +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["skill1", "skill2"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +1->Emitted(86, 5) Source(94, 6) + SourceIndex(0) +2 >Emitted(86, 19) Source(97, 26) + SourceIndex(0) +3 >Emitted(86, 21) Source(94, 7) + SourceIndex(0) +4 >Emitted(86, 33) Source(94, 24) + SourceIndex(0) +5 >Emitted(86, 35) Source(94, 7) + SourceIndex(0) +6 >Emitted(86, 75) Source(94, 24) + SourceIndex(0) +7 >Emitted(86, 77) Source(94, 26) + SourceIndex(0) +8 >Emitted(86, 89) Source(97, 25) + SourceIndex(0) +9 >Emitted(86, 91) Source(94, 26) + SourceIndex(0) +10>Emitted(86, 140) Source(97, 25) + SourceIndex(0) +11>Emitted(86, 142) Source(95, 5) + SourceIndex(0) +12>Emitted(86, 154) Source(95, 30) + SourceIndex(0) +13>Emitted(86, 156) Source(95, 5) + SourceIndex(0) +14>Emitted(86, 204) Source(95, 30) + SourceIndex(0) +15>Emitted(86, 206) Source(96, 5) + SourceIndex(0) +16>Emitted(86, 218) Source(96, 34) + SourceIndex(0) +17>Emitted(86, 220) Source(96, 5) + SourceIndex(0) +18>Emitted(86, 272) Source(96, 34) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(87, 5) Source(98, 5) + SourceIndex(0) +2 >Emitted(87, 12) Source(98, 12) + SourceIndex(0) +3 >Emitted(87, 13) Source(98, 13) + SourceIndex(0) +4 >Emitted(87, 16) Source(98, 16) + SourceIndex(0) +5 >Emitted(87, 17) Source(98, 17) + SourceIndex(0) +6 >Emitted(87, 23) Source(98, 23) + SourceIndex(0) +7 >Emitted(87, 24) Source(98, 24) + SourceIndex(0) +8 >Emitted(87, 25) Source(98, 25) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(88, 2) Source(99, 2) + SourceIndex(0) +--- +>>>for (var _62 = 0, robots_4 = robots; _62 < robots_4.length; _62++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > ([numberA3 = -1, ...robotAInfo] of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(89, 1) Source(101, 1) + SourceIndex(0) +2 >Emitted(89, 4) Source(101, 4) + SourceIndex(0) +3 >Emitted(89, 5) Source(101, 5) + SourceIndex(0) +4 >Emitted(89, 6) Source(101, 40) + SourceIndex(0) +5 >Emitted(89, 17) Source(101, 46) + SourceIndex(0) +6 >Emitted(89, 19) Source(101, 40) + SourceIndex(0) +7 >Emitted(89, 36) Source(101, 46) + SourceIndex(0) +8 >Emitted(89, 38) Source(101, 40) + SourceIndex(0) +9 >Emitted(89, 59) Source(101, 46) + SourceIndex(0) +10>Emitted(89, 61) Source(101, 40) + SourceIndex(0) +11>Emitted(89, 66) Source(101, 46) + SourceIndex(0) +12>Emitted(89, 67) Source(101, 47) + SourceIndex(0) +--- +>>> _63 = robots_4[_62], _64 = _63[0], numberA3 = _64 === void 0 ? -1 : _64, robotAInfo = _63.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA3 = -1, ...robotAInfo] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(90, 5) Source(101, 6) + SourceIndex(0) +2 >Emitted(90, 24) Source(101, 36) + SourceIndex(0) +3 >Emitted(90, 26) Source(101, 7) + SourceIndex(0) +4 >Emitted(90, 38) Source(101, 20) + SourceIndex(0) +5 >Emitted(90, 40) Source(101, 7) + SourceIndex(0) +6 >Emitted(90, 76) Source(101, 20) + SourceIndex(0) +7 >Emitted(90, 78) Source(101, 22) + SourceIndex(0) +8 >Emitted(90, 103) Source(101, 35) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(91, 5) Source(102, 5) + SourceIndex(0) +2 >Emitted(91, 12) Source(102, 12) + SourceIndex(0) +3 >Emitted(91, 13) Source(102, 13) + SourceIndex(0) +4 >Emitted(91, 16) Source(102, 16) + SourceIndex(0) +5 >Emitted(91, 17) Source(102, 17) + SourceIndex(0) +6 >Emitted(91, 25) Source(102, 25) + SourceIndex(0) +7 >Emitted(91, 26) Source(102, 26) + SourceIndex(0) +8 >Emitted(91, 27) Source(102, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(92, 2) Source(103, 2) + SourceIndex(0) +--- +>>>for (var _65 = 0, _66 = getRobots(); _65 < _66.length; _65++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA3 = -1, ...robotAInfo] of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(93, 1) Source(104, 1) + SourceIndex(0) +2 >Emitted(93, 4) Source(104, 4) + SourceIndex(0) +3 >Emitted(93, 5) Source(104, 5) + SourceIndex(0) +4 >Emitted(93, 6) Source(104, 40) + SourceIndex(0) +5 >Emitted(93, 17) Source(104, 51) + SourceIndex(0) +6 >Emitted(93, 19) Source(104, 40) + SourceIndex(0) +7 >Emitted(93, 25) Source(104, 40) + SourceIndex(0) +8 >Emitted(93, 34) Source(104, 49) + SourceIndex(0) +9 >Emitted(93, 36) Source(104, 51) + SourceIndex(0) +10>Emitted(93, 38) Source(104, 40) + SourceIndex(0) +11>Emitted(93, 54) Source(104, 51) + SourceIndex(0) +12>Emitted(93, 56) Source(104, 40) + SourceIndex(0) +13>Emitted(93, 61) Source(104, 51) + SourceIndex(0) +14>Emitted(93, 62) Source(104, 52) + SourceIndex(0) +--- +>>> _67 = _66[_65], _68 = _67[0], numberA3 = _68 === void 0 ? -1 : _68, robotAInfo = _67.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA3 = -1, ...robotAInfo] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(94, 5) Source(104, 6) + SourceIndex(0) +2 >Emitted(94, 19) Source(104, 36) + SourceIndex(0) +3 >Emitted(94, 21) Source(104, 7) + SourceIndex(0) +4 >Emitted(94, 33) Source(104, 20) + SourceIndex(0) +5 >Emitted(94, 35) Source(104, 7) + SourceIndex(0) +6 >Emitted(94, 71) Source(104, 20) + SourceIndex(0) +7 >Emitted(94, 73) Source(104, 22) + SourceIndex(0) +8 >Emitted(94, 98) Source(104, 35) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(95, 5) Source(105, 5) + SourceIndex(0) +2 >Emitted(95, 12) Source(105, 12) + SourceIndex(0) +3 >Emitted(95, 13) Source(105, 13) + SourceIndex(0) +4 >Emitted(95, 16) Source(105, 16) + SourceIndex(0) +5 >Emitted(95, 17) Source(105, 17) + SourceIndex(0) +6 >Emitted(95, 25) Source(105, 25) + SourceIndex(0) +7 >Emitted(95, 26) Source(105, 26) + SourceIndex(0) +8 >Emitted(95, 27) Source(105, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(96, 2) Source(106, 2) + SourceIndex(0) +--- +>>>for (var _69 = 0, _70 = [robotA, robotB]; _69 < _70.length; _69++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^ +16> ^ +17> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ([numberA3 = -1, ...robotAInfo] of +5 > [robotA, robotB] +6 > +7 > [ +8 > robotA +9 > , +10> robotB +11> ] +12> +13> [robotA, robotB] +14> +15> [robotA, robotB] +16> ) +1->Emitted(97, 1) Source(107, 1) + SourceIndex(0) +2 >Emitted(97, 4) Source(107, 4) + SourceIndex(0) +3 >Emitted(97, 5) Source(107, 5) + SourceIndex(0) +4 >Emitted(97, 6) Source(107, 40) + SourceIndex(0) +5 >Emitted(97, 17) Source(107, 56) + SourceIndex(0) +6 >Emitted(97, 19) Source(107, 40) + SourceIndex(0) +7 >Emitted(97, 26) Source(107, 41) + SourceIndex(0) +8 >Emitted(97, 32) Source(107, 47) + SourceIndex(0) +9 >Emitted(97, 34) Source(107, 49) + SourceIndex(0) +10>Emitted(97, 40) Source(107, 55) + SourceIndex(0) +11>Emitted(97, 41) Source(107, 56) + SourceIndex(0) +12>Emitted(97, 43) Source(107, 40) + SourceIndex(0) +13>Emitted(97, 59) Source(107, 56) + SourceIndex(0) +14>Emitted(97, 61) Source(107, 40) + SourceIndex(0) +15>Emitted(97, 66) Source(107, 56) + SourceIndex(0) +16>Emitted(97, 67) Source(107, 57) + SourceIndex(0) +--- +>>> _71 = _70[_69], _72 = _71[0], numberA3 = _72 === void 0 ? -1 : _72, robotAInfo = _71.slice(1); +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > [numberA3 = -1, ...robotAInfo] +3 > +4 > numberA3 = -1 +5 > +6 > numberA3 = -1 +7 > , +8 > ...robotAInfo +1->Emitted(98, 5) Source(107, 6) + SourceIndex(0) +2 >Emitted(98, 19) Source(107, 36) + SourceIndex(0) +3 >Emitted(98, 21) Source(107, 7) + SourceIndex(0) +4 >Emitted(98, 33) Source(107, 20) + SourceIndex(0) +5 >Emitted(98, 35) Source(107, 7) + SourceIndex(0) +6 >Emitted(98, 71) Source(107, 20) + SourceIndex(0) +7 >Emitted(98, 73) Source(107, 22) + SourceIndex(0) +8 >Emitted(98, 98) Source(107, 35) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 >] of [robotA, robotB]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(99, 5) Source(108, 5) + SourceIndex(0) +2 >Emitted(99, 12) Source(108, 12) + SourceIndex(0) +3 >Emitted(99, 13) Source(108, 13) + SourceIndex(0) +4 >Emitted(99, 16) Source(108, 16) + SourceIndex(0) +5 >Emitted(99, 17) Source(108, 17) + SourceIndex(0) +6 >Emitted(99, 25) Source(108, 25) + SourceIndex(0) +7 >Emitted(99, 26) Source(108, 26) + SourceIndex(0) +8 >Emitted(99, 27) Source(108, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(100, 2) Source(109, 2) + SourceIndex(0) +--- +>>>var _a, _b, _e, _f, _j, _k, _m, _o, _p, _q, _r, _u, _v, _w, _x, _y, _1, _2, _3, _4, _5, _7, _10, _13, _15, _18, _21, _23, _24, _25, _26, _29, _30, _31, _32, _35, _36, _37, _38, _40, _41, _42, _43, _44, _45, _48, _49, _50, _51, _52, _53, _56, _57, _58, _59, _60, _61, _63, _64, _67, _68, _71, _72; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.symbols new file mode 100644 index 00000000000..6b16ace03ea --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.symbols @@ -0,0 +1,345 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 2, 1)) + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 7, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 2, 1)) + +let robots = [robotA, robotB]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 7, 3)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 30)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 13, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 14, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 3, 38)) + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 3)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 14, 3)) + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 45)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 3)) +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +let numberB: number, nameB: string; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 37)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 21)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 54)) + +for ([, nameA = "noName"] of robots) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +} +for ([, nameA = "noName"] of getRobots()) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 30)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +} +for ([, nameA = "noName"] of [robotA, robotB]) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 7, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 3)) +} +for ([, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +] = ["skill1", "skill2"]] of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) +} +for ([, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 45)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) +} +for ([, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 14, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) +} + +for ([numberB = -1] of robots) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +} +for ([numberB = -1] of getRobots()) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 30)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +} +for ([numberB = -1] of [robotA, robotB]) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 7, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 3)) +} +for ([nameB = "noName"] of multiRobots) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) +} +for ([nameB = "noName"] of getMultiRobots()) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 45)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) +} +for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 14, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 21, 20)) +} + +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 37)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 37)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 30)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 37)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 7, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 21)) +} +for ([nameMA = "noName", [ +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +] = ["skill1", "skill2"]] of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) +} +for ([nameMA = "noName", [ +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 15, 45)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) +} +for ([nameMA = "noName", [ +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) + + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 20, 41)) + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 13, 3)) +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 14, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 22, 54)) +} + +for ([numberA3 = -1, ...robotAInfo] of robots) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 21)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +} +for ([numberA3 = -1, ...robotAInfo] of getRobots()) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 21)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 8, 30)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +} +for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 21)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 6, 3)) +>robotB : Symbol(robotB, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 7, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts, 23, 3)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types new file mode 100644 index 00000000000..14189ad9d81 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.types @@ -0,0 +1,544 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +let robotB: Robot = [2, "trimmer", "trimming"]; +>robotB : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string + +let robots = [robotA, robotB]; +>robots : [number, string, string][] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + +function getRobots() { +>getRobots : () => [number, string, string][] + + return robots; +>robots : [number, string, string][] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +let multiRobots = [multiRobotA, multiRobotB]; +>multiRobots : [string, [string, string]][] +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + +function getMultiRobots() { +>getMultiRobots : () => [string, [string, string]][] + + return multiRobots; +>multiRobots : [string, [string, string]][] +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : string +>primarySkillA : string +>secondarySkillA : string + +let numberB: number, nameB: string; +>numberB : number +>nameB : string + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : number +>nameA2 : string +>skillA2 : string +>nameMA : string + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : number +>robotAInfo : (number | string)[] +>multiRobotAInfo : (string | [string, string])[] + +for ([, nameA = "noName"] of robots) { +>[, nameA = "noName"] : string[] +> : undefined +>nameA = "noName" : string +>nameA : string +>"noName" : string +>robots : [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA = "noName"] of getRobots()) { +>[, nameA = "noName"] : string[] +> : undefined +>nameA = "noName" : string +>nameA : string +>"noName" : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA = "noName"] of [robotA, robotB]) { +>[, nameA = "noName"] : string[] +> : undefined +>nameA = "noName" : string +>nameA : string +>"noName" : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, [ +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, string][] +> : undefined +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of multiRobots) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>multiRobots : [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [ +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, string][] +> : undefined +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [ +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : [string, string][] +> : undefined +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for ([numberB = -1] of robots) { +>[numberB = -1] : number[] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>robots : [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB = -1] of getRobots()) { +>[numberB = -1] : number[] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB = -1] of [robotA, robotB]) { +>[numberB = -1] : number[] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([nameB = "noName"] of multiRobots) { +>[nameB = "noName"] : string[] +>nameB = "noName" : string +>nameB : string +>"noName" : string +>multiRobots : [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB = "noName"] of getMultiRobots()) { +>[nameB = "noName"] : string[] +>nameB = "noName" : string +>nameB : string +>"noName" : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { +>[nameB = "noName"] : string[] +>nameB = "noName" : string +>nameB : string +>"noName" : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { +>[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : (number | string)[] +>numberA2 = -1 : number +>numberA2 : number +>-1 : number +>1 : number +>nameA2 = "noName" : string +>nameA2 : string +>"noName" : string +>skillA2 = "skill" : string +>skillA2 : string +>"skill" : string +>robots : [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { +>[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : (number | string)[] +>numberA2 = -1 : number +>numberA2 : number +>-1 : number +>1 : number +>nameA2 = "noName" : string +>nameA2 : string +>"noName" : string +>skillA2 = "skill" : string +>skillA2 : string +>"skill" : string +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { +>[numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] : (number | string)[] +>numberA2 = -1 : number +>numberA2 : number +>-1 : number +>1 : number +>nameA2 = "noName" : string +>nameA2 : string +>"noName" : string +>skillA2 = "skill" : string +>skillA2 : string +>"skill" : string +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([nameMA = "noName", [ +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : (string | [string, string])[] +>nameMA = "noName" : string +>nameMA : string +>"noName" : string +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of multiRobots) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>multiRobots : [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA = "noName", [ +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : (string | [string, string])[] +>nameMA = "noName" : string +>nameMA : string +>"noName" : string +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of getMultiRobots()) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>getMultiRobots() : [string, [string, string]][] +>getMultiRobots : () => [string, [string, string]][] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA = "noName", [ +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"]] : (string | [string, string])[] +>nameMA = "noName" : string +>nameMA : string +>"noName" : string +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["skill1", "skill2"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +>["skill1", "skill2"] : [string, string] +>"skill1" : string +>"skill2" : string +>[multiRobotA, multiRobotB] : [string, [string, string]][] +>multiRobotA : [string, [string, string]] +>multiRobotB : [string, [string, string]] + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for ([numberA3 = -1, ...robotAInfo] of robots) { +>[numberA3 = -1, ...robotAInfo] : (number | string)[] +>numberA3 = -1 : number +>numberA3 : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>robots : [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3 = -1, ...robotAInfo] of getRobots()) { +>[numberA3 = -1, ...robotAInfo] : (number | string)[] +>numberA3 = -1 : number +>numberA3 : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>getRobots() : [number, string, string][] +>getRobots : () => [number, string, string][] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { +>[numberA3 = -1, ...robotAInfo] : (number | string)[] +>numberA3 = -1 : number +>numberA3 : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>[robotA, robotB] : [number, string, string][] +>robotA : [number, string, string] +>robotB : [number, string, string] + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js new file mode 100644 index 00000000000..08cf3cf5466 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js @@ -0,0 +1,152 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +for (let {name: nameA = "noName" } of robots) { + console.log(nameA); +} +for (let {name: nameA = "noName" } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} + +//// [sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js] +var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +function getRobots() { + return robots; +} +function getMultiRobots() { + return multiRobots; +} +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + var _a = robots_1[_i].name, nameA = _a === void 0 ? "noName" : _a; + console.log(nameA); +} +for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { + var _d = _c[_b].name, nameA = _d === void 0 ? "noName" : _d; + console.log(nameA); +} +for (var _e = 0, _f = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _e < _f.length; _e++) { + var _g = _f[_e].name, nameA = _g === void 0 ? "noName" : _g; + console.log(nameA); +} +for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { + var _j = multiRobots_1[_h].skills, _k = _j === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _j, _l = _k.primary, primaryA = _l === void 0 ? "primary" : _l, _m = _k.secondary, secondaryA = _m === void 0 ? "secondary" : _m; + console.log(primaryA); +} +for (var _o = 0, _p = getMultiRobots(); _o < _p.length; _o++) { + var _q = _p[_o].skills, _r = _q === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _q, _s = _r.primary, primaryA = _s === void 0 ? "primary" : _s, _t = _r.secondary, secondaryA = _t === void 0 ? "secondary" : _t; + console.log(primaryA); +} +for (var _u = 0, _v = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _u < _v.length; _u++) { + var _w = _v[_u].skills, _x = _w === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _w, _y = _x.primary, primaryA = _y === void 0 ? "primary" : _y, _z = _x.secondary, secondaryA = _z === void 0 ? "secondary" : _z; + console.log(primaryA); +} +for (var _0 = 0, robots_2 = robots; _0 < robots_2.length; _0++) { + var _1 = robots_2[_0], _2 = _1.name, nameA = _2 === void 0 ? "noName" : _2, _3 = _1.skill, skillA = _3 === void 0 ? "noSkill" : _3; + console.log(nameA); +} +for (var _4 = 0, _5 = getRobots(); _4 < _5.length; _4++) { + var _6 = _5[_4], _7 = _6.name, nameA = _7 === void 0 ? "noName" : _7, _8 = _6.skill, skillA = _8 === void 0 ? "noSkill" : _8; + console.log(nameA); +} +for (var _9 = 0, _10 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _9 < _10.length; _9++) { + var _11 = _10[_9], _12 = _11.name, nameA = _12 === void 0 ? "noName" : _12, _13 = _11.skill, skillA = _13 === void 0 ? "noSkill" : _13; + console.log(nameA); +} +for (var _14 = 0, multiRobots_2 = multiRobots; _14 < multiRobots_2.length; _14++) { + var _15 = multiRobots_2[_14], _16 = _15.name, nameA = _16 === void 0 ? "noName" : _16, _17 = _15.skills, _18 = _17 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _17, _19 = _18.primary, primaryA = _19 === void 0 ? "primary" : _19, _20 = _18.secondary, secondaryA = _20 === void 0 ? "secondary" : _20; + console.log(nameA); +} +for (var _21 = 0, _22 = getMultiRobots(); _21 < _22.length; _21++) { + var _23 = _22[_21], _24 = _23.name, nameA = _24 === void 0 ? "noName" : _24, _25 = _23.skills, _26 = _25 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _25, _27 = _26.primary, primaryA = _27 === void 0 ? "primary" : _27, _28 = _26.secondary, secondaryA = _28 === void 0 ? "secondary" : _28; + console.log(nameA); +} +for (var _29 = 0, _30 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _29 < _30.length; _29++) { + var _31 = _30[_29], _32 = _31.name, nameA = _32 === void 0 ? "noName" : _32, _33 = _31.skills, _34 = _33 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _33, _35 = _34.primary, primaryA = _35 === void 0 ? "primary" : _35, _36 = _34.secondary, secondaryA = _36 === void 0 ? "secondary" : _36; + console.log(nameA); +} +//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..89313ae9027 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts"],"names":[],"mappings":"AAgBA,IAAI,MAAM,GAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AACnG,IAAI,WAAW,GAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAChG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAE/E;IACI,MAAM,CAAC,MAAM,CAAC;AAClB,CAAC;AAED;IACI,MAAM,CAAC,WAAW,CAAC;AACvB,CAAC;AAED,GAAG,CAAC,CAAkC,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAnC,0BAAsB,EAAtB,qCAAsB;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAkC,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAAxC,oBAAsB,EAAtB,qCAAsB;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAAkC,UAA4E,EAA5E,MAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAA5E,cAA4E,EAA5E,IAA4E,CAAC;IAAzG,oBAAsB,EAAtB,qCAAsB;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CACkD,UAAW,EAAX,2BAAW,EAAX,yBAAW,EAAX,IAAW,CAAC;IADvD,iCACqC,EADrC,sEACqC,EAD3B,eAA6B,EAA7B,yCAA6B,EAAE,iBAAmC,EAAnC,6CAAmC;IAEnF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CACkD,UAAgB,EAAhB,KAAA,cAAc,EAAE,EAAhB,cAAgB,EAAhB,IAAgB,CAAC;IAD5D,sBACqC,EADrC,sEACqC,EAD3B,eAA6B,EAA7B,yCAA6B,EAAE,iBAAmC,EAAnC,6CAAmC;IAEnF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AACD,GAAG,CAAC,CAEA,UAC0E,EAD1E,KAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAClF,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EAD1E,cAC0E,EAD1E,IAC0E,CAAC;IAHpE,sBACqC,EADrC,sEACqC,EAD3B,eAA6B,EAA7B,yCAA6B,EAAE,iBAAmC,EAAnC,6CAAmC;IAInF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;CACzB;AAED,GAAG,CAAC,CAA6D,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,CAAC;IAAnE,qBAAwD,EAAnD,YAAsB,EAAtB,qCAAsB,EAAE,aAAyB,EAAzB,uCAAyB;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAA8D,UAAW,EAAX,KAAA,SAAS,EAAE,EAAX,cAAW,EAAX,IAAW,CAAC;IAAzE,eAAyD,EAApD,YAAsB,EAAtB,qCAAsB,EAAE,aAAyB,EAAzB,uCAAyB;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAA8D,UAA4E,EAA5E,OAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAA5E,eAA4E,EAA5E,IAA4E,CAAC;IAA1I,iBAAyD,EAApD,cAAsB,EAAtB,uCAAsB,EAAE,eAAyB,EAAzB,yCAAyB;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAMC,WAAW,EAAX,2BAAW,EAAX,0BAAW,EAAX,KAAW,CAAC;IANZ,4BAMJ,EALG,cAAsB,EAAtB,uCAAsB,EACtB,gBAGgD,EAHhD,yEAGgD,EAF5C,iBAA6B,EAA7B,2CAA6B,EAC7B,mBAAmC,EAAnC,+CAAmC;IAGvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAMC,WAAgB,EAAhB,MAAA,cAAc,EAAE,EAAhB,gBAAgB,EAAhB,KAAgB,CAAC;IANjB,kBAMJ,EALG,cAAsB,EAAtB,uCAAsB,EACtB,gBAGgD,EAHhD,yEAGgD,EAF5C,iBAA6B,EAA7B,2CAA6B,EAC7B,mBAAmC,EAAnC,+CAAmC;IAGvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB;AACD,GAAG,CAAC,CAMC,WACyE,EADzE,MAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IACnF,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EADzE,gBACyE,EADzE,KACyE,CAAC;IAP1E,kBAMJ,EALG,cAAsB,EAAtB,uCAAsB,EACtB,gBAGgD,EAHhD,yEAGgD,EAF5C,iBAA6B,EAA7B,2CAA6B,EAC7B,mBAAmC,EAAnC,+CAAmC;IAIvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;CACtB"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..e63344455ae --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,2082 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^^ +13> ^^^^^^^^ +14> ^^ +15> ^^ +16> ^^ +17> ^^^^ +18> ^^ +19> ^^^^^^^^^ +20> ^^ +21> ^^^^^ +22> ^^ +23> ^^^^^^^^^^ +24> ^^ +25> ^ +26> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary?: string; + > secondary?: string; + > }; + >} + > + > +2 >let +3 > robots +4 > : Robot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skill +12> : +13> "mowing" +14> } +15> , +16> { +17> name +18> : +19> "trimmer" +20> , +21> skill +22> : +23> "trimming" +24> } +25> ] +26> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(17, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(17, 23) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 24) + SourceIndex(0) +6 >Emitted(1, 17) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 30) + SourceIndex(0) +8 >Emitted(1, 23) Source(17, 32) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 39) + SourceIndex(0) +10>Emitted(1, 32) Source(17, 41) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 46) + SourceIndex(0) +12>Emitted(1, 39) Source(17, 48) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 56) + SourceIndex(0) +14>Emitted(1, 49) Source(17, 58) + SourceIndex(0) +15>Emitted(1, 51) Source(17, 60) + SourceIndex(0) +16>Emitted(1, 53) Source(17, 62) + SourceIndex(0) +17>Emitted(1, 57) Source(17, 66) + SourceIndex(0) +18>Emitted(1, 59) Source(17, 68) + SourceIndex(0) +19>Emitted(1, 68) Source(17, 77) + SourceIndex(0) +20>Emitted(1, 70) Source(17, 79) + SourceIndex(0) +21>Emitted(1, 75) Source(17, 84) + SourceIndex(0) +22>Emitted(1, 77) Source(17, 86) + SourceIndex(0) +23>Emitted(1, 87) Source(17, 96) + SourceIndex(0) +24>Emitted(1, 89) Source(17, 98) + SourceIndex(0) +25>Emitted(1, 90) Source(17, 99) + SourceIndex(0) +26>Emitted(1, 91) Source(17, 100) + SourceIndex(0) +--- +>>>var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^^ +12> ^^ +13> ^^ +14> ^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^^^^^^^^ +19> ^^ +20> ^^^^^^ +21> ^^ +22> ^^ +1 > + > +2 >let +3 > multiRobots +4 > : MultiRobot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skills +12> : +13> { +14> primary +15> : +16> "mowing" +17> , +18> secondary +19> : +20> "none" +21> } +22> } +1 >Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 16) Source(18, 16) + SourceIndex(0) +4 >Emitted(2, 19) Source(18, 33) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 34) + SourceIndex(0) +6 >Emitted(2, 22) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 40) + SourceIndex(0) +8 >Emitted(2, 28) Source(18, 42) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 49) + SourceIndex(0) +10>Emitted(2, 37) Source(18, 51) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 57) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 59) + SourceIndex(0) +13>Emitted(2, 47) Source(18, 61) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 68) + SourceIndex(0) +15>Emitted(2, 56) Source(18, 70) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 78) + SourceIndex(0) +17>Emitted(2, 66) Source(18, 80) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 89) + SourceIndex(0) +19>Emitted(2, 77) Source(18, 91) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 97) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 99) + SourceIndex(0) +22>Emitted(2, 87) Source(18, 101) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +1 >^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^ +1 >, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> ; +1 >Emitted(3, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(3, 7) Source(19, 7) + SourceIndex(0) +3 >Emitted(3, 11) Source(19, 11) + SourceIndex(0) +4 >Emitted(3, 13) Source(19, 13) + SourceIndex(0) +5 >Emitted(3, 22) Source(19, 22) + SourceIndex(0) +6 >Emitted(3, 24) Source(19, 24) + SourceIndex(0) +7 >Emitted(3, 30) Source(19, 30) + SourceIndex(0) +8 >Emitted(3, 32) Source(19, 32) + SourceIndex(0) +9 >Emitted(3, 34) Source(19, 34) + SourceIndex(0) +10>Emitted(3, 41) Source(19, 41) + SourceIndex(0) +11>Emitted(3, 43) Source(19, 43) + SourceIndex(0) +12>Emitted(3, 53) Source(19, 53) + SourceIndex(0) +13>Emitted(3, 55) Source(19, 55) + SourceIndex(0) +14>Emitted(3, 64) Source(19, 64) + SourceIndex(0) +15>Emitted(3, 66) Source(19, 66) + SourceIndex(0) +16>Emitted(3, 74) Source(19, 74) + SourceIndex(0) +17>Emitted(3, 76) Source(19, 76) + SourceIndex(0) +18>Emitted(3, 78) Source(19, 78) + SourceIndex(0) +19>Emitted(3, 79) Source(19, 79) + SourceIndex(0) +20>Emitted(3, 80) Source(19, 80) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +1 >Emitted(4, 1) Source(21, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(22, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(22, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(22, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(22, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(23, 2) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(7, 1) Source(25, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(8, 5) Source(26, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(26, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(26, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(26, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(26, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(27, 2) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let {name: nameA = "noName" } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(10, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(10, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(10, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(10, 6) Source(29, 39) + SourceIndex(0) +5 >Emitted(10, 16) Source(29, 45) + SourceIndex(0) +6 >Emitted(10, 18) Source(29, 39) + SourceIndex(0) +7 >Emitted(10, 35) Source(29, 45) + SourceIndex(0) +8 >Emitted(10, 37) Source(29, 39) + SourceIndex(0) +9 >Emitted(10, 57) Source(29, 45) + SourceIndex(0) +10>Emitted(10, 59) Source(29, 39) + SourceIndex(0) +11>Emitted(10, 63) Source(29, 45) + SourceIndex(0) +12>Emitted(10, 64) Source(29, 46) + SourceIndex(0) +--- +>>> var _a = robots_1[_i].name, nameA = _a === void 0 ? "noName" : _a; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameA = "noName" +3 > +4 > name: nameA = "noName" +1->Emitted(11, 5) Source(29, 11) + SourceIndex(0) +2 >Emitted(11, 31) Source(29, 33) + SourceIndex(0) +3 >Emitted(11, 33) Source(29, 11) + SourceIndex(0) +4 >Emitted(11, 70) Source(29, 33) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(12, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(12, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(12, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(12, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(13, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA = "noName" } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(14, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(14, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(14, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(14, 6) Source(32, 39) + SourceIndex(0) +5 >Emitted(14, 16) Source(32, 50) + SourceIndex(0) +6 >Emitted(14, 18) Source(32, 39) + SourceIndex(0) +7 >Emitted(14, 23) Source(32, 39) + SourceIndex(0) +8 >Emitted(14, 32) Source(32, 48) + SourceIndex(0) +9 >Emitted(14, 34) Source(32, 50) + SourceIndex(0) +10>Emitted(14, 36) Source(32, 39) + SourceIndex(0) +11>Emitted(14, 50) Source(32, 50) + SourceIndex(0) +12>Emitted(14, 52) Source(32, 39) + SourceIndex(0) +13>Emitted(14, 56) Source(32, 50) + SourceIndex(0) +14>Emitted(14, 57) Source(32, 51) + SourceIndex(0) +--- +>>> var _d = _c[_b].name, nameA = _d === void 0 ? "noName" : _d; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameA = "noName" +3 > +4 > name: nameA = "noName" +1->Emitted(15, 5) Source(32, 11) + SourceIndex(0) +2 >Emitted(15, 25) Source(32, 33) + SourceIndex(0) +3 >Emitted(15, 27) Source(32, 11) + SourceIndex(0) +4 >Emitted(15, 64) Source(32, 33) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(16, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(16, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(16, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(16, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(17, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _e = 0, _f = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _e < _f.length; _e++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > (let {name: nameA = "noName" } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(18, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(18, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(18, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(18, 6) Source(35, 39) + SourceIndex(0) +5 >Emitted(18, 16) Source(35, 115) + SourceIndex(0) +6 >Emitted(18, 18) Source(35, 39) + SourceIndex(0) +7 >Emitted(18, 24) Source(35, 40) + SourceIndex(0) +8 >Emitted(18, 26) Source(35, 42) + SourceIndex(0) +9 >Emitted(18, 30) Source(35, 46) + SourceIndex(0) +10>Emitted(18, 32) Source(35, 48) + SourceIndex(0) +11>Emitted(18, 39) Source(35, 55) + SourceIndex(0) +12>Emitted(18, 41) Source(35, 57) + SourceIndex(0) +13>Emitted(18, 46) Source(35, 62) + SourceIndex(0) +14>Emitted(18, 48) Source(35, 64) + SourceIndex(0) +15>Emitted(18, 56) Source(35, 72) + SourceIndex(0) +16>Emitted(18, 58) Source(35, 74) + SourceIndex(0) +17>Emitted(18, 60) Source(35, 76) + SourceIndex(0) +18>Emitted(18, 62) Source(35, 78) + SourceIndex(0) +19>Emitted(18, 66) Source(35, 82) + SourceIndex(0) +20>Emitted(18, 68) Source(35, 84) + SourceIndex(0) +21>Emitted(18, 77) Source(35, 93) + SourceIndex(0) +22>Emitted(18, 79) Source(35, 95) + SourceIndex(0) +23>Emitted(18, 84) Source(35, 100) + SourceIndex(0) +24>Emitted(18, 86) Source(35, 102) + SourceIndex(0) +25>Emitted(18, 96) Source(35, 112) + SourceIndex(0) +26>Emitted(18, 98) Source(35, 114) + SourceIndex(0) +27>Emitted(18, 99) Source(35, 115) + SourceIndex(0) +28>Emitted(18, 101) Source(35, 39) + SourceIndex(0) +29>Emitted(18, 115) Source(35, 115) + SourceIndex(0) +30>Emitted(18, 117) Source(35, 39) + SourceIndex(0) +31>Emitted(18, 121) Source(35, 115) + SourceIndex(0) +32>Emitted(18, 122) Source(35, 116) + SourceIndex(0) +--- +>>> var _g = _f[_e].name, nameA = _g === void 0 ? "noName" : _g; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > name: nameA = "noName" +3 > +4 > name: nameA = "noName" +1 >Emitted(19, 5) Source(35, 11) + SourceIndex(0) +2 >Emitted(19, 25) Source(35, 33) + SourceIndex(0) +3 >Emitted(19, 27) Source(35, 11) + SourceIndex(0) +4 >Emitted(19, 64) Source(35, 33) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(20, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(20, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(20, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(20, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(20, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(20, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(20, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(20, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(21, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(22, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(22, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(22, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(22, 6) Source(39, 55) + SourceIndex(0) +5 >Emitted(22, 16) Source(39, 66) + SourceIndex(0) +6 >Emitted(22, 18) Source(39, 55) + SourceIndex(0) +7 >Emitted(22, 45) Source(39, 66) + SourceIndex(0) +8 >Emitted(22, 47) Source(39, 55) + SourceIndex(0) +9 >Emitted(22, 72) Source(39, 66) + SourceIndex(0) +10>Emitted(22, 74) Source(39, 55) + SourceIndex(0) +11>Emitted(22, 78) Source(39, 66) + SourceIndex(0) +12>Emitted(22, 79) Source(39, 67) + SourceIndex(0) +--- +>>> var _j = multiRobots_1[_h].skills, _k = _j === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _j, _l = _k.primary, primaryA = _l === void 0 ? "primary" : _l, _m = _k.secondary, secondaryA = _m === void 0 ? "secondary" : _m; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +3 > +4 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(23, 5) Source(38, 12) + SourceIndex(0) +2 >Emitted(23, 38) Source(39, 49) + SourceIndex(0) +3 >Emitted(23, 40) Source(38, 12) + SourceIndex(0) +4 >Emitted(23, 110) Source(39, 49) + SourceIndex(0) +5 >Emitted(23, 112) Source(38, 22) + SourceIndex(0) +6 >Emitted(23, 127) Source(38, 51) + SourceIndex(0) +7 >Emitted(23, 129) Source(38, 22) + SourceIndex(0) +8 >Emitted(23, 170) Source(38, 51) + SourceIndex(0) +9 >Emitted(23, 172) Source(38, 53) + SourceIndex(0) +10>Emitted(23, 189) Source(38, 88) + SourceIndex(0) +11>Emitted(23, 191) Source(38, 53) + SourceIndex(0) +12>Emitted(23, 236) Source(38, 88) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } = + > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(24, 5) Source(40, 5) + SourceIndex(0) +2 >Emitted(24, 12) Source(40, 12) + SourceIndex(0) +3 >Emitted(24, 13) Source(40, 13) + SourceIndex(0) +4 >Emitted(24, 16) Source(40, 16) + SourceIndex(0) +5 >Emitted(24, 17) Source(40, 17) + SourceIndex(0) +6 >Emitted(24, 25) Source(40, 25) + SourceIndex(0) +7 >Emitted(24, 26) Source(40, 26) + SourceIndex(0) +8 >Emitted(24, 27) Source(40, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(25, 2) Source(41, 2) + SourceIndex(0) +--- +>>>for (var _o = 0, _p = getMultiRobots(); _o < _p.length; _o++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(26, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(26, 4) Source(42, 4) + SourceIndex(0) +3 >Emitted(26, 5) Source(42, 5) + SourceIndex(0) +4 >Emitted(26, 6) Source(43, 55) + SourceIndex(0) +5 >Emitted(26, 16) Source(43, 71) + SourceIndex(0) +6 >Emitted(26, 18) Source(43, 55) + SourceIndex(0) +7 >Emitted(26, 23) Source(43, 55) + SourceIndex(0) +8 >Emitted(26, 37) Source(43, 69) + SourceIndex(0) +9 >Emitted(26, 39) Source(43, 71) + SourceIndex(0) +10>Emitted(26, 41) Source(43, 55) + SourceIndex(0) +11>Emitted(26, 55) Source(43, 71) + SourceIndex(0) +12>Emitted(26, 57) Source(43, 55) + SourceIndex(0) +13>Emitted(26, 61) Source(43, 71) + SourceIndex(0) +14>Emitted(26, 62) Source(43, 72) + SourceIndex(0) +--- +>>> var _q = _p[_o].skills, _r = _q === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _q, _s = _r.primary, primaryA = _s === void 0 ? "primary" : _s, _t = _r.secondary, secondaryA = _t === void 0 ? "secondary" : _t; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +3 > +4 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(27, 5) Source(42, 12) + SourceIndex(0) +2 >Emitted(27, 27) Source(43, 49) + SourceIndex(0) +3 >Emitted(27, 29) Source(42, 12) + SourceIndex(0) +4 >Emitted(27, 99) Source(43, 49) + SourceIndex(0) +5 >Emitted(27, 101) Source(42, 22) + SourceIndex(0) +6 >Emitted(27, 116) Source(42, 51) + SourceIndex(0) +7 >Emitted(27, 118) Source(42, 22) + SourceIndex(0) +8 >Emitted(27, 159) Source(42, 51) + SourceIndex(0) +9 >Emitted(27, 161) Source(42, 53) + SourceIndex(0) +10>Emitted(27, 178) Source(42, 88) + SourceIndex(0) +11>Emitted(27, 180) Source(42, 53) + SourceIndex(0) +12>Emitted(27, 225) Source(42, 88) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } = + > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(28, 5) Source(44, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(44, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(44, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(44, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(44, 17) + SourceIndex(0) +6 >Emitted(28, 25) Source(44, 25) + SourceIndex(0) +7 >Emitted(28, 26) Source(44, 26) + SourceIndex(0) +8 >Emitted(28, 27) Source(44, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(29, 2) Source(45, 2) + SourceIndex(0) +--- +>>>for (var _u = 0, _v = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^ +9 > ^^ +10> ^^^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^ +15> ^^ +16> ^^ +17> ^^^^^^^ +18> ^^ +19> ^^^^^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^^ +24> ^^ +25> ^^ +26> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of + > +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > +8 > [ +9 > { +10> name +11> : +12> "mower" +13> , +14> skills +15> : +16> { +17> primary +18> : +19> "mowing" +20> , +21> secondary +22> : +23> "none" +24> } +25> } +1->Emitted(30, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(46, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(46, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(48, 5) + SourceIndex(0) +5 >Emitted(30, 16) Source(49, 79) + SourceIndex(0) +6 >Emitted(30, 18) Source(48, 5) + SourceIndex(0) +7 >Emitted(30, 23) Source(48, 19) + SourceIndex(0) +8 >Emitted(30, 24) Source(48, 20) + SourceIndex(0) +9 >Emitted(30, 26) Source(48, 22) + SourceIndex(0) +10>Emitted(30, 30) Source(48, 26) + SourceIndex(0) +11>Emitted(30, 32) Source(48, 28) + SourceIndex(0) +12>Emitted(30, 39) Source(48, 35) + SourceIndex(0) +13>Emitted(30, 41) Source(48, 37) + SourceIndex(0) +14>Emitted(30, 47) Source(48, 43) + SourceIndex(0) +15>Emitted(30, 49) Source(48, 45) + SourceIndex(0) +16>Emitted(30, 51) Source(48, 47) + SourceIndex(0) +17>Emitted(30, 58) Source(48, 54) + SourceIndex(0) +18>Emitted(30, 60) Source(48, 56) + SourceIndex(0) +19>Emitted(30, 68) Source(48, 64) + SourceIndex(0) +20>Emitted(30, 70) Source(48, 66) + SourceIndex(0) +21>Emitted(30, 79) Source(48, 75) + SourceIndex(0) +22>Emitted(30, 81) Source(48, 77) + SourceIndex(0) +23>Emitted(30, 87) Source(48, 83) + SourceIndex(0) +24>Emitted(30, 89) Source(48, 85) + SourceIndex(0) +25>Emitted(30, 91) Source(48, 87) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _u < _v.length; _u++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^ +24> ^ +25> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(31, 5) Source(49, 5) + SourceIndex(0) +2 >Emitted(31, 7) Source(49, 7) + SourceIndex(0) +3 >Emitted(31, 11) Source(49, 11) + SourceIndex(0) +4 >Emitted(31, 13) Source(49, 13) + SourceIndex(0) +5 >Emitted(31, 22) Source(49, 22) + SourceIndex(0) +6 >Emitted(31, 24) Source(49, 24) + SourceIndex(0) +7 >Emitted(31, 30) Source(49, 30) + SourceIndex(0) +8 >Emitted(31, 32) Source(49, 32) + SourceIndex(0) +9 >Emitted(31, 34) Source(49, 34) + SourceIndex(0) +10>Emitted(31, 41) Source(49, 41) + SourceIndex(0) +11>Emitted(31, 43) Source(49, 43) + SourceIndex(0) +12>Emitted(31, 53) Source(49, 53) + SourceIndex(0) +13>Emitted(31, 55) Source(49, 55) + SourceIndex(0) +14>Emitted(31, 64) Source(49, 64) + SourceIndex(0) +15>Emitted(31, 66) Source(49, 66) + SourceIndex(0) +16>Emitted(31, 74) Source(49, 74) + SourceIndex(0) +17>Emitted(31, 76) Source(49, 76) + SourceIndex(0) +18>Emitted(31, 78) Source(49, 78) + SourceIndex(0) +19>Emitted(31, 79) Source(49, 79) + SourceIndex(0) +20>Emitted(31, 81) Source(48, 5) + SourceIndex(0) +21>Emitted(31, 95) Source(49, 79) + SourceIndex(0) +22>Emitted(31, 97) Source(48, 5) + SourceIndex(0) +23>Emitted(31, 101) Source(49, 79) + SourceIndex(0) +24>Emitted(31, 102) Source(49, 80) + SourceIndex(0) +--- +>>> var _w = _v[_u].skills, _x = _w === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _w, _y = _x.primary, primaryA = _y === void 0 ? "primary" : _y, _z = _x.secondary, secondaryA = _z === void 0 ? "secondary" : _z; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +3 > +4 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(32, 5) Source(46, 12) + SourceIndex(0) +2 >Emitted(32, 27) Source(47, 49) + SourceIndex(0) +3 >Emitted(32, 29) Source(46, 12) + SourceIndex(0) +4 >Emitted(32, 99) Source(47, 49) + SourceIndex(0) +5 >Emitted(32, 101) Source(46, 22) + SourceIndex(0) +6 >Emitted(32, 116) Source(46, 51) + SourceIndex(0) +7 >Emitted(32, 118) Source(46, 22) + SourceIndex(0) +8 >Emitted(32, 159) Source(46, 51) + SourceIndex(0) +9 >Emitted(32, 161) Source(46, 53) + SourceIndex(0) +10>Emitted(32, 178) Source(46, 88) + SourceIndex(0) +11>Emitted(32, 180) Source(46, 53) + SourceIndex(0) +12>Emitted(32, 225) Source(46, 88) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } = + > { primary: "nosKill", secondary: "noSkill" } } of + > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(33, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(33, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(33, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(33, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(33, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(33, 25) Source(50, 25) + SourceIndex(0) +7 >Emitted(33, 26) Source(50, 26) + SourceIndex(0) +8 >Emitted(33, 27) Source(50, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(34, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for (var _0 = 0, robots_2 = robots; _0 < robots_2.length; _0++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > (let {name: nameA = "noName", skill: skillA = "noSkill" } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(35, 1) Source(53, 1) + SourceIndex(0) +2 >Emitted(35, 4) Source(53, 4) + SourceIndex(0) +3 >Emitted(35, 5) Source(53, 5) + SourceIndex(0) +4 >Emitted(35, 6) Source(53, 66) + SourceIndex(0) +5 >Emitted(35, 16) Source(53, 72) + SourceIndex(0) +6 >Emitted(35, 18) Source(53, 66) + SourceIndex(0) +7 >Emitted(35, 35) Source(53, 72) + SourceIndex(0) +8 >Emitted(35, 37) Source(53, 66) + SourceIndex(0) +9 >Emitted(35, 57) Source(53, 72) + SourceIndex(0) +10>Emitted(35, 59) Source(53, 66) + SourceIndex(0) +11>Emitted(35, 63) Source(53, 72) + SourceIndex(0) +12>Emitted(35, 64) Source(53, 73) + SourceIndex(0) +--- +>>> var _1 = robots_2[_0], _2 = _1.name, nameA = _2 === void 0 ? "noName" : _2, _3 = _1.skill, skillA = _3 === void 0 ? "noSkill" : _3; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let {name: nameA = "noName", skill: skillA = "noSkill" } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , +8 > skill: skillA = "noSkill" +9 > +10> skill: skillA = "noSkill" +1->Emitted(36, 5) Source(53, 6) + SourceIndex(0) +2 >Emitted(36, 26) Source(53, 62) + SourceIndex(0) +3 >Emitted(36, 28) Source(53, 11) + SourceIndex(0) +4 >Emitted(36, 40) Source(53, 33) + SourceIndex(0) +5 >Emitted(36, 42) Source(53, 11) + SourceIndex(0) +6 >Emitted(36, 79) Source(53, 33) + SourceIndex(0) +7 >Emitted(36, 81) Source(53, 35) + SourceIndex(0) +8 >Emitted(36, 94) Source(53, 60) + SourceIndex(0) +9 >Emitted(36, 96) Source(53, 35) + SourceIndex(0) +10>Emitted(36, 135) Source(53, 60) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(37, 5) Source(54, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(54, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(54, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(54, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(54, 17) + SourceIndex(0) +6 >Emitted(37, 22) Source(54, 22) + SourceIndex(0) +7 >Emitted(37, 23) Source(54, 23) + SourceIndex(0) +8 >Emitted(37, 24) Source(54, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(38, 2) Source(55, 2) + SourceIndex(0) +--- +>>>for (var _4 = 0, _5 = getRobots(); _4 < _5.length; _4++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA = "noName", skill: skillA = "noSkill" } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(39, 1) Source(56, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(56, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(56, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(56, 67) + SourceIndex(0) +5 >Emitted(39, 16) Source(56, 78) + SourceIndex(0) +6 >Emitted(39, 18) Source(56, 67) + SourceIndex(0) +7 >Emitted(39, 23) Source(56, 67) + SourceIndex(0) +8 >Emitted(39, 32) Source(56, 76) + SourceIndex(0) +9 >Emitted(39, 34) Source(56, 78) + SourceIndex(0) +10>Emitted(39, 36) Source(56, 67) + SourceIndex(0) +11>Emitted(39, 50) Source(56, 78) + SourceIndex(0) +12>Emitted(39, 52) Source(56, 67) + SourceIndex(0) +13>Emitted(39, 56) Source(56, 78) + SourceIndex(0) +14>Emitted(39, 57) Source(56, 79) + SourceIndex(0) +--- +>>> var _6 = _5[_4], _7 = _6.name, nameA = _7 === void 0 ? "noName" : _7, _8 = _6.skill, skillA = _8 === void 0 ? "noSkill" : _8; +1->^^^^ +2 > ^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let {name: nameA = "noName", skill: skillA = "noSkill" } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , +8 > skill: skillA = "noSkill" +9 > +10> skill: skillA = "noSkill" +1->Emitted(40, 5) Source(56, 6) + SourceIndex(0) +2 >Emitted(40, 20) Source(56, 63) + SourceIndex(0) +3 >Emitted(40, 22) Source(56, 11) + SourceIndex(0) +4 >Emitted(40, 34) Source(56, 33) + SourceIndex(0) +5 >Emitted(40, 36) Source(56, 11) + SourceIndex(0) +6 >Emitted(40, 73) Source(56, 33) + SourceIndex(0) +7 >Emitted(40, 75) Source(56, 35) + SourceIndex(0) +8 >Emitted(40, 88) Source(56, 60) + SourceIndex(0) +9 >Emitted(40, 90) Source(56, 35) + SourceIndex(0) +10>Emitted(40, 129) Source(56, 60) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(41, 5) Source(57, 5) + SourceIndex(0) +2 >Emitted(41, 12) Source(57, 12) + SourceIndex(0) +3 >Emitted(41, 13) Source(57, 13) + SourceIndex(0) +4 >Emitted(41, 16) Source(57, 16) + SourceIndex(0) +5 >Emitted(41, 17) Source(57, 17) + SourceIndex(0) +6 >Emitted(41, 22) Source(57, 22) + SourceIndex(0) +7 >Emitted(41, 23) Source(57, 23) + SourceIndex(0) +8 >Emitted(41, 24) Source(57, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(42, 2) Source(58, 2) + SourceIndex(0) +--- +>>>for (var _9 = 0, _10 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _9 < _10.length; _9++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +33> ^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let {name: nameA = "noName", skill: skillA = "noSkill" } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(43, 1) Source(59, 1) + SourceIndex(0) +2 >Emitted(43, 4) Source(59, 4) + SourceIndex(0) +3 >Emitted(43, 5) Source(59, 5) + SourceIndex(0) +4 >Emitted(43, 6) Source(59, 67) + SourceIndex(0) +5 >Emitted(43, 16) Source(59, 143) + SourceIndex(0) +6 >Emitted(43, 18) Source(59, 67) + SourceIndex(0) +7 >Emitted(43, 25) Source(59, 68) + SourceIndex(0) +8 >Emitted(43, 27) Source(59, 70) + SourceIndex(0) +9 >Emitted(43, 31) Source(59, 74) + SourceIndex(0) +10>Emitted(43, 33) Source(59, 76) + SourceIndex(0) +11>Emitted(43, 40) Source(59, 83) + SourceIndex(0) +12>Emitted(43, 42) Source(59, 85) + SourceIndex(0) +13>Emitted(43, 47) Source(59, 90) + SourceIndex(0) +14>Emitted(43, 49) Source(59, 92) + SourceIndex(0) +15>Emitted(43, 57) Source(59, 100) + SourceIndex(0) +16>Emitted(43, 59) Source(59, 102) + SourceIndex(0) +17>Emitted(43, 61) Source(59, 104) + SourceIndex(0) +18>Emitted(43, 63) Source(59, 106) + SourceIndex(0) +19>Emitted(43, 67) Source(59, 110) + SourceIndex(0) +20>Emitted(43, 69) Source(59, 112) + SourceIndex(0) +21>Emitted(43, 78) Source(59, 121) + SourceIndex(0) +22>Emitted(43, 80) Source(59, 123) + SourceIndex(0) +23>Emitted(43, 85) Source(59, 128) + SourceIndex(0) +24>Emitted(43, 87) Source(59, 130) + SourceIndex(0) +25>Emitted(43, 97) Source(59, 140) + SourceIndex(0) +26>Emitted(43, 99) Source(59, 142) + SourceIndex(0) +27>Emitted(43, 100) Source(59, 143) + SourceIndex(0) +28>Emitted(43, 102) Source(59, 67) + SourceIndex(0) +29>Emitted(43, 117) Source(59, 143) + SourceIndex(0) +30>Emitted(43, 119) Source(59, 67) + SourceIndex(0) +31>Emitted(43, 123) Source(59, 143) + SourceIndex(0) +32>Emitted(43, 124) Source(59, 144) + SourceIndex(0) +--- +>>> var _11 = _10[_9], _12 = _11.name, nameA = _12 === void 0 ? "noName" : _12, _13 = _11.skill, skillA = _13 === void 0 ? "noSkill" : _13; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let {name: nameA = "noName", skill: skillA = "noSkill" } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , +8 > skill: skillA = "noSkill" +9 > +10> skill: skillA = "noSkill" +1->Emitted(44, 5) Source(59, 6) + SourceIndex(0) +2 >Emitted(44, 22) Source(59, 63) + SourceIndex(0) +3 >Emitted(44, 24) Source(59, 11) + SourceIndex(0) +4 >Emitted(44, 38) Source(59, 33) + SourceIndex(0) +5 >Emitted(44, 40) Source(59, 11) + SourceIndex(0) +6 >Emitted(44, 79) Source(59, 33) + SourceIndex(0) +7 >Emitted(44, 81) Source(59, 35) + SourceIndex(0) +8 >Emitted(44, 96) Source(59, 60) + SourceIndex(0) +9 >Emitted(44, 98) Source(59, 35) + SourceIndex(0) +10>Emitted(44, 139) Source(59, 60) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(45, 5) Source(60, 5) + SourceIndex(0) +2 >Emitted(45, 12) Source(60, 12) + SourceIndex(0) +3 >Emitted(45, 13) Source(60, 13) + SourceIndex(0) +4 >Emitted(45, 16) Source(60, 16) + SourceIndex(0) +5 >Emitted(45, 17) Source(60, 17) + SourceIndex(0) +6 >Emitted(45, 22) Source(60, 22) + SourceIndex(0) +7 >Emitted(45, 23) Source(60, 23) + SourceIndex(0) +8 >Emitted(45, 24) Source(60, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(46, 2) Source(61, 2) + SourceIndex(0) +--- +>>>for (var _14 = 0, multiRobots_2 = multiRobots; _14 < multiRobots_2.length; _14++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(47, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(47, 4) Source(62, 4) + SourceIndex(0) +3 >Emitted(47, 5) Source(62, 5) + SourceIndex(0) +4 >Emitted(47, 6) Source(68, 6) + SourceIndex(0) +5 >Emitted(47, 17) Source(68, 17) + SourceIndex(0) +6 >Emitted(47, 19) Source(68, 6) + SourceIndex(0) +7 >Emitted(47, 46) Source(68, 17) + SourceIndex(0) +8 >Emitted(47, 48) Source(68, 6) + SourceIndex(0) +9 >Emitted(47, 74) Source(68, 17) + SourceIndex(0) +10>Emitted(47, 76) Source(68, 6) + SourceIndex(0) +11>Emitted(47, 81) Source(68, 17) + SourceIndex(0) +12>Emitted(47, 82) Source(68, 18) + SourceIndex(0) +--- +>>> var _15 = multiRobots_2[_14], _16 = _15.name, nameA = _16 === void 0 ? "noName" : _16, _17 = _15.skills, _18 = _17 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _17, _19 = _18.primary, primaryA = _19 === void 0 ? "primary" : _19, _20 = _18.secondary, secondaryA = _20 === void 0 ? "secondary" : _20; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , + > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +1->Emitted(48, 5) Source(62, 6) + SourceIndex(0) +2 >Emitted(48, 33) Source(68, 2) + SourceIndex(0) +3 >Emitted(48, 35) Source(63, 5) + SourceIndex(0) +4 >Emitted(48, 49) Source(63, 27) + SourceIndex(0) +5 >Emitted(48, 51) Source(63, 5) + SourceIndex(0) +6 >Emitted(48, 90) Source(63, 27) + SourceIndex(0) +7 >Emitted(48, 92) Source(64, 5) + SourceIndex(0) +8 >Emitted(48, 108) Source(67, 53) + SourceIndex(0) +9 >Emitted(48, 110) Source(64, 5) + SourceIndex(0) +10>Emitted(48, 183) Source(67, 53) + SourceIndex(0) +11>Emitted(48, 185) Source(65, 9) + SourceIndex(0) +12>Emitted(48, 202) Source(65, 38) + SourceIndex(0) +13>Emitted(48, 204) Source(65, 9) + SourceIndex(0) +14>Emitted(48, 247) Source(65, 38) + SourceIndex(0) +15>Emitted(48, 249) Source(66, 9) + SourceIndex(0) +16>Emitted(48, 268) Source(66, 44) + SourceIndex(0) +17>Emitted(48, 270) Source(66, 9) + SourceIndex(0) +18>Emitted(48, 317) Source(66, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(49, 5) Source(69, 5) + SourceIndex(0) +2 >Emitted(49, 12) Source(69, 12) + SourceIndex(0) +3 >Emitted(49, 13) Source(69, 13) + SourceIndex(0) +4 >Emitted(49, 16) Source(69, 16) + SourceIndex(0) +5 >Emitted(49, 17) Source(69, 17) + SourceIndex(0) +6 >Emitted(49, 22) Source(69, 22) + SourceIndex(0) +7 >Emitted(49, 23) Source(69, 23) + SourceIndex(0) +8 >Emitted(49, 24) Source(69, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(50, 2) Source(70, 2) + SourceIndex(0) +--- +>>>for (var _21 = 0, _22 = getMultiRobots(); _21 < _22.length; _21++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(51, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(51, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(51, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(51, 6) Source(77, 6) + SourceIndex(0) +5 >Emitted(51, 17) Source(77, 22) + SourceIndex(0) +6 >Emitted(51, 19) Source(77, 6) + SourceIndex(0) +7 >Emitted(51, 25) Source(77, 6) + SourceIndex(0) +8 >Emitted(51, 39) Source(77, 20) + SourceIndex(0) +9 >Emitted(51, 41) Source(77, 22) + SourceIndex(0) +10>Emitted(51, 43) Source(77, 6) + SourceIndex(0) +11>Emitted(51, 59) Source(77, 22) + SourceIndex(0) +12>Emitted(51, 61) Source(77, 6) + SourceIndex(0) +13>Emitted(51, 66) Source(77, 22) + SourceIndex(0) +14>Emitted(51, 67) Source(77, 23) + SourceIndex(0) +--- +>>> var _23 = _22[_21], _24 = _23.name, nameA = _24 === void 0 ? "noName" : _24, _25 = _23.skills, _26 = _25 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _25, _27 = _26.primary, primaryA = _27 === void 0 ? "primary" : _27, _28 = _26.secondary, secondaryA = _28 === void 0 ? "secondary" : _28; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , + > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +1->Emitted(52, 5) Source(71, 6) + SourceIndex(0) +2 >Emitted(52, 23) Source(77, 2) + SourceIndex(0) +3 >Emitted(52, 25) Source(72, 5) + SourceIndex(0) +4 >Emitted(52, 39) Source(72, 27) + SourceIndex(0) +5 >Emitted(52, 41) Source(72, 5) + SourceIndex(0) +6 >Emitted(52, 80) Source(72, 27) + SourceIndex(0) +7 >Emitted(52, 82) Source(73, 5) + SourceIndex(0) +8 >Emitted(52, 98) Source(76, 53) + SourceIndex(0) +9 >Emitted(52, 100) Source(73, 5) + SourceIndex(0) +10>Emitted(52, 173) Source(76, 53) + SourceIndex(0) +11>Emitted(52, 175) Source(74, 9) + SourceIndex(0) +12>Emitted(52, 192) Source(74, 38) + SourceIndex(0) +13>Emitted(52, 194) Source(74, 9) + SourceIndex(0) +14>Emitted(52, 237) Source(74, 38) + SourceIndex(0) +15>Emitted(52, 239) Source(75, 9) + SourceIndex(0) +16>Emitted(52, 258) Source(75, 44) + SourceIndex(0) +17>Emitted(52, 260) Source(75, 9) + SourceIndex(0) +18>Emitted(52, 307) Source(75, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(53, 5) Source(78, 5) + SourceIndex(0) +2 >Emitted(53, 12) Source(78, 12) + SourceIndex(0) +3 >Emitted(53, 13) Source(78, 13) + SourceIndex(0) +4 >Emitted(53, 16) Source(78, 16) + SourceIndex(0) +5 >Emitted(53, 17) Source(78, 17) + SourceIndex(0) +6 >Emitted(53, 22) Source(78, 22) + SourceIndex(0) +7 >Emitted(53, 23) Source(78, 23) + SourceIndex(0) +8 >Emitted(53, 24) Source(78, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(54, 2) Source(79, 2) + SourceIndex(0) +--- +>>>for (var _29 = 0, _30 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^ +9 > ^^ +10> ^^^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^ +15> ^^ +16> ^^ +17> ^^^^^^^ +18> ^^ +19> ^^^^^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^^ +24> ^^ +25> ^^ +26> ^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > +8 > [ +9 > { +10> name +11> : +12> "mower" +13> , +14> skills +15> : +16> { +17> primary +18> : +19> "mowing" +20> , +21> secondary +22> : +23> "none" +24> } +25> } +1->Emitted(55, 1) Source(80, 1) + SourceIndex(0) +2 >Emitted(55, 4) Source(80, 4) + SourceIndex(0) +3 >Emitted(55, 5) Source(80, 5) + SourceIndex(0) +4 >Emitted(55, 6) Source(86, 6) + SourceIndex(0) +5 >Emitted(55, 17) Source(87, 79) + SourceIndex(0) +6 >Emitted(55, 19) Source(86, 6) + SourceIndex(0) +7 >Emitted(55, 25) Source(86, 20) + SourceIndex(0) +8 >Emitted(55, 26) Source(86, 21) + SourceIndex(0) +9 >Emitted(55, 28) Source(86, 23) + SourceIndex(0) +10>Emitted(55, 32) Source(86, 27) + SourceIndex(0) +11>Emitted(55, 34) Source(86, 29) + SourceIndex(0) +12>Emitted(55, 41) Source(86, 36) + SourceIndex(0) +13>Emitted(55, 43) Source(86, 38) + SourceIndex(0) +14>Emitted(55, 49) Source(86, 44) + SourceIndex(0) +15>Emitted(55, 51) Source(86, 46) + SourceIndex(0) +16>Emitted(55, 53) Source(86, 48) + SourceIndex(0) +17>Emitted(55, 60) Source(86, 55) + SourceIndex(0) +18>Emitted(55, 62) Source(86, 57) + SourceIndex(0) +19>Emitted(55, 70) Source(86, 65) + SourceIndex(0) +20>Emitted(55, 72) Source(86, 67) + SourceIndex(0) +21>Emitted(55, 81) Source(86, 76) + SourceIndex(0) +22>Emitted(55, 83) Source(86, 78) + SourceIndex(0) +23>Emitted(55, 89) Source(86, 84) + SourceIndex(0) +24>Emitted(55, 91) Source(86, 86) + SourceIndex(0) +25>Emitted(55, 93) Source(86, 88) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _29 < _30.length; _29++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^ +25> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(56, 5) Source(87, 5) + SourceIndex(0) +2 >Emitted(56, 7) Source(87, 7) + SourceIndex(0) +3 >Emitted(56, 11) Source(87, 11) + SourceIndex(0) +4 >Emitted(56, 13) Source(87, 13) + SourceIndex(0) +5 >Emitted(56, 22) Source(87, 22) + SourceIndex(0) +6 >Emitted(56, 24) Source(87, 24) + SourceIndex(0) +7 >Emitted(56, 30) Source(87, 30) + SourceIndex(0) +8 >Emitted(56, 32) Source(87, 32) + SourceIndex(0) +9 >Emitted(56, 34) Source(87, 34) + SourceIndex(0) +10>Emitted(56, 41) Source(87, 41) + SourceIndex(0) +11>Emitted(56, 43) Source(87, 43) + SourceIndex(0) +12>Emitted(56, 53) Source(87, 53) + SourceIndex(0) +13>Emitted(56, 55) Source(87, 55) + SourceIndex(0) +14>Emitted(56, 64) Source(87, 64) + SourceIndex(0) +15>Emitted(56, 66) Source(87, 66) + SourceIndex(0) +16>Emitted(56, 74) Source(87, 74) + SourceIndex(0) +17>Emitted(56, 76) Source(87, 76) + SourceIndex(0) +18>Emitted(56, 78) Source(87, 78) + SourceIndex(0) +19>Emitted(56, 79) Source(87, 79) + SourceIndex(0) +20>Emitted(56, 81) Source(86, 6) + SourceIndex(0) +21>Emitted(56, 97) Source(87, 79) + SourceIndex(0) +22>Emitted(56, 99) Source(86, 6) + SourceIndex(0) +23>Emitted(56, 104) Source(87, 79) + SourceIndex(0) +24>Emitted(56, 105) Source(87, 80) + SourceIndex(0) +--- +>>> var _31 = _30[_29], _32 = _31.name, nameA = _32 === void 0 ? "noName" : _32, _33 = _31.skills, _34 = _33 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _33, _35 = _34.primary, primaryA = _35 === void 0 ? "primary" : _35, _36 = _34.secondary, secondaryA = _36 === void 0 ? "secondary" : _36; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , + > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +1->Emitted(57, 5) Source(80, 6) + SourceIndex(0) +2 >Emitted(57, 23) Source(86, 2) + SourceIndex(0) +3 >Emitted(57, 25) Source(81, 5) + SourceIndex(0) +4 >Emitted(57, 39) Source(81, 27) + SourceIndex(0) +5 >Emitted(57, 41) Source(81, 5) + SourceIndex(0) +6 >Emitted(57, 80) Source(81, 27) + SourceIndex(0) +7 >Emitted(57, 82) Source(82, 5) + SourceIndex(0) +8 >Emitted(57, 98) Source(85, 53) + SourceIndex(0) +9 >Emitted(57, 100) Source(82, 5) + SourceIndex(0) +10>Emitted(57, 173) Source(85, 53) + SourceIndex(0) +11>Emitted(57, 175) Source(83, 9) + SourceIndex(0) +12>Emitted(57, 192) Source(83, 38) + SourceIndex(0) +13>Emitted(57, 194) Source(83, 9) + SourceIndex(0) +14>Emitted(57, 237) Source(83, 38) + SourceIndex(0) +15>Emitted(57, 239) Source(84, 9) + SourceIndex(0) +16>Emitted(57, 258) Source(84, 44) + SourceIndex(0) +17>Emitted(57, 260) Source(84, 9) + SourceIndex(0) +18>Emitted(57, 307) Source(84, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(58, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(58, 12) Source(88, 12) + SourceIndex(0) +3 >Emitted(58, 13) Source(88, 13) + SourceIndex(0) +4 >Emitted(58, 16) Source(88, 16) + SourceIndex(0) +5 >Emitted(58, 17) Source(88, 17) + SourceIndex(0) +6 >Emitted(58, 22) Source(88, 22) + SourceIndex(0) +7 >Emitted(58, 23) Source(88, 23) + SourceIndex(0) +8 >Emitted(58, 24) Source(88, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(59, 2) Source(89, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..f73adeb7761 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.symbols @@ -0,0 +1,314 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary?: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) + + secondary?: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 24)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 39)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 60)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 77)) + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 34)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 49)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 59)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 78)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 53)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 79)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 3)) +} + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 22, 1)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 3)) +} + +for (let {name: nameA = "noName" } of robots) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 28, 10)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 28, 10)) +} +for (let {name: nameA = "noName" } of getRobots()) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 31, 10)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 31, 10)) +} +for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 40)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 10)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 40)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 55)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 76)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 93)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 34, 10)) +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 37, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 37, 51)) + + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 38, 5)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 38, 25)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 37, 20)) +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 41, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 41, 51)) + + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 42, 5)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 42, 25)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 22, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 41, 20)) +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 45, 20)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 45, 51)) + + { primary: "nosKill", secondary: "noSkill" } } of +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 46, 5)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 46, 25)) + + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 47, 20)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 47, 35)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 47, 45)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 47, 64)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 48, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 48, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 48, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 48, 53)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 45, 20)) +} + +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 52, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 52, 33)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 52, 10)) +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 55, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 55, 33)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 55, 10)) +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 68)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 10)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 83)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 33)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 68)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 83)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 104)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 121)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 58, 10)) +} +for (let { + name: nameA = "noName", +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 61, 10)) + + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 63, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 64, 38)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 66, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 66, 29)) + +} of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 17, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 61, 10)) +} +for (let { + name: nameA = "noName", +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 70, 10)) + + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 72, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 73, 38)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 75, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 75, 29)) + +} of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 22, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 70, 10)) +} +for (let { + name: nameA = "noName", +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 79, 10)) + + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 81, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 82, 38)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 84, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 84, 29)) + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 85, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 85, 36)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 85, 46)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 85, 65)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 86, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 86, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 86, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 86, 53)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts, 79, 10)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.types new file mode 100644 index 00000000000..36f67f946f0 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.types @@ -0,0 +1,428 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } + + primary?: string; +>primary : string + + secondary?: string; +>secondary : string + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Robot[] +>Robot : Robot +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + +function getRobots() { +>getRobots : () => Robot[] + + return robots; +>robots : Robot[] +} + +function getMultiRobots() { +>getMultiRobots : () => MultiRobot[] + + return multiRobots; +>multiRobots : MultiRobot[] +} + +for (let {name: nameA = "noName" } of robots) { +>name : any +>nameA : string +>"noName" : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName" } of getRobots()) { +>name : any +>nameA : string +>"noName" : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : any +>nameA : string +>"noName" : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : any +>primary : any +>primaryA : string +>"primary" : string +>secondary : any +>secondaryA : string +>"secondary" : string + + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { +>{ primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"nosKill" : string +>secondary : string +>"noSkill" : string +>multiRobots : MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : any +>primary : any +>primaryA : string +>"primary" : string +>secondary : any +>secondaryA : string +>"secondary" : string + + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { +>{ primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"nosKill" : string +>secondary : string +>"noSkill" : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : any +>primary : any +>primaryA : string +>"primary" : string +>secondary : any +>secondaryA : string +>"secondary" : string + + { primary: "nosKill", secondary: "noSkill" } } of +>{ primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"nosKill" : string +>secondary : string +>"noSkill" : string + + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { +>name : any +>nameA : string +>"noName" : string +>skill : any +>skillA : string +>"noSkill" : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { +>name : any +>nameA : string +>"noName" : string +>skill : any +>skillA : string +>"noSkill" : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : any +>nameA : string +>"noName" : string +>skill : any +>skillA : string +>"noSkill" : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { + name: nameA = "noName", +>name : any +>nameA : string +>"noName" : string + + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of multiRobots) { +>multiRobots : MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { + name: nameA = "noName", +>name : any +>nameA : string +>"noName" : string + + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of getMultiRobots()) { +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { + name: nameA = "noName", +>name : any +>nameA : string +>"noName" : string + + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js new file mode 100644 index 00000000000..1e18159d3d4 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js @@ -0,0 +1,282 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({name: nameA = "noName" } of robots) { + console.log(nameA); +} +for ({name: nameA = "noName" } of getRobots()) { + console.log(nameA); +} +for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + +for ({ name = "noName" } of robots) { + console.log(nameA); +} +for ({ name = "noName" } of getRobots()) { + console.log(nameA); +} +for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + + +for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} + +for ({ name = "noName", skill = "noSkill" } of robots) { + console.log(nameA); +} +for ({ name = "noName", skill = "noSkill" } of getRobots()) { + console.log(nameA); +} +for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} + +//// [sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js] +var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +function getRobots() { + return robots; +} +function getMultiRobots() { + return multiRobots; +} +var nameA, primaryA, secondaryA, i, skillA; +var name, primary, secondary, skill; +for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { + _a = robots_1[_i].name, nameA = _a === void 0 ? "noName" : _a; + console.log(nameA); +} +for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { + _d = _c[_b].name, nameA = _d === void 0 ? "noName" : _d; + console.log(nameA); +} +for (var _e = 0, _f = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _e < _f.length; _e++) { + _g = _f[_e].name, nameA = _g === void 0 ? "noName" : _g; + console.log(nameA); +} +for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { + _j = multiRobots_1[_h].skills, _k = _j === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _j, _l = _k.primary, primaryA = _l === void 0 ? "primary" : _l, _m = _k.secondary, secondaryA = _m === void 0 ? "secondary" : _m; + console.log(primaryA); +} +for (var _o = 0, _p = getMultiRobots(); _o < _p.length; _o++) { + _q = _p[_o].skills, _r = _q === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _q, _s = _r.primary, primaryA = _s === void 0 ? "primary" : _s, _t = _r.secondary, secondaryA = _t === void 0 ? "secondary" : _t; + console.log(primaryA); +} +for (var _u = 0, _v = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _u < _v.length; _u++) { + _w = _v[_u].skills, _x = _w === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _w, _y = _x.primary, primaryA = _y === void 0 ? "primary" : _y, _z = _x.secondary, secondaryA = _z === void 0 ? "secondary" : _z; + console.log(primaryA); +} +for (var _0 = 0, robots_2 = robots; _0 < robots_2.length; _0++) { + _1 = robots_2[_0].name, name = _1 === void 0 ? "noName" : _1; + console.log(nameA); +} +for (var _2 = 0, _3 = getRobots(); _2 < _3.length; _2++) { + _4 = _3[_2].name, name = _4 === void 0 ? "noName" : _4; + console.log(nameA); +} +for (var _5 = 0, _6 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _5 < _6.length; _5++) { + _7 = _6[_5].name, name = _7 === void 0 ? "noName" : _7; + console.log(nameA); +} +for (var _8 = 0, multiRobots_2 = multiRobots; _8 < multiRobots_2.length; _8++) { + _9 = multiRobots_2[_8].skills, _10 = _9 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _9, _11 = _10.primary, primary = _11 === void 0 ? "primary" : _11, _12 = _10.secondary, secondary = _12 === void 0 ? "secondary" : _12; + console.log(primaryA); +} +for (var _13 = 0, _14 = getMultiRobots(); _13 < _14.length; _13++) { + _15 = _14[_13].skills, _16 = _15 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _15, _17 = _16.primary, primary = _17 === void 0 ? "primary" : _17, _18 = _16.secondary, secondary = _18 === void 0 ? "secondary" : _18; + console.log(primaryA); +} +for (var _19 = 0, _20 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _19 < _20.length; _19++) { + _21 = _20[_19].skills, _22 = _21 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _21, _23 = _22.primary, primary = _23 === void 0 ? "primary" : _23, _24 = _22.secondary, secondary = _24 === void 0 ? "secondary" : _24; + console.log(primaryA); +} +for (var _25 = 0, robots_3 = robots; _25 < robots_3.length; _25++) { + _26 = robots_3[_25], _27 = _26.name, nameA = _27 === void 0 ? "noName" : _27, _28 = _26.skill, skillA = _28 === void 0 ? "noSkill" : _28; + console.log(nameA); +} +for (var _29 = 0, _30 = getRobots(); _29 < _30.length; _29++) { + _31 = _30[_29], _32 = _31.name, nameA = _32 === void 0 ? "noName" : _32, _33 = _31.skill, skillA = _33 === void 0 ? "noSkill" : _33; + console.log(nameA); +} +for (var _34 = 0, _35 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _34 < _35.length; _34++) { + _36 = _35[_34], _37 = _36.name, nameA = _37 === void 0 ? "noName" : _37, _38 = _36.skill, skillA = _38 === void 0 ? "noSkill" : _38; + console.log(nameA); +} +for (var _39 = 0, multiRobots_3 = multiRobots; _39 < multiRobots_3.length; _39++) { + _40 = multiRobots_3[_39], _41 = _40.name, nameA = _41 === void 0 ? "noName" : _41, _42 = _40.skills, _43 = _42 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _42, _44 = _43.primary, primaryA = _44 === void 0 ? "primary" : _44, _45 = _43.secondary, secondaryA = _45 === void 0 ? "secondary" : _45; + console.log(nameA); +} +for (var _46 = 0, _47 = getMultiRobots(); _46 < _47.length; _46++) { + _48 = _47[_46], _49 = _48.name, nameA = _49 === void 0 ? "noName" : _49, _50 = _48.skills, _51 = _50 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _50, _52 = _51.primary, primaryA = _52 === void 0 ? "primary" : _52, _53 = _51.secondary, secondaryA = _53 === void 0 ? "secondary" : _53; + console.log(nameA); +} +for (var _54 = 0, _55 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _54 < _55.length; _54++) { + _56 = _55[_54], _57 = _56.name, nameA = _57 === void 0 ? "noName" : _57, _58 = _56.skills, _59 = _58 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _58, _60 = _59.primary, primaryA = _60 === void 0 ? "primary" : _60, _61 = _59.secondary, secondaryA = _61 === void 0 ? "secondary" : _61; + console.log(nameA); +} +for (var _62 = 0, robots_4 = robots; _62 < robots_4.length; _62++) { + _63 = robots_4[_62], _64 = _63.name, name = _64 === void 0 ? "noName" : _64, _65 = _63.skill, skill = _65 === void 0 ? "noSkill" : _65; + console.log(nameA); +} +for (var _66 = 0, _67 = getRobots(); _66 < _67.length; _66++) { + _68 = _67[_66], _69 = _68.name, name = _69 === void 0 ? "noName" : _69, _70 = _68.skill, skill = _70 === void 0 ? "noSkill" : _70; + console.log(nameA); +} +for (var _71 = 0, _72 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _71 < _72.length; _71++) { + _73 = _72[_71], _74 = _73.name, name = _74 === void 0 ? "noName" : _74, _75 = _73.skill, skill = _75 === void 0 ? "noSkill" : _75; + console.log(nameA); +} +for (var _76 = 0, multiRobots_4 = multiRobots; _76 < multiRobots_4.length; _76++) { + _77 = multiRobots_4[_76], _78 = _77.name, name = _78 === void 0 ? "noName" : _78, _79 = _77.skills, _80 = _79 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _79, _81 = _80.primary, primary = _81 === void 0 ? "primary" : _81, _82 = _80.secondary, secondary = _82 === void 0 ? "secondary" : _82; + console.log(nameA); +} +for (var _83 = 0, _84 = getMultiRobots(); _83 < _84.length; _83++) { + _85 = _84[_83], _86 = _85.name, name = _86 === void 0 ? "noName" : _86, _87 = _85.skills, _88 = _87 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _87, _89 = _88.primary, primary = _89 === void 0 ? "primary" : _89, _90 = _88.secondary, secondary = _90 === void 0 ? "secondary" : _90; + console.log(nameA); +} +for (var _91 = 0, _92 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _91 < _92.length; _91++) { + _93 = _92[_91], _94 = _93.name, name = _94 === void 0 ? "noName" : _94, _95 = _93.skills, _96 = _95 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _95, _97 = _96.primary, primary = _97 === void 0 ? "primary" : _97, _98 = _96.secondary, secondary = _98 === void 0 ? "secondary" : _98; + console.log(nameA); +} +var _a, _d, _g, _j, _k, _l, _m, _q, _r, _s, _t, _w, _x, _y, _z, _1, _4, _7, _9, _10, _11, _12, _15, _16, _17, _18, _21, _22, _23, _24, _26, _27, _28, _31, _32, _33, _36, _37, _38, _40, _41, _42, _43, _44, _45, _48, _49, _50, _51, _52, _53, _56, _57, _58, _59, _60, _61, _63, _64, _65, _68, _69, _70, _73, _74, _75, _77, _78, _79, _80, _81, _82, _85, _86, _87, _88, _89, _90, _93, _94, _95, _96, _97, _98; +//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map new file mode 100644 index 00000000000..0529919c803 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.sourcemap.txt new file mode 100644 index 00000000000..f80a065e9ce --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.sourcemap.txt @@ -0,0 +1,3951 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js +mapUrl: sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js +sourceFile:sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts +------------------------------------------------------------------- +>>>var robots = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^^ +13> ^^^^^^^^ +14> ^^ +15> ^^ +16> ^^ +17> ^^^^ +18> ^^ +19> ^^^^^^^^^ +20> ^^ +21> ^^^^^ +22> ^^ +23> ^^^^^^^^^^ +24> ^^ +25> ^ +26> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary: string; + > secondary: string; + > }; + >} + > + > +2 >let +3 > robots +4 > : Robot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skill +12> : +13> "mowing" +14> } +15> , +16> { +17> name +18> : +19> "trimmer" +20> , +21> skill +22> : +23> "trimming" +24> } +25> ] +26> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(17, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(17, 23) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 24) + SourceIndex(0) +6 >Emitted(1, 17) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 30) + SourceIndex(0) +8 >Emitted(1, 23) Source(17, 32) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 39) + SourceIndex(0) +10>Emitted(1, 32) Source(17, 41) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 46) + SourceIndex(0) +12>Emitted(1, 39) Source(17, 48) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 56) + SourceIndex(0) +14>Emitted(1, 49) Source(17, 58) + SourceIndex(0) +15>Emitted(1, 51) Source(17, 60) + SourceIndex(0) +16>Emitted(1, 53) Source(17, 62) + SourceIndex(0) +17>Emitted(1, 57) Source(17, 66) + SourceIndex(0) +18>Emitted(1, 59) Source(17, 68) + SourceIndex(0) +19>Emitted(1, 68) Source(17, 77) + SourceIndex(0) +20>Emitted(1, 70) Source(17, 79) + SourceIndex(0) +21>Emitted(1, 75) Source(17, 84) + SourceIndex(0) +22>Emitted(1, 77) Source(17, 86) + SourceIndex(0) +23>Emitted(1, 87) Source(17, 96) + SourceIndex(0) +24>Emitted(1, 89) Source(17, 98) + SourceIndex(0) +25>Emitted(1, 90) Source(17, 99) + SourceIndex(0) +26>Emitted(1, 91) Source(17, 100) + SourceIndex(0) +--- +>>>var multiRobots = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1 > +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^ +7 > ^^^^ +8 > ^^ +9 > ^^^^^^^ +10> ^^ +11> ^^^^^^ +12> ^^ +13> ^^ +14> ^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^^^^^^^^ +19> ^^ +20> ^^^^^^ +21> ^^ +22> ^^ +1 > + > +2 >let +3 > multiRobots +4 > : MultiRobot[] = +5 > [ +6 > { +7 > name +8 > : +9 > "mower" +10> , +11> skills +12> : +13> { +14> primary +15> : +16> "mowing" +17> , +18> secondary +19> : +20> "none" +21> } +22> } +1 >Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 16) Source(18, 16) + SourceIndex(0) +4 >Emitted(2, 19) Source(18, 33) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 34) + SourceIndex(0) +6 >Emitted(2, 22) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 40) + SourceIndex(0) +8 >Emitted(2, 28) Source(18, 42) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 49) + SourceIndex(0) +10>Emitted(2, 37) Source(18, 51) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 57) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 59) + SourceIndex(0) +13>Emitted(2, 47) Source(18, 61) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 68) + SourceIndex(0) +15>Emitted(2, 56) Source(18, 70) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 78) + SourceIndex(0) +17>Emitted(2, 66) Source(18, 80) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 89) + SourceIndex(0) +19>Emitted(2, 77) Source(18, 91) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 97) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 99) + SourceIndex(0) +22>Emitted(2, 87) Source(18, 101) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +1 >^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^ +1 >, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> ; +1 >Emitted(3, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(3, 7) Source(19, 7) + SourceIndex(0) +3 >Emitted(3, 11) Source(19, 11) + SourceIndex(0) +4 >Emitted(3, 13) Source(19, 13) + SourceIndex(0) +5 >Emitted(3, 22) Source(19, 22) + SourceIndex(0) +6 >Emitted(3, 24) Source(19, 24) + SourceIndex(0) +7 >Emitted(3, 30) Source(19, 30) + SourceIndex(0) +8 >Emitted(3, 32) Source(19, 32) + SourceIndex(0) +9 >Emitted(3, 34) Source(19, 34) + SourceIndex(0) +10>Emitted(3, 41) Source(19, 41) + SourceIndex(0) +11>Emitted(3, 43) Source(19, 43) + SourceIndex(0) +12>Emitted(3, 53) Source(19, 53) + SourceIndex(0) +13>Emitted(3, 55) Source(19, 55) + SourceIndex(0) +14>Emitted(3, 64) Source(19, 64) + SourceIndex(0) +15>Emitted(3, 66) Source(19, 66) + SourceIndex(0) +16>Emitted(3, 74) Source(19, 74) + SourceIndex(0) +17>Emitted(3, 76) Source(19, 76) + SourceIndex(0) +18>Emitted(3, 78) Source(19, 78) + SourceIndex(0) +19>Emitted(3, 79) Source(19, 79) + SourceIndex(0) +20>Emitted(3, 80) Source(19, 80) + SourceIndex(0) +--- +>>>function getRobots() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > + > +1 >Emitted(4, 1) Source(21, 1) + SourceIndex(0) +--- +>>> return robots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobots() { + > +2 > return +3 > +4 > robots +5 > ; +1->Emitted(5, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(5, 11) Source(22, 11) + SourceIndex(0) +3 >Emitted(5, 12) Source(22, 12) + SourceIndex(0) +4 >Emitted(5, 18) Source(22, 18) + SourceIndex(0) +5 >Emitted(5, 19) Source(22, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(6, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(6, 2) Source(23, 2) + SourceIndex(0) +--- +>>>function getMultiRobots() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +1->Emitted(7, 1) Source(25, 1) + SourceIndex(0) +--- +>>> return multiRobots; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobots() { + > +2 > return +3 > +4 > multiRobots +5 > ; +1->Emitted(8, 5) Source(26, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(26, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(26, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(26, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(26, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(27, 2) + SourceIndex(0) +--- +>>>var nameA, primaryA, secondaryA, i, skillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^ +11> ^^^^^^ +12> ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primaryA: string +6 > , +7 > secondaryA: string +8 > , +9 > i: number +10> , +11> skillA: string +12> ; +1->Emitted(10, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(29, 5) + SourceIndex(0) +3 >Emitted(10, 10) Source(29, 18) + SourceIndex(0) +4 >Emitted(10, 12) Source(29, 20) + SourceIndex(0) +5 >Emitted(10, 20) Source(29, 36) + SourceIndex(0) +6 >Emitted(10, 22) Source(29, 38) + SourceIndex(0) +7 >Emitted(10, 32) Source(29, 56) + SourceIndex(0) +8 >Emitted(10, 34) Source(29, 58) + SourceIndex(0) +9 >Emitted(10, 35) Source(29, 67) + SourceIndex(0) +10>Emitted(10, 37) Source(29, 69) + SourceIndex(0) +11>Emitted(10, 43) Source(29, 83) + SourceIndex(0) +12>Emitted(10, 44) Source(29, 84) + SourceIndex(0) +--- +>>>var name, primary, secondary, skill; +1 > +2 >^^^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > name: string +4 > , +5 > primary: string +6 > , +7 > secondary: string +8 > , +9 > skill: string +10> ; +1 >Emitted(11, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(11, 5) Source(30, 5) + SourceIndex(0) +3 >Emitted(11, 9) Source(30, 17) + SourceIndex(0) +4 >Emitted(11, 11) Source(30, 19) + SourceIndex(0) +5 >Emitted(11, 18) Source(30, 34) + SourceIndex(0) +6 >Emitted(11, 20) Source(30, 36) + SourceIndex(0) +7 >Emitted(11, 29) Source(30, 53) + SourceIndex(0) +8 >Emitted(11, 31) Source(30, 55) + SourceIndex(0) +9 >Emitted(11, 36) Source(30, 68) + SourceIndex(0) +10>Emitted(11, 37) Source(30, 69) + SourceIndex(0) +--- +>>>for (var _i = 0, robots_1 = robots; _i < robots_1.length; _i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^-> +1-> + > + > +2 >for +3 > +4 > ({name: nameA = "noName" } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(12, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(12, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(12, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(12, 6) Source(32, 35) + SourceIndex(0) +5 >Emitted(12, 16) Source(32, 41) + SourceIndex(0) +6 >Emitted(12, 18) Source(32, 35) + SourceIndex(0) +7 >Emitted(12, 35) Source(32, 41) + SourceIndex(0) +8 >Emitted(12, 37) Source(32, 35) + SourceIndex(0) +9 >Emitted(12, 57) Source(32, 41) + SourceIndex(0) +10>Emitted(12, 59) Source(32, 35) + SourceIndex(0) +11>Emitted(12, 63) Source(32, 41) + SourceIndex(0) +12>Emitted(12, 64) Source(32, 42) + SourceIndex(0) +--- +>>> _a = robots_1[_i].name, nameA = _a === void 0 ? "noName" : _a; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameA = "noName" +3 > +4 > name: nameA = "noName" +1->Emitted(13, 5) Source(32, 7) + SourceIndex(0) +2 >Emitted(13, 27) Source(32, 29) + SourceIndex(0) +3 >Emitted(13, 29) Source(32, 7) + SourceIndex(0) +4 >Emitted(13, 66) Source(32, 29) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(14, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(14, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(14, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(14, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(14, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(14, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(14, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(14, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(15, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _b = 0, _c = getRobots(); _b < _c.length; _b++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^-> +1-> + > +2 >for +3 > +4 > ({name: nameA = "noName" } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(16, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(16, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(16, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(16, 6) Source(35, 35) + SourceIndex(0) +5 >Emitted(16, 16) Source(35, 46) + SourceIndex(0) +6 >Emitted(16, 18) Source(35, 35) + SourceIndex(0) +7 >Emitted(16, 23) Source(35, 35) + SourceIndex(0) +8 >Emitted(16, 32) Source(35, 44) + SourceIndex(0) +9 >Emitted(16, 34) Source(35, 46) + SourceIndex(0) +10>Emitted(16, 36) Source(35, 35) + SourceIndex(0) +11>Emitted(16, 50) Source(35, 46) + SourceIndex(0) +12>Emitted(16, 52) Source(35, 35) + SourceIndex(0) +13>Emitted(16, 56) Source(35, 46) + SourceIndex(0) +14>Emitted(16, 57) Source(35, 47) + SourceIndex(0) +--- +>>> _d = _c[_b].name, nameA = _d === void 0 ? "noName" : _d; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name: nameA = "noName" +3 > +4 > name: nameA = "noName" +1->Emitted(17, 5) Source(35, 7) + SourceIndex(0) +2 >Emitted(17, 21) Source(35, 29) + SourceIndex(0) +3 >Emitted(17, 23) Source(35, 7) + SourceIndex(0) +4 >Emitted(17, 60) Source(35, 29) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(18, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(18, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(18, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(18, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(18, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(18, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(18, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(18, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(19, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for (var _e = 0, _f = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _e < _f.length; _e++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > ({name: nameA = "noName" } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(20, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(20, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(20, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(20, 6) Source(38, 35) + SourceIndex(0) +5 >Emitted(20, 16) Source(38, 111) + SourceIndex(0) +6 >Emitted(20, 18) Source(38, 35) + SourceIndex(0) +7 >Emitted(20, 24) Source(38, 36) + SourceIndex(0) +8 >Emitted(20, 26) Source(38, 38) + SourceIndex(0) +9 >Emitted(20, 30) Source(38, 42) + SourceIndex(0) +10>Emitted(20, 32) Source(38, 44) + SourceIndex(0) +11>Emitted(20, 39) Source(38, 51) + SourceIndex(0) +12>Emitted(20, 41) Source(38, 53) + SourceIndex(0) +13>Emitted(20, 46) Source(38, 58) + SourceIndex(0) +14>Emitted(20, 48) Source(38, 60) + SourceIndex(0) +15>Emitted(20, 56) Source(38, 68) + SourceIndex(0) +16>Emitted(20, 58) Source(38, 70) + SourceIndex(0) +17>Emitted(20, 60) Source(38, 72) + SourceIndex(0) +18>Emitted(20, 62) Source(38, 74) + SourceIndex(0) +19>Emitted(20, 66) Source(38, 78) + SourceIndex(0) +20>Emitted(20, 68) Source(38, 80) + SourceIndex(0) +21>Emitted(20, 77) Source(38, 89) + SourceIndex(0) +22>Emitted(20, 79) Source(38, 91) + SourceIndex(0) +23>Emitted(20, 84) Source(38, 96) + SourceIndex(0) +24>Emitted(20, 86) Source(38, 98) + SourceIndex(0) +25>Emitted(20, 96) Source(38, 108) + SourceIndex(0) +26>Emitted(20, 98) Source(38, 110) + SourceIndex(0) +27>Emitted(20, 99) Source(38, 111) + SourceIndex(0) +28>Emitted(20, 101) Source(38, 35) + SourceIndex(0) +29>Emitted(20, 115) Source(38, 111) + SourceIndex(0) +30>Emitted(20, 117) Source(38, 35) + SourceIndex(0) +31>Emitted(20, 121) Source(38, 111) + SourceIndex(0) +32>Emitted(20, 122) Source(38, 112) + SourceIndex(0) +--- +>>> _g = _f[_e].name, nameA = _g === void 0 ? "noName" : _g; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > name: nameA = "noName" +3 > +4 > name: nameA = "noName" +1 >Emitted(21, 5) Source(38, 7) + SourceIndex(0) +2 >Emitted(21, 21) Source(38, 29) + SourceIndex(0) +3 >Emitted(21, 23) Source(38, 7) + SourceIndex(0) +4 >Emitted(21, 60) Source(38, 29) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(22, 5) Source(39, 5) + SourceIndex(0) +2 >Emitted(22, 12) Source(39, 12) + SourceIndex(0) +3 >Emitted(22, 13) Source(39, 13) + SourceIndex(0) +4 >Emitted(22, 16) Source(39, 16) + SourceIndex(0) +5 >Emitted(22, 17) Source(39, 17) + SourceIndex(0) +6 >Emitted(22, 22) Source(39, 22) + SourceIndex(0) +7 >Emitted(22, 23) Source(39, 23) + SourceIndex(0) +8 >Emitted(22, 24) Source(39, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(23, 2) Source(40, 2) + SourceIndex(0) +--- +>>>for (var _h = 0, multiRobots_1 = multiRobots; _h < multiRobots_1.length; _h++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(24, 1) Source(41, 1) + SourceIndex(0) +2 >Emitted(24, 4) Source(41, 4) + SourceIndex(0) +3 >Emitted(24, 5) Source(41, 5) + SourceIndex(0) +4 >Emitted(24, 6) Source(42, 55) + SourceIndex(0) +5 >Emitted(24, 16) Source(42, 66) + SourceIndex(0) +6 >Emitted(24, 18) Source(42, 55) + SourceIndex(0) +7 >Emitted(24, 45) Source(42, 66) + SourceIndex(0) +8 >Emitted(24, 47) Source(42, 55) + SourceIndex(0) +9 >Emitted(24, 72) Source(42, 66) + SourceIndex(0) +10>Emitted(24, 74) Source(42, 55) + SourceIndex(0) +11>Emitted(24, 78) Source(42, 66) + SourceIndex(0) +12>Emitted(24, 79) Source(42, 67) + SourceIndex(0) +--- +>>> _j = multiRobots_1[_h].skills, _k = _j === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _j, _l = _k.primary, primaryA = _l === void 0 ? "primary" : _l, _m = _k.secondary, secondaryA = _m === void 0 ? "secondary" : _m; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +3 > +4 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(25, 5) Source(41, 8) + SourceIndex(0) +2 >Emitted(25, 34) Source(42, 49) + SourceIndex(0) +3 >Emitted(25, 36) Source(41, 8) + SourceIndex(0) +4 >Emitted(25, 106) Source(42, 49) + SourceIndex(0) +5 >Emitted(25, 108) Source(41, 18) + SourceIndex(0) +6 >Emitted(25, 123) Source(41, 47) + SourceIndex(0) +7 >Emitted(25, 125) Source(41, 18) + SourceIndex(0) +8 >Emitted(25, 166) Source(41, 47) + SourceIndex(0) +9 >Emitted(25, 168) Source(41, 49) + SourceIndex(0) +10>Emitted(25, 185) Source(41, 84) + SourceIndex(0) +11>Emitted(25, 187) Source(41, 49) + SourceIndex(0) +12>Emitted(25, 232) Source(41, 84) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } = + > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(26, 5) Source(43, 5) + SourceIndex(0) +2 >Emitted(26, 12) Source(43, 12) + SourceIndex(0) +3 >Emitted(26, 13) Source(43, 13) + SourceIndex(0) +4 >Emitted(26, 16) Source(43, 16) + SourceIndex(0) +5 >Emitted(26, 17) Source(43, 17) + SourceIndex(0) +6 >Emitted(26, 25) Source(43, 25) + SourceIndex(0) +7 >Emitted(26, 26) Source(43, 26) + SourceIndex(0) +8 >Emitted(26, 27) Source(43, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(27, 2) Source(44, 2) + SourceIndex(0) +--- +>>>for (var _o = 0, _p = getMultiRobots(); _o < _p.length; _o++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(28, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(28, 4) Source(45, 4) + SourceIndex(0) +3 >Emitted(28, 5) Source(45, 5) + SourceIndex(0) +4 >Emitted(28, 6) Source(46, 55) + SourceIndex(0) +5 >Emitted(28, 16) Source(46, 71) + SourceIndex(0) +6 >Emitted(28, 18) Source(46, 55) + SourceIndex(0) +7 >Emitted(28, 23) Source(46, 55) + SourceIndex(0) +8 >Emitted(28, 37) Source(46, 69) + SourceIndex(0) +9 >Emitted(28, 39) Source(46, 71) + SourceIndex(0) +10>Emitted(28, 41) Source(46, 55) + SourceIndex(0) +11>Emitted(28, 55) Source(46, 71) + SourceIndex(0) +12>Emitted(28, 57) Source(46, 55) + SourceIndex(0) +13>Emitted(28, 61) Source(46, 71) + SourceIndex(0) +14>Emitted(28, 62) Source(46, 72) + SourceIndex(0) +--- +>>> _q = _p[_o].skills, _r = _q === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _q, _s = _r.primary, primaryA = _s === void 0 ? "primary" : _s, _t = _r.secondary, secondaryA = _t === void 0 ? "secondary" : _t; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +3 > +4 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(29, 5) Source(45, 8) + SourceIndex(0) +2 >Emitted(29, 23) Source(46, 49) + SourceIndex(0) +3 >Emitted(29, 25) Source(45, 8) + SourceIndex(0) +4 >Emitted(29, 95) Source(46, 49) + SourceIndex(0) +5 >Emitted(29, 97) Source(45, 18) + SourceIndex(0) +6 >Emitted(29, 112) Source(45, 47) + SourceIndex(0) +7 >Emitted(29, 114) Source(45, 18) + SourceIndex(0) +8 >Emitted(29, 155) Source(45, 47) + SourceIndex(0) +9 >Emitted(29, 157) Source(45, 49) + SourceIndex(0) +10>Emitted(29, 174) Source(45, 84) + SourceIndex(0) +11>Emitted(29, 176) Source(45, 49) + SourceIndex(0) +12>Emitted(29, 221) Source(45, 84) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } = + > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(30, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(30, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(30, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(30, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(30, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(30, 25) Source(47, 25) + SourceIndex(0) +7 >Emitted(30, 26) Source(47, 26) + SourceIndex(0) +8 >Emitted(30, 27) Source(47, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(31, 2) Source(48, 2) + SourceIndex(0) +--- +>>>for (var _u = 0, _v = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^ +9 > ^^ +10> ^^^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^ +15> ^^ +16> ^^ +17> ^^^^^^^ +18> ^^ +19> ^^^^^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^^ +24> ^^ +25> ^^ +26> ^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of + > +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > +8 > [ +9 > { +10> name +11> : +12> "mower" +13> , +14> skills +15> : +16> { +17> primary +18> : +19> "mowing" +20> , +21> secondary +22> : +23> "none" +24> } +25> } +1->Emitted(32, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(32, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(32, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(32, 6) Source(51, 5) + SourceIndex(0) +5 >Emitted(32, 16) Source(52, 83) + SourceIndex(0) +6 >Emitted(32, 18) Source(51, 5) + SourceIndex(0) +7 >Emitted(32, 23) Source(51, 19) + SourceIndex(0) +8 >Emitted(32, 24) Source(51, 20) + SourceIndex(0) +9 >Emitted(32, 26) Source(51, 22) + SourceIndex(0) +10>Emitted(32, 30) Source(51, 26) + SourceIndex(0) +11>Emitted(32, 32) Source(51, 28) + SourceIndex(0) +12>Emitted(32, 39) Source(51, 35) + SourceIndex(0) +13>Emitted(32, 41) Source(51, 37) + SourceIndex(0) +14>Emitted(32, 47) Source(51, 43) + SourceIndex(0) +15>Emitted(32, 49) Source(51, 45) + SourceIndex(0) +16>Emitted(32, 51) Source(51, 47) + SourceIndex(0) +17>Emitted(32, 58) Source(51, 54) + SourceIndex(0) +18>Emitted(32, 60) Source(51, 56) + SourceIndex(0) +19>Emitted(32, 68) Source(51, 64) + SourceIndex(0) +20>Emitted(32, 70) Source(51, 66) + SourceIndex(0) +21>Emitted(32, 79) Source(51, 75) + SourceIndex(0) +22>Emitted(32, 81) Source(51, 77) + SourceIndex(0) +23>Emitted(32, 87) Source(51, 83) + SourceIndex(0) +24>Emitted(32, 89) Source(51, 85) + SourceIndex(0) +25>Emitted(32, 91) Source(51, 87) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _u < _v.length; _u++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^ +24> ^ +25> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(33, 5) Source(52, 9) + SourceIndex(0) +2 >Emitted(33, 7) Source(52, 11) + SourceIndex(0) +3 >Emitted(33, 11) Source(52, 15) + SourceIndex(0) +4 >Emitted(33, 13) Source(52, 17) + SourceIndex(0) +5 >Emitted(33, 22) Source(52, 26) + SourceIndex(0) +6 >Emitted(33, 24) Source(52, 28) + SourceIndex(0) +7 >Emitted(33, 30) Source(52, 34) + SourceIndex(0) +8 >Emitted(33, 32) Source(52, 36) + SourceIndex(0) +9 >Emitted(33, 34) Source(52, 38) + SourceIndex(0) +10>Emitted(33, 41) Source(52, 45) + SourceIndex(0) +11>Emitted(33, 43) Source(52, 47) + SourceIndex(0) +12>Emitted(33, 53) Source(52, 57) + SourceIndex(0) +13>Emitted(33, 55) Source(52, 59) + SourceIndex(0) +14>Emitted(33, 64) Source(52, 68) + SourceIndex(0) +15>Emitted(33, 66) Source(52, 70) + SourceIndex(0) +16>Emitted(33, 74) Source(52, 78) + SourceIndex(0) +17>Emitted(33, 76) Source(52, 80) + SourceIndex(0) +18>Emitted(33, 78) Source(52, 82) + SourceIndex(0) +19>Emitted(33, 79) Source(52, 83) + SourceIndex(0) +20>Emitted(33, 81) Source(51, 5) + SourceIndex(0) +21>Emitted(33, 95) Source(52, 83) + SourceIndex(0) +22>Emitted(33, 97) Source(51, 5) + SourceIndex(0) +23>Emitted(33, 101) Source(52, 83) + SourceIndex(0) +24>Emitted(33, 102) Source(52, 84) + SourceIndex(0) +--- +>>> _w = _v[_u].skills, _x = _w === void 0 ? { primary: "nosKill", secondary: "noSkill" } : _w, _y = _x.primary, primaryA = _y === void 0 ? "primary" : _y, _z = _x.secondary, secondaryA = _z === void 0 ? "secondary" : _z; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +3 > +4 > skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } +5 > +6 > primary: primaryA = "primary" +7 > +8 > primary: primaryA = "primary" +9 > , +10> secondary: secondaryA = "secondary" +11> +12> secondary: secondaryA = "secondary" +1->Emitted(34, 5) Source(49, 8) + SourceIndex(0) +2 >Emitted(34, 23) Source(50, 49) + SourceIndex(0) +3 >Emitted(34, 25) Source(49, 8) + SourceIndex(0) +4 >Emitted(34, 95) Source(50, 49) + SourceIndex(0) +5 >Emitted(34, 97) Source(49, 18) + SourceIndex(0) +6 >Emitted(34, 112) Source(49, 47) + SourceIndex(0) +7 >Emitted(34, 114) Source(49, 18) + SourceIndex(0) +8 >Emitted(34, 155) Source(49, 47) + SourceIndex(0) +9 >Emitted(34, 157) Source(49, 49) + SourceIndex(0) +10>Emitted(34, 174) Source(49, 84) + SourceIndex(0) +11>Emitted(34, 176) Source(49, 49) + SourceIndex(0) +12>Emitted(34, 221) Source(49, 84) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > } = + > { primary: "nosKill", secondary: "noSkill" } } of + > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(35, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(35, 25) Source(53, 25) + SourceIndex(0) +7 >Emitted(35, 26) Source(53, 26) + SourceIndex(0) +8 >Emitted(35, 27) Source(53, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(36, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for (var _0 = 0, robots_2 = robots; _0 < robots_2.length; _0++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^-> +1-> + > + > +2 >for +3 > +4 > ({ name = "noName" } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(37, 1) Source(56, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(56, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(56, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(56, 29) + SourceIndex(0) +5 >Emitted(37, 16) Source(56, 35) + SourceIndex(0) +6 >Emitted(37, 18) Source(56, 29) + SourceIndex(0) +7 >Emitted(37, 35) Source(56, 35) + SourceIndex(0) +8 >Emitted(37, 37) Source(56, 29) + SourceIndex(0) +9 >Emitted(37, 57) Source(56, 35) + SourceIndex(0) +10>Emitted(37, 59) Source(56, 29) + SourceIndex(0) +11>Emitted(37, 63) Source(56, 35) + SourceIndex(0) +12>Emitted(37, 64) Source(56, 36) + SourceIndex(0) +--- +>>> _1 = robots_2[_0].name, name = _1 === void 0 ? "noName" : _1; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name = "noName" +3 > +4 > name = "noName" +1->Emitted(38, 5) Source(56, 8) + SourceIndex(0) +2 >Emitted(38, 27) Source(56, 23) + SourceIndex(0) +3 >Emitted(38, 29) Source(56, 8) + SourceIndex(0) +4 >Emitted(38, 65) Source(56, 23) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(39, 5) Source(57, 5) + SourceIndex(0) +2 >Emitted(39, 12) Source(57, 12) + SourceIndex(0) +3 >Emitted(39, 13) Source(57, 13) + SourceIndex(0) +4 >Emitted(39, 16) Source(57, 16) + SourceIndex(0) +5 >Emitted(39, 17) Source(57, 17) + SourceIndex(0) +6 >Emitted(39, 22) Source(57, 22) + SourceIndex(0) +7 >Emitted(39, 23) Source(57, 23) + SourceIndex(0) +8 >Emitted(39, 24) Source(57, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(40, 2) Source(58, 2) + SourceIndex(0) +--- +>>>for (var _2 = 0, _3 = getRobots(); _2 < _3.length; _2++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^ +14> ^ +15> ^^^^-> +1-> + > +2 >for +3 > +4 > ({ name = "noName" } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(41, 1) Source(59, 1) + SourceIndex(0) +2 >Emitted(41, 4) Source(59, 4) + SourceIndex(0) +3 >Emitted(41, 5) Source(59, 5) + SourceIndex(0) +4 >Emitted(41, 6) Source(59, 29) + SourceIndex(0) +5 >Emitted(41, 16) Source(59, 40) + SourceIndex(0) +6 >Emitted(41, 18) Source(59, 29) + SourceIndex(0) +7 >Emitted(41, 23) Source(59, 29) + SourceIndex(0) +8 >Emitted(41, 32) Source(59, 38) + SourceIndex(0) +9 >Emitted(41, 34) Source(59, 40) + SourceIndex(0) +10>Emitted(41, 36) Source(59, 29) + SourceIndex(0) +11>Emitted(41, 50) Source(59, 40) + SourceIndex(0) +12>Emitted(41, 52) Source(59, 29) + SourceIndex(0) +13>Emitted(41, 56) Source(59, 40) + SourceIndex(0) +14>Emitted(41, 57) Source(59, 41) + SourceIndex(0) +--- +>>> _4 = _3[_2].name, name = _4 === void 0 ? "noName" : _4; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > name = "noName" +3 > +4 > name = "noName" +1->Emitted(42, 5) Source(59, 8) + SourceIndex(0) +2 >Emitted(42, 21) Source(59, 23) + SourceIndex(0) +3 >Emitted(42, 23) Source(59, 8) + SourceIndex(0) +4 >Emitted(42, 59) Source(59, 23) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(43, 5) Source(60, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(60, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(60, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(60, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(60, 17) + SourceIndex(0) +6 >Emitted(43, 22) Source(60, 22) + SourceIndex(0) +7 >Emitted(43, 23) Source(60, 23) + SourceIndex(0) +8 >Emitted(43, 24) Source(60, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(44, 2) Source(61, 2) + SourceIndex(0) +--- +>>>for (var _5 = 0, _6 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _5 < _6.length; _5++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^ +32> ^ +1-> + > +2 >for +3 > +4 > ({ name = "noName" } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(45, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(62, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(62, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(62, 29) + SourceIndex(0) +5 >Emitted(45, 16) Source(62, 105) + SourceIndex(0) +6 >Emitted(45, 18) Source(62, 29) + SourceIndex(0) +7 >Emitted(45, 24) Source(62, 30) + SourceIndex(0) +8 >Emitted(45, 26) Source(62, 32) + SourceIndex(0) +9 >Emitted(45, 30) Source(62, 36) + SourceIndex(0) +10>Emitted(45, 32) Source(62, 38) + SourceIndex(0) +11>Emitted(45, 39) Source(62, 45) + SourceIndex(0) +12>Emitted(45, 41) Source(62, 47) + SourceIndex(0) +13>Emitted(45, 46) Source(62, 52) + SourceIndex(0) +14>Emitted(45, 48) Source(62, 54) + SourceIndex(0) +15>Emitted(45, 56) Source(62, 62) + SourceIndex(0) +16>Emitted(45, 58) Source(62, 64) + SourceIndex(0) +17>Emitted(45, 60) Source(62, 66) + SourceIndex(0) +18>Emitted(45, 62) Source(62, 68) + SourceIndex(0) +19>Emitted(45, 66) Source(62, 72) + SourceIndex(0) +20>Emitted(45, 68) Source(62, 74) + SourceIndex(0) +21>Emitted(45, 77) Source(62, 83) + SourceIndex(0) +22>Emitted(45, 79) Source(62, 85) + SourceIndex(0) +23>Emitted(45, 84) Source(62, 90) + SourceIndex(0) +24>Emitted(45, 86) Source(62, 92) + SourceIndex(0) +25>Emitted(45, 96) Source(62, 102) + SourceIndex(0) +26>Emitted(45, 98) Source(62, 104) + SourceIndex(0) +27>Emitted(45, 99) Source(62, 105) + SourceIndex(0) +28>Emitted(45, 101) Source(62, 29) + SourceIndex(0) +29>Emitted(45, 115) Source(62, 105) + SourceIndex(0) +30>Emitted(45, 117) Source(62, 29) + SourceIndex(0) +31>Emitted(45, 121) Source(62, 105) + SourceIndex(0) +32>Emitted(45, 122) Source(62, 106) + SourceIndex(0) +--- +>>> _7 = _6[_5].name, name = _7 === void 0 ? "noName" : _7; +1 >^^^^ +2 > ^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1 > +2 > name = "noName" +3 > +4 > name = "noName" +1 >Emitted(46, 5) Source(62, 8) + SourceIndex(0) +2 >Emitted(46, 21) Source(62, 23) + SourceIndex(0) +3 >Emitted(46, 23) Source(62, 8) + SourceIndex(0) +4 >Emitted(46, 59) Source(62, 23) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(47, 5) Source(63, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(63, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(63, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(63, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(63, 17) + SourceIndex(0) +6 >Emitted(47, 22) Source(63, 22) + SourceIndex(0) +7 >Emitted(47, 23) Source(63, 23) + SourceIndex(0) +8 >Emitted(47, 24) Source(63, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(48, 2) Source(64, 2) + SourceIndex(0) +--- +>>>for (var _8 = 0, multiRobots_2 = multiRobots; _8 < multiRobots_2.length; _8++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(49, 1) Source(65, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(65, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(65, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(70, 6) + SourceIndex(0) +5 >Emitted(49, 16) Source(70, 17) + SourceIndex(0) +6 >Emitted(49, 18) Source(70, 6) + SourceIndex(0) +7 >Emitted(49, 45) Source(70, 17) + SourceIndex(0) +8 >Emitted(49, 47) Source(70, 6) + SourceIndex(0) +9 >Emitted(49, 72) Source(70, 17) + SourceIndex(0) +10>Emitted(49, 74) Source(70, 6) + SourceIndex(0) +11>Emitted(49, 78) Source(70, 17) + SourceIndex(0) +12>Emitted(49, 79) Source(70, 18) + SourceIndex(0) +--- +>>> _9 = multiRobots_2[_8].skills, _10 = _9 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _9, _11 = _10.primary, primary = _11 === void 0 ? "primary" : _11, _12 = _10.secondary, secondary = _12 === void 0 ? "secondary" : _12; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +3 > +4 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +5 > +6 > primary = "primary" +7 > +8 > primary = "primary" +9 > , + > +10> secondary = "secondary" +11> +12> secondary = "secondary" +1->Emitted(50, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(50, 34) Source(69, 53) + SourceIndex(0) +3 >Emitted(50, 36) Source(66, 5) + SourceIndex(0) +4 >Emitted(50, 107) Source(69, 53) + SourceIndex(0) +5 >Emitted(50, 109) Source(67, 9) + SourceIndex(0) +6 >Emitted(50, 126) Source(67, 28) + SourceIndex(0) +7 >Emitted(50, 128) Source(67, 9) + SourceIndex(0) +8 >Emitted(50, 170) Source(67, 28) + SourceIndex(0) +9 >Emitted(50, 172) Source(68, 9) + SourceIndex(0) +10>Emitted(50, 191) Source(68, 32) + SourceIndex(0) +11>Emitted(50, 193) Source(68, 9) + SourceIndex(0) +12>Emitted(50, 239) Source(68, 32) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(51, 5) Source(71, 5) + SourceIndex(0) +2 >Emitted(51, 12) Source(71, 12) + SourceIndex(0) +3 >Emitted(51, 13) Source(71, 13) + SourceIndex(0) +4 >Emitted(51, 16) Source(71, 16) + SourceIndex(0) +5 >Emitted(51, 17) Source(71, 17) + SourceIndex(0) +6 >Emitted(51, 25) Source(71, 25) + SourceIndex(0) +7 >Emitted(51, 26) Source(71, 26) + SourceIndex(0) +8 >Emitted(51, 27) Source(71, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(52, 2) Source(72, 2) + SourceIndex(0) +--- +>>>for (var _13 = 0, _14 = getMultiRobots(); _13 < _14.length; _13++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(53, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(53, 4) Source(73, 4) + SourceIndex(0) +3 >Emitted(53, 5) Source(73, 5) + SourceIndex(0) +4 >Emitted(53, 6) Source(78, 6) + SourceIndex(0) +5 >Emitted(53, 17) Source(78, 22) + SourceIndex(0) +6 >Emitted(53, 19) Source(78, 6) + SourceIndex(0) +7 >Emitted(53, 25) Source(78, 6) + SourceIndex(0) +8 >Emitted(53, 39) Source(78, 20) + SourceIndex(0) +9 >Emitted(53, 41) Source(78, 22) + SourceIndex(0) +10>Emitted(53, 43) Source(78, 6) + SourceIndex(0) +11>Emitted(53, 59) Source(78, 22) + SourceIndex(0) +12>Emitted(53, 61) Source(78, 6) + SourceIndex(0) +13>Emitted(53, 66) Source(78, 22) + SourceIndex(0) +14>Emitted(53, 67) Source(78, 23) + SourceIndex(0) +--- +>>> _15 = _14[_13].skills, _16 = _15 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _15, _17 = _16.primary, primary = _17 === void 0 ? "primary" : _17, _18 = _16.secondary, secondary = _18 === void 0 ? "secondary" : _18; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +3 > +4 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +5 > +6 > primary = "primary" +7 > +8 > primary = "primary" +9 > , + > +10> secondary = "secondary" +11> +12> secondary = "secondary" +1->Emitted(54, 5) Source(74, 5) + SourceIndex(0) +2 >Emitted(54, 26) Source(77, 53) + SourceIndex(0) +3 >Emitted(54, 28) Source(74, 5) + SourceIndex(0) +4 >Emitted(54, 101) Source(77, 53) + SourceIndex(0) +5 >Emitted(54, 103) Source(75, 9) + SourceIndex(0) +6 >Emitted(54, 120) Source(75, 28) + SourceIndex(0) +7 >Emitted(54, 122) Source(75, 9) + SourceIndex(0) +8 >Emitted(54, 164) Source(75, 28) + SourceIndex(0) +9 >Emitted(54, 166) Source(76, 9) + SourceIndex(0) +10>Emitted(54, 185) Source(76, 32) + SourceIndex(0) +11>Emitted(54, 187) Source(76, 9) + SourceIndex(0) +12>Emitted(54, 233) Source(76, 32) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(55, 5) Source(79, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(79, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(79, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(79, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(79, 17) + SourceIndex(0) +6 >Emitted(55, 25) Source(79, 25) + SourceIndex(0) +7 >Emitted(55, 26) Source(79, 26) + SourceIndex(0) +8 >Emitted(55, 27) Source(79, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(56, 2) Source(80, 2) + SourceIndex(0) +--- +>>>for (var _19 = 0, _20 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(57, 1) Source(81, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(81, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(81, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(86, 6) + SourceIndex(0) +5 >Emitted(57, 17) Source(87, 79) + SourceIndex(0) +6 >Emitted(57, 19) Source(86, 6) + SourceIndex(0) +7 >Emitted(57, 26) Source(86, 7) + SourceIndex(0) +8 >Emitted(57, 28) Source(86, 9) + SourceIndex(0) +9 >Emitted(57, 32) Source(86, 13) + SourceIndex(0) +10>Emitted(57, 34) Source(86, 15) + SourceIndex(0) +11>Emitted(57, 41) Source(86, 22) + SourceIndex(0) +12>Emitted(57, 43) Source(86, 24) + SourceIndex(0) +13>Emitted(57, 49) Source(86, 30) + SourceIndex(0) +14>Emitted(57, 51) Source(86, 32) + SourceIndex(0) +15>Emitted(57, 53) Source(86, 34) + SourceIndex(0) +16>Emitted(57, 60) Source(86, 41) + SourceIndex(0) +17>Emitted(57, 62) Source(86, 43) + SourceIndex(0) +18>Emitted(57, 70) Source(86, 51) + SourceIndex(0) +19>Emitted(57, 72) Source(86, 53) + SourceIndex(0) +20>Emitted(57, 81) Source(86, 62) + SourceIndex(0) +21>Emitted(57, 83) Source(86, 64) + SourceIndex(0) +22>Emitted(57, 89) Source(86, 70) + SourceIndex(0) +23>Emitted(57, 91) Source(86, 72) + SourceIndex(0) +24>Emitted(57, 93) Source(86, 74) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _19 < _20.length; _19++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^ +25> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(58, 5) Source(87, 5) + SourceIndex(0) +2 >Emitted(58, 7) Source(87, 7) + SourceIndex(0) +3 >Emitted(58, 11) Source(87, 11) + SourceIndex(0) +4 >Emitted(58, 13) Source(87, 13) + SourceIndex(0) +5 >Emitted(58, 22) Source(87, 22) + SourceIndex(0) +6 >Emitted(58, 24) Source(87, 24) + SourceIndex(0) +7 >Emitted(58, 30) Source(87, 30) + SourceIndex(0) +8 >Emitted(58, 32) Source(87, 32) + SourceIndex(0) +9 >Emitted(58, 34) Source(87, 34) + SourceIndex(0) +10>Emitted(58, 41) Source(87, 41) + SourceIndex(0) +11>Emitted(58, 43) Source(87, 43) + SourceIndex(0) +12>Emitted(58, 53) Source(87, 53) + SourceIndex(0) +13>Emitted(58, 55) Source(87, 55) + SourceIndex(0) +14>Emitted(58, 64) Source(87, 64) + SourceIndex(0) +15>Emitted(58, 66) Source(87, 66) + SourceIndex(0) +16>Emitted(58, 74) Source(87, 74) + SourceIndex(0) +17>Emitted(58, 76) Source(87, 76) + SourceIndex(0) +18>Emitted(58, 78) Source(87, 78) + SourceIndex(0) +19>Emitted(58, 79) Source(87, 79) + SourceIndex(0) +20>Emitted(58, 81) Source(86, 6) + SourceIndex(0) +21>Emitted(58, 97) Source(87, 79) + SourceIndex(0) +22>Emitted(58, 99) Source(86, 6) + SourceIndex(0) +23>Emitted(58, 104) Source(87, 79) + SourceIndex(0) +24>Emitted(58, 105) Source(87, 80) + SourceIndex(0) +--- +>>> _21 = _20[_19].skills, _22 = _21 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _21, _23 = _22.primary, primary = _23 === void 0 ? "primary" : _23, _24 = _22.secondary, secondary = _24 === void 0 ? "secondary" : _24; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +3 > +4 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +5 > +6 > primary = "primary" +7 > +8 > primary = "primary" +9 > , + > +10> secondary = "secondary" +11> +12> secondary = "secondary" +1->Emitted(59, 5) Source(82, 5) + SourceIndex(0) +2 >Emitted(59, 26) Source(85, 53) + SourceIndex(0) +3 >Emitted(59, 28) Source(82, 5) + SourceIndex(0) +4 >Emitted(59, 101) Source(85, 53) + SourceIndex(0) +5 >Emitted(59, 103) Source(83, 9) + SourceIndex(0) +6 >Emitted(59, 120) Source(83, 28) + SourceIndex(0) +7 >Emitted(59, 122) Source(83, 9) + SourceIndex(0) +8 >Emitted(59, 164) Source(83, 28) + SourceIndex(0) +9 >Emitted(59, 166) Source(84, 9) + SourceIndex(0) +10>Emitted(59, 185) Source(84, 32) + SourceIndex(0) +11>Emitted(59, 187) Source(84, 9) + SourceIndex(0) +12>Emitted(59, 233) Source(84, 32) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(60, 5) Source(88, 5) + SourceIndex(0) +2 >Emitted(60, 12) Source(88, 12) + SourceIndex(0) +3 >Emitted(60, 13) Source(88, 13) + SourceIndex(0) +4 >Emitted(60, 16) Source(88, 16) + SourceIndex(0) +5 >Emitted(60, 17) Source(88, 17) + SourceIndex(0) +6 >Emitted(60, 25) Source(88, 25) + SourceIndex(0) +7 >Emitted(60, 26) Source(88, 26) + SourceIndex(0) +8 >Emitted(60, 27) Source(88, 27) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(61, 2) Source(89, 2) + SourceIndex(0) +--- +>>>for (var _25 = 0, robots_3 = robots; _25 < robots_3.length; _25++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > + > +2 >for +3 > +4 > ({name: nameA = "noName", skill: skillA = "noSkill" } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(62, 1) Source(92, 1) + SourceIndex(0) +2 >Emitted(62, 4) Source(92, 4) + SourceIndex(0) +3 >Emitted(62, 5) Source(92, 5) + SourceIndex(0) +4 >Emitted(62, 6) Source(92, 62) + SourceIndex(0) +5 >Emitted(62, 17) Source(92, 68) + SourceIndex(0) +6 >Emitted(62, 19) Source(92, 62) + SourceIndex(0) +7 >Emitted(62, 36) Source(92, 68) + SourceIndex(0) +8 >Emitted(62, 38) Source(92, 62) + SourceIndex(0) +9 >Emitted(62, 59) Source(92, 68) + SourceIndex(0) +10>Emitted(62, 61) Source(92, 62) + SourceIndex(0) +11>Emitted(62, 66) Source(92, 68) + SourceIndex(0) +12>Emitted(62, 67) Source(92, 69) + SourceIndex(0) +--- +>>> _26 = robots_3[_25], _27 = _26.name, nameA = _27 === void 0 ? "noName" : _27, _28 = _26.skill, skillA = _28 === void 0 ? "noSkill" : _28; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name: nameA = "noName", skill: skillA = "noSkill" } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , +8 > skill: skillA = "noSkill" +9 > +10> skill: skillA = "noSkill" +1->Emitted(63, 5) Source(92, 6) + SourceIndex(0) +2 >Emitted(63, 24) Source(92, 58) + SourceIndex(0) +3 >Emitted(63, 26) Source(92, 7) + SourceIndex(0) +4 >Emitted(63, 40) Source(92, 29) + SourceIndex(0) +5 >Emitted(63, 42) Source(92, 7) + SourceIndex(0) +6 >Emitted(63, 81) Source(92, 29) + SourceIndex(0) +7 >Emitted(63, 83) Source(92, 31) + SourceIndex(0) +8 >Emitted(63, 98) Source(92, 56) + SourceIndex(0) +9 >Emitted(63, 100) Source(92, 31) + SourceIndex(0) +10>Emitted(63, 141) Source(92, 56) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(64, 5) Source(93, 5) + SourceIndex(0) +2 >Emitted(64, 12) Source(93, 12) + SourceIndex(0) +3 >Emitted(64, 13) Source(93, 13) + SourceIndex(0) +4 >Emitted(64, 16) Source(93, 16) + SourceIndex(0) +5 >Emitted(64, 17) Source(93, 17) + SourceIndex(0) +6 >Emitted(64, 22) Source(93, 22) + SourceIndex(0) +7 >Emitted(64, 23) Source(93, 23) + SourceIndex(0) +8 >Emitted(64, 24) Source(93, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(65, 2) Source(94, 2) + SourceIndex(0) +--- +>>>for (var _29 = 0, _30 = getRobots(); _29 < _30.length; _29++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name: nameA = "noName", skill: skillA = "noSkill" } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(66, 1) Source(95, 1) + SourceIndex(0) +2 >Emitted(66, 4) Source(95, 4) + SourceIndex(0) +3 >Emitted(66, 5) Source(95, 5) + SourceIndex(0) +4 >Emitted(66, 6) Source(95, 63) + SourceIndex(0) +5 >Emitted(66, 17) Source(95, 74) + SourceIndex(0) +6 >Emitted(66, 19) Source(95, 63) + SourceIndex(0) +7 >Emitted(66, 25) Source(95, 63) + SourceIndex(0) +8 >Emitted(66, 34) Source(95, 72) + SourceIndex(0) +9 >Emitted(66, 36) Source(95, 74) + SourceIndex(0) +10>Emitted(66, 38) Source(95, 63) + SourceIndex(0) +11>Emitted(66, 54) Source(95, 74) + SourceIndex(0) +12>Emitted(66, 56) Source(95, 63) + SourceIndex(0) +13>Emitted(66, 61) Source(95, 74) + SourceIndex(0) +14>Emitted(66, 62) Source(95, 75) + SourceIndex(0) +--- +>>> _31 = _30[_29], _32 = _31.name, nameA = _32 === void 0 ? "noName" : _32, _33 = _31.skill, skillA = _33 === void 0 ? "noSkill" : _33; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name: nameA = "noName", skill: skillA = "noSkill" } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , +8 > skill: skillA = "noSkill" +9 > +10> skill: skillA = "noSkill" +1->Emitted(67, 5) Source(95, 6) + SourceIndex(0) +2 >Emitted(67, 19) Source(95, 59) + SourceIndex(0) +3 >Emitted(67, 21) Source(95, 7) + SourceIndex(0) +4 >Emitted(67, 35) Source(95, 29) + SourceIndex(0) +5 >Emitted(67, 37) Source(95, 7) + SourceIndex(0) +6 >Emitted(67, 76) Source(95, 29) + SourceIndex(0) +7 >Emitted(67, 78) Source(95, 31) + SourceIndex(0) +8 >Emitted(67, 93) Source(95, 56) + SourceIndex(0) +9 >Emitted(67, 95) Source(95, 31) + SourceIndex(0) +10>Emitted(67, 136) Source(95, 56) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(68, 5) Source(96, 5) + SourceIndex(0) +2 >Emitted(68, 12) Source(96, 12) + SourceIndex(0) +3 >Emitted(68, 13) Source(96, 13) + SourceIndex(0) +4 >Emitted(68, 16) Source(96, 16) + SourceIndex(0) +5 >Emitted(68, 17) Source(96, 17) + SourceIndex(0) +6 >Emitted(68, 22) Source(96, 22) + SourceIndex(0) +7 >Emitted(68, 23) Source(96, 23) + SourceIndex(0) +8 >Emitted(68, 24) Source(96, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(69, 2) Source(97, 2) + SourceIndex(0) +--- +>>>for (var _34 = 0, _35 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _34 < _35.length; _34++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^^ +32> ^ +33> ^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({name: nameA = "noName", skill: skillA = "noSkill" } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(70, 1) Source(98, 1) + SourceIndex(0) +2 >Emitted(70, 4) Source(98, 4) + SourceIndex(0) +3 >Emitted(70, 5) Source(98, 5) + SourceIndex(0) +4 >Emitted(70, 6) Source(98, 63) + SourceIndex(0) +5 >Emitted(70, 17) Source(98, 139) + SourceIndex(0) +6 >Emitted(70, 19) Source(98, 63) + SourceIndex(0) +7 >Emitted(70, 26) Source(98, 64) + SourceIndex(0) +8 >Emitted(70, 28) Source(98, 66) + SourceIndex(0) +9 >Emitted(70, 32) Source(98, 70) + SourceIndex(0) +10>Emitted(70, 34) Source(98, 72) + SourceIndex(0) +11>Emitted(70, 41) Source(98, 79) + SourceIndex(0) +12>Emitted(70, 43) Source(98, 81) + SourceIndex(0) +13>Emitted(70, 48) Source(98, 86) + SourceIndex(0) +14>Emitted(70, 50) Source(98, 88) + SourceIndex(0) +15>Emitted(70, 58) Source(98, 96) + SourceIndex(0) +16>Emitted(70, 60) Source(98, 98) + SourceIndex(0) +17>Emitted(70, 62) Source(98, 100) + SourceIndex(0) +18>Emitted(70, 64) Source(98, 102) + SourceIndex(0) +19>Emitted(70, 68) Source(98, 106) + SourceIndex(0) +20>Emitted(70, 70) Source(98, 108) + SourceIndex(0) +21>Emitted(70, 79) Source(98, 117) + SourceIndex(0) +22>Emitted(70, 81) Source(98, 119) + SourceIndex(0) +23>Emitted(70, 86) Source(98, 124) + SourceIndex(0) +24>Emitted(70, 88) Source(98, 126) + SourceIndex(0) +25>Emitted(70, 98) Source(98, 136) + SourceIndex(0) +26>Emitted(70, 100) Source(98, 138) + SourceIndex(0) +27>Emitted(70, 101) Source(98, 139) + SourceIndex(0) +28>Emitted(70, 103) Source(98, 63) + SourceIndex(0) +29>Emitted(70, 119) Source(98, 139) + SourceIndex(0) +30>Emitted(70, 121) Source(98, 63) + SourceIndex(0) +31>Emitted(70, 126) Source(98, 139) + SourceIndex(0) +32>Emitted(70, 127) Source(98, 140) + SourceIndex(0) +--- +>>> _36 = _35[_34], _37 = _36.name, nameA = _37 === void 0 ? "noName" : _37, _38 = _36.skill, skillA = _38 === void 0 ? "noSkill" : _38; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > {name: nameA = "noName", skill: skillA = "noSkill" } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , +8 > skill: skillA = "noSkill" +9 > +10> skill: skillA = "noSkill" +1->Emitted(71, 5) Source(98, 6) + SourceIndex(0) +2 >Emitted(71, 19) Source(98, 59) + SourceIndex(0) +3 >Emitted(71, 21) Source(98, 7) + SourceIndex(0) +4 >Emitted(71, 35) Source(98, 29) + SourceIndex(0) +5 >Emitted(71, 37) Source(98, 7) + SourceIndex(0) +6 >Emitted(71, 76) Source(98, 29) + SourceIndex(0) +7 >Emitted(71, 78) Source(98, 31) + SourceIndex(0) +8 >Emitted(71, 93) Source(98, 56) + SourceIndex(0) +9 >Emitted(71, 95) Source(98, 31) + SourceIndex(0) +10>Emitted(71, 136) Source(98, 56) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(72, 5) Source(99, 5) + SourceIndex(0) +2 >Emitted(72, 12) Source(99, 12) + SourceIndex(0) +3 >Emitted(72, 13) Source(99, 13) + SourceIndex(0) +4 >Emitted(72, 16) Source(99, 16) + SourceIndex(0) +5 >Emitted(72, 17) Source(99, 17) + SourceIndex(0) +6 >Emitted(72, 22) Source(99, 22) + SourceIndex(0) +7 >Emitted(72, 23) Source(99, 23) + SourceIndex(0) +8 >Emitted(72, 24) Source(99, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(73, 2) Source(100, 2) + SourceIndex(0) +--- +>>>for (var _39 = 0, multiRobots_3 = multiRobots; _39 < multiRobots_3.length; _39++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(74, 1) Source(101, 1) + SourceIndex(0) +2 >Emitted(74, 4) Source(101, 4) + SourceIndex(0) +3 >Emitted(74, 5) Source(101, 5) + SourceIndex(0) +4 >Emitted(74, 6) Source(107, 6) + SourceIndex(0) +5 >Emitted(74, 17) Source(107, 17) + SourceIndex(0) +6 >Emitted(74, 19) Source(107, 6) + SourceIndex(0) +7 >Emitted(74, 46) Source(107, 17) + SourceIndex(0) +8 >Emitted(74, 48) Source(107, 6) + SourceIndex(0) +9 >Emitted(74, 74) Source(107, 17) + SourceIndex(0) +10>Emitted(74, 76) Source(107, 6) + SourceIndex(0) +11>Emitted(74, 81) Source(107, 17) + SourceIndex(0) +12>Emitted(74, 82) Source(107, 18) + SourceIndex(0) +--- +>>> _40 = multiRobots_3[_39], _41 = _40.name, nameA = _41 === void 0 ? "noName" : _41, _42 = _40.skills, _43 = _42 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _42, _44 = _43.primary, primaryA = _44 === void 0 ? "primary" : _44, _45 = _43.secondary, secondaryA = _45 === void 0 ? "secondary" : _45; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , + > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +1->Emitted(75, 5) Source(101, 6) + SourceIndex(0) +2 >Emitted(75, 29) Source(107, 2) + SourceIndex(0) +3 >Emitted(75, 31) Source(102, 5) + SourceIndex(0) +4 >Emitted(75, 45) Source(102, 27) + SourceIndex(0) +5 >Emitted(75, 47) Source(102, 5) + SourceIndex(0) +6 >Emitted(75, 86) Source(102, 27) + SourceIndex(0) +7 >Emitted(75, 88) Source(103, 5) + SourceIndex(0) +8 >Emitted(75, 104) Source(106, 53) + SourceIndex(0) +9 >Emitted(75, 106) Source(103, 5) + SourceIndex(0) +10>Emitted(75, 179) Source(106, 53) + SourceIndex(0) +11>Emitted(75, 181) Source(104, 9) + SourceIndex(0) +12>Emitted(75, 198) Source(104, 38) + SourceIndex(0) +13>Emitted(75, 200) Source(104, 9) + SourceIndex(0) +14>Emitted(75, 243) Source(104, 38) + SourceIndex(0) +15>Emitted(75, 245) Source(105, 9) + SourceIndex(0) +16>Emitted(75, 264) Source(105, 44) + SourceIndex(0) +17>Emitted(75, 266) Source(105, 9) + SourceIndex(0) +18>Emitted(75, 313) Source(105, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(76, 5) Source(108, 5) + SourceIndex(0) +2 >Emitted(76, 12) Source(108, 12) + SourceIndex(0) +3 >Emitted(76, 13) Source(108, 13) + SourceIndex(0) +4 >Emitted(76, 16) Source(108, 16) + SourceIndex(0) +5 >Emitted(76, 17) Source(108, 17) + SourceIndex(0) +6 >Emitted(76, 22) Source(108, 22) + SourceIndex(0) +7 >Emitted(76, 23) Source(108, 23) + SourceIndex(0) +8 >Emitted(76, 24) Source(108, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(77, 2) Source(109, 2) + SourceIndex(0) +--- +>>>for (var _46 = 0, _47 = getMultiRobots(); _46 < _47.length; _46++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(78, 1) Source(110, 1) + SourceIndex(0) +2 >Emitted(78, 4) Source(110, 4) + SourceIndex(0) +3 >Emitted(78, 5) Source(110, 5) + SourceIndex(0) +4 >Emitted(78, 6) Source(116, 6) + SourceIndex(0) +5 >Emitted(78, 17) Source(116, 22) + SourceIndex(0) +6 >Emitted(78, 19) Source(116, 6) + SourceIndex(0) +7 >Emitted(78, 25) Source(116, 6) + SourceIndex(0) +8 >Emitted(78, 39) Source(116, 20) + SourceIndex(0) +9 >Emitted(78, 41) Source(116, 22) + SourceIndex(0) +10>Emitted(78, 43) Source(116, 6) + SourceIndex(0) +11>Emitted(78, 59) Source(116, 22) + SourceIndex(0) +12>Emitted(78, 61) Source(116, 6) + SourceIndex(0) +13>Emitted(78, 66) Source(116, 22) + SourceIndex(0) +14>Emitted(78, 67) Source(116, 23) + SourceIndex(0) +--- +>>> _48 = _47[_46], _49 = _48.name, nameA = _49 === void 0 ? "noName" : _49, _50 = _48.skills, _51 = _50 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _50, _52 = _51.primary, primaryA = _52 === void 0 ? "primary" : _52, _53 = _51.secondary, secondaryA = _53 === void 0 ? "secondary" : _53; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , + > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +1->Emitted(79, 5) Source(110, 6) + SourceIndex(0) +2 >Emitted(79, 19) Source(116, 2) + SourceIndex(0) +3 >Emitted(79, 21) Source(111, 5) + SourceIndex(0) +4 >Emitted(79, 35) Source(111, 27) + SourceIndex(0) +5 >Emitted(79, 37) Source(111, 5) + SourceIndex(0) +6 >Emitted(79, 76) Source(111, 27) + SourceIndex(0) +7 >Emitted(79, 78) Source(112, 5) + SourceIndex(0) +8 >Emitted(79, 94) Source(115, 53) + SourceIndex(0) +9 >Emitted(79, 96) Source(112, 5) + SourceIndex(0) +10>Emitted(79, 169) Source(115, 53) + SourceIndex(0) +11>Emitted(79, 171) Source(113, 9) + SourceIndex(0) +12>Emitted(79, 188) Source(113, 38) + SourceIndex(0) +13>Emitted(79, 190) Source(113, 9) + SourceIndex(0) +14>Emitted(79, 233) Source(113, 38) + SourceIndex(0) +15>Emitted(79, 235) Source(114, 9) + SourceIndex(0) +16>Emitted(79, 254) Source(114, 44) + SourceIndex(0) +17>Emitted(79, 256) Source(114, 9) + SourceIndex(0) +18>Emitted(79, 303) Source(114, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(80, 5) Source(117, 5) + SourceIndex(0) +2 >Emitted(80, 12) Source(117, 12) + SourceIndex(0) +3 >Emitted(80, 13) Source(117, 13) + SourceIndex(0) +4 >Emitted(80, 16) Source(117, 16) + SourceIndex(0) +5 >Emitted(80, 17) Source(117, 17) + SourceIndex(0) +6 >Emitted(80, 22) Source(117, 22) + SourceIndex(0) +7 >Emitted(80, 23) Source(117, 23) + SourceIndex(0) +8 >Emitted(80, 24) Source(117, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(81, 2) Source(118, 2) + SourceIndex(0) +--- +>>>for (var _54 = 0, _55 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^ +9 > ^^ +10> ^^^^ +11> ^^ +12> ^^^^^^^ +13> ^^ +14> ^^^^^^ +15> ^^ +16> ^^ +17> ^^^^^^^ +18> ^^ +19> ^^^^^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^^ +24> ^^ +25> ^^ +26> ^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > +8 > [ +9 > { +10> name +11> : +12> "mower" +13> , +14> skills +15> : +16> { +17> primary +18> : +19> "mowing" +20> , +21> secondary +22> : +23> "none" +24> } +25> } +1->Emitted(82, 1) Source(119, 1) + SourceIndex(0) +2 >Emitted(82, 4) Source(119, 4) + SourceIndex(0) +3 >Emitted(82, 5) Source(119, 5) + SourceIndex(0) +4 >Emitted(82, 6) Source(125, 6) + SourceIndex(0) +5 >Emitted(82, 17) Source(126, 79) + SourceIndex(0) +6 >Emitted(82, 19) Source(125, 6) + SourceIndex(0) +7 >Emitted(82, 25) Source(125, 20) + SourceIndex(0) +8 >Emitted(82, 26) Source(125, 21) + SourceIndex(0) +9 >Emitted(82, 28) Source(125, 23) + SourceIndex(0) +10>Emitted(82, 32) Source(125, 27) + SourceIndex(0) +11>Emitted(82, 34) Source(125, 29) + SourceIndex(0) +12>Emitted(82, 41) Source(125, 36) + SourceIndex(0) +13>Emitted(82, 43) Source(125, 38) + SourceIndex(0) +14>Emitted(82, 49) Source(125, 44) + SourceIndex(0) +15>Emitted(82, 51) Source(125, 46) + SourceIndex(0) +16>Emitted(82, 53) Source(125, 48) + SourceIndex(0) +17>Emitted(82, 60) Source(125, 55) + SourceIndex(0) +18>Emitted(82, 62) Source(125, 57) + SourceIndex(0) +19>Emitted(82, 70) Source(125, 65) + SourceIndex(0) +20>Emitted(82, 72) Source(125, 67) + SourceIndex(0) +21>Emitted(82, 81) Source(125, 76) + SourceIndex(0) +22>Emitted(82, 83) Source(125, 78) + SourceIndex(0) +23>Emitted(82, 89) Source(125, 84) + SourceIndex(0) +24>Emitted(82, 91) Source(125, 86) + SourceIndex(0) +25>Emitted(82, 93) Source(125, 88) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _54 < _55.length; _54++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^ +25> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(83, 5) Source(126, 5) + SourceIndex(0) +2 >Emitted(83, 7) Source(126, 7) + SourceIndex(0) +3 >Emitted(83, 11) Source(126, 11) + SourceIndex(0) +4 >Emitted(83, 13) Source(126, 13) + SourceIndex(0) +5 >Emitted(83, 22) Source(126, 22) + SourceIndex(0) +6 >Emitted(83, 24) Source(126, 24) + SourceIndex(0) +7 >Emitted(83, 30) Source(126, 30) + SourceIndex(0) +8 >Emitted(83, 32) Source(126, 32) + SourceIndex(0) +9 >Emitted(83, 34) Source(126, 34) + SourceIndex(0) +10>Emitted(83, 41) Source(126, 41) + SourceIndex(0) +11>Emitted(83, 43) Source(126, 43) + SourceIndex(0) +12>Emitted(83, 53) Source(126, 53) + SourceIndex(0) +13>Emitted(83, 55) Source(126, 55) + SourceIndex(0) +14>Emitted(83, 64) Source(126, 64) + SourceIndex(0) +15>Emitted(83, 66) Source(126, 66) + SourceIndex(0) +16>Emitted(83, 74) Source(126, 74) + SourceIndex(0) +17>Emitted(83, 76) Source(126, 76) + SourceIndex(0) +18>Emitted(83, 78) Source(126, 78) + SourceIndex(0) +19>Emitted(83, 79) Source(126, 79) + SourceIndex(0) +20>Emitted(83, 81) Source(125, 6) + SourceIndex(0) +21>Emitted(83, 97) Source(126, 79) + SourceIndex(0) +22>Emitted(83, 99) Source(125, 6) + SourceIndex(0) +23>Emitted(83, 104) Source(126, 79) + SourceIndex(0) +24>Emitted(83, 105) Source(126, 80) + SourceIndex(0) +--- +>>> _56 = _55[_54], _57 = _56.name, nameA = _57 === void 0 ? "noName" : _57, _58 = _56.skills, _59 = _58 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _58, _60 = _59.primary, primaryA = _60 === void 0 ? "primary" : _60, _61 = _59.secondary, secondaryA = _61 === void 0 ? "secondary" : _61; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name: nameA = "noName" +5 > +6 > name: nameA = "noName" +7 > , + > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +1->Emitted(84, 5) Source(119, 6) + SourceIndex(0) +2 >Emitted(84, 19) Source(125, 2) + SourceIndex(0) +3 >Emitted(84, 21) Source(120, 5) + SourceIndex(0) +4 >Emitted(84, 35) Source(120, 27) + SourceIndex(0) +5 >Emitted(84, 37) Source(120, 5) + SourceIndex(0) +6 >Emitted(84, 76) Source(120, 27) + SourceIndex(0) +7 >Emitted(84, 78) Source(121, 5) + SourceIndex(0) +8 >Emitted(84, 94) Source(124, 53) + SourceIndex(0) +9 >Emitted(84, 96) Source(121, 5) + SourceIndex(0) +10>Emitted(84, 169) Source(124, 53) + SourceIndex(0) +11>Emitted(84, 171) Source(122, 9) + SourceIndex(0) +12>Emitted(84, 188) Source(122, 38) + SourceIndex(0) +13>Emitted(84, 190) Source(122, 9) + SourceIndex(0) +14>Emitted(84, 233) Source(122, 38) + SourceIndex(0) +15>Emitted(84, 235) Source(123, 9) + SourceIndex(0) +16>Emitted(84, 254) Source(123, 44) + SourceIndex(0) +17>Emitted(84, 256) Source(123, 9) + SourceIndex(0) +18>Emitted(84, 303) Source(123, 44) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(85, 5) Source(127, 5) + SourceIndex(0) +2 >Emitted(85, 12) Source(127, 12) + SourceIndex(0) +3 >Emitted(85, 13) Source(127, 13) + SourceIndex(0) +4 >Emitted(85, 16) Source(127, 16) + SourceIndex(0) +5 >Emitted(85, 17) Source(127, 17) + SourceIndex(0) +6 >Emitted(85, 22) Source(127, 22) + SourceIndex(0) +7 >Emitted(85, 23) Source(127, 23) + SourceIndex(0) +8 >Emitted(85, 24) Source(127, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(86, 2) Source(128, 2) + SourceIndex(0) +--- +>>>for (var _62 = 0, robots_4 = robots; _62 < robots_4.length; _62++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > + > +2 >for +3 > +4 > ({ name = "noName", skill = "noSkill" } of +5 > robots +6 > +7 > robots +8 > +9 > robots +10> +11> robots +12> ) +1->Emitted(87, 1) Source(130, 1) + SourceIndex(0) +2 >Emitted(87, 4) Source(130, 4) + SourceIndex(0) +3 >Emitted(87, 5) Source(130, 5) + SourceIndex(0) +4 >Emitted(87, 6) Source(130, 49) + SourceIndex(0) +5 >Emitted(87, 17) Source(130, 55) + SourceIndex(0) +6 >Emitted(87, 19) Source(130, 49) + SourceIndex(0) +7 >Emitted(87, 36) Source(130, 55) + SourceIndex(0) +8 >Emitted(87, 38) Source(130, 49) + SourceIndex(0) +9 >Emitted(87, 59) Source(130, 55) + SourceIndex(0) +10>Emitted(87, 61) Source(130, 49) + SourceIndex(0) +11>Emitted(87, 66) Source(130, 55) + SourceIndex(0) +12>Emitted(87, 67) Source(130, 56) + SourceIndex(0) +--- +>>> _63 = robots_4[_62], _64 = _63.name, name = _64 === void 0 ? "noName" : _64, _65 = _63.skill, skill = _65 === void 0 ? "noSkill" : _65; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { name = "noName", skill = "noSkill" } +3 > +4 > name = "noName" +5 > +6 > name = "noName" +7 > , +8 > skill = "noSkill" +9 > +10> skill = "noSkill" +1->Emitted(88, 5) Source(130, 6) + SourceIndex(0) +2 >Emitted(88, 24) Source(130, 45) + SourceIndex(0) +3 >Emitted(88, 26) Source(130, 8) + SourceIndex(0) +4 >Emitted(88, 40) Source(130, 23) + SourceIndex(0) +5 >Emitted(88, 42) Source(130, 8) + SourceIndex(0) +6 >Emitted(88, 80) Source(130, 23) + SourceIndex(0) +7 >Emitted(88, 82) Source(130, 25) + SourceIndex(0) +8 >Emitted(88, 97) Source(130, 43) + SourceIndex(0) +9 >Emitted(88, 99) Source(130, 25) + SourceIndex(0) +10>Emitted(88, 139) Source(130, 43) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of robots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(89, 5) Source(131, 5) + SourceIndex(0) +2 >Emitted(89, 12) Source(131, 12) + SourceIndex(0) +3 >Emitted(89, 13) Source(131, 13) + SourceIndex(0) +4 >Emitted(89, 16) Source(131, 16) + SourceIndex(0) +5 >Emitted(89, 17) Source(131, 17) + SourceIndex(0) +6 >Emitted(89, 22) Source(131, 22) + SourceIndex(0) +7 >Emitted(89, 23) Source(131, 23) + SourceIndex(0) +8 >Emitted(89, 24) Source(131, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(90, 2) Source(132, 2) + SourceIndex(0) +--- +>>>for (var _66 = 0, _67 = getRobots(); _66 < _67.length; _66++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ name = "noName", skill = "noSkill" } of +5 > getRobots() +6 > +7 > +8 > getRobots +9 > () +10> +11> getRobots() +12> +13> getRobots() +14> ) +1->Emitted(91, 1) Source(133, 1) + SourceIndex(0) +2 >Emitted(91, 4) Source(133, 4) + SourceIndex(0) +3 >Emitted(91, 5) Source(133, 5) + SourceIndex(0) +4 >Emitted(91, 6) Source(133, 49) + SourceIndex(0) +5 >Emitted(91, 17) Source(133, 60) + SourceIndex(0) +6 >Emitted(91, 19) Source(133, 49) + SourceIndex(0) +7 >Emitted(91, 25) Source(133, 49) + SourceIndex(0) +8 >Emitted(91, 34) Source(133, 58) + SourceIndex(0) +9 >Emitted(91, 36) Source(133, 60) + SourceIndex(0) +10>Emitted(91, 38) Source(133, 49) + SourceIndex(0) +11>Emitted(91, 54) Source(133, 60) + SourceIndex(0) +12>Emitted(91, 56) Source(133, 49) + SourceIndex(0) +13>Emitted(91, 61) Source(133, 60) + SourceIndex(0) +14>Emitted(91, 62) Source(133, 61) + SourceIndex(0) +--- +>>> _68 = _67[_66], _69 = _68.name, name = _69 === void 0 ? "noName" : _69, _70 = _68.skill, skill = _70 === void 0 ? "noSkill" : _70; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { name = "noName", skill = "noSkill" } +3 > +4 > name = "noName" +5 > +6 > name = "noName" +7 > , +8 > skill = "noSkill" +9 > +10> skill = "noSkill" +1->Emitted(92, 5) Source(133, 6) + SourceIndex(0) +2 >Emitted(92, 19) Source(133, 45) + SourceIndex(0) +3 >Emitted(92, 21) Source(133, 8) + SourceIndex(0) +4 >Emitted(92, 35) Source(133, 23) + SourceIndex(0) +5 >Emitted(92, 37) Source(133, 8) + SourceIndex(0) +6 >Emitted(92, 75) Source(133, 23) + SourceIndex(0) +7 >Emitted(92, 77) Source(133, 25) + SourceIndex(0) +8 >Emitted(92, 92) Source(133, 42) + SourceIndex(0) +9 >Emitted(92, 94) Source(133, 25) + SourceIndex(0) +10>Emitted(92, 134) Source(133, 42) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of getRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(93, 5) Source(134, 5) + SourceIndex(0) +2 >Emitted(93, 12) Source(134, 12) + SourceIndex(0) +3 >Emitted(93, 13) Source(134, 13) + SourceIndex(0) +4 >Emitted(93, 16) Source(134, 16) + SourceIndex(0) +5 >Emitted(93, 17) Source(134, 17) + SourceIndex(0) +6 >Emitted(93, 22) Source(134, 22) + SourceIndex(0) +7 >Emitted(93, 23) Source(134, 23) + SourceIndex(0) +8 >Emitted(93, 24) Source(134, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(94, 2) Source(135, 2) + SourceIndex(0) +--- +>>>for (var _71 = 0, _72 = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; _71 < _72.length; _71++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^ +18> ^^ +19> ^^^^ +20> ^^ +21> ^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^^ +25> ^^^^^^^^^^ +26> ^^ +27> ^ +28> ^^ +29> ^^^^^^^^^^^^^^^^ +30> ^^ +31> ^^^^^ +32> ^ +33> ^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ name = "noName", skill = "noSkill" } of +5 > [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skill +14> : +15> "mowing" +16> } +17> , +18> { +19> name +20> : +21> "trimmer" +22> , +23> skill +24> : +25> "trimming" +26> } +27> ] +28> +29> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +30> +31> [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] +32> ) +1->Emitted(95, 1) Source(136, 1) + SourceIndex(0) +2 >Emitted(95, 4) Source(136, 4) + SourceIndex(0) +3 >Emitted(95, 5) Source(136, 5) + SourceIndex(0) +4 >Emitted(95, 6) Source(136, 49) + SourceIndex(0) +5 >Emitted(95, 17) Source(136, 125) + SourceIndex(0) +6 >Emitted(95, 19) Source(136, 49) + SourceIndex(0) +7 >Emitted(95, 26) Source(136, 50) + SourceIndex(0) +8 >Emitted(95, 28) Source(136, 52) + SourceIndex(0) +9 >Emitted(95, 32) Source(136, 56) + SourceIndex(0) +10>Emitted(95, 34) Source(136, 58) + SourceIndex(0) +11>Emitted(95, 41) Source(136, 65) + SourceIndex(0) +12>Emitted(95, 43) Source(136, 67) + SourceIndex(0) +13>Emitted(95, 48) Source(136, 72) + SourceIndex(0) +14>Emitted(95, 50) Source(136, 74) + SourceIndex(0) +15>Emitted(95, 58) Source(136, 82) + SourceIndex(0) +16>Emitted(95, 60) Source(136, 84) + SourceIndex(0) +17>Emitted(95, 62) Source(136, 86) + SourceIndex(0) +18>Emitted(95, 64) Source(136, 88) + SourceIndex(0) +19>Emitted(95, 68) Source(136, 92) + SourceIndex(0) +20>Emitted(95, 70) Source(136, 94) + SourceIndex(0) +21>Emitted(95, 79) Source(136, 103) + SourceIndex(0) +22>Emitted(95, 81) Source(136, 105) + SourceIndex(0) +23>Emitted(95, 86) Source(136, 110) + SourceIndex(0) +24>Emitted(95, 88) Source(136, 112) + SourceIndex(0) +25>Emitted(95, 98) Source(136, 122) + SourceIndex(0) +26>Emitted(95, 100) Source(136, 124) + SourceIndex(0) +27>Emitted(95, 101) Source(136, 125) + SourceIndex(0) +28>Emitted(95, 103) Source(136, 49) + SourceIndex(0) +29>Emitted(95, 119) Source(136, 125) + SourceIndex(0) +30>Emitted(95, 121) Source(136, 49) + SourceIndex(0) +31>Emitted(95, 126) Source(136, 125) + SourceIndex(0) +32>Emitted(95, 127) Source(136, 126) + SourceIndex(0) +--- +>>> _73 = _72[_71], _74 = _73.name, name = _74 === void 0 ? "noName" : _74, _75 = _73.skill, skill = _75 === void 0 ? "noSkill" : _75; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { name = "noName", skill = "noSkill" } +3 > +4 > name = "noName" +5 > +6 > name = "noName" +7 > , +8 > skill = "noSkill" +9 > +10> skill = "noSkill" +1->Emitted(96, 5) Source(136, 6) + SourceIndex(0) +2 >Emitted(96, 19) Source(136, 45) + SourceIndex(0) +3 >Emitted(96, 21) Source(136, 8) + SourceIndex(0) +4 >Emitted(96, 35) Source(136, 23) + SourceIndex(0) +5 >Emitted(96, 37) Source(136, 8) + SourceIndex(0) +6 >Emitted(96, 75) Source(136, 23) + SourceIndex(0) +7 >Emitted(96, 77) Source(136, 25) + SourceIndex(0) +8 >Emitted(96, 92) Source(136, 43) + SourceIndex(0) +9 >Emitted(96, 94) Source(136, 25) + SourceIndex(0) +10>Emitted(96, 134) Source(136, 43) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(97, 5) Source(137, 5) + SourceIndex(0) +2 >Emitted(97, 12) Source(137, 12) + SourceIndex(0) +3 >Emitted(97, 13) Source(137, 13) + SourceIndex(0) +4 >Emitted(97, 16) Source(137, 16) + SourceIndex(0) +5 >Emitted(97, 17) Source(137, 17) + SourceIndex(0) +6 >Emitted(97, 22) Source(137, 22) + SourceIndex(0) +7 >Emitted(97, 23) Source(137, 23) + SourceIndex(0) +8 >Emitted(97, 24) Source(137, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(98, 2) Source(138, 2) + SourceIndex(0) +--- +>>>for (var _76 = 0, multiRobots_4 = multiRobots; _76 < multiRobots_4.length; _76++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^ +12> ^ +13> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > multiRobots +6 > +7 > multiRobots +8 > +9 > multiRobots +10> +11> multiRobots +12> ) +1->Emitted(99, 1) Source(139, 1) + SourceIndex(0) +2 >Emitted(99, 4) Source(139, 4) + SourceIndex(0) +3 >Emitted(99, 5) Source(139, 5) + SourceIndex(0) +4 >Emitted(99, 6) Source(145, 6) + SourceIndex(0) +5 >Emitted(99, 17) Source(145, 17) + SourceIndex(0) +6 >Emitted(99, 19) Source(145, 6) + SourceIndex(0) +7 >Emitted(99, 46) Source(145, 17) + SourceIndex(0) +8 >Emitted(99, 48) Source(145, 6) + SourceIndex(0) +9 >Emitted(99, 74) Source(145, 17) + SourceIndex(0) +10>Emitted(99, 76) Source(145, 6) + SourceIndex(0) +11>Emitted(99, 81) Source(145, 17) + SourceIndex(0) +12>Emitted(99, 82) Source(145, 18) + SourceIndex(0) +--- +>>> _77 = multiRobots_4[_76], _78 = _77.name, name = _78 === void 0 ? "noName" : _78, _79 = _77.skills, _80 = _79 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _79, _81 = _80.primary, primary = _81 === void 0 ? "primary" : _81, _82 = _80.secondary, secondary = _82 === void 0 ? "secondary" : _82; +1->^^^^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name = "noName" +5 > +6 > name = "noName" +7 > , + > +8 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary = "primary" +13> +14> primary = "primary" +15> , + > +16> secondary = "secondary" +17> +18> secondary = "secondary" +1->Emitted(100, 5) Source(139, 6) + SourceIndex(0) +2 >Emitted(100, 29) Source(145, 2) + SourceIndex(0) +3 >Emitted(100, 31) Source(140, 5) + SourceIndex(0) +4 >Emitted(100, 45) Source(140, 20) + SourceIndex(0) +5 >Emitted(100, 47) Source(140, 5) + SourceIndex(0) +6 >Emitted(100, 85) Source(140, 20) + SourceIndex(0) +7 >Emitted(100, 87) Source(141, 5) + SourceIndex(0) +8 >Emitted(100, 103) Source(144, 53) + SourceIndex(0) +9 >Emitted(100, 105) Source(141, 5) + SourceIndex(0) +10>Emitted(100, 178) Source(144, 53) + SourceIndex(0) +11>Emitted(100, 180) Source(142, 9) + SourceIndex(0) +12>Emitted(100, 197) Source(142, 28) + SourceIndex(0) +13>Emitted(100, 199) Source(142, 9) + SourceIndex(0) +14>Emitted(100, 241) Source(142, 28) + SourceIndex(0) +15>Emitted(100, 243) Source(143, 9) + SourceIndex(0) +16>Emitted(100, 262) Source(143, 32) + SourceIndex(0) +17>Emitted(100, 264) Source(143, 9) + SourceIndex(0) +18>Emitted(100, 310) Source(143, 32) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of multiRobots) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(101, 5) Source(146, 5) + SourceIndex(0) +2 >Emitted(101, 12) Source(146, 12) + SourceIndex(0) +3 >Emitted(101, 13) Source(146, 13) + SourceIndex(0) +4 >Emitted(101, 16) Source(146, 16) + SourceIndex(0) +5 >Emitted(101, 17) Source(146, 17) + SourceIndex(0) +6 >Emitted(101, 22) Source(146, 22) + SourceIndex(0) +7 >Emitted(101, 23) Source(146, 23) + SourceIndex(0) +8 >Emitted(101, 24) Source(146, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(102, 2) Source(147, 2) + SourceIndex(0) +--- +>>>for (var _83 = 0, _84 = getMultiRobots(); _83 < _84.length; _83++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > getMultiRobots() +6 > +7 > +8 > getMultiRobots +9 > () +10> +11> getMultiRobots() +12> +13> getMultiRobots() +14> ) +1->Emitted(103, 1) Source(148, 1) + SourceIndex(0) +2 >Emitted(103, 4) Source(148, 4) + SourceIndex(0) +3 >Emitted(103, 5) Source(148, 5) + SourceIndex(0) +4 >Emitted(103, 6) Source(154, 6) + SourceIndex(0) +5 >Emitted(103, 17) Source(154, 22) + SourceIndex(0) +6 >Emitted(103, 19) Source(154, 6) + SourceIndex(0) +7 >Emitted(103, 25) Source(154, 6) + SourceIndex(0) +8 >Emitted(103, 39) Source(154, 20) + SourceIndex(0) +9 >Emitted(103, 41) Source(154, 22) + SourceIndex(0) +10>Emitted(103, 43) Source(154, 6) + SourceIndex(0) +11>Emitted(103, 59) Source(154, 22) + SourceIndex(0) +12>Emitted(103, 61) Source(154, 6) + SourceIndex(0) +13>Emitted(103, 66) Source(154, 22) + SourceIndex(0) +14>Emitted(103, 67) Source(154, 23) + SourceIndex(0) +--- +>>> _85 = _84[_83], _86 = _85.name, name = _86 === void 0 ? "noName" : _86, _87 = _85.skills, _88 = _87 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _87, _89 = _88.primary, primary = _89 === void 0 ? "primary" : _89, _90 = _88.secondary, secondary = _90 === void 0 ? "secondary" : _90; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name = "noName" +5 > +6 > name = "noName" +7 > , + > +8 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary = "primary" +13> +14> primary = "primary" +15> , + > +16> secondary = "secondary" +17> +18> secondary = "secondary" +1->Emitted(104, 5) Source(148, 6) + SourceIndex(0) +2 >Emitted(104, 19) Source(154, 2) + SourceIndex(0) +3 >Emitted(104, 21) Source(149, 5) + SourceIndex(0) +4 >Emitted(104, 35) Source(149, 20) + SourceIndex(0) +5 >Emitted(104, 37) Source(149, 5) + SourceIndex(0) +6 >Emitted(104, 75) Source(149, 20) + SourceIndex(0) +7 >Emitted(104, 77) Source(150, 5) + SourceIndex(0) +8 >Emitted(104, 93) Source(153, 53) + SourceIndex(0) +9 >Emitted(104, 95) Source(150, 5) + SourceIndex(0) +10>Emitted(104, 168) Source(153, 53) + SourceIndex(0) +11>Emitted(104, 170) Source(151, 9) + SourceIndex(0) +12>Emitted(104, 187) Source(151, 28) + SourceIndex(0) +13>Emitted(104, 189) Source(151, 9) + SourceIndex(0) +14>Emitted(104, 231) Source(151, 28) + SourceIndex(0) +15>Emitted(104, 233) Source(152, 9) + SourceIndex(0) +16>Emitted(104, 252) Source(152, 32) + SourceIndex(0) +17>Emitted(104, 254) Source(152, 9) + SourceIndex(0) +18>Emitted(104, 300) Source(152, 32) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(105, 5) Source(155, 5) + SourceIndex(0) +2 >Emitted(105, 12) Source(155, 12) + SourceIndex(0) +3 >Emitted(105, 13) Source(155, 13) + SourceIndex(0) +4 >Emitted(105, 16) Source(155, 16) + SourceIndex(0) +5 >Emitted(105, 17) Source(155, 17) + SourceIndex(0) +6 >Emitted(105, 22) Source(155, 22) + SourceIndex(0) +7 >Emitted(105, 23) Source(155, 23) + SourceIndex(0) +8 >Emitted(105, 24) Source(155, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(106, 2) Source(156, 2) + SourceIndex(0) +--- +>>>for (var _91 = 0, _92 = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^ +10> ^^ +11> ^^^^^^^ +12> ^^ +13> ^^^^^^ +14> ^^ +15> ^^ +16> ^^^^^^^ +17> ^^ +18> ^^^^^^^^ +19> ^^ +20> ^^^^^^^^^ +21> ^^ +22> ^^^^^^ +23> ^^ +24> ^^ +25> ^^^^^^^^^^^^^^^-> +1-> + > +2 >for +3 > +4 > ({ + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } of +5 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +6 > +7 > [ +8 > { +9 > name +10> : +11> "mower" +12> , +13> skills +14> : +15> { +16> primary +17> : +18> "mowing" +19> , +20> secondary +21> : +22> "none" +23> } +24> } +1->Emitted(107, 1) Source(157, 1) + SourceIndex(0) +2 >Emitted(107, 4) Source(157, 4) + SourceIndex(0) +3 >Emitted(107, 5) Source(157, 5) + SourceIndex(0) +4 >Emitted(107, 6) Source(163, 6) + SourceIndex(0) +5 >Emitted(107, 17) Source(164, 79) + SourceIndex(0) +6 >Emitted(107, 19) Source(163, 6) + SourceIndex(0) +7 >Emitted(107, 26) Source(163, 7) + SourceIndex(0) +8 >Emitted(107, 28) Source(163, 9) + SourceIndex(0) +9 >Emitted(107, 32) Source(163, 13) + SourceIndex(0) +10>Emitted(107, 34) Source(163, 15) + SourceIndex(0) +11>Emitted(107, 41) Source(163, 22) + SourceIndex(0) +12>Emitted(107, 43) Source(163, 24) + SourceIndex(0) +13>Emitted(107, 49) Source(163, 30) + SourceIndex(0) +14>Emitted(107, 51) Source(163, 32) + SourceIndex(0) +15>Emitted(107, 53) Source(163, 34) + SourceIndex(0) +16>Emitted(107, 60) Source(163, 41) + SourceIndex(0) +17>Emitted(107, 62) Source(163, 43) + SourceIndex(0) +18>Emitted(107, 70) Source(163, 51) + SourceIndex(0) +19>Emitted(107, 72) Source(163, 53) + SourceIndex(0) +20>Emitted(107, 81) Source(163, 62) + SourceIndex(0) +21>Emitted(107, 83) Source(163, 64) + SourceIndex(0) +22>Emitted(107, 89) Source(163, 70) + SourceIndex(0) +23>Emitted(107, 91) Source(163, 72) + SourceIndex(0) +24>Emitted(107, 93) Source(163, 74) + SourceIndex(0) +--- +>>> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; _91 < _92.length; _91++) { +1->^^^^ +2 > ^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^^^ +6 > ^^ +7 > ^^^^^^ +8 > ^^ +9 > ^^ +10> ^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^ +15> ^^ +16> ^^^^^^^^ +17> ^^ +18> ^^ +19> ^ +20> ^^ +21> ^^^^^^^^^^^^^^^^ +22> ^^ +23> ^^^^^ +24> ^ +25> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1->, + > +2 > { +3 > name +4 > : +5 > "trimmer" +6 > , +7 > skills +8 > : +9 > { +10> primary +11> : +12> "trimming" +13> , +14> secondary +15> : +16> "edging" +17> } +18> } +19> ] +20> +21> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +22> +23> [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] +24> ) +1->Emitted(108, 5) Source(164, 5) + SourceIndex(0) +2 >Emitted(108, 7) Source(164, 7) + SourceIndex(0) +3 >Emitted(108, 11) Source(164, 11) + SourceIndex(0) +4 >Emitted(108, 13) Source(164, 13) + SourceIndex(0) +5 >Emitted(108, 22) Source(164, 22) + SourceIndex(0) +6 >Emitted(108, 24) Source(164, 24) + SourceIndex(0) +7 >Emitted(108, 30) Source(164, 30) + SourceIndex(0) +8 >Emitted(108, 32) Source(164, 32) + SourceIndex(0) +9 >Emitted(108, 34) Source(164, 34) + SourceIndex(0) +10>Emitted(108, 41) Source(164, 41) + SourceIndex(0) +11>Emitted(108, 43) Source(164, 43) + SourceIndex(0) +12>Emitted(108, 53) Source(164, 53) + SourceIndex(0) +13>Emitted(108, 55) Source(164, 55) + SourceIndex(0) +14>Emitted(108, 64) Source(164, 64) + SourceIndex(0) +15>Emitted(108, 66) Source(164, 66) + SourceIndex(0) +16>Emitted(108, 74) Source(164, 74) + SourceIndex(0) +17>Emitted(108, 76) Source(164, 76) + SourceIndex(0) +18>Emitted(108, 78) Source(164, 78) + SourceIndex(0) +19>Emitted(108, 79) Source(164, 79) + SourceIndex(0) +20>Emitted(108, 81) Source(163, 6) + SourceIndex(0) +21>Emitted(108, 97) Source(164, 79) + SourceIndex(0) +22>Emitted(108, 99) Source(163, 6) + SourceIndex(0) +23>Emitted(108, 104) Source(164, 79) + SourceIndex(0) +24>Emitted(108, 105) Source(164, 80) + SourceIndex(0) +--- +>>> _93 = _92[_91], _94 = _93.name, name = _94 === void 0 ? "noName" : _94, _95 = _93.skills, _96 = _95 === void 0 ? { primary: "noSkill", secondary: "noSkill" } : _95, _97 = _96.primary, primary = _97 === void 0 ? "primary" : _97, _98 = _96.secondary, secondary = _98 === void 0 ? "secondary" : _98; +1->^^^^ +2 > ^^^^^^^^^^^^^^ +3 > ^^ +4 > ^^^^^^^^^^^^^^ +5 > ^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1-> +2 > { + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + > } +3 > +4 > name = "noName" +5 > +6 > name = "noName" +7 > , + > +8 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +9 > +10> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } +11> +12> primary = "primary" +13> +14> primary = "primary" +15> , + > +16> secondary = "secondary" +17> +18> secondary = "secondary" +1->Emitted(109, 5) Source(157, 6) + SourceIndex(0) +2 >Emitted(109, 19) Source(163, 2) + SourceIndex(0) +3 >Emitted(109, 21) Source(158, 5) + SourceIndex(0) +4 >Emitted(109, 35) Source(158, 20) + SourceIndex(0) +5 >Emitted(109, 37) Source(158, 5) + SourceIndex(0) +6 >Emitted(109, 75) Source(158, 20) + SourceIndex(0) +7 >Emitted(109, 77) Source(159, 5) + SourceIndex(0) +8 >Emitted(109, 93) Source(162, 53) + SourceIndex(0) +9 >Emitted(109, 95) Source(159, 5) + SourceIndex(0) +10>Emitted(109, 168) Source(162, 53) + SourceIndex(0) +11>Emitted(109, 170) Source(160, 9) + SourceIndex(0) +12>Emitted(109, 187) Source(160, 28) + SourceIndex(0) +13>Emitted(109, 189) Source(160, 9) + SourceIndex(0) +14>Emitted(109, 231) Source(160, 28) + SourceIndex(0) +15>Emitted(109, 233) Source(161, 9) + SourceIndex(0) +16>Emitted(109, 252) Source(161, 32) + SourceIndex(0) +17>Emitted(109, 254) Source(161, 9) + SourceIndex(0) +18>Emitted(109, 300) Source(161, 32) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(110, 5) Source(165, 5) + SourceIndex(0) +2 >Emitted(110, 12) Source(165, 12) + SourceIndex(0) +3 >Emitted(110, 13) Source(165, 13) + SourceIndex(0) +4 >Emitted(110, 16) Source(165, 16) + SourceIndex(0) +5 >Emitted(110, 17) Source(165, 17) + SourceIndex(0) +6 >Emitted(110, 22) Source(165, 22) + SourceIndex(0) +7 >Emitted(110, 23) Source(165, 23) + SourceIndex(0) +8 >Emitted(110, 24) Source(165, 24) + SourceIndex(0) +--- +>>>} +1 >^ +2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + >} +1 >Emitted(111, 2) Source(166, 2) + SourceIndex(0) +--- +>>>var _a, _d, _g, _j, _k, _l, _m, _q, _r, _s, _t, _w, _x, _y, _z, _1, _4, _7, _9, _10, _11, _12, _15, _16, _17, _18, _21, _22, _23, _24, _26, _27, _28, _31, _32, _33, _36, _37, _38, _40, _41, _42, _43, _44, _45, _48, _49, _50, _51, _52, _53, _56, _57, _58, _59, _60, _61, _63, _64, _65, _68, _69, _70, _73, _74, _75, _77, _78, _79, _80, _81, _82, _85, _86, _87, _88, _89, _90, _93, _94, _95, _96, _97, _98; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols new file mode 100644 index 00000000000..7194270c784 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.symbols @@ -0,0 +1,564 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 9, 17)) + + primary: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 10, 13)) + + secondary: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 11, 24)) + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 24)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 39)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 60)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 77)) + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 34)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 49)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 59)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 78)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 53)) + +function getRobots() { +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 79)) + + return robots; +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 3)) +} + +function getMultiRobots() { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 22, 1)) + + return multiRobots; +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 3)) +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 56)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 67)) + +let name: string, primary: string, secondary: string, skill: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 29, 3)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 29, 17)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 29, 34)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 29, 53)) + +for ({name: nameA = "noName" } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 31, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({name: nameA = "noName" } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 34, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 37, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 37, 36)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 37, 51)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 37, 72)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 37, 89)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 40, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 40, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 40, 47)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) + + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 41, 5)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 41, 25)) +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 44, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 44, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 44, 47)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) + + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 45, 5)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 45, 25)) +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 22, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 48, 6)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 48, 16)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 48, 47)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) + + { primary: "nosKill", secondary: "noSkill" } } of +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 49, 5)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 49, 25)) + + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 50, 20)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 50, 35)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 50, 45)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 50, 64)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 51, 9)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 51, 26)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 51, 36)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 51, 57)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +} + +for ({ name = "noName" } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 55, 6)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ name = "noName" } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 58, 6)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 61, 6)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 61, 30)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 61, 45)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 61, 66)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 61, 83)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 64, 6)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 65, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 66, 28)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 68, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 68, 29)) + +} of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 3)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 72, 6)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 73, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 74, 28)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 76, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 76, 29)) + +} of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 22, 1)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 80, 6)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 81, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 82, 28)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 84, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 84, 29)) + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 85, 7)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 85, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 85, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 85, 51)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 86, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 86, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 86, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 86, 53)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) +} + + +for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 91, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 91, 29)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 67)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 94, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 94, 29)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 67)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 97, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 97, 29)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 67)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 97, 64)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 97, 79)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 97, 100)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 97, 117)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + name: nameA = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 100, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 101, 27)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 102, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 103, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 105, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 105, 29)) + +} of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + name: nameA = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 109, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 110, 27)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 111, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 112, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 114, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 114, 29)) + +} of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 22, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + name: nameA = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 118, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 119, 27)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 120, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 121, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 36)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 123, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 123, 29)) + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 124, 21)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 124, 36)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 124, 46)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 124, 65)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 125, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 125, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 125, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 125, 53)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} + +for ({ name = "noName", skill = "noSkill" } of robots) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 129, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 129, 23)) +>robots : Symbol(robots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 16, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ name = "noName", skill = "noSkill" } of getRobots()) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 132, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 132, 23)) +>getRobots : Symbol(getRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 18, 79)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 135, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 135, 23)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 135, 50)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 135, 65)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 135, 86)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 135, 103)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + name = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 138, 6)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 139, 20)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 140, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 141, 28)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 143, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 143, 29)) + +} of multiRobots) { +>multiRobots : Symbol(multiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 17, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + name = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 147, 6)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 148, 20)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 149, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 150, 28)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 152, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 152, 29)) + +} of getMultiRobots()) { +>getMultiRobots : Symbol(getMultiRobots, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 22, 1)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} +for ({ + name = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 156, 6)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 157, 20)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 158, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 159, 28)) + + } = { primary: "noSkill", secondary: "noSkill" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 161, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 161, 29)) + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 162, 7)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 162, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 162, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 162, 51)) + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 163, 5)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 163, 22)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 163, 32)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 163, 53)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts, 28, 3)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types new file mode 100644 index 00000000000..fe630aafccc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.types @@ -0,0 +1,829 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary: string; secondary: string; } + + primary: string; +>primary : string + + secondary: string; +>secondary : string + + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +>robots : Robot[] +>Robot : Robot +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>multiRobots : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + +function getRobots() { +>getRobots : () => Robot[] + + return robots; +>robots : Robot[] +} + +function getMultiRobots() { +>getMultiRobots : () => MultiRobot[] + + return multiRobots; +>multiRobots : MultiRobot[] +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : string +>primaryA : string +>secondaryA : string +>i : number +>skillA : string + +let name: string, primary: string, secondary: string, skill: string; +>name : string +>primary : string +>secondary : string +>skill : string + +for ({name: nameA = "noName" } of robots) { +>{name: nameA = "noName" } : { name: string; } +>name : Robot +>nameA = "noName" : string +>nameA : string +>"noName" : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName" } of getRobots()) { +>{name: nameA = "noName" } : { name: string; } +>name : Robot +>nameA = "noName" : string +>nameA : string +>"noName" : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{name: nameA = "noName" } : { name: string; } +>name : { name: string; skill: string; } +>nameA = "noName" : string +>nameA : string +>"noName" : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills: { primary?: string; secondary?: string; }; } +>skills : MultiRobot +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { +>{ primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"nosKill" : string +>secondary : string +>"noSkill" : string +>multiRobots : MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills: { primary?: string; secondary?: string; }; } +>skills : MultiRobot +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { +>{ primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"nosKill" : string +>secondary : string +>"noSkill" : string +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } } : { skills: { primary?: string; secondary?: string; }; } +>skills : MultiRobot +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + { primary: "nosKill", secondary: "noSkill" } } of +>{ primary: "nosKill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"nosKill" : string +>secondary : string +>"noSkill" : string + + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for ({ name = "noName" } of robots) { +>{ name = "noName" } : { name: string; } +>name : Robot +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName" } of getRobots()) { +>{ name = "noName" } : { name: string; } +>name : Robot +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{ name = "noName" } : { name: string; } +>name : { name: string; skill: string; } +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills: { primary?: string; secondary?: string; }; } + + skills: { +>skills : MultiRobot +>{ primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of multiRobots) { +>multiRobots : MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills: { primary?: string; secondary?: string; }; } + + skills: { +>skills : MultiRobot +>{ primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of getMultiRobots()) { +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { skills: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { name: string; skills: { primary: string; secondary: string; }; } +>{ primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + + +for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { +>{name: nameA = "noName", skill: skillA = "noSkill" } : { name: string; skill: string; } +>name : Robot +>nameA = "noName" : string +>nameA : string +>"noName" : string +>skill : Robot +>skillA = "noSkill" : string +>skillA : string +>"noSkill" : string +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { +>{name: nameA = "noName", skill: skillA = "noSkill" } : { name: string; skill: string; } +>name : Robot +>nameA = "noName" : string +>nameA : string +>"noName" : string +>skill : Robot +>skillA = "noSkill" : string +>skillA : string +>"noSkill" : string +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{name: nameA = "noName", skill: skillA = "noSkill" } : { name: string; skill: string; } +>name : { name: string; skill: string; } +>nameA = "noName" : string +>nameA : string +>"noName" : string +>skill : { name: string; skill: string; } +>skillA = "noSkill" : string +>skillA : string +>"noSkill" : string +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } + + name: nameA = "noName", +>name : MultiRobot +>nameA = "noName" : string +>nameA : string +>"noName" : string + + skills: { +>skills : MultiRobot +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of multiRobots) { +>multiRobots : MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } + + name: nameA = "noName", +>name : MultiRobot +>nameA = "noName" : string +>nameA : string +>"noName" : string + + skills: { +>skills : MultiRobot +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of getMultiRobots()) { +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } + + name: nameA = "noName", +>name : MultiRobot +>nameA = "noName" : string +>nameA : string +>"noName" : string + + skills: { +>skills : MultiRobot +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : MultiRobot[] +>MultiRobot : MultiRobot +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} + +for ({ name = "noName", skill = "noSkill" } of robots) { +>{ name = "noName", skill = "noSkill" } : { name: string; skill: string; } +>name : Robot +>skill : Robot +>robots : Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName", skill = "noSkill" } of getRobots()) { +>{ name = "noName", skill = "noSkill" } : { name: string; skill: string; } +>name : Robot +>skill : Robot +>getRobots() : Robot[] +>getRobots : () => Robot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +>{ name = "noName", skill = "noSkill" } : { name: string; skill: string; } +>name : { name: string; skill: string; } +>skill : { name: string; skill: string; } +>[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] : { name: string; skill: string; }[] +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } + + name = "noName", +>name : MultiRobot + + skills: { +>skills : MultiRobot +>{ primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of multiRobots) { +>multiRobots : MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } + + name = "noName", +>name : MultiRobot + + skills: { +>skills : MultiRobot +>{ primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of getMultiRobots()) { +>getMultiRobots() : MultiRobot[] +>getMultiRobots : () => MultiRobot[] + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" }} : { name: string; skills: { primary?: string; secondary?: string; }; } + + name = "noName", +>name : { name: string; skills: { primary: string; secondary: string; }; } + + skills: { +>skills : { name: string; skills: { primary: string; secondary: string; }; } +>{ primary = "primary", secondary = "secondary" } = { primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "noSkill", secondary: "noSkill" } +>{ primary: "noSkill", secondary: "noSkill" } : { primary?: string; secondary?: string; } +>primary : string +>"noSkill" : string +>secondary : string +>"noSkill" : string + +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +>[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] : { name: string; skills: { primary: string; secondary: string; }; }[] +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..a619fc1c42f --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues.ts @@ -0,0 +1,105 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +for (let [, nameA = "noName"] of robots) { + console.log(nameA); +} +for (let [, nameA = "noName"] of getRobots()) { + console.log(nameA); +} +for (let [, nameA = "noName"] of [robotA, robotB]) { + console.log(nameA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for (let [numberB = -1] of robots) { + console.log(numberB); +} +for (let [numberB = -1] of getRobots()) { + console.log(numberB); +} +for (let [numberB = -1] of [robotA, robotB]) { + console.log(numberB); +} +for (let [nameB = "noName"] of multiRobots) { + console.log(nameB); +} +for (let [nameB = "noName"] of getMultiRobots()) { + console.log(nameB); +} +for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + console.log(nameA2); +} +for (let [nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(nameMA); +} +for (let [nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(nameMA); +} +for (let [nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for (let [numberA3 = -1, ...robotAInfo] of robots) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..ac0c8774567 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfArrayBindingPatternDefaultValues2.ts @@ -0,0 +1,110 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +let robotB: Robot = [2, "trimmer", "trimming"]; +let robots = [robotA, robotB]; +function getRobots() { + return robots; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +let multiRobots = [multiRobotA, multiRobotB]; +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + +for ([, nameA = "noName"] of robots) { + console.log(nameA); +} +for ([, nameA = "noName"] of getRobots()) { + console.log(nameA); +} +for ([, nameA = "noName"] of [robotA, robotB]) { + console.log(nameA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(primarySkillA); +} + +for ([numberB = -1] of robots) { + console.log(numberB); +} +for ([numberB = -1] of getRobots()) { + console.log(numberB); +} +for ([numberB = -1] of [robotA, robotB]) { + console.log(numberB); +} +for ([nameB = "noName"] of multiRobots) { + console.log(nameB); +} +for ([nameB = "noName"] of getMultiRobots()) { + console.log(nameB); +} +for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { + console.log(nameB); +} + +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + console.log(nameA2); +} +for ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of multiRobots) { + console.log(nameMA); +} +for ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of getMultiRobots()) { + console.log(nameMA); +} +for ([nameMA = "noName", [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + console.log(nameMA); +} + +for ([numberA3 = -1, ...robotAInfo] of robots) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] of getRobots()) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + console.log(numberA3); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..d8f88189c01 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues.ts @@ -0,0 +1,90 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +for (let {name: nameA = "noName" } of robots) { + console.log(nameA); +} +for (let {name: nameA = "noName" } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + console.log(primaryA); +} +for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..01d2f6133a3 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForOfObjectBindingPatternDefaultValues2.ts @@ -0,0 +1,167 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary: string; + secondary: string; + }; +} + +let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + +function getRobots() { + return robots; +} + +function getMultiRobots() { + return multiRobots; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({name: nameA = "noName" } of robots) { + console.log(nameA); +} +for ({name: nameA = "noName" } of getRobots()) { + console.log(nameA); +} +for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + console.log(primaryA); +} +for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + { primary: "nosKill", secondary: "noSkill" } } of + [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + +for ({ name = "noName" } of robots) { + console.log(nameA); +} +for ({ name = "noName" } of getRobots()) { + console.log(nameA); +} +for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(primaryA); +} + + +for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} + +for ({ name = "noName", skill = "noSkill" } of robots) { + console.log(nameA); +} +for ({ name = "noName", skill = "noSkill" } of getRobots()) { + console.log(nameA); +} +for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of multiRobots) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of getMultiRobots()) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "noSkill", secondary: "noSkill" } +} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + console.log(nameA); +} \ No newline at end of file From cee3388a295ce4e7710f65f387f9c4b87ea5e442 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 11 Dec 2015 14:42:25 -0800 Subject: [PATCH 064/164] Test cases for destructuring with default values in "for" --- ...ringForArrayBindingPatternDefaultValues.js | 184 + ...ForArrayBindingPatternDefaultValues.js.map | 2 + ...yBindingPatternDefaultValues.sourcemap.txt | 2752 +++++++++++++ ...orArrayBindingPatternDefaultValues.symbols | 367 ++ ...gForArrayBindingPatternDefaultValues.types | 599 +++ ...ingForArrayBindingPatternDefaultValues2.js | 196 + ...orArrayBindingPatternDefaultValues2.js.map | 2 + ...BindingPatternDefaultValues2.sourcemap.txt | 3030 ++++++++++++++ ...rArrayBindingPatternDefaultValues2.symbols | 391 ++ ...ForArrayBindingPatternDefaultValues2.types | 752 ++++ ...ingForObjectBindingPatternDefaultValues.js | 145 + ...orObjectBindingPatternDefaultValues.js.map | 2 + ...tBindingPatternDefaultValues.sourcemap.txt | 1740 ++++++++ ...rObjectBindingPatternDefaultValues.symbols | 350 ++ ...ForObjectBindingPatternDefaultValues.types | 484 +++ ...ngForObjectBindingPatternDefaultValues2.js | 265 ++ ...rObjectBindingPatternDefaultValues2.js.map | 2 + ...BindingPatternDefaultValues2.sourcemap.txt | 3589 +++++++++++++++++ ...ObjectBindingPatternDefaultValues2.symbols | 628 +++ ...orObjectBindingPatternDefaultValues2.types | 1020 +++++ ...ringForArrayBindingPatternDefaultValues.ts | 109 + ...ingForArrayBindingPatternDefaultValues2.ts | 115 + ...ingForObjectBindingPatternDefaultValues.ts | 98 + ...ngForObjectBindingPatternDefaultValues2.ts | 175 + 24 files changed, 16997 insertions(+) create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.sourcemap.txt create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols create mode 100644 tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts create mode 100644 tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js new file mode 100644 index 00000000000..24701d01b08 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js @@ -0,0 +1,184 @@ +//// [sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, string[]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let + [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] + ] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} + +//// [sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js] +var robotA = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} +for (var _a = robotA[1], nameA = _a === void 0 ? "name" : _a, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _b = getRobot(), _c = _b[1], nameA = _c === void 0 ? "name" : _c, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _d = [2, "trimmer", "trimming"], _e = _d[1], nameA = _e === void 0 ? "name" : _e, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _f = multiRobotA[1], _g = _f === void 0 ? ["none", "none"] : _f, _h = _g[0], primarySkillA = _h === void 0 ? "primary" : _h, _j = _g[1], secondarySkillA = _j === void 0 ? "secondary" : _j, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (var _k = getMultiRobot(), _l = _k[1], _m = _l === void 0 ? ["none", "none"] : _l, _o = _m[0], primarySkillA = _o === void 0 ? "primary" : _o, _p = _m[1], secondarySkillA = _p === void 0 ? "secondary" : _p, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (var _q = ["trimmer", ["trimming", "edging"]], _r = _q[1], _s = _r === void 0 ? ["none", "none"] : _r, _t = _s[0], primarySkillA = _t === void 0 ? "primary" : _t, _u = _s[1], secondarySkillA = _u === void 0 ? "secondary" : _u, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (var _v = robotA[0], numberB = _v === void 0 ? -1 : _v, i = 0; i < 1; i++) { + console.log(numberB); +} +for (var _w = getRobot()[0], numberB = _w === void 0 ? -1 : _w, i = 0; i < 1; i++) { + console.log(numberB); +} +for (var _x = [2, "trimmer", "trimming"][0], numberB = _x === void 0 ? -1 : _x, i = 0; i < 1; i++) { + console.log(numberB); +} +for (var _y = multiRobotA[0], nameB = _y === void 0 ? "name" : _y, i = 0; i < 1; i++) { + console.log(nameB); +} +for (var _z = getMultiRobot()[0], nameB = _z === void 0 ? "name" : _z, i = 0; i < 1; i++) { + console.log(nameB); +} +for (var _0 = ["trimmer", ["trimming", "edging"]][0], nameB = _0 === void 0 ? "name" : _0, i = 0; i < 1; i++) { + console.log(nameB); +} +for (var _1 = robotA[0], numberA2 = _1 === void 0 ? -1 : _1, _2 = robotA[1], nameA2 = _2 === void 0 ? "name" : _2, _3 = robotA[2], skillA2 = _3 === void 0 ? "skill" : _3, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var _4 = getRobot(), _5 = _4[0], numberA2 = _5 === void 0 ? -1 : _5, _6 = _4[1], nameA2 = _6 === void 0 ? "name" : _6, _7 = _4[2], skillA2 = _7 === void 0 ? "skill" : _7, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var _8 = [2, "trimmer", "trimming"], _9 = _8[0], numberA2 = _9 === void 0 ? -1 : _9, _10 = _8[1], nameA2 = _10 === void 0 ? "name" : _10, _11 = _8[2], skillA2 = _11 === void 0 ? "skill" : _11, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var _12 = multiRobotA[0], nameMA = _12 === void 0 ? "noName" : _12, _13 = multiRobotA[1], _14 = _13 === void 0 ? ["none", "none"] : _13, _15 = _14[0], primarySkillA = _15 === void 0 ? "primary" : _15, _16 = _14[1], secondarySkillA = _16 === void 0 ? "secondary" : _16, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (var _17 = getMultiRobot(), _18 = _17[0], nameMA = _18 === void 0 ? "noName" : _18, _19 = _17[1], _20 = _19 === void 0 ? ["none", "none"] : _19, _21 = _20[0], primarySkillA = _21 === void 0 ? "primary" : _21, _22 = _20[1], secondarySkillA = _22 === void 0 ? "secondary" : _22, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (var _23 = ["trimmer", ["trimming", "edging"]], _24 = _23[0], nameMA = _24 === void 0 ? "noName" : _24, _25 = _23[1], _26 = _25 === void 0 ? ["none", "none"] : _25, _27 = _26[0], primarySkillA = _27 === void 0 ? "primary" : _27, _28 = _26[1], secondarySkillA = _28 === void 0 ? "secondary" : _28, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (var _29 = robotA[0], numberA3 = _29 === void 0 ? -1 : _29, robotAInfo = robotA.slice(1), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (var _30 = getRobot(), _31 = _30[0], numberA3 = _31 === void 0 ? -1 : _31, robotAInfo = _30.slice(1), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (var _32 = [2, "trimmer", "trimming"], _33 = _32[0], numberA3 = _33 === void 0 ? -1 : _33, robotAInfo = _32.slice(1), i = 0; i < 1; i++) { + console.log(numberA3); +} +//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..28053eaf603 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..764825e68a2 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,2752 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, string[]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> return robotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robotA +5 > ; +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +3 >Emitted(3, 12) Source(9, 12) + SourceIndex(0) +4 >Emitted(3, 18) Source(9, 18) + SourceIndex(0) +5 >Emitted(3, 19) Source(9, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 2) Source(10, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 16) Source(12, 16) + SourceIndex(0) +4 >Emitted(5, 19) Source(12, 38) + SourceIndex(0) +5 >Emitted(5, 20) Source(12, 39) + SourceIndex(0) +6 >Emitted(5, 27) Source(12, 46) + SourceIndex(0) +7 >Emitted(5, 29) Source(12, 48) + SourceIndex(0) +8 >Emitted(5, 30) Source(12, 49) + SourceIndex(0) +9 >Emitted(5, 38) Source(12, 57) + SourceIndex(0) +10>Emitted(5, 40) Source(12, 59) + SourceIndex(0) +11>Emitted(5, 42) Source(12, 61) + SourceIndex(0) +12>Emitted(5, 43) Source(12, 62) + SourceIndex(0) +13>Emitted(5, 44) Source(12, 63) + SourceIndex(0) +14>Emitted(5, 45) Source(12, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 16) Source(13, 16) + SourceIndex(0) +4 >Emitted(6, 19) Source(13, 38) + SourceIndex(0) +5 >Emitted(6, 20) Source(13, 39) + SourceIndex(0) +6 >Emitted(6, 29) Source(13, 48) + SourceIndex(0) +7 >Emitted(6, 31) Source(13, 50) + SourceIndex(0) +8 >Emitted(6, 32) Source(13, 51) + SourceIndex(0) +9 >Emitted(6, 42) Source(13, 61) + SourceIndex(0) +10>Emitted(6, 44) Source(13, 63) + SourceIndex(0) +11>Emitted(6, 52) Source(13, 71) + SourceIndex(0) +12>Emitted(6, 53) Source(13, 72) + SourceIndex(0) +13>Emitted(6, 54) Source(13, 73) + SourceIndex(0) +14>Emitted(6, 55) Source(13, 74) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(7, 1) Source(14, 1) + SourceIndex(0) +--- +>>> return multiRobotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobotA +5 > ; +1->Emitted(8, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(15, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(15, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(15, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(16, 2) + SourceIndex(0) +--- +>>>for (var _a = robotA[1], nameA = _a === void 0 ? "name" : _a, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > + > +2 >for +3 > +4 > (let [, +5 > nameA ="name" +6 > +7 > nameA ="name" +8 > ] = robotA, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(10, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(10, 4) Source(18, 4) + SourceIndex(0) +3 >Emitted(10, 5) Source(18, 5) + SourceIndex(0) +4 >Emitted(10, 6) Source(18, 13) + SourceIndex(0) +5 >Emitted(10, 24) Source(18, 26) + SourceIndex(0) +6 >Emitted(10, 26) Source(18, 13) + SourceIndex(0) +7 >Emitted(10, 61) Source(18, 26) + SourceIndex(0) +8 >Emitted(10, 63) Source(18, 38) + SourceIndex(0) +9 >Emitted(10, 64) Source(18, 39) + SourceIndex(0) +10>Emitted(10, 67) Source(18, 42) + SourceIndex(0) +11>Emitted(10, 68) Source(18, 43) + SourceIndex(0) +12>Emitted(10, 70) Source(18, 45) + SourceIndex(0) +13>Emitted(10, 71) Source(18, 46) + SourceIndex(0) +14>Emitted(10, 74) Source(18, 49) + SourceIndex(0) +15>Emitted(10, 75) Source(18, 50) + SourceIndex(0) +16>Emitted(10, 77) Source(18, 52) + SourceIndex(0) +17>Emitted(10, 78) Source(18, 53) + SourceIndex(0) +18>Emitted(10, 80) Source(18, 55) + SourceIndex(0) +19>Emitted(10, 82) Source(18, 57) + SourceIndex(0) +20>Emitted(10, 83) Source(18, 58) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(11, 5) Source(19, 5) + SourceIndex(0) +2 >Emitted(11, 12) Source(19, 12) + SourceIndex(0) +3 >Emitted(11, 13) Source(19, 13) + SourceIndex(0) +4 >Emitted(11, 16) Source(19, 16) + SourceIndex(0) +5 >Emitted(11, 17) Source(19, 17) + SourceIndex(0) +6 >Emitted(11, 22) Source(19, 22) + SourceIndex(0) +7 >Emitted(11, 23) Source(19, 23) + SourceIndex(0) +8 >Emitted(11, 24) Source(19, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(12, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(12, 2) Source(20, 2) + SourceIndex(0) +--- +>>>for (var _b = getRobot(), _c = _b[1], nameA = _c === void 0 ? "name" : _c, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^ +13> ^^^ +14> ^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^ +22> ^^ +23> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [, nameA = "name"] = getRobot() +7 > +8 > nameA = "name" +9 > +10> nameA = "name" +11> ] = getRobot(), +12> i +13> = +14> 0 +15> ; +16> i +17> < +18> 1 +19> ; +20> i +21> ++ +22> ) +23> { +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 4) Source(21, 4) + SourceIndex(0) +3 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +4 >Emitted(13, 6) Source(21, 6) + SourceIndex(0) +5 >Emitted(13, 10) Source(21, 6) + SourceIndex(0) +6 >Emitted(13, 25) Source(21, 41) + SourceIndex(0) +7 >Emitted(13, 27) Source(21, 13) + SourceIndex(0) +8 >Emitted(13, 37) Source(21, 27) + SourceIndex(0) +9 >Emitted(13, 39) Source(21, 13) + SourceIndex(0) +10>Emitted(13, 74) Source(21, 27) + SourceIndex(0) +11>Emitted(13, 76) Source(21, 43) + SourceIndex(0) +12>Emitted(13, 77) Source(21, 44) + SourceIndex(0) +13>Emitted(13, 80) Source(21, 47) + SourceIndex(0) +14>Emitted(13, 81) Source(21, 48) + SourceIndex(0) +15>Emitted(13, 83) Source(21, 50) + SourceIndex(0) +16>Emitted(13, 84) Source(21, 51) + SourceIndex(0) +17>Emitted(13, 87) Source(21, 54) + SourceIndex(0) +18>Emitted(13, 88) Source(21, 55) + SourceIndex(0) +19>Emitted(13, 90) Source(21, 57) + SourceIndex(0) +20>Emitted(13, 91) Source(21, 58) + SourceIndex(0) +21>Emitted(13, 93) Source(21, 60) + SourceIndex(0) +22>Emitted(13, 95) Source(21, 62) + SourceIndex(0) +23>Emitted(13, 96) Source(21, 63) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +2 >Emitted(14, 12) Source(22, 12) + SourceIndex(0) +3 >Emitted(14, 13) Source(22, 13) + SourceIndex(0) +4 >Emitted(14, 16) Source(22, 16) + SourceIndex(0) +5 >Emitted(14, 17) Source(22, 17) + SourceIndex(0) +6 >Emitted(14, 22) Source(22, 22) + SourceIndex(0) +7 >Emitted(14, 23) Source(22, 23) + SourceIndex(0) +8 >Emitted(14, 24) Source(22, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(15, 1) Source(23, 1) + SourceIndex(0) +2 >Emitted(15, 2) Source(23, 2) + SourceIndex(0) +--- +>>>for (var _d = [2, "trimmer", "trimming"], _e = _d[1], nameA = _e === void 0 ? "name" : _e, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^ +13> ^^^ +14> ^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^ +22> ^^ +23> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [, nameA = "name"] = [2, "trimmer", "trimming"] +7 > +8 > nameA = "name" +9 > +10> nameA = "name" +11> ] = [2, "trimmer", "trimming"], +12> i +13> = +14> 0 +15> ; +16> i +17> < +18> 1 +19> ; +20> i +21> ++ +22> ) +23> { +1->Emitted(16, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(16, 4) Source(24, 4) + SourceIndex(0) +3 >Emitted(16, 5) Source(24, 5) + SourceIndex(0) +4 >Emitted(16, 6) Source(24, 6) + SourceIndex(0) +5 >Emitted(16, 10) Source(24, 6) + SourceIndex(0) +6 >Emitted(16, 41) Source(24, 57) + SourceIndex(0) +7 >Emitted(16, 43) Source(24, 13) + SourceIndex(0) +8 >Emitted(16, 53) Source(24, 27) + SourceIndex(0) +9 >Emitted(16, 55) Source(24, 13) + SourceIndex(0) +10>Emitted(16, 90) Source(24, 27) + SourceIndex(0) +11>Emitted(16, 92) Source(24, 59) + SourceIndex(0) +12>Emitted(16, 93) Source(24, 60) + SourceIndex(0) +13>Emitted(16, 96) Source(24, 63) + SourceIndex(0) +14>Emitted(16, 97) Source(24, 64) + SourceIndex(0) +15>Emitted(16, 99) Source(24, 66) + SourceIndex(0) +16>Emitted(16, 100) Source(24, 67) + SourceIndex(0) +17>Emitted(16, 103) Source(24, 70) + SourceIndex(0) +18>Emitted(16, 104) Source(24, 71) + SourceIndex(0) +19>Emitted(16, 106) Source(24, 73) + SourceIndex(0) +20>Emitted(16, 107) Source(24, 74) + SourceIndex(0) +21>Emitted(16, 109) Source(24, 76) + SourceIndex(0) +22>Emitted(16, 111) Source(24, 78) + SourceIndex(0) +23>Emitted(16, 112) Source(24, 79) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(17, 5) Source(25, 5) + SourceIndex(0) +2 >Emitted(17, 12) Source(25, 12) + SourceIndex(0) +3 >Emitted(17, 13) Source(25, 13) + SourceIndex(0) +4 >Emitted(17, 16) Source(25, 16) + SourceIndex(0) +5 >Emitted(17, 17) Source(25, 17) + SourceIndex(0) +6 >Emitted(17, 22) Source(25, 22) + SourceIndex(0) +7 >Emitted(17, 23) Source(25, 23) + SourceIndex(0) +8 >Emitted(17, 24) Source(25, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(18, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(18, 2) Source(26, 2) + SourceIndex(0) +--- +>>>for (var _f = multiRobotA[1], _g = _f === void 0 ? ["none", "none"] : _f, _h = _g[0], primarySkillA = _h === void 0 ? "primary" : _h, _j = _g[1], secondarySkillA = _j === void 0 ? "secondary" : _j, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > (let [, +5 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +6 > +7 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +8 > +9 > primarySkillA = "primary" +10> +11> primarySkillA = "primary" +12> , + > +13> secondarySkillA = "secondary" +14> +15> secondarySkillA = "secondary" +16> + > ] = ["none", "none"]] = multiRobotA, +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(19, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(19, 4) Source(27, 4) + SourceIndex(0) +3 >Emitted(19, 5) Source(27, 5) + SourceIndex(0) +4 >Emitted(19, 6) Source(27, 13) + SourceIndex(0) +5 >Emitted(19, 29) Source(30, 21) + SourceIndex(0) +6 >Emitted(19, 31) Source(27, 13) + SourceIndex(0) +7 >Emitted(19, 73) Source(30, 21) + SourceIndex(0) +8 >Emitted(19, 75) Source(28, 5) + SourceIndex(0) +9 >Emitted(19, 85) Source(28, 30) + SourceIndex(0) +10>Emitted(19, 87) Source(28, 5) + SourceIndex(0) +11>Emitted(19, 133) Source(28, 30) + SourceIndex(0) +12>Emitted(19, 135) Source(29, 5) + SourceIndex(0) +13>Emitted(19, 145) Source(29, 34) + SourceIndex(0) +14>Emitted(19, 147) Source(29, 5) + SourceIndex(0) +15>Emitted(19, 197) Source(29, 34) + SourceIndex(0) +16>Emitted(19, 199) Source(30, 38) + SourceIndex(0) +17>Emitted(19, 200) Source(30, 39) + SourceIndex(0) +18>Emitted(19, 203) Source(30, 42) + SourceIndex(0) +19>Emitted(19, 204) Source(30, 43) + SourceIndex(0) +20>Emitted(19, 206) Source(30, 45) + SourceIndex(0) +21>Emitted(19, 207) Source(30, 46) + SourceIndex(0) +22>Emitted(19, 210) Source(30, 49) + SourceIndex(0) +23>Emitted(19, 211) Source(30, 50) + SourceIndex(0) +24>Emitted(19, 213) Source(30, 52) + SourceIndex(0) +25>Emitted(19, 214) Source(30, 53) + SourceIndex(0) +26>Emitted(19, 216) Source(30, 55) + SourceIndex(0) +27>Emitted(19, 218) Source(30, 57) + SourceIndex(0) +28>Emitted(19, 219) Source(30, 58) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(20, 5) Source(31, 5) + SourceIndex(0) +2 >Emitted(20, 12) Source(31, 12) + SourceIndex(0) +3 >Emitted(20, 13) Source(31, 13) + SourceIndex(0) +4 >Emitted(20, 16) Source(31, 16) + SourceIndex(0) +5 >Emitted(20, 17) Source(31, 17) + SourceIndex(0) +6 >Emitted(20, 30) Source(31, 30) + SourceIndex(0) +7 >Emitted(20, 31) Source(31, 31) + SourceIndex(0) +8 >Emitted(20, 32) Source(31, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(21, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(21, 2) Source(32, 2) + SourceIndex(0) +--- +>>>for (var _k = getMultiRobot(), _l = _k[1], _m = _l === void 0 ? ["none", "none"] : _l, _o = _m[0], primarySkillA = _o === void 0 ? "primary" : _o, _p = _m[1], secondarySkillA = _p === void 0 ? "secondary" : _p, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^ +30> ^^ +31> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"]] = getMultiRobot() +7 > +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +19> + > ] = ["none", "none"]] = getMultiRobot(), +20> i +21> = +22> 0 +23> ; +24> i +25> < +26> 1 +27> ; +28> i +29> ++ +30> ) +31> { +1->Emitted(22, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(22, 4) Source(33, 4) + SourceIndex(0) +3 >Emitted(22, 5) Source(33, 5) + SourceIndex(0) +4 >Emitted(22, 6) Source(33, 6) + SourceIndex(0) +5 >Emitted(22, 10) Source(33, 6) + SourceIndex(0) +6 >Emitted(22, 30) Source(36, 40) + SourceIndex(0) +7 >Emitted(22, 32) Source(33, 13) + SourceIndex(0) +8 >Emitted(22, 42) Source(36, 21) + SourceIndex(0) +9 >Emitted(22, 44) Source(33, 13) + SourceIndex(0) +10>Emitted(22, 86) Source(36, 21) + SourceIndex(0) +11>Emitted(22, 88) Source(34, 5) + SourceIndex(0) +12>Emitted(22, 98) Source(34, 30) + SourceIndex(0) +13>Emitted(22, 100) Source(34, 5) + SourceIndex(0) +14>Emitted(22, 146) Source(34, 30) + SourceIndex(0) +15>Emitted(22, 148) Source(35, 5) + SourceIndex(0) +16>Emitted(22, 158) Source(35, 34) + SourceIndex(0) +17>Emitted(22, 160) Source(35, 5) + SourceIndex(0) +18>Emitted(22, 210) Source(35, 34) + SourceIndex(0) +19>Emitted(22, 212) Source(36, 42) + SourceIndex(0) +20>Emitted(22, 213) Source(36, 43) + SourceIndex(0) +21>Emitted(22, 216) Source(36, 46) + SourceIndex(0) +22>Emitted(22, 217) Source(36, 47) + SourceIndex(0) +23>Emitted(22, 219) Source(36, 49) + SourceIndex(0) +24>Emitted(22, 220) Source(36, 50) + SourceIndex(0) +25>Emitted(22, 223) Source(36, 53) + SourceIndex(0) +26>Emitted(22, 224) Source(36, 54) + SourceIndex(0) +27>Emitted(22, 226) Source(36, 56) + SourceIndex(0) +28>Emitted(22, 227) Source(36, 57) + SourceIndex(0) +29>Emitted(22, 229) Source(36, 59) + SourceIndex(0) +30>Emitted(22, 231) Source(36, 61) + SourceIndex(0) +31>Emitted(22, 232) Source(36, 62) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(23, 5) Source(37, 5) + SourceIndex(0) +2 >Emitted(23, 12) Source(37, 12) + SourceIndex(0) +3 >Emitted(23, 13) Source(37, 13) + SourceIndex(0) +4 >Emitted(23, 16) Source(37, 16) + SourceIndex(0) +5 >Emitted(23, 17) Source(37, 17) + SourceIndex(0) +6 >Emitted(23, 30) Source(37, 30) + SourceIndex(0) +7 >Emitted(23, 31) Source(37, 31) + SourceIndex(0) +8 >Emitted(23, 32) Source(37, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(24, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(24, 2) Source(38, 2) + SourceIndex(0) +--- +>>>for (var _q = ["trimmer", ["trimming", "edging"]], _r = _q[1], _s = _r === void 0 ? ["none", "none"] : _r, _t = _s[0], primarySkillA = _t === void 0 ? "primary" : _t, _u = _s[1], secondarySkillA = _u === void 0 ? "secondary" : _u, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^ +30> ^^ +31> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]] +7 > +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +19> + > ] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], +20> i +21> = +22> 0 +23> ; +24> i +25> < +26> 1 +27> ; +28> i +29> ++ +30> ) +31> { +1->Emitted(25, 1) Source(39, 1) + SourceIndex(0) +2 >Emitted(25, 4) Source(39, 4) + SourceIndex(0) +3 >Emitted(25, 5) Source(39, 5) + SourceIndex(0) +4 >Emitted(25, 6) Source(39, 6) + SourceIndex(0) +5 >Emitted(25, 10) Source(39, 6) + SourceIndex(0) +6 >Emitted(25, 50) Source(42, 60) + SourceIndex(0) +7 >Emitted(25, 52) Source(39, 13) + SourceIndex(0) +8 >Emitted(25, 62) Source(42, 21) + SourceIndex(0) +9 >Emitted(25, 64) Source(39, 13) + SourceIndex(0) +10>Emitted(25, 106) Source(42, 21) + SourceIndex(0) +11>Emitted(25, 108) Source(40, 5) + SourceIndex(0) +12>Emitted(25, 118) Source(40, 30) + SourceIndex(0) +13>Emitted(25, 120) Source(40, 5) + SourceIndex(0) +14>Emitted(25, 166) Source(40, 30) + SourceIndex(0) +15>Emitted(25, 168) Source(41, 5) + SourceIndex(0) +16>Emitted(25, 178) Source(41, 34) + SourceIndex(0) +17>Emitted(25, 180) Source(41, 5) + SourceIndex(0) +18>Emitted(25, 230) Source(41, 34) + SourceIndex(0) +19>Emitted(25, 232) Source(42, 62) + SourceIndex(0) +20>Emitted(25, 233) Source(42, 63) + SourceIndex(0) +21>Emitted(25, 236) Source(42, 66) + SourceIndex(0) +22>Emitted(25, 237) Source(42, 67) + SourceIndex(0) +23>Emitted(25, 239) Source(42, 69) + SourceIndex(0) +24>Emitted(25, 240) Source(42, 70) + SourceIndex(0) +25>Emitted(25, 243) Source(42, 73) + SourceIndex(0) +26>Emitted(25, 244) Source(42, 74) + SourceIndex(0) +27>Emitted(25, 246) Source(42, 76) + SourceIndex(0) +28>Emitted(25, 247) Source(42, 77) + SourceIndex(0) +29>Emitted(25, 249) Source(42, 79) + SourceIndex(0) +30>Emitted(25, 251) Source(42, 81) + SourceIndex(0) +31>Emitted(25, 252) Source(42, 82) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(26, 5) Source(43, 5) + SourceIndex(0) +2 >Emitted(26, 12) Source(43, 12) + SourceIndex(0) +3 >Emitted(26, 13) Source(43, 13) + SourceIndex(0) +4 >Emitted(26, 16) Source(43, 16) + SourceIndex(0) +5 >Emitted(26, 17) Source(43, 17) + SourceIndex(0) +6 >Emitted(26, 30) Source(43, 30) + SourceIndex(0) +7 >Emitted(26, 31) Source(43, 31) + SourceIndex(0) +8 >Emitted(26, 32) Source(43, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(27, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(27, 2) Source(44, 2) + SourceIndex(0) +--- +>>>for (var _v = robotA[0], numberB = _v === void 0 ? -1 : _v, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > + > +2 >for +3 > +4 > (let [ +5 > numberB = -1 +6 > +7 > numberB = -1 +8 > ] = robotA, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(28, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(28, 4) Source(46, 4) + SourceIndex(0) +3 >Emitted(28, 5) Source(46, 5) + SourceIndex(0) +4 >Emitted(28, 6) Source(46, 11) + SourceIndex(0) +5 >Emitted(28, 24) Source(46, 23) + SourceIndex(0) +6 >Emitted(28, 26) Source(46, 11) + SourceIndex(0) +7 >Emitted(28, 59) Source(46, 23) + SourceIndex(0) +8 >Emitted(28, 61) Source(46, 35) + SourceIndex(0) +9 >Emitted(28, 62) Source(46, 36) + SourceIndex(0) +10>Emitted(28, 65) Source(46, 39) + SourceIndex(0) +11>Emitted(28, 66) Source(46, 40) + SourceIndex(0) +12>Emitted(28, 68) Source(46, 42) + SourceIndex(0) +13>Emitted(28, 69) Source(46, 43) + SourceIndex(0) +14>Emitted(28, 72) Source(46, 46) + SourceIndex(0) +15>Emitted(28, 73) Source(46, 47) + SourceIndex(0) +16>Emitted(28, 75) Source(46, 49) + SourceIndex(0) +17>Emitted(28, 76) Source(46, 50) + SourceIndex(0) +18>Emitted(28, 78) Source(46, 52) + SourceIndex(0) +19>Emitted(28, 80) Source(46, 54) + SourceIndex(0) +20>Emitted(28, 81) Source(46, 55) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(29, 5) Source(47, 5) + SourceIndex(0) +2 >Emitted(29, 12) Source(47, 12) + SourceIndex(0) +3 >Emitted(29, 13) Source(47, 13) + SourceIndex(0) +4 >Emitted(29, 16) Source(47, 16) + SourceIndex(0) +5 >Emitted(29, 17) Source(47, 17) + SourceIndex(0) +6 >Emitted(29, 24) Source(47, 24) + SourceIndex(0) +7 >Emitted(29, 25) Source(47, 25) + SourceIndex(0) +8 >Emitted(29, 26) Source(47, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(30, 1) Source(48, 1) + SourceIndex(0) +2 >Emitted(30, 2) Source(48, 2) + SourceIndex(0) +--- +>>>for (var _w = getRobot()[0], numberB = _w === void 0 ? -1 : _w, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let [ +5 > numberB = -1 +6 > +7 > numberB = -1 +8 > ] = getRobot(), +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(31, 1) Source(49, 1) + SourceIndex(0) +2 >Emitted(31, 4) Source(49, 4) + SourceIndex(0) +3 >Emitted(31, 5) Source(49, 5) + SourceIndex(0) +4 >Emitted(31, 6) Source(49, 11) + SourceIndex(0) +5 >Emitted(31, 28) Source(49, 23) + SourceIndex(0) +6 >Emitted(31, 30) Source(49, 11) + SourceIndex(0) +7 >Emitted(31, 63) Source(49, 23) + SourceIndex(0) +8 >Emitted(31, 65) Source(49, 39) + SourceIndex(0) +9 >Emitted(31, 66) Source(49, 40) + SourceIndex(0) +10>Emitted(31, 69) Source(49, 43) + SourceIndex(0) +11>Emitted(31, 70) Source(49, 44) + SourceIndex(0) +12>Emitted(31, 72) Source(49, 46) + SourceIndex(0) +13>Emitted(31, 73) Source(49, 47) + SourceIndex(0) +14>Emitted(31, 76) Source(49, 50) + SourceIndex(0) +15>Emitted(31, 77) Source(49, 51) + SourceIndex(0) +16>Emitted(31, 79) Source(49, 53) + SourceIndex(0) +17>Emitted(31, 80) Source(49, 54) + SourceIndex(0) +18>Emitted(31, 82) Source(49, 56) + SourceIndex(0) +19>Emitted(31, 84) Source(49, 58) + SourceIndex(0) +20>Emitted(31, 85) Source(49, 59) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(32, 5) Source(50, 5) + SourceIndex(0) +2 >Emitted(32, 12) Source(50, 12) + SourceIndex(0) +3 >Emitted(32, 13) Source(50, 13) + SourceIndex(0) +4 >Emitted(32, 16) Source(50, 16) + SourceIndex(0) +5 >Emitted(32, 17) Source(50, 17) + SourceIndex(0) +6 >Emitted(32, 24) Source(50, 24) + SourceIndex(0) +7 >Emitted(32, 25) Source(50, 25) + SourceIndex(0) +8 >Emitted(32, 26) Source(50, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(33, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(33, 2) Source(51, 2) + SourceIndex(0) +--- +>>>for (var _x = [2, "trimmer", "trimming"][0], numberB = _x === void 0 ? -1 : _x, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let [ +5 > numberB = -1 +6 > +7 > numberB = -1 +8 > ] = [2, "trimmer", "trimming"], +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(34, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(34, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(34, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(34, 6) Source(52, 11) + SourceIndex(0) +5 >Emitted(34, 44) Source(52, 23) + SourceIndex(0) +6 >Emitted(34, 46) Source(52, 11) + SourceIndex(0) +7 >Emitted(34, 79) Source(52, 23) + SourceIndex(0) +8 >Emitted(34, 81) Source(52, 55) + SourceIndex(0) +9 >Emitted(34, 82) Source(52, 56) + SourceIndex(0) +10>Emitted(34, 85) Source(52, 59) + SourceIndex(0) +11>Emitted(34, 86) Source(52, 60) + SourceIndex(0) +12>Emitted(34, 88) Source(52, 62) + SourceIndex(0) +13>Emitted(34, 89) Source(52, 63) + SourceIndex(0) +14>Emitted(34, 92) Source(52, 66) + SourceIndex(0) +15>Emitted(34, 93) Source(52, 67) + SourceIndex(0) +16>Emitted(34, 95) Source(52, 69) + SourceIndex(0) +17>Emitted(34, 96) Source(52, 70) + SourceIndex(0) +18>Emitted(34, 98) Source(52, 72) + SourceIndex(0) +19>Emitted(34, 100) Source(52, 74) + SourceIndex(0) +20>Emitted(34, 101) Source(52, 75) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(35, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(35, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(35, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(35, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(35, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(35, 24) Source(53, 24) + SourceIndex(0) +7 >Emitted(35, 25) Source(53, 25) + SourceIndex(0) +8 >Emitted(35, 26) Source(53, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(36, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(36, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for (var _y = multiRobotA[0], nameB = _y === void 0 ? "name" : _y, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let [ +5 > nameB = "name" +6 > +7 > nameB = "name" +8 > ] = multiRobotA, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(37, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(37, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(37, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(37, 6) Source(55, 11) + SourceIndex(0) +5 >Emitted(37, 29) Source(55, 25) + SourceIndex(0) +6 >Emitted(37, 31) Source(55, 11) + SourceIndex(0) +7 >Emitted(37, 66) Source(55, 25) + SourceIndex(0) +8 >Emitted(37, 68) Source(55, 42) + SourceIndex(0) +9 >Emitted(37, 69) Source(55, 43) + SourceIndex(0) +10>Emitted(37, 72) Source(55, 46) + SourceIndex(0) +11>Emitted(37, 73) Source(55, 47) + SourceIndex(0) +12>Emitted(37, 75) Source(55, 49) + SourceIndex(0) +13>Emitted(37, 76) Source(55, 50) + SourceIndex(0) +14>Emitted(37, 79) Source(55, 53) + SourceIndex(0) +15>Emitted(37, 80) Source(55, 54) + SourceIndex(0) +16>Emitted(37, 82) Source(55, 56) + SourceIndex(0) +17>Emitted(37, 83) Source(55, 57) + SourceIndex(0) +18>Emitted(37, 85) Source(55, 59) + SourceIndex(0) +19>Emitted(37, 87) Source(55, 61) + SourceIndex(0) +20>Emitted(37, 88) Source(55, 62) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(38, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(38, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(38, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(38, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(38, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(38, 22) Source(56, 22) + SourceIndex(0) +7 >Emitted(38, 23) Source(56, 23) + SourceIndex(0) +8 >Emitted(38, 24) Source(56, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(39, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(39, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for (var _z = getMultiRobot()[0], nameB = _z === void 0 ? "name" : _z, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let [ +5 > nameB = "name" +6 > +7 > nameB = "name" +8 > ] = getMultiRobot(), +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(40, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(40, 4) Source(58, 4) + SourceIndex(0) +3 >Emitted(40, 5) Source(58, 5) + SourceIndex(0) +4 >Emitted(40, 6) Source(58, 11) + SourceIndex(0) +5 >Emitted(40, 33) Source(58, 25) + SourceIndex(0) +6 >Emitted(40, 35) Source(58, 11) + SourceIndex(0) +7 >Emitted(40, 70) Source(58, 25) + SourceIndex(0) +8 >Emitted(40, 72) Source(58, 46) + SourceIndex(0) +9 >Emitted(40, 73) Source(58, 47) + SourceIndex(0) +10>Emitted(40, 76) Source(58, 50) + SourceIndex(0) +11>Emitted(40, 77) Source(58, 51) + SourceIndex(0) +12>Emitted(40, 79) Source(58, 53) + SourceIndex(0) +13>Emitted(40, 80) Source(58, 54) + SourceIndex(0) +14>Emitted(40, 83) Source(58, 57) + SourceIndex(0) +15>Emitted(40, 84) Source(58, 58) + SourceIndex(0) +16>Emitted(40, 86) Source(58, 60) + SourceIndex(0) +17>Emitted(40, 87) Source(58, 61) + SourceIndex(0) +18>Emitted(40, 89) Source(58, 63) + SourceIndex(0) +19>Emitted(40, 91) Source(58, 65) + SourceIndex(0) +20>Emitted(40, 92) Source(58, 66) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(41, 5) Source(59, 5) + SourceIndex(0) +2 >Emitted(41, 12) Source(59, 12) + SourceIndex(0) +3 >Emitted(41, 13) Source(59, 13) + SourceIndex(0) +4 >Emitted(41, 16) Source(59, 16) + SourceIndex(0) +5 >Emitted(41, 17) Source(59, 17) + SourceIndex(0) +6 >Emitted(41, 22) Source(59, 22) + SourceIndex(0) +7 >Emitted(41, 23) Source(59, 23) + SourceIndex(0) +8 >Emitted(41, 24) Source(59, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(42, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(42, 2) Source(60, 2) + SourceIndex(0) +--- +>>>for (var _0 = ["trimmer", ["trimming", "edging"]][0], nameB = _0 === void 0 ? "name" : _0, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let [ +5 > nameB = "name" +6 > +7 > nameB = "name" +8 > ] = ["trimmer", ["trimming", "edging"]], +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(43, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(43, 4) Source(61, 4) + SourceIndex(0) +3 >Emitted(43, 5) Source(61, 5) + SourceIndex(0) +4 >Emitted(43, 6) Source(61, 11) + SourceIndex(0) +5 >Emitted(43, 53) Source(61, 25) + SourceIndex(0) +6 >Emitted(43, 55) Source(61, 11) + SourceIndex(0) +7 >Emitted(43, 90) Source(61, 25) + SourceIndex(0) +8 >Emitted(43, 92) Source(61, 66) + SourceIndex(0) +9 >Emitted(43, 93) Source(61, 67) + SourceIndex(0) +10>Emitted(43, 96) Source(61, 70) + SourceIndex(0) +11>Emitted(43, 97) Source(61, 71) + SourceIndex(0) +12>Emitted(43, 99) Source(61, 73) + SourceIndex(0) +13>Emitted(43, 100) Source(61, 74) + SourceIndex(0) +14>Emitted(43, 103) Source(61, 77) + SourceIndex(0) +15>Emitted(43, 104) Source(61, 78) + SourceIndex(0) +16>Emitted(43, 106) Source(61, 80) + SourceIndex(0) +17>Emitted(43, 107) Source(61, 81) + SourceIndex(0) +18>Emitted(43, 109) Source(61, 83) + SourceIndex(0) +19>Emitted(43, 111) Source(61, 85) + SourceIndex(0) +20>Emitted(43, 112) Source(61, 86) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(44, 5) Source(62, 5) + SourceIndex(0) +2 >Emitted(44, 12) Source(62, 12) + SourceIndex(0) +3 >Emitted(44, 13) Source(62, 13) + SourceIndex(0) +4 >Emitted(44, 16) Source(62, 16) + SourceIndex(0) +5 >Emitted(44, 17) Source(62, 17) + SourceIndex(0) +6 >Emitted(44, 22) Source(62, 22) + SourceIndex(0) +7 >Emitted(44, 23) Source(62, 23) + SourceIndex(0) +8 >Emitted(44, 24) Source(62, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(45, 1) Source(63, 1) + SourceIndex(0) +2 >Emitted(45, 2) Source(63, 2) + SourceIndex(0) +--- +>>>for (var _1 = robotA[0], numberA2 = _1 === void 0 ? -1 : _1, _2 = robotA[1], nameA2 = _2 === void 0 ? "name" : _2, _3 = robotA[2], skillA2 = _3 === void 0 ? "skill" : _3, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > + > +2 >for +3 > +4 > (let [ +5 > numberA2 = -1 +6 > +7 > numberA2 = -1 +8 > , +9 > nameA2 = "name" +10> +11> nameA2 = "name" +12> , +13> skillA2 = "skill" +14> +15> skillA2 = "skill" +16> ] = robotA, +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(46, 1) Source(65, 1) + SourceIndex(0) +2 >Emitted(46, 4) Source(65, 4) + SourceIndex(0) +3 >Emitted(46, 5) Source(65, 5) + SourceIndex(0) +4 >Emitted(46, 6) Source(65, 11) + SourceIndex(0) +5 >Emitted(46, 24) Source(65, 24) + SourceIndex(0) +6 >Emitted(46, 26) Source(65, 11) + SourceIndex(0) +7 >Emitted(46, 60) Source(65, 24) + SourceIndex(0) +8 >Emitted(46, 62) Source(65, 26) + SourceIndex(0) +9 >Emitted(46, 76) Source(65, 41) + SourceIndex(0) +10>Emitted(46, 78) Source(65, 26) + SourceIndex(0) +11>Emitted(46, 114) Source(65, 41) + SourceIndex(0) +12>Emitted(46, 116) Source(65, 43) + SourceIndex(0) +13>Emitted(46, 130) Source(65, 60) + SourceIndex(0) +14>Emitted(46, 132) Source(65, 43) + SourceIndex(0) +15>Emitted(46, 170) Source(65, 60) + SourceIndex(0) +16>Emitted(46, 172) Source(65, 72) + SourceIndex(0) +17>Emitted(46, 173) Source(65, 73) + SourceIndex(0) +18>Emitted(46, 176) Source(65, 76) + SourceIndex(0) +19>Emitted(46, 177) Source(65, 77) + SourceIndex(0) +20>Emitted(46, 179) Source(65, 79) + SourceIndex(0) +21>Emitted(46, 180) Source(65, 80) + SourceIndex(0) +22>Emitted(46, 183) Source(65, 83) + SourceIndex(0) +23>Emitted(46, 184) Source(65, 84) + SourceIndex(0) +24>Emitted(46, 186) Source(65, 86) + SourceIndex(0) +25>Emitted(46, 187) Source(65, 87) + SourceIndex(0) +26>Emitted(46, 189) Source(65, 89) + SourceIndex(0) +27>Emitted(46, 191) Source(65, 91) + SourceIndex(0) +28>Emitted(46, 192) Source(65, 92) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(47, 5) Source(66, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(66, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(66, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(66, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(66, 17) + SourceIndex(0) +6 >Emitted(47, 23) Source(66, 23) + SourceIndex(0) +7 >Emitted(47, 24) Source(66, 24) + SourceIndex(0) +8 >Emitted(47, 25) Source(66, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(48, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(48, 2) Source(67, 2) + SourceIndex(0) +--- +>>>for (var _4 = getRobot(), _5 = _4[0], numberA2 = _5 === void 0 ? -1 : _5, _6 = _4[1], nameA2 = _6 === void 0 ? "name" : _6, _7 = _4[2], skillA2 = _7 === void 0 ? "skill" : _7, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^ +30> ^^ +31> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot() +7 > +8 > numberA2 = -1 +9 > +10> numberA2 = -1 +11> , +12> nameA2 = "name" +13> +14> nameA2 = "name" +15> , +16> skillA2 = "skill" +17> +18> skillA2 = "skill" +19> ] = getRobot(), +20> i +21> = +22> 0 +23> ; +24> i +25> < +26> 1 +27> ; +28> i +29> ++ +30> ) +31> { +1->Emitted(49, 1) Source(68, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(68, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(68, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(68, 6) + SourceIndex(0) +5 >Emitted(49, 10) Source(68, 6) + SourceIndex(0) +6 >Emitted(49, 25) Source(68, 74) + SourceIndex(0) +7 >Emitted(49, 27) Source(68, 11) + SourceIndex(0) +8 >Emitted(49, 37) Source(68, 24) + SourceIndex(0) +9 >Emitted(49, 39) Source(68, 11) + SourceIndex(0) +10>Emitted(49, 73) Source(68, 24) + SourceIndex(0) +11>Emitted(49, 75) Source(68, 26) + SourceIndex(0) +12>Emitted(49, 85) Source(68, 41) + SourceIndex(0) +13>Emitted(49, 87) Source(68, 26) + SourceIndex(0) +14>Emitted(49, 123) Source(68, 41) + SourceIndex(0) +15>Emitted(49, 125) Source(68, 43) + SourceIndex(0) +16>Emitted(49, 135) Source(68, 60) + SourceIndex(0) +17>Emitted(49, 137) Source(68, 43) + SourceIndex(0) +18>Emitted(49, 175) Source(68, 60) + SourceIndex(0) +19>Emitted(49, 177) Source(68, 76) + SourceIndex(0) +20>Emitted(49, 178) Source(68, 77) + SourceIndex(0) +21>Emitted(49, 181) Source(68, 80) + SourceIndex(0) +22>Emitted(49, 182) Source(68, 81) + SourceIndex(0) +23>Emitted(49, 184) Source(68, 83) + SourceIndex(0) +24>Emitted(49, 185) Source(68, 84) + SourceIndex(0) +25>Emitted(49, 188) Source(68, 87) + SourceIndex(0) +26>Emitted(49, 189) Source(68, 88) + SourceIndex(0) +27>Emitted(49, 191) Source(68, 90) + SourceIndex(0) +28>Emitted(49, 192) Source(68, 91) + SourceIndex(0) +29>Emitted(49, 194) Source(68, 93) + SourceIndex(0) +30>Emitted(49, 196) Source(68, 95) + SourceIndex(0) +31>Emitted(49, 197) Source(68, 96) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(50, 5) Source(69, 5) + SourceIndex(0) +2 >Emitted(50, 12) Source(69, 12) + SourceIndex(0) +3 >Emitted(50, 13) Source(69, 13) + SourceIndex(0) +4 >Emitted(50, 16) Source(69, 16) + SourceIndex(0) +5 >Emitted(50, 17) Source(69, 17) + SourceIndex(0) +6 >Emitted(50, 23) Source(69, 23) + SourceIndex(0) +7 >Emitted(50, 24) Source(69, 24) + SourceIndex(0) +8 >Emitted(50, 25) Source(69, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(51, 1) Source(70, 1) + SourceIndex(0) +2 >Emitted(51, 2) Source(70, 2) + SourceIndex(0) +--- +>>>for (var _8 = [2, "trimmer", "trimming"], _9 = _8[0], numberA2 = _9 === void 0 ? -1 : _9, _10 = _8[1], nameA2 = _10 === void 0 ? "name" : _10, _11 = _8[2], skillA2 = _11 === void 0 ? "skill" : _11, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^ +30> ^^ +31> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"] +7 > +8 > numberA2 = -1 +9 > +10> numberA2 = -1 +11> , +12> nameA2 = "name" +13> +14> nameA2 = "name" +15> , +16> skillA2 = "skill" +17> +18> skillA2 = "skill" +19> ] = [2, "trimmer", "trimming"], +20> i +21> = +22> 0 +23> ; +24> i +25> < +26> 1 +27> ; +28> i +29> ++ +30> ) +31> { +1->Emitted(52, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(52, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(52, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(52, 6) Source(71, 6) + SourceIndex(0) +5 >Emitted(52, 10) Source(71, 6) + SourceIndex(0) +6 >Emitted(52, 41) Source(71, 90) + SourceIndex(0) +7 >Emitted(52, 43) Source(71, 11) + SourceIndex(0) +8 >Emitted(52, 53) Source(71, 24) + SourceIndex(0) +9 >Emitted(52, 55) Source(71, 11) + SourceIndex(0) +10>Emitted(52, 89) Source(71, 24) + SourceIndex(0) +11>Emitted(52, 91) Source(71, 26) + SourceIndex(0) +12>Emitted(52, 102) Source(71, 41) + SourceIndex(0) +13>Emitted(52, 104) Source(71, 26) + SourceIndex(0) +14>Emitted(52, 142) Source(71, 41) + SourceIndex(0) +15>Emitted(52, 144) Source(71, 43) + SourceIndex(0) +16>Emitted(52, 155) Source(71, 60) + SourceIndex(0) +17>Emitted(52, 157) Source(71, 43) + SourceIndex(0) +18>Emitted(52, 197) Source(71, 60) + SourceIndex(0) +19>Emitted(52, 199) Source(71, 92) + SourceIndex(0) +20>Emitted(52, 200) Source(71, 93) + SourceIndex(0) +21>Emitted(52, 203) Source(71, 96) + SourceIndex(0) +22>Emitted(52, 204) Source(71, 97) + SourceIndex(0) +23>Emitted(52, 206) Source(71, 99) + SourceIndex(0) +24>Emitted(52, 207) Source(71, 100) + SourceIndex(0) +25>Emitted(52, 210) Source(71, 103) + SourceIndex(0) +26>Emitted(52, 211) Source(71, 104) + SourceIndex(0) +27>Emitted(52, 213) Source(71, 106) + SourceIndex(0) +28>Emitted(52, 214) Source(71, 107) + SourceIndex(0) +29>Emitted(52, 216) Source(71, 109) + SourceIndex(0) +30>Emitted(52, 218) Source(71, 111) + SourceIndex(0) +31>Emitted(52, 219) Source(71, 112) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(53, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(53, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(53, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(53, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(53, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(53, 23) Source(72, 23) + SourceIndex(0) +7 >Emitted(53, 24) Source(72, 24) + SourceIndex(0) +8 >Emitted(53, 25) Source(72, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(54, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(54, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for (var _12 = multiRobotA[0], nameMA = _12 === void 0 ? "noName" : _12, _13 = multiRobotA[1], _14 = _13 === void 0 ? ["none", "none"] : _13, _15 = _14[0], primarySkillA = _15 === void 0 ? "primary" : _15, _16 = _14[1], secondarySkillA = _16 === void 0 ? "secondary" : _16, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^^^^ +18> ^^ +19> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > (let + > [ +5 > nameMA = "noName" +6 > +7 > nameMA = "noName" +8 > , + > +9 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +10> +11> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +12> +13> primarySkillA = "primary" +14> +15> primarySkillA = "primary" +16> , + > +17> secondarySkillA = "secondary" +18> +19> secondarySkillA = "secondary" +20> + > ] = ["none", "none"] + > ] = multiRobotA, +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(55, 1) Source(74, 1) + SourceIndex(0) +2 >Emitted(55, 4) Source(74, 4) + SourceIndex(0) +3 >Emitted(55, 5) Source(74, 5) + SourceIndex(0) +4 >Emitted(55, 6) Source(75, 6) + SourceIndex(0) +5 >Emitted(55, 30) Source(75, 23) + SourceIndex(0) +6 >Emitted(55, 32) Source(75, 6) + SourceIndex(0) +7 >Emitted(55, 72) Source(75, 23) + SourceIndex(0) +8 >Emitted(55, 74) Source(76, 9) + SourceIndex(0) +9 >Emitted(55, 94) Source(79, 29) + SourceIndex(0) +10>Emitted(55, 96) Source(76, 9) + SourceIndex(0) +11>Emitted(55, 141) Source(79, 29) + SourceIndex(0) +12>Emitted(55, 143) Source(77, 13) + SourceIndex(0) +13>Emitted(55, 155) Source(77, 38) + SourceIndex(0) +14>Emitted(55, 157) Source(77, 13) + SourceIndex(0) +15>Emitted(55, 205) Source(77, 38) + SourceIndex(0) +16>Emitted(55, 207) Source(78, 13) + SourceIndex(0) +17>Emitted(55, 219) Source(78, 42) + SourceIndex(0) +18>Emitted(55, 221) Source(78, 13) + SourceIndex(0) +19>Emitted(55, 273) Source(78, 42) + SourceIndex(0) +20>Emitted(55, 275) Source(80, 22) + SourceIndex(0) +21>Emitted(55, 276) Source(80, 23) + SourceIndex(0) +22>Emitted(55, 279) Source(80, 26) + SourceIndex(0) +23>Emitted(55, 280) Source(80, 27) + SourceIndex(0) +24>Emitted(55, 282) Source(80, 29) + SourceIndex(0) +25>Emitted(55, 283) Source(80, 30) + SourceIndex(0) +26>Emitted(55, 286) Source(80, 33) + SourceIndex(0) +27>Emitted(55, 287) Source(80, 34) + SourceIndex(0) +28>Emitted(55, 289) Source(80, 36) + SourceIndex(0) +29>Emitted(55, 290) Source(80, 37) + SourceIndex(0) +30>Emitted(55, 292) Source(80, 39) + SourceIndex(0) +31>Emitted(55, 294) Source(80, 41) + SourceIndex(0) +32>Emitted(55, 295) Source(80, 42) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(56, 5) Source(81, 5) + SourceIndex(0) +2 >Emitted(56, 12) Source(81, 12) + SourceIndex(0) +3 >Emitted(56, 13) Source(81, 13) + SourceIndex(0) +4 >Emitted(56, 16) Source(81, 16) + SourceIndex(0) +5 >Emitted(56, 17) Source(81, 17) + SourceIndex(0) +6 >Emitted(56, 23) Source(81, 23) + SourceIndex(0) +7 >Emitted(56, 24) Source(81, 24) + SourceIndex(0) +8 >Emitted(56, 25) Source(81, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(57, 1) Source(82, 1) + SourceIndex(0) +2 >Emitted(57, 2) Source(82, 2) + SourceIndex(0) +--- +>>>for (var _17 = getMultiRobot(), _18 = _17[0], nameMA = _18 === void 0 ? "noName" : _18, _19 = _17[1], _20 = _19 === void 0 ? ["none", "none"] : _19, _21 = _20[0], primarySkillA = _21 === void 0 ? "primary" : _21, _22 = _20[1], secondarySkillA = _22 === void 0 ? "secondary" : _22, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^^ +30> ^ +31> ^^ +32> ^ +33> ^^ +34> ^^ +35> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + > ] = getMultiRobot() +7 > +8 > nameMA = "noName" +9 > +10> nameMA = "noName" +11> , + > +12> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +13> +14> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +15> +16> primarySkillA = "primary" +17> +18> primarySkillA = "primary" +19> , + > +20> secondarySkillA = "secondary" +21> +22> secondarySkillA = "secondary" +23> + > ] = ["none", "none"] + > ] = getMultiRobot(), +24> i +25> = +26> 0 +27> ; +28> i +29> < +30> 1 +31> ; +32> i +33> ++ +34> ) +35> { +1->Emitted(58, 1) Source(83, 1) + SourceIndex(0) +2 >Emitted(58, 4) Source(83, 4) + SourceIndex(0) +3 >Emitted(58, 5) Source(83, 5) + SourceIndex(0) +4 >Emitted(58, 6) Source(83, 6) + SourceIndex(0) +5 >Emitted(58, 10) Source(83, 6) + SourceIndex(0) +6 >Emitted(58, 31) Source(88, 21) + SourceIndex(0) +7 >Emitted(58, 33) Source(83, 11) + SourceIndex(0) +8 >Emitted(58, 45) Source(83, 28) + SourceIndex(0) +9 >Emitted(58, 47) Source(83, 11) + SourceIndex(0) +10>Emitted(58, 87) Source(83, 28) + SourceIndex(0) +11>Emitted(58, 89) Source(84, 5) + SourceIndex(0) +12>Emitted(58, 101) Source(87, 25) + SourceIndex(0) +13>Emitted(58, 103) Source(84, 5) + SourceIndex(0) +14>Emitted(58, 148) Source(87, 25) + SourceIndex(0) +15>Emitted(58, 150) Source(85, 9) + SourceIndex(0) +16>Emitted(58, 162) Source(85, 34) + SourceIndex(0) +17>Emitted(58, 164) Source(85, 9) + SourceIndex(0) +18>Emitted(58, 212) Source(85, 34) + SourceIndex(0) +19>Emitted(58, 214) Source(86, 9) + SourceIndex(0) +20>Emitted(58, 226) Source(86, 38) + SourceIndex(0) +21>Emitted(58, 228) Source(86, 9) + SourceIndex(0) +22>Emitted(58, 280) Source(86, 38) + SourceIndex(0) +23>Emitted(58, 282) Source(88, 23) + SourceIndex(0) +24>Emitted(58, 283) Source(88, 24) + SourceIndex(0) +25>Emitted(58, 286) Source(88, 27) + SourceIndex(0) +26>Emitted(58, 287) Source(88, 28) + SourceIndex(0) +27>Emitted(58, 289) Source(88, 30) + SourceIndex(0) +28>Emitted(58, 290) Source(88, 31) + SourceIndex(0) +29>Emitted(58, 293) Source(88, 34) + SourceIndex(0) +30>Emitted(58, 294) Source(88, 35) + SourceIndex(0) +31>Emitted(58, 296) Source(88, 37) + SourceIndex(0) +32>Emitted(58, 297) Source(88, 38) + SourceIndex(0) +33>Emitted(58, 299) Source(88, 40) + SourceIndex(0) +34>Emitted(58, 301) Source(88, 42) + SourceIndex(0) +35>Emitted(58, 302) Source(88, 43) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(59, 5) Source(89, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(89, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(89, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(89, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(89, 17) + SourceIndex(0) +6 >Emitted(59, 23) Source(89, 23) + SourceIndex(0) +7 >Emitted(59, 24) Source(89, 24) + SourceIndex(0) +8 >Emitted(59, 25) Source(89, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(60, 1) Source(90, 1) + SourceIndex(0) +2 >Emitted(60, 2) Source(90, 2) + SourceIndex(0) +--- +>>>for (var _23 = ["trimmer", ["trimming", "edging"]], _24 = _23[0], nameMA = _24 === void 0 ? "noName" : _24, _25 = _23[1], _26 = _25 === void 0 ? ["none", "none"] : _25, _27 = _26[0], primarySkillA = _27 === void 0 ? "primary" : _27, _28 = _26[1], secondarySkillA = _28 === void 0 ? "secondary" : _28, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^^ +30> ^ +31> ^^ +32> ^ +33> ^^ +34> ^^ +35> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + > ] = ["trimmer", ["trimming", "edging"]] +7 > +8 > nameMA = "noName" +9 > +10> nameMA = "noName" +11> , + > +12> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +13> +14> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +15> +16> primarySkillA = "primary" +17> +18> primarySkillA = "primary" +19> , + > +20> secondarySkillA = "secondary" +21> +22> secondarySkillA = "secondary" +23> + > ] = ["none", "none"] + > ] = ["trimmer", ["trimming", "edging"]], +24> i +25> = +26> 0 +27> ; +28> i +29> < +30> 1 +31> ; +32> i +33> ++ +34> ) +35> { +1->Emitted(61, 1) Source(91, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(91, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(91, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(91, 6) + SourceIndex(0) +5 >Emitted(61, 10) Source(91, 6) + SourceIndex(0) +6 >Emitted(61, 51) Source(96, 41) + SourceIndex(0) +7 >Emitted(61, 53) Source(91, 11) + SourceIndex(0) +8 >Emitted(61, 65) Source(91, 28) + SourceIndex(0) +9 >Emitted(61, 67) Source(91, 11) + SourceIndex(0) +10>Emitted(61, 107) Source(91, 28) + SourceIndex(0) +11>Emitted(61, 109) Source(92, 5) + SourceIndex(0) +12>Emitted(61, 121) Source(95, 25) + SourceIndex(0) +13>Emitted(61, 123) Source(92, 5) + SourceIndex(0) +14>Emitted(61, 168) Source(95, 25) + SourceIndex(0) +15>Emitted(61, 170) Source(93, 9) + SourceIndex(0) +16>Emitted(61, 182) Source(93, 34) + SourceIndex(0) +17>Emitted(61, 184) Source(93, 9) + SourceIndex(0) +18>Emitted(61, 232) Source(93, 34) + SourceIndex(0) +19>Emitted(61, 234) Source(94, 9) + SourceIndex(0) +20>Emitted(61, 246) Source(94, 38) + SourceIndex(0) +21>Emitted(61, 248) Source(94, 9) + SourceIndex(0) +22>Emitted(61, 300) Source(94, 38) + SourceIndex(0) +23>Emitted(61, 302) Source(96, 43) + SourceIndex(0) +24>Emitted(61, 303) Source(96, 44) + SourceIndex(0) +25>Emitted(61, 306) Source(96, 47) + SourceIndex(0) +26>Emitted(61, 307) Source(96, 48) + SourceIndex(0) +27>Emitted(61, 309) Source(96, 50) + SourceIndex(0) +28>Emitted(61, 310) Source(96, 51) + SourceIndex(0) +29>Emitted(61, 313) Source(96, 54) + SourceIndex(0) +30>Emitted(61, 314) Source(96, 55) + SourceIndex(0) +31>Emitted(61, 316) Source(96, 57) + SourceIndex(0) +32>Emitted(61, 317) Source(96, 58) + SourceIndex(0) +33>Emitted(61, 319) Source(96, 60) + SourceIndex(0) +34>Emitted(61, 321) Source(96, 62) + SourceIndex(0) +35>Emitted(61, 322) Source(96, 63) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(62, 5) Source(97, 5) + SourceIndex(0) +2 >Emitted(62, 12) Source(97, 12) + SourceIndex(0) +3 >Emitted(62, 13) Source(97, 13) + SourceIndex(0) +4 >Emitted(62, 16) Source(97, 16) + SourceIndex(0) +5 >Emitted(62, 17) Source(97, 17) + SourceIndex(0) +6 >Emitted(62, 23) Source(97, 23) + SourceIndex(0) +7 >Emitted(62, 24) Source(97, 24) + SourceIndex(0) +8 >Emitted(62, 25) Source(97, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(63, 1) Source(98, 1) + SourceIndex(0) +2 >Emitted(63, 2) Source(98, 2) + SourceIndex(0) +--- +>>>for (var _29 = robotA[0], numberA3 = _29 === void 0 ? -1 : _29, robotAInfo = robotA.slice(1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^ +12> ^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^ +21> ^^ +22> ^ +1-> + > + > +2 >for +3 > +4 > (let [ +5 > numberA3 = -1 +6 > +7 > numberA3 = -1 +8 > , +9 > ...robotAInfo +10> ] = robotA, +11> i +12> = +13> 0 +14> ; +15> i +16> < +17> 1 +18> ; +19> i +20> ++ +21> ) +22> { +1->Emitted(64, 1) Source(100, 1) + SourceIndex(0) +2 >Emitted(64, 4) Source(100, 4) + SourceIndex(0) +3 >Emitted(64, 5) Source(100, 5) + SourceIndex(0) +4 >Emitted(64, 6) Source(100, 11) + SourceIndex(0) +5 >Emitted(64, 25) Source(100, 24) + SourceIndex(0) +6 >Emitted(64, 27) Source(100, 11) + SourceIndex(0) +7 >Emitted(64, 63) Source(100, 24) + SourceIndex(0) +8 >Emitted(64, 65) Source(100, 26) + SourceIndex(0) +9 >Emitted(64, 93) Source(100, 39) + SourceIndex(0) +10>Emitted(64, 95) Source(100, 51) + SourceIndex(0) +11>Emitted(64, 96) Source(100, 52) + SourceIndex(0) +12>Emitted(64, 99) Source(100, 55) + SourceIndex(0) +13>Emitted(64, 100) Source(100, 56) + SourceIndex(0) +14>Emitted(64, 102) Source(100, 58) + SourceIndex(0) +15>Emitted(64, 103) Source(100, 59) + SourceIndex(0) +16>Emitted(64, 106) Source(100, 62) + SourceIndex(0) +17>Emitted(64, 107) Source(100, 63) + SourceIndex(0) +18>Emitted(64, 109) Source(100, 65) + SourceIndex(0) +19>Emitted(64, 110) Source(100, 66) + SourceIndex(0) +20>Emitted(64, 112) Source(100, 68) + SourceIndex(0) +21>Emitted(64, 114) Source(100, 70) + SourceIndex(0) +22>Emitted(64, 115) Source(100, 71) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(65, 5) Source(101, 5) + SourceIndex(0) +2 >Emitted(65, 12) Source(101, 12) + SourceIndex(0) +3 >Emitted(65, 13) Source(101, 13) + SourceIndex(0) +4 >Emitted(65, 16) Source(101, 16) + SourceIndex(0) +5 >Emitted(65, 17) Source(101, 17) + SourceIndex(0) +6 >Emitted(65, 25) Source(101, 25) + SourceIndex(0) +7 >Emitted(65, 26) Source(101, 26) + SourceIndex(0) +8 >Emitted(65, 27) Source(101, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(66, 1) Source(102, 1) + SourceIndex(0) +2 >Emitted(66, 2) Source(102, 2) + SourceIndex(0) +--- +>>>for (var _30 = getRobot(), _31 = _30[0], numberA3 = _31 === void 0 ? -1 : _31, robotAInfo = _30.slice(1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^^ +20> ^ +21> ^^ +22> ^ +23> ^^ +24> ^^ +25> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [numberA3 = -1, ...robotAInfo] = getRobot() +7 > +8 > numberA3 = -1 +9 > +10> numberA3 = -1 +11> , +12> ...robotAInfo +13> ] = getRobot(), +14> i +15> = +16> 0 +17> ; +18> i +19> < +20> 1 +21> ; +22> i +23> ++ +24> ) +25> { +1->Emitted(67, 1) Source(103, 1) + SourceIndex(0) +2 >Emitted(67, 4) Source(103, 4) + SourceIndex(0) +3 >Emitted(67, 5) Source(103, 5) + SourceIndex(0) +4 >Emitted(67, 6) Source(103, 6) + SourceIndex(0) +5 >Emitted(67, 10) Source(103, 6) + SourceIndex(0) +6 >Emitted(67, 26) Source(103, 53) + SourceIndex(0) +7 >Emitted(67, 28) Source(103, 11) + SourceIndex(0) +8 >Emitted(67, 40) Source(103, 24) + SourceIndex(0) +9 >Emitted(67, 42) Source(103, 11) + SourceIndex(0) +10>Emitted(67, 78) Source(103, 24) + SourceIndex(0) +11>Emitted(67, 80) Source(103, 26) + SourceIndex(0) +12>Emitted(67, 105) Source(103, 39) + SourceIndex(0) +13>Emitted(67, 107) Source(103, 55) + SourceIndex(0) +14>Emitted(67, 108) Source(103, 56) + SourceIndex(0) +15>Emitted(67, 111) Source(103, 59) + SourceIndex(0) +16>Emitted(67, 112) Source(103, 60) + SourceIndex(0) +17>Emitted(67, 114) Source(103, 62) + SourceIndex(0) +18>Emitted(67, 115) Source(103, 63) + SourceIndex(0) +19>Emitted(67, 118) Source(103, 66) + SourceIndex(0) +20>Emitted(67, 119) Source(103, 67) + SourceIndex(0) +21>Emitted(67, 121) Source(103, 69) + SourceIndex(0) +22>Emitted(67, 122) Source(103, 70) + SourceIndex(0) +23>Emitted(67, 124) Source(103, 72) + SourceIndex(0) +24>Emitted(67, 126) Source(103, 74) + SourceIndex(0) +25>Emitted(67, 127) Source(103, 75) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(68, 5) Source(104, 5) + SourceIndex(0) +2 >Emitted(68, 12) Source(104, 12) + SourceIndex(0) +3 >Emitted(68, 13) Source(104, 13) + SourceIndex(0) +4 >Emitted(68, 16) Source(104, 16) + SourceIndex(0) +5 >Emitted(68, 17) Source(104, 17) + SourceIndex(0) +6 >Emitted(68, 25) Source(104, 25) + SourceIndex(0) +7 >Emitted(68, 26) Source(104, 26) + SourceIndex(0) +8 >Emitted(68, 27) Source(104, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(69, 1) Source(105, 1) + SourceIndex(0) +2 >Emitted(69, 2) Source(105, 2) + SourceIndex(0) +--- +>>>for (var _32 = [2, "trimmer", "trimming"], _33 = _32[0], numberA3 = _33 === void 0 ? -1 : _33, robotAInfo = _32.slice(1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^ +15> ^^^ +16> ^ +17> ^^ +18> ^ +19> ^^^ +20> ^ +21> ^^ +22> ^ +23> ^^ +24> ^^ +25> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"] +7 > +8 > numberA3 = -1 +9 > +10> numberA3 = -1 +11> , +12> ...robotAInfo +13> ] = [2, "trimmer", "trimming"], +14> i +15> = +16> 0 +17> ; +18> i +19> < +20> 1 +21> ; +22> i +23> ++ +24> ) +25> { +1->Emitted(70, 1) Source(106, 1) + SourceIndex(0) +2 >Emitted(70, 4) Source(106, 4) + SourceIndex(0) +3 >Emitted(70, 5) Source(106, 5) + SourceIndex(0) +4 >Emitted(70, 6) Source(106, 6) + SourceIndex(0) +5 >Emitted(70, 10) Source(106, 6) + SourceIndex(0) +6 >Emitted(70, 42) Source(106, 69) + SourceIndex(0) +7 >Emitted(70, 44) Source(106, 11) + SourceIndex(0) +8 >Emitted(70, 56) Source(106, 24) + SourceIndex(0) +9 >Emitted(70, 58) Source(106, 11) + SourceIndex(0) +10>Emitted(70, 94) Source(106, 24) + SourceIndex(0) +11>Emitted(70, 96) Source(106, 26) + SourceIndex(0) +12>Emitted(70, 121) Source(106, 39) + SourceIndex(0) +13>Emitted(70, 123) Source(106, 71) + SourceIndex(0) +14>Emitted(70, 124) Source(106, 72) + SourceIndex(0) +15>Emitted(70, 127) Source(106, 75) + SourceIndex(0) +16>Emitted(70, 128) Source(106, 76) + SourceIndex(0) +17>Emitted(70, 130) Source(106, 78) + SourceIndex(0) +18>Emitted(70, 131) Source(106, 79) + SourceIndex(0) +19>Emitted(70, 134) Source(106, 82) + SourceIndex(0) +20>Emitted(70, 135) Source(106, 83) + SourceIndex(0) +21>Emitted(70, 137) Source(106, 85) + SourceIndex(0) +22>Emitted(70, 138) Source(106, 86) + SourceIndex(0) +23>Emitted(70, 140) Source(106, 88) + SourceIndex(0) +24>Emitted(70, 142) Source(106, 90) + SourceIndex(0) +25>Emitted(70, 143) Source(106, 91) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(71, 5) Source(107, 5) + SourceIndex(0) +2 >Emitted(71, 12) Source(107, 12) + SourceIndex(0) +3 >Emitted(71, 13) Source(107, 13) + SourceIndex(0) +4 >Emitted(71, 16) Source(107, 16) + SourceIndex(0) +5 >Emitted(71, 17) Source(107, 17) + SourceIndex(0) +6 >Emitted(71, 25) Source(107, 25) + SourceIndex(0) +7 >Emitted(71, 26) Source(107, 26) + SourceIndex(0) +8 >Emitted(71, 27) Source(107, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(72, 1) Source(108, 1) + SourceIndex(0) +2 >Emitted(72, 2) Source(108, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..523cde331fc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.symbols @@ -0,0 +1,367 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 2, 1)) + +type MultiSkilledRobot = [string, string[]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 2, 1)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 43)) + + return robotA; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 11, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 12, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 3, 38)) + +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 12, 73)) + + return multiRobotA; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 11, 3)) +} + +for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 17, 11)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 17, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 17, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 17, 36)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 17, 11)) +} +for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 20, 11)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 20, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 20, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 20, 41)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 20, 11)) +} +for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 23, 11)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 23, 57)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 23, 57)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 23, 57)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 23, 11)) +} +for (let [, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 26, 13)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 27, 30)) + +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 29, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 29, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 29, 36)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 26, 13)) +} +for (let [, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 32, 13)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 33, 30)) + +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 35, 40)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 35, 40)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 35, 40)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 32, 13)) +} +for (let [, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 38, 13)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 39, 30)) + +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 41, 60)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 41, 60)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 41, 60)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 38, 13)) +} + +for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 45, 10)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 45, 33)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 45, 33)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 45, 33)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 45, 10)) +} +for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 48, 10)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 48, 37)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 48, 37)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 48, 37)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 48, 10)) +} +for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 51, 10)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 51, 53)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 51, 53)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 51, 53)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 51, 10)) +} +for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 54, 10)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 54, 40)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 54, 40)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 54, 40)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 54, 10)) +} +for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 57, 10)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 57, 44)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 57, 44)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 57, 44)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 57, 10)) +} +for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 60, 10)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 60, 64)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 60, 64)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 60, 64)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 60, 10)) +} + +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 41)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 70)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 70)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 70)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 64, 24)) +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 41)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 74)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 74)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 74)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 67, 24)) +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 10)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 24)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 90)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 70, 24)) +} +for (let + [nameMA = "noName", +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 74, 5)) + + [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 75, 9)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 76, 38)) + + ] = ["none", "none"] + ] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 79, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 79, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 79, 20)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 74, 5)) +} +for (let [nameMA = "noName", +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 82, 10)) + + [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 83, 5)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 84, 34)) + + ] = ["none", "none"] +] = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 87, 21)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 87, 21)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 87, 21)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 82, 10)) +} +for (let [nameMA = "noName", +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 90, 10)) + + [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 91, 5)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 92, 34)) + + ] = ["none", "none"] +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 95, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 95, 41)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 95, 41)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 90, 10)) +} + +for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 99, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 99, 24)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 99, 49)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 99, 49)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 99, 49)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 99, 10)) +} +for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 102, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 102, 24)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 102, 53)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 102, 53)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 102, 53)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 102, 10)) +} +for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 105, 10)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 105, 24)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 105, 69)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 105, 69)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 105, 69)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts, 105, 10)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types new file mode 100644 index 00000000000..245328296eb --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.types @@ -0,0 +1,599 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, string[]]; +>MultiSkilledRobot : [string, string[]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +function getRobot() { +>getRobot : () => [number, string, string] + + return robotA; +>robotA : [number, string, string] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, string[]] +>MultiSkilledRobot : [string, string[]] +>["mower", ["mowing", ""]] : [string, string[]] +>"mower" : string +>["mowing", ""] : string[] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, string[]] +>MultiSkilledRobot : [string, string[]] +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string + +function getMultiRobot() { +>getMultiRobot : () => [string, string[]] + + return multiRobotA; +>multiRobotA : [string, string[]] +} + +for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { +> : undefined +>nameA : string +>"name" : string +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { +> : undefined +>nameA : string +>"name" : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +> : undefined +>nameA : string +>"name" : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let [, [ +> : undefined + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { +>["none", "none"] : [string, string] +>"none" : string +>"none" : string +>multiRobotA : [string, string[]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [ +> : undefined + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { +>["none", "none"] : [string, string] +>"none" : string +>"none" : string +>getMultiRobot() : [string, string[]] +>getMultiRobot : () => [string, string[]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for (let [, [ +> : undefined + + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>["none", "none"] : [string, string] +>"none" : string +>"none" : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { +>numberB : number +>-1 : number +>1 : number +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { +>numberB : number +>-1 : number +>1 : number +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberB : number +>-1 : number +>1 : number +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { +>nameB : string +>"name" : string +>multiRobotA : [string, string[]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { +>nameB : string +>"name" : string +>getMultiRobot() : [string, string[]] +>getMultiRobot : () => [string, string[]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameB : string +>"name" : string +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"name" : string +>skillA2 : string +>"skill" : string +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"name" : string +>skillA2 : string +>"skill" : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA2 : number +>-1 : number +>1 : number +>nameA2 : string +>"name" : string +>skillA2 : string +>"skill" : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let + [nameMA = "noName", +>nameMA : string +>"noName" : string + + [ + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + + ] = ["none", "none"] +>["none", "none"] : [string, string] +>"none" : string +>"none" : string + + ] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotA : [string, string[]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA = "noName", +>nameMA : string +>"noName" : string + + [ + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + + ] = ["none", "none"] +>["none", "none"] : [string, string] +>"none" : string +>"none" : string + +] = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : [string, string[]] +>getMultiRobot : () => [string, string[]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for (let [nameMA = "noName", +>nameMA : string +>"noName" : string + + [ + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + + ] = ["none", "none"] +>["none", "none"] : [string, string] +>"none" : string +>"none" : string + +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>robotA : [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>numberA3 : number +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA3 : number | string +>-1 : number +>1 : number +>robotAInfo : (number | string)[] +>[2, "trimmer", "trimming"] : (number | string)[] +>2 : number +>"trimmer" : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number | string +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js new file mode 100644 index 00000000000..fb2fa4f81f8 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js @@ -0,0 +1,196 @@ +//// [sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts] +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +let i: number; + +for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let + [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] + ] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} + +//// [sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js] +var robotA = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} +var multiRobotA = ["mower", ["mowing", ""]]; +var multiRobotB = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} +var nameA, primarySkillA, secondarySkillA; +var numberB, nameB; +var numberA2, nameA2, skillA2, nameMA; +var numberA3, robotAInfo, multiRobotAInfo; +var i; +for ((_a = robotA[1], nameA = _a === void 0 ? "name" : _a, robotA), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_b = getRobot(), _c = _b[1], nameA = _c === void 0 ? "name" : _c, _b), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_d = [2, "trimmer", "trimming"], _e = _d[1], nameA = _e === void 0 ? "name" : _e, _d), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_f = multiRobotA[1], _g = _f === void 0 ? ["none", "none"] : _f, _h = _g[0], primarySkillA = _h === void 0 ? "primary" : _h, _j = _g[1], secondarySkillA = _j === void 0 ? "secondary" : _j, multiRobotA), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ((_k = getMultiRobot(), _l = _k[1], _m = _l === void 0 ? ["none", "none"] : _l, _o = _m[0], primarySkillA = _o === void 0 ? "primary" : _o, _p = _m[1], secondarySkillA = _p === void 0 ? "secondary" : _p, _k), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ((_q = ["trimmer", ["trimming", "edging"]], _r = _q[1], _s = _r === void 0 ? ["none", "none"] : _r, _t = _s[0], primarySkillA = _t === void 0 ? "primary" : _t, _u = _s[1], secondarySkillA = _u === void 0 ? "secondary" : _u, _q), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ((_v = robotA[0], numberB = _v === void 0 ? -1 : _v, robotA), i = 0; i < 1; i++) { + console.log(numberB); +} +for ((_w = getRobot(), _x = _w[0], numberB = _x === void 0 ? -1 : _x, _w), i = 0; i < 1; i++) { + console.log(numberB); +} +for ((_y = [2, "trimmer", "trimming"], _z = _y[0], numberB = _z === void 0 ? -1 : _z, _y), i = 0; i < 1; i++) { + console.log(numberB); +} +for ((_0 = multiRobotA[0], nameB = _0 === void 0 ? "name" : _0, multiRobotA), i = 0; i < 1; i++) { + console.log(nameB); +} +for ((_1 = getMultiRobot(), _2 = _1[0], nameB = _2 === void 0 ? "name" : _2, _1), i = 0; i < 1; i++) { + console.log(nameB); +} +for ((_3 = ["trimmer", ["trimming", "edging"]], _4 = _3[0], nameB = _4 === void 0 ? "name" : _4, _3), i = 0; i < 1; i++) { + console.log(nameB); +} +for ((_5 = robotA[0], numberA2 = _5 === void 0 ? -1 : _5, _6 = robotA[1], nameA2 = _6 === void 0 ? "name" : _6, _7 = robotA[2], skillA2 = _7 === void 0 ? "skill" : _7, robotA), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ((_8 = getRobot(), _9 = _8[0], numberA2 = _9 === void 0 ? -1 : _9, _10 = _8[1], nameA2 = _10 === void 0 ? "name" : _10, _11 = _8[2], skillA2 = _11 === void 0 ? "skill" : _11, _8), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ((_12 = [2, "trimmer", "trimming"], _13 = _12[0], numberA2 = _13 === void 0 ? -1 : _13, _14 = _12[1], nameA2 = _14 === void 0 ? "name" : _14, _15 = _12[2], skillA2 = _15 === void 0 ? "skill" : _15, _12), i = 0; i < 1; i++) { + console.log(nameA2); +} +for (var _16 = multiRobotA[0], nameMA_1 = _16 === void 0 ? "noName" : _16, _17 = multiRobotA[1], _18 = _17 === void 0 ? ["none", "none"] : _17, _19 = _18[0], primarySkillA_1 = _19 === void 0 ? "primary" : _19, _20 = _18[1], secondarySkillA_1 = _20 === void 0 ? "secondary" : _20, i_1 = 0; i_1 < 1; i_1++) { + console.log(nameMA_1); +} +for ((_21 = getMultiRobot(), _22 = _21[0], nameMA = _22 === void 0 ? "noName" : _22, _23 = _21[1], _24 = _23 === void 0 ? ["none", "none"] : _23, _25 = _24[0], primarySkillA = _25 === void 0 ? "primary" : _25, _26 = _24[1], secondarySkillA = _26 === void 0 ? "secondary" : _26, _21), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ((_27 = ["trimmer", ["trimming", "edging"]], _28 = _27[0], nameMA = _28 === void 0 ? "noName" : _28, _29 = _27[1], _30 = _29 === void 0 ? ["none", "none"] : _29, _31 = _30[0], primarySkillA = _31 === void 0 ? "primary" : _31, _32 = _30[1], secondarySkillA = _32 === void 0 ? "secondary" : _32, _27), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ((_33 = robotA[0], numberA3 = _33 === void 0 ? -1 : _33, robotAInfo = robotA.slice(1), robotA), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ((_34 = getRobot(), _35 = _34[0], numberA3 = _35 === void 0 ? -1 : _35, robotAInfo = _34.slice(1), _34), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ((_36 = [2, "trimmer", "trimming"], _37 = _36[0], numberA3 = _37 === void 0 ? -1 : _37, robotAInfo = _36.slice(1), _36), i = 0; i < 1; i++) { + console.log(numberA3); +} +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37; +//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map new file mode 100644 index 00000000000..6446d14319e --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.sourcemap.txt new file mode 100644 index 00000000000..bab5f369194 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.sourcemap.txt @@ -0,0 +1,3030 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js +mapUrl: sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js +sourceFile:sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts +------------------------------------------------------------------- +>>>var robotA = [1, "mower", "mowing"]; +1 > +2 >^^^^ +3 > ^^^^^^ +4 > ^^^ +5 > ^ +6 > ^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^^^ +11> ^ +12> ^ +1 >declare var console: { + > log(msg: any): void; + >} + >type Robot = [number, string, string]; + >type MultiSkilledRobot = [string, [string, string]]; + > + > +2 >let +3 > robotA +4 > : Robot = +5 > [ +6 > 1 +7 > , +8 > "mower" +9 > , +10> "mowing" +11> ] +12> ; +1 >Emitted(1, 1) Source(7, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(7, 5) + SourceIndex(0) +3 >Emitted(1, 11) Source(7, 11) + SourceIndex(0) +4 >Emitted(1, 14) Source(7, 21) + SourceIndex(0) +5 >Emitted(1, 15) Source(7, 22) + SourceIndex(0) +6 >Emitted(1, 16) Source(7, 23) + SourceIndex(0) +7 >Emitted(1, 18) Source(7, 25) + SourceIndex(0) +8 >Emitted(1, 25) Source(7, 32) + SourceIndex(0) +9 >Emitted(1, 27) Source(7, 34) + SourceIndex(0) +10>Emitted(1, 35) Source(7, 42) + SourceIndex(0) +11>Emitted(1, 36) Source(7, 43) + SourceIndex(0) +12>Emitted(1, 37) Source(7, 44) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(2, 1) Source(8, 1) + SourceIndex(0) +--- +>>> return robotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robotA +5 > ; +1->Emitted(3, 5) Source(9, 5) + SourceIndex(0) +2 >Emitted(3, 11) Source(9, 11) + SourceIndex(0) +3 >Emitted(3, 12) Source(9, 12) + SourceIndex(0) +4 >Emitted(3, 18) Source(9, 18) + SourceIndex(0) +5 >Emitted(3, 19) Source(9, 19) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(4, 1) Source(10, 1) + SourceIndex(0) +2 >Emitted(4, 2) Source(10, 2) + SourceIndex(0) +--- +>>>var multiRobotA = ["mower", ["mowing", ""]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^ +10> ^^ +11> ^^ +12> ^ +13> ^ +14> ^ +15> ^^^^^^^^^^^-> +1-> + > + > +2 >let +3 > multiRobotA +4 > : MultiSkilledRobot = +5 > [ +6 > "mower" +7 > , +8 > [ +9 > "mowing" +10> , +11> "" +12> ] +13> ] +14> ; +1->Emitted(5, 1) Source(12, 1) + SourceIndex(0) +2 >Emitted(5, 5) Source(12, 5) + SourceIndex(0) +3 >Emitted(5, 16) Source(12, 16) + SourceIndex(0) +4 >Emitted(5, 19) Source(12, 38) + SourceIndex(0) +5 >Emitted(5, 20) Source(12, 39) + SourceIndex(0) +6 >Emitted(5, 27) Source(12, 46) + SourceIndex(0) +7 >Emitted(5, 29) Source(12, 48) + SourceIndex(0) +8 >Emitted(5, 30) Source(12, 49) + SourceIndex(0) +9 >Emitted(5, 38) Source(12, 57) + SourceIndex(0) +10>Emitted(5, 40) Source(12, 59) + SourceIndex(0) +11>Emitted(5, 42) Source(12, 61) + SourceIndex(0) +12>Emitted(5, 43) Source(12, 62) + SourceIndex(0) +13>Emitted(5, 44) Source(12, 63) + SourceIndex(0) +14>Emitted(5, 45) Source(12, 64) + SourceIndex(0) +--- +>>>var multiRobotB = ["trimmer", ["trimming", "edging"]]; +1-> +2 >^^^^ +3 > ^^^^^^^^^^^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^ +7 > ^^ +8 > ^ +9 > ^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^ +12> ^ +13> ^ +14> ^ +1-> + > +2 >let +3 > multiRobotB +4 > : MultiSkilledRobot = +5 > [ +6 > "trimmer" +7 > , +8 > [ +9 > "trimming" +10> , +11> "edging" +12> ] +13> ] +14> ; +1->Emitted(6, 1) Source(13, 1) + SourceIndex(0) +2 >Emitted(6, 5) Source(13, 5) + SourceIndex(0) +3 >Emitted(6, 16) Source(13, 16) + SourceIndex(0) +4 >Emitted(6, 19) Source(13, 38) + SourceIndex(0) +5 >Emitted(6, 20) Source(13, 39) + SourceIndex(0) +6 >Emitted(6, 29) Source(13, 48) + SourceIndex(0) +7 >Emitted(6, 31) Source(13, 50) + SourceIndex(0) +8 >Emitted(6, 32) Source(13, 51) + SourceIndex(0) +9 >Emitted(6, 42) Source(13, 61) + SourceIndex(0) +10>Emitted(6, 44) Source(13, 63) + SourceIndex(0) +11>Emitted(6, 52) Source(13, 71) + SourceIndex(0) +12>Emitted(6, 53) Source(13, 72) + SourceIndex(0) +13>Emitted(6, 54) Source(13, 73) + SourceIndex(0) +14>Emitted(6, 55) Source(13, 74) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(7, 1) Source(14, 1) + SourceIndex(0) +--- +>>> return multiRobotA; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobotA +5 > ; +1->Emitted(8, 5) Source(15, 5) + SourceIndex(0) +2 >Emitted(8, 11) Source(15, 11) + SourceIndex(0) +3 >Emitted(8, 12) Source(15, 12) + SourceIndex(0) +4 >Emitted(8, 23) Source(15, 23) + SourceIndex(0) +5 >Emitted(8, 24) Source(15, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(9, 1) Source(16, 1) + SourceIndex(0) +2 >Emitted(9, 2) Source(16, 2) + SourceIndex(0) +--- +>>>var nameA, primarySkillA, secondarySkillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primarySkillA: string +6 > , +7 > secondarySkillA: string +8 > ; +1->Emitted(10, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(10, 10) Source(18, 18) + SourceIndex(0) +4 >Emitted(10, 12) Source(18, 20) + SourceIndex(0) +5 >Emitted(10, 25) Source(18, 41) + SourceIndex(0) +6 >Emitted(10, 27) Source(18, 43) + SourceIndex(0) +7 >Emitted(10, 42) Source(18, 66) + SourceIndex(0) +8 >Emitted(10, 43) Source(18, 67) + SourceIndex(0) +--- +>>>var numberB, nameB; +1 > +2 >^^^^ +3 > ^^^^^^^ +4 > ^^ +5 > ^^^^^ +6 > ^ +7 > ^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > numberB: number +4 > , +5 > nameB: string +6 > ; +1 >Emitted(11, 1) Source(19, 1) + SourceIndex(0) +2 >Emitted(11, 5) Source(19, 5) + SourceIndex(0) +3 >Emitted(11, 12) Source(19, 20) + SourceIndex(0) +4 >Emitted(11, 14) Source(19, 22) + SourceIndex(0) +5 >Emitted(11, 19) Source(19, 35) + SourceIndex(0) +6 >Emitted(11, 20) Source(19, 36) + SourceIndex(0) +--- +>>>var numberA2, nameA2, skillA2, nameMA; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^ +6 > ^^ +7 > ^^^^^^^ +8 > ^^ +9 > ^^^^^^ +10> ^ +11> ^^^^^-> +1-> + > +2 >let +3 > numberA2: number +4 > , +5 > nameA2: string +6 > , +7 > skillA2: string +8 > , +9 > nameMA: string +10> ; +1->Emitted(12, 1) Source(20, 1) + SourceIndex(0) +2 >Emitted(12, 5) Source(20, 5) + SourceIndex(0) +3 >Emitted(12, 13) Source(20, 21) + SourceIndex(0) +4 >Emitted(12, 15) Source(20, 23) + SourceIndex(0) +5 >Emitted(12, 21) Source(20, 37) + SourceIndex(0) +6 >Emitted(12, 23) Source(20, 39) + SourceIndex(0) +7 >Emitted(12, 30) Source(20, 54) + SourceIndex(0) +8 >Emitted(12, 32) Source(20, 56) + SourceIndex(0) +9 >Emitted(12, 38) Source(20, 70) + SourceIndex(0) +10>Emitted(12, 39) Source(20, 71) + SourceIndex(0) +--- +>>>var numberA3, robotAInfo, multiRobotAInfo; +1-> +2 >^^^^ +3 > ^^^^^^^^ +4 > ^^ +5 > ^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^ +8 > ^ +1-> + > +2 >let +3 > numberA3: number +4 > , +5 > robotAInfo: (number | string)[] +6 > , +7 > multiRobotAInfo: (string | [string, string])[] +8 > ; +1->Emitted(13, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(13, 5) Source(21, 5) + SourceIndex(0) +3 >Emitted(13, 13) Source(21, 21) + SourceIndex(0) +4 >Emitted(13, 15) Source(21, 23) + SourceIndex(0) +5 >Emitted(13, 25) Source(21, 54) + SourceIndex(0) +6 >Emitted(13, 27) Source(21, 56) + SourceIndex(0) +7 >Emitted(13, 42) Source(21, 102) + SourceIndex(0) +8 >Emitted(13, 43) Source(21, 103) + SourceIndex(0) +--- +>>>var i; +1 > +2 >^^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > i: number +4 > ; +1 >Emitted(14, 1) Source(22, 1) + SourceIndex(0) +2 >Emitted(14, 5) Source(22, 5) + SourceIndex(0) +3 >Emitted(14, 6) Source(22, 14) + SourceIndex(0) +4 >Emitted(14, 7) Source(22, 15) + SourceIndex(0) +--- +>>>for ((_a = robotA[1], nameA = _a === void 0 ? "name" : _a, robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [, +6 > nameA = "name" +7 > +8 > nameA = "name" +9 > ] = +10> robotA +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(15, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(15, 4) Source(24, 4) + SourceIndex(0) +3 >Emitted(15, 5) Source(24, 5) + SourceIndex(0) +4 >Emitted(15, 6) Source(24, 6) + SourceIndex(0) +5 >Emitted(15, 7) Source(24, 9) + SourceIndex(0) +6 >Emitted(15, 21) Source(24, 23) + SourceIndex(0) +7 >Emitted(15, 23) Source(24, 9) + SourceIndex(0) +8 >Emitted(15, 58) Source(24, 23) + SourceIndex(0) +9 >Emitted(15, 60) Source(24, 27) + SourceIndex(0) +10>Emitted(15, 66) Source(24, 33) + SourceIndex(0) +11>Emitted(15, 67) Source(24, 33) + SourceIndex(0) +12>Emitted(15, 69) Source(24, 35) + SourceIndex(0) +13>Emitted(15, 70) Source(24, 36) + SourceIndex(0) +14>Emitted(15, 73) Source(24, 39) + SourceIndex(0) +15>Emitted(15, 74) Source(24, 40) + SourceIndex(0) +16>Emitted(15, 76) Source(24, 42) + SourceIndex(0) +17>Emitted(15, 77) Source(24, 43) + SourceIndex(0) +18>Emitted(15, 80) Source(24, 46) + SourceIndex(0) +19>Emitted(15, 81) Source(24, 47) + SourceIndex(0) +20>Emitted(15, 83) Source(24, 49) + SourceIndex(0) +21>Emitted(15, 84) Source(24, 50) + SourceIndex(0) +22>Emitted(15, 86) Source(24, 52) + SourceIndex(0) +23>Emitted(15, 88) Source(24, 54) + SourceIndex(0) +24>Emitted(15, 89) Source(24, 55) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(16, 5) Source(25, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(25, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(25, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(25, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(25, 17) + SourceIndex(0) +6 >Emitted(16, 22) Source(25, 22) + SourceIndex(0) +7 >Emitted(16, 23) Source(25, 23) + SourceIndex(0) +8 >Emitted(16, 24) Source(25, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(26, 2) + SourceIndex(0) +--- +>>>for ((_b = getRobot(), _c = _b[1], nameA = _c === void 0 ? "name" : _c, _b), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, nameA = "name"] = getRobot() +7 > +8 > nameA = "name" +9 > +10> nameA = "name" +11> ] = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(18, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(18, 4) Source(27, 4) + SourceIndex(0) +3 >Emitted(18, 5) Source(27, 5) + SourceIndex(0) +4 >Emitted(18, 6) Source(27, 6) + SourceIndex(0) +5 >Emitted(18, 7) Source(27, 6) + SourceIndex(0) +6 >Emitted(18, 22) Source(27, 37) + SourceIndex(0) +7 >Emitted(18, 24) Source(27, 9) + SourceIndex(0) +8 >Emitted(18, 34) Source(27, 23) + SourceIndex(0) +9 >Emitted(18, 36) Source(27, 9) + SourceIndex(0) +10>Emitted(18, 71) Source(27, 23) + SourceIndex(0) +11>Emitted(18, 76) Source(27, 37) + SourceIndex(0) +12>Emitted(18, 78) Source(27, 39) + SourceIndex(0) +13>Emitted(18, 79) Source(27, 40) + SourceIndex(0) +14>Emitted(18, 82) Source(27, 43) + SourceIndex(0) +15>Emitted(18, 83) Source(27, 44) + SourceIndex(0) +16>Emitted(18, 85) Source(27, 46) + SourceIndex(0) +17>Emitted(18, 86) Source(27, 47) + SourceIndex(0) +18>Emitted(18, 89) Source(27, 50) + SourceIndex(0) +19>Emitted(18, 90) Source(27, 51) + SourceIndex(0) +20>Emitted(18, 92) Source(27, 53) + SourceIndex(0) +21>Emitted(18, 93) Source(27, 54) + SourceIndex(0) +22>Emitted(18, 95) Source(27, 56) + SourceIndex(0) +23>Emitted(18, 97) Source(27, 58) + SourceIndex(0) +24>Emitted(18, 98) Source(27, 59) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(28, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(28, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(28, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(28, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(28, 17) + SourceIndex(0) +6 >Emitted(19, 22) Source(28, 22) + SourceIndex(0) +7 >Emitted(19, 23) Source(28, 23) + SourceIndex(0) +8 >Emitted(19, 24) Source(28, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(20, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(20, 2) Source(29, 2) + SourceIndex(0) +--- +>>>for ((_d = [2, "trimmer", "trimming"], _e = _d[1], nameA = _e === void 0 ? "name" : _e, _d), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, nameA = "name"] = [2, "trimmer", "trimming"] +7 > +8 > nameA = "name" +9 > +10> nameA = "name" +11> ] = [2, "trimmer", "trimming"] +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(21, 1) Source(30, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(30, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(30, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(30, 6) + SourceIndex(0) +5 >Emitted(21, 7) Source(30, 6) + SourceIndex(0) +6 >Emitted(21, 38) Source(30, 53) + SourceIndex(0) +7 >Emitted(21, 40) Source(30, 9) + SourceIndex(0) +8 >Emitted(21, 50) Source(30, 23) + SourceIndex(0) +9 >Emitted(21, 52) Source(30, 9) + SourceIndex(0) +10>Emitted(21, 87) Source(30, 23) + SourceIndex(0) +11>Emitted(21, 92) Source(30, 53) + SourceIndex(0) +12>Emitted(21, 94) Source(30, 55) + SourceIndex(0) +13>Emitted(21, 95) Source(30, 56) + SourceIndex(0) +14>Emitted(21, 98) Source(30, 59) + SourceIndex(0) +15>Emitted(21, 99) Source(30, 60) + SourceIndex(0) +16>Emitted(21, 101) Source(30, 62) + SourceIndex(0) +17>Emitted(21, 102) Source(30, 63) + SourceIndex(0) +18>Emitted(21, 105) Source(30, 66) + SourceIndex(0) +19>Emitted(21, 106) Source(30, 67) + SourceIndex(0) +20>Emitted(21, 108) Source(30, 69) + SourceIndex(0) +21>Emitted(21, 109) Source(30, 70) + SourceIndex(0) +22>Emitted(21, 111) Source(30, 72) + SourceIndex(0) +23>Emitted(21, 113) Source(30, 74) + SourceIndex(0) +24>Emitted(21, 114) Source(30, 75) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(22, 5) Source(31, 5) + SourceIndex(0) +2 >Emitted(22, 12) Source(31, 12) + SourceIndex(0) +3 >Emitted(22, 13) Source(31, 13) + SourceIndex(0) +4 >Emitted(22, 16) Source(31, 16) + SourceIndex(0) +5 >Emitted(22, 17) Source(31, 17) + SourceIndex(0) +6 >Emitted(22, 22) Source(31, 22) + SourceIndex(0) +7 >Emitted(22, 23) Source(31, 23) + SourceIndex(0) +8 >Emitted(22, 24) Source(31, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(23, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(23, 2) Source(32, 2) + SourceIndex(0) +--- +>>>for ((_f = multiRobotA[1], _g = _f === void 0 ? ["none", "none"] : _f, _h = _g[0], primarySkillA = _h === void 0 ? "primary" : _h, _j = _g[1], secondarySkillA = _j === void 0 ? "secondary" : _j, multiRobotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > [, +6 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +7 > +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +9 > +10> primarySkillA = "primary" +11> +12> primarySkillA = "primary" +13> , + > +14> secondarySkillA = "secondary" +15> +16> secondarySkillA = "secondary" +17> + > ] = ["none", "none"]] = +18> multiRobotA +19> +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(24, 1) Source(33, 1) + SourceIndex(0) +2 >Emitted(24, 4) Source(33, 4) + SourceIndex(0) +3 >Emitted(24, 5) Source(33, 5) + SourceIndex(0) +4 >Emitted(24, 6) Source(33, 6) + SourceIndex(0) +5 >Emitted(24, 7) Source(33, 9) + SourceIndex(0) +6 >Emitted(24, 26) Source(36, 21) + SourceIndex(0) +7 >Emitted(24, 28) Source(33, 9) + SourceIndex(0) +8 >Emitted(24, 70) Source(36, 21) + SourceIndex(0) +9 >Emitted(24, 72) Source(34, 5) + SourceIndex(0) +10>Emitted(24, 82) Source(34, 30) + SourceIndex(0) +11>Emitted(24, 84) Source(34, 5) + SourceIndex(0) +12>Emitted(24, 130) Source(34, 30) + SourceIndex(0) +13>Emitted(24, 132) Source(35, 5) + SourceIndex(0) +14>Emitted(24, 142) Source(35, 34) + SourceIndex(0) +15>Emitted(24, 144) Source(35, 5) + SourceIndex(0) +16>Emitted(24, 194) Source(35, 34) + SourceIndex(0) +17>Emitted(24, 196) Source(36, 25) + SourceIndex(0) +18>Emitted(24, 207) Source(36, 36) + SourceIndex(0) +19>Emitted(24, 208) Source(36, 36) + SourceIndex(0) +20>Emitted(24, 210) Source(36, 38) + SourceIndex(0) +21>Emitted(24, 211) Source(36, 39) + SourceIndex(0) +22>Emitted(24, 214) Source(36, 42) + SourceIndex(0) +23>Emitted(24, 215) Source(36, 43) + SourceIndex(0) +24>Emitted(24, 217) Source(36, 45) + SourceIndex(0) +25>Emitted(24, 218) Source(36, 46) + SourceIndex(0) +26>Emitted(24, 221) Source(36, 49) + SourceIndex(0) +27>Emitted(24, 222) Source(36, 50) + SourceIndex(0) +28>Emitted(24, 224) Source(36, 52) + SourceIndex(0) +29>Emitted(24, 225) Source(36, 53) + SourceIndex(0) +30>Emitted(24, 227) Source(36, 55) + SourceIndex(0) +31>Emitted(24, 229) Source(36, 57) + SourceIndex(0) +32>Emitted(24, 230) Source(36, 58) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(25, 5) Source(37, 5) + SourceIndex(0) +2 >Emitted(25, 12) Source(37, 12) + SourceIndex(0) +3 >Emitted(25, 13) Source(37, 13) + SourceIndex(0) +4 >Emitted(25, 16) Source(37, 16) + SourceIndex(0) +5 >Emitted(25, 17) Source(37, 17) + SourceIndex(0) +6 >Emitted(25, 30) Source(37, 30) + SourceIndex(0) +7 >Emitted(25, 31) Source(37, 31) + SourceIndex(0) +8 >Emitted(25, 32) Source(37, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(26, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(26, 2) Source(38, 2) + SourceIndex(0) +--- +>>>for ((_k = getMultiRobot(), _l = _k[1], _m = _l === void 0 ? ["none", "none"] : _l, _o = _m[0], primarySkillA = _o === void 0 ? "primary" : _o, _p = _m[1], secondarySkillA = _p === void 0 ? "secondary" : _p, _k), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"]] = getMultiRobot() +7 > +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +19> + > ] = ["none", "none"]] = getMultiRobot() +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(27, 1) Source(39, 1) + SourceIndex(0) +2 >Emitted(27, 4) Source(39, 4) + SourceIndex(0) +3 >Emitted(27, 5) Source(39, 5) + SourceIndex(0) +4 >Emitted(27, 6) Source(39, 6) + SourceIndex(0) +5 >Emitted(27, 7) Source(39, 6) + SourceIndex(0) +6 >Emitted(27, 27) Source(42, 40) + SourceIndex(0) +7 >Emitted(27, 29) Source(39, 9) + SourceIndex(0) +8 >Emitted(27, 39) Source(42, 21) + SourceIndex(0) +9 >Emitted(27, 41) Source(39, 9) + SourceIndex(0) +10>Emitted(27, 83) Source(42, 21) + SourceIndex(0) +11>Emitted(27, 85) Source(40, 5) + SourceIndex(0) +12>Emitted(27, 95) Source(40, 30) + SourceIndex(0) +13>Emitted(27, 97) Source(40, 5) + SourceIndex(0) +14>Emitted(27, 143) Source(40, 30) + SourceIndex(0) +15>Emitted(27, 145) Source(41, 5) + SourceIndex(0) +16>Emitted(27, 155) Source(41, 34) + SourceIndex(0) +17>Emitted(27, 157) Source(41, 5) + SourceIndex(0) +18>Emitted(27, 207) Source(41, 34) + SourceIndex(0) +19>Emitted(27, 212) Source(42, 40) + SourceIndex(0) +20>Emitted(27, 214) Source(42, 42) + SourceIndex(0) +21>Emitted(27, 215) Source(42, 43) + SourceIndex(0) +22>Emitted(27, 218) Source(42, 46) + SourceIndex(0) +23>Emitted(27, 219) Source(42, 47) + SourceIndex(0) +24>Emitted(27, 221) Source(42, 49) + SourceIndex(0) +25>Emitted(27, 222) Source(42, 50) + SourceIndex(0) +26>Emitted(27, 225) Source(42, 53) + SourceIndex(0) +27>Emitted(27, 226) Source(42, 54) + SourceIndex(0) +28>Emitted(27, 228) Source(42, 56) + SourceIndex(0) +29>Emitted(27, 229) Source(42, 57) + SourceIndex(0) +30>Emitted(27, 231) Source(42, 59) + SourceIndex(0) +31>Emitted(27, 233) Source(42, 61) + SourceIndex(0) +32>Emitted(27, 234) Source(42, 62) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(28, 5) Source(43, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(43, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(43, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(43, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(43, 17) + SourceIndex(0) +6 >Emitted(28, 30) Source(43, 30) + SourceIndex(0) +7 >Emitted(28, 31) Source(43, 31) + SourceIndex(0) +8 >Emitted(28, 32) Source(43, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(29, 1) Source(44, 1) + SourceIndex(0) +2 >Emitted(29, 2) Source(44, 2) + SourceIndex(0) +--- +>>>for ((_q = ["trimmer", ["trimming", "edging"]], _r = _q[1], _s = _r === void 0 ? ["none", "none"] : _r, _t = _s[0], primarySkillA = _t === void 0 ? "primary" : _t, _u = _s[1], secondarySkillA = _u === void 0 ? "secondary" : _u, _q), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]] +7 > +8 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +9 > +10> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +11> +12> primarySkillA = "primary" +13> +14> primarySkillA = "primary" +15> , + > +16> secondarySkillA = "secondary" +17> +18> secondarySkillA = "secondary" +19> + > ] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]] +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(30, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(45, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(45, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(45, 6) + SourceIndex(0) +5 >Emitted(30, 7) Source(45, 6) + SourceIndex(0) +6 >Emitted(30, 47) Source(48, 60) + SourceIndex(0) +7 >Emitted(30, 49) Source(45, 9) + SourceIndex(0) +8 >Emitted(30, 59) Source(48, 21) + SourceIndex(0) +9 >Emitted(30, 61) Source(45, 9) + SourceIndex(0) +10>Emitted(30, 103) Source(48, 21) + SourceIndex(0) +11>Emitted(30, 105) Source(46, 5) + SourceIndex(0) +12>Emitted(30, 115) Source(46, 30) + SourceIndex(0) +13>Emitted(30, 117) Source(46, 5) + SourceIndex(0) +14>Emitted(30, 163) Source(46, 30) + SourceIndex(0) +15>Emitted(30, 165) Source(47, 5) + SourceIndex(0) +16>Emitted(30, 175) Source(47, 34) + SourceIndex(0) +17>Emitted(30, 177) Source(47, 5) + SourceIndex(0) +18>Emitted(30, 227) Source(47, 34) + SourceIndex(0) +19>Emitted(30, 232) Source(48, 60) + SourceIndex(0) +20>Emitted(30, 234) Source(48, 62) + SourceIndex(0) +21>Emitted(30, 235) Source(48, 63) + SourceIndex(0) +22>Emitted(30, 238) Source(48, 66) + SourceIndex(0) +23>Emitted(30, 239) Source(48, 67) + SourceIndex(0) +24>Emitted(30, 241) Source(48, 69) + SourceIndex(0) +25>Emitted(30, 242) Source(48, 70) + SourceIndex(0) +26>Emitted(30, 245) Source(48, 73) + SourceIndex(0) +27>Emitted(30, 246) Source(48, 74) + SourceIndex(0) +28>Emitted(30, 248) Source(48, 76) + SourceIndex(0) +29>Emitted(30, 249) Source(48, 77) + SourceIndex(0) +30>Emitted(30, 251) Source(48, 79) + SourceIndex(0) +31>Emitted(30, 253) Source(48, 81) + SourceIndex(0) +32>Emitted(30, 254) Source(48, 82) + SourceIndex(0) +--- +>>> console.log(primarySkillA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primarySkillA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(49, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(49, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(49, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(49, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(49, 17) + SourceIndex(0) +6 >Emitted(31, 30) Source(49, 30) + SourceIndex(0) +7 >Emitted(31, 31) Source(49, 31) + SourceIndex(0) +8 >Emitted(31, 32) Source(49, 32) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(50, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(50, 2) + SourceIndex(0) +--- +>>>for ((_v = robotA[0], numberB = _v === void 0 ? -1 : _v, robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [ +6 > numberB = -1 +7 > +8 > numberB = -1 +9 > ] = +10> robotA +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(33, 1) Source(52, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(52, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(52, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(52, 6) + SourceIndex(0) +5 >Emitted(33, 7) Source(52, 7) + SourceIndex(0) +6 >Emitted(33, 21) Source(52, 19) + SourceIndex(0) +7 >Emitted(33, 23) Source(52, 7) + SourceIndex(0) +8 >Emitted(33, 56) Source(52, 19) + SourceIndex(0) +9 >Emitted(33, 58) Source(52, 23) + SourceIndex(0) +10>Emitted(33, 64) Source(52, 29) + SourceIndex(0) +11>Emitted(33, 65) Source(52, 29) + SourceIndex(0) +12>Emitted(33, 67) Source(52, 31) + SourceIndex(0) +13>Emitted(33, 68) Source(52, 32) + SourceIndex(0) +14>Emitted(33, 71) Source(52, 35) + SourceIndex(0) +15>Emitted(33, 72) Source(52, 36) + SourceIndex(0) +16>Emitted(33, 74) Source(52, 38) + SourceIndex(0) +17>Emitted(33, 75) Source(52, 39) + SourceIndex(0) +18>Emitted(33, 78) Source(52, 42) + SourceIndex(0) +19>Emitted(33, 79) Source(52, 43) + SourceIndex(0) +20>Emitted(33, 81) Source(52, 45) + SourceIndex(0) +21>Emitted(33, 82) Source(52, 46) + SourceIndex(0) +22>Emitted(33, 84) Source(52, 48) + SourceIndex(0) +23>Emitted(33, 86) Source(52, 50) + SourceIndex(0) +24>Emitted(33, 87) Source(52, 51) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(34, 5) Source(53, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(53, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(53, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(53, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(53, 17) + SourceIndex(0) +6 >Emitted(34, 24) Source(53, 24) + SourceIndex(0) +7 >Emitted(34, 25) Source(53, 25) + SourceIndex(0) +8 >Emitted(34, 26) Source(53, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(54, 2) + SourceIndex(0) +--- +>>>for ((_w = getRobot(), _x = _w[0], numberB = _x === void 0 ? -1 : _x, _w), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberB = -1] = getRobot() +7 > +8 > numberB = -1 +9 > +10> numberB = -1 +11> ] = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(36, 1) Source(55, 1) + SourceIndex(0) +2 >Emitted(36, 4) Source(55, 4) + SourceIndex(0) +3 >Emitted(36, 5) Source(55, 5) + SourceIndex(0) +4 >Emitted(36, 6) Source(55, 6) + SourceIndex(0) +5 >Emitted(36, 7) Source(55, 6) + SourceIndex(0) +6 >Emitted(36, 22) Source(55, 33) + SourceIndex(0) +7 >Emitted(36, 24) Source(55, 7) + SourceIndex(0) +8 >Emitted(36, 34) Source(55, 19) + SourceIndex(0) +9 >Emitted(36, 36) Source(55, 7) + SourceIndex(0) +10>Emitted(36, 69) Source(55, 19) + SourceIndex(0) +11>Emitted(36, 74) Source(55, 33) + SourceIndex(0) +12>Emitted(36, 76) Source(55, 35) + SourceIndex(0) +13>Emitted(36, 77) Source(55, 36) + SourceIndex(0) +14>Emitted(36, 80) Source(55, 39) + SourceIndex(0) +15>Emitted(36, 81) Source(55, 40) + SourceIndex(0) +16>Emitted(36, 83) Source(55, 42) + SourceIndex(0) +17>Emitted(36, 84) Source(55, 43) + SourceIndex(0) +18>Emitted(36, 87) Source(55, 46) + SourceIndex(0) +19>Emitted(36, 88) Source(55, 47) + SourceIndex(0) +20>Emitted(36, 90) Source(55, 49) + SourceIndex(0) +21>Emitted(36, 91) Source(55, 50) + SourceIndex(0) +22>Emitted(36, 93) Source(55, 52) + SourceIndex(0) +23>Emitted(36, 95) Source(55, 54) + SourceIndex(0) +24>Emitted(36, 96) Source(55, 55) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(37, 5) Source(56, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(56, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(56, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(56, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(56, 17) + SourceIndex(0) +6 >Emitted(37, 24) Source(56, 24) + SourceIndex(0) +7 >Emitted(37, 25) Source(56, 25) + SourceIndex(0) +8 >Emitted(37, 26) Source(56, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(57, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(57, 2) + SourceIndex(0) +--- +>>>for ((_y = [2, "trimmer", "trimming"], _z = _y[0], numberB = _z === void 0 ? -1 : _z, _y), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberB = -1] = [2, "trimmer", "trimming"] +7 > +8 > numberB = -1 +9 > +10> numberB = -1 +11> ] = [2, "trimmer", "trimming"] +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(39, 1) Source(58, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(58, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(58, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(58, 6) + SourceIndex(0) +5 >Emitted(39, 7) Source(58, 6) + SourceIndex(0) +6 >Emitted(39, 38) Source(58, 49) + SourceIndex(0) +7 >Emitted(39, 40) Source(58, 7) + SourceIndex(0) +8 >Emitted(39, 50) Source(58, 19) + SourceIndex(0) +9 >Emitted(39, 52) Source(58, 7) + SourceIndex(0) +10>Emitted(39, 85) Source(58, 19) + SourceIndex(0) +11>Emitted(39, 90) Source(58, 49) + SourceIndex(0) +12>Emitted(39, 92) Source(58, 51) + SourceIndex(0) +13>Emitted(39, 93) Source(58, 52) + SourceIndex(0) +14>Emitted(39, 96) Source(58, 55) + SourceIndex(0) +15>Emitted(39, 97) Source(58, 56) + SourceIndex(0) +16>Emitted(39, 99) Source(58, 58) + SourceIndex(0) +17>Emitted(39, 100) Source(58, 59) + SourceIndex(0) +18>Emitted(39, 103) Source(58, 62) + SourceIndex(0) +19>Emitted(39, 104) Source(58, 63) + SourceIndex(0) +20>Emitted(39, 106) Source(58, 65) + SourceIndex(0) +21>Emitted(39, 107) Source(58, 66) + SourceIndex(0) +22>Emitted(39, 109) Source(58, 68) + SourceIndex(0) +23>Emitted(39, 111) Source(58, 70) + SourceIndex(0) +24>Emitted(39, 112) Source(58, 71) + SourceIndex(0) +--- +>>> console.log(numberB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberB +7 > ) +8 > ; +1 >Emitted(40, 5) Source(59, 5) + SourceIndex(0) +2 >Emitted(40, 12) Source(59, 12) + SourceIndex(0) +3 >Emitted(40, 13) Source(59, 13) + SourceIndex(0) +4 >Emitted(40, 16) Source(59, 16) + SourceIndex(0) +5 >Emitted(40, 17) Source(59, 17) + SourceIndex(0) +6 >Emitted(40, 24) Source(59, 24) + SourceIndex(0) +7 >Emitted(40, 25) Source(59, 25) + SourceIndex(0) +8 >Emitted(40, 26) Source(59, 26) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(60, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(60, 2) + SourceIndex(0) +--- +>>>for ((_0 = multiRobotA[0], nameB = _0 === void 0 ? "name" : _0, multiRobotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > [ +6 > nameB = "name" +7 > +8 > nameB = "name" +9 > ] = +10> multiRobotA +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(42, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(42, 4) Source(61, 4) + SourceIndex(0) +3 >Emitted(42, 5) Source(61, 5) + SourceIndex(0) +4 >Emitted(42, 6) Source(61, 6) + SourceIndex(0) +5 >Emitted(42, 7) Source(61, 7) + SourceIndex(0) +6 >Emitted(42, 26) Source(61, 21) + SourceIndex(0) +7 >Emitted(42, 28) Source(61, 7) + SourceIndex(0) +8 >Emitted(42, 63) Source(61, 21) + SourceIndex(0) +9 >Emitted(42, 65) Source(61, 25) + SourceIndex(0) +10>Emitted(42, 76) Source(61, 36) + SourceIndex(0) +11>Emitted(42, 77) Source(61, 36) + SourceIndex(0) +12>Emitted(42, 79) Source(61, 38) + SourceIndex(0) +13>Emitted(42, 80) Source(61, 39) + SourceIndex(0) +14>Emitted(42, 83) Source(61, 42) + SourceIndex(0) +15>Emitted(42, 84) Source(61, 43) + SourceIndex(0) +16>Emitted(42, 86) Source(61, 45) + SourceIndex(0) +17>Emitted(42, 87) Source(61, 46) + SourceIndex(0) +18>Emitted(42, 90) Source(61, 49) + SourceIndex(0) +19>Emitted(42, 91) Source(61, 50) + SourceIndex(0) +20>Emitted(42, 93) Source(61, 52) + SourceIndex(0) +21>Emitted(42, 94) Source(61, 53) + SourceIndex(0) +22>Emitted(42, 96) Source(61, 55) + SourceIndex(0) +23>Emitted(42, 98) Source(61, 57) + SourceIndex(0) +24>Emitted(42, 99) Source(61, 58) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(43, 5) Source(62, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(62, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(62, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(62, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(62, 17) + SourceIndex(0) +6 >Emitted(43, 22) Source(62, 22) + SourceIndex(0) +7 >Emitted(43, 23) Source(62, 23) + SourceIndex(0) +8 >Emitted(43, 24) Source(62, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(44, 1) Source(63, 1) + SourceIndex(0) +2 >Emitted(44, 2) Source(63, 2) + SourceIndex(0) +--- +>>>for ((_1 = getMultiRobot(), _2 = _1[0], nameB = _2 === void 0 ? "name" : _2, _1), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameB = "name"] = getMultiRobot() +7 > +8 > nameB = "name" +9 > +10> nameB = "name" +11> ] = getMultiRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(45, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(64, 6) + SourceIndex(0) +5 >Emitted(45, 7) Source(64, 6) + SourceIndex(0) +6 >Emitted(45, 27) Source(64, 40) + SourceIndex(0) +7 >Emitted(45, 29) Source(64, 7) + SourceIndex(0) +8 >Emitted(45, 39) Source(64, 21) + SourceIndex(0) +9 >Emitted(45, 41) Source(64, 7) + SourceIndex(0) +10>Emitted(45, 76) Source(64, 21) + SourceIndex(0) +11>Emitted(45, 81) Source(64, 40) + SourceIndex(0) +12>Emitted(45, 83) Source(64, 42) + SourceIndex(0) +13>Emitted(45, 84) Source(64, 43) + SourceIndex(0) +14>Emitted(45, 87) Source(64, 46) + SourceIndex(0) +15>Emitted(45, 88) Source(64, 47) + SourceIndex(0) +16>Emitted(45, 90) Source(64, 49) + SourceIndex(0) +17>Emitted(45, 91) Source(64, 50) + SourceIndex(0) +18>Emitted(45, 94) Source(64, 53) + SourceIndex(0) +19>Emitted(45, 95) Source(64, 54) + SourceIndex(0) +20>Emitted(45, 97) Source(64, 56) + SourceIndex(0) +21>Emitted(45, 98) Source(64, 57) + SourceIndex(0) +22>Emitted(45, 100) Source(64, 59) + SourceIndex(0) +23>Emitted(45, 102) Source(64, 61) + SourceIndex(0) +24>Emitted(45, 103) Source(64, 62) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(46, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(46, 12) Source(65, 12) + SourceIndex(0) +3 >Emitted(46, 13) Source(65, 13) + SourceIndex(0) +4 >Emitted(46, 16) Source(65, 16) + SourceIndex(0) +5 >Emitted(46, 17) Source(65, 17) + SourceIndex(0) +6 >Emitted(46, 22) Source(65, 22) + SourceIndex(0) +7 >Emitted(46, 23) Source(65, 23) + SourceIndex(0) +8 >Emitted(46, 24) Source(65, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(47, 1) Source(66, 1) + SourceIndex(0) +2 >Emitted(47, 2) Source(66, 2) + SourceIndex(0) +--- +>>>for ((_3 = ["trimmer", ["trimming", "edging"]], _4 = _3[0], nameB = _4 === void 0 ? "name" : _4, _3), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameB = "name"] = ["trimmer", ["trimming", "edging"]] +7 > +8 > nameB = "name" +9 > +10> nameB = "name" +11> ] = ["trimmer", ["trimming", "edging"]] +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(48, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(48, 4) Source(67, 4) + SourceIndex(0) +3 >Emitted(48, 5) Source(67, 5) + SourceIndex(0) +4 >Emitted(48, 6) Source(67, 6) + SourceIndex(0) +5 >Emitted(48, 7) Source(67, 6) + SourceIndex(0) +6 >Emitted(48, 47) Source(67, 60) + SourceIndex(0) +7 >Emitted(48, 49) Source(67, 7) + SourceIndex(0) +8 >Emitted(48, 59) Source(67, 21) + SourceIndex(0) +9 >Emitted(48, 61) Source(67, 7) + SourceIndex(0) +10>Emitted(48, 96) Source(67, 21) + SourceIndex(0) +11>Emitted(48, 101) Source(67, 60) + SourceIndex(0) +12>Emitted(48, 103) Source(67, 62) + SourceIndex(0) +13>Emitted(48, 104) Source(67, 63) + SourceIndex(0) +14>Emitted(48, 107) Source(67, 66) + SourceIndex(0) +15>Emitted(48, 108) Source(67, 67) + SourceIndex(0) +16>Emitted(48, 110) Source(67, 69) + SourceIndex(0) +17>Emitted(48, 111) Source(67, 70) + SourceIndex(0) +18>Emitted(48, 114) Source(67, 73) + SourceIndex(0) +19>Emitted(48, 115) Source(67, 74) + SourceIndex(0) +20>Emitted(48, 117) Source(67, 76) + SourceIndex(0) +21>Emitted(48, 118) Source(67, 77) + SourceIndex(0) +22>Emitted(48, 120) Source(67, 79) + SourceIndex(0) +23>Emitted(48, 122) Source(67, 81) + SourceIndex(0) +24>Emitted(48, 123) Source(67, 82) + SourceIndex(0) +--- +>>> console.log(nameB); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameB +7 > ) +8 > ; +1 >Emitted(49, 5) Source(68, 5) + SourceIndex(0) +2 >Emitted(49, 12) Source(68, 12) + SourceIndex(0) +3 >Emitted(49, 13) Source(68, 13) + SourceIndex(0) +4 >Emitted(49, 16) Source(68, 16) + SourceIndex(0) +5 >Emitted(49, 17) Source(68, 17) + SourceIndex(0) +6 >Emitted(49, 22) Source(68, 22) + SourceIndex(0) +7 >Emitted(49, 23) Source(68, 23) + SourceIndex(0) +8 >Emitted(49, 24) Source(68, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(50, 1) Source(69, 1) + SourceIndex(0) +2 >Emitted(50, 2) Source(69, 2) + SourceIndex(0) +--- +>>>for ((_5 = robotA[0], numberA2 = _5 === void 0 ? -1 : _5, _6 = robotA[1], nameA2 = _6 === void 0 ? "name" : _6, _7 = robotA[2], skillA2 = _7 === void 0 ? "skill" : _7, robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [ +6 > numberA2 = -1 +7 > +8 > numberA2 = -1 +9 > , +10> nameA2 = "name" +11> +12> nameA2 = "name" +13> , +14> skillA2 = "skill" +15> +16> skillA2 = "skill" +17> ] = +18> robotA +19> +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(51, 1) Source(71, 1) + SourceIndex(0) +2 >Emitted(51, 4) Source(71, 4) + SourceIndex(0) +3 >Emitted(51, 5) Source(71, 5) + SourceIndex(0) +4 >Emitted(51, 6) Source(71, 6) + SourceIndex(0) +5 >Emitted(51, 7) Source(71, 7) + SourceIndex(0) +6 >Emitted(51, 21) Source(71, 20) + SourceIndex(0) +7 >Emitted(51, 23) Source(71, 7) + SourceIndex(0) +8 >Emitted(51, 57) Source(71, 20) + SourceIndex(0) +9 >Emitted(51, 59) Source(71, 22) + SourceIndex(0) +10>Emitted(51, 73) Source(71, 37) + SourceIndex(0) +11>Emitted(51, 75) Source(71, 22) + SourceIndex(0) +12>Emitted(51, 111) Source(71, 37) + SourceIndex(0) +13>Emitted(51, 113) Source(71, 39) + SourceIndex(0) +14>Emitted(51, 127) Source(71, 56) + SourceIndex(0) +15>Emitted(51, 129) Source(71, 39) + SourceIndex(0) +16>Emitted(51, 167) Source(71, 56) + SourceIndex(0) +17>Emitted(51, 169) Source(71, 60) + SourceIndex(0) +18>Emitted(51, 175) Source(71, 66) + SourceIndex(0) +19>Emitted(51, 176) Source(71, 66) + SourceIndex(0) +20>Emitted(51, 178) Source(71, 68) + SourceIndex(0) +21>Emitted(51, 179) Source(71, 69) + SourceIndex(0) +22>Emitted(51, 182) Source(71, 72) + SourceIndex(0) +23>Emitted(51, 183) Source(71, 73) + SourceIndex(0) +24>Emitted(51, 185) Source(71, 75) + SourceIndex(0) +25>Emitted(51, 186) Source(71, 76) + SourceIndex(0) +26>Emitted(51, 189) Source(71, 79) + SourceIndex(0) +27>Emitted(51, 190) Source(71, 80) + SourceIndex(0) +28>Emitted(51, 192) Source(71, 82) + SourceIndex(0) +29>Emitted(51, 193) Source(71, 83) + SourceIndex(0) +30>Emitted(51, 195) Source(71, 85) + SourceIndex(0) +31>Emitted(51, 197) Source(71, 87) + SourceIndex(0) +32>Emitted(51, 198) Source(71, 88) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(52, 5) Source(72, 5) + SourceIndex(0) +2 >Emitted(52, 12) Source(72, 12) + SourceIndex(0) +3 >Emitted(52, 13) Source(72, 13) + SourceIndex(0) +4 >Emitted(52, 16) Source(72, 16) + SourceIndex(0) +5 >Emitted(52, 17) Source(72, 17) + SourceIndex(0) +6 >Emitted(52, 23) Source(72, 23) + SourceIndex(0) +7 >Emitted(52, 24) Source(72, 24) + SourceIndex(0) +8 >Emitted(52, 25) Source(72, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(53, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(53, 2) Source(73, 2) + SourceIndex(0) +--- +>>>for ((_8 = getRobot(), _9 = _8[0], numberA2 = _9 === void 0 ? -1 : _9, _10 = _8[1], nameA2 = _10 === void 0 ? "name" : _10, _11 = _8[2], skillA2 = _11 === void 0 ? "skill" : _11, _8), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot() +7 > +8 > numberA2 = -1 +9 > +10> numberA2 = -1 +11> , +12> nameA2 = "name" +13> +14> nameA2 = "name" +15> , +16> skillA2 = "skill" +17> +18> skillA2 = "skill" +19> ] = getRobot() +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(54, 1) Source(74, 1) + SourceIndex(0) +2 >Emitted(54, 4) Source(74, 4) + SourceIndex(0) +3 >Emitted(54, 5) Source(74, 5) + SourceIndex(0) +4 >Emitted(54, 6) Source(74, 6) + SourceIndex(0) +5 >Emitted(54, 7) Source(74, 6) + SourceIndex(0) +6 >Emitted(54, 22) Source(74, 70) + SourceIndex(0) +7 >Emitted(54, 24) Source(74, 7) + SourceIndex(0) +8 >Emitted(54, 34) Source(74, 20) + SourceIndex(0) +9 >Emitted(54, 36) Source(74, 7) + SourceIndex(0) +10>Emitted(54, 70) Source(74, 20) + SourceIndex(0) +11>Emitted(54, 72) Source(74, 22) + SourceIndex(0) +12>Emitted(54, 83) Source(74, 37) + SourceIndex(0) +13>Emitted(54, 85) Source(74, 22) + SourceIndex(0) +14>Emitted(54, 123) Source(74, 37) + SourceIndex(0) +15>Emitted(54, 125) Source(74, 39) + SourceIndex(0) +16>Emitted(54, 136) Source(74, 56) + SourceIndex(0) +17>Emitted(54, 138) Source(74, 39) + SourceIndex(0) +18>Emitted(54, 178) Source(74, 56) + SourceIndex(0) +19>Emitted(54, 183) Source(74, 70) + SourceIndex(0) +20>Emitted(54, 185) Source(74, 72) + SourceIndex(0) +21>Emitted(54, 186) Source(74, 73) + SourceIndex(0) +22>Emitted(54, 189) Source(74, 76) + SourceIndex(0) +23>Emitted(54, 190) Source(74, 77) + SourceIndex(0) +24>Emitted(54, 192) Source(74, 79) + SourceIndex(0) +25>Emitted(54, 193) Source(74, 80) + SourceIndex(0) +26>Emitted(54, 196) Source(74, 83) + SourceIndex(0) +27>Emitted(54, 197) Source(74, 84) + SourceIndex(0) +28>Emitted(54, 199) Source(74, 86) + SourceIndex(0) +29>Emitted(54, 200) Source(74, 87) + SourceIndex(0) +30>Emitted(54, 202) Source(74, 89) + SourceIndex(0) +31>Emitted(54, 204) Source(74, 91) + SourceIndex(0) +32>Emitted(54, 205) Source(74, 92) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(55, 5) Source(75, 5) + SourceIndex(0) +2 >Emitted(55, 12) Source(75, 12) + SourceIndex(0) +3 >Emitted(55, 13) Source(75, 13) + SourceIndex(0) +4 >Emitted(55, 16) Source(75, 16) + SourceIndex(0) +5 >Emitted(55, 17) Source(75, 17) + SourceIndex(0) +6 >Emitted(55, 23) Source(75, 23) + SourceIndex(0) +7 >Emitted(55, 24) Source(75, 24) + SourceIndex(0) +8 >Emitted(55, 25) Source(75, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(56, 1) Source(76, 1) + SourceIndex(0) +2 >Emitted(56, 2) Source(76, 2) + SourceIndex(0) +--- +>>>for ((_12 = [2, "trimmer", "trimming"], _13 = _12[0], numberA2 = _13 === void 0 ? -1 : _13, _14 = _12[1], nameA2 = _14 === void 0 ? "name" : _14, _15 = _12[2], skillA2 = _15 === void 0 ? "skill" : _15, _12), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"] +7 > +8 > numberA2 = -1 +9 > +10> numberA2 = -1 +11> , +12> nameA2 = "name" +13> +14> nameA2 = "name" +15> , +16> skillA2 = "skill" +17> +18> skillA2 = "skill" +19> ] = [2, "trimmer", "trimming"] +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(57, 1) Source(77, 1) + SourceIndex(0) +2 >Emitted(57, 4) Source(77, 4) + SourceIndex(0) +3 >Emitted(57, 5) Source(77, 5) + SourceIndex(0) +4 >Emitted(57, 6) Source(77, 6) + SourceIndex(0) +5 >Emitted(57, 7) Source(77, 6) + SourceIndex(0) +6 >Emitted(57, 39) Source(77, 86) + SourceIndex(0) +7 >Emitted(57, 41) Source(77, 7) + SourceIndex(0) +8 >Emitted(57, 53) Source(77, 20) + SourceIndex(0) +9 >Emitted(57, 55) Source(77, 7) + SourceIndex(0) +10>Emitted(57, 91) Source(77, 20) + SourceIndex(0) +11>Emitted(57, 93) Source(77, 22) + SourceIndex(0) +12>Emitted(57, 105) Source(77, 37) + SourceIndex(0) +13>Emitted(57, 107) Source(77, 22) + SourceIndex(0) +14>Emitted(57, 145) Source(77, 37) + SourceIndex(0) +15>Emitted(57, 147) Source(77, 39) + SourceIndex(0) +16>Emitted(57, 159) Source(77, 56) + SourceIndex(0) +17>Emitted(57, 161) Source(77, 39) + SourceIndex(0) +18>Emitted(57, 201) Source(77, 56) + SourceIndex(0) +19>Emitted(57, 207) Source(77, 86) + SourceIndex(0) +20>Emitted(57, 209) Source(77, 88) + SourceIndex(0) +21>Emitted(57, 210) Source(77, 89) + SourceIndex(0) +22>Emitted(57, 213) Source(77, 92) + SourceIndex(0) +23>Emitted(57, 214) Source(77, 93) + SourceIndex(0) +24>Emitted(57, 216) Source(77, 95) + SourceIndex(0) +25>Emitted(57, 217) Source(77, 96) + SourceIndex(0) +26>Emitted(57, 220) Source(77, 99) + SourceIndex(0) +27>Emitted(57, 221) Source(77, 100) + SourceIndex(0) +28>Emitted(57, 223) Source(77, 102) + SourceIndex(0) +29>Emitted(57, 224) Source(77, 103) + SourceIndex(0) +30>Emitted(57, 226) Source(77, 105) + SourceIndex(0) +31>Emitted(57, 228) Source(77, 107) + SourceIndex(0) +32>Emitted(57, 229) Source(77, 108) + SourceIndex(0) +--- +>>> console.log(nameA2); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA2 +7 > ) +8 > ; +1 >Emitted(58, 5) Source(78, 5) + SourceIndex(0) +2 >Emitted(58, 12) Source(78, 12) + SourceIndex(0) +3 >Emitted(58, 13) Source(78, 13) + SourceIndex(0) +4 >Emitted(58, 16) Source(78, 16) + SourceIndex(0) +5 >Emitted(58, 17) Source(78, 17) + SourceIndex(0) +6 >Emitted(58, 23) Source(78, 23) + SourceIndex(0) +7 >Emitted(58, 24) Source(78, 24) + SourceIndex(0) +8 >Emitted(58, 25) Source(78, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(59, 1) Source(79, 1) + SourceIndex(0) +2 >Emitted(59, 2) Source(79, 2) + SourceIndex(0) +--- +>>>for (var _16 = multiRobotA[0], nameMA_1 = _16 === void 0 ? "noName" : _16, _17 = multiRobotA[1], _18 = _17 === void 0 ? ["none", "none"] : _17, _19 = _18[0], primarySkillA_1 = _19 === void 0 ? "primary" : _19, _20 = _18[1], secondarySkillA_1 = _20 === void 0 ? "secondary" : _20, i_1 = 0; i_1 < 1; i_1++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^^^^ +18> ^^ +19> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +20> ^^ +21> ^^^ +22> ^^^ +23> ^ +24> ^^ +25> ^^^ +26> ^^^ +27> ^ +28> ^^ +29> ^^^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > (let + > [ +5 > nameMA = "noName" +6 > +7 > nameMA = "noName" +8 > , + > +9 > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +10> +11> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +12> +13> primarySkillA = "primary" +14> +15> primarySkillA = "primary" +16> , + > +17> secondarySkillA = "secondary" +18> +19> secondarySkillA = "secondary" +20> + > ] = ["none", "none"] + > ] = multiRobotA, +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(60, 1) Source(80, 1) + SourceIndex(0) +2 >Emitted(60, 4) Source(80, 4) + SourceIndex(0) +3 >Emitted(60, 5) Source(80, 5) + SourceIndex(0) +4 >Emitted(60, 6) Source(81, 6) + SourceIndex(0) +5 >Emitted(60, 30) Source(81, 23) + SourceIndex(0) +6 >Emitted(60, 32) Source(81, 6) + SourceIndex(0) +7 >Emitted(60, 74) Source(81, 23) + SourceIndex(0) +8 >Emitted(60, 76) Source(82, 9) + SourceIndex(0) +9 >Emitted(60, 96) Source(85, 29) + SourceIndex(0) +10>Emitted(60, 98) Source(82, 9) + SourceIndex(0) +11>Emitted(60, 143) Source(85, 29) + SourceIndex(0) +12>Emitted(60, 145) Source(83, 13) + SourceIndex(0) +13>Emitted(60, 157) Source(83, 38) + SourceIndex(0) +14>Emitted(60, 159) Source(83, 13) + SourceIndex(0) +15>Emitted(60, 209) Source(83, 38) + SourceIndex(0) +16>Emitted(60, 211) Source(84, 13) + SourceIndex(0) +17>Emitted(60, 223) Source(84, 42) + SourceIndex(0) +18>Emitted(60, 225) Source(84, 13) + SourceIndex(0) +19>Emitted(60, 279) Source(84, 42) + SourceIndex(0) +20>Emitted(60, 281) Source(86, 22) + SourceIndex(0) +21>Emitted(60, 284) Source(86, 23) + SourceIndex(0) +22>Emitted(60, 287) Source(86, 26) + SourceIndex(0) +23>Emitted(60, 288) Source(86, 27) + SourceIndex(0) +24>Emitted(60, 290) Source(86, 29) + SourceIndex(0) +25>Emitted(60, 293) Source(86, 30) + SourceIndex(0) +26>Emitted(60, 296) Source(86, 33) + SourceIndex(0) +27>Emitted(60, 297) Source(86, 34) + SourceIndex(0) +28>Emitted(60, 299) Source(86, 36) + SourceIndex(0) +29>Emitted(60, 302) Source(86, 37) + SourceIndex(0) +30>Emitted(60, 304) Source(86, 39) + SourceIndex(0) +31>Emitted(60, 306) Source(86, 41) + SourceIndex(0) +32>Emitted(60, 307) Source(86, 42) + SourceIndex(0) +--- +>>> console.log(nameMA_1); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(61, 5) Source(87, 5) + SourceIndex(0) +2 >Emitted(61, 12) Source(87, 12) + SourceIndex(0) +3 >Emitted(61, 13) Source(87, 13) + SourceIndex(0) +4 >Emitted(61, 16) Source(87, 16) + SourceIndex(0) +5 >Emitted(61, 17) Source(87, 17) + SourceIndex(0) +6 >Emitted(61, 25) Source(87, 23) + SourceIndex(0) +7 >Emitted(61, 26) Source(87, 24) + SourceIndex(0) +8 >Emitted(61, 27) Source(87, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(62, 1) Source(88, 1) + SourceIndex(0) +2 >Emitted(62, 2) Source(88, 2) + SourceIndex(0) +--- +>>>for ((_21 = getMultiRobot(), _22 = _21[0], nameMA = _22 === void 0 ? "noName" : _22, _23 = _21[1], _24 = _23 === void 0 ? ["none", "none"] : _23, _25 = _24[0], primarySkillA = _25 === void 0 ? "primary" : _25, _26 = _24[1], secondarySkillA = _26 === void 0 ? "secondary" : _26, _21), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^^^^^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^^ +31> ^ +32> ^^ +33> ^ +34> ^^ +35> ^^ +36> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + > ] = getMultiRobot() +7 > +8 > nameMA = "noName" +9 > +10> nameMA = "noName" +11> , + > +12> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +13> +14> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +15> +16> primarySkillA = "primary" +17> +18> primarySkillA = "primary" +19> , + > +20> secondarySkillA = "secondary" +21> +22> secondarySkillA = "secondary" +23> + > ] = ["none", "none"] + > ] = getMultiRobot() +24> , +25> i +26> = +27> 0 +28> ; +29> i +30> < +31> 1 +32> ; +33> i +34> ++ +35> ) +36> { +1->Emitted(63, 1) Source(89, 1) + SourceIndex(0) +2 >Emitted(63, 4) Source(89, 4) + SourceIndex(0) +3 >Emitted(63, 5) Source(89, 5) + SourceIndex(0) +4 >Emitted(63, 6) Source(89, 6) + SourceIndex(0) +5 >Emitted(63, 7) Source(89, 6) + SourceIndex(0) +6 >Emitted(63, 28) Source(94, 20) + SourceIndex(0) +7 >Emitted(63, 30) Source(89, 7) + SourceIndex(0) +8 >Emitted(63, 42) Source(89, 24) + SourceIndex(0) +9 >Emitted(63, 44) Source(89, 7) + SourceIndex(0) +10>Emitted(63, 84) Source(89, 24) + SourceIndex(0) +11>Emitted(63, 86) Source(90, 5) + SourceIndex(0) +12>Emitted(63, 98) Source(93, 25) + SourceIndex(0) +13>Emitted(63, 100) Source(90, 5) + SourceIndex(0) +14>Emitted(63, 145) Source(93, 25) + SourceIndex(0) +15>Emitted(63, 147) Source(91, 9) + SourceIndex(0) +16>Emitted(63, 159) Source(91, 34) + SourceIndex(0) +17>Emitted(63, 161) Source(91, 9) + SourceIndex(0) +18>Emitted(63, 209) Source(91, 34) + SourceIndex(0) +19>Emitted(63, 211) Source(92, 9) + SourceIndex(0) +20>Emitted(63, 223) Source(92, 38) + SourceIndex(0) +21>Emitted(63, 225) Source(92, 9) + SourceIndex(0) +22>Emitted(63, 277) Source(92, 38) + SourceIndex(0) +23>Emitted(63, 283) Source(94, 20) + SourceIndex(0) +24>Emitted(63, 285) Source(94, 22) + SourceIndex(0) +25>Emitted(63, 286) Source(94, 23) + SourceIndex(0) +26>Emitted(63, 289) Source(94, 26) + SourceIndex(0) +27>Emitted(63, 290) Source(94, 27) + SourceIndex(0) +28>Emitted(63, 292) Source(94, 29) + SourceIndex(0) +29>Emitted(63, 293) Source(94, 30) + SourceIndex(0) +30>Emitted(63, 296) Source(94, 33) + SourceIndex(0) +31>Emitted(63, 297) Source(94, 34) + SourceIndex(0) +32>Emitted(63, 299) Source(94, 36) + SourceIndex(0) +33>Emitted(63, 300) Source(94, 37) + SourceIndex(0) +34>Emitted(63, 302) Source(94, 39) + SourceIndex(0) +35>Emitted(63, 304) Source(94, 41) + SourceIndex(0) +36>Emitted(63, 305) Source(94, 42) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(64, 5) Source(95, 5) + SourceIndex(0) +2 >Emitted(64, 12) Source(95, 12) + SourceIndex(0) +3 >Emitted(64, 13) Source(95, 13) + SourceIndex(0) +4 >Emitted(64, 16) Source(95, 16) + SourceIndex(0) +5 >Emitted(64, 17) Source(95, 17) + SourceIndex(0) +6 >Emitted(64, 23) Source(95, 23) + SourceIndex(0) +7 >Emitted(64, 24) Source(95, 24) + SourceIndex(0) +8 >Emitted(64, 25) Source(95, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(65, 1) Source(96, 1) + SourceIndex(0) +2 >Emitted(65, 2) Source(96, 2) + SourceIndex(0) +--- +>>>for ((_27 = ["trimmer", ["trimming", "edging"]], _28 = _27[0], nameMA = _28 === void 0 ? "noName" : _28, _29 = _27[1], _30 = _29 === void 0 ? ["none", "none"] : _29, _31 = _30[0], primarySkillA = _31 === void 0 ? "primary" : _31, _32 = _30[1], secondarySkillA = _32 === void 0 ? "secondary" : _32, _27), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^^^^^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^^ +31> ^ +32> ^^ +33> ^ +34> ^^ +35> ^^ +36> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + > ] = ["trimmer", ["trimming", "edging"]] +7 > +8 > nameMA = "noName" +9 > +10> nameMA = "noName" +11> , + > +12> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +13> +14> [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] +15> +16> primarySkillA = "primary" +17> +18> primarySkillA = "primary" +19> , + > +20> secondarySkillA = "secondary" +21> +22> secondarySkillA = "secondary" +23> + > ] = ["none", "none"] + > ] = ["trimmer", ["trimming", "edging"]] +24> , +25> i +26> = +27> 0 +28> ; +29> i +30> < +31> 1 +32> ; +33> i +34> ++ +35> ) +36> { +1->Emitted(66, 1) Source(97, 1) + SourceIndex(0) +2 >Emitted(66, 4) Source(97, 4) + SourceIndex(0) +3 >Emitted(66, 5) Source(97, 5) + SourceIndex(0) +4 >Emitted(66, 6) Source(97, 6) + SourceIndex(0) +5 >Emitted(66, 7) Source(97, 6) + SourceIndex(0) +6 >Emitted(66, 48) Source(102, 40) + SourceIndex(0) +7 >Emitted(66, 50) Source(97, 7) + SourceIndex(0) +8 >Emitted(66, 62) Source(97, 24) + SourceIndex(0) +9 >Emitted(66, 64) Source(97, 7) + SourceIndex(0) +10>Emitted(66, 104) Source(97, 24) + SourceIndex(0) +11>Emitted(66, 106) Source(98, 5) + SourceIndex(0) +12>Emitted(66, 118) Source(101, 25) + SourceIndex(0) +13>Emitted(66, 120) Source(98, 5) + SourceIndex(0) +14>Emitted(66, 165) Source(101, 25) + SourceIndex(0) +15>Emitted(66, 167) Source(99, 9) + SourceIndex(0) +16>Emitted(66, 179) Source(99, 34) + SourceIndex(0) +17>Emitted(66, 181) Source(99, 9) + SourceIndex(0) +18>Emitted(66, 229) Source(99, 34) + SourceIndex(0) +19>Emitted(66, 231) Source(100, 9) + SourceIndex(0) +20>Emitted(66, 243) Source(100, 38) + SourceIndex(0) +21>Emitted(66, 245) Source(100, 9) + SourceIndex(0) +22>Emitted(66, 297) Source(100, 38) + SourceIndex(0) +23>Emitted(66, 303) Source(102, 40) + SourceIndex(0) +24>Emitted(66, 305) Source(102, 42) + SourceIndex(0) +25>Emitted(66, 306) Source(102, 43) + SourceIndex(0) +26>Emitted(66, 309) Source(102, 46) + SourceIndex(0) +27>Emitted(66, 310) Source(102, 47) + SourceIndex(0) +28>Emitted(66, 312) Source(102, 49) + SourceIndex(0) +29>Emitted(66, 313) Source(102, 50) + SourceIndex(0) +30>Emitted(66, 316) Source(102, 53) + SourceIndex(0) +31>Emitted(66, 317) Source(102, 54) + SourceIndex(0) +32>Emitted(66, 319) Source(102, 56) + SourceIndex(0) +33>Emitted(66, 320) Source(102, 57) + SourceIndex(0) +34>Emitted(66, 322) Source(102, 59) + SourceIndex(0) +35>Emitted(66, 324) Source(102, 61) + SourceIndex(0) +36>Emitted(66, 325) Source(102, 62) + SourceIndex(0) +--- +>>> console.log(nameMA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameMA +7 > ) +8 > ; +1 >Emitted(67, 5) Source(103, 5) + SourceIndex(0) +2 >Emitted(67, 12) Source(103, 12) + SourceIndex(0) +3 >Emitted(67, 13) Source(103, 13) + SourceIndex(0) +4 >Emitted(67, 16) Source(103, 16) + SourceIndex(0) +5 >Emitted(67, 17) Source(103, 17) + SourceIndex(0) +6 >Emitted(67, 23) Source(103, 23) + SourceIndex(0) +7 >Emitted(67, 24) Source(103, 24) + SourceIndex(0) +8 >Emitted(67, 25) Source(103, 25) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(68, 1) Source(104, 1) + SourceIndex(0) +2 >Emitted(68, 2) Source(104, 2) + SourceIndex(0) +--- +>>>for ((_33 = robotA[0], numberA3 = _33 === void 0 ? -1 : _33, robotAInfo = robotA.slice(1), robotA), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^ +13> ^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > [ +6 > numberA3 = -1 +7 > +8 > numberA3 = -1 +9 > , +10> ...robotAInfo +11> ] = +12> robotA +13> +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(69, 1) Source(106, 1) + SourceIndex(0) +2 >Emitted(69, 4) Source(106, 4) + SourceIndex(0) +3 >Emitted(69, 5) Source(106, 5) + SourceIndex(0) +4 >Emitted(69, 6) Source(106, 6) + SourceIndex(0) +5 >Emitted(69, 7) Source(106, 7) + SourceIndex(0) +6 >Emitted(69, 22) Source(106, 20) + SourceIndex(0) +7 >Emitted(69, 24) Source(106, 7) + SourceIndex(0) +8 >Emitted(69, 60) Source(106, 20) + SourceIndex(0) +9 >Emitted(69, 62) Source(106, 22) + SourceIndex(0) +10>Emitted(69, 90) Source(106, 35) + SourceIndex(0) +11>Emitted(69, 92) Source(106, 39) + SourceIndex(0) +12>Emitted(69, 98) Source(106, 45) + SourceIndex(0) +13>Emitted(69, 99) Source(106, 45) + SourceIndex(0) +14>Emitted(69, 101) Source(106, 47) + SourceIndex(0) +15>Emitted(69, 102) Source(106, 48) + SourceIndex(0) +16>Emitted(69, 105) Source(106, 51) + SourceIndex(0) +17>Emitted(69, 106) Source(106, 52) + SourceIndex(0) +18>Emitted(69, 108) Source(106, 54) + SourceIndex(0) +19>Emitted(69, 109) Source(106, 55) + SourceIndex(0) +20>Emitted(69, 112) Source(106, 58) + SourceIndex(0) +21>Emitted(69, 113) Source(106, 59) + SourceIndex(0) +22>Emitted(69, 115) Source(106, 61) + SourceIndex(0) +23>Emitted(69, 116) Source(106, 62) + SourceIndex(0) +24>Emitted(69, 118) Source(106, 64) + SourceIndex(0) +25>Emitted(69, 120) Source(106, 66) + SourceIndex(0) +26>Emitted(69, 121) Source(106, 67) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(70, 5) Source(107, 5) + SourceIndex(0) +2 >Emitted(70, 12) Source(107, 12) + SourceIndex(0) +3 >Emitted(70, 13) Source(107, 13) + SourceIndex(0) +4 >Emitted(70, 16) Source(107, 16) + SourceIndex(0) +5 >Emitted(70, 17) Source(107, 17) + SourceIndex(0) +6 >Emitted(70, 25) Source(107, 25) + SourceIndex(0) +7 >Emitted(70, 26) Source(107, 26) + SourceIndex(0) +8 >Emitted(70, 27) Source(107, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(71, 1) Source(108, 1) + SourceIndex(0) +2 >Emitted(71, 2) Source(108, 2) + SourceIndex(0) +--- +>>>for ((_34 = getRobot(), _35 = _34[0], numberA3 = _35 === void 0 ? -1 : _35, robotAInfo = _34.slice(1), _34), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA3 = -1, ...robotAInfo] = getRobot() +7 > +8 > numberA3 = -1 +9 > +10> numberA3 = -1 +11> , +12> ...robotAInfo +13> ] = getRobot() +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(72, 1) Source(109, 1) + SourceIndex(0) +2 >Emitted(72, 4) Source(109, 4) + SourceIndex(0) +3 >Emitted(72, 5) Source(109, 5) + SourceIndex(0) +4 >Emitted(72, 6) Source(109, 6) + SourceIndex(0) +5 >Emitted(72, 7) Source(109, 6) + SourceIndex(0) +6 >Emitted(72, 23) Source(109, 49) + SourceIndex(0) +7 >Emitted(72, 25) Source(109, 7) + SourceIndex(0) +8 >Emitted(72, 37) Source(109, 20) + SourceIndex(0) +9 >Emitted(72, 39) Source(109, 7) + SourceIndex(0) +10>Emitted(72, 75) Source(109, 20) + SourceIndex(0) +11>Emitted(72, 77) Source(109, 22) + SourceIndex(0) +12>Emitted(72, 102) Source(109, 35) + SourceIndex(0) +13>Emitted(72, 108) Source(109, 49) + SourceIndex(0) +14>Emitted(72, 110) Source(109, 51) + SourceIndex(0) +15>Emitted(72, 111) Source(109, 52) + SourceIndex(0) +16>Emitted(72, 114) Source(109, 55) + SourceIndex(0) +17>Emitted(72, 115) Source(109, 56) + SourceIndex(0) +18>Emitted(72, 117) Source(109, 58) + SourceIndex(0) +19>Emitted(72, 118) Source(109, 59) + SourceIndex(0) +20>Emitted(72, 121) Source(109, 62) + SourceIndex(0) +21>Emitted(72, 122) Source(109, 63) + SourceIndex(0) +22>Emitted(72, 124) Source(109, 65) + SourceIndex(0) +23>Emitted(72, 125) Source(109, 66) + SourceIndex(0) +24>Emitted(72, 127) Source(109, 68) + SourceIndex(0) +25>Emitted(72, 129) Source(109, 70) + SourceIndex(0) +26>Emitted(72, 130) Source(109, 71) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(73, 5) Source(110, 5) + SourceIndex(0) +2 >Emitted(73, 12) Source(110, 12) + SourceIndex(0) +3 >Emitted(73, 13) Source(110, 13) + SourceIndex(0) +4 >Emitted(73, 16) Source(110, 16) + SourceIndex(0) +5 >Emitted(73, 17) Source(110, 17) + SourceIndex(0) +6 >Emitted(73, 25) Source(110, 25) + SourceIndex(0) +7 >Emitted(73, 26) Source(110, 26) + SourceIndex(0) +8 >Emitted(73, 27) Source(110, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(74, 1) Source(111, 1) + SourceIndex(0) +2 >Emitted(74, 2) Source(111, 2) + SourceIndex(0) +--- +>>>for ((_36 = [2, "trimmer", "trimming"], _37 = _36[0], numberA3 = _37 === void 0 ? -1 : _37, robotAInfo = _36.slice(1), _36), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^^^^^ +14> ^^ +15> ^ +16> ^^^ +17> ^ +18> ^^ +19> ^ +20> ^^^ +21> ^ +22> ^^ +23> ^ +24> ^^ +25> ^^ +26> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"] +7 > +8 > numberA3 = -1 +9 > +10> numberA3 = -1 +11> , +12> ...robotAInfo +13> ] = [2, "trimmer", "trimming"] +14> , +15> i +16> = +17> 0 +18> ; +19> i +20> < +21> 1 +22> ; +23> i +24> ++ +25> ) +26> { +1->Emitted(75, 1) Source(112, 1) + SourceIndex(0) +2 >Emitted(75, 4) Source(112, 4) + SourceIndex(0) +3 >Emitted(75, 5) Source(112, 5) + SourceIndex(0) +4 >Emitted(75, 6) Source(112, 6) + SourceIndex(0) +5 >Emitted(75, 7) Source(112, 6) + SourceIndex(0) +6 >Emitted(75, 39) Source(112, 72) + SourceIndex(0) +7 >Emitted(75, 41) Source(112, 7) + SourceIndex(0) +8 >Emitted(75, 53) Source(112, 20) + SourceIndex(0) +9 >Emitted(75, 55) Source(112, 7) + SourceIndex(0) +10>Emitted(75, 91) Source(112, 20) + SourceIndex(0) +11>Emitted(75, 93) Source(112, 22) + SourceIndex(0) +12>Emitted(75, 118) Source(112, 35) + SourceIndex(0) +13>Emitted(75, 124) Source(112, 72) + SourceIndex(0) +14>Emitted(75, 126) Source(112, 74) + SourceIndex(0) +15>Emitted(75, 127) Source(112, 75) + SourceIndex(0) +16>Emitted(75, 130) Source(112, 78) + SourceIndex(0) +17>Emitted(75, 131) Source(112, 79) + SourceIndex(0) +18>Emitted(75, 133) Source(112, 81) + SourceIndex(0) +19>Emitted(75, 134) Source(112, 82) + SourceIndex(0) +20>Emitted(75, 137) Source(112, 85) + SourceIndex(0) +21>Emitted(75, 138) Source(112, 86) + SourceIndex(0) +22>Emitted(75, 140) Source(112, 88) + SourceIndex(0) +23>Emitted(75, 141) Source(112, 89) + SourceIndex(0) +24>Emitted(75, 143) Source(112, 91) + SourceIndex(0) +25>Emitted(75, 145) Source(112, 93) + SourceIndex(0) +26>Emitted(75, 146) Source(112, 94) + SourceIndex(0) +--- +>>> console.log(numberA3); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > numberA3 +7 > ) +8 > ; +1 >Emitted(76, 5) Source(113, 5) + SourceIndex(0) +2 >Emitted(76, 12) Source(113, 12) + SourceIndex(0) +3 >Emitted(76, 13) Source(113, 13) + SourceIndex(0) +4 >Emitted(76, 16) Source(113, 16) + SourceIndex(0) +5 >Emitted(76, 17) Source(113, 17) + SourceIndex(0) +6 >Emitted(76, 25) Source(113, 25) + SourceIndex(0) +7 >Emitted(76, 26) Source(113, 26) + SourceIndex(0) +8 >Emitted(76, 27) Source(113, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(77, 1) Source(114, 1) + SourceIndex(0) +2 >Emitted(77, 2) Source(114, 2) + SourceIndex(0) +--- +>>>var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.symbols new file mode 100644 index 00000000000..3acec61f78b --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.symbols @@ -0,0 +1,391 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 1, 8)) +} +type Robot = [number, string, string]; +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 2, 1)) + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 3, 38)) + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 2, 1)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 43)) + + return robotA; +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 3)) +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 11, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 3, 38)) + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : Symbol(multiRobotB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 12, 3)) +>MultiSkilledRobot : Symbol(MultiSkilledRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 3, 38)) + +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 12, 73)) + + return multiRobotA; +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 11, 3)) +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 41)) + +let numberB: number, nameB: string; +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 37)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 54)) + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 21)) +>multiRobotAInfo : Symbol(multiRobotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 54)) + +let i: number; +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + +for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +} +for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +} +for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 3)) +} +for ([, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 41)) + +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) +} +for ([, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 41)) + +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) +} +for ([, [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 41)) + +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(primarySkillA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) +} + +for ([numberB = -1] = robotA, i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +} +for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +} +for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(numberB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberB : Symbol(numberB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 3)) +} +for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) +} +for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) +} +for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameB); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameB : Symbol(nameB, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 18, 20)) +} + +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 37)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 37)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA2 : Symbol(numberA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 3)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +>skillA2 : Symbol(skillA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 37)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameA2); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameA2 : Symbol(nameA2, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 21)) +} +for (let + [nameMA = "noName", +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 80, 5)) + + [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 81, 9)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 82, 38)) + + ] = ["none", "none"] + ] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotA : Symbol(multiRobotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 11, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 85, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 85, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 85, 20)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 80, 5)) +} +for ([nameMA = "noName", +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 54)) + + [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 41)) + + ] = ["none", "none"] +] = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 12, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 54)) +} +for ([nameMA = "noName", +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 54)) + + [ + primarySkillA = "primary", +>primarySkillA : Symbol(primarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 18)) + + secondarySkillA = "secondary" +>secondarySkillA : Symbol(secondarySkillA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 17, 41)) + + ] = ["none", "none"] +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(nameMA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>nameMA : Symbol(nameMA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 19, 54)) +} + +for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 21)) +>robotA : Symbol(robotA, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +} +for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 21)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 6, 43)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +} +for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +>robotAInfo : Symbol(robotAInfo, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 21)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 2, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 21, 3)) + + console.log(numberA3); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 0, 22)) +>numberA3 : Symbol(numberA3, Decl(sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts, 20, 3)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types new file mode 100644 index 00000000000..3bef86dcf80 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.types @@ -0,0 +1,752 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +type Robot = [number, string, string]; +>Robot : [number, string, string] + +type MultiSkilledRobot = [string, [string, string]]; +>MultiSkilledRobot : [string, [string, string]] + +let robotA: Robot = [1, "mower", "mowing"]; +>robotA : [number, string, string] +>Robot : [number, string, string] +>[1, "mower", "mowing"] : [number, string, string] +>1 : number +>"mower" : string +>"mowing" : string + +function getRobot() { +>getRobot : () => [number, string, string] + + return robotA; +>robotA : [number, string, string] +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +>multiRobotA : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["mower", ["mowing", ""]] : [string, [string, string]] +>"mower" : string +>["mowing", ""] : [string, string] +>"mowing" : string +>"" : string + +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +>multiRobotB : [string, [string, string]] +>MultiSkilledRobot : [string, [string, string]] +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string + +function getMultiRobot() { +>getMultiRobot : () => [string, [string, string]] + + return multiRobotA; +>multiRobotA : [string, [string, string]] +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +>nameA : string +>primarySkillA : string +>secondarySkillA : string + +let numberB: number, nameB: string; +>numberB : number +>nameB : string + +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +>numberA2 : number +>nameA2 : string +>skillA2 : string +>nameMA : string + +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +>numberA3 : number +>robotAInfo : (number | string)[] +>multiRobotAInfo : (string | [string, string])[] + +let i: number; +>i : number + +for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { +>[, nameA = "name"] = robotA, i = 0 : number +>[, nameA = "name"] = robotA : [number, string, string] +>[, nameA = "name"] : [undefined, string] +> : undefined +>nameA = "name" : string +>nameA : string +>"name" : string +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { +>[, nameA = "name"] = getRobot(), i = 0 : number +>[, nameA = "name"] = getRobot() : [number, string, string] +>[, nameA = "name"] : [undefined, string] +> : undefined +>nameA = "name" : string +>nameA : string +>"name" : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[, nameA = "name"] = [2, "trimmer", "trimming"], i = 0 : number +>[, nameA = "name"] = [2, "trimmer", "trimming"] : [number, string, string] +>[, nameA = "name"] : [undefined, string] +> : undefined +>nameA = "name" : string +>nameA : string +>"name" : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ([, [ +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] = multiRobotA, i = 0 : number +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] = multiRobotA : [string, [string, string]] +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] : [undefined, [string, string]] +> : undefined +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { +>["none", "none"] : [string, string] +>"none" : string +>"none" : string +>multiRobotA : [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [ +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] = getMultiRobot(), i = 0 : number +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] = getMultiRobot() : [string, [string, string]] +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] : [undefined, [string, string]] +> : undefined +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { +>["none", "none"] : [string, string] +>"none" : string +>"none" : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} +for ([, [ +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[, [ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"]] : [undefined, [string, string]] +> : undefined +>[ primarySkillA = "primary", secondarySkillA = "secondary"] = ["none", "none"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary"] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>["none", "none"] : [string, string] +>"none" : string +>"none" : string +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primarySkillA); +>console.log(primarySkillA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primarySkillA : string +} + +for ([numberB = -1] = robotA, i = 0; i < 1; i++) { +>[numberB = -1] = robotA, i = 0 : number +>[numberB = -1] = robotA : [number, string, string] +>[numberB = -1] : [number] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { +>[numberB = -1] = getRobot(), i = 0 : number +>[numberB = -1] = getRobot() : [number, string, string] +>[numberB = -1] : [number] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[numberB = -1] = [2, "trimmer", "trimming"], i = 0 : number +>[numberB = -1] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberB = -1] : [number] +>numberB = -1 : number +>numberB : number +>-1 : number +>1 : number +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberB); +>console.log(numberB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberB : number +} +for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { +>[nameB = "name"] = multiRobotA, i = 0 : number +>[nameB = "name"] = multiRobotA : [string, [string, string]] +>[nameB = "name"] : [string] +>nameB = "name" : string +>nameB : string +>"name" : string +>multiRobotA : [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { +>[nameB = "name"] = getMultiRobot(), i = 0 : number +>[nameB = "name"] = getMultiRobot() : [string, [string, string]] +>[nameB = "name"] : [string] +>nameB = "name" : string +>nameB : string +>"name" : string +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} +for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>[nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[nameB = "name"] = ["trimmer", ["trimming", "edging"]] : [string, string[]] +>[nameB = "name"] : [string] +>nameB = "name" : string +>nameB : string +>"name" : string +>["trimmer", ["trimming", "edging"]] : [string, string[]] +>"trimmer" : string +>["trimming", "edging"] : string[] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameB); +>console.log(nameB) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameB : string +} + +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0 : number +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA : [number, string, string] +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] : [number, string, string] +>numberA2 = -1 : number +>numberA2 : number +>-1 : number +>1 : number +>nameA2 = "name" : string +>nameA2 : string +>"name" : string +>skillA2 = "skill" : string +>skillA2 : string +>"skill" : string +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0 : number +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot() : [number, string, string] +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] : [number, string, string] +>numberA2 = -1 : number +>numberA2 : number +>-1 : number +>1 : number +>nameA2 = "name" : string +>nameA2 : string +>"name" : string +>skillA2 = "skill" : string +>skillA2 : string +>"skill" : string +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0 : number +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] : [number, string, string] +>numberA2 = -1 : number +>numberA2 : number +>-1 : number +>1 : number +>nameA2 = "name" : string +>nameA2 : string +>"name" : string +>skillA2 = "skill" : string +>skillA2 : string +>"skill" : string +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA2); +>console.log(nameA2) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA2 : string +} +for (let + [nameMA = "noName", +>nameMA : string +>"noName" : string + + [ + primarySkillA = "primary", +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA : string +>"secondary" : string + + ] = ["none", "none"] +>["none", "none"] : [string, string] +>"none" : string +>"none" : string + + ] = multiRobotA, i = 0; i < 1; i++) { +>multiRobotA : [string, [string, string]] +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA = "noName", +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"]] = getMultiRobot(), i = 0 : number +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"]] = getMultiRobot() : [string, [string, string]] +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"]] : [string, [string, string]] +>nameMA = "noName" : string +>nameMA : string +>"noName" : string + + [ +>[ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary" ] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + + ] = ["none", "none"] +>["none", "none"] : [string, string] +>"none" : string +>"none" : string + +] = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : [string, [string, string]] +>getMultiRobot : () => [string, [string, string]] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} +for ([nameMA = "noName", +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0 : number +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>[nameMA = "noName", [ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"]] : [string, [string, string]] +>nameMA = "noName" : string +>nameMA : string +>"noName" : string + + [ +>[ primarySkillA = "primary", secondarySkillA = "secondary" ] = ["none", "none"] : [string, string] +>[ primarySkillA = "primary", secondarySkillA = "secondary" ] : [string, string] + + primarySkillA = "primary", +>primarySkillA = "primary" : string +>primarySkillA : string +>"primary" : string + + secondarySkillA = "secondary" +>secondarySkillA = "secondary" : string +>secondarySkillA : string +>"secondary" : string + + ] = ["none", "none"] +>["none", "none"] : [string, string] +>"none" : string +>"none" : string + +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +>["trimmer", ["trimming", "edging"]] : [string, [string, string]] +>"trimmer" : string +>["trimming", "edging"] : [string, string] +>"trimming" : string +>"edging" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameMA); +>console.log(nameMA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameMA : string +} + +for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +>[numberA3 = -1, ...robotAInfo] = robotA, i = 0 : number +>[numberA3 = -1, ...robotAInfo] = robotA : [number, string, string] +>[numberA3 = -1, ...robotAInfo] : (number | string)[] +>numberA3 = -1 : number +>numberA3 : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>robotA : [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +>[numberA3 = -1, ...robotAInfo] = getRobot(), i = 0 : number +>[numberA3 = -1, ...robotAInfo] = getRobot() : [number, string, string] +>[numberA3 = -1, ...robotAInfo] : (number | string)[] +>numberA3 = -1 : number +>numberA3 : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>getRobot() : [number, string, string] +>getRobot : () => [number, string, string] +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} +for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +>[numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 : number +>[numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"] : [number, string, string] +>[numberA3 = -1, ...robotAInfo] : (number | string)[] +>numberA3 = -1 : number +>numberA3 : number +>-1 : number +>1 : number +>...robotAInfo : number | string +>robotAInfo : (number | string)[] +>[2, "trimmer", "trimming"] : [number, string, string] +>Robot : [number, string, string] +>[2, "trimmer", "trimming"] : [number, string, string] +>2 : number +>"trimmer" : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(numberA3); +>console.log(numberA3) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>numberA3 : number +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js new file mode 100644 index 00000000000..785148ba652 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js @@ -0,0 +1,145 @@ +//// [sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +//// [sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js] +var robot = { name: "mower", skill: "mowing" }; +var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} +for (var _a = robot.name, nameA = _a === void 0 ? "noName" : _a, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _b = getRobot().name, nameA = _b === void 0 ? "noName" : _b, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _c = { name: "trimmer", skill: "trimming" }.name, nameA = _c === void 0 ? "noName" : _c, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _d = multiRobot.skills, _e = _d === void 0 ? { primary: "none", secondary: "none" } : _d, _f = _e.primary, primaryA = _f === void 0 ? "primary" : _f, _g = _e.secondary, secondaryA = _g === void 0 ? "secondary" : _g, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _h = getMultiRobot().skills, _j = _h === void 0 ? { primary: "none", secondary: "none" } : _h, _k = _j.primary, primaryA = _k === void 0 ? "primary" : _k, _l = _j.secondary, secondaryA = _l === void 0 ? "secondary" : _l, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _m = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }.skills, _o = _m === void 0 ? { primary: "none", secondary: "none" } : _m, _p = _o.primary, primaryA = _p === void 0 ? "primary" : _p, _q = _o.secondary, secondaryA = _q === void 0 ? "secondary" : _q, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _r = robot.name, nameA = _r === void 0 ? "noName" : _r, _s = robot.skill, skillA = _s === void 0 ? "skill" : _s, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _t = getRobot(), _u = _t.name, nameA = _u === void 0 ? "noName" : _u, _v = _t.skill, skillA = _v === void 0 ? "skill" : _v, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _w = { name: "trimmer", skill: "trimming" }, _x = _w.name, nameA = _x === void 0 ? "noName" : _x, _y = _w.skill, skillA = _y === void 0 ? "skill" : _y, i = 0; i < 1; i++) { + console.log(nameA); +} +for (var _z = multiRobot.name, nameA = _z === void 0 ? "noName" : _z, _0 = multiRobot.skills, _1 = _0 === void 0 ? { primary: "none", secondary: "none" } : _0, _2 = _1.primary, primaryA = _2 === void 0 ? "primary" : _2, _3 = _1.secondary, secondaryA = _3 === void 0 ? "secondary" : _3, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _4 = getMultiRobot(), _5 = _4.name, nameA = _5 === void 0 ? "noName" : _5, _6 = _4.skills, _7 = _6 === void 0 ? { primary: "none", secondary: "none" } : _6, _8 = _7.primary, primaryA = _8 === void 0 ? "primary" : _8, _9 = _7.secondary, secondaryA = _9 === void 0 ? "secondary" : _9, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (var _10 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _11 = _10.name, nameA = _11 === void 0 ? "noName" : _11, _12 = _10.skills, _13 = _12 === void 0 ? { primary: "none", secondary: "none" } : _12, _14 = _13.primary, primaryA = _14 === void 0 ? "primary" : _14, _15 = _13.secondary, secondaryA = _15 === void 0 ? "secondary" : _15, i = 0; i < 1; i++) { + console.log(primaryA); +} +//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map new file mode 100644 index 00000000000..b208c41c9a6 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.sourcemap.txt new file mode 100644 index 00000000000..c8c63e66adf --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.sourcemap.txt @@ -0,0 +1,1740 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js +mapUrl: sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js +sourceFile:sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts +------------------------------------------------------------------- +>>>var robot = { name: "mower", skill: "mowing" }; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary?: string; + > secondary?: string; + > }; + >} + > + > +2 >let +3 > robot +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(17, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(17, 20) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 22) + SourceIndex(0) +6 >Emitted(1, 19) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 28) + SourceIndex(0) +8 >Emitted(1, 28) Source(17, 35) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 37) + SourceIndex(0) +10>Emitted(1, 35) Source(17, 42) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 44) + SourceIndex(0) +12>Emitted(1, 45) Source(17, 52) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 54) + SourceIndex(0) +14>Emitted(1, 48) Source(17, 55) + SourceIndex(0) +--- +>>>var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1-> +2 >^^^^ +3 > ^^^^^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >let +3 > multiRobot +4 > : MultiRobot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1->Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 15) Source(18, 15) + SourceIndex(0) +4 >Emitted(2, 18) Source(18, 30) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 32) + SourceIndex(0) +6 >Emitted(2, 24) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 38) + SourceIndex(0) +8 >Emitted(2, 33) Source(18, 45) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 47) + SourceIndex(0) +10>Emitted(2, 41) Source(18, 53) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 55) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 57) + SourceIndex(0) +13>Emitted(2, 52) Source(18, 64) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 66) + SourceIndex(0) +15>Emitted(2, 62) Source(18, 74) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 76) + SourceIndex(0) +17>Emitted(2, 73) Source(18, 85) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 87) + SourceIndex(0) +19>Emitted(2, 81) Source(18, 93) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 95) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 97) + SourceIndex(0) +22>Emitted(2, 86) Source(18, 98) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(3, 1) Source(19, 1) + SourceIndex(0) +--- +>>> return robot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robot +5 > ; +1->Emitted(4, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(4, 11) Source(20, 11) + SourceIndex(0) +3 >Emitted(4, 12) Source(20, 12) + SourceIndex(0) +4 >Emitted(4, 17) Source(20, 17) + SourceIndex(0) +5 >Emitted(4, 18) Source(20, 18) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(21, 2) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +1->Emitted(6, 1) Source(22, 1) + SourceIndex(0) +--- +>>> return multiRobot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobot +5 > ; +1->Emitted(7, 5) Source(23, 5) + SourceIndex(0) +2 >Emitted(7, 11) Source(23, 11) + SourceIndex(0) +3 >Emitted(7, 12) Source(23, 12) + SourceIndex(0) +4 >Emitted(7, 22) Source(23, 22) + SourceIndex(0) +5 >Emitted(7, 23) Source(23, 23) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(8, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(8, 2) Source(24, 2) + SourceIndex(0) +--- +>>>for (var _a = robot.name, nameA = _a === void 0 ? "noName" : _a, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > + > +2 >for +3 > +4 > (let { +5 > name: nameA= "noName" +6 > +7 > name: nameA= "noName" +8 > } = robot, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(9, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(9, 4) Source(26, 4) + SourceIndex(0) +3 >Emitted(9, 5) Source(26, 5) + SourceIndex(0) +4 >Emitted(9, 6) Source(26, 11) + SourceIndex(0) +5 >Emitted(9, 25) Source(26, 32) + SourceIndex(0) +6 >Emitted(9, 27) Source(26, 11) + SourceIndex(0) +7 >Emitted(9, 64) Source(26, 32) + SourceIndex(0) +8 >Emitted(9, 66) Source(26, 44) + SourceIndex(0) +9 >Emitted(9, 67) Source(26, 45) + SourceIndex(0) +10>Emitted(9, 70) Source(26, 48) + SourceIndex(0) +11>Emitted(9, 71) Source(26, 49) + SourceIndex(0) +12>Emitted(9, 73) Source(26, 51) + SourceIndex(0) +13>Emitted(9, 74) Source(26, 52) + SourceIndex(0) +14>Emitted(9, 77) Source(26, 55) + SourceIndex(0) +15>Emitted(9, 78) Source(26, 56) + SourceIndex(0) +16>Emitted(9, 80) Source(26, 58) + SourceIndex(0) +17>Emitted(9, 81) Source(26, 59) + SourceIndex(0) +18>Emitted(9, 83) Source(26, 61) + SourceIndex(0) +19>Emitted(9, 85) Source(26, 63) + SourceIndex(0) +20>Emitted(9, 86) Source(26, 64) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(10, 5) Source(27, 5) + SourceIndex(0) +2 >Emitted(10, 12) Source(27, 12) + SourceIndex(0) +3 >Emitted(10, 13) Source(27, 13) + SourceIndex(0) +4 >Emitted(10, 16) Source(27, 16) + SourceIndex(0) +5 >Emitted(10, 17) Source(27, 17) + SourceIndex(0) +6 >Emitted(10, 22) Source(27, 22) + SourceIndex(0) +7 >Emitted(10, 23) Source(27, 23) + SourceIndex(0) +8 >Emitted(10, 24) Source(27, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(11, 1) Source(28, 1) + SourceIndex(0) +2 >Emitted(11, 2) Source(28, 2) + SourceIndex(0) +--- +>>>for (var _b = getRobot().name, nameA = _b === void 0 ? "noName" : _b, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let { +5 > name: nameA = "noName" +6 > +7 > name: nameA = "noName" +8 > } = getRobot(), +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(12, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(12, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(12, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(12, 6) Source(29, 11) + SourceIndex(0) +5 >Emitted(12, 30) Source(29, 33) + SourceIndex(0) +6 >Emitted(12, 32) Source(29, 11) + SourceIndex(0) +7 >Emitted(12, 69) Source(29, 33) + SourceIndex(0) +8 >Emitted(12, 71) Source(29, 50) + SourceIndex(0) +9 >Emitted(12, 72) Source(29, 51) + SourceIndex(0) +10>Emitted(12, 75) Source(29, 54) + SourceIndex(0) +11>Emitted(12, 76) Source(29, 55) + SourceIndex(0) +12>Emitted(12, 78) Source(29, 57) + SourceIndex(0) +13>Emitted(12, 79) Source(29, 58) + SourceIndex(0) +14>Emitted(12, 82) Source(29, 61) + SourceIndex(0) +15>Emitted(12, 83) Source(29, 62) + SourceIndex(0) +16>Emitted(12, 85) Source(29, 64) + SourceIndex(0) +17>Emitted(12, 86) Source(29, 65) + SourceIndex(0) +18>Emitted(12, 88) Source(29, 67) + SourceIndex(0) +19>Emitted(12, 90) Source(29, 69) + SourceIndex(0) +20>Emitted(12, 91) Source(29, 70) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(13, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(13, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(13, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(13, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(13, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(13, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(13, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(13, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(14, 1) Source(31, 1) + SourceIndex(0) +2 >Emitted(14, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for (var _c = { name: "trimmer", skill: "trimming" }.name, nameA = _c === void 0 ? "noName" : _c, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^ +19> ^^ +20> ^ +1-> + > +2 >for +3 > +4 > (let { +5 > name: nameA = "noName" +6 > +7 > name: nameA = "noName" +8 > } = { name: "trimmer", skill: "trimming" }, +9 > i +10> = +11> 0 +12> ; +13> i +14> < +15> 1 +16> ; +17> i +18> ++ +19> ) +20> { +1->Emitted(15, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(15, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(15, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(15, 6) Source(32, 11) + SourceIndex(0) +5 >Emitted(15, 58) Source(32, 33) + SourceIndex(0) +6 >Emitted(15, 60) Source(32, 11) + SourceIndex(0) +7 >Emitted(15, 97) Source(32, 33) + SourceIndex(0) +8 >Emitted(15, 99) Source(32, 85) + SourceIndex(0) +9 >Emitted(15, 100) Source(32, 86) + SourceIndex(0) +10>Emitted(15, 103) Source(32, 89) + SourceIndex(0) +11>Emitted(15, 104) Source(32, 90) + SourceIndex(0) +12>Emitted(15, 106) Source(32, 92) + SourceIndex(0) +13>Emitted(15, 107) Source(32, 93) + SourceIndex(0) +14>Emitted(15, 110) Source(32, 96) + SourceIndex(0) +15>Emitted(15, 111) Source(32, 97) + SourceIndex(0) +16>Emitted(15, 113) Source(32, 99) + SourceIndex(0) +17>Emitted(15, 114) Source(32, 100) + SourceIndex(0) +18>Emitted(15, 116) Source(32, 102) + SourceIndex(0) +19>Emitted(15, 118) Source(32, 104) + SourceIndex(0) +20>Emitted(15, 119) Source(32, 105) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(16, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(16, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(16, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(16, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(16, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(16, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(16, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(16, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(17, 1) Source(34, 1) + SourceIndex(0) +2 >Emitted(17, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for (var _d = multiRobot.skills, _e = _d === void 0 ? { primary: "none", secondary: "none" } : _d, _f = _e.primary, primaryA = _f === void 0 ? "primary" : _f, _g = _e.secondary, secondaryA = _g === void 0 ? "secondary" : _g, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > (let { + > +5 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +6 > +7 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +8 > +9 > primary: primaryA = "primary" +10> +11> primary: primaryA = "primary" +12> , + > +13> secondary: secondaryA = "secondary" +14> +15> secondary: secondaryA = "secondary" +16> + > } = { primary: "none", secondary: "none" } + > } = multiRobot, +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(18, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(18, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(18, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(18, 6) Source(36, 5) + SourceIndex(0) +5 >Emitted(18, 32) Source(39, 47) + SourceIndex(0) +6 >Emitted(18, 34) Source(36, 5) + SourceIndex(0) +7 >Emitted(18, 98) Source(39, 47) + SourceIndex(0) +8 >Emitted(18, 100) Source(37, 9) + SourceIndex(0) +9 >Emitted(18, 115) Source(37, 38) + SourceIndex(0) +10>Emitted(18, 117) Source(37, 9) + SourceIndex(0) +11>Emitted(18, 158) Source(37, 38) + SourceIndex(0) +12>Emitted(18, 160) Source(38, 9) + SourceIndex(0) +13>Emitted(18, 177) Source(38, 44) + SourceIndex(0) +14>Emitted(18, 179) Source(38, 9) + SourceIndex(0) +15>Emitted(18, 224) Source(38, 44) + SourceIndex(0) +16>Emitted(18, 226) Source(40, 17) + SourceIndex(0) +17>Emitted(18, 227) Source(40, 18) + SourceIndex(0) +18>Emitted(18, 230) Source(40, 21) + SourceIndex(0) +19>Emitted(18, 231) Source(40, 22) + SourceIndex(0) +20>Emitted(18, 233) Source(40, 24) + SourceIndex(0) +21>Emitted(18, 234) Source(40, 25) + SourceIndex(0) +22>Emitted(18, 237) Source(40, 28) + SourceIndex(0) +23>Emitted(18, 238) Source(40, 29) + SourceIndex(0) +24>Emitted(18, 240) Source(40, 31) + SourceIndex(0) +25>Emitted(18, 241) Source(40, 32) + SourceIndex(0) +26>Emitted(18, 243) Source(40, 34) + SourceIndex(0) +27>Emitted(18, 245) Source(40, 36) + SourceIndex(0) +28>Emitted(18, 246) Source(40, 37) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(19, 5) Source(41, 5) + SourceIndex(0) +2 >Emitted(19, 12) Source(41, 12) + SourceIndex(0) +3 >Emitted(19, 13) Source(41, 13) + SourceIndex(0) +4 >Emitted(19, 16) Source(41, 16) + SourceIndex(0) +5 >Emitted(19, 17) Source(41, 17) + SourceIndex(0) +6 >Emitted(19, 25) Source(41, 25) + SourceIndex(0) +7 >Emitted(19, 26) Source(41, 26) + SourceIndex(0) +8 >Emitted(19, 27) Source(41, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(20, 1) Source(42, 1) + SourceIndex(0) +2 >Emitted(20, 2) Source(42, 2) + SourceIndex(0) +--- +>>>for (var _h = getMultiRobot().skills, _j = _h === void 0 ? { primary: "none", secondary: "none" } : _h, _k = _j.primary, primaryA = _k === void 0 ? "primary" : _k, _l = _j.secondary, secondaryA = _l === void 0 ? "secondary" : _l, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > (let { + > +5 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +6 > +7 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +8 > +9 > primary: primaryA = "primary" +10> +11> primary: primaryA = "primary" +12> , + > +13> secondary: secondaryA = "secondary" +14> +15> secondary: secondaryA = "secondary" +16> + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot(), +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(21, 1) Source(43, 1) + SourceIndex(0) +2 >Emitted(21, 4) Source(43, 4) + SourceIndex(0) +3 >Emitted(21, 5) Source(43, 5) + SourceIndex(0) +4 >Emitted(21, 6) Source(44, 5) + SourceIndex(0) +5 >Emitted(21, 37) Source(47, 47) + SourceIndex(0) +6 >Emitted(21, 39) Source(44, 5) + SourceIndex(0) +7 >Emitted(21, 103) Source(47, 47) + SourceIndex(0) +8 >Emitted(21, 105) Source(45, 9) + SourceIndex(0) +9 >Emitted(21, 120) Source(45, 38) + SourceIndex(0) +10>Emitted(21, 122) Source(45, 9) + SourceIndex(0) +11>Emitted(21, 163) Source(45, 38) + SourceIndex(0) +12>Emitted(21, 165) Source(46, 9) + SourceIndex(0) +13>Emitted(21, 182) Source(46, 44) + SourceIndex(0) +14>Emitted(21, 184) Source(46, 9) + SourceIndex(0) +15>Emitted(21, 229) Source(46, 44) + SourceIndex(0) +16>Emitted(21, 231) Source(48, 22) + SourceIndex(0) +17>Emitted(21, 232) Source(48, 23) + SourceIndex(0) +18>Emitted(21, 235) Source(48, 26) + SourceIndex(0) +19>Emitted(21, 236) Source(48, 27) + SourceIndex(0) +20>Emitted(21, 238) Source(48, 29) + SourceIndex(0) +21>Emitted(21, 239) Source(48, 30) + SourceIndex(0) +22>Emitted(21, 242) Source(48, 33) + SourceIndex(0) +23>Emitted(21, 243) Source(48, 34) + SourceIndex(0) +24>Emitted(21, 245) Source(48, 36) + SourceIndex(0) +25>Emitted(21, 246) Source(48, 37) + SourceIndex(0) +26>Emitted(21, 248) Source(48, 39) + SourceIndex(0) +27>Emitted(21, 250) Source(48, 41) + SourceIndex(0) +28>Emitted(21, 251) Source(48, 42) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(22, 5) Source(49, 5) + SourceIndex(0) +2 >Emitted(22, 12) Source(49, 12) + SourceIndex(0) +3 >Emitted(22, 13) Source(49, 13) + SourceIndex(0) +4 >Emitted(22, 16) Source(49, 16) + SourceIndex(0) +5 >Emitted(22, 17) Source(49, 17) + SourceIndex(0) +6 >Emitted(22, 25) Source(49, 25) + SourceIndex(0) +7 >Emitted(22, 26) Source(49, 26) + SourceIndex(0) +8 >Emitted(22, 27) Source(49, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(23, 1) Source(50, 1) + SourceIndex(0) +2 >Emitted(23, 2) Source(50, 2) + SourceIndex(0) +--- +>>>for (var _m = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }.skills, _o = _m === void 0 ? { primary: "none", secondary: "none" } : _m, _p = _o.primary, primaryA = _p === void 0 ? "primary" : _p, _q = _o.secondary, secondaryA = _q === void 0 ? "secondary" : _q, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > (let { + > +5 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +6 > +7 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +8 > +9 > primary: primaryA = "primary" +10> +11> primary: primaryA = "primary" +12> , + > +13> secondary: secondaryA = "secondary" +14> +15> secondary: secondaryA = "secondary" +16> + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + > +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(24, 1) Source(51, 1) + SourceIndex(0) +2 >Emitted(24, 4) Source(51, 4) + SourceIndex(0) +3 >Emitted(24, 5) Source(51, 5) + SourceIndex(0) +4 >Emitted(24, 6) Source(52, 5) + SourceIndex(0) +5 >Emitted(24, 95) Source(55, 47) + SourceIndex(0) +6 >Emitted(24, 97) Source(52, 5) + SourceIndex(0) +7 >Emitted(24, 161) Source(55, 47) + SourceIndex(0) +8 >Emitted(24, 163) Source(53, 9) + SourceIndex(0) +9 >Emitted(24, 178) Source(53, 38) + SourceIndex(0) +10>Emitted(24, 180) Source(53, 9) + SourceIndex(0) +11>Emitted(24, 221) Source(53, 38) + SourceIndex(0) +12>Emitted(24, 223) Source(54, 9) + SourceIndex(0) +13>Emitted(24, 240) Source(54, 44) + SourceIndex(0) +14>Emitted(24, 242) Source(54, 9) + SourceIndex(0) +15>Emitted(24, 287) Source(54, 44) + SourceIndex(0) +16>Emitted(24, 289) Source(57, 5) + SourceIndex(0) +17>Emitted(24, 290) Source(57, 6) + SourceIndex(0) +18>Emitted(24, 293) Source(57, 9) + SourceIndex(0) +19>Emitted(24, 294) Source(57, 10) + SourceIndex(0) +20>Emitted(24, 296) Source(57, 12) + SourceIndex(0) +21>Emitted(24, 297) Source(57, 13) + SourceIndex(0) +22>Emitted(24, 300) Source(57, 16) + SourceIndex(0) +23>Emitted(24, 301) Source(57, 17) + SourceIndex(0) +24>Emitted(24, 303) Source(57, 19) + SourceIndex(0) +25>Emitted(24, 304) Source(57, 20) + SourceIndex(0) +26>Emitted(24, 306) Source(57, 22) + SourceIndex(0) +27>Emitted(24, 308) Source(57, 24) + SourceIndex(0) +28>Emitted(24, 309) Source(57, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(25, 5) Source(58, 5) + SourceIndex(0) +2 >Emitted(25, 12) Source(58, 12) + SourceIndex(0) +3 >Emitted(25, 13) Source(58, 13) + SourceIndex(0) +4 >Emitted(25, 16) Source(58, 16) + SourceIndex(0) +5 >Emitted(25, 17) Source(58, 17) + SourceIndex(0) +6 >Emitted(25, 25) Source(58, 25) + SourceIndex(0) +7 >Emitted(25, 26) Source(58, 26) + SourceIndex(0) +8 >Emitted(25, 27) Source(58, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(26, 1) Source(59, 1) + SourceIndex(0) +2 >Emitted(26, 2) Source(59, 2) + SourceIndex(0) +--- +>>>for (var _r = robot.name, nameA = _r === void 0 ? "noName" : _r, _s = robot.skill, skillA = _s === void 0 ? "skill" : _s, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > (let { +5 > name: nameA = "noName" +6 > +7 > name: nameA = "noName" +8 > , +9 > skill: skillA = "skill" +10> +11> skill: skillA = "skill" +12> } = robot, +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(27, 1) Source(61, 1) + SourceIndex(0) +2 >Emitted(27, 4) Source(61, 4) + SourceIndex(0) +3 >Emitted(27, 5) Source(61, 5) + SourceIndex(0) +4 >Emitted(27, 6) Source(61, 11) + SourceIndex(0) +5 >Emitted(27, 25) Source(61, 33) + SourceIndex(0) +6 >Emitted(27, 27) Source(61, 11) + SourceIndex(0) +7 >Emitted(27, 64) Source(61, 33) + SourceIndex(0) +8 >Emitted(27, 66) Source(61, 35) + SourceIndex(0) +9 >Emitted(27, 82) Source(61, 58) + SourceIndex(0) +10>Emitted(27, 84) Source(61, 35) + SourceIndex(0) +11>Emitted(27, 121) Source(61, 58) + SourceIndex(0) +12>Emitted(27, 123) Source(61, 70) + SourceIndex(0) +13>Emitted(27, 124) Source(61, 71) + SourceIndex(0) +14>Emitted(27, 127) Source(61, 74) + SourceIndex(0) +15>Emitted(27, 128) Source(61, 75) + SourceIndex(0) +16>Emitted(27, 130) Source(61, 77) + SourceIndex(0) +17>Emitted(27, 131) Source(61, 78) + SourceIndex(0) +18>Emitted(27, 134) Source(61, 81) + SourceIndex(0) +19>Emitted(27, 135) Source(61, 82) + SourceIndex(0) +20>Emitted(27, 137) Source(61, 84) + SourceIndex(0) +21>Emitted(27, 138) Source(61, 85) + SourceIndex(0) +22>Emitted(27, 140) Source(61, 87) + SourceIndex(0) +23>Emitted(27, 142) Source(61, 89) + SourceIndex(0) +24>Emitted(27, 143) Source(61, 90) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(28, 5) Source(62, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(62, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(62, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(62, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(62, 17) + SourceIndex(0) +6 >Emitted(28, 22) Source(62, 22) + SourceIndex(0) +7 >Emitted(28, 23) Source(62, 23) + SourceIndex(0) +8 >Emitted(28, 24) Source(62, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(29, 1) Source(63, 1) + SourceIndex(0) +2 >Emitted(29, 2) Source(63, 2) + SourceIndex(0) +--- +>>>for (var _t = getRobot(), _u = _t.name, nameA = _u === void 0 ? "noName" : _u, _v = _t.skill, skillA = _v === void 0 ? "skill" : _v, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^ +26> ^^ +27> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let {name: nameA = "noName", skill: skillA = "skill" } = getRobot() +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , +12> skill: skillA = "skill" +13> +14> skill: skillA = "skill" +15> } = getRobot(), +16> i +17> = +18> 0 +19> ; +20> i +21> < +22> 1 +23> ; +24> i +25> ++ +26> ) +27> { +1->Emitted(30, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(64, 6) + SourceIndex(0) +5 >Emitted(30, 10) Source(64, 6) + SourceIndex(0) +6 >Emitted(30, 25) Source(64, 73) + SourceIndex(0) +7 >Emitted(30, 27) Source(64, 11) + SourceIndex(0) +8 >Emitted(30, 39) Source(64, 33) + SourceIndex(0) +9 >Emitted(30, 41) Source(64, 11) + SourceIndex(0) +10>Emitted(30, 78) Source(64, 33) + SourceIndex(0) +11>Emitted(30, 80) Source(64, 35) + SourceIndex(0) +12>Emitted(30, 93) Source(64, 58) + SourceIndex(0) +13>Emitted(30, 95) Source(64, 35) + SourceIndex(0) +14>Emitted(30, 132) Source(64, 58) + SourceIndex(0) +15>Emitted(30, 134) Source(64, 75) + SourceIndex(0) +16>Emitted(30, 135) Source(64, 76) + SourceIndex(0) +17>Emitted(30, 138) Source(64, 79) + SourceIndex(0) +18>Emitted(30, 139) Source(64, 80) + SourceIndex(0) +19>Emitted(30, 141) Source(64, 82) + SourceIndex(0) +20>Emitted(30, 142) Source(64, 83) + SourceIndex(0) +21>Emitted(30, 145) Source(64, 86) + SourceIndex(0) +22>Emitted(30, 146) Source(64, 87) + SourceIndex(0) +23>Emitted(30, 148) Source(64, 89) + SourceIndex(0) +24>Emitted(30, 149) Source(64, 90) + SourceIndex(0) +25>Emitted(30, 151) Source(64, 92) + SourceIndex(0) +26>Emitted(30, 153) Source(64, 94) + SourceIndex(0) +27>Emitted(30, 154) Source(64, 95) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(65, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(65, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(65, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(65, 17) + SourceIndex(0) +6 >Emitted(31, 22) Source(65, 22) + SourceIndex(0) +7 >Emitted(31, 23) Source(65, 23) + SourceIndex(0) +8 >Emitted(31, 24) Source(65, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(66, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(66, 2) + SourceIndex(0) +--- +>>>for (var _w = { name: "trimmer", skill: "trimming" }, _x = _w.name, nameA = _x === void 0 ? "noName" : _x, _y = _w.skill, skillA = _y === void 0 ? "skill" : _y, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^ +17> ^^^ +18> ^ +19> ^^ +20> ^ +21> ^^^ +22> ^ +23> ^^ +24> ^ +25> ^^ +26> ^^ +27> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" } +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , +12> skill: skillA = "skill" +13> +14> skill: skillA = "skill" +15> } = { name: "trimmer", skill: "trimming" }, +16> i +17> = +18> 0 +19> ; +20> i +21> < +22> 1 +23> ; +24> i +25> ++ +26> ) +27> { +1->Emitted(33, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(67, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(67, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(67, 6) + SourceIndex(0) +5 >Emitted(33, 10) Source(67, 6) + SourceIndex(0) +6 >Emitted(33, 53) Source(67, 108) + SourceIndex(0) +7 >Emitted(33, 55) Source(67, 11) + SourceIndex(0) +8 >Emitted(33, 67) Source(67, 33) + SourceIndex(0) +9 >Emitted(33, 69) Source(67, 11) + SourceIndex(0) +10>Emitted(33, 106) Source(67, 33) + SourceIndex(0) +11>Emitted(33, 108) Source(67, 35) + SourceIndex(0) +12>Emitted(33, 121) Source(67, 58) + SourceIndex(0) +13>Emitted(33, 123) Source(67, 35) + SourceIndex(0) +14>Emitted(33, 160) Source(67, 58) + SourceIndex(0) +15>Emitted(33, 162) Source(67, 110) + SourceIndex(0) +16>Emitted(33, 163) Source(67, 111) + SourceIndex(0) +17>Emitted(33, 166) Source(67, 114) + SourceIndex(0) +18>Emitted(33, 167) Source(67, 115) + SourceIndex(0) +19>Emitted(33, 169) Source(67, 117) + SourceIndex(0) +20>Emitted(33, 170) Source(67, 118) + SourceIndex(0) +21>Emitted(33, 173) Source(67, 121) + SourceIndex(0) +22>Emitted(33, 174) Source(67, 122) + SourceIndex(0) +23>Emitted(33, 176) Source(67, 124) + SourceIndex(0) +24>Emitted(33, 177) Source(67, 125) + SourceIndex(0) +25>Emitted(33, 179) Source(67, 127) + SourceIndex(0) +26>Emitted(33, 181) Source(67, 129) + SourceIndex(0) +27>Emitted(33, 182) Source(67, 130) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(34, 5) Source(68, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(68, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(68, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(68, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(68, 17) + SourceIndex(0) +6 >Emitted(34, 22) Source(68, 22) + SourceIndex(0) +7 >Emitted(34, 23) Source(68, 23) + SourceIndex(0) +8 >Emitted(34, 24) Source(68, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(69, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(69, 2) + SourceIndex(0) +--- +>>>for (var _z = multiRobot.name, nameA = _z === void 0 ? "noName" : _z, _0 = multiRobot.skills, _1 = _0 === void 0 ? { primary: "none", secondary: "none" } : _0, _2 = _1.primary, primaryA = _2 === void 0 ? "primary" : _2, _3 = _1.secondary, secondaryA = _3 === void 0 ? "secondary" : _3, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^^^^^^^^^^^^^^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +8 > ^^ +9 > ^^^^^^^^^^^^^^^^^^^^^^ +10> ^^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +12> ^^ +13> ^^^^^^^^^^^^^^^ +14> ^^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +16> ^^ +17> ^^^^^^^^^^^^^^^^^ +18> ^^ +19> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > (let { + > +5 > name: nameA = "noName" +6 > +7 > name: nameA = "noName" +8 > , + > +9 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +10> +11> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +12> +13> primary: primaryA = "primary" +14> +15> primary: primaryA = "primary" +16> , + > +17> secondary: secondaryA = "secondary" +18> +19> secondary: secondaryA = "secondary" +20> + > } = { primary: "none", secondary: "none" } + > } = multiRobot, +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(36, 1) Source(70, 1) + SourceIndex(0) +2 >Emitted(36, 4) Source(70, 4) + SourceIndex(0) +3 >Emitted(36, 5) Source(70, 5) + SourceIndex(0) +4 >Emitted(36, 6) Source(71, 5) + SourceIndex(0) +5 >Emitted(36, 30) Source(71, 27) + SourceIndex(0) +6 >Emitted(36, 32) Source(71, 5) + SourceIndex(0) +7 >Emitted(36, 69) Source(71, 27) + SourceIndex(0) +8 >Emitted(36, 71) Source(72, 5) + SourceIndex(0) +9 >Emitted(36, 93) Source(75, 47) + SourceIndex(0) +10>Emitted(36, 95) Source(72, 5) + SourceIndex(0) +11>Emitted(36, 159) Source(75, 47) + SourceIndex(0) +12>Emitted(36, 161) Source(73, 9) + SourceIndex(0) +13>Emitted(36, 176) Source(73, 38) + SourceIndex(0) +14>Emitted(36, 178) Source(73, 9) + SourceIndex(0) +15>Emitted(36, 219) Source(73, 38) + SourceIndex(0) +16>Emitted(36, 221) Source(74, 9) + SourceIndex(0) +17>Emitted(36, 238) Source(74, 44) + SourceIndex(0) +18>Emitted(36, 240) Source(74, 9) + SourceIndex(0) +19>Emitted(36, 285) Source(74, 44) + SourceIndex(0) +20>Emitted(36, 287) Source(76, 17) + SourceIndex(0) +21>Emitted(36, 288) Source(76, 18) + SourceIndex(0) +22>Emitted(36, 291) Source(76, 21) + SourceIndex(0) +23>Emitted(36, 292) Source(76, 22) + SourceIndex(0) +24>Emitted(36, 294) Source(76, 24) + SourceIndex(0) +25>Emitted(36, 295) Source(76, 25) + SourceIndex(0) +26>Emitted(36, 298) Source(76, 28) + SourceIndex(0) +27>Emitted(36, 299) Source(76, 29) + SourceIndex(0) +28>Emitted(36, 301) Source(76, 31) + SourceIndex(0) +29>Emitted(36, 302) Source(76, 32) + SourceIndex(0) +30>Emitted(36, 304) Source(76, 34) + SourceIndex(0) +31>Emitted(36, 306) Source(76, 36) + SourceIndex(0) +32>Emitted(36, 307) Source(76, 37) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(37, 5) Source(77, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(77, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(77, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(77, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(77, 17) + SourceIndex(0) +6 >Emitted(37, 25) Source(77, 25) + SourceIndex(0) +7 >Emitted(37, 26) Source(77, 26) + SourceIndex(0) +8 >Emitted(37, 27) Source(77, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(78, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(78, 2) + SourceIndex(0) +--- +>>>for (var _4 = getMultiRobot(), _5 = _4.name, nameA = _5 === void 0 ? "noName" : _5, _6 = _4.skills, _7 = _6 === void 0 ? { primary: "none", secondary: "none" } : _6, _8 = _7.primary, primaryA = _8 === void 0 ? "primary" : _8, _9 = _7.secondary, secondaryA = _9 === void 0 ? "secondary" : _9, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^^ +30> ^ +31> ^^ +32> ^ +33> ^^ +34> ^^ +35> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , + > +12> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +15> +16> primary: primaryA = "primary" +17> +18> primary: primaryA = "primary" +19> , + > +20> secondary: secondaryA = "secondary" +21> +22> secondary: secondaryA = "secondary" +23> + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot(), +24> i +25> = +26> 0 +27> ; +28> i +29> < +30> 1 +31> ; +32> i +33> ++ +34> ) +35> { +1->Emitted(39, 1) Source(79, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(79, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(79, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(79, 6) + SourceIndex(0) +5 >Emitted(39, 10) Source(79, 6) + SourceIndex(0) +6 >Emitted(39, 30) Source(85, 20) + SourceIndex(0) +7 >Emitted(39, 32) Source(80, 5) + SourceIndex(0) +8 >Emitted(39, 44) Source(80, 27) + SourceIndex(0) +9 >Emitted(39, 46) Source(80, 5) + SourceIndex(0) +10>Emitted(39, 83) Source(80, 27) + SourceIndex(0) +11>Emitted(39, 85) Source(81, 5) + SourceIndex(0) +12>Emitted(39, 99) Source(84, 47) + SourceIndex(0) +13>Emitted(39, 101) Source(81, 5) + SourceIndex(0) +14>Emitted(39, 165) Source(84, 47) + SourceIndex(0) +15>Emitted(39, 167) Source(82, 9) + SourceIndex(0) +16>Emitted(39, 182) Source(82, 38) + SourceIndex(0) +17>Emitted(39, 184) Source(82, 9) + SourceIndex(0) +18>Emitted(39, 225) Source(82, 38) + SourceIndex(0) +19>Emitted(39, 227) Source(83, 9) + SourceIndex(0) +20>Emitted(39, 244) Source(83, 44) + SourceIndex(0) +21>Emitted(39, 246) Source(83, 9) + SourceIndex(0) +22>Emitted(39, 291) Source(83, 44) + SourceIndex(0) +23>Emitted(39, 293) Source(85, 22) + SourceIndex(0) +24>Emitted(39, 294) Source(85, 23) + SourceIndex(0) +25>Emitted(39, 297) Source(85, 26) + SourceIndex(0) +26>Emitted(39, 298) Source(85, 27) + SourceIndex(0) +27>Emitted(39, 300) Source(85, 29) + SourceIndex(0) +28>Emitted(39, 301) Source(85, 30) + SourceIndex(0) +29>Emitted(39, 304) Source(85, 33) + SourceIndex(0) +30>Emitted(39, 305) Source(85, 34) + SourceIndex(0) +31>Emitted(39, 307) Source(85, 36) + SourceIndex(0) +32>Emitted(39, 308) Source(85, 37) + SourceIndex(0) +33>Emitted(39, 310) Source(85, 39) + SourceIndex(0) +34>Emitted(39, 312) Source(85, 41) + SourceIndex(0) +35>Emitted(39, 313) Source(85, 42) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(40, 5) Source(86, 5) + SourceIndex(0) +2 >Emitted(40, 12) Source(86, 12) + SourceIndex(0) +3 >Emitted(40, 13) Source(86, 13) + SourceIndex(0) +4 >Emitted(40, 16) Source(86, 16) + SourceIndex(0) +5 >Emitted(40, 17) Source(86, 17) + SourceIndex(0) +6 >Emitted(40, 25) Source(86, 25) + SourceIndex(0) +7 >Emitted(40, 26) Source(86, 26) + SourceIndex(0) +8 >Emitted(40, 27) Source(86, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(87, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(87, 2) + SourceIndex(0) +--- +>>>for (var _10 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _11 = _10.name, nameA = _11 === void 0 ? "noName" : _11, _12 = _10.skills, _13 = _12 === void 0 ? { primary: "none", secondary: "none" } : _12, _14 = _13.primary, primaryA = _14 === void 0 ? "primary" : _14, _15 = _13.secondary, secondaryA = _15 === void 0 ? "secondary" : _15, i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^^^^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^ +24> ^ +25> ^^^ +26> ^ +27> ^^ +28> ^ +29> ^^^ +30> ^ +31> ^^ +32> ^ +33> ^^ +34> ^^ +35> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , + > +12> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +15> +16> primary: primaryA = "primary" +17> +18> primary: primaryA = "primary" +19> , + > +20> secondary: secondaryA = "secondary" +21> +22> secondary: secondaryA = "secondary" +23> + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + > +24> i +25> = +26> 0 +27> ; +28> i +29> < +30> 1 +31> ; +32> i +33> ++ +34> ) +35> { +1->Emitted(42, 1) Source(88, 1) + SourceIndex(0) +2 >Emitted(42, 4) Source(88, 4) + SourceIndex(0) +3 >Emitted(42, 5) Source(88, 5) + SourceIndex(0) +4 >Emitted(42, 6) Source(88, 6) + SourceIndex(0) +5 >Emitted(42, 10) Source(88, 6) + SourceIndex(0) +6 >Emitted(42, 89) Source(94, 90) + SourceIndex(0) +7 >Emitted(42, 91) Source(89, 5) + SourceIndex(0) +8 >Emitted(42, 105) Source(89, 27) + SourceIndex(0) +9 >Emitted(42, 107) Source(89, 5) + SourceIndex(0) +10>Emitted(42, 146) Source(89, 27) + SourceIndex(0) +11>Emitted(42, 148) Source(90, 5) + SourceIndex(0) +12>Emitted(42, 164) Source(93, 47) + SourceIndex(0) +13>Emitted(42, 166) Source(90, 5) + SourceIndex(0) +14>Emitted(42, 233) Source(93, 47) + SourceIndex(0) +15>Emitted(42, 235) Source(91, 9) + SourceIndex(0) +16>Emitted(42, 252) Source(91, 38) + SourceIndex(0) +17>Emitted(42, 254) Source(91, 9) + SourceIndex(0) +18>Emitted(42, 297) Source(91, 38) + SourceIndex(0) +19>Emitted(42, 299) Source(92, 9) + SourceIndex(0) +20>Emitted(42, 318) Source(92, 44) + SourceIndex(0) +21>Emitted(42, 320) Source(92, 9) + SourceIndex(0) +22>Emitted(42, 367) Source(92, 44) + SourceIndex(0) +23>Emitted(42, 369) Source(95, 5) + SourceIndex(0) +24>Emitted(42, 370) Source(95, 6) + SourceIndex(0) +25>Emitted(42, 373) Source(95, 9) + SourceIndex(0) +26>Emitted(42, 374) Source(95, 10) + SourceIndex(0) +27>Emitted(42, 376) Source(95, 12) + SourceIndex(0) +28>Emitted(42, 377) Source(95, 13) + SourceIndex(0) +29>Emitted(42, 380) Source(95, 16) + SourceIndex(0) +30>Emitted(42, 381) Source(95, 17) + SourceIndex(0) +31>Emitted(42, 383) Source(95, 19) + SourceIndex(0) +32>Emitted(42, 384) Source(95, 20) + SourceIndex(0) +33>Emitted(42, 386) Source(95, 22) + SourceIndex(0) +34>Emitted(42, 388) Source(95, 24) + SourceIndex(0) +35>Emitted(42, 389) Source(95, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(43, 5) Source(96, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(96, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(96, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(96, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(96, 17) + SourceIndex(0) +6 >Emitted(43, 25) Source(96, 25) + SourceIndex(0) +7 >Emitted(43, 26) Source(96, 26) + SourceIndex(0) +8 >Emitted(43, 27) Source(96, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(44, 1) Source(97, 1) + SourceIndex(0) +2 >Emitted(44, 2) Source(97, 2) + SourceIndex(0) +--- +>>>//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols new file mode 100644 index 00000000000..5d47a45699e --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.symbols @@ -0,0 +1,350 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary?: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) + + secondary?: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 16, 20)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 16, 35)) + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 30)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 45)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 55)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 74)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 97)) + + return robot; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 16, 3)) +} +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 20, 1)) + + return multiRobot; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 3)) +} + +for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 25, 10)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 25, 42)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 25, 42)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 25, 42)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 25, 10)) +} +for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 28, 10)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 28, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 28, 48)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 28, 48)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 28, 10)) +} +for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 10)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 45)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 62)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 83)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 83)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 83)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 31, 10)) +} +for (let { + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 35, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 36, 38)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 38, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 38, 26)) + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 39, 15)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 39, 15)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 39, 15)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 35, 13)) +} +for (let { + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 43, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 44, 38)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 46, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 46, 26)) + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 47, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 47, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 47, 20)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 43, 13)) +} +for (let { + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 51, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 52, 38)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 54, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 54, 26)) + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 55, 90)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 51, 13)) +} + +for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 60, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 60, 33)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 60, 68)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 60, 68)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 60, 68)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 60, 10)) +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 63, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 63, 33)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 63, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 63, 73)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 63, 73)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 63, 10)) +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(Robot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 3, 17)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 10)) +>skill : Symbol(Robot.skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 4, 17)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 33)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 70)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 87)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 108)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 108)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 108)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 66, 10)) +} +for (let { + name: nameA = "noName", +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 69, 10)) + + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 71, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 72, 38)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 74, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 74, 26)) + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 75, 15)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 75, 15)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 75, 15)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 71, 13)) +} +for (let { + name: nameA = "noName", +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 78, 10)) + + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 80, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 81, 38)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 83, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 83, 26)) + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 84, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 84, 20)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 84, 20)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 80, 13)) +} +for (let { + name: nameA = "noName", +>name : Symbol(MultiRobot.name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 8, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 87, 10)) + + skills: { +>skills : Symbol(MultiRobot.skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 9, 17)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 10, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 89, 13)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 11, 25)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 90, 38)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 92, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 92, 26)) + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 90)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 93, 90)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts, 89, 13)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types new file mode 100644 index 00000000000..c9e76f88581 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.types @@ -0,0 +1,484 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } + + primary?: string; +>primary : string + + secondary?: string; +>secondary : string + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : MultiRobot +>MultiRobot : MultiRobot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +function getRobot() { +>getRobot : () => Robot + + return robot; +>robot : Robot +} +function getMultiRobot() { +>getMultiRobot : () => MultiRobot + + return multiRobot; +>multiRobot : MultiRobot +} + +for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { +>name : any +>nameA : string +>"noName" : string +>robot : Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { +>name : any +>nameA : string +>"noName" : string +>getRobot() : Robot +>getRobot : () => Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : any +>nameA : string +>"noName" : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { +>name : any +>nameA : string +>"noName" : string +>skill : any +>skillA : string +>"skill" : string +>robot : Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { +>name : any +>nameA : string +>"noName" : string +>skill : any +>skillA : string +>"skill" : string +>getRobot() : Robot +>getRobot : () => Robot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : any +>nameA : string +>"noName" : string +>skill : any +>skillA : string +>"skill" : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for (let { + name: nameA = "noName", +>name : any +>nameA : string +>"noName" : string + + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { + name: nameA = "noName", +>name : any +>nameA : string +>"noName" : string + + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for (let { + name: nameA = "noName", +>name : any +>nameA : string +>"noName" : string + + skills: { +>skills : any + + primary: primaryA = "primary", +>primary : any +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : any +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js new file mode 100644 index 00000000000..a360326c1ca --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js @@ -0,0 +1,265 @@ +//// [sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts] +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for ({ name = "noName" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + + +for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +//// [sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js] +var robot = { name: "mower", skill: "mowing" }; +var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} +var nameA, primaryA, secondaryA, i, skillA; +var name, primary, secondary, skill; +for ((_a = robot.name, nameA = _a === void 0 ? "noName" : _a, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_b = getRobot(), _c = _b.name, nameA = _c === void 0 ? "noName" : _c, _b), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_d = { name: "trimmer", skill: "trimming" }, _e = _d.name, nameA = _e === void 0 ? "noName" : _e, _d), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_f = multiRobot.skills, _g = _f === void 0 ? { primary: "none", secondary: "none" } : _f, _h = _g.primary, primaryA = _h === void 0 ? "primary" : _h, _j = _g.secondary, secondaryA = _j === void 0 ? "secondary" : _j, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_k = getMultiRobot(), _l = _k.skills, _m = _l === void 0 ? { primary: "none", secondary: "none" } : _l, _o = _m.primary, primaryA = _o === void 0 ? "primary" : _o, _p = _m.secondary, secondaryA = _p === void 0 ? "secondary" : _p, _k), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_q = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _r = _q.skills, _s = _r === void 0 ? { primary: "none", secondary: "none" } : _r, _t = _s.primary, primaryA = _t === void 0 ? "primary" : _t, _u = _s.secondary, secondaryA = _u === void 0 ? "secondary" : _u, _q), + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_v = robot.name, name = _v === void 0 ? "noName" : _v, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_w = getRobot(), _x = _w.name, name = _x === void 0 ? "noName" : _x, _w), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_y = { name: "trimmer", skill: "trimming" }, _z = _y.name, name = _z === void 0 ? "noName" : _z, _y), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_0 = multiRobot.skills, _1 = _0 === void 0 ? { primary: "none", secondary: "none" } : _0, _2 = _1.primary, primary = _2 === void 0 ? "primary" : _2, _3 = _1.secondary, secondary = _3 === void 0 ? "secondary" : _3, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_4 = getMultiRobot(), _5 = _4.skills, _6 = _5 === void 0 ? { primary: "none", secondary: "none" } : _5, _7 = _6.primary, primary = _7 === void 0 ? "primary" : _7, _8 = _6.secondary, secondary = _8 === void 0 ? "secondary" : _8, _4), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_9 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _10 = _9.skills, _11 = _10 === void 0 ? { primary: "none", secondary: "none" } : _10, _12 = _11.primary, primary = _12 === void 0 ? "primary" : _12, _13 = _11.secondary, secondary = _13 === void 0 ? "secondary" : _13, _9), + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_14 = robot.name, nameA = _14 === void 0 ? "noName" : _14, _15 = robot.skill, skillA = _15 === void 0 ? "skill" : _15, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_16 = getRobot(), _17 = _16.name, nameA = _17 === void 0 ? "noName" : _17, _18 = _16.skill, skillA = _18 === void 0 ? "skill" : _18, _16), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_19 = { name: "trimmer", skill: "trimming" }, _20 = _19.name, nameA = _20 === void 0 ? "noName" : _20, _21 = _19.skill, skillA = _21 === void 0 ? "skill" : _21, _19), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_22 = multiRobot.name, nameA = _22 === void 0 ? "noName" : _22, _23 = multiRobot.skills, _24 = _23 === void 0 ? { primary: "none", secondary: "none" } : _23, _25 = _24.primary, primaryA = _25 === void 0 ? "primary" : _25, _26 = _24.secondary, secondaryA = _26 === void 0 ? "secondary" : _26, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_27 = getMultiRobot(), _28 = _27.name, nameA = _28 === void 0 ? "noName" : _28, _29 = _27.skills, _30 = _29 === void 0 ? { primary: "none", secondary: "none" } : _29, _31 = _30.primary, primaryA = _31 === void 0 ? "primary" : _31, _32 = _30.secondary, secondaryA = _32 === void 0 ? "secondary" : _32, _27), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_33 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _34 = _33.name, nameA = _34 === void 0 ? "noName" : _34, _35 = _33.skills, _36 = _35 === void 0 ? { primary: "none", secondary: "none" } : _35, _37 = _36.primary, primaryA = _37 === void 0 ? "primary" : _37, _38 = _36.secondary, secondaryA = _38 === void 0 ? "secondary" : _38, _33), + i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_39 = robot.name, name = _39 === void 0 ? "noName" : _39, _40 = robot.skill, skill = _40 === void 0 ? "skill" : _40, robot), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_41 = getRobot(), _42 = _41.name, name = _42 === void 0 ? "noName" : _42, _43 = _41.skill, skill = _43 === void 0 ? "skill" : _43, _41), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_44 = { name: "trimmer", skill: "trimming" }, _45 = _44.name, name = _45 === void 0 ? "noName" : _45, _46 = _44.skill, skill = _46 === void 0 ? "skill" : _46, _44), i = 0; i < 1; i++) { + console.log(nameA); +} +for ((_47 = multiRobot.name, name = _47 === void 0 ? "noName" : _47, _48 = multiRobot.skills, _49 = _48 === void 0 ? { primary: "none", secondary: "none" } : _48, _50 = _49.primary, primary = _50 === void 0 ? "primary" : _50, _51 = _49.secondary, secondary = _51 === void 0 ? "secondary" : _51, multiRobot), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_52 = getMultiRobot(), _53 = _52.name, name = _53 === void 0 ? "noName" : _53, _54 = _52.skills, _55 = _54 === void 0 ? { primary: "none", secondary: "none" } : _54, _56 = _55.primary, primary = _56 === void 0 ? "primary" : _56, _57 = _55.secondary, secondary = _57 === void 0 ? "secondary" : _57, _52), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ((_58 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _59 = _58.name, name = _59 === void 0 ? "noName" : _59, _60 = _58.skills, _61 = _60 === void 0 ? { primary: "none", secondary: "none" } : _60, _62 = _61.primary, primary = _62 === void 0 ? "primary" : _62, _63 = _61.secondary, secondary = _63 === void 0 ? "secondary" : _63, _58), + i = 0; i < 1; i++) { + console.log(primaryA); +} +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63; +//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map new file mode 100644 index 00000000000..448921b9cdc --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map @@ -0,0 +1,2 @@ +//// [sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map] +{"version":3,"file":"sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js","sourceRoot":"","sources":["sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts"],"names":[],"mappings":"AAgBA,IAAI,KAAK,GAAU,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,IAAI,UAAU,GAAe,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;AACjG;IACI,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AACD;IACI,MAAM,CAAC,UAAU,CAAC;AACtB,CAAC;AAED,IAAI,KAAa,EAAE,QAAgB,EAAE,UAAkB,EAAE,CAAS,EAAE,MAAc,CAAC;AACnF,IAAI,IAAY,EAAE,OAAe,EAAE,SAAiB,EAAE,KAAa,CAAC;AAEpE,GAAG,CAAC,CAAC,CAAC,eAAsB,EAAtB,qCAAsB,EAAK,KAAK,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,eAAsC,EAArC,YAAsB,EAAtB,qCAAsB,KAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,2CAAyE,EAAxE,YAAsB,EAAtB,qCAAsB,KAAkD,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CACD,sBAG0C,EAH1C,gEAG0C,EAFtC,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAmC,EAAnC,6CAAmC,EAEvC,UAAU,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,oBAKc,EAJf,cAG0C,EAH1C,gEAG0C,EAFtC,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAmC,EAAnC,6CAAmC,KAExB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,8EAKoF,EAJrF,cAG0C,EAH1C,gEAG0C,EAFtC,eAA6B,EAA7B,yCAA6B,EAC7B,iBAAmC,EAAnC,6CAAmC,KAE8C;IACrF,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,GAAG,CAAC,CAAC,CAAE,eAAe,EAAf,oCAAe,EAAK,KAAK,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,eAAgC,EAA9B,YAAe,EAAf,oCAAe,KAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,2CAAmE,EAAjE,YAAe,EAAf,oCAAe,KAAkD,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CACD,sBAG0C,EAH1C,gEAG0C,EAFtC,eAAmB,EAAnB,wCAAmB,EACnB,iBAAuB,EAAvB,4CAAuB,EAE3B,UAAU,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,oBAKc,EAJf,cAG0C,EAH1C,gEAG0C,EAFtC,eAAmB,EAAnB,wCAAmB,EACnB,iBAAuB,EAAvB,4CAAuB,KAEZ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,8EAKoF,EAJrF,eAG0C,EAH1C,mEAG0C,EAFtC,iBAAmB,EAAnB,0CAAmB,EACnB,mBAAuB,EAAvB,8CAAuB,KAE0D;IACrF,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAGD,GAAG,CAAC,CAAC,CAAC,gBAAsB,EAAtB,uCAAsB,EAAE,iBAAuB,EAAvB,uCAAuB,EAAK,KAAK,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,gBAA+D,EAA9D,cAAsB,EAAtB,uCAAsB,EAAE,eAAuB,EAAvB,uCAAuB,MAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,4CAAkG,EAAjG,cAAsB,EAAtB,uCAAsB,EAAE,eAAuB,EAAvB,uCAAuB,MAAkD,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACzH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CACD,qBAAsB,EAAtB,uCAAsB,EACtB,uBAG0C,EAH1C,mEAG0C,EAFtC,iBAA6B,EAA7B,2CAA6B,EAC7B,mBAAmC,EAAnC,+CAAmC,EAEvC,UAAU,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,qBAMc,EALf,cAAsB,EAAtB,uCAAsB,EACtB,gBAG0C,EAH1C,mEAG0C,EAFtC,iBAA6B,EAA7B,2CAA6B,EAC7B,mBAAmC,EAAnC,+CAAmC,MAExB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,+EAMoF,EALrF,cAAsB,EAAtB,uCAAsB,EACtB,gBAG0C,EAH1C,mEAG0C,EAFtC,iBAA6B,EAA7B,2CAA6B,EAC7B,mBAAmC,EAAnC,+CAAmC,MAE8C;IACrF,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,GAAG,CAAC,CAAC,CAAE,gBAAe,EAAf,sCAAe,EAAE,iBAAe,EAAf,sCAAe,EAAK,KAAK,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,gBAAiD,EAA/C,cAAe,EAAf,sCAAe,EAAE,eAAe,EAAf,sCAAe,MAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,4CAAoF,EAAlF,cAAe,EAAf,sCAAe,EAAE,eAAe,EAAf,sCAAe,MAAkD,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AACD,GAAG,CAAC,CAAC,CACD,qBAAe,EAAf,sCAAe,EACf,uBAG0C,EAH1C,mEAG0C,EAFtC,iBAAmB,EAAnB,0CAAmB,EACnB,mBAAuB,EAAvB,8CAAuB,EAE3B,UAAU,CAAA,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,qBAMc,EALf,cAAe,EAAf,sCAAe,EACf,gBAG0C,EAH1C,mEAG0C,EAFtC,iBAAmB,EAAnB,0CAAmB,EACnB,mBAAuB,EAAvB,8CAAuB,MAEZ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,GAAG,CAAC,CAAC,CAAA,+EAMoF,EALrF,cAAe,EAAf,sCAAe,EACf,gBAG0C,EAH1C,mEAG0C,EAFtC,iBAAmB,EAAnB,0CAAmB,EACnB,mBAAuB,EAAvB,8CAAuB,MAE0D;IACrF,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC"} \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.sourcemap.txt b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.sourcemap.txt new file mode 100644 index 00000000000..3e4d7a87855 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.sourcemap.txt @@ -0,0 +1,3589 @@ +=================================================================== +JsFile: sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js +mapUrl: sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map +sourceRoot: +sources: sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts +=================================================================== +------------------------------------------------------------------- +emittedFile:tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js +sourceFile:sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts +------------------------------------------------------------------- +>>>var robot = { name: "mower", skill: "mowing" }; +1 > +2 >^^^^ +3 > ^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^^ +12> ^^^^^^^^ +13> ^^ +14> ^ +15> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 >declare var console: { + > log(msg: any): void; + >} + >interface Robot { + > name: string; + > skill: string; + >} + > + >interface MultiRobot { + > name: string; + > skills: { + > primary?: string; + > secondary?: string; + > }; + >} + > + > +2 >let +3 > robot +4 > : Robot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skill +11> : +12> "mowing" +13> } +14> ; +1 >Emitted(1, 1) Source(17, 1) + SourceIndex(0) +2 >Emitted(1, 5) Source(17, 5) + SourceIndex(0) +3 >Emitted(1, 10) Source(17, 10) + SourceIndex(0) +4 >Emitted(1, 13) Source(17, 20) + SourceIndex(0) +5 >Emitted(1, 15) Source(17, 22) + SourceIndex(0) +6 >Emitted(1, 19) Source(17, 26) + SourceIndex(0) +7 >Emitted(1, 21) Source(17, 28) + SourceIndex(0) +8 >Emitted(1, 28) Source(17, 35) + SourceIndex(0) +9 >Emitted(1, 30) Source(17, 37) + SourceIndex(0) +10>Emitted(1, 35) Source(17, 42) + SourceIndex(0) +11>Emitted(1, 37) Source(17, 44) + SourceIndex(0) +12>Emitted(1, 45) Source(17, 52) + SourceIndex(0) +13>Emitted(1, 47) Source(17, 54) + SourceIndex(0) +14>Emitted(1, 48) Source(17, 55) + SourceIndex(0) +--- +>>>var multiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +1-> +2 >^^^^ +3 > ^^^^^^^^^^ +4 > ^^^ +5 > ^^ +6 > ^^^^ +7 > ^^ +8 > ^^^^^^^ +9 > ^^ +10> ^^^^^^ +11> ^^ +12> ^^ +13> ^^^^^^^ +14> ^^ +15> ^^^^^^^^ +16> ^^ +17> ^^^^^^^^^ +18> ^^ +19> ^^^^^^ +20> ^^ +21> ^^ +22> ^ +1-> + > +2 >let +3 > multiRobot +4 > : MultiRobot = +5 > { +6 > name +7 > : +8 > "mower" +9 > , +10> skills +11> : +12> { +13> primary +14> : +15> "mowing" +16> , +17> secondary +18> : +19> "none" +20> } +21> } +22> ; +1->Emitted(2, 1) Source(18, 1) + SourceIndex(0) +2 >Emitted(2, 5) Source(18, 5) + SourceIndex(0) +3 >Emitted(2, 15) Source(18, 15) + SourceIndex(0) +4 >Emitted(2, 18) Source(18, 30) + SourceIndex(0) +5 >Emitted(2, 20) Source(18, 32) + SourceIndex(0) +6 >Emitted(2, 24) Source(18, 36) + SourceIndex(0) +7 >Emitted(2, 26) Source(18, 38) + SourceIndex(0) +8 >Emitted(2, 33) Source(18, 45) + SourceIndex(0) +9 >Emitted(2, 35) Source(18, 47) + SourceIndex(0) +10>Emitted(2, 41) Source(18, 53) + SourceIndex(0) +11>Emitted(2, 43) Source(18, 55) + SourceIndex(0) +12>Emitted(2, 45) Source(18, 57) + SourceIndex(0) +13>Emitted(2, 52) Source(18, 64) + SourceIndex(0) +14>Emitted(2, 54) Source(18, 66) + SourceIndex(0) +15>Emitted(2, 62) Source(18, 74) + SourceIndex(0) +16>Emitted(2, 64) Source(18, 76) + SourceIndex(0) +17>Emitted(2, 73) Source(18, 85) + SourceIndex(0) +18>Emitted(2, 75) Source(18, 87) + SourceIndex(0) +19>Emitted(2, 81) Source(18, 93) + SourceIndex(0) +20>Emitted(2, 83) Source(18, 95) + SourceIndex(0) +21>Emitted(2, 85) Source(18, 97) + SourceIndex(0) +22>Emitted(2, 86) Source(18, 98) + SourceIndex(0) +--- +>>>function getRobot() { +1 > +2 >^^^^^^^^^^^^^^^^^^-> +1 > + > +1 >Emitted(3, 1) Source(19, 1) + SourceIndex(0) +--- +>>> return robot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^ +5 > ^ +1->function getRobot() { + > +2 > return +3 > +4 > robot +5 > ; +1->Emitted(4, 5) Source(20, 5) + SourceIndex(0) +2 >Emitted(4, 11) Source(20, 11) + SourceIndex(0) +3 >Emitted(4, 12) Source(20, 12) + SourceIndex(0) +4 >Emitted(4, 17) Source(20, 17) + SourceIndex(0) +5 >Emitted(4, 18) Source(20, 18) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(5, 1) Source(21, 1) + SourceIndex(0) +2 >Emitted(5, 2) Source(21, 2) + SourceIndex(0) +--- +>>>function getMultiRobot() { +1-> +2 >^^^^^^^^^^^^^^^^^^^^^^^-> +1-> + > +1->Emitted(6, 1) Source(22, 1) + SourceIndex(0) +--- +>>> return multiRobot; +1->^^^^ +2 > ^^^^^^ +3 > ^ +4 > ^^^^^^^^^^ +5 > ^ +1->function getMultiRobot() { + > +2 > return +3 > +4 > multiRobot +5 > ; +1->Emitted(7, 5) Source(23, 5) + SourceIndex(0) +2 >Emitted(7, 11) Source(23, 11) + SourceIndex(0) +3 >Emitted(7, 12) Source(23, 12) + SourceIndex(0) +4 >Emitted(7, 22) Source(23, 22) + SourceIndex(0) +5 >Emitted(7, 23) Source(23, 23) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(8, 1) Source(24, 1) + SourceIndex(0) +2 >Emitted(8, 2) Source(24, 2) + SourceIndex(0) +--- +>>>var nameA, primaryA, secondaryA, i, skillA; +1-> +2 >^^^^ +3 > ^^^^^ +4 > ^^ +5 > ^^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^^ +8 > ^^ +9 > ^ +10> ^^ +11> ^^^^^^ +12> ^ +1-> + > + > +2 >let +3 > nameA: string +4 > , +5 > primaryA: string +6 > , +7 > secondaryA: string +8 > , +9 > i: number +10> , +11> skillA: string +12> ; +1->Emitted(9, 1) Source(26, 1) + SourceIndex(0) +2 >Emitted(9, 5) Source(26, 5) + SourceIndex(0) +3 >Emitted(9, 10) Source(26, 18) + SourceIndex(0) +4 >Emitted(9, 12) Source(26, 20) + SourceIndex(0) +5 >Emitted(9, 20) Source(26, 36) + SourceIndex(0) +6 >Emitted(9, 22) Source(26, 38) + SourceIndex(0) +7 >Emitted(9, 32) Source(26, 56) + SourceIndex(0) +8 >Emitted(9, 34) Source(26, 58) + SourceIndex(0) +9 >Emitted(9, 35) Source(26, 67) + SourceIndex(0) +10>Emitted(9, 37) Source(26, 69) + SourceIndex(0) +11>Emitted(9, 43) Source(26, 83) + SourceIndex(0) +12>Emitted(9, 44) Source(26, 84) + SourceIndex(0) +--- +>>>var name, primary, secondary, skill; +1 > +2 >^^^^ +3 > ^^^^ +4 > ^^ +5 > ^^^^^^^ +6 > ^^ +7 > ^^^^^^^^^ +8 > ^^ +9 > ^^^^^ +10> ^ +11> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >let +3 > name: string +4 > , +5 > primary: string +6 > , +7 > secondary: string +8 > , +9 > skill: string +10> ; +1 >Emitted(10, 1) Source(27, 1) + SourceIndex(0) +2 >Emitted(10, 5) Source(27, 5) + SourceIndex(0) +3 >Emitted(10, 9) Source(27, 17) + SourceIndex(0) +4 >Emitted(10, 11) Source(27, 19) + SourceIndex(0) +5 >Emitted(10, 18) Source(27, 34) + SourceIndex(0) +6 >Emitted(10, 20) Source(27, 36) + SourceIndex(0) +7 >Emitted(10, 29) Source(27, 53) + SourceIndex(0) +8 >Emitted(10, 31) Source(27, 55) + SourceIndex(0) +9 >Emitted(10, 36) Source(27, 68) + SourceIndex(0) +10>Emitted(10, 37) Source(27, 69) + SourceIndex(0) +--- +>>>for ((_a = robot.name, nameA = _a === void 0 ? "noName" : _a, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > { +6 > name: nameA = "noName" +7 > +8 > name: nameA = "noName" +9 > } = +10> robot +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(11, 1) Source(29, 1) + SourceIndex(0) +2 >Emitted(11, 4) Source(29, 4) + SourceIndex(0) +3 >Emitted(11, 5) Source(29, 5) + SourceIndex(0) +4 >Emitted(11, 6) Source(29, 6) + SourceIndex(0) +5 >Emitted(11, 7) Source(29, 7) + SourceIndex(0) +6 >Emitted(11, 22) Source(29, 29) + SourceIndex(0) +7 >Emitted(11, 24) Source(29, 7) + SourceIndex(0) +8 >Emitted(11, 61) Source(29, 29) + SourceIndex(0) +9 >Emitted(11, 63) Source(29, 34) + SourceIndex(0) +10>Emitted(11, 68) Source(29, 39) + SourceIndex(0) +11>Emitted(11, 69) Source(29, 39) + SourceIndex(0) +12>Emitted(11, 71) Source(29, 41) + SourceIndex(0) +13>Emitted(11, 72) Source(29, 42) + SourceIndex(0) +14>Emitted(11, 75) Source(29, 45) + SourceIndex(0) +15>Emitted(11, 76) Source(29, 46) + SourceIndex(0) +16>Emitted(11, 78) Source(29, 48) + SourceIndex(0) +17>Emitted(11, 79) Source(29, 49) + SourceIndex(0) +18>Emitted(11, 82) Source(29, 52) + SourceIndex(0) +19>Emitted(11, 83) Source(29, 53) + SourceIndex(0) +20>Emitted(11, 85) Source(29, 55) + SourceIndex(0) +21>Emitted(11, 86) Source(29, 56) + SourceIndex(0) +22>Emitted(11, 88) Source(29, 58) + SourceIndex(0) +23>Emitted(11, 90) Source(29, 60) + SourceIndex(0) +24>Emitted(11, 91) Source(29, 61) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(12, 5) Source(30, 5) + SourceIndex(0) +2 >Emitted(12, 12) Source(30, 12) + SourceIndex(0) +3 >Emitted(12, 13) Source(30, 13) + SourceIndex(0) +4 >Emitted(12, 16) Source(30, 16) + SourceIndex(0) +5 >Emitted(12, 17) Source(30, 17) + SourceIndex(0) +6 >Emitted(12, 22) Source(30, 22) + SourceIndex(0) +7 >Emitted(12, 23) Source(30, 23) + SourceIndex(0) +8 >Emitted(12, 24) Source(30, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(13, 1) Source(31, 1) + SourceIndex(0) +2 >Emitted(13, 2) Source(31, 2) + SourceIndex(0) +--- +>>>for ((_b = getRobot(), _c = _b.name, nameA = _c === void 0 ? "noName" : _c, _b), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > {name: nameA = "noName" } = getRobot() +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> } = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(14, 1) Source(32, 1) + SourceIndex(0) +2 >Emitted(14, 4) Source(32, 4) + SourceIndex(0) +3 >Emitted(14, 5) Source(32, 5) + SourceIndex(0) +4 >Emitted(14, 6) Source(32, 6) + SourceIndex(0) +5 >Emitted(14, 7) Source(32, 6) + SourceIndex(0) +6 >Emitted(14, 22) Source(32, 44) + SourceIndex(0) +7 >Emitted(14, 24) Source(32, 7) + SourceIndex(0) +8 >Emitted(14, 36) Source(32, 29) + SourceIndex(0) +9 >Emitted(14, 38) Source(32, 7) + SourceIndex(0) +10>Emitted(14, 75) Source(32, 29) + SourceIndex(0) +11>Emitted(14, 80) Source(32, 44) + SourceIndex(0) +12>Emitted(14, 82) Source(32, 46) + SourceIndex(0) +13>Emitted(14, 83) Source(32, 47) + SourceIndex(0) +14>Emitted(14, 86) Source(32, 50) + SourceIndex(0) +15>Emitted(14, 87) Source(32, 51) + SourceIndex(0) +16>Emitted(14, 89) Source(32, 53) + SourceIndex(0) +17>Emitted(14, 90) Source(32, 54) + SourceIndex(0) +18>Emitted(14, 93) Source(32, 57) + SourceIndex(0) +19>Emitted(14, 94) Source(32, 58) + SourceIndex(0) +20>Emitted(14, 96) Source(32, 60) + SourceIndex(0) +21>Emitted(14, 97) Source(32, 61) + SourceIndex(0) +22>Emitted(14, 99) Source(32, 63) + SourceIndex(0) +23>Emitted(14, 101) Source(32, 65) + SourceIndex(0) +24>Emitted(14, 102) Source(32, 66) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(15, 5) Source(33, 5) + SourceIndex(0) +2 >Emitted(15, 12) Source(33, 12) + SourceIndex(0) +3 >Emitted(15, 13) Source(33, 13) + SourceIndex(0) +4 >Emitted(15, 16) Source(33, 16) + SourceIndex(0) +5 >Emitted(15, 17) Source(33, 17) + SourceIndex(0) +6 >Emitted(15, 22) Source(33, 22) + SourceIndex(0) +7 >Emitted(15, 23) Source(33, 23) + SourceIndex(0) +8 >Emitted(15, 24) Source(33, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(16, 1) Source(34, 1) + SourceIndex(0) +2 >Emitted(16, 2) Source(34, 2) + SourceIndex(0) +--- +>>>for ((_d = { name: "trimmer", skill: "trimming" }, _e = _d.name, nameA = _e === void 0 ? "noName" : _e, _d), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" } +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> } = { name: "trimmer", skill: "trimming" } +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(17, 1) Source(35, 1) + SourceIndex(0) +2 >Emitted(17, 4) Source(35, 4) + SourceIndex(0) +3 >Emitted(17, 5) Source(35, 5) + SourceIndex(0) +4 >Emitted(17, 6) Source(35, 6) + SourceIndex(0) +5 >Emitted(17, 7) Source(35, 6) + SourceIndex(0) +6 >Emitted(17, 50) Source(35, 79) + SourceIndex(0) +7 >Emitted(17, 52) Source(35, 7) + SourceIndex(0) +8 >Emitted(17, 64) Source(35, 29) + SourceIndex(0) +9 >Emitted(17, 66) Source(35, 7) + SourceIndex(0) +10>Emitted(17, 103) Source(35, 29) + SourceIndex(0) +11>Emitted(17, 108) Source(35, 79) + SourceIndex(0) +12>Emitted(17, 110) Source(35, 81) + SourceIndex(0) +13>Emitted(17, 111) Source(35, 82) + SourceIndex(0) +14>Emitted(17, 114) Source(35, 85) + SourceIndex(0) +15>Emitted(17, 115) Source(35, 86) + SourceIndex(0) +16>Emitted(17, 117) Source(35, 88) + SourceIndex(0) +17>Emitted(17, 118) Source(35, 89) + SourceIndex(0) +18>Emitted(17, 121) Source(35, 92) + SourceIndex(0) +19>Emitted(17, 122) Source(35, 93) + SourceIndex(0) +20>Emitted(17, 124) Source(35, 95) + SourceIndex(0) +21>Emitted(17, 125) Source(35, 96) + SourceIndex(0) +22>Emitted(17, 127) Source(35, 98) + SourceIndex(0) +23>Emitted(17, 129) Source(35, 100) + SourceIndex(0) +24>Emitted(17, 130) Source(35, 101) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(18, 5) Source(36, 5) + SourceIndex(0) +2 >Emitted(18, 12) Source(36, 12) + SourceIndex(0) +3 >Emitted(18, 13) Source(36, 13) + SourceIndex(0) +4 >Emitted(18, 16) Source(36, 16) + SourceIndex(0) +5 >Emitted(18, 17) Source(36, 17) + SourceIndex(0) +6 >Emitted(18, 22) Source(36, 22) + SourceIndex(0) +7 >Emitted(18, 23) Source(36, 23) + SourceIndex(0) +8 >Emitted(18, 24) Source(36, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(19, 1) Source(37, 1) + SourceIndex(0) +2 >Emitted(19, 2) Source(37, 2) + SourceIndex(0) +--- +>>>for ((_f = multiRobot.skills, _g = _f === void 0 ? { primary: "none", secondary: "none" } : _f, _h = _g.primary, primaryA = _h === void 0 ? "primary" : _h, _j = _g.secondary, secondaryA = _j === void 0 ? "secondary" : _j, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { + > +6 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +7 > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +9 > +10> primary: primaryA = "primary" +11> +12> primary: primaryA = "primary" +13> , + > +14> secondary: secondaryA = "secondary" +15> +16> secondary: secondaryA = "secondary" +17> + > } = { primary: "none", secondary: "none" } + > } = +18> multiRobot +19> +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(20, 1) Source(38, 1) + SourceIndex(0) +2 >Emitted(20, 4) Source(38, 4) + SourceIndex(0) +3 >Emitted(20, 5) Source(38, 5) + SourceIndex(0) +4 >Emitted(20, 6) Source(38, 6) + SourceIndex(0) +5 >Emitted(20, 7) Source(39, 5) + SourceIndex(0) +6 >Emitted(20, 29) Source(42, 47) + SourceIndex(0) +7 >Emitted(20, 31) Source(39, 5) + SourceIndex(0) +8 >Emitted(20, 95) Source(42, 47) + SourceIndex(0) +9 >Emitted(20, 97) Source(40, 9) + SourceIndex(0) +10>Emitted(20, 112) Source(40, 38) + SourceIndex(0) +11>Emitted(20, 114) Source(40, 9) + SourceIndex(0) +12>Emitted(20, 155) Source(40, 38) + SourceIndex(0) +13>Emitted(20, 157) Source(41, 9) + SourceIndex(0) +14>Emitted(20, 174) Source(41, 44) + SourceIndex(0) +15>Emitted(20, 176) Source(41, 9) + SourceIndex(0) +16>Emitted(20, 221) Source(41, 44) + SourceIndex(0) +17>Emitted(20, 223) Source(43, 5) + SourceIndex(0) +18>Emitted(20, 233) Source(43, 15) + SourceIndex(0) +19>Emitted(20, 234) Source(43, 15) + SourceIndex(0) +20>Emitted(20, 236) Source(43, 17) + SourceIndex(0) +21>Emitted(20, 237) Source(43, 18) + SourceIndex(0) +22>Emitted(20, 240) Source(43, 21) + SourceIndex(0) +23>Emitted(20, 241) Source(43, 22) + SourceIndex(0) +24>Emitted(20, 243) Source(43, 24) + SourceIndex(0) +25>Emitted(20, 244) Source(43, 25) + SourceIndex(0) +26>Emitted(20, 247) Source(43, 28) + SourceIndex(0) +27>Emitted(20, 248) Source(43, 29) + SourceIndex(0) +28>Emitted(20, 250) Source(43, 31) + SourceIndex(0) +29>Emitted(20, 251) Source(43, 32) + SourceIndex(0) +30>Emitted(20, 253) Source(43, 34) + SourceIndex(0) +31>Emitted(20, 255) Source(43, 36) + SourceIndex(0) +32>Emitted(20, 256) Source(43, 37) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(21, 5) Source(44, 5) + SourceIndex(0) +2 >Emitted(21, 12) Source(44, 12) + SourceIndex(0) +3 >Emitted(21, 13) Source(44, 13) + SourceIndex(0) +4 >Emitted(21, 16) Source(44, 16) + SourceIndex(0) +5 >Emitted(21, 17) Source(44, 17) + SourceIndex(0) +6 >Emitted(21, 25) Source(44, 25) + SourceIndex(0) +7 >Emitted(21, 26) Source(44, 26) + SourceIndex(0) +8 >Emitted(21, 27) Source(44, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(22, 1) Source(45, 1) + SourceIndex(0) +2 >Emitted(22, 2) Source(45, 2) + SourceIndex(0) +--- +>>>for ((_k = getMultiRobot(), _l = _k.skills, _m = _l === void 0 ? { primary: "none", secondary: "none" } : _l, _o = _m.primary, primaryA = _o === void 0 ? "primary" : _o, _p = _m.secondary, secondaryA = _p === void 0 ? "secondary" : _p, _k), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +7 > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +19> + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(23, 1) Source(46, 1) + SourceIndex(0) +2 >Emitted(23, 4) Source(46, 4) + SourceIndex(0) +3 >Emitted(23, 5) Source(46, 5) + SourceIndex(0) +4 >Emitted(23, 6) Source(46, 6) + SourceIndex(0) +5 >Emitted(23, 7) Source(46, 6) + SourceIndex(0) +6 >Emitted(23, 27) Source(51, 20) + SourceIndex(0) +7 >Emitted(23, 29) Source(47, 5) + SourceIndex(0) +8 >Emitted(23, 43) Source(50, 47) + SourceIndex(0) +9 >Emitted(23, 45) Source(47, 5) + SourceIndex(0) +10>Emitted(23, 109) Source(50, 47) + SourceIndex(0) +11>Emitted(23, 111) Source(48, 9) + SourceIndex(0) +12>Emitted(23, 126) Source(48, 38) + SourceIndex(0) +13>Emitted(23, 128) Source(48, 9) + SourceIndex(0) +14>Emitted(23, 169) Source(48, 38) + SourceIndex(0) +15>Emitted(23, 171) Source(49, 9) + SourceIndex(0) +16>Emitted(23, 188) Source(49, 44) + SourceIndex(0) +17>Emitted(23, 190) Source(49, 9) + SourceIndex(0) +18>Emitted(23, 235) Source(49, 44) + SourceIndex(0) +19>Emitted(23, 240) Source(51, 20) + SourceIndex(0) +20>Emitted(23, 242) Source(51, 22) + SourceIndex(0) +21>Emitted(23, 243) Source(51, 23) + SourceIndex(0) +22>Emitted(23, 246) Source(51, 26) + SourceIndex(0) +23>Emitted(23, 247) Source(51, 27) + SourceIndex(0) +24>Emitted(23, 249) Source(51, 29) + SourceIndex(0) +25>Emitted(23, 250) Source(51, 30) + SourceIndex(0) +26>Emitted(23, 253) Source(51, 33) + SourceIndex(0) +27>Emitted(23, 254) Source(51, 34) + SourceIndex(0) +28>Emitted(23, 256) Source(51, 36) + SourceIndex(0) +29>Emitted(23, 257) Source(51, 37) + SourceIndex(0) +30>Emitted(23, 259) Source(51, 39) + SourceIndex(0) +31>Emitted(23, 261) Source(51, 41) + SourceIndex(0) +32>Emitted(23, 262) Source(51, 42) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(24, 5) Source(52, 5) + SourceIndex(0) +2 >Emitted(24, 12) Source(52, 12) + SourceIndex(0) +3 >Emitted(24, 13) Source(52, 13) + SourceIndex(0) +4 >Emitted(24, 16) Source(52, 16) + SourceIndex(0) +5 >Emitted(24, 17) Source(52, 17) + SourceIndex(0) +6 >Emitted(24, 25) Source(52, 25) + SourceIndex(0) +7 >Emitted(24, 26) Source(52, 26) + SourceIndex(0) +8 >Emitted(24, 27) Source(52, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(25, 1) Source(53, 1) + SourceIndex(0) +2 >Emitted(25, 2) Source(53, 2) + SourceIndex(0) +--- +>>>for ((_q = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _r = _q.skills, _s = _r === void 0 ? { primary: "none", secondary: "none" } : _r, _t = _s.primary, primaryA = _t === void 0 ? "primary" : _t, _u = _s.secondary, secondaryA = _u === void 0 ? "secondary" : _u, _q), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +9 > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +11> +12> primary: primaryA = "primary" +13> +14> primary: primaryA = "primary" +15> , + > +16> secondary: secondaryA = "secondary" +17> +18> secondary: secondaryA = "secondary" +19> + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(26, 1) Source(54, 1) + SourceIndex(0) +2 >Emitted(26, 4) Source(54, 4) + SourceIndex(0) +3 >Emitted(26, 5) Source(54, 5) + SourceIndex(0) +4 >Emitted(26, 6) Source(54, 6) + SourceIndex(0) +5 >Emitted(26, 7) Source(54, 6) + SourceIndex(0) +6 >Emitted(26, 85) Source(59, 90) + SourceIndex(0) +7 >Emitted(26, 87) Source(55, 5) + SourceIndex(0) +8 >Emitted(26, 101) Source(58, 47) + SourceIndex(0) +9 >Emitted(26, 103) Source(55, 5) + SourceIndex(0) +10>Emitted(26, 167) Source(58, 47) + SourceIndex(0) +11>Emitted(26, 169) Source(56, 9) + SourceIndex(0) +12>Emitted(26, 184) Source(56, 38) + SourceIndex(0) +13>Emitted(26, 186) Source(56, 9) + SourceIndex(0) +14>Emitted(26, 227) Source(56, 38) + SourceIndex(0) +15>Emitted(26, 229) Source(57, 9) + SourceIndex(0) +16>Emitted(26, 246) Source(57, 44) + SourceIndex(0) +17>Emitted(26, 248) Source(57, 9) + SourceIndex(0) +18>Emitted(26, 293) Source(57, 44) + SourceIndex(0) +19>Emitted(26, 298) Source(59, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(27, 5) Source(60, 5) + SourceIndex(0) +2 >Emitted(27, 6) Source(60, 6) + SourceIndex(0) +3 >Emitted(27, 9) Source(60, 9) + SourceIndex(0) +4 >Emitted(27, 10) Source(60, 10) + SourceIndex(0) +5 >Emitted(27, 12) Source(60, 12) + SourceIndex(0) +6 >Emitted(27, 13) Source(60, 13) + SourceIndex(0) +7 >Emitted(27, 16) Source(60, 16) + SourceIndex(0) +8 >Emitted(27, 17) Source(60, 17) + SourceIndex(0) +9 >Emitted(27, 19) Source(60, 19) + SourceIndex(0) +10>Emitted(27, 20) Source(60, 20) + SourceIndex(0) +11>Emitted(27, 22) Source(60, 22) + SourceIndex(0) +12>Emitted(27, 24) Source(60, 24) + SourceIndex(0) +13>Emitted(27, 25) Source(60, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(28, 5) Source(61, 5) + SourceIndex(0) +2 >Emitted(28, 12) Source(61, 12) + SourceIndex(0) +3 >Emitted(28, 13) Source(61, 13) + SourceIndex(0) +4 >Emitted(28, 16) Source(61, 16) + SourceIndex(0) +5 >Emitted(28, 17) Source(61, 17) + SourceIndex(0) +6 >Emitted(28, 25) Source(61, 25) + SourceIndex(0) +7 >Emitted(28, 26) Source(61, 26) + SourceIndex(0) +8 >Emitted(28, 27) Source(61, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(29, 1) Source(62, 1) + SourceIndex(0) +2 >Emitted(29, 2) Source(62, 2) + SourceIndex(0) +--- +>>>for ((_v = robot.name, name = _v === void 0 ? "noName" : _v, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^ +11> ^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > { +6 > name = "noName" +7 > +8 > name = "noName" +9 > } = +10> robot +11> +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(30, 1) Source(64, 1) + SourceIndex(0) +2 >Emitted(30, 4) Source(64, 4) + SourceIndex(0) +3 >Emitted(30, 5) Source(64, 5) + SourceIndex(0) +4 >Emitted(30, 6) Source(64, 6) + SourceIndex(0) +5 >Emitted(30, 7) Source(64, 8) + SourceIndex(0) +6 >Emitted(30, 22) Source(64, 23) + SourceIndex(0) +7 >Emitted(30, 24) Source(64, 8) + SourceIndex(0) +8 >Emitted(30, 60) Source(64, 23) + SourceIndex(0) +9 >Emitted(30, 62) Source(64, 28) + SourceIndex(0) +10>Emitted(30, 67) Source(64, 33) + SourceIndex(0) +11>Emitted(30, 68) Source(64, 33) + SourceIndex(0) +12>Emitted(30, 70) Source(64, 35) + SourceIndex(0) +13>Emitted(30, 71) Source(64, 36) + SourceIndex(0) +14>Emitted(30, 74) Source(64, 39) + SourceIndex(0) +15>Emitted(30, 75) Source(64, 40) + SourceIndex(0) +16>Emitted(30, 77) Source(64, 42) + SourceIndex(0) +17>Emitted(30, 78) Source(64, 43) + SourceIndex(0) +18>Emitted(30, 81) Source(64, 46) + SourceIndex(0) +19>Emitted(30, 82) Source(64, 47) + SourceIndex(0) +20>Emitted(30, 84) Source(64, 49) + SourceIndex(0) +21>Emitted(30, 85) Source(64, 50) + SourceIndex(0) +22>Emitted(30, 87) Source(64, 52) + SourceIndex(0) +23>Emitted(30, 89) Source(64, 54) + SourceIndex(0) +24>Emitted(30, 90) Source(64, 55) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(31, 5) Source(65, 5) + SourceIndex(0) +2 >Emitted(31, 12) Source(65, 12) + SourceIndex(0) +3 >Emitted(31, 13) Source(65, 13) + SourceIndex(0) +4 >Emitted(31, 16) Source(65, 16) + SourceIndex(0) +5 >Emitted(31, 17) Source(65, 17) + SourceIndex(0) +6 >Emitted(31, 22) Source(65, 22) + SourceIndex(0) +7 >Emitted(31, 23) Source(65, 23) + SourceIndex(0) +8 >Emitted(31, 24) Source(65, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(32, 1) Source(66, 1) + SourceIndex(0) +2 >Emitted(32, 2) Source(66, 2) + SourceIndex(0) +--- +>>>for ((_w = getRobot(), _x = _w.name, name = _x === void 0 ? "noName" : _x, _w), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name = "noName" } = getRobot() +7 > +8 > name = "noName" +9 > +10> name = "noName" +11> } = getRobot() +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(33, 1) Source(67, 1) + SourceIndex(0) +2 >Emitted(33, 4) Source(67, 4) + SourceIndex(0) +3 >Emitted(33, 5) Source(67, 5) + SourceIndex(0) +4 >Emitted(33, 6) Source(67, 6) + SourceIndex(0) +5 >Emitted(33, 7) Source(67, 6) + SourceIndex(0) +6 >Emitted(33, 22) Source(67, 38) + SourceIndex(0) +7 >Emitted(33, 24) Source(67, 8) + SourceIndex(0) +8 >Emitted(33, 36) Source(67, 23) + SourceIndex(0) +9 >Emitted(33, 38) Source(67, 8) + SourceIndex(0) +10>Emitted(33, 74) Source(67, 23) + SourceIndex(0) +11>Emitted(33, 79) Source(67, 38) + SourceIndex(0) +12>Emitted(33, 81) Source(67, 40) + SourceIndex(0) +13>Emitted(33, 82) Source(67, 41) + SourceIndex(0) +14>Emitted(33, 85) Source(67, 44) + SourceIndex(0) +15>Emitted(33, 86) Source(67, 45) + SourceIndex(0) +16>Emitted(33, 88) Source(67, 47) + SourceIndex(0) +17>Emitted(33, 89) Source(67, 48) + SourceIndex(0) +18>Emitted(33, 92) Source(67, 51) + SourceIndex(0) +19>Emitted(33, 93) Source(67, 52) + SourceIndex(0) +20>Emitted(33, 95) Source(67, 54) + SourceIndex(0) +21>Emitted(33, 96) Source(67, 55) + SourceIndex(0) +22>Emitted(33, 98) Source(67, 57) + SourceIndex(0) +23>Emitted(33, 100) Source(67, 59) + SourceIndex(0) +24>Emitted(33, 101) Source(67, 60) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(34, 5) Source(68, 5) + SourceIndex(0) +2 >Emitted(34, 12) Source(68, 12) + SourceIndex(0) +3 >Emitted(34, 13) Source(68, 13) + SourceIndex(0) +4 >Emitted(34, 16) Source(68, 16) + SourceIndex(0) +5 >Emitted(34, 17) Source(68, 17) + SourceIndex(0) +6 >Emitted(34, 22) Source(68, 22) + SourceIndex(0) +7 >Emitted(34, 23) Source(68, 23) + SourceIndex(0) +8 >Emitted(34, 24) Source(68, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(35, 1) Source(69, 1) + SourceIndex(0) +2 >Emitted(35, 2) Source(69, 2) + SourceIndex(0) +--- +>>>for ((_y = { name: "trimmer", skill: "trimming" }, _z = _y.name, name = _z === void 0 ? "noName" : _z, _y), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^^^^ +12> ^^ +13> ^ +14> ^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^ +23> ^^ +24> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name = "noName" } = { name: "trimmer", skill: "trimming" } +7 > +8 > name = "noName" +9 > +10> name = "noName" +11> } = { name: "trimmer", skill: "trimming" } +12> , +13> i +14> = +15> 0 +16> ; +17> i +18> < +19> 1 +20> ; +21> i +22> ++ +23> ) +24> { +1->Emitted(36, 1) Source(70, 1) + SourceIndex(0) +2 >Emitted(36, 4) Source(70, 4) + SourceIndex(0) +3 >Emitted(36, 5) Source(70, 5) + SourceIndex(0) +4 >Emitted(36, 6) Source(70, 6) + SourceIndex(0) +5 >Emitted(36, 7) Source(70, 6) + SourceIndex(0) +6 >Emitted(36, 50) Source(70, 73) + SourceIndex(0) +7 >Emitted(36, 52) Source(70, 8) + SourceIndex(0) +8 >Emitted(36, 64) Source(70, 23) + SourceIndex(0) +9 >Emitted(36, 66) Source(70, 8) + SourceIndex(0) +10>Emitted(36, 102) Source(70, 23) + SourceIndex(0) +11>Emitted(36, 107) Source(70, 73) + SourceIndex(0) +12>Emitted(36, 109) Source(70, 75) + SourceIndex(0) +13>Emitted(36, 110) Source(70, 76) + SourceIndex(0) +14>Emitted(36, 113) Source(70, 79) + SourceIndex(0) +15>Emitted(36, 114) Source(70, 80) + SourceIndex(0) +16>Emitted(36, 116) Source(70, 82) + SourceIndex(0) +17>Emitted(36, 117) Source(70, 83) + SourceIndex(0) +18>Emitted(36, 120) Source(70, 86) + SourceIndex(0) +19>Emitted(36, 121) Source(70, 87) + SourceIndex(0) +20>Emitted(36, 123) Source(70, 89) + SourceIndex(0) +21>Emitted(36, 124) Source(70, 90) + SourceIndex(0) +22>Emitted(36, 126) Source(70, 92) + SourceIndex(0) +23>Emitted(36, 128) Source(70, 94) + SourceIndex(0) +24>Emitted(36, 129) Source(70, 95) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(37, 5) Source(71, 5) + SourceIndex(0) +2 >Emitted(37, 12) Source(71, 12) + SourceIndex(0) +3 >Emitted(37, 13) Source(71, 13) + SourceIndex(0) +4 >Emitted(37, 16) Source(71, 16) + SourceIndex(0) +5 >Emitted(37, 17) Source(71, 17) + SourceIndex(0) +6 >Emitted(37, 22) Source(71, 22) + SourceIndex(0) +7 >Emitted(37, 23) Source(71, 23) + SourceIndex(0) +8 >Emitted(37, 24) Source(71, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(38, 1) Source(72, 1) + SourceIndex(0) +2 >Emitted(38, 2) Source(72, 2) + SourceIndex(0) +--- +>>>for ((_0 = multiRobot.skills, _1 = _0 === void 0 ? { primary: "none", secondary: "none" } : _0, _2 = _1.primary, primary = _2 === void 0 ? "primary" : _2, _3 = _1.secondary, secondary = _3 === void 0 ? "secondary" : _3, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { + > +6 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +7 > +8 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +9 > +10> primary = "primary" +11> +12> primary = "primary" +13> , + > +14> secondary = "secondary" +15> +16> secondary = "secondary" +17> + > } = { primary: "none", secondary: "none" } + > } = +18> multiRobot +19> +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(39, 1) Source(73, 1) + SourceIndex(0) +2 >Emitted(39, 4) Source(73, 4) + SourceIndex(0) +3 >Emitted(39, 5) Source(73, 5) + SourceIndex(0) +4 >Emitted(39, 6) Source(73, 6) + SourceIndex(0) +5 >Emitted(39, 7) Source(74, 5) + SourceIndex(0) +6 >Emitted(39, 29) Source(77, 47) + SourceIndex(0) +7 >Emitted(39, 31) Source(74, 5) + SourceIndex(0) +8 >Emitted(39, 95) Source(77, 47) + SourceIndex(0) +9 >Emitted(39, 97) Source(75, 9) + SourceIndex(0) +10>Emitted(39, 112) Source(75, 28) + SourceIndex(0) +11>Emitted(39, 114) Source(75, 9) + SourceIndex(0) +12>Emitted(39, 154) Source(75, 28) + SourceIndex(0) +13>Emitted(39, 156) Source(76, 9) + SourceIndex(0) +14>Emitted(39, 173) Source(76, 32) + SourceIndex(0) +15>Emitted(39, 175) Source(76, 9) + SourceIndex(0) +16>Emitted(39, 219) Source(76, 32) + SourceIndex(0) +17>Emitted(39, 221) Source(78, 5) + SourceIndex(0) +18>Emitted(39, 231) Source(78, 15) + SourceIndex(0) +19>Emitted(39, 232) Source(78, 15) + SourceIndex(0) +20>Emitted(39, 234) Source(78, 17) + SourceIndex(0) +21>Emitted(39, 235) Source(78, 18) + SourceIndex(0) +22>Emitted(39, 238) Source(78, 21) + SourceIndex(0) +23>Emitted(39, 239) Source(78, 22) + SourceIndex(0) +24>Emitted(39, 241) Source(78, 24) + SourceIndex(0) +25>Emitted(39, 242) Source(78, 25) + SourceIndex(0) +26>Emitted(39, 245) Source(78, 28) + SourceIndex(0) +27>Emitted(39, 246) Source(78, 29) + SourceIndex(0) +28>Emitted(39, 248) Source(78, 31) + SourceIndex(0) +29>Emitted(39, 249) Source(78, 32) + SourceIndex(0) +30>Emitted(39, 251) Source(78, 34) + SourceIndex(0) +31>Emitted(39, 253) Source(78, 36) + SourceIndex(0) +32>Emitted(39, 254) Source(78, 37) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(40, 5) Source(79, 5) + SourceIndex(0) +2 >Emitted(40, 12) Source(79, 12) + SourceIndex(0) +3 >Emitted(40, 13) Source(79, 13) + SourceIndex(0) +4 >Emitted(40, 16) Source(79, 16) + SourceIndex(0) +5 >Emitted(40, 17) Source(79, 17) + SourceIndex(0) +6 >Emitted(40, 25) Source(79, 25) + SourceIndex(0) +7 >Emitted(40, 26) Source(79, 26) + SourceIndex(0) +8 >Emitted(40, 27) Source(79, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(41, 1) Source(80, 1) + SourceIndex(0) +2 >Emitted(41, 2) Source(80, 2) + SourceIndex(0) +--- +>>>for ((_4 = getMultiRobot(), _5 = _4.skills, _6 = _5 === void 0 ? { primary: "none", secondary: "none" } : _5, _7 = _6.primary, primary = _7 === void 0 ? "primary" : _7, _8 = _6.secondary, secondary = _8 === void 0 ? "secondary" : _8, _4), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^ +31> ^^ +32> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +7 > +8 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +9 > +10> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +11> +12> primary = "primary" +13> +14> primary = "primary" +15> , + > +16> secondary = "secondary" +17> +18> secondary = "secondary" +19> + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +20> , +21> i +22> = +23> 0 +24> ; +25> i +26> < +27> 1 +28> ; +29> i +30> ++ +31> ) +32> { +1->Emitted(42, 1) Source(81, 1) + SourceIndex(0) +2 >Emitted(42, 4) Source(81, 4) + SourceIndex(0) +3 >Emitted(42, 5) Source(81, 5) + SourceIndex(0) +4 >Emitted(42, 6) Source(81, 6) + SourceIndex(0) +5 >Emitted(42, 7) Source(81, 6) + SourceIndex(0) +6 >Emitted(42, 27) Source(86, 20) + SourceIndex(0) +7 >Emitted(42, 29) Source(82, 5) + SourceIndex(0) +8 >Emitted(42, 43) Source(85, 47) + SourceIndex(0) +9 >Emitted(42, 45) Source(82, 5) + SourceIndex(0) +10>Emitted(42, 109) Source(85, 47) + SourceIndex(0) +11>Emitted(42, 111) Source(83, 9) + SourceIndex(0) +12>Emitted(42, 126) Source(83, 28) + SourceIndex(0) +13>Emitted(42, 128) Source(83, 9) + SourceIndex(0) +14>Emitted(42, 168) Source(83, 28) + SourceIndex(0) +15>Emitted(42, 170) Source(84, 9) + SourceIndex(0) +16>Emitted(42, 187) Source(84, 32) + SourceIndex(0) +17>Emitted(42, 189) Source(84, 9) + SourceIndex(0) +18>Emitted(42, 233) Source(84, 32) + SourceIndex(0) +19>Emitted(42, 238) Source(86, 20) + SourceIndex(0) +20>Emitted(42, 240) Source(86, 22) + SourceIndex(0) +21>Emitted(42, 241) Source(86, 23) + SourceIndex(0) +22>Emitted(42, 244) Source(86, 26) + SourceIndex(0) +23>Emitted(42, 245) Source(86, 27) + SourceIndex(0) +24>Emitted(42, 247) Source(86, 29) + SourceIndex(0) +25>Emitted(42, 248) Source(86, 30) + SourceIndex(0) +26>Emitted(42, 251) Source(86, 33) + SourceIndex(0) +27>Emitted(42, 252) Source(86, 34) + SourceIndex(0) +28>Emitted(42, 254) Source(86, 36) + SourceIndex(0) +29>Emitted(42, 255) Source(86, 37) + SourceIndex(0) +30>Emitted(42, 257) Source(86, 39) + SourceIndex(0) +31>Emitted(42, 259) Source(86, 41) + SourceIndex(0) +32>Emitted(42, 260) Source(86, 42) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(43, 5) Source(87, 5) + SourceIndex(0) +2 >Emitted(43, 12) Source(87, 12) + SourceIndex(0) +3 >Emitted(43, 13) Source(87, 13) + SourceIndex(0) +4 >Emitted(43, 16) Source(87, 16) + SourceIndex(0) +5 >Emitted(43, 17) Source(87, 17) + SourceIndex(0) +6 >Emitted(43, 25) Source(87, 25) + SourceIndex(0) +7 >Emitted(43, 26) Source(87, 26) + SourceIndex(0) +8 >Emitted(43, 27) Source(87, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(44, 1) Source(88, 1) + SourceIndex(0) +2 >Emitted(44, 2) Source(88, 2) + SourceIndex(0) +--- +>>>for ((_9 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _10 = _9.skills, _11 = _10 === void 0 ? { primary: "none", secondary: "none" } : _10, _12 = _11.primary, primary = _12 === void 0 ? "primary" : _12, _13 = _11.secondary, secondary = _13 === void 0 ? "secondary" : _13, _9), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +9 > +10> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +11> +12> primary = "primary" +13> +14> primary = "primary" +15> , + > +16> secondary = "secondary" +17> +18> secondary = "secondary" +19> + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(45, 1) Source(89, 1) + SourceIndex(0) +2 >Emitted(45, 4) Source(89, 4) + SourceIndex(0) +3 >Emitted(45, 5) Source(89, 5) + SourceIndex(0) +4 >Emitted(45, 6) Source(89, 6) + SourceIndex(0) +5 >Emitted(45, 7) Source(89, 6) + SourceIndex(0) +6 >Emitted(45, 85) Source(94, 90) + SourceIndex(0) +7 >Emitted(45, 87) Source(90, 5) + SourceIndex(0) +8 >Emitted(45, 102) Source(93, 47) + SourceIndex(0) +9 >Emitted(45, 104) Source(90, 5) + SourceIndex(0) +10>Emitted(45, 171) Source(93, 47) + SourceIndex(0) +11>Emitted(45, 173) Source(91, 9) + SourceIndex(0) +12>Emitted(45, 190) Source(91, 28) + SourceIndex(0) +13>Emitted(45, 192) Source(91, 9) + SourceIndex(0) +14>Emitted(45, 234) Source(91, 28) + SourceIndex(0) +15>Emitted(45, 236) Source(92, 9) + SourceIndex(0) +16>Emitted(45, 255) Source(92, 32) + SourceIndex(0) +17>Emitted(45, 257) Source(92, 9) + SourceIndex(0) +18>Emitted(45, 303) Source(92, 32) + SourceIndex(0) +19>Emitted(45, 308) Source(94, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(46, 5) Source(95, 5) + SourceIndex(0) +2 >Emitted(46, 6) Source(95, 6) + SourceIndex(0) +3 >Emitted(46, 9) Source(95, 9) + SourceIndex(0) +4 >Emitted(46, 10) Source(95, 10) + SourceIndex(0) +5 >Emitted(46, 12) Source(95, 12) + SourceIndex(0) +6 >Emitted(46, 13) Source(95, 13) + SourceIndex(0) +7 >Emitted(46, 16) Source(95, 16) + SourceIndex(0) +8 >Emitted(46, 17) Source(95, 17) + SourceIndex(0) +9 >Emitted(46, 19) Source(95, 19) + SourceIndex(0) +10>Emitted(46, 20) Source(95, 20) + SourceIndex(0) +11>Emitted(46, 22) Source(95, 22) + SourceIndex(0) +12>Emitted(46, 24) Source(95, 24) + SourceIndex(0) +13>Emitted(46, 25) Source(95, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(47, 5) Source(96, 5) + SourceIndex(0) +2 >Emitted(47, 12) Source(96, 12) + SourceIndex(0) +3 >Emitted(47, 13) Source(96, 13) + SourceIndex(0) +4 >Emitted(47, 16) Source(96, 16) + SourceIndex(0) +5 >Emitted(47, 17) Source(96, 17) + SourceIndex(0) +6 >Emitted(47, 25) Source(96, 25) + SourceIndex(0) +7 >Emitted(47, 26) Source(96, 26) + SourceIndex(0) +8 >Emitted(47, 27) Source(96, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(48, 1) Source(97, 1) + SourceIndex(0) +2 >Emitted(48, 2) Source(97, 2) + SourceIndex(0) +--- +>>>for ((_14 = robot.name, nameA = _14 === void 0 ? "noName" : _14, _15 = robot.skill, skillA = _15 === void 0 ? "skill" : _15, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > + > + > +2 >for +3 > +4 > ( +5 > { +6 > name: nameA = "noName" +7 > +8 > name: nameA = "noName" +9 > , +10> skill: skillA = "skill" +11> +12> skill: skillA = "skill" +13> } = +14> robot +15> +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(49, 1) Source(100, 1) + SourceIndex(0) +2 >Emitted(49, 4) Source(100, 4) + SourceIndex(0) +3 >Emitted(49, 5) Source(100, 5) + SourceIndex(0) +4 >Emitted(49, 6) Source(100, 6) + SourceIndex(0) +5 >Emitted(49, 7) Source(100, 7) + SourceIndex(0) +6 >Emitted(49, 23) Source(100, 29) + SourceIndex(0) +7 >Emitted(49, 25) Source(100, 7) + SourceIndex(0) +8 >Emitted(49, 64) Source(100, 29) + SourceIndex(0) +9 >Emitted(49, 66) Source(100, 31) + SourceIndex(0) +10>Emitted(49, 83) Source(100, 54) + SourceIndex(0) +11>Emitted(49, 85) Source(100, 31) + SourceIndex(0) +12>Emitted(49, 124) Source(100, 54) + SourceIndex(0) +13>Emitted(49, 126) Source(100, 59) + SourceIndex(0) +14>Emitted(49, 131) Source(100, 64) + SourceIndex(0) +15>Emitted(49, 132) Source(100, 64) + SourceIndex(0) +16>Emitted(49, 134) Source(100, 66) + SourceIndex(0) +17>Emitted(49, 135) Source(100, 67) + SourceIndex(0) +18>Emitted(49, 138) Source(100, 70) + SourceIndex(0) +19>Emitted(49, 139) Source(100, 71) + SourceIndex(0) +20>Emitted(49, 141) Source(100, 73) + SourceIndex(0) +21>Emitted(49, 142) Source(100, 74) + SourceIndex(0) +22>Emitted(49, 145) Source(100, 77) + SourceIndex(0) +23>Emitted(49, 146) Source(100, 78) + SourceIndex(0) +24>Emitted(49, 148) Source(100, 80) + SourceIndex(0) +25>Emitted(49, 149) Source(100, 81) + SourceIndex(0) +26>Emitted(49, 151) Source(100, 83) + SourceIndex(0) +27>Emitted(49, 153) Source(100, 85) + SourceIndex(0) +28>Emitted(49, 154) Source(100, 86) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(50, 5) Source(101, 5) + SourceIndex(0) +2 >Emitted(50, 12) Source(101, 12) + SourceIndex(0) +3 >Emitted(50, 13) Source(101, 13) + SourceIndex(0) +4 >Emitted(50, 16) Source(101, 16) + SourceIndex(0) +5 >Emitted(50, 17) Source(101, 17) + SourceIndex(0) +6 >Emitted(50, 22) Source(101, 22) + SourceIndex(0) +7 >Emitted(50, 23) Source(101, 23) + SourceIndex(0) +8 >Emitted(50, 24) Source(101, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(51, 1) Source(102, 1) + SourceIndex(0) +2 >Emitted(51, 2) Source(102, 2) + SourceIndex(0) +--- +>>>for ((_16 = getRobot(), _17 = _16.name, nameA = _17 === void 0 ? "noName" : _17, _18 = _16.skill, skillA = _18 === void 0 ? "skill" : _18, _16), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > {name: nameA = "noName", skill: skillA = "skill" } = getRobot() +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , +12> skill: skillA = "skill" +13> +14> skill: skillA = "skill" +15> } = getRobot() +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(52, 1) Source(103, 1) + SourceIndex(0) +2 >Emitted(52, 4) Source(103, 4) + SourceIndex(0) +3 >Emitted(52, 5) Source(103, 5) + SourceIndex(0) +4 >Emitted(52, 6) Source(103, 6) + SourceIndex(0) +5 >Emitted(52, 7) Source(103, 6) + SourceIndex(0) +6 >Emitted(52, 23) Source(103, 69) + SourceIndex(0) +7 >Emitted(52, 25) Source(103, 7) + SourceIndex(0) +8 >Emitted(52, 39) Source(103, 29) + SourceIndex(0) +9 >Emitted(52, 41) Source(103, 7) + SourceIndex(0) +10>Emitted(52, 80) Source(103, 29) + SourceIndex(0) +11>Emitted(52, 82) Source(103, 31) + SourceIndex(0) +12>Emitted(52, 97) Source(103, 54) + SourceIndex(0) +13>Emitted(52, 99) Source(103, 31) + SourceIndex(0) +14>Emitted(52, 138) Source(103, 54) + SourceIndex(0) +15>Emitted(52, 144) Source(103, 69) + SourceIndex(0) +16>Emitted(52, 146) Source(103, 71) + SourceIndex(0) +17>Emitted(52, 147) Source(103, 72) + SourceIndex(0) +18>Emitted(52, 150) Source(103, 75) + SourceIndex(0) +19>Emitted(52, 151) Source(103, 76) + SourceIndex(0) +20>Emitted(52, 153) Source(103, 78) + SourceIndex(0) +21>Emitted(52, 154) Source(103, 79) + SourceIndex(0) +22>Emitted(52, 157) Source(103, 82) + SourceIndex(0) +23>Emitted(52, 158) Source(103, 83) + SourceIndex(0) +24>Emitted(52, 160) Source(103, 85) + SourceIndex(0) +25>Emitted(52, 161) Source(103, 86) + SourceIndex(0) +26>Emitted(52, 163) Source(103, 88) + SourceIndex(0) +27>Emitted(52, 165) Source(103, 90) + SourceIndex(0) +28>Emitted(52, 166) Source(103, 91) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(53, 5) Source(104, 5) + SourceIndex(0) +2 >Emitted(53, 12) Source(104, 12) + SourceIndex(0) +3 >Emitted(53, 13) Source(104, 13) + SourceIndex(0) +4 >Emitted(53, 16) Source(104, 16) + SourceIndex(0) +5 >Emitted(53, 17) Source(104, 17) + SourceIndex(0) +6 >Emitted(53, 22) Source(104, 22) + SourceIndex(0) +7 >Emitted(53, 23) Source(104, 23) + SourceIndex(0) +8 >Emitted(53, 24) Source(104, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(54, 1) Source(105, 1) + SourceIndex(0) +2 >Emitted(54, 2) Source(105, 2) + SourceIndex(0) +--- +>>>for ((_19 = { name: "trimmer", skill: "trimming" }, _20 = _19.name, nameA = _20 === void 0 ? "noName" : _20, _21 = _19.skill, skillA = _21 === void 0 ? "skill" : _21, _19), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" } +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , +12> skill: skillA = "skill" +13> +14> skill: skillA = "skill" +15> } = { name: "trimmer", skill: "trimming" } +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(55, 1) Source(106, 1) + SourceIndex(0) +2 >Emitted(55, 4) Source(106, 4) + SourceIndex(0) +3 >Emitted(55, 5) Source(106, 5) + SourceIndex(0) +4 >Emitted(55, 6) Source(106, 6) + SourceIndex(0) +5 >Emitted(55, 7) Source(106, 6) + SourceIndex(0) +6 >Emitted(55, 51) Source(106, 104) + SourceIndex(0) +7 >Emitted(55, 53) Source(106, 7) + SourceIndex(0) +8 >Emitted(55, 67) Source(106, 29) + SourceIndex(0) +9 >Emitted(55, 69) Source(106, 7) + SourceIndex(0) +10>Emitted(55, 108) Source(106, 29) + SourceIndex(0) +11>Emitted(55, 110) Source(106, 31) + SourceIndex(0) +12>Emitted(55, 125) Source(106, 54) + SourceIndex(0) +13>Emitted(55, 127) Source(106, 31) + SourceIndex(0) +14>Emitted(55, 166) Source(106, 54) + SourceIndex(0) +15>Emitted(55, 172) Source(106, 104) + SourceIndex(0) +16>Emitted(55, 174) Source(106, 106) + SourceIndex(0) +17>Emitted(55, 175) Source(106, 107) + SourceIndex(0) +18>Emitted(55, 178) Source(106, 110) + SourceIndex(0) +19>Emitted(55, 179) Source(106, 111) + SourceIndex(0) +20>Emitted(55, 181) Source(106, 113) + SourceIndex(0) +21>Emitted(55, 182) Source(106, 114) + SourceIndex(0) +22>Emitted(55, 185) Source(106, 117) + SourceIndex(0) +23>Emitted(55, 186) Source(106, 118) + SourceIndex(0) +24>Emitted(55, 188) Source(106, 120) + SourceIndex(0) +25>Emitted(55, 189) Source(106, 121) + SourceIndex(0) +26>Emitted(55, 191) Source(106, 123) + SourceIndex(0) +27>Emitted(55, 193) Source(106, 125) + SourceIndex(0) +28>Emitted(55, 194) Source(106, 126) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(56, 5) Source(107, 5) + SourceIndex(0) +2 >Emitted(56, 12) Source(107, 12) + SourceIndex(0) +3 >Emitted(56, 13) Source(107, 13) + SourceIndex(0) +4 >Emitted(56, 16) Source(107, 16) + SourceIndex(0) +5 >Emitted(56, 17) Source(107, 17) + SourceIndex(0) +6 >Emitted(56, 22) Source(107, 22) + SourceIndex(0) +7 >Emitted(56, 23) Source(107, 23) + SourceIndex(0) +8 >Emitted(56, 24) Source(107, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(57, 1) Source(108, 1) + SourceIndex(0) +2 >Emitted(57, 2) Source(108, 2) + SourceIndex(0) +--- +>>>for ((_22 = multiRobot.name, nameA = _22 === void 0 ? "noName" : _22, _23 = multiRobot.skills, _24 = _23 === void 0 ? { primary: "none", secondary: "none" } : _23, _25 = _24.primary, primaryA = _25 === void 0 ? "primary" : _25, _26 = _24.secondary, secondaryA = _26 === void 0 ? "secondary" : _26, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^^ +31> ^ +32> ^^ +33> ^ +34> ^^ +35> ^^ +36> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { + > +6 > name: nameA = "noName" +7 > +8 > name: nameA = "noName" +9 > , + > +10> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +11> +12> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> primary: primaryA = "primary" +15> +16> primary: primaryA = "primary" +17> , + > +18> secondary: secondaryA = "secondary" +19> +20> secondary: secondaryA = "secondary" +21> + > } = { primary: "none", secondary: "none" } + > } = +22> multiRobot +23> +24> , +25> i +26> = +27> 0 +28> ; +29> i +30> < +31> 1 +32> ; +33> i +34> ++ +35> ) +36> { +1->Emitted(58, 1) Source(109, 1) + SourceIndex(0) +2 >Emitted(58, 4) Source(109, 4) + SourceIndex(0) +3 >Emitted(58, 5) Source(109, 5) + SourceIndex(0) +4 >Emitted(58, 6) Source(109, 6) + SourceIndex(0) +5 >Emitted(58, 7) Source(110, 5) + SourceIndex(0) +6 >Emitted(58, 28) Source(110, 27) + SourceIndex(0) +7 >Emitted(58, 30) Source(110, 5) + SourceIndex(0) +8 >Emitted(58, 69) Source(110, 27) + SourceIndex(0) +9 >Emitted(58, 71) Source(111, 5) + SourceIndex(0) +10>Emitted(58, 94) Source(114, 47) + SourceIndex(0) +11>Emitted(58, 96) Source(111, 5) + SourceIndex(0) +12>Emitted(58, 163) Source(114, 47) + SourceIndex(0) +13>Emitted(58, 165) Source(112, 9) + SourceIndex(0) +14>Emitted(58, 182) Source(112, 38) + SourceIndex(0) +15>Emitted(58, 184) Source(112, 9) + SourceIndex(0) +16>Emitted(58, 227) Source(112, 38) + SourceIndex(0) +17>Emitted(58, 229) Source(113, 9) + SourceIndex(0) +18>Emitted(58, 248) Source(113, 44) + SourceIndex(0) +19>Emitted(58, 250) Source(113, 9) + SourceIndex(0) +20>Emitted(58, 297) Source(113, 44) + SourceIndex(0) +21>Emitted(58, 299) Source(115, 5) + SourceIndex(0) +22>Emitted(58, 309) Source(115, 15) + SourceIndex(0) +23>Emitted(58, 310) Source(115, 15) + SourceIndex(0) +24>Emitted(58, 312) Source(115, 17) + SourceIndex(0) +25>Emitted(58, 313) Source(115, 18) + SourceIndex(0) +26>Emitted(58, 316) Source(115, 21) + SourceIndex(0) +27>Emitted(58, 317) Source(115, 22) + SourceIndex(0) +28>Emitted(58, 319) Source(115, 24) + SourceIndex(0) +29>Emitted(58, 320) Source(115, 25) + SourceIndex(0) +30>Emitted(58, 323) Source(115, 28) + SourceIndex(0) +31>Emitted(58, 324) Source(115, 29) + SourceIndex(0) +32>Emitted(58, 326) Source(115, 31) + SourceIndex(0) +33>Emitted(58, 327) Source(115, 32) + SourceIndex(0) +34>Emitted(58, 329) Source(115, 34) + SourceIndex(0) +35>Emitted(58, 331) Source(115, 36) + SourceIndex(0) +36>Emitted(58, 332) Source(115, 37) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(59, 5) Source(116, 5) + SourceIndex(0) +2 >Emitted(59, 12) Source(116, 12) + SourceIndex(0) +3 >Emitted(59, 13) Source(116, 13) + SourceIndex(0) +4 >Emitted(59, 16) Source(116, 16) + SourceIndex(0) +5 >Emitted(59, 17) Source(116, 17) + SourceIndex(0) +6 >Emitted(59, 25) Source(116, 25) + SourceIndex(0) +7 >Emitted(59, 26) Source(116, 26) + SourceIndex(0) +8 >Emitted(59, 27) Source(116, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(60, 1) Source(117, 1) + SourceIndex(0) +2 >Emitted(60, 2) Source(117, 2) + SourceIndex(0) +--- +>>>for ((_27 = getMultiRobot(), _28 = _27.name, nameA = _28 === void 0 ? "noName" : _28, _29 = _27.skills, _30 = _29 === void 0 ? { primary: "none", secondary: "none" } : _29, _31 = _30.primary, primaryA = _31 === void 0 ? "primary" : _31, _32 = _30.secondary, secondaryA = _32 === void 0 ? "secondary" : _32, _27), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^^^^^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^^ +31> ^ +32> ^^ +33> ^ +34> ^^ +35> ^^ +36> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , + > +12> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +15> +16> primary: primaryA = "primary" +17> +18> primary: primaryA = "primary" +19> , + > +20> secondary: secondaryA = "secondary" +21> +22> secondary: secondaryA = "secondary" +23> + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +24> , +25> i +26> = +27> 0 +28> ; +29> i +30> < +31> 1 +32> ; +33> i +34> ++ +35> ) +36> { +1->Emitted(61, 1) Source(118, 1) + SourceIndex(0) +2 >Emitted(61, 4) Source(118, 4) + SourceIndex(0) +3 >Emitted(61, 5) Source(118, 5) + SourceIndex(0) +4 >Emitted(61, 6) Source(118, 6) + SourceIndex(0) +5 >Emitted(61, 7) Source(118, 6) + SourceIndex(0) +6 >Emitted(61, 28) Source(124, 20) + SourceIndex(0) +7 >Emitted(61, 30) Source(119, 5) + SourceIndex(0) +8 >Emitted(61, 44) Source(119, 27) + SourceIndex(0) +9 >Emitted(61, 46) Source(119, 5) + SourceIndex(0) +10>Emitted(61, 85) Source(119, 27) + SourceIndex(0) +11>Emitted(61, 87) Source(120, 5) + SourceIndex(0) +12>Emitted(61, 103) Source(123, 47) + SourceIndex(0) +13>Emitted(61, 105) Source(120, 5) + SourceIndex(0) +14>Emitted(61, 172) Source(123, 47) + SourceIndex(0) +15>Emitted(61, 174) Source(121, 9) + SourceIndex(0) +16>Emitted(61, 191) Source(121, 38) + SourceIndex(0) +17>Emitted(61, 193) Source(121, 9) + SourceIndex(0) +18>Emitted(61, 236) Source(121, 38) + SourceIndex(0) +19>Emitted(61, 238) Source(122, 9) + SourceIndex(0) +20>Emitted(61, 257) Source(122, 44) + SourceIndex(0) +21>Emitted(61, 259) Source(122, 9) + SourceIndex(0) +22>Emitted(61, 306) Source(122, 44) + SourceIndex(0) +23>Emitted(61, 312) Source(124, 20) + SourceIndex(0) +24>Emitted(61, 314) Source(124, 22) + SourceIndex(0) +25>Emitted(61, 315) Source(124, 23) + SourceIndex(0) +26>Emitted(61, 318) Source(124, 26) + SourceIndex(0) +27>Emitted(61, 319) Source(124, 27) + SourceIndex(0) +28>Emitted(61, 321) Source(124, 29) + SourceIndex(0) +29>Emitted(61, 322) Source(124, 30) + SourceIndex(0) +30>Emitted(61, 325) Source(124, 33) + SourceIndex(0) +31>Emitted(61, 326) Source(124, 34) + SourceIndex(0) +32>Emitted(61, 328) Source(124, 36) + SourceIndex(0) +33>Emitted(61, 329) Source(124, 37) + SourceIndex(0) +34>Emitted(61, 331) Source(124, 39) + SourceIndex(0) +35>Emitted(61, 333) Source(124, 41) + SourceIndex(0) +36>Emitted(61, 334) Source(124, 42) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(62, 5) Source(125, 5) + SourceIndex(0) +2 >Emitted(62, 12) Source(125, 12) + SourceIndex(0) +3 >Emitted(62, 13) Source(125, 13) + SourceIndex(0) +4 >Emitted(62, 16) Source(125, 16) + SourceIndex(0) +5 >Emitted(62, 17) Source(125, 17) + SourceIndex(0) +6 >Emitted(62, 25) Source(125, 25) + SourceIndex(0) +7 >Emitted(62, 26) Source(125, 26) + SourceIndex(0) +8 >Emitted(62, 27) Source(125, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(63, 1) Source(126, 1) + SourceIndex(0) +2 >Emitted(63, 2) Source(126, 2) + SourceIndex(0) +--- +>>>for ((_33 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _34 = _33.name, nameA = _34 === void 0 ? "noName" : _34, _35 = _33.skills, _36 = _35 === void 0 ? { primary: "none", secondary: "none" } : _35, _37 = _36.primary, primaryA = _37 === void 0 ? "primary" : _37, _38 = _36.secondary, secondaryA = _38 === void 0 ? "secondary" : _38, _33), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > name: nameA = "noName" +9 > +10> name: nameA = "noName" +11> , + > +12> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } +15> +16> primary: primaryA = "primary" +17> +18> primary: primaryA = "primary" +19> , + > +20> secondary: secondaryA = "secondary" +21> +22> secondary: secondaryA = "secondary" +23> + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(64, 1) Source(127, 1) + SourceIndex(0) +2 >Emitted(64, 4) Source(127, 4) + SourceIndex(0) +3 >Emitted(64, 5) Source(127, 5) + SourceIndex(0) +4 >Emitted(64, 6) Source(127, 6) + SourceIndex(0) +5 >Emitted(64, 7) Source(127, 6) + SourceIndex(0) +6 >Emitted(64, 86) Source(133, 90) + SourceIndex(0) +7 >Emitted(64, 88) Source(128, 5) + SourceIndex(0) +8 >Emitted(64, 102) Source(128, 27) + SourceIndex(0) +9 >Emitted(64, 104) Source(128, 5) + SourceIndex(0) +10>Emitted(64, 143) Source(128, 27) + SourceIndex(0) +11>Emitted(64, 145) Source(129, 5) + SourceIndex(0) +12>Emitted(64, 161) Source(132, 47) + SourceIndex(0) +13>Emitted(64, 163) Source(129, 5) + SourceIndex(0) +14>Emitted(64, 230) Source(132, 47) + SourceIndex(0) +15>Emitted(64, 232) Source(130, 9) + SourceIndex(0) +16>Emitted(64, 249) Source(130, 38) + SourceIndex(0) +17>Emitted(64, 251) Source(130, 9) + SourceIndex(0) +18>Emitted(64, 294) Source(130, 38) + SourceIndex(0) +19>Emitted(64, 296) Source(131, 9) + SourceIndex(0) +20>Emitted(64, 315) Source(131, 44) + SourceIndex(0) +21>Emitted(64, 317) Source(131, 9) + SourceIndex(0) +22>Emitted(64, 364) Source(131, 44) + SourceIndex(0) +23>Emitted(64, 370) Source(133, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(65, 5) Source(134, 5) + SourceIndex(0) +2 >Emitted(65, 6) Source(134, 6) + SourceIndex(0) +3 >Emitted(65, 9) Source(134, 9) + SourceIndex(0) +4 >Emitted(65, 10) Source(134, 10) + SourceIndex(0) +5 >Emitted(65, 12) Source(134, 12) + SourceIndex(0) +6 >Emitted(65, 13) Source(134, 13) + SourceIndex(0) +7 >Emitted(65, 16) Source(134, 16) + SourceIndex(0) +8 >Emitted(65, 17) Source(134, 17) + SourceIndex(0) +9 >Emitted(65, 19) Source(134, 19) + SourceIndex(0) +10>Emitted(65, 20) Source(134, 20) + SourceIndex(0) +11>Emitted(65, 22) Source(134, 22) + SourceIndex(0) +12>Emitted(65, 24) Source(134, 24) + SourceIndex(0) +13>Emitted(65, 25) Source(134, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(66, 5) Source(135, 5) + SourceIndex(0) +2 >Emitted(66, 12) Source(135, 12) + SourceIndex(0) +3 >Emitted(66, 13) Source(135, 13) + SourceIndex(0) +4 >Emitted(66, 16) Source(135, 16) + SourceIndex(0) +5 >Emitted(66, 17) Source(135, 17) + SourceIndex(0) +6 >Emitted(66, 25) Source(135, 25) + SourceIndex(0) +7 >Emitted(66, 26) Source(135, 26) + SourceIndex(0) +8 >Emitted(66, 27) Source(135, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(67, 1) Source(136, 1) + SourceIndex(0) +2 >Emitted(67, 2) Source(136, 2) + SourceIndex(0) +--- +>>>for ((_39 = robot.name, name = _39 === void 0 ? "noName" : _39, _40 = robot.skill, skill = _40 === void 0 ? "skill" : _40, robot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^ +15> ^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > + > +2 >for +3 > +4 > ( +5 > { +6 > name = "noName" +7 > +8 > name = "noName" +9 > , +10> skill = "skill" +11> +12> skill = "skill" +13> } = +14> robot +15> +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(68, 1) Source(138, 1) + SourceIndex(0) +2 >Emitted(68, 4) Source(138, 4) + SourceIndex(0) +3 >Emitted(68, 5) Source(138, 5) + SourceIndex(0) +4 >Emitted(68, 6) Source(138, 6) + SourceIndex(0) +5 >Emitted(68, 7) Source(138, 8) + SourceIndex(0) +6 >Emitted(68, 23) Source(138, 23) + SourceIndex(0) +7 >Emitted(68, 25) Source(138, 8) + SourceIndex(0) +8 >Emitted(68, 63) Source(138, 23) + SourceIndex(0) +9 >Emitted(68, 65) Source(138, 25) + SourceIndex(0) +10>Emitted(68, 82) Source(138, 40) + SourceIndex(0) +11>Emitted(68, 84) Source(138, 25) + SourceIndex(0) +12>Emitted(68, 122) Source(138, 40) + SourceIndex(0) +13>Emitted(68, 124) Source(138, 45) + SourceIndex(0) +14>Emitted(68, 129) Source(138, 50) + SourceIndex(0) +15>Emitted(68, 130) Source(138, 50) + SourceIndex(0) +16>Emitted(68, 132) Source(138, 52) + SourceIndex(0) +17>Emitted(68, 133) Source(138, 53) + SourceIndex(0) +18>Emitted(68, 136) Source(138, 56) + SourceIndex(0) +19>Emitted(68, 137) Source(138, 57) + SourceIndex(0) +20>Emitted(68, 139) Source(138, 59) + SourceIndex(0) +21>Emitted(68, 140) Source(138, 60) + SourceIndex(0) +22>Emitted(68, 143) Source(138, 63) + SourceIndex(0) +23>Emitted(68, 144) Source(138, 64) + SourceIndex(0) +24>Emitted(68, 146) Source(138, 66) + SourceIndex(0) +25>Emitted(68, 147) Source(138, 67) + SourceIndex(0) +26>Emitted(68, 149) Source(138, 69) + SourceIndex(0) +27>Emitted(68, 151) Source(138, 71) + SourceIndex(0) +28>Emitted(68, 152) Source(138, 72) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(69, 5) Source(139, 5) + SourceIndex(0) +2 >Emitted(69, 12) Source(139, 12) + SourceIndex(0) +3 >Emitted(69, 13) Source(139, 13) + SourceIndex(0) +4 >Emitted(69, 16) Source(139, 16) + SourceIndex(0) +5 >Emitted(69, 17) Source(139, 17) + SourceIndex(0) +6 >Emitted(69, 22) Source(139, 22) + SourceIndex(0) +7 >Emitted(69, 23) Source(139, 23) + SourceIndex(0) +8 >Emitted(69, 24) Source(139, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(70, 1) Source(140, 1) + SourceIndex(0) +2 >Emitted(70, 2) Source(140, 2) + SourceIndex(0) +--- +>>>for ((_41 = getRobot(), _42 = _41.name, name = _42 === void 0 ? "noName" : _42, _43 = _41.skill, skill = _43 === void 0 ? "skill" : _43, _41), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name = "noName", skill = "skill" } = getRobot() +7 > +8 > name = "noName" +9 > +10> name = "noName" +11> , +12> skill = "skill" +13> +14> skill = "skill" +15> } = getRobot() +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(71, 1) Source(141, 1) + SourceIndex(0) +2 >Emitted(71, 4) Source(141, 4) + SourceIndex(0) +3 >Emitted(71, 5) Source(141, 5) + SourceIndex(0) +4 >Emitted(71, 6) Source(141, 6) + SourceIndex(0) +5 >Emitted(71, 7) Source(141, 6) + SourceIndex(0) +6 >Emitted(71, 23) Source(141, 55) + SourceIndex(0) +7 >Emitted(71, 25) Source(141, 8) + SourceIndex(0) +8 >Emitted(71, 39) Source(141, 23) + SourceIndex(0) +9 >Emitted(71, 41) Source(141, 8) + SourceIndex(0) +10>Emitted(71, 79) Source(141, 23) + SourceIndex(0) +11>Emitted(71, 81) Source(141, 25) + SourceIndex(0) +12>Emitted(71, 96) Source(141, 40) + SourceIndex(0) +13>Emitted(71, 98) Source(141, 25) + SourceIndex(0) +14>Emitted(71, 136) Source(141, 40) + SourceIndex(0) +15>Emitted(71, 142) Source(141, 55) + SourceIndex(0) +16>Emitted(71, 144) Source(141, 57) + SourceIndex(0) +17>Emitted(71, 145) Source(141, 58) + SourceIndex(0) +18>Emitted(71, 148) Source(141, 61) + SourceIndex(0) +19>Emitted(71, 149) Source(141, 62) + SourceIndex(0) +20>Emitted(71, 151) Source(141, 64) + SourceIndex(0) +21>Emitted(71, 152) Source(141, 65) + SourceIndex(0) +22>Emitted(71, 155) Source(141, 68) + SourceIndex(0) +23>Emitted(71, 156) Source(141, 69) + SourceIndex(0) +24>Emitted(71, 158) Source(141, 71) + SourceIndex(0) +25>Emitted(71, 159) Source(141, 72) + SourceIndex(0) +26>Emitted(71, 161) Source(141, 74) + SourceIndex(0) +27>Emitted(71, 163) Source(141, 76) + SourceIndex(0) +28>Emitted(71, 164) Source(141, 77) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(72, 5) Source(142, 5) + SourceIndex(0) +2 >Emitted(72, 12) Source(142, 12) + SourceIndex(0) +3 >Emitted(72, 13) Source(142, 13) + SourceIndex(0) +4 >Emitted(72, 16) Source(142, 16) + SourceIndex(0) +5 >Emitted(72, 17) Source(142, 17) + SourceIndex(0) +6 >Emitted(72, 22) Source(142, 22) + SourceIndex(0) +7 >Emitted(72, 23) Source(142, 23) + SourceIndex(0) +8 >Emitted(72, 24) Source(142, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(73, 1) Source(143, 1) + SourceIndex(0) +2 >Emitted(73, 2) Source(143, 2) + SourceIndex(0) +--- +>>>for ((_44 = { name: "trimmer", skill: "trimming" }, _45 = _44.name, name = _45 === void 0 ? "noName" : _45, _46 = _44.skill, skill = _46 === void 0 ? "skill" : _46, _44), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^^^^^ +16> ^^ +17> ^ +18> ^^^ +19> ^ +20> ^^ +21> ^ +22> ^^^ +23> ^ +24> ^^ +25> ^ +26> ^^ +27> ^^ +28> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" } +7 > +8 > name = "noName" +9 > +10> name = "noName" +11> , +12> skill = "skill" +13> +14> skill = "skill" +15> } = { name: "trimmer", skill: "trimming" } +16> , +17> i +18> = +19> 0 +20> ; +21> i +22> < +23> 1 +24> ; +25> i +26> ++ +27> ) +28> { +1->Emitted(74, 1) Source(144, 1) + SourceIndex(0) +2 >Emitted(74, 4) Source(144, 4) + SourceIndex(0) +3 >Emitted(74, 5) Source(144, 5) + SourceIndex(0) +4 >Emitted(74, 6) Source(144, 6) + SourceIndex(0) +5 >Emitted(74, 7) Source(144, 6) + SourceIndex(0) +6 >Emitted(74, 51) Source(144, 90) + SourceIndex(0) +7 >Emitted(74, 53) Source(144, 8) + SourceIndex(0) +8 >Emitted(74, 67) Source(144, 23) + SourceIndex(0) +9 >Emitted(74, 69) Source(144, 8) + SourceIndex(0) +10>Emitted(74, 107) Source(144, 23) + SourceIndex(0) +11>Emitted(74, 109) Source(144, 25) + SourceIndex(0) +12>Emitted(74, 124) Source(144, 40) + SourceIndex(0) +13>Emitted(74, 126) Source(144, 25) + SourceIndex(0) +14>Emitted(74, 164) Source(144, 40) + SourceIndex(0) +15>Emitted(74, 170) Source(144, 90) + SourceIndex(0) +16>Emitted(74, 172) Source(144, 92) + SourceIndex(0) +17>Emitted(74, 173) Source(144, 93) + SourceIndex(0) +18>Emitted(74, 176) Source(144, 96) + SourceIndex(0) +19>Emitted(74, 177) Source(144, 97) + SourceIndex(0) +20>Emitted(74, 179) Source(144, 99) + SourceIndex(0) +21>Emitted(74, 180) Source(144, 100) + SourceIndex(0) +22>Emitted(74, 183) Source(144, 103) + SourceIndex(0) +23>Emitted(74, 184) Source(144, 104) + SourceIndex(0) +24>Emitted(74, 186) Source(144, 106) + SourceIndex(0) +25>Emitted(74, 187) Source(144, 107) + SourceIndex(0) +26>Emitted(74, 189) Source(144, 109) + SourceIndex(0) +27>Emitted(74, 191) Source(144, 111) + SourceIndex(0) +28>Emitted(74, 192) Source(144, 112) + SourceIndex(0) +--- +>>> console.log(nameA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > nameA +7 > ) +8 > ; +1 >Emitted(75, 5) Source(145, 5) + SourceIndex(0) +2 >Emitted(75, 12) Source(145, 12) + SourceIndex(0) +3 >Emitted(75, 13) Source(145, 13) + SourceIndex(0) +4 >Emitted(75, 16) Source(145, 16) + SourceIndex(0) +5 >Emitted(75, 17) Source(145, 17) + SourceIndex(0) +6 >Emitted(75, 22) Source(145, 22) + SourceIndex(0) +7 >Emitted(75, 23) Source(145, 23) + SourceIndex(0) +8 >Emitted(75, 24) Source(145, 24) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(76, 1) Source(146, 1) + SourceIndex(0) +2 >Emitted(76, 2) Source(146, 2) + SourceIndex(0) +--- +>>>for ((_47 = multiRobot.name, name = _47 === void 0 ? "noName" : _47, _48 = multiRobot.skills, _49 = _48 === void 0 ? { primary: "none", secondary: "none" } : _48, _50 = _49.primary, primary = _50 === void 0 ? "primary" : _50, _51 = _49.secondary, secondary = _51 === void 0 ? "secondary" : _51, multiRobot), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^ +23> ^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^^ +31> ^ +32> ^^ +33> ^ +34> ^^ +35> ^^ +36> ^ +1-> + > +2 >for +3 > +4 > ( +5 > { + > +6 > name = "noName" +7 > +8 > name = "noName" +9 > , + > +10> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +11> +12> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> primary = "primary" +15> +16> primary = "primary" +17> , + > +18> secondary = "secondary" +19> +20> secondary = "secondary" +21> + > } = { primary: "none", secondary: "none" } + > } = +22> multiRobot +23> +24> , +25> i +26> = +27> 0 +28> ; +29> i +30> < +31> 1 +32> ; +33> i +34> ++ +35> ) +36> { +1->Emitted(77, 1) Source(147, 1) + SourceIndex(0) +2 >Emitted(77, 4) Source(147, 4) + SourceIndex(0) +3 >Emitted(77, 5) Source(147, 5) + SourceIndex(0) +4 >Emitted(77, 6) Source(147, 6) + SourceIndex(0) +5 >Emitted(77, 7) Source(148, 5) + SourceIndex(0) +6 >Emitted(77, 28) Source(148, 20) + SourceIndex(0) +7 >Emitted(77, 30) Source(148, 5) + SourceIndex(0) +8 >Emitted(77, 68) Source(148, 20) + SourceIndex(0) +9 >Emitted(77, 70) Source(149, 5) + SourceIndex(0) +10>Emitted(77, 93) Source(152, 47) + SourceIndex(0) +11>Emitted(77, 95) Source(149, 5) + SourceIndex(0) +12>Emitted(77, 162) Source(152, 47) + SourceIndex(0) +13>Emitted(77, 164) Source(150, 9) + SourceIndex(0) +14>Emitted(77, 181) Source(150, 28) + SourceIndex(0) +15>Emitted(77, 183) Source(150, 9) + SourceIndex(0) +16>Emitted(77, 225) Source(150, 28) + SourceIndex(0) +17>Emitted(77, 227) Source(151, 9) + SourceIndex(0) +18>Emitted(77, 246) Source(151, 32) + SourceIndex(0) +19>Emitted(77, 248) Source(151, 9) + SourceIndex(0) +20>Emitted(77, 294) Source(151, 32) + SourceIndex(0) +21>Emitted(77, 296) Source(153, 5) + SourceIndex(0) +22>Emitted(77, 306) Source(153, 15) + SourceIndex(0) +23>Emitted(77, 307) Source(153, 15) + SourceIndex(0) +24>Emitted(77, 309) Source(153, 17) + SourceIndex(0) +25>Emitted(77, 310) Source(153, 18) + SourceIndex(0) +26>Emitted(77, 313) Source(153, 21) + SourceIndex(0) +27>Emitted(77, 314) Source(153, 22) + SourceIndex(0) +28>Emitted(77, 316) Source(153, 24) + SourceIndex(0) +29>Emitted(77, 317) Source(153, 25) + SourceIndex(0) +30>Emitted(77, 320) Source(153, 28) + SourceIndex(0) +31>Emitted(77, 321) Source(153, 29) + SourceIndex(0) +32>Emitted(77, 323) Source(153, 31) + SourceIndex(0) +33>Emitted(77, 324) Source(153, 32) + SourceIndex(0) +34>Emitted(77, 326) Source(153, 34) + SourceIndex(0) +35>Emitted(77, 328) Source(153, 36) + SourceIndex(0) +36>Emitted(77, 329) Source(153, 37) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(78, 5) Source(154, 5) + SourceIndex(0) +2 >Emitted(78, 12) Source(154, 12) + SourceIndex(0) +3 >Emitted(78, 13) Source(154, 13) + SourceIndex(0) +4 >Emitted(78, 16) Source(154, 16) + SourceIndex(0) +5 >Emitted(78, 17) Source(154, 17) + SourceIndex(0) +6 >Emitted(78, 25) Source(154, 25) + SourceIndex(0) +7 >Emitted(78, 26) Source(154, 26) + SourceIndex(0) +8 >Emitted(78, 27) Source(154, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(79, 1) Source(155, 1) + SourceIndex(0) +2 >Emitted(79, 2) Source(155, 2) + SourceIndex(0) +--- +>>>for ((_52 = getMultiRobot(), _53 = _52.name, name = _53 === void 0 ? "noName" : _53, _54 = _52.skills, _55 = _54 === void 0 ? { primary: "none", secondary: "none" } : _54, _56 = _55.primary, primary = _56 === void 0 ? "primary" : _56, _57 = _55.secondary, secondary = _57 === void 0 ? "secondary" : _57, _52), i = 0; i < 1; i++) { +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^^^^^ +24> ^^ +25> ^ +26> ^^^ +27> ^ +28> ^^ +29> ^ +30> ^^^ +31> ^ +32> ^^ +33> ^ +34> ^^ +35> ^^ +36> ^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +7 > +8 > name = "noName" +9 > +10> name = "noName" +11> , + > +12> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +15> +16> primary = "primary" +17> +18> primary = "primary" +19> , + > +20> secondary = "secondary" +21> +22> secondary = "secondary" +23> + > } = { primary: "none", secondary: "none" } + > } = getMultiRobot() +24> , +25> i +26> = +27> 0 +28> ; +29> i +30> < +31> 1 +32> ; +33> i +34> ++ +35> ) +36> { +1->Emitted(80, 1) Source(156, 1) + SourceIndex(0) +2 >Emitted(80, 4) Source(156, 4) + SourceIndex(0) +3 >Emitted(80, 5) Source(156, 5) + SourceIndex(0) +4 >Emitted(80, 6) Source(156, 6) + SourceIndex(0) +5 >Emitted(80, 7) Source(156, 6) + SourceIndex(0) +6 >Emitted(80, 28) Source(162, 20) + SourceIndex(0) +7 >Emitted(80, 30) Source(157, 5) + SourceIndex(0) +8 >Emitted(80, 44) Source(157, 20) + SourceIndex(0) +9 >Emitted(80, 46) Source(157, 5) + SourceIndex(0) +10>Emitted(80, 84) Source(157, 20) + SourceIndex(0) +11>Emitted(80, 86) Source(158, 5) + SourceIndex(0) +12>Emitted(80, 102) Source(161, 47) + SourceIndex(0) +13>Emitted(80, 104) Source(158, 5) + SourceIndex(0) +14>Emitted(80, 171) Source(161, 47) + SourceIndex(0) +15>Emitted(80, 173) Source(159, 9) + SourceIndex(0) +16>Emitted(80, 190) Source(159, 28) + SourceIndex(0) +17>Emitted(80, 192) Source(159, 9) + SourceIndex(0) +18>Emitted(80, 234) Source(159, 28) + SourceIndex(0) +19>Emitted(80, 236) Source(160, 9) + SourceIndex(0) +20>Emitted(80, 255) Source(160, 32) + SourceIndex(0) +21>Emitted(80, 257) Source(160, 9) + SourceIndex(0) +22>Emitted(80, 303) Source(160, 32) + SourceIndex(0) +23>Emitted(80, 309) Source(162, 20) + SourceIndex(0) +24>Emitted(80, 311) Source(162, 22) + SourceIndex(0) +25>Emitted(80, 312) Source(162, 23) + SourceIndex(0) +26>Emitted(80, 315) Source(162, 26) + SourceIndex(0) +27>Emitted(80, 316) Source(162, 27) + SourceIndex(0) +28>Emitted(80, 318) Source(162, 29) + SourceIndex(0) +29>Emitted(80, 319) Source(162, 30) + SourceIndex(0) +30>Emitted(80, 322) Source(162, 33) + SourceIndex(0) +31>Emitted(80, 323) Source(162, 34) + SourceIndex(0) +32>Emitted(80, 325) Source(162, 36) + SourceIndex(0) +33>Emitted(80, 326) Source(162, 37) + SourceIndex(0) +34>Emitted(80, 328) Source(162, 39) + SourceIndex(0) +35>Emitted(80, 330) Source(162, 41) + SourceIndex(0) +36>Emitted(80, 331) Source(162, 42) + SourceIndex(0) +--- +>>> console.log(primaryA); +1 >^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1 > + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1 >Emitted(81, 5) Source(163, 5) + SourceIndex(0) +2 >Emitted(81, 12) Source(163, 12) + SourceIndex(0) +3 >Emitted(81, 13) Source(163, 13) + SourceIndex(0) +4 >Emitted(81, 16) Source(163, 16) + SourceIndex(0) +5 >Emitted(81, 17) Source(163, 17) + SourceIndex(0) +6 >Emitted(81, 25) Source(163, 25) + SourceIndex(0) +7 >Emitted(81, 26) Source(163, 26) + SourceIndex(0) +8 >Emitted(81, 27) Source(163, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(82, 1) Source(164, 1) + SourceIndex(0) +2 >Emitted(82, 2) Source(164, 2) + SourceIndex(0) +--- +>>>for ((_58 = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, _59 = _58.name, name = _59 === void 0 ? "noName" : _59, _60 = _58.skills, _61 = _60 === void 0 ? { primary: "none", secondary: "none" } : _60, _62 = _61.primary, primary = _62 === void 0 ? "primary" : _62, _63 = _61.secondary, secondary = _63 === void 0 ? "secondary" : _63, _58), +1-> +2 >^^^ +3 > ^ +4 > ^ +5 > ^ +6 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +7 > ^^ +8 > ^^^^^^^^^^^^^^ +9 > ^^ +10> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +11> ^^ +12> ^^^^^^^^^^^^^^^^ +13> ^^ +14> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +15> ^^ +16> ^^^^^^^^^^^^^^^^^ +17> ^^ +18> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +19> ^^ +20> ^^^^^^^^^^^^^^^^^^^ +21> ^^ +22> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +23> ^^^^^^ +1-> + > +2 >for +3 > +4 > ( +5 > +6 > { + > name = "noName", + > skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +7 > +8 > name = "noName" +9 > +10> name = "noName" +11> , + > +12> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +13> +14> skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } +15> +16> primary = "primary" +17> +18> primary = "primary" +19> , + > +20> secondary = "secondary" +21> +22> secondary = "secondary" +23> + > } = { primary: "none", secondary: "none" } + > } = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } +1->Emitted(83, 1) Source(165, 1) + SourceIndex(0) +2 >Emitted(83, 4) Source(165, 4) + SourceIndex(0) +3 >Emitted(83, 5) Source(165, 5) + SourceIndex(0) +4 >Emitted(83, 6) Source(165, 6) + SourceIndex(0) +5 >Emitted(83, 7) Source(165, 6) + SourceIndex(0) +6 >Emitted(83, 86) Source(171, 90) + SourceIndex(0) +7 >Emitted(83, 88) Source(166, 5) + SourceIndex(0) +8 >Emitted(83, 102) Source(166, 20) + SourceIndex(0) +9 >Emitted(83, 104) Source(166, 5) + SourceIndex(0) +10>Emitted(83, 142) Source(166, 20) + SourceIndex(0) +11>Emitted(83, 144) Source(167, 5) + SourceIndex(0) +12>Emitted(83, 160) Source(170, 47) + SourceIndex(0) +13>Emitted(83, 162) Source(167, 5) + SourceIndex(0) +14>Emitted(83, 229) Source(170, 47) + SourceIndex(0) +15>Emitted(83, 231) Source(168, 9) + SourceIndex(0) +16>Emitted(83, 248) Source(168, 28) + SourceIndex(0) +17>Emitted(83, 250) Source(168, 9) + SourceIndex(0) +18>Emitted(83, 292) Source(168, 28) + SourceIndex(0) +19>Emitted(83, 294) Source(169, 9) + SourceIndex(0) +20>Emitted(83, 313) Source(169, 32) + SourceIndex(0) +21>Emitted(83, 315) Source(169, 9) + SourceIndex(0) +22>Emitted(83, 361) Source(169, 32) + SourceIndex(0) +23>Emitted(83, 367) Source(171, 90) + SourceIndex(0) +--- +>>> i = 0; i < 1; i++) { +1 >^^^^ +2 > ^ +3 > ^^^ +4 > ^ +5 > ^^ +6 > ^ +7 > ^^^ +8 > ^ +9 > ^^ +10> ^ +11> ^^ +12> ^^ +13> ^ +14> ^^^-> +1 >, + > +2 > i +3 > = +4 > 0 +5 > ; +6 > i +7 > < +8 > 1 +9 > ; +10> i +11> ++ +12> ) +13> { +1 >Emitted(84, 5) Source(172, 5) + SourceIndex(0) +2 >Emitted(84, 6) Source(172, 6) + SourceIndex(0) +3 >Emitted(84, 9) Source(172, 9) + SourceIndex(0) +4 >Emitted(84, 10) Source(172, 10) + SourceIndex(0) +5 >Emitted(84, 12) Source(172, 12) + SourceIndex(0) +6 >Emitted(84, 13) Source(172, 13) + SourceIndex(0) +7 >Emitted(84, 16) Source(172, 16) + SourceIndex(0) +8 >Emitted(84, 17) Source(172, 17) + SourceIndex(0) +9 >Emitted(84, 19) Source(172, 19) + SourceIndex(0) +10>Emitted(84, 20) Source(172, 20) + SourceIndex(0) +11>Emitted(84, 22) Source(172, 22) + SourceIndex(0) +12>Emitted(84, 24) Source(172, 24) + SourceIndex(0) +13>Emitted(84, 25) Source(172, 25) + SourceIndex(0) +--- +>>> console.log(primaryA); +1->^^^^ +2 > ^^^^^^^ +3 > ^ +4 > ^^^ +5 > ^ +6 > ^^^^^^^^ +7 > ^ +8 > ^ +1-> + > +2 > console +3 > . +4 > log +5 > ( +6 > primaryA +7 > ) +8 > ; +1->Emitted(85, 5) Source(173, 5) + SourceIndex(0) +2 >Emitted(85, 12) Source(173, 12) + SourceIndex(0) +3 >Emitted(85, 13) Source(173, 13) + SourceIndex(0) +4 >Emitted(85, 16) Source(173, 16) + SourceIndex(0) +5 >Emitted(85, 17) Source(173, 17) + SourceIndex(0) +6 >Emitted(85, 25) Source(173, 25) + SourceIndex(0) +7 >Emitted(85, 26) Source(173, 26) + SourceIndex(0) +8 >Emitted(85, 27) Source(173, 27) + SourceIndex(0) +--- +>>>} +1 > +2 >^ +3 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +1 > + > +2 >} +1 >Emitted(86, 1) Source(174, 1) + SourceIndex(0) +2 >Emitted(86, 2) Source(174, 2) + SourceIndex(0) +--- +>>>var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63; +>>>//# sourceMappingURL=sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.js.map \ No newline at end of file diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols new file mode 100644 index 00000000000..20ccd1136c3 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.symbols @@ -0,0 +1,628 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts === +declare var console: { +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) + + log(msg: any): void; +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>msg : Symbol(msg, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 1, 8)) +} +interface Robot { +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 3, 17)) + + skill: string; +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 4, 17)) +} + +interface MultiRobot { +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) + + name: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 8, 22)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 9, 17)) + + primary?: string; +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 10, 13)) + + secondary?: string; +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 11, 25)) + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 20)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 35)) + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 3)) +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 30)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 45)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 55)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 74)) + +function getRobot() { +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 97)) + + return robot; +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 3)) +} +function getMultiRobot() { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 20, 1)) + + return multiRobot; +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 3)) +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 67)) + +let name: string, primary: string, secondary: string, skill: string; +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 26, 3)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 26, 17)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 26, 34)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 26, 53)) + +for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 28, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 31, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 34, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 34, 41)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 34, 58)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 37, 6)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 38, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 39, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 41, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 41, 26)) + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 45, 6)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 46, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 47, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 49, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 49, 26)) + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 53, 6)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 54, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 55, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 57, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 57, 26)) + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 58, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 58, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 58, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 58, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} + +for ({ name = "noName" } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 63, 6)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 66, 6)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 69, 6)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 69, 35)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 69, 52)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 72, 6)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 73, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 74, 28)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 76, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 76, 26)) + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 80, 6)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 81, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 82, 28)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 84, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 84, 26)) + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 88, 6)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 89, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 90, 28)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 92, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 92, 26)) + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 93, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 93, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 93, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 93, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} + + +for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 99, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 99, 29)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 67)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 102, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 102, 29)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 67)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 105, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 105, 29)) +>skillA : Symbol(skillA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 67)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 105, 66)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 105, 83)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ + name: nameA = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 108, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 109, 27)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 110, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 111, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 113, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 113, 26)) + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + name: nameA = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 117, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 118, 27)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 119, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 120, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 122, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 122, 26)) + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + name: nameA = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 126, 6)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 127, 27)) + + primary: primaryA = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 128, 13)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) + + secondary: secondaryA = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 129, 38)) +>secondaryA : Symbol(secondaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 36)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 131, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 131, 26)) + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 132, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 132, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 132, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 132, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} + +for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 137, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 137, 23)) +>robot : Symbol(robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 16, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 140, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 140, 23)) +>getRobot : Symbol(getRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 97)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 143, 6)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 143, 23)) +>Robot : Symbol(Robot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 2, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 143, 52)) +>skill : Symbol(skill, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 143, 69)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(nameA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>nameA : Symbol(nameA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 3)) +} +for ({ + name = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 146, 6)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 147, 20)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 148, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 149, 28)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 151, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 151, 26)) + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : Symbol(multiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 17, 3)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + name = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 155, 6)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 156, 20)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 157, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 158, 28)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 160, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 160, 26)) + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot : Symbol(getMultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 20, 1)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} +for ({ + name = "noName", +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 164, 6)) + + skills: { +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 165, 20)) + + primary = "primary", +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 166, 13)) + + secondary = "secondary" +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 167, 28)) + + } = { primary: "none", secondary: "none" } +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 169, 9)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 169, 26)) + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>MultiRobot : Symbol(MultiRobot, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 6, 1)) +>name : Symbol(name, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 170, 17)) +>skills : Symbol(skills, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 170, 34)) +>primary : Symbol(primary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 170, 44)) +>secondary : Symbol(secondary, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 170, 65)) + + i = 0; i < 1; i++) { +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) +>i : Symbol(i, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 56)) + + console.log(primaryA); +>console.log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>console : Symbol(console, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 11)) +>log : Symbol(log, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 0, 22)) +>primaryA : Symbol(primaryA, Decl(sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts, 25, 18)) +} diff --git a/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types new file mode 100644 index 00000000000..aa8c95bae01 --- /dev/null +++ b/tests/baselines/reference/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.types @@ -0,0 +1,1020 @@ +=== tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts === +declare var console: { +>console : { log(msg: any): void; } + + log(msg: any): void; +>log : (msg: any) => void +>msg : any +} +interface Robot { +>Robot : Robot + + name: string; +>name : string + + skill: string; +>skill : string +} + +interface MultiRobot { +>MultiRobot : MultiRobot + + name: string; +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } + + primary?: string; +>primary : string + + secondary?: string; +>secondary : string + + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +>robot : Robot +>Robot : Robot +>{ name: "mower", skill: "mowing" } : { name: string; skill: string; } +>name : string +>"mower" : string +>skill : string +>"mowing" : string + +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +>multiRobot : MultiRobot +>MultiRobot : MultiRobot +>{ name: "mower", skills: { primary: "mowing", secondary: "none" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"mower" : string +>skills : { primary: string; secondary: string; } +>{ primary: "mowing", secondary: "none" } : { primary: string; secondary: string; } +>primary : string +>"mowing" : string +>secondary : string +>"none" : string + +function getRobot() { +>getRobot : () => Robot + + return robot; +>robot : Robot +} +function getMultiRobot() { +>getMultiRobot : () => MultiRobot + + return multiRobot; +>multiRobot : MultiRobot +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +>nameA : string +>primaryA : string +>secondaryA : string +>i : number +>skillA : string + +let name: string, primary: string, secondary: string, skill: string; +>name : string +>primary : string +>secondary : string +>skill : string + +for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { +>{name: nameA = "noName" } = robot, i = 0 : number +>{name: nameA = "noName" } = robot : Robot +>{name: nameA = "noName" } : { name?: string; } +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { +>{name: nameA = "noName" } = getRobot(), i = 0 : number +>{name: nameA = "noName" } = getRobot() : Robot +>{name: nameA = "noName" } : { name?: string; } +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{name: nameA = "noName" } = { name: "trimmer", skill: "trimming" } : Robot +>{name: nameA = "noName" } : { name?: string; } +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot, i = 0 : number +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot : MultiRobot +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} : { skills?: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot(), i = 0 : number +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot() : MultiRobot +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} : { skills?: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} : { skills?: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for ({ name = "noName" } = robot, i = 0; i < 1; i++) { +>{ name = "noName" } = robot, i = 0 : number +>{ name = "noName" } = robot : Robot +>{ name = "noName" } : { name?: string; } +>name : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { +>{ name = "noName" } = getRobot(), i = 0 : number +>{ name = "noName" } = getRobot() : Robot +>{ name = "noName" } : { name?: string; } +>name : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{ name = "noName" } = { name: "trimmer", skill: "trimming" } : Robot +>{ name = "noName" } : { name?: string; } +>name : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot, i = 0 : number +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot : MultiRobot +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} : { skills?: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot(), i = 0 : number +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot() : MultiRobot +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} : { skills?: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} : { skills?: { primary?: string; secondary?: string; }; } + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + + +for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { +>{name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0 : number +>{name: nameA = "noName", skill: skillA = "skill" } = robot : Robot +>{name: nameA = "noName", skill: skillA = "skill" } : { name?: string; skill?: string; } +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string +>skill : string +>skillA = "skill" : string +>skillA : string +>"skill" : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { +>{name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0 : number +>{name: nameA = "noName", skill: skillA = "skill" } = getRobot() : Robot +>{name: nameA = "noName", skill: skillA = "skill" } : { name?: string; skill?: string; } +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string +>skill : string +>skillA = "skill" : string +>skillA : string +>"skill" : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" } : Robot +>{name: nameA = "noName", skill: skillA = "skill" } : { name?: string; skill?: string; } +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string +>skill : string +>skillA = "skill" : string +>skillA : string +>"skill" : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot, i = 0 : number +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot : MultiRobot +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } + + name: nameA = "noName", +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot(), i = 0 : number +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot() : MultiRobot +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } + + name: nameA = "noName", +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ name: nameA = "noName", skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } + + name: nameA = "noName", +>name : string +>nameA = "noName" : string +>nameA : string +>"noName" : string + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary: primaryA = "primary", secondary: secondaryA = "secondary" } : { primary?: string; secondary?: string; } + + primary: primaryA = "primary", +>primary : string +>primaryA = "primary" : string +>primaryA : string +>"primary" : string + + secondary: secondaryA = "secondary" +>secondary : string +>secondaryA = "secondary" : string +>secondaryA : string +>"secondary" : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} + +for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { +>{ name = "noName", skill = "skill" } = robot, i = 0 : number +>{ name = "noName", skill = "skill" } = robot : Robot +>{ name = "noName", skill = "skill" } : { name?: string; skill?: string; } +>name : string +>skill : string +>robot : Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { +>{ name = "noName", skill = "skill" } = getRobot(), i = 0 : number +>{ name = "noName", skill = "skill" } = getRobot() : Robot +>{ name = "noName", skill = "skill" } : { name?: string; skill?: string; } +>name : string +>skill : string +>getRobot() : Robot +>getRobot : () => Robot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +>{ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0 : number +>{ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" } : Robot +>{ name = "noName", skill = "skill" } : { name?: string; skill?: string; } +>name : string +>skill : string +>{ name: "trimmer", skill: "trimming" } : Robot +>Robot : Robot +>{ name: "trimmer", skill: "trimming" } : { name: string; skill: string; } +>name : string +>"trimmer" : string +>skill : string +>"trimming" : string +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(nameA); +>console.log(nameA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>nameA : string +} +for ({ +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot, i = 0 : number +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = multiRobot : MultiRobot +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } + + name = "noName", +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = multiRobot, i = 0; i < 1; i++) { +>multiRobot : MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot(), i = 0 : number +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = getMultiRobot() : MultiRobot +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } + + name = "noName", +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = getMultiRobot(), i = 0; i < 1; i++) { +>getMultiRobot() : MultiRobot +>getMultiRobot : () => MultiRobot +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} +for ({ +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, i = 0 : number +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>{ name = "noName", skills: { primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" }} : { name?: string; skills?: { primary?: string; secondary?: string; }; } + + name = "noName", +>name : string + + skills: { +>skills : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } = { primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>{ primary = "primary", secondary = "secondary" } : { primary?: string; secondary?: string; } + + primary = "primary", +>primary : string + + secondary = "secondary" +>secondary : string + + } = { primary: "none", secondary: "none" } +>{ primary: "none", secondary: "none" } : { primary?: string; secondary?: string; } +>primary : string +>"none" : string +>secondary : string +>"none" : string + +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : MultiRobot +>MultiRobot : MultiRobot +>{ name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } : { name: string; skills: { primary: string; secondary: string; }; } +>name : string +>"trimmer" : string +>skills : { primary: string; secondary: string; } +>{ primary: "trimming", secondary: "edging" } : { primary: string; secondary: string; } +>primary : string +>"trimming" : string +>secondary : string +>"edging" : string + + i = 0; i < 1; i++) { +>i = 0 : number +>i : number +>0 : number +>i < 1 : boolean +>i : number +>1 : number +>i++ : number +>i : number + + console.log(primaryA); +>console.log(primaryA) : void +>console.log : (msg: any) => void +>console : { log(msg: any): void; } +>log : (msg: any) => void +>primaryA : string +} diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..36c3c8cb48c --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues.ts @@ -0,0 +1,109 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, string[]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for (let [, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let + [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] + ] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for (let [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..4e0e5d053b3 --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForArrayBindingPatternDefaultValues2.ts @@ -0,0 +1,115 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +type Robot = [number, string, string]; +type MultiSkilledRobot = [string, [string, string]]; + +let robotA: Robot = [1, "mower", "mowing"]; +function getRobot() { + return robotA; +} + +let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +function getMultiRobot() { + return multiRobotA; +} + +let nameA: string, primarySkillA: string, secondarySkillA: string; +let numberB: number, nameB: string; +let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +let i: number; + +for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primarySkillA); +} +for ([, [ + primarySkillA = "primary", + secondarySkillA = "secondary" +] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(primarySkillA); +} + +for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + console.log(numberB); +} +for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberB); +} +for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameB); +} +for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameB); +} + +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + console.log(nameA2); +} +for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(nameA2); +} +for (let + [nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] + ] = multiRobotA, i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = getMultiRobot(), i = 0; i < 1; i++) { + console.log(nameMA); +} +for ([nameMA = "noName", + [ + primarySkillA = "primary", + secondarySkillA = "secondary" + ] = ["none", "none"] +] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + console.log(nameMA); +} + +for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + console.log(numberA3); +} +for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + console.log(numberA3); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..22c9ecdf66d --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues.ts @@ -0,0 +1,98 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for (let { + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} \ No newline at end of file diff --git a/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..0240a82c40b --- /dev/null +++ b/tests/cases/compiler/sourceMapValidationDestructuringForObjectBindingPatternDefaultValues2.ts @@ -0,0 +1,175 @@ +// @sourcemap: true +declare var console: { + log(msg: any): void; +} +interface Robot { + name: string; + skill: string; +} + +interface MultiRobot { + name: string; + skills: { + primary?: string; + secondary?: string; + }; +} + +let robot: Robot = { name: "mower", skill: "mowing" }; +let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +function getRobot() { + return robot; +} +function getMultiRobot() { + return multiRobot; +} + +let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +let name: string, primary: string, secondary: string, skill: string; + +for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for ({ name = "noName" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + + +for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name: nameA = "noName", + skills: { + primary: primaryA = "primary", + secondary: secondaryA = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} + +for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + console.log(nameA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = multiRobot, i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = getMultiRobot(), i = 0; i < 1; i++) { + console.log(primaryA); +} +for ({ + name = "noName", + skills: { + primary = "primary", + secondary = "secondary" + } = { primary: "none", secondary: "none" } +} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + i = 0; i < 1; i++) { + console.log(primaryA); +} \ No newline at end of file From f0a8bf566c1d3dbe09d2a20ac920b047aa1fd759 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Mon, 14 Dec 2015 18:01:55 +0200 Subject: [PATCH 065/164] add __moduleName to System.register --- 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 f0b49854734..f783c10ba8c 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6992,7 +6992,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(text); } - write(`], function(${exportFunctionForFile}) {`); + write(`], function(${exportFunctionForFile}, __moduleName) {`); writeLine(); increaseIndent(); const startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); From a805b6d8c33e72b74f38857ef4b3075ffd3471dc Mon Sep 17 00:00:00 2001 From: guybedford Date: Mon, 14 Dec 2015 22:16:58 +0200 Subject: [PATCH 066/164] update System.register baseline with __moduleName output --- tests/baselines/reference/aliasesInSystemModule1.js | 2 +- tests/baselines/reference/aliasesInSystemModule2.js | 2 +- .../reference/allowSyntheticDefaultImports2.js | 4 ++-- .../reference/allowSyntheticDefaultImports3.js | 4 ++-- .../reference/allowSyntheticDefaultImports5.js | 2 +- .../reference/allowSyntheticDefaultImports6.js | 2 +- .../reference/anonymousDefaultExportsSystem.js | 4 ++-- tests/baselines/reference/capturedLetConstInLoop4.js | 2 +- .../decoratedDefaultExportsGetExportedSystem.js | 4 ++-- .../reference/defaultExportsGetExportedSystem.js | 4 ++-- tests/baselines/reference/es5-system.js | 2 +- .../reference/exportNonInitializedVariablesSystem.js | 2 +- tests/baselines/reference/exportStarForValues10.js | 6 +++--- tests/baselines/reference/exportStarForValues6.js | 4 ++-- .../reference/exportStarForValuesInSystem.js | 4 ++-- .../reference/isolatedModulesPlainFile-System.js | 2 +- tests/baselines/reference/modulePrologueSystem.js | 2 +- .../reference/outFilerootDirModuleNamesSystem.js | 4 ++-- tests/baselines/reference/outModuleConcatSystem.js | 4 ++-- .../reference/outModuleConcatSystem.sourcemap.txt | 4 ++-- tests/baselines/reference/systemExportAssignment.js | 2 +- tests/baselines/reference/systemExportAssignment2.js | 4 ++-- tests/baselines/reference/systemExportAssignment3.js | 2 +- tests/baselines/reference/systemModule1.js | 2 +- tests/baselines/reference/systemModule10.js | 2 +- tests/baselines/reference/systemModule10_ES5.js | 2 +- tests/baselines/reference/systemModule11.js | 10 +++++----- tests/baselines/reference/systemModule12.js | 2 +- tests/baselines/reference/systemModule13.js | 2 +- tests/baselines/reference/systemModule14.js | 2 +- tests/baselines/reference/systemModule15.js | 8 ++++---- tests/baselines/reference/systemModule16.js | 2 +- tests/baselines/reference/systemModule17.js | 4 ++-- tests/baselines/reference/systemModule2.js | 2 +- tests/baselines/reference/systemModule3.js | 8 ++++---- tests/baselines/reference/systemModule4.js | 2 +- tests/baselines/reference/systemModule5.js | 2 +- tests/baselines/reference/systemModule6.js | 2 +- tests/baselines/reference/systemModule7.js | 2 +- tests/baselines/reference/systemModule8.js | 2 +- tests/baselines/reference/systemModule9.js | 2 +- .../reference/systemModuleAmbientDeclarations.js | 12 ++++++------ tests/baselines/reference/systemModuleConstEnums.js | 2 +- .../systemModuleConstEnumsSeparateCompilation.js | 2 +- .../reference/systemModuleDeclarationMerging.js | 2 +- .../baselines/reference/systemModuleExportDefault.js | 8 ++++---- .../systemModuleNonTopLevelModuleMembers.js | 2 +- .../reference/systemModuleWithSuperClass.js | 4 ++-- tests/cases/unittests/transpile.ts | 4 ++-- 49 files changed, 83 insertions(+), 83 deletions(-) diff --git a/tests/baselines/reference/aliasesInSystemModule1.js b/tests/baselines/reference/aliasesInSystemModule1.js index 43037c7634c..11f02c18ea4 100644 --- a/tests/baselines/reference/aliasesInSystemModule1.js +++ b/tests/baselines/reference/aliasesInSystemModule1.js @@ -17,7 +17,7 @@ module M { //// [aliasesInSystemModule1.js] -System.register(['foo'], function(exports_1) { +System.register(['foo'], function(exports_1, __moduleName) { "use strict"; var alias; var cls, cls2, x, y, z, M; diff --git a/tests/baselines/reference/aliasesInSystemModule2.js b/tests/baselines/reference/aliasesInSystemModule2.js index 7effb2721be..7378536e2fd 100644 --- a/tests/baselines/reference/aliasesInSystemModule2.js +++ b/tests/baselines/reference/aliasesInSystemModule2.js @@ -16,7 +16,7 @@ module M { } //// [aliasesInSystemModule2.js] -System.register(["foo"], function(exports_1) { +System.register(["foo"], function(exports_1, __moduleName) { "use strict"; var foo_1; var cls, cls2, x, y, z, M; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports2.js b/tests/baselines/reference/allowSyntheticDefaultImports2.js index fcc029415cf..0480250d71a 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports2.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports2.js @@ -10,7 +10,7 @@ export class Foo { } //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var Foo; return { @@ -26,7 +26,7 @@ System.register([], function(exports_1) { } }); //// [a.js] -System.register(["./b"], function(exports_1) { +System.register(["./b"], function(exports_1, __moduleName) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports3.js b/tests/baselines/reference/allowSyntheticDefaultImports3.js index b14d25dbd61..adf85792fd9 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports3.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports3.js @@ -11,7 +11,7 @@ export class Foo { //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var Foo; return { @@ -27,7 +27,7 @@ System.register([], function(exports_1) { } }); //// [a.js] -System.register(["./b"], function(exports_1) { +System.register(["./b"], function(exports_1, __moduleName) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports5.js b/tests/baselines/reference/allowSyntheticDefaultImports5.js index c9121512b61..d0dfdcb76d1 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports5.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports5.js @@ -12,7 +12,7 @@ export var x = new Foo(); //// [a.js] -System.register(["./b"], function(exports_1) { +System.register(["./b"], function(exports_1, __moduleName) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports6.js b/tests/baselines/reference/allowSyntheticDefaultImports6.js index 64d52e70af9..eaafb5ee276 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports6.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports6.js @@ -12,7 +12,7 @@ export var x = new Foo(); //// [a.js] -System.register(["./b"], function(exports_1) { +System.register(["./b"], function(exports_1, __moduleName) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/anonymousDefaultExportsSystem.js b/tests/baselines/reference/anonymousDefaultExportsSystem.js index 74913a57a99..4ee7e2a11bc 100644 --- a/tests/baselines/reference/anonymousDefaultExportsSystem.js +++ b/tests/baselines/reference/anonymousDefaultExportsSystem.js @@ -7,7 +7,7 @@ export default class {} export default function() {} //// [a.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var default_1; return { @@ -20,7 +20,7 @@ System.register([], function(exports_1) { } }); //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function default_1() { } exports_1("default", default_1); diff --git a/tests/baselines/reference/capturedLetConstInLoop4.js b/tests/baselines/reference/capturedLetConstInLoop4.js index 724c84fe04f..c2d2c998616 100644 --- a/tests/baselines/reference/capturedLetConstInLoop4.js +++ b/tests/baselines/reference/capturedLetConstInLoop4.js @@ -144,7 +144,7 @@ for (const y = 0; y < 1;) { //// [capturedLetConstInLoop4.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var v0, v00, v1, v2, v3, v4, v5, v6, v7, v8, v0_c, v00_c, v1_c, v2_c, v3_c, v4_c, v5_c, v6_c, v7_c, v8_c; //======let diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js index ed322374799..be20d5ffc12 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js @@ -13,7 +13,7 @@ var decorator: ClassDecorator; export default class {} //// [a.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -35,7 +35,7 @@ System.register([], function(exports_1) { } }); //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; diff --git a/tests/baselines/reference/defaultExportsGetExportedSystem.js b/tests/baselines/reference/defaultExportsGetExportedSystem.js index 67dc47f4bd5..f67ccb6ee23 100644 --- a/tests/baselines/reference/defaultExportsGetExportedSystem.js +++ b/tests/baselines/reference/defaultExportsGetExportedSystem.js @@ -8,7 +8,7 @@ export default function foo() {} //// [a.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var Foo; return { @@ -21,7 +21,7 @@ System.register([], function(exports_1) { } }); //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function foo() { } exports_1("default", foo); diff --git a/tests/baselines/reference/es5-system.js b/tests/baselines/reference/es5-system.js index a9633352b8b..1cd1dac13d1 100644 --- a/tests/baselines/reference/es5-system.js +++ b/tests/baselines/reference/es5-system.js @@ -15,7 +15,7 @@ export default class A //// [es5-system.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var A; return { diff --git a/tests/baselines/reference/exportNonInitializedVariablesSystem.js b/tests/baselines/reference/exportNonInitializedVariablesSystem.js index b5674bf5ce3..53d8a5424ef 100644 --- a/tests/baselines/reference/exportNonInitializedVariablesSystem.js +++ b/tests/baselines/reference/exportNonInitializedVariablesSystem.js @@ -35,7 +35,7 @@ export let h1: D = new D; //// [exportNonInitializedVariablesSystem.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var a, b, c, d, A, e, f, B, C, a1, b1, c1, d1, D, e1, f1, g1, h1; return { diff --git a/tests/baselines/reference/exportStarForValues10.js b/tests/baselines/reference/exportStarForValues10.js index dca5dad9b7a..1149baf8b27 100644 --- a/tests/baselines/reference/exportStarForValues10.js +++ b/tests/baselines/reference/exportStarForValues10.js @@ -13,7 +13,7 @@ export * from "file1"; var x = 1; //// [file0.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var v; return { @@ -24,7 +24,7 @@ System.register([], function(exports_1) { } }); //// [file1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -33,7 +33,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register(["file0"], function(exports_1) { +System.register(["file0"], function(exports_1, __moduleName) { "use strict"; var x; function exportStar_1(m) { diff --git a/tests/baselines/reference/exportStarForValues6.js b/tests/baselines/reference/exportStarForValues6.js index 69357d87ee0..f2257277630 100644 --- a/tests/baselines/reference/exportStarForValues6.js +++ b/tests/baselines/reference/exportStarForValues6.js @@ -9,7 +9,7 @@ export * from "file1" export var x = 1; //// [file1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -18,7 +18,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x; return { diff --git a/tests/baselines/reference/exportStarForValuesInSystem.js b/tests/baselines/reference/exportStarForValuesInSystem.js index a33465f7e2e..33ca1f8b24d 100644 --- a/tests/baselines/reference/exportStarForValuesInSystem.js +++ b/tests/baselines/reference/exportStarForValuesInSystem.js @@ -9,7 +9,7 @@ export * from "file1" var x = 1; //// [file1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -18,7 +18,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x; return { diff --git a/tests/baselines/reference/isolatedModulesPlainFile-System.js b/tests/baselines/reference/isolatedModulesPlainFile-System.js index b66bd497810..44eec5161c0 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-System.js +++ b/tests/baselines/reference/isolatedModulesPlainFile-System.js @@ -5,7 +5,7 @@ run(1); //// [isolatedModulesPlainFile-System.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/modulePrologueSystem.js b/tests/baselines/reference/modulePrologueSystem.js index 80a46fb27fc..04519898166 100644 --- a/tests/baselines/reference/modulePrologueSystem.js +++ b/tests/baselines/reference/modulePrologueSystem.js @@ -4,7 +4,7 @@ export class Foo {} //// [modulePrologueSystem.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var Foo; return { diff --git a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js index 298ad52689f..e6ac346dc7f 100644 --- a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js +++ b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js @@ -11,7 +11,7 @@ export default function foo() { new Foo(); } //// [output.js] -System.register("b", ["a"], function(exports_1) { +System.register("b", ["a"], function(exports_1, __moduleName) { "use strict"; var a_1; function foo() { new a_1.default(); } @@ -25,7 +25,7 @@ System.register("b", ["a"], function(exports_1) { } } }); -System.register("a", ["b"], function(exports_2) { +System.register("a", ["b"], function(exports_2, __moduleName) { "use strict"; var b_1; var Foo; diff --git a/tests/baselines/reference/outModuleConcatSystem.js b/tests/baselines/reference/outModuleConcatSystem.js index d4552d33167..bd2753c6d5f 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("ref/a", [], function(exports_1) { +System.register("ref/a", [], function(exports_1, __moduleName) { "use strict"; var A; return { @@ -29,7 +29,7 @@ System.register("ref/a", [], function(exports_1) { } } }); -System.register("b", ["ref/a"], function(exports_2) { +System.register("b", ["ref/a"], function(exports_2, __moduleName) { "use strict"; var a_1; var B; diff --git a/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt b/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt index e3f521c828c..0b1f9cc5294 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("ref/a", [], function(exports_1) { +>>>System.register("ref/a", [], function(exports_1, __moduleName) { >>> "use strict"; >>> var A; >>> return { @@ -82,7 +82,7 @@ sourceFile:tests/cases/compiler/b.ts >>> } >>> } >>>}); ->>>System.register("b", ["ref/a"], function(exports_2) { +>>>System.register("b", ["ref/a"], function(exports_2, __moduleName) { >>> "use strict"; >>> var a_1; >>> var B; diff --git a/tests/baselines/reference/systemExportAssignment.js b/tests/baselines/reference/systemExportAssignment.js index 72962cf835c..f8b50cb580f 100644 --- a/tests/baselines/reference/systemExportAssignment.js +++ b/tests/baselines/reference/systemExportAssignment.js @@ -10,7 +10,7 @@ import * as a from "a"; //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemExportAssignment2.js b/tests/baselines/reference/systemExportAssignment2.js index 0f4dd712493..6a5c0e8f397 100644 --- a/tests/baselines/reference/systemExportAssignment2.js +++ b/tests/baselines/reference/systemExportAssignment2.js @@ -10,7 +10,7 @@ import * as a from "a"; //// [a.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var a; return { @@ -21,7 +21,7 @@ System.register([], function(exports_1) { } }); //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemExportAssignment3.js b/tests/baselines/reference/systemExportAssignment3.js index ca2492a54e1..9c6d3cdbb2f 100644 --- a/tests/baselines/reference/systemExportAssignment3.js +++ b/tests/baselines/reference/systemExportAssignment3.js @@ -12,7 +12,7 @@ import * as a from "a"; //// [b.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemModule1.js b/tests/baselines/reference/systemModule1.js index 52f3b482069..749d8170dcb 100644 --- a/tests/baselines/reference/systemModule1.js +++ b/tests/baselines/reference/systemModule1.js @@ -3,7 +3,7 @@ export var x = 1; //// [systemModule1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x; return { diff --git a/tests/baselines/reference/systemModule10.js b/tests/baselines/reference/systemModule10.js index ac32c4948e7..f23e7ca1d76 100644 --- a/tests/baselines/reference/systemModule10.js +++ b/tests/baselines/reference/systemModule10.js @@ -10,7 +10,7 @@ export {n2} export {n2 as n3} //// [systemModule10.js] -System.register(['file1', 'file2'], function(exports_1) { +System.register(['file1', 'file2'], function(exports_1, __moduleName) { "use strict"; var file1_1, n2; return { diff --git a/tests/baselines/reference/systemModule10_ES5.js b/tests/baselines/reference/systemModule10_ES5.js index 0c98df6ba99..3d63e092df4 100644 --- a/tests/baselines/reference/systemModule10_ES5.js +++ b/tests/baselines/reference/systemModule10_ES5.js @@ -10,7 +10,7 @@ export {n2} export {n2 as n3} //// [systemModule10_ES5.js] -System.register(['file1', 'file2'], function(exports_1) { +System.register(['file1', 'file2'], function(exports_1, __moduleName) { "use strict"; var file1_1, n2; return { diff --git a/tests/baselines/reference/systemModule11.js b/tests/baselines/reference/systemModule11.js index 92b0576b919..1e755a86541 100644 --- a/tests/baselines/reference/systemModule11.js +++ b/tests/baselines/reference/systemModule11.js @@ -42,7 +42,7 @@ export * from 'a'; //// [file1.js] // set of tests cases that checks generation of local storage for exported names -System.register(['bar'], function(exports_1) { +System.register(['bar'], function(exports_1, __moduleName) { "use strict"; var x; function foo() { } @@ -68,7 +68,7 @@ System.register(['bar'], function(exports_1) { } }); //// [file2.js] -System.register(['bar'], function(exports_1) { +System.register(['bar'], function(exports_1, __moduleName) { "use strict"; var x, y; var exportedNames_1 = { @@ -94,7 +94,7 @@ System.register(['bar'], function(exports_1) { } }); //// [file3.js] -System.register(['a', 'bar'], function(exports_1) { +System.register(['a', 'bar'], function(exports_1, __moduleName) { "use strict"; function foo() { } exports_1("default", foo); @@ -125,7 +125,7 @@ System.register(['a', 'bar'], function(exports_1) { } }); //// [file4.js] -System.register(['a'], function(exports_1) { +System.register(['a'], function(exports_1, __moduleName) { "use strict"; var x, z, z1; function foo() { } @@ -147,7 +147,7 @@ System.register(['a'], function(exports_1) { } }); //// [file5.js] -System.register(['a'], function(exports_1) { +System.register(['a'], function(exports_1, __moduleName) { "use strict"; function foo() { } function exportStar_1(m) { diff --git a/tests/baselines/reference/systemModule12.js b/tests/baselines/reference/systemModule12.js index d8961c3b001..04252396926 100644 --- a/tests/baselines/reference/systemModule12.js +++ b/tests/baselines/reference/systemModule12.js @@ -5,7 +5,7 @@ import n from 'file1' //// [systemModule12.js] -System.register("NamedModule", [], function(exports_1) { +System.register("NamedModule", [], function(exports_1, __moduleName) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemModule13.js b/tests/baselines/reference/systemModule13.js index 0b81a946de4..509534ee0fe 100644 --- a/tests/baselines/reference/systemModule13.js +++ b/tests/baselines/reference/systemModule13.js @@ -5,7 +5,7 @@ export const {a: z0, b: {c: z1}} = {a: true, b: {c: "123"}}; for ([x] of [[1]]) {} //// [systemModule13.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x, y, z, z0, z1; return { diff --git a/tests/baselines/reference/systemModule14.js b/tests/baselines/reference/systemModule14.js index 2ec8fc600f4..af78af7f6b1 100644 --- a/tests/baselines/reference/systemModule14.js +++ b/tests/baselines/reference/systemModule14.js @@ -11,7 +11,7 @@ var x = 1; export {foo as b} //// [systemModule14.js] -System.register(["foo"], function(exports_1) { +System.register(["foo"], function(exports_1, __moduleName) { "use strict"; var foo_1; var x; diff --git a/tests/baselines/reference/systemModule15.js b/tests/baselines/reference/systemModule15.js index f8dc11b0ac7..f347ad59671 100644 --- a/tests/baselines/reference/systemModule15.js +++ b/tests/baselines/reference/systemModule15.js @@ -34,7 +34,7 @@ export default value; export var value2 = "v"; //// [file3.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var value; return { @@ -46,7 +46,7 @@ System.register([], function(exports_1) { } }); //// [file4.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var value2; return { @@ -57,7 +57,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register(["./file3"], function(exports_1) { +System.register(["./file3"], function(exports_1, __moduleName) { "use strict"; var moduleCStar, file3_1, file3_2; return { @@ -75,7 +75,7 @@ System.register(["./file3"], function(exports_1) { } }); //// [file1.js] -System.register(["./file2"], function(exports_1) { +System.register(["./file2"], function(exports_1, __moduleName) { "use strict"; var moduleB; return { diff --git a/tests/baselines/reference/systemModule16.js b/tests/baselines/reference/systemModule16.js index 76fb85cd3ae..0986218b65d 100644 --- a/tests/baselines/reference/systemModule16.js +++ b/tests/baselines/reference/systemModule16.js @@ -13,7 +13,7 @@ x,y,a1,b1,d1; //// [systemModule16.js] -System.register(["foo", "bar"], function(exports_1) { +System.register(["foo", "bar"], function(exports_1, __moduleName) { "use strict"; var x, y, foo_1; var exportedNames_1 = { diff --git a/tests/baselines/reference/systemModule17.js b/tests/baselines/reference/systemModule17.js index 6daa119d287..b441004408b 100644 --- a/tests/baselines/reference/systemModule17.js +++ b/tests/baselines/reference/systemModule17.js @@ -42,7 +42,7 @@ export {II}; export {II as II1}; //// [f1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var A; return { @@ -58,7 +58,7 @@ System.register([], function(exports_1) { } }); //// [f2.js] -System.register(["f1"], function(exports_1) { +System.register(["f1"], function(exports_1, __moduleName) { "use strict"; var f1_1; var x, N, IX; diff --git a/tests/baselines/reference/systemModule2.js b/tests/baselines/reference/systemModule2.js index ee3dfd327ec..78be2c008e4 100644 --- a/tests/baselines/reference/systemModule2.js +++ b/tests/baselines/reference/systemModule2.js @@ -4,7 +4,7 @@ var x = 1; export = x; //// [systemModule2.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x; return { diff --git a/tests/baselines/reference/systemModule3.js b/tests/baselines/reference/systemModule3.js index dbef74f3036..9ccc5ea7894 100644 --- a/tests/baselines/reference/systemModule3.js +++ b/tests/baselines/reference/systemModule3.js @@ -18,7 +18,7 @@ export default class C {} export default class {} //// [file1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function default_1() { } exports_1("default", default_1); @@ -29,7 +29,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function f() { } exports_1("default", f); @@ -40,7 +40,7 @@ System.register([], function(exports_1) { } }); //// [file3.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var C; return { @@ -56,7 +56,7 @@ System.register([], function(exports_1) { } }); //// [file4.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var default_1; return { diff --git a/tests/baselines/reference/systemModule4.js b/tests/baselines/reference/systemModule4.js index 192c87d49ea..526ee5d2c3a 100644 --- a/tests/baselines/reference/systemModule4.js +++ b/tests/baselines/reference/systemModule4.js @@ -4,7 +4,7 @@ export var x = 1; export var y; //// [systemModule4.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x, y; return { diff --git a/tests/baselines/reference/systemModule5.js b/tests/baselines/reference/systemModule5.js index 4a455f25b13..6d6a8e52823 100644 --- a/tests/baselines/reference/systemModule5.js +++ b/tests/baselines/reference/systemModule5.js @@ -4,7 +4,7 @@ export function foo() {} //// [systemModule5.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function foo() { } exports_1("foo", foo); diff --git a/tests/baselines/reference/systemModule6.js b/tests/baselines/reference/systemModule6.js index 51c8fbc68fb..d93b1b861e0 100644 --- a/tests/baselines/reference/systemModule6.js +++ b/tests/baselines/reference/systemModule6.js @@ -7,7 +7,7 @@ function foo() { //// [systemModule6.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var C; function foo() { diff --git a/tests/baselines/reference/systemModule7.js b/tests/baselines/reference/systemModule7.js index d76d86a3b0f..6abf76cf075 100644 --- a/tests/baselines/reference/systemModule7.js +++ b/tests/baselines/reference/systemModule7.js @@ -11,7 +11,7 @@ export module M { } //// [systemModule7.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var M; return { diff --git a/tests/baselines/reference/systemModule8.js b/tests/baselines/reference/systemModule8.js index b6cdd677f00..6d48a4a9d45 100644 --- a/tests/baselines/reference/systemModule8.js +++ b/tests/baselines/reference/systemModule8.js @@ -31,7 +31,7 @@ export const {a: z0, b: {c: z1}} = {a: true, b: {c: "123"}}; for ([x] of [[1]]) {} //// [systemModule8.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x, y, z0, z1; function foo() { diff --git a/tests/baselines/reference/systemModule9.js b/tests/baselines/reference/systemModule9.js index 137dd019a02..4804a08fd39 100644 --- a/tests/baselines/reference/systemModule9.js +++ b/tests/baselines/reference/systemModule9.js @@ -22,7 +22,7 @@ export {x}; export {y as z}; //// [systemModule9.js] -System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'], function(exports_1) { +System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'], function(exports_1, __moduleName) { "use strict"; var ns, file2_1, file3_1, file5_1, ns3; var x, y; diff --git a/tests/baselines/reference/systemModuleAmbientDeclarations.js b/tests/baselines/reference/systemModuleAmbientDeclarations.js index 9bdde23a842..35e48fe2aff 100644 --- a/tests/baselines/reference/systemModuleAmbientDeclarations.js +++ b/tests/baselines/reference/systemModuleAmbientDeclarations.js @@ -29,7 +29,7 @@ export declare module M { var v: number; } //// [file1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var promise, foo, c, e; return { @@ -44,7 +44,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -53,7 +53,7 @@ System.register([], function(exports_1) { } }); //// [file3.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -62,7 +62,7 @@ System.register([], function(exports_1) { } }); //// [file4.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -71,7 +71,7 @@ System.register([], function(exports_1) { } }); //// [file5.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], @@ -80,7 +80,7 @@ System.register([], function(exports_1) { } }); //// [file6.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemModuleConstEnums.js b/tests/baselines/reference/systemModuleConstEnums.js index 8b8707768d9..abcd9ca5802 100644 --- a/tests/baselines/reference/systemModuleConstEnums.js +++ b/tests/baselines/reference/systemModuleConstEnums.js @@ -13,7 +13,7 @@ module M { } //// [systemModuleConstEnums.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function foo() { use(0 /* X */); diff --git a/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js b/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js index 8466d399ac9..5eaa354bc2a 100644 --- a/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js +++ b/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js @@ -13,7 +13,7 @@ module M { } //// [systemModuleConstEnumsSeparateCompilation.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var TopLevelConstEnum, M; function foo() { diff --git a/tests/baselines/reference/systemModuleDeclarationMerging.js b/tests/baselines/reference/systemModuleDeclarationMerging.js index 5ed029a769a..68dec6f3805 100644 --- a/tests/baselines/reference/systemModuleDeclarationMerging.js +++ b/tests/baselines/reference/systemModuleDeclarationMerging.js @@ -10,7 +10,7 @@ export enum E {} export module E { var x; } //// [systemModuleDeclarationMerging.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var F, C, E; function F() { } diff --git a/tests/baselines/reference/systemModuleExportDefault.js b/tests/baselines/reference/systemModuleExportDefault.js index cf1a99a4ad7..05e23840a51 100644 --- a/tests/baselines/reference/systemModuleExportDefault.js +++ b/tests/baselines/reference/systemModuleExportDefault.js @@ -16,7 +16,7 @@ export default class C {} //// [file1.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function default_1() { } exports_1("default", default_1); @@ -27,7 +27,7 @@ System.register([], function(exports_1) { } }); //// [file2.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; function foo() { } exports_1("default", foo); @@ -38,7 +38,7 @@ System.register([], function(exports_1) { } }); //// [file3.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var default_1; return { @@ -54,7 +54,7 @@ System.register([], function(exports_1) { } }); //// [file4.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var C; return { diff --git a/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js b/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js index ee9858a7fec..3bce3b662ae 100644 --- a/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js +++ b/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js @@ -13,7 +13,7 @@ export module TopLevelModule2 { } //// [systemModuleNonTopLevelModuleMembers.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var TopLevelClass, TopLevelModule, TopLevelEnum, TopLevelModule2; function TopLevelFunction() { } diff --git a/tests/baselines/reference/systemModuleWithSuperClass.js b/tests/baselines/reference/systemModuleWithSuperClass.js index fe9c2742f2d..21b262fd217 100644 --- a/tests/baselines/reference/systemModuleWithSuperClass.js +++ b/tests/baselines/reference/systemModuleWithSuperClass.js @@ -13,7 +13,7 @@ export class Bar extends Foo { } //// [foo.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var Foo; return { @@ -29,7 +29,7 @@ System.register([], function(exports_1) { } }); //// [bar.js] -System.register(['./foo'], function(exports_1) { +System.register(['./foo'], function(exports_1, __moduleName) { "use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; diff --git a/tests/cases/unittests/transpile.ts b/tests/cases/unittests/transpile.ts index 513d37673bb..882b4e2094b 100644 --- a/tests/cases/unittests/transpile.ts +++ b/tests/cases/unittests/transpile.ts @@ -134,7 +134,7 @@ var x = 0;`, it("Sets module name", () => { let output = - `System.register("NamedModule", [], function(exports_1) {\n "use strict";\n var x;\n` + + `System.register("NamedModule", [], function(exports_1, __moduleName) {\n "use strict";\n var x;\n` + ` return {\n` + ` setters:[],\n` + ` execute: function() {\n` + @@ -159,7 +159,7 @@ var x = 0;`, `declare function use(a: any);\n` + `use(foo);` let output = - `System.register(["SomeOtherName"], function(exports_1) {\n` + + `System.register(["SomeOtherName"], function(exports_1, __moduleName) {\n` + ` "use strict";\n` + ` var SomeName_1;\n` + ` return {\n` + From c7ae143e62c53fc578c0cf98dc4e4f2d8e73bbee Mon Sep 17 00:00:00 2001 From: Yui T Date: Mon, 14 Dec 2015 15:03:16 -0800 Subject: [PATCH 067/164] Fix up fourslash test --- .../cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts b/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts index 43312ade6b2..1b745f6e418 100644 --- a/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts +++ b/tests/cases/fourslash/tsxCompletionOnOpeningTagWithoutJSX1.ts @@ -1,8 +1,7 @@ /// //@Filename: file.tsx -//// var x =
Date: Thu, 17 Dec 2015 14:00:34 -0800 Subject: [PATCH 068/164] Make changes to baselining breakpoint validation of current file to use default baseline name --- src/harness/fourslash.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 24f3319285b..118a430cb49 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -1089,9 +1089,15 @@ namespace FourSlash { } public baselineCurrentFileBreakpointLocations() { + let baselineFile = this.testData.globalOptions[metadataOptionNames.baselineFile]; + if (!baselineFile) { + baselineFile = this.activeFile.fileName.replace(this.basePath + "/breakpointValidation", "bpSpan"); + baselineFile = baselineFile.replace(".ts", ".baseline"); + + } Harness.Baseline.runBaseline( "Breakpoint Locations for " + this.activeFile.fileName, - this.testData.globalOptions[metadataOptionNames.baselineFile], + baselineFile, () => { return this.baselineCurrentFileLocations(pos => this.getBreakpointStatementLocation(pos)); }, From 00e253ad883f8db4355f4e21c3709f2b47fff558 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Dec 2015 14:00:56 -0800 Subject: [PATCH 069/164] Add test cases for variable statements with destructuring breakpoint validation --- ...panDestructuringVariableStatement.baseline | 99 ++++++ ...anDestructuringVariableStatement1.baseline | 197 +++++++++++ ...ingVariableStatementDefaultValues.baseline | 99 ++++++ ...atementNestedObjectBindingPattern.baseline | 113 ++++++ ...ctBindingPatternWithDefaultValues.baseline | 329 ++++++++++++++++++ ...alidationDestructuringVariableStatement.ts | 22 ++ ...lidationDestructuringVariableStatement1.ts | 30 ++ ...ructuringVariableStatementDefaultValues.ts | 22 ++ ...ableStatementNestedObjectBindingPattern.ts | 26 ++ ...edObjectBindingPatternWithDefaultValues.ts | 43 +++ 10 files changed, 980 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatement.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatement1.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementDefaultValues.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline new file mode 100644 index 00000000000..b554d4b969b --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline @@ -0,0 +1,99 @@ + +1 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (0 to 17) SpanInfo: undefined +-------------------------------- +2 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (18 to 35) SpanInfo: undefined +-------------------------------- +3 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (36 to 54) SpanInfo: undefined +-------------------------------- +4 >} + + ~~ => Pos: (55 to 56) SpanInfo: undefined +-------------------------------- +5 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (57 to 79) SpanInfo: undefined +-------------------------------- +6 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (80 to 107) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (108 to 109) SpanInfo: undefined +-------------------------------- +8 >var hello = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (110 to 130) SpanInfo: {"start":110,"length":19} + >var hello = "hello" + >:=> (line 8, col 0) to (line 8, col 19) +-------------------------------- +9 >var robotA: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (131 to 186) SpanInfo: {"start":131,"length":54} + >var robotA: Robot = { name: "mower", skill: "mowing" } + >:=> (line 9, col 0) to (line 9, col 54) +-------------------------------- +10 >var robotB: Robot = { name: "trimmer", skill: "trimming" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (187 to 246) SpanInfo: {"start":187,"length":58} + >var robotB: Robot = { name: "trimmer", skill: "trimming" } + >:=> (line 10, col 0) to (line 10, col 58) +-------------------------------- +11 >var { name: nameA } = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (247 to 276) SpanInfo: {"start":247,"length":28} + >var { name: nameA } = robotA + >:=> (line 11, col 0) to (line 11, col 28) +-------------------------------- +12 >var { name: nameB, skill: skillB } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (277 to 321) SpanInfo: {"start":277,"length":43} + >var { name: nameB, skill: skillB } = robotB + >:=> (line 12, col 0) to (line 12, col 43) +-------------------------------- +13 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (322 to 401) SpanInfo: {"start":322,"length":78} + >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } + >:=> (line 13, col 0) to (line 13, col 78) +-------------------------------- +14 >if (nameA == nameB) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (402 to 423) SpanInfo: {"start":402,"length":19} + >if (nameA == nameB) + >:=> (line 14, col 0) to (line 14, col 19) +-------------------------------- +15 > console.log(skillB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (424 to 448) SpanInfo: {"start":428,"length":19} + >console.log(skillB) + >:=> (line 15, col 4) to (line 15, col 23) +-------------------------------- +16 >} + + ~~ => Pos: (449 to 450) SpanInfo: {"start":428,"length":19} + >console.log(skillB) + >:=> (line 15, col 4) to (line 15, col 23) +-------------------------------- +17 >else { + + ~~~~~~~ => Pos: (451 to 457) SpanInfo: {"start":462,"length":18} + >console.log(nameC) + >:=> (line 18, col 4) to (line 18, col 22) +-------------------------------- +18 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (458 to 481) SpanInfo: {"start":462,"length":18} + >console.log(nameC) + >:=> (line 18, col 4) to (line 18, col 22) +-------------------------------- +19 >} + ~ => Pos: (482 to 482) SpanInfo: {"start":462,"length":18} + >console.log(nameC) + >:=> (line 18, col 4) to (line 18, col 22) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline new file mode 100644 index 00000000000..774869428d6 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline @@ -0,0 +1,197 @@ + +1 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (0 to 17) SpanInfo: undefined +-------------------------------- +2 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (18 to 35) SpanInfo: undefined +-------------------------------- +3 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (36 to 54) SpanInfo: undefined +-------------------------------- +4 >} + + ~~ => Pos: (55 to 56) SpanInfo: undefined +-------------------------------- +5 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (57 to 79) SpanInfo: undefined +-------------------------------- +6 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (80 to 107) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (108 to 109) SpanInfo: undefined +-------------------------------- +8 >var hello = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (110 to 130) SpanInfo: {"start":110,"length":19} + >var hello = "hello" + >:=> (line 8, col 0) to (line 8, col 19) +-------------------------------- +9 >var robotA: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (131 to 186) SpanInfo: {"start":131,"length":54} + >var robotA: Robot = { name: "mower", skill: "mowing" } + >:=> (line 9, col 0) to (line 9, col 54) +-------------------------------- +10 >var robotB: Robot = { name: "trimmer", skill: "trimming" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (187 to 246) SpanInfo: {"start":187,"length":58} + >var robotB: Robot = { name: "trimmer", skill: "trimming" } + >:=> (line 10, col 0) to (line 10, col 58) +-------------------------------- +11 >var a: string, { name: nameA } = robotA; + + ~~~~~~~~~~~~~~ => Pos: (247 to 260) SpanInfo: undefined +11 >var a: string, { name: nameA } = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (261 to 287) SpanInfo: {"start":262,"length":24} + >{ name: nameA } = robotA + >:=> (line 11, col 15) to (line 11, col 39) +-------------------------------- +12 >var b: string, { name: nameB, skill: skillB } = robotB; + + ~~~~~~~~~~~~~~ => Pos: (288 to 301) SpanInfo: undefined +12 >var b: string, { name: nameB, skill: skillB } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (302 to 343) SpanInfo: {"start":303,"length":39} + >{ name: nameB, skill: skillB } = robotB + >:=> (line 12, col 15) to (line 12, col 54) +-------------------------------- +13 >var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~ => Pos: (344 to 357) SpanInfo: undefined +13 >var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (358 to 434) SpanInfo: {"start":359,"length":74} + >{ name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } + >:=> (line 13, col 15) to (line 13, col 89) +-------------------------------- +14 > + + ~ => Pos: (435 to 435) SpanInfo: undefined +-------------------------------- +15 >var { name: nameA } = robotA, a = hello; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (436 to 464) SpanInfo: {"start":436,"length":28} + >var { name: nameA } = robotA + >:=> (line 15, col 0) to (line 15, col 28) +15 >var { name: nameA } = robotA, a = hello; + + ~~~~~~~~~~~~ => Pos: (465 to 476) SpanInfo: {"start":466,"length":9} + >a = hello + >:=> (line 15, col 30) to (line 15, col 39) +-------------------------------- +16 >var { name: nameB, skill: skillB } = robotB, b = " hello"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (477 to 520) SpanInfo: {"start":477,"length":43} + >var { name: nameB, skill: skillB } = robotB + >:=> (line 16, col 0) to (line 16, col 43) +16 >var { name: nameB, skill: skillB } = robotB, b = " hello"; + + ~~~~~~~~~~~~~~~=> Pos: (521 to 535) SpanInfo: {"start":522,"length":12} + >b = " hello" + >:=> (line 16, col 45) to (line 16, col 57) +-------------------------------- +17 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (536 to 614) SpanInfo: {"start":536,"length":78} + >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } + >:=> (line 17, col 0) to (line 17, col 78) +17 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; + + ~~~~~~~~~~~~=> Pos: (615 to 626) SpanInfo: {"start":616,"length":9} + >c = hello + >:=> (line 17, col 80) to (line 17, col 89) +-------------------------------- +18 > + + ~ => Pos: (627 to 627) SpanInfo: undefined +-------------------------------- +19 >var a = hello, { name: nameA } = robotA, a1= "hello"; + + ~~~~~~~~~~~~~~ => Pos: (628 to 641) SpanInfo: {"start":628,"length":13} + >var a = hello + >:=> (line 19, col 0) to (line 19, col 13) +19 >var a = hello, { name: nameA } = robotA, a1= "hello"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (642 to 667) SpanInfo: {"start":643,"length":24} + >{ name: nameA } = robotA + >:=> (line 19, col 15) to (line 19, col 39) +19 >var a = hello, { name: nameA } = robotA, a1= "hello"; + + ~~~~~~~~~~~~~~=> Pos: (668 to 681) SpanInfo: {"start":669,"length":11} + >a1= "hello" + >:=> (line 19, col 41) to (line 19, col 52) +-------------------------------- +20 >var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; + + ~~~~~~~~~~~~~~ => Pos: (682 to 695) SpanInfo: {"start":682,"length":13} + >var b = hello + >:=> (line 20, col 0) to (line 20, col 13) +20 >var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (696 to 736) SpanInfo: {"start":697,"length":39} + >{ name: nameB, skill: skillB } = robotB + >:=> (line 20, col 15) to (line 20, col 54) +20 >var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; + + ~~~~~~~~~~~~~~~=> Pos: (737 to 751) SpanInfo: {"start":738,"length":12} + >b1 = "hello" + >:=> (line 20, col 56) to (line 20, col 68) +-------------------------------- +21 >var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; + + ~~~~~~~~~~~~~~ => Pos: (752 to 765) SpanInfo: {"start":752,"length":13} + >var c = hello + >:=> (line 21, col 0) to (line 21, col 13) +21 >var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (766 to 841) SpanInfo: {"start":767,"length":74} + >{ name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } + >:=> (line 21, col 15) to (line 21, col 89) +21 >var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; + + ~~~~~~~~~~~~~=> Pos: (842 to 854) SpanInfo: {"start":843,"length":10} + >c1 = hello + >:=> (line 21, col 91) to (line 21, col 101) +-------------------------------- +22 >if (nameA == nameB) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (855 to 876) SpanInfo: {"start":855,"length":19} + >if (nameA == nameB) + >:=> (line 22, col 0) to (line 22, col 19) +-------------------------------- +23 > console.log(skillB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (877 to 901) SpanInfo: {"start":881,"length":19} + >console.log(skillB) + >:=> (line 23, col 4) to (line 23, col 23) +-------------------------------- +24 >} + + ~~ => Pos: (902 to 903) SpanInfo: {"start":881,"length":19} + >console.log(skillB) + >:=> (line 23, col 4) to (line 23, col 23) +-------------------------------- +25 >else { + + ~~~~~~~ => Pos: (904 to 910) SpanInfo: {"start":915,"length":18} + >console.log(nameC) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +26 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (911 to 934) SpanInfo: {"start":915,"length":18} + >console.log(nameC) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +27 >} + ~ => Pos: (935 to 935) SpanInfo: {"start":915,"length":18} + >console.log(nameC) + >:=> (line 26, col 4) to (line 26, col 22) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline new file mode 100644 index 00000000000..ce6062f70e2 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline @@ -0,0 +1,99 @@ + +1 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (0 to 17) SpanInfo: undefined +-------------------------------- +2 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (18 to 35) SpanInfo: undefined +-------------------------------- +3 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (36 to 54) SpanInfo: undefined +-------------------------------- +4 >} + + ~~ => Pos: (55 to 56) SpanInfo: undefined +-------------------------------- +5 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (57 to 79) SpanInfo: undefined +-------------------------------- +6 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (80 to 107) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (108 to 109) SpanInfo: undefined +-------------------------------- +8 >var hello = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (110 to 130) SpanInfo: {"start":110,"length":19} + >var hello = "hello" + >:=> (line 8, col 0) to (line 8, col 19) +-------------------------------- +9 >var robotA: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (131 to 186) SpanInfo: {"start":131,"length":54} + >var robotA: Robot = { name: "mower", skill: "mowing" } + >:=> (line 9, col 0) to (line 9, col 54) +-------------------------------- +10 >var robotB: Robot = { name: "trimmer", skill: "trimming" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (187 to 246) SpanInfo: {"start":187,"length":58} + >var robotB: Robot = { name: "trimmer", skill: "trimming" } + >:=> (line 10, col 0) to (line 10, col 58) +-------------------------------- +11 >var { name: nameA = "" } = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (247 to 289) SpanInfo: {"start":247,"length":41} + >var { name: nameA = "" } = robotA + >:=> (line 11, col 0) to (line 11, col 41) +-------------------------------- +12 >var { name: nameB = "", skill: skillB = "" } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (290 to 370) SpanInfo: {"start":290,"length":79} + >var { name: nameB = "", skill: skillB = "" } = robotB + >:=> (line 12, col 0) to (line 12, col 79) +-------------------------------- +13 >var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (371 to 486) SpanInfo: {"start":371,"length":114} + >var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" } + >:=> (line 13, col 0) to (line 13, col 114) +-------------------------------- +14 >if (nameA == nameB) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (487 to 508) SpanInfo: {"start":487,"length":19} + >if (nameA == nameB) + >:=> (line 14, col 0) to (line 14, col 19) +-------------------------------- +15 > console.log(skillB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (509 to 533) SpanInfo: {"start":513,"length":19} + >console.log(skillB) + >:=> (line 15, col 4) to (line 15, col 23) +-------------------------------- +16 >} + + ~~ => Pos: (534 to 535) SpanInfo: {"start":513,"length":19} + >console.log(skillB) + >:=> (line 15, col 4) to (line 15, col 23) +-------------------------------- +17 >else { + + ~~~~~~~ => Pos: (536 to 542) SpanInfo: {"start":547,"length":18} + >console.log(nameC) + >:=> (line 18, col 4) to (line 18, col 22) +-------------------------------- +18 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (543 to 566) SpanInfo: {"start":547,"length":18} + >console.log(nameC) + >:=> (line 18, col 4) to (line 18, col 22) +-------------------------------- +19 >} + ~ => Pos: (567 to 567) SpanInfo: {"start":547,"length":18} + >console.log(nameC) + >:=> (line 18, col 4) to (line 18, col 22) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline new file mode 100644 index 00000000000..4878c375bd7 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline @@ -0,0 +1,113 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (53 to 70) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (71 to 88) SpanInfo: undefined +-------------------------------- +6 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (89 to 102) SpanInfo: undefined +-------------------------------- +7 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (103 to 127) SpanInfo: undefined +-------------------------------- +8 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (128 to 154) SpanInfo: undefined +-------------------------------- +9 > }; + + ~~~~~~~ => Pos: (155 to 161) SpanInfo: undefined +-------------------------------- +10 >} + + ~~ => Pos: (162 to 163) SpanInfo: undefined +-------------------------------- +11 >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (164 to 252) SpanInfo: {"start":164,"length":87} + >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 11, col 0) to (line 11, col 87) +-------------------------------- +12 >var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (253 to 347) SpanInfo: {"start":253,"length":93} + >var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } + >:=> (line 12, col 0) to (line 12, col 93) +-------------------------------- +13 > + + ~ => Pos: (348 to 348) SpanInfo: undefined +-------------------------------- +14 >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (349 to 419) SpanInfo: {"start":349,"length":69} + >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA + >:=> (line 14, col 0) to (line 14, col 69) +-------------------------------- +15 >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (420 to 503) SpanInfo: {"start":420,"length":82} + >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB + >:=> (line 15, col 0) to (line 15, col 82) +-------------------------------- +16 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (504 to 659) SpanInfo: {"start":504,"length":154} + >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 16, col 0) to (line 16, col 154) +-------------------------------- +17 > + + ~ => Pos: (660 to 660) SpanInfo: undefined +-------------------------------- +18 >if (nameB == nameB) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (661 to 682) SpanInfo: {"start":661,"length":19} + >if (nameB == nameB) + >:=> (line 18, col 0) to (line 18, col 19) +-------------------------------- +19 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (683 to 706) SpanInfo: {"start":687,"length":18} + >console.log(nameC) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +20 >} + + ~~ => Pos: (707 to 708) SpanInfo: {"start":687,"length":18} + >console.log(nameC) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +21 >else { + + ~~~~~~~ => Pos: (709 to 715) SpanInfo: {"start":720,"length":18} + >console.log(nameC) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +22 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (716 to 739) SpanInfo: {"start":720,"length":18} + >console.log(nameC) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + ~ => Pos: (740 to 740) SpanInfo: {"start":720,"length":18} + >console.log(nameC) + >:=> (line 22, col 4) to (line 22, col 22) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline new file mode 100644 index 00000000000..51ccda7ce26 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline @@ -0,0 +1,329 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (53 to 70) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (71 to 88) SpanInfo: undefined +-------------------------------- +6 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (89 to 102) SpanInfo: undefined +-------------------------------- +7 > primary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (103 to 128) SpanInfo: undefined +-------------------------------- +8 > secondary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (129 to 156) SpanInfo: undefined +-------------------------------- +9 > }; + + ~~~~~~~ => Pos: (157 to 163) SpanInfo: undefined +-------------------------------- +10 >} + + ~~ => Pos: (164 to 165) SpanInfo: undefined +-------------------------------- +11 >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (166 to 254) SpanInfo: {"start":166,"length":87} + >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 11, col 0) to (line 11, col 87) +-------------------------------- +12 >var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (255 to 349) SpanInfo: {"start":255,"length":93} + >var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } } + >:=> (line 12, col 0) to (line 12, col 93) +-------------------------------- +13 > + + ~ => Pos: (350 to 350) SpanInfo: undefined +-------------------------------- +14 >var { + + ~~~~~~ => Pos: (351 to 356) SpanInfo: {"start":351,"length":164} + >var { + > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotA + >:=> (line 14, col 0) to (line 19, col 10) +-------------------------------- +15 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (357 to 370) SpanInfo: {"start":351,"length":164} + >var { + > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotA + >:=> (line 14, col 0) to (line 19, col 10) +-------------------------------- +16 > primary: primaryA = "noSkill", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (371 to 409) SpanInfo: {"start":351,"length":164} + >var { + > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotA + >:=> (line 14, col 0) to (line 19, col 10) +-------------------------------- +17 > secondary: secondaryA = "noSkill" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (410 to 451) SpanInfo: {"start":351,"length":164} + >var { + > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotA + >:=> (line 14, col 0) to (line 19, col 10) +-------------------------------- +18 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (452 to 504) SpanInfo: {"start":351,"length":164} + >var { + > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotA + >:=> (line 14, col 0) to (line 19, col 10) +-------------------------------- +19 >} = robotA; + + ~~~~~~~~~~~~ => Pos: (505 to 516) SpanInfo: {"start":351,"length":164} + >var { + > skills: { + > primary: primaryA = "noSkill", + > secondary: secondaryA = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotA + >:=> (line 14, col 0) to (line 19, col 10) +-------------------------------- +20 >var { + + ~~~~~~ => Pos: (517 to 522) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +21 > name: nameB = "noNameSpecified", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (523 to 559) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +22 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (560 to 573) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +23 > primary: primaryB = "noSkill", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (574 to 612) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +24 > secondary: secondaryB = "noSkill" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (613 to 654) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +25 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (655 to 707) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +26 >} = robotB; + + ~~~~~~~~~~~~ => Pos: (708 to 719) SpanInfo: {"start":517,"length":201} + >var { + > name: nameB = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = robotB + >:=> (line 20, col 0) to (line 26, col 10) +-------------------------------- +27 >var { + + ~~~~~~ => Pos: (720 to 725) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +28 > name: nameC = "noNameSpecified", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (726 to 762) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +29 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (763 to 776) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +30 > primary: primaryB = "noSkill", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (777 to 815) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +31 > secondary: secondaryB = "noSkill" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (816 to 857) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +32 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (858 to 910) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +33 >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (911 to 1001) SpanInfo: {"start":720,"length":280} + >var { + > name: nameC = "noNameSpecified", + > skills: { + > primary: primaryB = "noSkill", + > secondary: secondaryB = "noSkill" + > } = { primary: "noSkill", secondary: "noSkill" } + >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } + >:=> (line 27, col 0) to (line 33, col 89) +-------------------------------- +34 > + + ~ => Pos: (1002 to 1002) SpanInfo: undefined +-------------------------------- +35 >if (nameB == nameB) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1003 to 1024) SpanInfo: {"start":1003,"length":19} + >if (nameB == nameB) + >:=> (line 35, col 0) to (line 35, col 19) +-------------------------------- +36 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1025 to 1048) SpanInfo: {"start":1029,"length":18} + >console.log(nameC) + >:=> (line 36, col 4) to (line 36, col 22) +-------------------------------- +37 >} + + ~~ => Pos: (1049 to 1050) SpanInfo: {"start":1029,"length":18} + >console.log(nameC) + >:=> (line 36, col 4) to (line 36, col 22) +-------------------------------- +38 >else { + + ~~~~~~~ => Pos: (1051 to 1057) SpanInfo: {"start":1062,"length":18} + >console.log(nameC) + >:=> (line 39, col 4) to (line 39, col 22) +-------------------------------- +39 > console.log(nameC); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1058 to 1081) SpanInfo: {"start":1062,"length":18} + >console.log(nameC) + >:=> (line 39, col 4) to (line 39, col 22) +-------------------------------- +40 >} + ~ => Pos: (1082 to 1082) SpanInfo: {"start":1062,"length":18} + >console.log(nameC) + >:=> (line 39, col 4) to (line 39, col 22) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatement.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatement.ts new file mode 100644 index 00000000000..311b49c3f95 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatement.ts @@ -0,0 +1,22 @@ +/// +////interface Robot { +//// name: string; +//// skill: string; +////} +////declare var console: { +//// log(msg: string): void; +////} +////var hello = "hello"; +////var robotA: Robot = { name: "mower", skill: "mowing" }; +////var robotB: Robot = { name: "trimmer", skill: "trimming" }; +////var { name: nameA } = robotA; +////var { name: nameB, skill: skillB } = robotB; +////var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +////if (nameA == nameB) { +//// console.log(skillB); +////} +////else { +//// console.log(nameC); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatement1.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatement1.ts new file mode 100644 index 00000000000..96dbd9d2ff6 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatement1.ts @@ -0,0 +1,30 @@ +/// +////interface Robot { +//// name: string; +//// skill: string; +////} +////declare var console: { +//// log(msg: string): void; +////} +////var hello = "hello"; +////var robotA: Robot = { name: "mower", skill: "mowing" }; +////var robotB: Robot = { name: "trimmer", skill: "trimming" }; +////var a: string, { name: nameA } = robotA; +////var b: string, { name: nameB, skill: skillB } = robotB; +////var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; +//// +////var { name: nameA } = robotA, a = hello; +////var { name: nameB, skill: skillB } = robotB, b = " hello"; +////var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; +//// +////var a = hello, { name: nameA } = robotA, a1= "hello"; +////var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; +////var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; +////if (nameA == nameB) { +//// console.log(skillB); +////} +////else { +//// console.log(nameC); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementDefaultValues.ts new file mode 100644 index 00000000000..0e28887a4c3 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementDefaultValues.ts @@ -0,0 +1,22 @@ +/// +////interface Robot { +//// name: string; +//// skill: string; +////} +////declare var console: { +//// log(msg: string): void; +////} +////var hello = "hello"; +////var robotA: Robot = { name: "mower", skill: "mowing" }; +////var robotB: Robot = { name: "trimmer", skill: "trimming" }; +////var { name: nameA = "" } = robotA; +////var { name: nameB = "", skill: skillB = "" } = robotB; +////var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; +////if (nameA == nameB) { +//// console.log(skillB); +////} +////else { +//// console.log(nameC); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPattern.ts new file mode 100644 index 00000000000..4656fd5c417 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPattern.ts @@ -0,0 +1,26 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////interface Robot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +//// +////var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; +////var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; +////var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +//// +////if (nameB == nameB) { +//// console.log(nameC); +////} +////else { +//// console.log(nameC); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts new file mode 100644 index 00000000000..282e91a57ce --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.ts @@ -0,0 +1,43 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////interface Robot { +//// name: string; +//// skills: { +//// primary?: string; +//// secondary?: string; +//// }; +////} +////var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////var robotB: Robot = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }; +//// +////var { +//// skills: { +//// primary: primaryA = "noSkill", +//// secondary: secondaryA = "noSkill" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} = robotA; +////var { +//// name: nameB = "noNameSpecified", +//// skills: { +//// primary: primaryB = "noSkill", +//// secondary: secondaryB = "noSkill" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} = robotB; +////var { +//// name: nameC = "noNameSpecified", +//// skills: { +//// primary: primaryB = "noSkill", +//// secondary: secondaryB = "noSkill" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; +//// +////if (nameB == nameB) { +//// console.log(nameC); +////} +////else { +//// console.log(nameC); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From c25bfe57c6c13a0d77dcef6c05e644039b21eb5f Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Dec 2015 16:31:18 -0800 Subject: [PATCH 070/164] Support for breakpoint spans in object binding pattern --- src/services/breakpoints.ts | 84 +++++-- ...panDestructuringVariableStatement.baseline | 28 ++- ...anDestructuringVariableStatement1.baseline | 84 +++++-- ...ingVariableStatementDefaultValues.baseline | 28 ++- ...atementNestedObjectBindingPattern.baseline | 73 +++++- ...ctBindingPatternWithDefaultValues.baseline | 234 +++++++----------- 6 files changed, 308 insertions(+), 223 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 31ab5d2adec..386970cac5a 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -212,6 +212,7 @@ namespace ts.BreakpointResolver { case SyntaxKind.EnumMember: case SyntaxKind.CallExpression: case SyntaxKind.NewExpression: + case SyntaxKind.BindingElement: // span on complete node return textSpan(node); @@ -222,6 +223,10 @@ namespace ts.BreakpointResolver { case SyntaxKind.Decorator: return spanInNodeArray(node.parent.decorators); + case SyntaxKind.ObjectBindingPattern: + case SyntaxKind.ArrayBindingPattern: + return spanInBindingPattern(node); + // No breakpoint in interface, type alias case SyntaxKind.InterfaceDeclaration: case SyntaxKind.TypeAliasDeclaration: @@ -279,11 +284,30 @@ namespace ts.BreakpointResolver { return spanInPreviousNode(node); } + // initializer of variable declaration go to previous node + if (node.parent.kind === SyntaxKind.VariableDeclaration && + ((node.parent).initializer === node || + isAssignmentOperator(node.kind))) { + return spanInPreviousNode(node); + } + // Default go to parent to set the breakpoint return spanInNode(node.parent); } } + function textSpanFromVariableDeclaration(variableDeclaration: VariableDeclaration): TextSpan { + let declarations = variableDeclaration.parent.declarations; + if (declarations && declarations[0] === variableDeclaration) { + // First declaration - include let keyword + return textSpan(findPrecedingToken(variableDeclaration.pos, sourceFile, variableDeclaration.parent), variableDeclaration); + } + else { + // Span only on this declaration + return textSpan(variableDeclaration); + } + } + function spanInVariableDeclaration(variableDeclaration: VariableDeclaration): TextSpan { // If declaration of for in statement, just set the span in parent if (variableDeclaration.parent.parent.kind === SyntaxKind.ForInStatement || @@ -291,36 +315,23 @@ namespace ts.BreakpointResolver { return spanInNode(variableDeclaration.parent.parent); } - let isParentVariableStatement = variableDeclaration.parent.parent.kind === SyntaxKind.VariableStatement; - let isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === SyntaxKind.ForStatement && contains(((variableDeclaration.parent.parent).initializer).declarations, variableDeclaration); - let declarations = isParentVariableStatement - ? (variableDeclaration.parent.parent).declarationList.declarations - : isDeclarationOfForStatement - ? ((variableDeclaration.parent.parent).initializer).declarations - : undefined; + // If this is a destructuring pattern set breakpoint in binding pattern + if (isBindingPattern(variableDeclaration.name)) { + return spanInBindingPattern(variableDeclaration.name); + } // Breakpoint is possible in variableDeclaration only if there is initialization if (variableDeclaration.initializer || (variableDeclaration.flags & NodeFlags.Export)) { - if (declarations && declarations[0] === variableDeclaration) { - if (isParentVariableStatement) { - // First declaration - include let keyword - return textSpan(variableDeclaration.parent, variableDeclaration); - } - else { - Debug.assert(isDeclarationOfForStatement); - // Include let keyword from for statement declarations in the span - return textSpan(findPrecedingToken(variableDeclaration.pos, sourceFile, variableDeclaration.parent), variableDeclaration); - } - } - else { - // Span only on this declaration - return textSpan(variableDeclaration); - } + return textSpanFromVariableDeclaration(variableDeclaration); } - else if (declarations && declarations[0] !== variableDeclaration) { + + let declarations = variableDeclaration.parent.declarations; + if (declarations && declarations[0] !== variableDeclaration) { // If we cant set breakpoint on this declaration, set it on previous one - let indexOfCurrentDeclaration = indexOf(declarations, variableDeclaration); - return spanInVariableDeclaration(declarations[indexOfCurrentDeclaration - 1]); + // Because the variable declaration may be binding pattern and + // we would like to set breakpoint in last binding element if thats the case, + // use preceding token instead + return spanInNode(findPrecedingToken(variableDeclaration.pos, sourceFile, variableDeclaration.parent)); } } @@ -421,6 +432,24 @@ namespace ts.BreakpointResolver { } } + function spanInBindingPattern(bindingPattern: BindingPattern): TextSpan { + // Set breakpoint in first binding element + let firstBindingElement = forEach(bindingPattern.elements, + element => element.kind !== SyntaxKind.OmittedExpression ? element : undefined); + + if (firstBindingElement) { + return spanInNode(firstBindingElement); + } + + // Empty binding pattern of binding element, set breakpoint on binding element + if (bindingPattern.parent.kind === SyntaxKind.BindingElement) { + return spanInNode(bindingPattern.parent); + } + + // Variable declaration is used as the span + return textSpanFromVariableDeclaration(bindingPattern.parent); + } + // Tokens: function spanInOpenBraceToken(node: Node): TextSpan { switch (node.parent.kind) { @@ -472,6 +501,11 @@ namespace ts.BreakpointResolver { } return undefined; + case SyntaxKind.ObjectBindingPattern: + // Breakpoint in last binding element or binding pattern if it contains no elements + let bindingPattern = node.parent; + return spanInNode(lastOrUndefined(bindingPattern.elements) || bindingPattern); + // Default to parent node default: return spanInNode(node.parent); diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline index b554d4b969b..3939c66c56e 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatement.baseline @@ -47,21 +47,31 @@ -------------------------------- 11 >var { name: nameA } = robotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (247 to 276) SpanInfo: {"start":247,"length":28} - >var { name: nameA } = robotA - >:=> (line 11, col 0) to (line 11, col 28) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (247 to 276) SpanInfo: {"start":253,"length":11} + >name: nameA + >:=> (line 11, col 6) to (line 11, col 17) -------------------------------- 12 >var { name: nameB, skill: skillB } = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (277 to 321) SpanInfo: {"start":277,"length":43} - >var { name: nameB, skill: skillB } = robotB - >:=> (line 12, col 0) to (line 12, col 43) + ~~~~~~~~~~~~~~~~~~ => Pos: (277 to 294) SpanInfo: {"start":283,"length":11} + >name: nameB + >:=> (line 12, col 6) to (line 12, col 17) +12 >var { name: nameB, skill: skillB } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (295 to 321) SpanInfo: {"start":296,"length":13} + >skill: skillB + >:=> (line 12, col 19) to (line 12, col 32) -------------------------------- 13 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (322 to 401) SpanInfo: {"start":322,"length":78} - >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } - >:=> (line 13, col 0) to (line 13, col 78) + ~~~~~~~~~~~~~~~~~~ => Pos: (322 to 339) SpanInfo: {"start":328,"length":11} + >name: nameC + >:=> (line 13, col 6) to (line 13, col 17) +13 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (340 to 401) SpanInfo: {"start":341,"length":13} + >skill: skillC + >:=> (line 13, col 19) to (line 13, col 32) -------------------------------- 14 >if (nameA == nameB) { diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline index 774869428d6..ce1edbb0ee9 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatement1.baseline @@ -50,27 +50,37 @@ ~~~~~~~~~~~~~~ => Pos: (247 to 260) SpanInfo: undefined 11 >var a: string, { name: nameA } = robotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (261 to 287) SpanInfo: {"start":262,"length":24} - >{ name: nameA } = robotA - >:=> (line 11, col 15) to (line 11, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (261 to 287) SpanInfo: {"start":264,"length":11} + >name: nameA + >:=> (line 11, col 17) to (line 11, col 28) -------------------------------- 12 >var b: string, { name: nameB, skill: skillB } = robotB; ~~~~~~~~~~~~~~ => Pos: (288 to 301) SpanInfo: undefined 12 >var b: string, { name: nameB, skill: skillB } = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (302 to 343) SpanInfo: {"start":303,"length":39} - >{ name: nameB, skill: skillB } = robotB - >:=> (line 12, col 15) to (line 12, col 54) + ~~~~~~~~~~~~~~~ => Pos: (302 to 316) SpanInfo: {"start":305,"length":11} + >name: nameB + >:=> (line 12, col 17) to (line 12, col 28) +12 >var b: string, { name: nameB, skill: skillB } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (317 to 343) SpanInfo: {"start":318,"length":13} + >skill: skillB + >:=> (line 12, col 30) to (line 12, col 43) -------------------------------- 13 >var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; ~~~~~~~~~~~~~~ => Pos: (344 to 357) SpanInfo: undefined 13 >var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (358 to 434) SpanInfo: {"start":359,"length":74} - >{ name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } - >:=> (line 13, col 15) to (line 13, col 89) + ~~~~~~~~~~~~~~~ => Pos: (358 to 372) SpanInfo: {"start":361,"length":11} + >name: nameC + >:=> (line 13, col 17) to (line 13, col 28) +13 >var c: string, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (373 to 434) SpanInfo: {"start":374,"length":13} + >skill: skillC + >:=> (line 13, col 30) to (line 13, col 43) -------------------------------- 14 > @@ -78,9 +88,9 @@ -------------------------------- 15 >var { name: nameA } = robotA, a = hello; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (436 to 464) SpanInfo: {"start":436,"length":28} - >var { name: nameA } = robotA - >:=> (line 15, col 0) to (line 15, col 28) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (436 to 464) SpanInfo: {"start":442,"length":11} + >name: nameA + >:=> (line 15, col 6) to (line 15, col 17) 15 >var { name: nameA } = robotA, a = hello; ~~~~~~~~~~~~ => Pos: (465 to 476) SpanInfo: {"start":466,"length":9} @@ -89,9 +99,14 @@ -------------------------------- 16 >var { name: nameB, skill: skillB } = robotB, b = " hello"; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (477 to 520) SpanInfo: {"start":477,"length":43} - >var { name: nameB, skill: skillB } = robotB - >:=> (line 16, col 0) to (line 16, col 43) + ~~~~~~~~~~~~~~~~~~ => Pos: (477 to 494) SpanInfo: {"start":483,"length":11} + >name: nameB + >:=> (line 16, col 6) to (line 16, col 17) +16 >var { name: nameB, skill: skillB } = robotB, b = " hello"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (495 to 520) SpanInfo: {"start":496,"length":13} + >skill: skillB + >:=> (line 16, col 19) to (line 16, col 32) 16 >var { name: nameB, skill: skillB } = robotB, b = " hello"; ~~~~~~~~~~~~~~~=> Pos: (521 to 535) SpanInfo: {"start":522,"length":12} @@ -100,9 +115,14 @@ -------------------------------- 17 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (536 to 614) SpanInfo: {"start":536,"length":78} - >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } - >:=> (line 17, col 0) to (line 17, col 78) + ~~~~~~~~~~~~~~~~~~ => Pos: (536 to 553) SpanInfo: {"start":542,"length":11} + >name: nameC + >:=> (line 17, col 6) to (line 17, col 17) +17 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (554 to 614) SpanInfo: {"start":555,"length":13} + >skill: skillC + >:=> (line 17, col 19) to (line 17, col 32) 17 >var { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c = hello; ~~~~~~~~~~~~=> Pos: (615 to 626) SpanInfo: {"start":616,"length":9} @@ -120,9 +140,9 @@ >:=> (line 19, col 0) to (line 19, col 13) 19 >var a = hello, { name: nameA } = robotA, a1= "hello"; - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (642 to 667) SpanInfo: {"start":643,"length":24} - >{ name: nameA } = robotA - >:=> (line 19, col 15) to (line 19, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (642 to 667) SpanInfo: {"start":645,"length":11} + >name: nameA + >:=> (line 19, col 17) to (line 19, col 28) 19 >var a = hello, { name: nameA } = robotA, a1= "hello"; ~~~~~~~~~~~~~~=> Pos: (668 to 681) SpanInfo: {"start":669,"length":11} @@ -136,9 +156,14 @@ >:=> (line 20, col 0) to (line 20, col 13) 20 >var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (696 to 736) SpanInfo: {"start":697,"length":39} - >{ name: nameB, skill: skillB } = robotB - >:=> (line 20, col 15) to (line 20, col 54) + ~~~~~~~~~~~~~~~ => Pos: (696 to 710) SpanInfo: {"start":699,"length":11} + >name: nameB + >:=> (line 20, col 17) to (line 20, col 28) +20 >var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (711 to 736) SpanInfo: {"start":712,"length":13} + >skill: skillB + >:=> (line 20, col 30) to (line 20, col 43) 20 >var b = hello, { name: nameB, skill: skillB } = robotB, b1 = "hello"; ~~~~~~~~~~~~~~~=> Pos: (737 to 751) SpanInfo: {"start":738,"length":12} @@ -152,9 +177,14 @@ >:=> (line 21, col 0) to (line 21, col 13) 21 >var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (766 to 841) SpanInfo: {"start":767,"length":74} - >{ name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" } - >:=> (line 21, col 15) to (line 21, col 89) + ~~~~~~~~~~~~~~~ => Pos: (766 to 780) SpanInfo: {"start":769,"length":11} + >name: nameC + >:=> (line 21, col 17) to (line 21, col 28) +21 >var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (781 to 841) SpanInfo: {"start":782,"length":13} + >skill: skillC + >:=> (line 21, col 30) to (line 21, col 43) 21 >var c = hello, { name: nameC, skill: skillC } = { name: "Edger", skill: "cutting edges" }, c1 = hello; ~~~~~~~~~~~~~=> Pos: (842 to 854) SpanInfo: {"start":843,"length":10} diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline index ce6062f70e2..60ee5897d48 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementDefaultValues.baseline @@ -47,21 +47,31 @@ -------------------------------- 11 >var { name: nameA = "" } = robotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (247 to 289) SpanInfo: {"start":247,"length":41} - >var { name: nameA = "" } = robotA - >:=> (line 11, col 0) to (line 11, col 41) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (247 to 289) SpanInfo: {"start":253,"length":24} + >name: nameA = "" + >:=> (line 11, col 6) to (line 11, col 30) -------------------------------- 12 >var { name: nameB = "", skill: skillB = "" } = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (290 to 370) SpanInfo: {"start":290,"length":79} - >var { name: nameB = "", skill: skillB = "" } = robotB - >:=> (line 12, col 0) to (line 12, col 79) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (290 to 320) SpanInfo: {"start":296,"length":24} + >name: nameB = "" + >:=> (line 12, col 6) to (line 12, col 30) +12 >var { name: nameB = "", skill: skillB = "" } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (321 to 370) SpanInfo: {"start":322,"length":36} + >skill: skillB = "" + >:=> (line 12, col 32) to (line 12, col 68) -------------------------------- 13 >var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (371 to 486) SpanInfo: {"start":371,"length":114} - >var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" } - >:=> (line 13, col 0) to (line 13, col 114) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (371 to 401) SpanInfo: {"start":377,"length":24} + >name: nameC = "" + >:=> (line 13, col 6) to (line 13, col 30) +13 >var { name: nameC = "", skill: skillC = "" } = { name: "Edger", skill: "cutting edges" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (402 to 486) SpanInfo: {"start":403,"length":36} + >skill: skillC = "" + >:=> (line 13, col 32) to (line 13, col 68) -------------------------------- 14 >if (nameA == nameB) { diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline index 4878c375bd7..66f814ada9c 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPattern.baseline @@ -57,21 +57,76 @@ -------------------------------- 14 >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (349 to 419) SpanInfo: {"start":349,"length":69} - >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA - >:=> (line 14, col 0) to (line 14, col 69) + ~~~~~~~~~~~~~ => Pos: (349 to 361) SpanInfo: {"start":355,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 14, col 6) to (line 14, col 58) +14 >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (362 to 382) SpanInfo: {"start":365,"length":17} + >primary: primaryA + >:=> (line 14, col 16) to (line 14, col 33) +14 >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (383 to 406) SpanInfo: {"start":384,"length":21} + >secondary: secondaryA + >:=> (line 14, col 35) to (line 14, col 56) +14 >var { skills: { primary: primaryA, secondary: secondaryA } } = robotA; + + ~~~~~~~~~~~~~=> Pos: (407 to 419) SpanInfo: {"start":355,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 14, col 6) to (line 14, col 58) -------------------------------- 15 >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (420 to 503) SpanInfo: {"start":420,"length":82} - >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB - >:=> (line 15, col 0) to (line 15, col 82) + ~~~~~~~~~~~~~~~~~~ => Pos: (420 to 437) SpanInfo: {"start":426,"length":11} + >name: nameB + >:=> (line 15, col 6) to (line 15, col 17) +15 >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; + + ~~~~~~~~ => Pos: (438 to 445) SpanInfo: {"start":439,"length":52} + >skills: { primary: primaryB, secondary: secondaryB } + >:=> (line 15, col 19) to (line 15, col 71) +15 >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (446 to 466) SpanInfo: {"start":449,"length":17} + >primary: primaryB + >:=> (line 15, col 29) to (line 15, col 46) +15 >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (467 to 490) SpanInfo: {"start":468,"length":21} + >secondary: secondaryB + >:=> (line 15, col 48) to (line 15, col 69) +15 >var { name: nameB, skills: { primary: primaryB, secondary: secondaryB } } = robotB; + + ~~~~~~~~~~~~~=> Pos: (491 to 503) SpanInfo: {"start":439,"length":52} + >skills: { primary: primaryB, secondary: secondaryB } + >:=> (line 15, col 19) to (line 15, col 71) -------------------------------- 16 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (504 to 659) SpanInfo: {"start":504,"length":154} - >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 16, col 0) to (line 16, col 154) + ~~~~~~~~~~~~~~~~~~ => Pos: (504 to 521) SpanInfo: {"start":510,"length":11} + >name: nameC + >:=> (line 16, col 6) to (line 16, col 17) +16 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + + ~~~~~~~~ => Pos: (522 to 529) SpanInfo: {"start":523,"length":52} + >skills: { primary: primaryB, secondary: secondaryB } + >:=> (line 16, col 19) to (line 16, col 71) +16 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (530 to 550) SpanInfo: {"start":533,"length":17} + >primary: primaryB + >:=> (line 16, col 29) to (line 16, col 46) +16 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (551 to 574) SpanInfo: {"start":552,"length":21} + >secondary: secondaryB + >:=> (line 16, col 48) to (line 16, col 69) +16 >var { name: nameC, skills: { primary: primaryB, secondary: secondaryB } } = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (575 to 659) SpanInfo: {"start":523,"length":52} + >skills: { primary: primaryB, secondary: secondaryB } + >:=> (line 16, col 19) to (line 16, col 71) -------------------------------- 17 > diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline index 51ccda7ce26..75b37a0231e 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementNestedObjectBindingPatternWithDefaultValues.baseline @@ -57,237 +57,183 @@ -------------------------------- 14 >var { - ~~~~~~ => Pos: (351 to 356) SpanInfo: {"start":351,"length":164} - >var { - > skills: { + ~~~~~~ => Pos: (351 to 356) SpanInfo: {"start":361,"length":143} + >skills: { > primary: primaryA = "noSkill", > secondary: secondaryA = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotA - >:=> (line 14, col 0) to (line 19, col 10) + >:=> (line 15, col 4) to (line 18, col 52) -------------------------------- 15 > skills: { - ~~~~~~~~~~~~~~ => Pos: (357 to 370) SpanInfo: {"start":351,"length":164} - >var { - > skills: { + ~~~~~~~~~~~ => Pos: (357 to 367) SpanInfo: {"start":361,"length":143} + >skills: { > primary: primaryA = "noSkill", > secondary: secondaryA = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotA - >:=> (line 14, col 0) to (line 19, col 10) + >:=> (line 15, col 4) to (line 18, col 52) +15 > skills: { + + ~~~ => Pos: (368 to 370) SpanInfo: {"start":379,"length":29} + >primary: primaryA = "noSkill" + >:=> (line 16, col 8) to (line 16, col 37) -------------------------------- 16 > primary: primaryA = "noSkill", - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (371 to 409) SpanInfo: {"start":351,"length":164} - >var { - > skills: { - > primary: primaryA = "noSkill", - > secondary: secondaryA = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotA - >:=> (line 14, col 0) to (line 19, col 10) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (371 to 409) SpanInfo: {"start":379,"length":29} + >primary: primaryA = "noSkill" + >:=> (line 16, col 8) to (line 16, col 37) -------------------------------- 17 > secondary: secondaryA = "noSkill" - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (410 to 451) SpanInfo: {"start":351,"length":164} - >var { - > skills: { - > primary: primaryA = "noSkill", - > secondary: secondaryA = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotA - >:=> (line 14, col 0) to (line 19, col 10) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (410 to 451) SpanInfo: {"start":418,"length":33} + >secondary: secondaryA = "noSkill" + >:=> (line 17, col 8) to (line 17, col 41) -------------------------------- 18 > } = { primary: "noSkill", secondary: "noSkill" } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (452 to 504) SpanInfo: {"start":351,"length":164} - >var { - > skills: { + ~~~~~ => Pos: (452 to 456) SpanInfo: {"start":418,"length":33} + >secondary: secondaryA = "noSkill" + >:=> (line 17, col 8) to (line 17, col 41) +18 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (457 to 504) SpanInfo: {"start":361,"length":143} + >skills: { > primary: primaryA = "noSkill", > secondary: secondaryA = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotA - >:=> (line 14, col 0) to (line 19, col 10) + >:=> (line 15, col 4) to (line 18, col 52) -------------------------------- 19 >} = robotA; - ~~~~~~~~~~~~ => Pos: (505 to 516) SpanInfo: {"start":351,"length":164} - >var { - > skills: { + ~~~~~~~~~~~~ => Pos: (505 to 516) SpanInfo: {"start":361,"length":143} + >skills: { > primary: primaryA = "noSkill", > secondary: secondaryA = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotA - >:=> (line 14, col 0) to (line 19, col 10) + >:=> (line 15, col 4) to (line 18, col 52) -------------------------------- 20 >var { - ~~~~~~ => Pos: (517 to 522) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + ~~~~~~ => Pos: (517 to 522) SpanInfo: {"start":527,"length":31} + >name: nameB = "noNameSpecified" + >:=> (line 21, col 4) to (line 21, col 35) -------------------------------- 21 > name: nameB = "noNameSpecified", - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (523 to 559) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (523 to 559) SpanInfo: {"start":527,"length":31} + >name: nameB = "noNameSpecified" + >:=> (line 21, col 4) to (line 21, col 35) -------------------------------- 22 > skills: { - ~~~~~~~~~~~~~~ => Pos: (560 to 573) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { + ~~~~~~~~~~~ => Pos: (560 to 570) SpanInfo: {"start":564,"length":143} + >skills: { > primary: primaryB = "noSkill", > secondary: secondaryB = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + >:=> (line 22, col 4) to (line 25, col 52) +22 > skills: { + + ~~~ => Pos: (571 to 573) SpanInfo: {"start":582,"length":29} + >primary: primaryB = "noSkill" + >:=> (line 23, col 8) to (line 23, col 37) -------------------------------- 23 > primary: primaryB = "noSkill", - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (574 to 612) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (574 to 612) SpanInfo: {"start":582,"length":29} + >primary: primaryB = "noSkill" + >:=> (line 23, col 8) to (line 23, col 37) -------------------------------- 24 > secondary: secondaryB = "noSkill" - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (613 to 654) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (613 to 654) SpanInfo: {"start":621,"length":33} + >secondary: secondaryB = "noSkill" + >:=> (line 24, col 8) to (line 24, col 41) -------------------------------- 25 > } = { primary: "noSkill", secondary: "noSkill" } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (655 to 707) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { + ~~~~~ => Pos: (655 to 659) SpanInfo: {"start":621,"length":33} + >secondary: secondaryB = "noSkill" + >:=> (line 24, col 8) to (line 24, col 41) +25 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (660 to 707) SpanInfo: {"start":564,"length":143} + >skills: { > primary: primaryB = "noSkill", > secondary: secondaryB = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + >:=> (line 22, col 4) to (line 25, col 52) -------------------------------- 26 >} = robotB; - ~~~~~~~~~~~~ => Pos: (708 to 719) SpanInfo: {"start":517,"length":201} - >var { - > name: nameB = "noNameSpecified", - > skills: { + ~~~~~~~~~~~~ => Pos: (708 to 719) SpanInfo: {"start":564,"length":143} + >skills: { > primary: primaryB = "noSkill", > secondary: secondaryB = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = robotB - >:=> (line 20, col 0) to (line 26, col 10) + >:=> (line 22, col 4) to (line 25, col 52) -------------------------------- 27 >var { - ~~~~~~ => Pos: (720 to 725) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + ~~~~~~ => Pos: (720 to 725) SpanInfo: {"start":730,"length":31} + >name: nameC = "noNameSpecified" + >:=> (line 28, col 4) to (line 28, col 35) -------------------------------- 28 > name: nameC = "noNameSpecified", - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (726 to 762) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (726 to 762) SpanInfo: {"start":730,"length":31} + >name: nameC = "noNameSpecified" + >:=> (line 28, col 4) to (line 28, col 35) -------------------------------- 29 > skills: { - ~~~~~~~~~~~~~~ => Pos: (763 to 776) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { + ~~~~~~~~~~~ => Pos: (763 to 773) SpanInfo: {"start":767,"length":143} + >skills: { > primary: primaryB = "noSkill", > secondary: secondaryB = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + >:=> (line 29, col 4) to (line 32, col 52) +29 > skills: { + + ~~~ => Pos: (774 to 776) SpanInfo: {"start":785,"length":29} + >primary: primaryB = "noSkill" + >:=> (line 30, col 8) to (line 30, col 37) -------------------------------- 30 > primary: primaryB = "noSkill", - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (777 to 815) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (777 to 815) SpanInfo: {"start":785,"length":29} + >primary: primaryB = "noSkill" + >:=> (line 30, col 8) to (line 30, col 37) -------------------------------- 31 > secondary: secondaryB = "noSkill" - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (816 to 857) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { - > primary: primaryB = "noSkill", - > secondary: secondaryB = "noSkill" - > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (816 to 857) SpanInfo: {"start":824,"length":33} + >secondary: secondaryB = "noSkill" + >:=> (line 31, col 8) to (line 31, col 41) -------------------------------- 32 > } = { primary: "noSkill", secondary: "noSkill" } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (858 to 910) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { + ~~~~~ => Pos: (858 to 862) SpanInfo: {"start":824,"length":33} + >secondary: secondaryB = "noSkill" + >:=> (line 31, col 8) to (line 31, col 41) +32 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (863 to 910) SpanInfo: {"start":767,"length":143} + >skills: { > primary: primaryB = "noSkill", > secondary: secondaryB = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + >:=> (line 29, col 4) to (line 32, col 52) -------------------------------- 33 >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (911 to 1001) SpanInfo: {"start":720,"length":280} - >var { - > name: nameC = "noNameSpecified", - > skills: { + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (911 to 1001) SpanInfo: {"start":767,"length":143} + >skills: { > primary: primaryB = "noSkill", > secondary: secondaryB = "noSkill" > } = { primary: "noSkill", secondary: "noSkill" } - >} = { name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } } - >:=> (line 27, col 0) to (line 33, col 89) + >:=> (line 29, col 4) to (line 32, col 52) -------------------------------- 34 > From 960e8a76982b9c43369980a1a66383e25359ea4c Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Dec 2015 16:41:28 -0800 Subject: [PATCH 071/164] Test cases for breakpoint span in array binding pattern of variable statement --- ...iableStatementArrayBindingPattern.baseline | 101 +++++++++++++++ ...ableStatementArrayBindingPattern2.baseline | 115 ++++++++++++++++++ ...tArrayBindingPatternDefaultValues.baseline | 101 +++++++++++++++ ...ArrayBindingPatternDefaultValues2.baseline | 102 ++++++++++++++++ ...ingVariableStatementArrayBindingPattern.ts | 15 +++ ...ngVariableStatementArrayBindingPattern2.ts | 19 +++ ...atementArrayBindingPatternDefaultValues.ts | 15 +++ ...tementArrayBindingPatternDefaultValues2.ts | 14 +++ 8 files changed, 482 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline new file mode 100644 index 00000000000..0263cafa0a6 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline @@ -0,0 +1,101 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (53 to 91) SpanInfo: undefined +-------------------------------- +5 >var robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (92 to 135) SpanInfo: {"start":92,"length":42} + >var robotA: Robot = [1, "mower", "mowing"] + >:=> (line 5, col 0) to (line 5, col 42) +-------------------------------- +6 >var robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (136 to 183) SpanInfo: {"start":136,"length":46} + >var robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 6, col 0) to (line 6, col 46) +-------------------------------- +7 >let [, nameA] = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (184 to 207) SpanInfo: {"start":191,"length":5} + >nameA + >:=> (line 7, col 7) to (line 7, col 12) +-------------------------------- +8 >let [numberB] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (208 to 231) SpanInfo: {"start":213,"length":7} + >numberB + >:=> (line 8, col 5) to (line 8, col 12) +-------------------------------- +9 >let [numberA2, nameA2, skillA2] = robotA; + + ~~~~~~~~~~~~~~ => Pos: (232 to 245) SpanInfo: {"start":237,"length":8} + >numberA2 + >:=> (line 9, col 5) to (line 9, col 13) +9 >let [numberA2, nameA2, skillA2] = robotA; + + ~~~~~~~~ => Pos: (246 to 253) SpanInfo: {"start":247,"length":6} + >nameA2 + >:=> (line 9, col 15) to (line 9, col 21) +9 >let [numberA2, nameA2, skillA2] = robotA; + + ~~~~~~~~ => Pos: (254 to 261) SpanInfo: {"start":255,"length":7} + >skillA2 + >:=> (line 9, col 23) to (line 9, col 30) +9 >let [numberA2, nameA2, skillA2] = robotA; + + ~~~~~~~~~~~~ => Pos: (262 to 273) SpanInfo: {"start":237,"length":8} + >numberA2 + >:=> (line 9, col 5) to (line 9, col 13) +-------------------------------- +10 >let [numberC2] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (274 to 323) SpanInfo: {"start":279,"length":8} + >numberC2 + >:=> (line 10, col 5) to (line 10, col 13) +-------------------------------- +11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~ => Pos: (324 to 336) SpanInfo: {"start":329,"length":7} + >numberC + >:=> (line 11, col 5) to (line 11, col 12) +11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; + + ~~~~~~~ => Pos: (337 to 343) SpanInfo: {"start":338,"length":5} + >nameC + >:=> (line 11, col 14) to (line 11, col 19) +11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; + + ~~~~~~~ => Pos: (344 to 350) SpanInfo: {"start":345,"length":6} + >skillC + >:=> (line 11, col 21) to (line 11, col 27) +11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (351 to 387) SpanInfo: {"start":329,"length":7} + >numberC + >:=> (line 11, col 5) to (line 11, col 12) +-------------------------------- +12 >let [numberA3, ...robotAInfo] = robotA; + ~~~~~~~~~~~~~~ => Pos: (388 to 401) SpanInfo: {"start":393,"length":8} + >numberA3 + >:=> (line 12, col 5) to (line 12, col 13) +12 >let [numberA3, ...robotAInfo] = robotA; + ~~~~~~~~~~~~~~ => Pos: (402 to 415) SpanInfo: {"start":403,"length":13} + >...robotAInfo + >:=> (line 12, col 15) to (line 12, col 28) +12 >let [numberA3, ...robotAInfo] = robotA; + ~~~~~~~~~~~ => Pos: (416 to 426) SpanInfo: {"start":393,"length":8} + >numberA3 + >:=> (line 12, col 5) to (line 12, col 13) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline new file mode 100644 index 00000000000..8b80f6420df --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline @@ -0,0 +1,115 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (53 to 105) SpanInfo: undefined +-------------------------------- +5 >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (106 to 169) SpanInfo: {"start":106,"length":62} + >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 5, col 0) to (line 5, col 62) +-------------------------------- +6 >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (170 to 243) SpanInfo: {"start":170,"length":72} + >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 6, col 0) to (line 6, col 72) +-------------------------------- +7 > + + ~ => Pos: (244 to 244) SpanInfo: undefined +-------------------------------- +8 >let [, skillA] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (245 to 274) SpanInfo: {"start":252,"length":6} + >skillA + >:=> (line 8, col 7) to (line 8, col 13) +-------------------------------- +9 >let [nameMB] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (275 to 302) SpanInfo: {"start":280,"length":6} + >nameMB + >:=> (line 9, col 5) to (line 9, col 11) +-------------------------------- +10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + + ~~~~~~~~~~~~ => Pos: (303 to 314) SpanInfo: {"start":308,"length":6} + >nameMA + >:=> (line 10, col 5) to (line 10, col 11) +10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + + ~~~~~~~~~~~~~~~~ => Pos: (315 to 330) SpanInfo: {"start":317,"length":13} + >primarySkillA + >:=> (line 10, col 14) to (line 10, col 27) +10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + + ~~~~~~~~~~~~~~~~ => Pos: (331 to 346) SpanInfo: {"start":332,"length":15} + >secondarySkillA + >:=> (line 10, col 29) to (line 10, col 44) +10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + + ~ => Pos: (347 to 347) SpanInfo: {"start":317,"length":13} + >primarySkillA + >:=> (line 10, col 14) to (line 10, col 27) +10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~=> Pos: (348 to 364) SpanInfo: {"start":308,"length":6} + >nameMA + >:=> (line 10, col 5) to (line 10, col 11) +-------------------------------- +11 > + + ~ => Pos: (365 to 365) SpanInfo: undefined +-------------------------------- +12 >let [nameMC] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (366 to 415) SpanInfo: {"start":371,"length":6} + >nameMC + >:=> (line 12, col 5) to (line 12, col 11) +-------------------------------- +13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~ => Pos: (416 to 428) SpanInfo: {"start":421,"length":7} + >nameMC2 + >:=> (line 13, col 5) to (line 13, col 12) +13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~ => Pos: (429 to 444) SpanInfo: {"start":431,"length":13} + >primarySkillC + >:=> (line 13, col 15) to (line 13, col 28) +13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~ => Pos: (445 to 460) SpanInfo: {"start":446,"length":15} + >secondarySkillC + >:=> (line 13, col 30) to (line 13, col 45) +13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + + ~=> Pos: (461 to 461) SpanInfo: {"start":431,"length":13} + >primarySkillC + >:=> (line 13, col 15) to (line 13, col 28) +13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (462 to 500) SpanInfo: {"start":421,"length":7} + >nameMC2 + >:=> (line 13, col 5) to (line 13, col 12) +-------------------------------- +14 > + + ~ => Pos: (501 to 501) SpanInfo: undefined +-------------------------------- +15 >let [...multiRobotAInfo] = multiRobotA; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (502 to 540) SpanInfo: {"start":507,"length":18} + >...multiRobotAInfo + >:=> (line 15, col 5) to (line 15, col 23) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..9f025f3646a --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,101 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (53 to 91) SpanInfo: undefined +-------------------------------- +5 >var robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (92 to 135) SpanInfo: {"start":92,"length":42} + >var robotA: Robot = [1, "mower", "mowing"] + >:=> (line 5, col 0) to (line 5, col 42) +-------------------------------- +6 >var robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (136 to 183) SpanInfo: {"start":136,"length":46} + >var robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 6, col 0) to (line 6, col 46) +-------------------------------- +7 >let [, nameA = "noName"] = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (184 to 218) SpanInfo: {"start":191,"length":16} + >nameA = "noName" + >:=> (line 7, col 7) to (line 7, col 23) +-------------------------------- +8 >let [numberB = -1] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (219 to 247) SpanInfo: {"start":224,"length":12} + >numberB = -1 + >:=> (line 8, col 5) to (line 8, col 17) +-------------------------------- +9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (248 to 266) SpanInfo: {"start":253,"length":13} + >numberA2 = -1 + >:=> (line 9, col 5) to (line 9, col 18) +9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (267 to 285) SpanInfo: {"start":268,"length":17} + >nameA2 = "noName" + >:=> (line 9, col 20) to (line 9, col 37) +9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; + + ~~~~~~~~~~~~~~~~~~~~=> Pos: (286 to 305) SpanInfo: {"start":287,"length":19} + >skillA2 = "noSkill" + >:=> (line 9, col 39) to (line 9, col 58) +9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; + + ~~~~~~~~~~~~=> Pos: (306 to 317) SpanInfo: {"start":253,"length":13} + >numberA2 = -1 + >:=> (line 9, col 5) to (line 9, col 18) +-------------------------------- +10 >let [numberC2 = -1] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (318 to 372) SpanInfo: {"start":323,"length":13} + >numberC2 = -1 + >:=> (line 10, col 5) to (line 10, col 18) +-------------------------------- +11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~ => Pos: (373 to 390) SpanInfo: {"start":378,"length":12} + >numberC = -1 + >:=> (line 11, col 5) to (line 11, col 17) +11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~ => Pos: (391 to 408) SpanInfo: {"start":392,"length":16} + >nameC = "noName" + >:=> (line 11, col 19) to (line 11, col 35) +11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~~=> Pos: (409 to 427) SpanInfo: {"start":410,"length":18} + >skillC = "noSkill" + >:=> (line 11, col 37) to (line 11, col 55) +11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (428 to 464) SpanInfo: {"start":378,"length":12} + >numberC = -1 + >:=> (line 11, col 5) to (line 11, col 17) +-------------------------------- +12 >let [numberA3 = -1, ...robotAInfo] = robotA; + ~~~~~~~~~~~~~~~~~~~ => Pos: (465 to 483) SpanInfo: {"start":470,"length":13} + >numberA3 = -1 + >:=> (line 12, col 5) to (line 12, col 18) +12 >let [numberA3 = -1, ...robotAInfo] = robotA; + ~~~~~~~~~~~~~~ => Pos: (484 to 497) SpanInfo: {"start":485,"length":13} + >...robotAInfo + >:=> (line 12, col 20) to (line 12, col 33) +12 >let [numberA3 = -1, ...robotAInfo] = robotA; + ~~~~~~~~~~~ => Pos: (498 to 508) SpanInfo: {"start":470,"length":13} + >numberA3 = -1 + >:=> (line 12, col 5) to (line 12, col 18) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline new file mode 100644 index 00000000000..7a1667015fd --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline @@ -0,0 +1,102 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >type MultiSkilledRobot = [string, string[]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (53 to 97) SpanInfo: undefined +-------------------------------- +5 >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (98 to 161) SpanInfo: {"start":98,"length":62} + >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 5, col 0) to (line 5, col 62) +-------------------------------- +6 >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (162 to 235) SpanInfo: {"start":162,"length":72} + >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 6, col 0) to (line 6, col 72) +-------------------------------- +7 >let [, skillA = ["noSkill", "noSkill"]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (236 to 290) SpanInfo: {"start":243,"length":31} + >skillA = ["noSkill", "noSkill"] + >:=> (line 7, col 7) to (line 7, col 38) +-------------------------------- +8 >let [nameMB = "noName" ] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (291 to 330) SpanInfo: {"start":296,"length":17} + >nameMB = "noName" + >:=> (line 8, col 5) to (line 8, col 22) +-------------------------------- +9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (331 to 353) SpanInfo: {"start":336,"length":17} + >nameMA = "noName" + >:=> (line 9, col 5) to (line 9, col 22) +9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (354 to 381) SpanInfo: {"start":356,"length":25} + >primarySkillA = "noSkill" + >:=> (line 9, col 25) to (line 9, col 50) +9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (382 to 409) SpanInfo: {"start":383,"length":27} + >secondarySkillA = "noSkill" + >:=> (line 9, col 52) to (line 9, col 79) +9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + + ~=> Pos: (410 to 410) SpanInfo: {"start":356,"length":25} + >primarySkillA = "noSkill" + >:=> (line 9, col 25) to (line 9, col 50) +9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (411 to 435) SpanInfo: {"start":355,"length":81} + >[primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"] + >:=> (line 9, col 24) to (line 9, col 105) +9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; + + ~~~~~~~~~~~~~~~~~=> Pos: (436 to 452) SpanInfo: {"start":336,"length":17} + >nameMA = "noName" + >:=> (line 9, col 5) to (line 9, col 22) +-------------------------------- +10 >let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (453 to 514) SpanInfo: {"start":458,"length":17} + >nameMC = "noName" + >:=> (line 10, col 5) to (line 10, col 22) +-------------------------------- +11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (515 to 538) SpanInfo: {"start":520,"length":18} + >nameMC2 = "noName" + >:=> (line 11, col 5) to (line 11, col 23) +11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (539 to 566) SpanInfo: {"start":541,"length":25} + >primarySkillC = "noSkill" + >:=> (line 11, col 26) to (line 11, col 51) +11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (567 to 594) SpanInfo: {"start":568,"length":27} + >secondarySkillC = "noSkill" + >:=> (line 11, col 53) to (line 11, col 80) +11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + ~=> Pos: (595 to 595) SpanInfo: {"start":541,"length":25} + >primarySkillC = "noSkill" + >:=> (line 11, col 26) to (line 11, col 51) +11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (596 to 620) SpanInfo: {"start":540,"length":81} + >[primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"] + >:=> (line 11, col 25) to (line 11, col 106) +11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (621 to 658) SpanInfo: {"start":520,"length":18} + >nameMC2 = "noName" + >:=> (line 11, col 5) to (line 11, col 23) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts new file mode 100644 index 00000000000..eb4e3e17027 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern.ts @@ -0,0 +1,15 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////type Robot = [number, string, string]; +////var robotA: Robot = [1, "mower", "mowing"]; +////var robotB: Robot = [2, "trimmer", "trimming"]; +////let [, nameA] = robotA; +////let [numberB] = robotB; +////let [numberA2, nameA2, skillA2] = robotA; +////let [numberC2] = [3, "edging", "Trimming edges"]; +////let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; +////let [numberA3, ...robotAInfo] = robotA; + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts new file mode 100644 index 00000000000..265dae90ab9 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPattern2.ts @@ -0,0 +1,19 @@ +/// + +////declare var console: { +//// log(msg: string): void; +////} +////type MultiSkilledRobot = [string, [string, string]]; +////var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +//// +////let [, skillA] = multiRobotA; +////let [nameMB] = multiRobotB; +////let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; +//// +////let [nameMC] = ["roomba", ["vaccum", "mopping"]]; +////let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; +//// +////let [...multiRobotAInfo] = multiRobotA; + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..78b0646661e --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues.ts @@ -0,0 +1,15 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////type Robot = [number, string, string]; +////var robotA: Robot = [1, "mower", "mowing"]; +////var robotB: Robot = [2, "trimmer", "trimming"]; +////let [, nameA = "noName"] = robotA; +////let [numberB = -1] = robotB; +////let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; +////let [numberC2 = -1] = [3, "edging", "Trimming edges"]; +////let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; +////let [numberA3 = -1, ...robotAInfo] = robotA; + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..ac25165696c --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringVariableStatementArrayBindingPatternDefaultValues2.ts @@ -0,0 +1,14 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////type MultiSkilledRobot = [string, string[]]; +////var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////let [, skillA = ["noSkill", "noSkill"]] = multiRobotA; +////let [nameMB = "noName" ] = multiRobotB; +////let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; +////let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; +////let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From adcc6854568f0187c487ffc26ac2d5b40c9575fb Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Dec 2015 16:39:23 -0800 Subject: [PATCH 072/164] Fix the array binding pattern breakpoint span of variable declaration statement --- src/services/breakpoints.ts | 16 +++++++++++ ...iableStatementArrayBindingPattern.baseline | 22 +++------------ ...ableStatementArrayBindingPattern2.baseline | 26 ++++++----------- ...tArrayBindingPatternDefaultValues.baseline | 22 +++------------ ...ArrayBindingPatternDefaultValues2.baseline | 28 ++++--------------- 5 files changed, 37 insertions(+), 77 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 386970cac5a..94fbcb785e8 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -245,6 +245,9 @@ namespace ts.BreakpointResolver { case SyntaxKind.CloseBraceToken: return spanInCloseBraceToken(node); + + case SyntaxKind.CloseBracketToken: + return spanInCloseBracketToken(node); case SyntaxKind.OpenParenToken: return spanInOpenParenToken(node); @@ -512,6 +515,19 @@ namespace ts.BreakpointResolver { } } + function spanInCloseBracketToken(node: Node): TextSpan { + switch (node.parent.kind) { + case SyntaxKind.ArrayBindingPattern: + // Breakpoint in last binding element or binding pattern if it contains no elements + let bindingPattern = node.parent; + return spanInNode(lastOrUndefined(bindingPattern.elements) || bindingPattern); + + // Default to parent node + default: + return spanInNode(node.parent); + } + } + function spanInOpenParenToken(node: Node): TextSpan { if (node.parent.kind === SyntaxKind.DoStatement) { // Go to while keyword and do action instead diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline index 0263cafa0a6..0639ca49c9d 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern.baseline @@ -51,14 +51,9 @@ >:=> (line 9, col 15) to (line 9, col 21) 9 >let [numberA2, nameA2, skillA2] = robotA; - ~~~~~~~~ => Pos: (254 to 261) SpanInfo: {"start":255,"length":7} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (254 to 273) SpanInfo: {"start":255,"length":7} >skillA2 >:=> (line 9, col 23) to (line 9, col 30) -9 >let [numberA2, nameA2, skillA2] = robotA; - - ~~~~~~~~~~~~ => Pos: (262 to 273) SpanInfo: {"start":237,"length":8} - >numberA2 - >:=> (line 9, col 5) to (line 9, col 13) -------------------------------- 10 >let [numberC2] = [3, "edging", "Trimming edges"]; @@ -78,24 +73,15 @@ >:=> (line 11, col 14) to (line 11, col 19) 11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; - ~~~~~~~ => Pos: (344 to 350) SpanInfo: {"start":345,"length":6} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (344 to 387) SpanInfo: {"start":345,"length":6} >skillC >:=> (line 11, col 21) to (line 11, col 27) -11 >let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"]; - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (351 to 387) SpanInfo: {"start":329,"length":7} - >numberC - >:=> (line 11, col 5) to (line 11, col 12) -------------------------------- 12 >let [numberA3, ...robotAInfo] = robotA; ~~~~~~~~~~~~~~ => Pos: (388 to 401) SpanInfo: {"start":393,"length":8} >numberA3 >:=> (line 12, col 5) to (line 12, col 13) 12 >let [numberA3, ...robotAInfo] = robotA; - ~~~~~~~~~~~~~~ => Pos: (402 to 415) SpanInfo: {"start":403,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (402 to 426) SpanInfo: {"start":403,"length":13} >...robotAInfo - >:=> (line 12, col 15) to (line 12, col 28) -12 >let [numberA3, ...robotAInfo] = robotA; - ~~~~~~~~~~~ => Pos: (416 to 426) SpanInfo: {"start":393,"length":8} - >numberA3 - >:=> (line 12, col 5) to (line 12, col 13) \ No newline at end of file + >:=> (line 12, col 15) to (line 12, col 28) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline index 8b80f6420df..cb980a37c74 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPattern2.baseline @@ -55,19 +55,14 @@ >:=> (line 10, col 14) to (line 10, col 27) 10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; - ~~~~~~~~~~~~~~~~ => Pos: (331 to 346) SpanInfo: {"start":332,"length":15} + ~~~~~~~~~~~~~~~~~ => Pos: (331 to 347) SpanInfo: {"start":332,"length":15} >secondarySkillA >:=> (line 10, col 29) to (line 10, col 44) 10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; - ~ => Pos: (347 to 347) SpanInfo: {"start":317,"length":13} - >primarySkillA - >:=> (line 10, col 14) to (line 10, col 27) -10 >let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA; - - ~~~~~~~~~~~~~~~~~=> Pos: (348 to 364) SpanInfo: {"start":308,"length":6} - >nameMA - >:=> (line 10, col 5) to (line 10, col 11) + ~~~~~~~~~~~~~~~~~=> Pos: (348 to 364) SpanInfo: {"start":316,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 10, col 13) to (line 10, col 45) -------------------------------- 11 > @@ -91,19 +86,14 @@ >:=> (line 13, col 15) to (line 13, col 28) 13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; - ~~~~~~~~~~~~~~~~ => Pos: (445 to 460) SpanInfo: {"start":446,"length":15} + ~~~~~~~~~~~~~~~~~=> Pos: (445 to 461) SpanInfo: {"start":446,"length":15} >secondarySkillC >:=> (line 13, col 30) to (line 13, col 45) 13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; - ~=> Pos: (461 to 461) SpanInfo: {"start":431,"length":13} - >primarySkillC - >:=> (line 13, col 15) to (line 13, col 28) -13 >let [nameMC2, [primarySkillC, secondarySkillC]] = ["roomba", ["vaccum", "mopping"]]; - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (462 to 500) SpanInfo: {"start":421,"length":7} - >nameMC2 - >:=> (line 13, col 5) to (line 13, col 12) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (462 to 500) SpanInfo: {"start":430,"length":32} + >[primarySkillC, secondarySkillC] + >:=> (line 13, col 14) to (line 13, col 46) -------------------------------- 14 > diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline index 9f025f3646a..e3b43164563 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues.baseline @@ -51,14 +51,9 @@ >:=> (line 9, col 20) to (line 9, col 37) 9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; - ~~~~~~~~~~~~~~~~~~~~=> Pos: (286 to 305) SpanInfo: {"start":287,"length":19} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (286 to 317) SpanInfo: {"start":287,"length":19} >skillA2 = "noSkill" >:=> (line 9, col 39) to (line 9, col 58) -9 >let [numberA2 = -1, nameA2 = "noName", skillA2 = "noSkill"] = robotA; - - ~~~~~~~~~~~~=> Pos: (306 to 317) SpanInfo: {"start":253,"length":13} - >numberA2 = -1 - >:=> (line 9, col 5) to (line 9, col 18) -------------------------------- 10 >let [numberC2 = -1] = [3, "edging", "Trimming edges"]; @@ -78,24 +73,15 @@ >:=> (line 11, col 19) to (line 11, col 35) 11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; - ~~~~~~~~~~~~~~~~~~~=> Pos: (409 to 427) SpanInfo: {"start":410,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (409 to 464) SpanInfo: {"start":410,"length":18} >skillC = "noSkill" >:=> (line 11, col 37) to (line 11, col 55) -11 >let [numberC = -1, nameC = "noName", skillC = "noSkill"] = [3, "edging", "Trimming edges"]; - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (428 to 464) SpanInfo: {"start":378,"length":12} - >numberC = -1 - >:=> (line 11, col 5) to (line 11, col 17) -------------------------------- 12 >let [numberA3 = -1, ...robotAInfo] = robotA; ~~~~~~~~~~~~~~~~~~~ => Pos: (465 to 483) SpanInfo: {"start":470,"length":13} >numberA3 = -1 >:=> (line 12, col 5) to (line 12, col 18) 12 >let [numberA3 = -1, ...robotAInfo] = robotA; - ~~~~~~~~~~~~~~ => Pos: (484 to 497) SpanInfo: {"start":485,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (484 to 508) SpanInfo: {"start":485,"length":13} >...robotAInfo - >:=> (line 12, col 20) to (line 12, col 33) -12 >let [numberA3 = -1, ...robotAInfo] = robotA; - ~~~~~~~~~~~ => Pos: (498 to 508) SpanInfo: {"start":470,"length":13} - >numberA3 = -1 - >:=> (line 12, col 5) to (line 12, col 18) \ No newline at end of file + >:=> (line 12, col 20) to (line 12, col 33) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline index 7a1667015fd..ddbfdd29268 100644 --- a/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline +++ b/tests/baselines/reference/bpSpanDestructuringVariableStatementArrayBindingPatternDefaultValues2.baseline @@ -51,24 +51,14 @@ >:=> (line 9, col 25) to (line 9, col 50) 9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (382 to 409) SpanInfo: {"start":383,"length":27} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (382 to 410) SpanInfo: {"start":383,"length":27} >secondarySkillA = "noSkill" >:=> (line 9, col 52) to (line 9, col 79) 9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; - ~=> Pos: (410 to 410) SpanInfo: {"start":356,"length":25} - >primarySkillA = "noSkill" - >:=> (line 9, col 25) to (line 9, col 50) -9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; - - ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (411 to 435) SpanInfo: {"start":355,"length":81} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (411 to 452) SpanInfo: {"start":355,"length":81} >[primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"] >:=> (line 9, col 24) to (line 9, col 105) -9 >let [nameMA = "noName", [primarySkillA = "noSkill", secondarySkillA = "noSkill"] = ["noSkill", "noSkill"]] = multiRobotA; - - ~~~~~~~~~~~~~~~~~=> Pos: (436 to 452) SpanInfo: {"start":336,"length":17} - >nameMA = "noName" - >:=> (line 9, col 5) to (line 9, col 22) -------------------------------- 10 >let [nameMC = "noName" ] = ["roomba", ["vaccum", "mopping"]]; @@ -85,18 +75,10 @@ >primarySkillC = "noSkill" >:=> (line 11, col 26) to (line 11, col 51) 11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (567 to 594) SpanInfo: {"start":568,"length":27} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (567 to 595) SpanInfo: {"start":568,"length":27} >secondarySkillC = "noSkill" >:=> (line 11, col 53) to (line 11, col 80) 11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; - ~=> Pos: (595 to 595) SpanInfo: {"start":541,"length":25} - >primarySkillC = "noSkill" - >:=> (line 11, col 26) to (line 11, col 51) -11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (596 to 620) SpanInfo: {"start":540,"length":81} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (596 to 658) SpanInfo: {"start":540,"length":81} >[primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"] - >:=> (line 11, col 25) to (line 11, col 106) -11 >let [nameMC2 = "noName", [primarySkillC = "noSkill", secondarySkillC = "noSkill"] = ["noSkill", "noSkill"]] = ["roomba", ["vaccum", "mopping"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (621 to 658) SpanInfo: {"start":520,"length":18} - >nameMC2 = "noName" - >:=> (line 11, col 5) to (line 11, col 23) \ No newline at end of file + >:=> (line 11, col 25) to (line 11, col 106) \ No newline at end of file From 3f65a31a4f998c950b46b4ab302dd89031fc6ab8 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 17 Dec 2015 16:43:55 -0800 Subject: [PATCH 073/164] Property show images in Language Specification markdown --- doc/images/image1.png | Bin 0 -> 11672 bytes doc/images/image2.png | Bin 0 -> 10238 bytes doc/images/image3.png | Bin 0 -> 6003 bytes doc/images/image4.png | Bin 0 -> 16082 bytes doc/spec.md | 8 ++++---- scripts/word2md.js | 7 +++++++ scripts/word2md.ts | 14 ++++++++++++++ 7 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 doc/images/image1.png create mode 100644 doc/images/image2.png create mode 100644 doc/images/image3.png create mode 100644 doc/images/image4.png diff --git a/doc/images/image1.png b/doc/images/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..e1db88fa4f8637f06f77e971dcdee24d5cc9cf50 GIT binary patch literal 11672 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 literal 0 HcmV?d00001 diff --git a/doc/images/image2.png b/doc/images/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..c032103805785e018ae0f10cfc9a263358e436c4 GIT binary patch literal 10238 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 literal 0 HcmV?d00001 diff --git a/doc/images/image3.png b/doc/images/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe2ecb8f3e9d86242f2eff83bf982b06104fddc GIT binary patch literal 6003 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 VmqMj#8kokCmsXZ~|MYp_{{cK?Wjz1@ literal 0 HcmV?d00001 diff --git a/doc/spec.md b/doc/spec.md index a7947b19926..8114398ae5b 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -262,7 +262,7 @@ function f() { To benefit from this inference, a programmer can use the TypeScript language service. For example, a code editor can incorporate the TypeScript language service and use the service to find the members of a string object as in the following screen shot. -/ +![](images/image1.png) In this example, the programmer benefits from type inference without providing type annotations. Some beneficial tools, however, do require the programmer to provide type annotations. In TypeScript, we can express a parameter requirement as in the following code fragment. @@ -410,7 +410,7 @@ This signature denotes that a function may be passed as the parameter of the '$' A typical client would not need to add any additional typing but could just use a community-supplied typing to discover (through statement completion with documentation tips) and verify (through static checking) correct use of the library, as in the following screen shot. -/ +![](images/image2.png) Section [3.3](#3.3) provides additional information about object types. @@ -627,7 +627,7 @@ An important goal of TypeScript is to provide accurate and straightforward types JavaScript programming interfaces often include functions whose behavior is discriminated by a string constant passed to the function. The Document Object Model makes heavy use of this pattern. For example, the following screen shot shows that the 'createElement' method of the 'document' object has multiple signatures, some of which identify the types returned when specific strings are passed into the method. -/ +![](images/image3.png) The following code fragment uses this feature. Because the 'span' variable is inferred to have the type 'HTMLSpanElement', the code can reference without static error the 'isMultiline' property of 'span'. @@ -638,7 +638,7 @@ span.isMultiLine = false; // OK: HTMLSpanElement has isMultiline property In the following screen shot, a programming tool combines information from overloading on string parameters with contextual typing to infer that the type of the variable 'e' is 'MouseEvent' and that therefore 'e' has a 'clientX' property. -/ +![](images/image4.png) Section [3.9.2.4](#3.9.2.4) provides details on how to use string literals in function signatures. diff --git a/scripts/word2md.js b/scripts/word2md.js index e80275d5b2d..2866c92d580 100644 --- a/scripts/word2md.js +++ b/scripts/word2md.js @@ -47,6 +47,7 @@ function convertDocumentToMarkdown(doc) { var tableColumnCount; var tableCellIndex; var columnAlignment = []; + var imageCount = 0; function setProperties(target, properties) { for (var name in properties) { if (properties.hasOwnProperty(name)) { @@ -120,12 +121,18 @@ function convertDocumentToMarkdown(doc) { var text = p.range.text; var style = p.style.nameLocal; var inTable = p.range.tables.count > 0; + var containsImage = p.range.inlineShapes.count > 0; var level = 1; var sectionBreak = text.indexOf("\x0C") >= 0; text = trimEndFormattingMarks(text); if (inTable) { style = "Table"; } + else if (containsImage) { + imageCount++; + write("![](images/image" + imageCount + ".png)\n\n"); + text = ""; + } else if (style.match(/\s\d$/)) { level = +style.substr(style.length - 1); style = style.substr(0, style.length - 2); diff --git a/scripts/word2md.ts b/scripts/word2md.ts index ec9ed634b3c..1e9d7879f20 100644 --- a/scripts/word2md.ts +++ b/scripts/word2md.ts @@ -67,10 +67,17 @@ module Word { export interface Tables extends Collection { } + export interface InlineShape { + } + + export interface InlineShapes extends Collection { + } + export interface Range { find: Find; listFormat: ListFormat; tables: Tables; + inlineShapes: InlineShapes; text: string; words: Ranges; } @@ -180,6 +187,7 @@ function convertDocumentToMarkdown(doc: Word.Document): string { var tableColumnCount: number; var tableCellIndex: number; var columnAlignment: number[] = []; + var imageCount: number = 0; function setProperties(target: any, properties: any) { for (var name in properties) { @@ -261,6 +269,7 @@ function convertDocumentToMarkdown(doc: Word.Document): string { var text = p.range.text; var style = p.style.nameLocal; var inTable = p.range.tables.count > 0; + var containsImage = p.range.inlineShapes.count > 0; var level = 1; var sectionBreak = text.indexOf("\x0C") >= 0; @@ -268,6 +277,11 @@ function convertDocumentToMarkdown(doc: Word.Document): string { if (inTable) { style = "Table"; } + else if (containsImage) { + imageCount++; + write("![](images/image" + imageCount + ".png)\n\n"); + text = ""; + } else if (style.match(/\s\d$/)) { level = +style.substr(style.length - 1); style = style.substr(0, style.length - 2); From 549fbf58ac68925a451daa0160afcbbc7b840e3c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 17 Dec 2015 16:50:22 -0800 Subject: [PATCH 074/164] Adjusting indentation --- doc/spec.md | 8 ++++---- scripts/word2md.js | 2 +- scripts/word2md.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/spec.md b/doc/spec.md index 8114398ae5b..75745f32653 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -262,7 +262,7 @@ function f() { To benefit from this inference, a programmer can use the TypeScript language service. For example, a code editor can incorporate the TypeScript language service and use the service to find the members of a string object as in the following screen shot. -![](images/image1.png) +   ![](images/image1.png) In this example, the programmer benefits from type inference without providing type annotations. Some beneficial tools, however, do require the programmer to provide type annotations. In TypeScript, we can express a parameter requirement as in the following code fragment. @@ -410,7 +410,7 @@ This signature denotes that a function may be passed as the parameter of the '$' A typical client would not need to add any additional typing but could just use a community-supplied typing to discover (through statement completion with documentation tips) and verify (through static checking) correct use of the library, as in the following screen shot. -![](images/image2.png) +   ![](images/image2.png) Section [3.3](#3.3) provides additional information about object types. @@ -627,7 +627,7 @@ An important goal of TypeScript is to provide accurate and straightforward types JavaScript programming interfaces often include functions whose behavior is discriminated by a string constant passed to the function. The Document Object Model makes heavy use of this pattern. For example, the following screen shot shows that the 'createElement' method of the 'document' object has multiple signatures, some of which identify the types returned when specific strings are passed into the method. -![](images/image3.png) +   ![](images/image3.png) The following code fragment uses this feature. Because the 'span' variable is inferred to have the type 'HTMLSpanElement', the code can reference without static error the 'isMultiline' property of 'span'. @@ -638,7 +638,7 @@ span.isMultiLine = false; // OK: HTMLSpanElement has isMultiline property In the following screen shot, a programming tool combines information from overloading on string parameters with contextual typing to infer that the type of the variable 'e' is 'MouseEvent' and that therefore 'e' has a 'clientX' property. -![](images/image4.png) +   ![](images/image4.png) Section [3.9.2.4](#3.9.2.4) provides details on how to use string literals in function signatures. diff --git a/scripts/word2md.js b/scripts/word2md.js index 2866c92d580..33dec3259fb 100644 --- a/scripts/word2md.js +++ b/scripts/word2md.js @@ -130,7 +130,7 @@ function convertDocumentToMarkdown(doc) { } else if (containsImage) { imageCount++; - write("![](images/image" + imageCount + ".png)\n\n"); + write("   ![](images/image" + imageCount + ".png)\n\n"); text = ""; } else if (style.match(/\s\d$/)) { diff --git a/scripts/word2md.ts b/scripts/word2md.ts index 1e9d7879f20..f8aecb8f611 100644 --- a/scripts/word2md.ts +++ b/scripts/word2md.ts @@ -279,7 +279,7 @@ function convertDocumentToMarkdown(doc: Word.Document): string { } else if (containsImage) { imageCount++; - write("![](images/image" + imageCount + ".png)\n\n"); + write("   ![](images/image" + imageCount + ".png)\n\n"); text = ""; } else if (style.match(/\s\d$/)) { From 73498e8bc2003ede4067fba58ee80e7cf9a14e76 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 17 Dec 2015 16:53:59 -0800 Subject: [PATCH 075/164] Test cases for parameter destructuring pattern --- ...uringParameterArrayBindingPattern.baseline | 196 ++++++++++++ ...ringParameterArrayBindingPattern2.baseline | 196 ++++++++++++ ...rArrayBindingPatternDefaultValues.baseline | 216 +++++++++++++ ...ArrayBindingPatternDefaultValues2.baseline | 182 +++++++++++ ...rameterNestedObjectBindingPattern.baseline | 200 ++++++++++++ ...ObjectBindingPatternDefaultValues.baseline | 300 ++++++++++++++++++ ...ringParameterObjectBindingPattern.baseline | 164 ++++++++++ ...ObjectBindingPatternDefaultValues.baseline | 179 +++++++++++ ...structuringParameterArrayBindingPattern.ts | 29 ++ ...tructuringParameterArrayBindingPattern2.ts | 29 ++ ...rameterArrayBindingPatternDefaultValues.ts | 28 ++ ...ameterArrayBindingPatternDefaultValues2.ts | 25 ++ ...ringParameterNestedObjectBindingPattern.ts | 28 ++ ...NestedObjectBindingPatternDefaultValues.ts | 41 +++ ...tructuringParameterObjectBindingPattern.ts | 26 ++ ...ameterObjectBindingPatternDefaultValues.ts | 26 ++ 16 files changed, 1865 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern2.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues2.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline new file mode 100644 index 00000000000..c0738652a8e --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline @@ -0,0 +1,196 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >var robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (89 to 132) SpanInfo: {"start":89,"length":42} + >var robotA: Robot = [1, "mower", "mowing"] + >:=> (line 5, col 0) to (line 5, col 42) +-------------------------------- +6 >function foo1([, nameA]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (133 to 146) SpanInfo: {"start":171,"length":18} + >console.log(nameA) + >:=> (line 7, col 4) to (line 7, col 22) +6 >function foo1([, nameA]: Robot) { + + ~~~~~~~~~ => Pos: (147 to 155) SpanInfo: {"start":150,"length":5} + >nameA + >:=> (line 6, col 17) to (line 6, col 22) +6 >function foo1([, nameA]: Robot) { + + ~~~~~~~~~~~ => Pos: (156 to 166) SpanInfo: {"start":171,"length":18} + >console.log(nameA) + >:=> (line 7, col 4) to (line 7, col 22) +-------------------------------- +7 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (167 to 190) SpanInfo: {"start":171,"length":18} + >console.log(nameA) + >:=> (line 7, col 4) to (line 7, col 22) +-------------------------------- +8 >} + + ~~ => Pos: (191 to 192) SpanInfo: {"start":191,"length":1} + >} + >:=> (line 8, col 0) to (line 8, col 1) +-------------------------------- +9 >function foo2([numberB]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (193 to 206) SpanInfo: {"start":231,"length":20} + >console.log(numberB) + >:=> (line 10, col 4) to (line 10, col 24) +9 >function foo2([numberB]: Robot) { + + ~~~~~~~~~ => Pos: (207 to 215) SpanInfo: {"start":208,"length":7} + >numberB + >:=> (line 9, col 15) to (line 9, col 22) +9 >function foo2([numberB]: Robot) { + + ~~~~~~~~~~~ => Pos: (216 to 226) SpanInfo: {"start":231,"length":20} + >console.log(numberB) + >:=> (line 10, col 4) to (line 10, col 24) +-------------------------------- +10 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (227 to 252) SpanInfo: {"start":231,"length":20} + >console.log(numberB) + >:=> (line 10, col 4) to (line 10, col 24) +-------------------------------- +11 >} + + ~~ => Pos: (253 to 254) SpanInfo: {"start":253,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >function foo3([numberA2, nameA2, skillA2]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (255 to 268) SpanInfo: {"start":311,"length":19} + >console.log(nameA2) + >:=> (line 13, col 4) to (line 13, col 23) +12 >function foo3([numberA2, nameA2, skillA2]: Robot) { + + ~~~~~~~~~~ => Pos: (269 to 278) SpanInfo: {"start":270,"length":8} + >numberA2 + >:=> (line 12, col 15) to (line 12, col 23) +12 >function foo3([numberA2, nameA2, skillA2]: Robot) { + + ~~~~~~~~ => Pos: (279 to 286) SpanInfo: {"start":280,"length":6} + >nameA2 + >:=> (line 12, col 25) to (line 12, col 31) +12 >function foo3([numberA2, nameA2, skillA2]: Robot) { + + ~~~~~~~~~ => Pos: (287 to 295) SpanInfo: {"start":288,"length":7} + >skillA2 + >:=> (line 12, col 33) to (line 12, col 40) +12 >function foo3([numberA2, nameA2, skillA2]: Robot) { + + ~~~~~~~~~~~=> Pos: (296 to 306) SpanInfo: {"start":311,"length":19} + >console.log(nameA2) + >:=> (line 13, col 4) to (line 13, col 23) +-------------------------------- +13 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (307 to 331) SpanInfo: {"start":311,"length":19} + >console.log(nameA2) + >:=> (line 13, col 4) to (line 13, col 23) +-------------------------------- +14 >} + + ~~ => Pos: (332 to 333) SpanInfo: {"start":332,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >function foo4([numberA3, ...robotAInfo]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (334 to 347) SpanInfo: {"start":388,"length":23} + >console.log(robotAInfo) + >:=> (line 16, col 4) to (line 16, col 27) +15 >function foo4([numberA3, ...robotAInfo]: Robot) { + + ~~~~~~~~~~ => Pos: (348 to 357) SpanInfo: {"start":349,"length":8} + >numberA3 + >:=> (line 15, col 15) to (line 15, col 23) +15 >function foo4([numberA3, ...robotAInfo]: Robot) { + + ~~~~~~~~~~~~~~~ => Pos: (358 to 372) SpanInfo: {"start":359,"length":13} + >...robotAInfo + >:=> (line 15, col 25) to (line 15, col 38) +15 >function foo4([numberA3, ...robotAInfo]: Robot) { + + ~~~~~~~~~~~=> Pos: (373 to 383) SpanInfo: {"start":388,"length":23} + >console.log(robotAInfo) + >:=> (line 16, col 4) to (line 16, col 27) +-------------------------------- +16 > console.log(robotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (384 to 412) SpanInfo: {"start":388,"length":23} + >console.log(robotAInfo) + >:=> (line 16, col 4) to (line 16, col 27) +-------------------------------- +17 >} + + ~~ => Pos: (413 to 414) SpanInfo: {"start":413,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (415 to 428) SpanInfo: {"start":415,"length":12} + >foo1(robotA) + >:=> (line 18, col 0) to (line 18, col 12) +-------------------------------- +19 >foo1([2, "trimmer", "trimming"]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (429 to 462) SpanInfo: {"start":429,"length":32} + >foo1([2, "trimmer", "trimming"]) + >:=> (line 19, col 0) to (line 19, col 32) +-------------------------------- +20 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (463 to 476) SpanInfo: {"start":463,"length":12} + >foo2(robotA) + >:=> (line 20, col 0) to (line 20, col 12) +-------------------------------- +21 >foo2([2, "trimmer", "trimming"]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (477 to 510) SpanInfo: {"start":477,"length":32} + >foo2([2, "trimmer", "trimming"]) + >:=> (line 21, col 0) to (line 21, col 32) +-------------------------------- +22 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (511 to 524) SpanInfo: {"start":511,"length":12} + >foo3(robotA) + >:=> (line 22, col 0) to (line 22, col 12) +-------------------------------- +23 >foo3([2, "trimmer", "trimming"]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (525 to 558) SpanInfo: {"start":525,"length":32} + >foo3([2, "trimmer", "trimming"]) + >:=> (line 23, col 0) to (line 23, col 32) +-------------------------------- +24 >foo4(robotA); + + ~~~~~~~~~~~~~~ => Pos: (559 to 572) SpanInfo: {"start":559,"length":12} + >foo4(robotA) + >:=> (line 24, col 0) to (line 24, col 12) +-------------------------------- +25 >foo4([2, "trimmer", "trimming"]); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (573 to 605) SpanInfo: {"start":573,"length":32} + >foo4([2, "trimmer", "trimming"]) + >:=> (line 25, col 0) to (line 25, col 32) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline new file mode 100644 index 00000000000..254e3a16bb0 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline @@ -0,0 +1,196 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 90) SpanInfo: undefined +-------------------------------- +5 >var robotA: Robot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (91 to 147) SpanInfo: {"start":91,"length":55} + >var robotA: Robot = ["trimmer", ["trimming", "edging"]] + >:=> (line 5, col 0) to (line 5, col 55) +-------------------------------- +6 >function foo1([, skillA]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: {"start":187,"length":19} + >console.log(skillA) + >:=> (line 7, col 4) to (line 7, col 23) +6 >function foo1([, skillA]: Robot) { + + ~~~~~~~~~~ => Pos: (162 to 171) SpanInfo: {"start":165,"length":6} + >skillA + >:=> (line 6, col 17) to (line 6, col 23) +6 >function foo1([, skillA]: Robot) { + + ~~~~~~~~~~~ => Pos: (172 to 182) SpanInfo: {"start":187,"length":19} + >console.log(skillA) + >:=> (line 7, col 4) to (line 7, col 23) +-------------------------------- +7 > console.log(skillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (183 to 207) SpanInfo: {"start":187,"length":19} + >console.log(skillA) + >:=> (line 7, col 4) to (line 7, col 23) +-------------------------------- +8 >} + + ~~ => Pos: (208 to 209) SpanInfo: {"start":208,"length":1} + >} + >:=> (line 8, col 0) to (line 8, col 1) +-------------------------------- +9 >function foo2([nameMB]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (210 to 223) SpanInfo: {"start":247,"length":19} + >console.log(nameMB) + >:=> (line 10, col 4) to (line 10, col 23) +9 >function foo2([nameMB]: Robot) { + + ~~~~~~~~ => Pos: (224 to 231) SpanInfo: {"start":225,"length":6} + >nameMB + >:=> (line 9, col 15) to (line 9, col 21) +9 >function foo2([nameMB]: Robot) { + + ~~~~~~~~~~~ => Pos: (232 to 242) SpanInfo: {"start":247,"length":19} + >console.log(nameMB) + >:=> (line 10, col 4) to (line 10, col 23) +-------------------------------- +10 > console.log(nameMB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (243 to 267) SpanInfo: {"start":247,"length":19} + >console.log(nameMB) + >:=> (line 10, col 4) to (line 10, col 23) +-------------------------------- +11 >} + + ~~ => Pos: (268 to 269) SpanInfo: {"start":268,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (270 to 283) SpanInfo: {"start":341,"length":19} + >console.log(nameMA) + >:=> (line 13, col 4) to (line 13, col 23) +12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + + ~~~~~~~~ => Pos: (284 to 291) SpanInfo: {"start":285,"length":6} + >nameMA + >:=> (line 12, col 15) to (line 12, col 21) +12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + + ~~~~~~~~~~~~~~~~ => Pos: (292 to 307) SpanInfo: {"start":294,"length":13} + >primarySkillA + >:=> (line 12, col 24) to (line 12, col 37) +12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + + ~~~~~~~~~~~~~~~~~=> Pos: (308 to 324) SpanInfo: {"start":309,"length":15} + >secondarySkillA + >:=> (line 12, col 39) to (line 12, col 54) +12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + + ~=> Pos: (325 to 325) SpanInfo: {"start":293,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 12, col 23) to (line 12, col 55) +12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { + + ~~~~~~~~~~~=> Pos: (326 to 336) SpanInfo: {"start":341,"length":19} + >console.log(nameMA) + >:=> (line 13, col 4) to (line 13, col 23) +-------------------------------- +13 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (337 to 361) SpanInfo: {"start":341,"length":19} + >console.log(nameMA) + >:=> (line 13, col 4) to (line 13, col 23) +-------------------------------- +14 >} + + ~~ => Pos: (362 to 363) SpanInfo: {"start":362,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >function foo4([...multiRobotAInfo]: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (364 to 377) SpanInfo: {"start":413,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 16, col 4) to (line 16, col 32) +15 >function foo4([...multiRobotAInfo]: Robot) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (378 to 397) SpanInfo: {"start":379,"length":18} + >...multiRobotAInfo + >:=> (line 15, col 15) to (line 15, col 33) +15 >function foo4([...multiRobotAInfo]: Robot) { + + ~~~~~~~~~~~ => Pos: (398 to 408) SpanInfo: {"start":413,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 16, col 4) to (line 16, col 32) +-------------------------------- +16 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (409 to 442) SpanInfo: {"start":413,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 16, col 4) to (line 16, col 32) +-------------------------------- +17 >} + + ~~ => Pos: (443 to 444) SpanInfo: {"start":443,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (445 to 458) SpanInfo: {"start":445,"length":12} + >foo1(robotA) + >:=> (line 18, col 0) to (line 18, col 12) +-------------------------------- +19 >foo1(["roomba", ["vaccum", "mopping"]]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (459 to 499) SpanInfo: {"start":459,"length":39} + >foo1(["roomba", ["vaccum", "mopping"]]) + >:=> (line 19, col 0) to (line 19, col 39) +-------------------------------- +20 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (500 to 513) SpanInfo: {"start":500,"length":12} + >foo2(robotA) + >:=> (line 20, col 0) to (line 20, col 12) +-------------------------------- +21 >foo2(["roomba", ["vaccum", "mopping"]]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (514 to 554) SpanInfo: {"start":514,"length":39} + >foo2(["roomba", ["vaccum", "mopping"]]) + >:=> (line 21, col 0) to (line 21, col 39) +-------------------------------- +22 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (555 to 568) SpanInfo: {"start":555,"length":12} + >foo3(robotA) + >:=> (line 22, col 0) to (line 22, col 12) +-------------------------------- +23 >foo3(["roomba", ["vaccum", "mopping"]]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (569 to 609) SpanInfo: {"start":569,"length":39} + >foo3(["roomba", ["vaccum", "mopping"]]) + >:=> (line 23, col 0) to (line 23, col 39) +-------------------------------- +24 >foo4(robotA); + + ~~~~~~~~~~~~~~ => Pos: (610 to 623) SpanInfo: {"start":610,"length":12} + >foo4(robotA) + >:=> (line 24, col 0) to (line 24, col 12) +-------------------------------- +25 >foo4(["roomba", ["vaccum", "mopping"]]); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (624 to 663) SpanInfo: {"start":624,"length":39} + >foo4(["roomba", ["vaccum", "mopping"]]) + >:=> (line 25, col 0) to (line 25, col 39) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..4208b8de46b --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,216 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >var robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (89 to 132) SpanInfo: {"start":89,"length":42} + >var robotA: Robot = [1, "mower", "mowing"] + >:=> (line 5, col 0) to (line 5, col 42) +-------------------------------- +6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~ => Pos: (133 to 146) SpanInfo: {"start":206,"length":18} + >console.log(nameA) + >:=> (line 7, col 4) to (line 7, col 22) +6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (147 to 166) SpanInfo: {"start":150,"length":16} + >nameA = "noName" + >:=> (line 6, col 17) to (line 6, col 33) +6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (167 to 198) SpanInfo: {"start":147,"length":51} + >[, nameA = "noName"]: Robot = [-1, "name", "skill"] + >:=> (line 6, col 14) to (line 6, col 65) +6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { + + ~~~=> Pos: (199 to 201) SpanInfo: {"start":206,"length":18} + >console.log(nameA) + >:=> (line 7, col 4) to (line 7, col 22) +-------------------------------- +7 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (202 to 225) SpanInfo: {"start":206,"length":18} + >console.log(nameA) + >:=> (line 7, col 4) to (line 7, col 22) +-------------------------------- +8 >} + + ~~ => Pos: (226 to 227) SpanInfo: {"start":226,"length":1} + >} + >:=> (line 8, col 0) to (line 8, col 1) +-------------------------------- +9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~ => Pos: (228 to 241) SpanInfo: {"start":295,"length":20} + >console.log(numberB) + >:=> (line 10, col 4) to (line 10, col 24) +9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~ => Pos: (242 to 255) SpanInfo: {"start":243,"length":12} + >numberB = -1 + >:=> (line 9, col 15) to (line 9, col 27) +9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (256 to 287) SpanInfo: {"start":242,"length":45} + >[numberB = -1]: Robot = [-1, "name", "skill"] + >:=> (line 9, col 14) to (line 9, col 59) +9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { + + ~~~=> Pos: (288 to 290) SpanInfo: {"start":295,"length":20} + >console.log(numberB) + >:=> (line 10, col 4) to (line 10, col 24) +-------------------------------- +10 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (291 to 316) SpanInfo: {"start":295,"length":20} + >console.log(numberB) + >:=> (line 10, col 4) to (line 10, col 24) +-------------------------------- +11 >} + + ~~ => Pos: (317 to 318) SpanInfo: {"start":317,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~ => Pos: (319 to 332) SpanInfo: {"start":423,"length":19} + >console.log(nameA2) + >:=> (line 13, col 4) to (line 13, col 23) +12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~ => Pos: (333 to 347) SpanInfo: {"start":334,"length":13} + >numberA2 = -1 + >:=> (line 12, col 15) to (line 12, col 28) +12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~=> Pos: (348 to 364) SpanInfo: {"start":349,"length":15} + >nameA2 = "name" + >:=> (line 12, col 30) to (line 12, col 45) +12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (365 to 383) SpanInfo: {"start":366,"length":17} + >skillA2 = "skill" + >:=> (line 12, col 47) to (line 12, col 64) +12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (384 to 415) SpanInfo: {"start":333,"length":82} + >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"] + >:=> (line 12, col 14) to (line 12, col 96) +12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { + + ~~~=> Pos: (416 to 418) SpanInfo: {"start":423,"length":19} + >console.log(nameA2) + >:=> (line 13, col 4) to (line 13, col 23) +-------------------------------- +13 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (419 to 443) SpanInfo: {"start":423,"length":19} + >console.log(nameA2) + >:=> (line 13, col 4) to (line 13, col 23) +-------------------------------- +14 >} + + ~~ => Pos: (444 to 445) SpanInfo: {"start":444,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~ => Pos: (446 to 459) SpanInfo: {"start":529,"length":23} + >console.log(robotAInfo) + >:=> (line 16, col 4) to (line 16, col 27) +15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~ => Pos: (460 to 474) SpanInfo: {"start":461,"length":13} + >numberA3 = -1 + >:=> (line 15, col 15) to (line 15, col 28) +15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~ => Pos: (475 to 489) SpanInfo: {"start":476,"length":13} + >...robotAInfo + >:=> (line 15, col 30) to (line 15, col 43) +15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (490 to 521) SpanInfo: {"start":460,"length":61} + >[numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"] + >:=> (line 15, col 14) to (line 15, col 75) +15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { + + ~~~=> Pos: (522 to 524) SpanInfo: {"start":529,"length":23} + >console.log(robotAInfo) + >:=> (line 16, col 4) to (line 16, col 27) +-------------------------------- +16 > console.log(robotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (525 to 553) SpanInfo: {"start":529,"length":23} + >console.log(robotAInfo) + >:=> (line 16, col 4) to (line 16, col 27) +-------------------------------- +17 >} + + ~~ => Pos: (554 to 555) SpanInfo: {"start":554,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (556 to 569) SpanInfo: {"start":556,"length":12} + >foo1(robotA) + >:=> (line 18, col 0) to (line 18, col 12) +-------------------------------- +19 >foo1([2, "trimmer", "trimming"]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (570 to 603) SpanInfo: {"start":570,"length":32} + >foo1([2, "trimmer", "trimming"]) + >:=> (line 19, col 0) to (line 19, col 32) +-------------------------------- +20 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (604 to 617) SpanInfo: {"start":604,"length":12} + >foo2(robotA) + >:=> (line 20, col 0) to (line 20, col 12) +-------------------------------- +21 >foo2([2, "trimmer", "trimming"]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (618 to 651) SpanInfo: {"start":618,"length":32} + >foo2([2, "trimmer", "trimming"]) + >:=> (line 21, col 0) to (line 21, col 32) +-------------------------------- +22 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (652 to 665) SpanInfo: {"start":652,"length":12} + >foo3(robotA) + >:=> (line 22, col 0) to (line 22, col 12) +-------------------------------- +23 >foo3([2, "trimmer", "trimming"]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (666 to 699) SpanInfo: {"start":666,"length":32} + >foo3([2, "trimmer", "trimming"]) + >:=> (line 23, col 0) to (line 23, col 32) +-------------------------------- +24 >foo4(robotA); + + ~~~~~~~~~~~~~~ => Pos: (700 to 713) SpanInfo: {"start":700,"length":12} + >foo4(robotA) + >:=> (line 24, col 0) to (line 24, col 12) +-------------------------------- +25 >foo4([2, "trimmer", "trimming"]); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (714 to 746) SpanInfo: {"start":714,"length":32} + >foo4([2, "trimmer", "trimming"]) + >:=> (line 25, col 0) to (line 25, col 32) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline new file mode 100644 index 00000000000..b2c63f3b2be --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline @@ -0,0 +1,182 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [string, string[]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 82) SpanInfo: undefined +-------------------------------- +5 >var robotA: Robot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (83 to 139) SpanInfo: {"start":83,"length":55} + >var robotA: Robot = ["trimmer", ["trimming", "edging"]] + >:=> (line 5, col 0) to (line 5, col 55) +-------------------------------- +6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { + + ~~~~~~~~~~~~~~ => Pos: (140 to 153) SpanInfo: {"start":236,"length":19} + >console.log(skillA) + >:=> (line 7, col 4) to (line 7, col 23) +6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (154 to 188) SpanInfo: {"start":157,"length":31} + >skillA = ["noSkill", "noSkill"] + >:=> (line 6, col 17) to (line 6, col 48) +6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (189 to 228) SpanInfo: {"start":154,"length":74} + >[, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]] + >:=> (line 6, col 14) to (line 6, col 88) +6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { + + ~~~=> Pos: (229 to 231) SpanInfo: {"start":236,"length":19} + >console.log(skillA) + >:=> (line 7, col 4) to (line 7, col 23) +-------------------------------- +7 > console.log(skillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (232 to 256) SpanInfo: {"start":236,"length":19} + >console.log(skillA) + >:=> (line 7, col 4) to (line 7, col 23) +-------------------------------- +8 >} + + ~~ => Pos: (257 to 258) SpanInfo: {"start":257,"length":1} + >} + >:=> (line 8, col 0) to (line 8, col 1) +-------------------------------- +9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { + + ~~~~~~~~~~~~~~ => Pos: (259 to 272) SpanInfo: {"start":340,"length":19} + >console.log(nameMB) + >:=> (line 10, col 4) to (line 10, col 23) +9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (273 to 291) SpanInfo: {"start":274,"length":17} + >nameMB = "noName" + >:=> (line 9, col 15) to (line 9, col 32) +9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (292 to 332) SpanInfo: {"start":273,"length":59} + >[nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]] + >:=> (line 9, col 14) to (line 9, col 73) +9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { + + ~~~=> Pos: (333 to 335) SpanInfo: {"start":340,"length":19} + >console.log(nameMB) + >:=> (line 10, col 4) to (line 10, col 23) +-------------------------------- +10 > console.log(nameMB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (336 to 360) SpanInfo: {"start":340,"length":19} + >console.log(nameMB) + >:=> (line 10, col 4) to (line 10, col 23) +-------------------------------- +11 >} + + ~~ => Pos: (361 to 362) SpanInfo: {"start":361,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >function foo3([nameMA = "noName", [ + + ~~~~~~~~~~~~~~ => Pos: (363 to 376) SpanInfo: {"start":506,"length":19} + >console.log(nameMA) + >:=> (line 16, col 4) to (line 16, col 23) +12 >function foo3([nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~ => Pos: (377 to 395) SpanInfo: {"start":378,"length":17} + >nameMA = "noName" + >:=> (line 12, col 15) to (line 12, col 32) +12 >function foo3([nameMA = "noName", [ + + ~~~ => Pos: (396 to 398) SpanInfo: {"start":403,"length":25} + >primarySkillA = "primary" + >:=> (line 13, col 4) to (line 13, col 29) +-------------------------------- +13 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (399 to 429) SpanInfo: {"start":403,"length":25} + >primarySkillA = "primary" + >:=> (line 13, col 4) to (line 13, col 29) +-------------------------------- +14 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (430 to 463) SpanInfo: {"start":434,"length":29} + >secondarySkillA = "secondary" + >:=> (line 14, col 4) to (line 14, col 33) +-------------------------------- +15 >] = ["noSkill", "noSkill"]]: Robot) { + + ~ => Pos: (464 to 464) SpanInfo: {"start":434,"length":29} + >secondarySkillA = "secondary" + >:=> (line 14, col 4) to (line 14, col 33) +15 >] = ["noSkill", "noSkill"]]: Robot) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (465 to 490) SpanInfo: {"start":397,"length":93} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["noSkill", "noSkill"] + >:=> (line 12, col 34) to (line 15, col 26) +15 >] = ["noSkill", "noSkill"]]: Robot) { + + ~~~~~~~~~~~ => Pos: (491 to 501) SpanInfo: {"start":506,"length":19} + >console.log(nameMA) + >:=> (line 16, col 4) to (line 16, col 23) +-------------------------------- +16 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (502 to 526) SpanInfo: {"start":506,"length":19} + >console.log(nameMA) + >:=> (line 16, col 4) to (line 16, col 23) +-------------------------------- +17 >} + + ~~ => Pos: (527 to 528) SpanInfo: {"start":527,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (529 to 542) SpanInfo: {"start":529,"length":12} + >foo1(robotA) + >:=> (line 18, col 0) to (line 18, col 12) +-------------------------------- +19 >foo1(["roomba", ["vaccum", "mopping"]]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (543 to 583) SpanInfo: {"start":543,"length":39} + >foo1(["roomba", ["vaccum", "mopping"]]) + >:=> (line 19, col 0) to (line 19, col 39) +-------------------------------- +20 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (584 to 597) SpanInfo: {"start":584,"length":12} + >foo2(robotA) + >:=> (line 20, col 0) to (line 20, col 12) +-------------------------------- +21 >foo2(["roomba", ["vaccum", "mopping"]]); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (598 to 638) SpanInfo: {"start":598,"length":39} + >foo2(["roomba", ["vaccum", "mopping"]]) + >:=> (line 21, col 0) to (line 21, col 39) +-------------------------------- +22 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (639 to 652) SpanInfo: {"start":639,"length":12} + >foo3(robotA) + >:=> (line 22, col 0) to (line 22, col 12) +-------------------------------- +23 >foo3(["roomba", ["vaccum", "mopping"]]); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (653 to 692) SpanInfo: {"start":653,"length":39} + >foo3(["roomba", ["vaccum", "mopping"]]) + >:=> (line 23, col 0) to (line 23, col 39) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline new file mode 100644 index 00000000000..3c17d60d1a4 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline @@ -0,0 +1,200 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (53 to 70) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (71 to 88) SpanInfo: undefined +-------------------------------- +6 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (89 to 102) SpanInfo: undefined +-------------------------------- +7 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (103 to 127) SpanInfo: undefined +-------------------------------- +8 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (128 to 154) SpanInfo: undefined +-------------------------------- +9 > }; + + ~~~~~~~ => Pos: (155 to 161) SpanInfo: undefined +-------------------------------- +10 >} + + ~~ => Pos: (162 to 163) SpanInfo: undefined +-------------------------------- +11 >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (164 to 252) SpanInfo: {"start":164,"length":87} + >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 11, col 0) to (line 11, col 87) +-------------------------------- +12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (253 to 266) SpanInfo: {"start":338,"length":21} + >console.log(primaryA) + >:=> (line 13, col 4) to (line 13, col 25) +12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + + ~~~~~~~~~ => Pos: (267 to 275) SpanInfo: {"start":269,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 12, col 16) to (line 12, col 68) +12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (276 to 296) SpanInfo: {"start":279,"length":17} + >primary: primaryA + >:=> (line 12, col 26) to (line 12, col 43) +12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (297 to 320) SpanInfo: {"start":298,"length":21} + >secondary: secondaryA + >:=> (line 12, col 45) to (line 12, col 66) +12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + + ~~=> Pos: (321 to 322) SpanInfo: {"start":269,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 12, col 16) to (line 12, col 68) +12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { + + ~~~~~~~~~~~=> Pos: (323 to 333) SpanInfo: {"start":338,"length":21} + >console.log(primaryA) + >:=> (line 13, col 4) to (line 13, col 25) +-------------------------------- +13 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (334 to 360) SpanInfo: {"start":338,"length":21} + >console.log(primaryA) + >:=> (line 13, col 4) to (line 13, col 25) +-------------------------------- +14 >} + + ~~ => Pos: (361 to 362) SpanInfo: {"start":361,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (363 to 376) SpanInfo: {"start":461,"length":23} + >console.log(secondaryB) + >:=> (line 16, col 4) to (line 16, col 27) +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (377 to 390) SpanInfo: {"start":379,"length":11} + >name: nameC + >:=> (line 15, col 16) to (line 15, col 27) +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~~~~~~~ => Pos: (391 to 398) SpanInfo: {"start":392,"length":52} + >skills: { primary: primaryB, secondary: secondaryB } + >:=> (line 15, col 29) to (line 15, col 81) +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (399 to 419) SpanInfo: {"start":402,"length":17} + >primary: primaryB + >:=> (line 15, col 39) to (line 15, col 56) +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (420 to 443) SpanInfo: {"start":421,"length":21} + >secondary: secondaryB + >:=> (line 15, col 58) to (line 15, col 79) +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~=> Pos: (444 to 445) SpanInfo: {"start":392,"length":52} + >skills: { primary: primaryB, secondary: secondaryB } + >:=> (line 15, col 29) to (line 15, col 81) +15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { + + ~~~~~~~~~~~=> Pos: (446 to 456) SpanInfo: {"start":461,"length":23} + >console.log(secondaryB) + >:=> (line 16, col 4) to (line 16, col 27) +-------------------------------- +16 > console.log(secondaryB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (457 to 485) SpanInfo: {"start":461,"length":23} + >console.log(secondaryB) + >:=> (line 16, col 4) to (line 16, col 27) +-------------------------------- +17 >} + + ~~ => Pos: (486 to 487) SpanInfo: {"start":486,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >function foo3({ skills }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (488 to 501) SpanInfo: {"start":527,"length":27} + >console.log(skills.primary) + >:=> (line 19, col 4) to (line 19, col 31) +18 >function foo3({ skills }: Robot) { + + ~~~~~~~~~~ => Pos: (502 to 511) SpanInfo: {"start":504,"length":6} + >skills + >:=> (line 18, col 16) to (line 18, col 22) +18 >function foo3({ skills }: Robot) { + + ~~~~~~~~~~~ => Pos: (512 to 522) SpanInfo: {"start":527,"length":27} + >console.log(skills.primary) + >:=> (line 19, col 4) to (line 19, col 31) +-------------------------------- +19 > console.log(skills.primary); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (523 to 555) SpanInfo: {"start":527,"length":27} + >console.log(skills.primary) + >:=> (line 19, col 4) to (line 19, col 31) +-------------------------------- +20 >} + + ~~ => Pos: (556 to 557) SpanInfo: {"start":556,"length":1} + >} + >:=> (line 20, col 0) to (line 20, col 1) +-------------------------------- +21 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (558 to 571) SpanInfo: {"start":558,"length":12} + >foo1(robotA) + >:=> (line 21, col 0) to (line 21, col 12) +-------------------------------- +22 >foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (572 to 657) SpanInfo: {"start":572,"length":84} + >foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) + >:=> (line 22, col 0) to (line 22, col 84) +-------------------------------- +23 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (658 to 671) SpanInfo: {"start":658,"length":12} + >foo2(robotA) + >:=> (line 23, col 0) to (line 23, col 12) +-------------------------------- +24 >foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (672 to 757) SpanInfo: {"start":672,"length":84} + >foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) + >:=> (line 24, col 0) to (line 24, col 84) +-------------------------------- +25 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (758 to 771) SpanInfo: {"start":758,"length":12} + >foo3(robotA) + >:=> (line 25, col 0) to (line 25, col 12) +-------------------------------- +26 >foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (772 to 856) SpanInfo: {"start":772,"length":84} + >foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) + >:=> (line 26, col 0) to (line 26, col 84) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..9dd4b8dc5b1 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline @@ -0,0 +1,300 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 50) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (51 to 52) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (53 to 70) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (71 to 88) SpanInfo: undefined +-------------------------------- +6 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (89 to 102) SpanInfo: undefined +-------------------------------- +7 > primary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (103 to 128) SpanInfo: undefined +-------------------------------- +8 > secondary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (129 to 156) SpanInfo: undefined +-------------------------------- +9 > }; + + ~~~~~~~ => Pos: (157 to 163) SpanInfo: undefined +-------------------------------- +10 >} + + ~~ => Pos: (164 to 165) SpanInfo: undefined +-------------------------------- +11 >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (166 to 254) SpanInfo: {"start":166,"length":87} + >var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 11, col 0) to (line 11, col 87) +-------------------------------- +12 >function foo1( + + ~~~~~~~~~~~~~~~ => Pos: (255 to 269) SpanInfo: {"start":475,"length":21} + >console.log(primaryA) + >:=> (line 19, col 4) to (line 19, col 25) +-------------------------------- +13 > { + + ~~~~~~ => Pos: (270 to 275) SpanInfo: {"start":284,"length":161} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 14, col 8) to (line 17, col 60) +-------------------------------- +14 > skills: { + + ~~~~~~~~~~~~~~~ => Pos: (276 to 290) SpanInfo: {"start":284,"length":161} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 14, col 8) to (line 17, col 60) +14 > skills: { + + ~~~ => Pos: (291 to 293) SpanInfo: {"start":306,"length":29} + >primary: primaryA = "primary" + >:=> (line 15, col 12) to (line 15, col 41) +-------------------------------- +15 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (294 to 336) SpanInfo: {"start":306,"length":29} + >primary: primaryA = "primary" + >:=> (line 15, col 12) to (line 15, col 41) +-------------------------------- +16 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (337 to 384) SpanInfo: {"start":349,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 16, col 12) to (line 16, col 47) +-------------------------------- +17 > } = { primary: "SomeSkill", secondary: "someSkill" } + + ~~~~~~~~~ => Pos: (385 to 393) SpanInfo: {"start":349,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 16, col 12) to (line 16, col 47) +17 > } = { primary: "SomeSkill", secondary: "someSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (394 to 445) SpanInfo: {"start":284,"length":161} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 14, col 8) to (line 17, col 60) +-------------------------------- +18 > }: Robot = robotA) { + + ~~~~~ => Pos: (446 to 450) SpanInfo: {"start":284,"length":161} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 14, col 8) to (line 17, col 60) +18 > }: Robot = robotA) { + + ~~~~~~~~~~~~~~~~~ => Pos: (451 to 467) SpanInfo: {"start":274,"length":193} + >{ + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA + >:=> (line 13, col 4) to (line 18, col 21) +18 > }: Robot = robotA) { + + ~~~ => Pos: (468 to 470) SpanInfo: {"start":475,"length":21} + >console.log(primaryA) + >:=> (line 19, col 4) to (line 19, col 25) +-------------------------------- +19 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (471 to 497) SpanInfo: {"start":475,"length":21} + >console.log(primaryA) + >:=> (line 19, col 4) to (line 19, col 25) +-------------------------------- +20 >} + + ~~ => Pos: (498 to 499) SpanInfo: {"start":498,"length":1} + >} + >:=> (line 20, col 0) to (line 20, col 1) +-------------------------------- +21 >function foo2( + + ~~~~~~~~~~~~~~~ => Pos: (500 to 514) SpanInfo: {"start":750,"length":23} + >console.log(secondaryB) + >:=> (line 29, col 4) to (line 29, col 27) +-------------------------------- +22 > { + + ~~~~~~ => Pos: (515 to 520) SpanInfo: {"start":529,"length":20} + >name: nameC = "name" + >:=> (line 23, col 8) to (line 23, col 28) +-------------------------------- +23 > name: nameC = "name", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (521 to 550) SpanInfo: {"start":529,"length":20} + >name: nameC = "name" + >:=> (line 23, col 8) to (line 23, col 28) +-------------------------------- +24 > skills: { + + ~~~~~~~~~~~~~~~ => Pos: (551 to 565) SpanInfo: {"start":559,"length":161} + >skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 24, col 8) to (line 27, col 60) +24 > skills: { + + ~~~ => Pos: (566 to 568) SpanInfo: {"start":581,"length":29} + >primary: primaryB = "primary" + >:=> (line 25, col 12) to (line 25, col 41) +-------------------------------- +25 > primary: primaryB = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (569 to 611) SpanInfo: {"start":581,"length":29} + >primary: primaryB = "primary" + >:=> (line 25, col 12) to (line 25, col 41) +-------------------------------- +26 > secondary: secondaryB = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (612 to 659) SpanInfo: {"start":624,"length":35} + >secondary: secondaryB = "secondary" + >:=> (line 26, col 12) to (line 26, col 47) +-------------------------------- +27 > } = { primary: "SomeSkill", secondary: "someSkill" } + + ~~~~~~~~~ => Pos: (660 to 668) SpanInfo: {"start":624,"length":35} + >secondary: secondaryB = "secondary" + >:=> (line 26, col 12) to (line 26, col 47) +27 > } = { primary: "SomeSkill", secondary: "someSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (669 to 720) SpanInfo: {"start":559,"length":161} + >skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 24, col 8) to (line 27, col 60) +-------------------------------- +28 > }: Robot = robotA) { + + ~~~~~ => Pos: (721 to 725) SpanInfo: {"start":559,"length":161} + >skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 24, col 8) to (line 27, col 60) +28 > }: Robot = robotA) { + + ~~~~~~~~~~~~~~~~~ => Pos: (726 to 742) SpanInfo: {"start":519,"length":223} + >{ + > name: nameC = "name", + > skills: { + > primary: primaryB = "primary", + > secondary: secondaryB = "secondary" + > } = { primary: "SomeSkill", secondary: "someSkill" } + > }: Robot = robotA + >:=> (line 22, col 4) to (line 28, col 21) +28 > }: Robot = robotA) { + + ~~~ => Pos: (743 to 745) SpanInfo: {"start":750,"length":23} + >console.log(secondaryB) + >:=> (line 29, col 4) to (line 29, col 27) +-------------------------------- +29 > console.log(secondaryB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (746 to 774) SpanInfo: {"start":750,"length":23} + >console.log(secondaryB) + >:=> (line 29, col 4) to (line 29, col 27) +-------------------------------- +30 >} + + ~~ => Pos: (775 to 776) SpanInfo: {"start":775,"length":1} + >} + >:=> (line 30, col 0) to (line 30, col 1) +-------------------------------- +31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { + + ~~~~~~~~~~~~~~ => Pos: (777 to 790) SpanInfo: {"start":877,"length":27} + >console.log(skills.primary) + >:=> (line 32, col 4) to (line 32, col 31) +31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (791 to 852) SpanInfo: {"start":793,"length":57} + >skills = { primary: "SomeSkill", secondary: "someSkill" } + >:=> (line 31, col 16) to (line 31, col 73) +31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { + + ~~~~~~~~~~~~~~~~~=> Pos: (853 to 869) SpanInfo: {"start":791,"length":78} + >{ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA + >:=> (line 31, col 14) to (line 31, col 92) +31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { + + ~~~=> Pos: (870 to 872) SpanInfo: {"start":877,"length":27} + >console.log(skills.primary) + >:=> (line 32, col 4) to (line 32, col 31) +-------------------------------- +32 > console.log(skills.primary); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (873 to 905) SpanInfo: {"start":877,"length":27} + >console.log(skills.primary) + >:=> (line 32, col 4) to (line 32, col 31) +-------------------------------- +33 >} + + ~~ => Pos: (906 to 907) SpanInfo: {"start":906,"length":1} + >} + >:=> (line 33, col 0) to (line 33, col 1) +-------------------------------- +34 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (908 to 921) SpanInfo: {"start":908,"length":12} + >foo1(robotA) + >:=> (line 34, col 0) to (line 34, col 12) +-------------------------------- +35 >foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (922 to 1007) SpanInfo: {"start":922,"length":84} + >foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) + >:=> (line 35, col 0) to (line 35, col 84) +-------------------------------- +36 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (1008 to 1021) SpanInfo: {"start":1008,"length":12} + >foo2(robotA) + >:=> (line 36, col 0) to (line 36, col 12) +-------------------------------- +37 >foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1022 to 1107) SpanInfo: {"start":1022,"length":84} + >foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) + >:=> (line 37, col 0) to (line 37, col 84) +-------------------------------- +38 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (1108 to 1121) SpanInfo: {"start":1108,"length":12} + >foo3(robotA) + >:=> (line 38, col 0) to (line 38, col 12) +-------------------------------- +39 >foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1122 to 1206) SpanInfo: {"start":1122,"length":84} + >foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }) + >:=> (line 39, col 0) to (line 39, col 84) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline new file mode 100644 index 00000000000..6279328ed0c --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline @@ -0,0 +1,164 @@ + +1 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (0 to 17) SpanInfo: undefined +-------------------------------- +2 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (18 to 35) SpanInfo: undefined +-------------------------------- +3 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (36 to 54) SpanInfo: undefined +-------------------------------- +4 >} + + ~~ => Pos: (55 to 56) SpanInfo: undefined +-------------------------------- +5 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (57 to 79) SpanInfo: undefined +-------------------------------- +6 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (80 to 107) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (108 to 109) SpanInfo: undefined +-------------------------------- +8 >var hello = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (110 to 130) SpanInfo: {"start":110,"length":19} + >var hello = "hello" + >:=> (line 8, col 0) to (line 8, col 19) +-------------------------------- +9 >var robotA: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (131 to 186) SpanInfo: {"start":131,"length":54} + >var robotA: Robot = { name: "mower", skill: "mowing" } + >:=> (line 9, col 0) to (line 9, col 54) +-------------------------------- +10 >function foo1({ name: nameA }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (187 to 200) SpanInfo: {"start":231,"length":18} + >console.log(nameA) + >:=> (line 11, col 4) to (line 11, col 22) +10 >function foo1({ name: nameA }: Robot) { + + ~~~~~~~~~~~~~~~ => Pos: (201 to 215) SpanInfo: {"start":203,"length":11} + >name: nameA + >:=> (line 10, col 16) to (line 10, col 27) +10 >function foo1({ name: nameA }: Robot) { + + ~~~~~~~~~~~ => Pos: (216 to 226) SpanInfo: {"start":231,"length":18} + >console.log(nameA) + >:=> (line 11, col 4) to (line 11, col 22) +-------------------------------- +11 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (227 to 250) SpanInfo: {"start":231,"length":18} + >console.log(nameA) + >:=> (line 11, col 4) to (line 11, col 22) +-------------------------------- +12 >} + + ~~ => Pos: (251 to 252) SpanInfo: {"start":251,"length":1} + >} + >:=> (line 12, col 0) to (line 12, col 1) +-------------------------------- +13 >function foo2({ name: nameB, skill: skillB }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (253 to 266) SpanInfo: {"start":312,"length":18} + >console.log(nameB) + >:=> (line 14, col 4) to (line 14, col 22) +13 >function foo2({ name: nameB, skill: skillB }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (267 to 280) SpanInfo: {"start":269,"length":11} + >name: nameB + >:=> (line 13, col 16) to (line 13, col 27) +13 >function foo2({ name: nameB, skill: skillB }: Robot) { + + ~~~~~~~~~~~~~~~~ => Pos: (281 to 296) SpanInfo: {"start":282,"length":13} + >skill: skillB + >:=> (line 13, col 29) to (line 13, col 42) +13 >function foo2({ name: nameB, skill: skillB }: Robot) { + + ~~~~~~~~~~~=> Pos: (297 to 307) SpanInfo: {"start":312,"length":18} + >console.log(nameB) + >:=> (line 14, col 4) to (line 14, col 22) +-------------------------------- +14 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (308 to 331) SpanInfo: {"start":312,"length":18} + >console.log(nameB) + >:=> (line 14, col 4) to (line 14, col 22) +-------------------------------- +15 >} + + ~~ => Pos: (332 to 333) SpanInfo: {"start":332,"length":1} + >} + >:=> (line 15, col 0) to (line 15, col 1) +-------------------------------- +16 >function foo3({ name }: Robot) { + + ~~~~~~~~~~~~~~ => Pos: (334 to 347) SpanInfo: {"start":371,"length":17} + >console.log(name) + >:=> (line 17, col 4) to (line 17, col 21) +16 >function foo3({ name }: Robot) { + + ~~~~~~~~ => Pos: (348 to 355) SpanInfo: {"start":350,"length":4} + >name + >:=> (line 16, col 16) to (line 16, col 20) +16 >function foo3({ name }: Robot) { + + ~~~~~~~~~~~ => Pos: (356 to 366) SpanInfo: {"start":371,"length":17} + >console.log(name) + >:=> (line 17, col 4) to (line 17, col 21) +-------------------------------- +17 > console.log(name); + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (367 to 389) SpanInfo: {"start":371,"length":17} + >console.log(name) + >:=> (line 17, col 4) to (line 17, col 21) +-------------------------------- +18 >} + + ~~ => Pos: (390 to 391) SpanInfo: {"start":390,"length":1} + >} + >:=> (line 18, col 0) to (line 18, col 1) +-------------------------------- +19 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (392 to 405) SpanInfo: {"start":392,"length":12} + >foo1(robotA) + >:=> (line 19, col 0) to (line 19, col 12) +-------------------------------- +20 >foo1({ name: "Edger", skill: "cutting edges" }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (406 to 454) SpanInfo: {"start":406,"length":47} + >foo1({ name: "Edger", skill: "cutting edges" }) + >:=> (line 20, col 0) to (line 20, col 47) +-------------------------------- +21 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (455 to 468) SpanInfo: {"start":455,"length":12} + >foo2(robotA) + >:=> (line 21, col 0) to (line 21, col 12) +-------------------------------- +22 >foo2({ name: "Edger", skill: "cutting edges" }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (469 to 517) SpanInfo: {"start":469,"length":47} + >foo2({ name: "Edger", skill: "cutting edges" }) + >:=> (line 22, col 0) to (line 22, col 47) +-------------------------------- +23 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (518 to 531) SpanInfo: {"start":518,"length":12} + >foo3(robotA) + >:=> (line 23, col 0) to (line 23, col 12) +-------------------------------- +24 >foo3({ name: "Edger", skill: "cutting edges" }); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (532 to 579) SpanInfo: {"start":532,"length":47} + >foo3({ name: "Edger", skill: "cutting edges" }) + >:=> (line 24, col 0) to (line 24, col 47) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..a2392f5794c --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline @@ -0,0 +1,179 @@ + +1 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (0 to 17) SpanInfo: undefined +-------------------------------- +2 > name?: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (18 to 36) SpanInfo: undefined +-------------------------------- +3 > skill?: string; + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (37 to 56) SpanInfo: undefined +-------------------------------- +4 >} + + ~~ => Pos: (57 to 58) SpanInfo: undefined +-------------------------------- +5 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (59 to 81) SpanInfo: undefined +-------------------------------- +6 > log(msg: string): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (82 to 109) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (110 to 111) SpanInfo: undefined +-------------------------------- +8 >var hello = "hello"; + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (112 to 132) SpanInfo: {"start":112,"length":19} + >var hello = "hello" + >:=> (line 8, col 0) to (line 8, col 19) +-------------------------------- +9 >var robotA: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (133 to 188) SpanInfo: {"start":133,"length":54} + >var robotA: Robot = { name: "mower", skill: "mowing" } + >:=> (line 9, col 0) to (line 9, col 54) +-------------------------------- +10 >function foo1({ name: nameA = "" }: Robot = { }) { + + ~~~~~~~~~~~~~~ => Pos: (189 to 202) SpanInfo: {"start":252,"length":18} + >console.log(nameA) + >:=> (line 11, col 4) to (line 11, col 22) +10 >function foo1({ name: nameA = "" }: Robot = { }) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (203 to 230) SpanInfo: {"start":205,"length":24} + >name: nameA = "" + >:=> (line 10, col 16) to (line 10, col 40) +10 >function foo1({ name: nameA = "" }: Robot = { }) { + + ~~~~~~~~~~~~~~=> Pos: (231 to 244) SpanInfo: {"start":203,"length":41} + >{ name: nameA = "" }: Robot = { } + >:=> (line 10, col 14) to (line 10, col 55) +10 >function foo1({ name: nameA = "" }: Robot = { }) { + + ~~~=> Pos: (245 to 247) SpanInfo: {"start":252,"length":18} + >console.log(nameA) + >:=> (line 11, col 4) to (line 11, col 22) +-------------------------------- +11 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (248 to 271) SpanInfo: {"start":252,"length":18} + >console.log(nameA) + >:=> (line 11, col 4) to (line 11, col 22) +-------------------------------- +12 >} + + ~~ => Pos: (272 to 273) SpanInfo: {"start":272,"length":1} + >} + >:=> (line 12, col 0) to (line 12, col 1) +-------------------------------- +13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + + ~~~~~~~~~~~~~~ => Pos: (274 to 287) SpanInfo: {"start":363,"length":18} + >console.log(nameB) + >:=> (line 14, col 4) to (line 14, col 22) +13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (288 to 314) SpanInfo: {"start":290,"length":24} + >name: nameB = "" + >:=> (line 13, col 16) to (line 13, col 40) +13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (315 to 342) SpanInfo: {"start":316,"length":25} + >skill: skillB = "noSkill" + >:=> (line 13, col 42) to (line 13, col 67) +13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + + ~~~~~~~~~~~~~=> Pos: (343 to 355) SpanInfo: {"start":288,"length":67} + >{ name: nameB = "", skill: skillB = "noSkill" }: Robot = {} + >:=> (line 13, col 14) to (line 13, col 81) +13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { + + ~~~=> Pos: (356 to 358) SpanInfo: {"start":363,"length":18} + >console.log(nameB) + >:=> (line 14, col 4) to (line 14, col 22) +-------------------------------- +14 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (359 to 382) SpanInfo: {"start":363,"length":18} + >console.log(nameB) + >:=> (line 14, col 4) to (line 14, col 22) +-------------------------------- +15 >} + + ~~ => Pos: (383 to 384) SpanInfo: {"start":383,"length":1} + >} + >:=> (line 15, col 0) to (line 15, col 1) +-------------------------------- +16 >function foo3({ name = "" }: Robot = {}) { + + ~~~~~~~~~~~~~~ => Pos: (385 to 398) SpanInfo: {"start":440,"length":17} + >console.log(name) + >:=> (line 17, col 4) to (line 17, col 21) +16 >function foo3({ name = "" }: Robot = {}) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (399 to 419) SpanInfo: {"start":401,"length":17} + >name = "" + >:=> (line 16, col 16) to (line 16, col 33) +16 >function foo3({ name = "" }: Robot = {}) { + + ~~~~~~~~~~~~~=> Pos: (420 to 432) SpanInfo: {"start":399,"length":33} + >{ name = "" }: Robot = {} + >:=> (line 16, col 14) to (line 16, col 47) +16 >function foo3({ name = "" }: Robot = {}) { + + ~~~=> Pos: (433 to 435) SpanInfo: {"start":440,"length":17} + >console.log(name) + >:=> (line 17, col 4) to (line 17, col 21) +-------------------------------- +17 > console.log(name); + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (436 to 458) SpanInfo: {"start":440,"length":17} + >console.log(name) + >:=> (line 17, col 4) to (line 17, col 21) +-------------------------------- +18 >} + + ~~ => Pos: (459 to 460) SpanInfo: {"start":459,"length":1} + >} + >:=> (line 18, col 0) to (line 18, col 1) +-------------------------------- +19 >foo1(robotA); + + ~~~~~~~~~~~~~~ => Pos: (461 to 474) SpanInfo: {"start":461,"length":12} + >foo1(robotA) + >:=> (line 19, col 0) to (line 19, col 12) +-------------------------------- +20 >foo1({ name: "Edger", skill: "cutting edges" }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (475 to 523) SpanInfo: {"start":475,"length":47} + >foo1({ name: "Edger", skill: "cutting edges" }) + >:=> (line 20, col 0) to (line 20, col 47) +-------------------------------- +21 >foo2(robotA); + + ~~~~~~~~~~~~~~ => Pos: (524 to 537) SpanInfo: {"start":524,"length":12} + >foo2(robotA) + >:=> (line 21, col 0) to (line 21, col 12) +-------------------------------- +22 >foo2({ name: "Edger", skill: "cutting edges" }); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (538 to 586) SpanInfo: {"start":538,"length":47} + >foo2({ name: "Edger", skill: "cutting edges" }) + >:=> (line 22, col 0) to (line 22, col 47) +-------------------------------- +23 >foo3(robotA); + + ~~~~~~~~~~~~~~ => Pos: (587 to 600) SpanInfo: {"start":587,"length":12} + >foo3(robotA) + >:=> (line 23, col 0) to (line 23, col 12) +-------------------------------- +24 >foo3({ name: "Edger", skill: "cutting edges" }); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (601 to 648) SpanInfo: {"start":601,"length":47} + >foo3({ name: "Edger", skill: "cutting edges" }) + >:=> (line 24, col 0) to (line 24, col 47) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern.ts new file mode 100644 index 00000000000..c3f91122010 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern.ts @@ -0,0 +1,29 @@ +/// + +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////var robotA: Robot = [1, "mower", "mowing"]; +////function foo1([, nameA]: Robot) { +//// console.log(nameA); +////} +////function foo2([numberB]: Robot) { +//// console.log(numberB); +////} +////function foo3([numberA2, nameA2, skillA2]: Robot) { +//// console.log(nameA2); +////} +////function foo4([numberA3, ...robotAInfo]: Robot) { +//// console.log(robotAInfo); +////} +////foo1(robotA); +////foo1([2, "trimmer", "trimming"]); +////foo2(robotA); +////foo2([2, "trimmer", "trimming"]); +////foo3(robotA); +////foo3([2, "trimmer", "trimming"]); +////foo4(robotA); +////foo4([2, "trimmer", "trimming"]); + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern2.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern2.ts new file mode 100644 index 00000000000..fbedbe4abb0 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPattern2.ts @@ -0,0 +1,29 @@ +/// + +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [string, [string, string]]; +////var robotA: Robot = ["trimmer", ["trimming", "edging"]]; +////function foo1([, skillA]: Robot) { +//// console.log(skillA); +////} +////function foo2([nameMB]: Robot) { +//// console.log(nameMB); +////} +////function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { +//// console.log(nameMA); +////} +////function foo4([...multiRobotAInfo]: Robot) { +//// console.log(multiRobotAInfo); +////} +////foo1(robotA); +////foo1(["roomba", ["vaccum", "mopping"]]); +////foo2(robotA); +////foo2(["roomba", ["vaccum", "mopping"]]); +////foo3(robotA); +////foo3(["roomba", ["vaccum", "mopping"]]); +////foo4(robotA); +////foo4(["roomba", ["vaccum", "mopping"]]); + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..275135ca520 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues.ts @@ -0,0 +1,28 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////var robotA: Robot = [1, "mower", "mowing"]; +////function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { +//// console.log(nameA); +////} +////function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { +//// console.log(numberB); +////} +////function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { +//// console.log(nameA2); +////} +////function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { +//// console.log(robotAInfo); +////} +////foo1(robotA); +////foo1([2, "trimmer", "trimming"]); +////foo2(robotA); +////foo2([2, "trimmer", "trimming"]); +////foo3(robotA); +////foo3([2, "trimmer", "trimming"]); +////foo4(robotA); +////foo4([2, "trimmer", "trimming"]); + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues2.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues2.ts new file mode 100644 index 00000000000..17d964618d1 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterArrayBindingPatternDefaultValues2.ts @@ -0,0 +1,25 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [string, string[]]; +////var robotA: Robot = ["trimmer", ["trimming", "edging"]]; +////function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { +//// console.log(skillA); +////} +////function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { +//// console.log(nameMB); +////} +////function foo3([nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["noSkill", "noSkill"]]: Robot) { +//// console.log(nameMA); +////} +////foo1(robotA); +////foo1(["roomba", ["vaccum", "mopping"]]); +////foo2(robotA); +////foo2(["roomba", ["vaccum", "mopping"]]); +////foo3(robotA); +////foo3(["roomba", ["vaccum", "mopping"]]); +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPattern.ts new file mode 100644 index 00000000000..34b23d9fca2 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPattern.ts @@ -0,0 +1,28 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////interface Robot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { +//// console.log(primaryA); +////} +////function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { +//// console.log(secondaryB); +////} +////function foo3({ skills }: Robot) { +//// console.log(skills.primary); +////} +////foo1(robotA); +////foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +////foo2(robotA); +////foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +////foo3(robotA); +////foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +verify.baselineCurrentFileBreakpointLocations(); diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..8eab866428b --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterNestedObjectBindingPatternDefaultValues.ts @@ -0,0 +1,41 @@ +/// +////declare var console: { +//// log(msg: string): void; +////} +////interface Robot { +//// name: string; +//// skills: { +//// primary?: string; +//// secondary?: string; +//// }; +////} +////var robotA: Robot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////function foo1( +//// { +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "SomeSkill", secondary: "someSkill" } +//// }: Robot = robotA) { +//// console.log(primaryA); +////} +////function foo2( +//// { +//// name: nameC = "name", +//// skills: { +//// primary: primaryB = "primary", +//// secondary: secondaryB = "secondary" +//// } = { primary: "SomeSkill", secondary: "someSkill" } +//// }: Robot = robotA) { +//// console.log(secondaryB); +////} +////function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { +//// console.log(skills.primary); +////} +////foo1(robotA); +////foo1({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +////foo2(robotA); +////foo2({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +////foo3(robotA); +////foo3({ name: "Edger", skills: { primary: "edging", secondary: "branch trimming" } }); +verify.baselineCurrentFileBreakpointLocations(); diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPattern.ts new file mode 100644 index 00000000000..1e3d7c905d4 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPattern.ts @@ -0,0 +1,26 @@ +/// +////interface Robot { +//// name: string; +//// skill: string; +////} +////declare var console: { +//// log(msg: string): void; +////} +////var hello = "hello"; +////var robotA: Robot = { name: "mower", skill: "mowing" }; +////function foo1({ name: nameA }: Robot) { +//// console.log(nameA); +////} +////function foo2({ name: nameB, skill: skillB }: Robot) { +//// console.log(nameB); +////} +////function foo3({ name }: Robot) { +//// console.log(name); +////} +////foo1(robotA); +////foo1({ name: "Edger", skill: "cutting edges" }); +////foo2(robotA); +////foo2({ name: "Edger", skill: "cutting edges" }); +////foo3(robotA); +////foo3({ name: "Edger", skill: "cutting edges" }); +verify.baselineCurrentFileBreakpointLocations(); diff --git a/tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..bd87e346f6f --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringParameterObjectBindingPatternDefaultValues.ts @@ -0,0 +1,26 @@ +/// +////interface Robot { +//// name?: string; +//// skill?: string; +////} +////declare var console: { +//// log(msg: string): void; +////} +////var hello = "hello"; +////var robotA: Robot = { name: "mower", skill: "mowing" }; +////function foo1({ name: nameA = "" }: Robot = { }) { +//// console.log(nameA); +////} +////function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { +//// console.log(nameB); +////} +////function foo3({ name = "" }: Robot = {}) { +//// console.log(name); +////} +////foo1(robotA); +////foo1({ name: "Edger", skill: "cutting edges" }); +////foo2(robotA); +////foo2({ name: "Edger", skill: "cutting edges" }); +////foo3(robotA); +////foo3({ name: "Edger", skill: "cutting edges" }); +verify.baselineCurrentFileBreakpointLocations(); From 94e91e59607e59f749ce1a8d42a2b5dc9687723c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 17 Dec 2015 18:20:49 -0800 Subject: [PATCH 076/164] Use hidden text in Word document for markdown image links --- doc/TypeScript Language Specification.docx | Bin 311634 -> 311406 bytes doc/spec.md | 8 ++--- scripts/word2md.js | 25 +++++++------- scripts/word2md.ts | 36 ++++++++++----------- 4 files changed, 36 insertions(+), 33 deletions(-) diff --git a/doc/TypeScript Language Specification.docx b/doc/TypeScript Language Specification.docx index 4eb94908b57bbab417b1907a6e01964be003a68c..370e5e25d8960471298e7dd08b6e0ef26b6d022a 100644 GIT binary patch delta 244673 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

PF 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 delta 244877 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 z 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

{ } - export interface InlineShape { - } - - export interface InlineShapes extends Collection { - } - export interface Range { find: Find; listFormat: ListFormat; tables: Tables; - inlineShapes: InlineShapes; text: string; + textRetrievalMode: { + includeHiddenText: boolean; + } words: Ranges; } @@ -266,22 +262,26 @@ function convertDocumentToMarkdown(doc: Word.Document): string { function writeParagraph(p: Word.Paragraph) { - var text = p.range.text; + var range = p.range; + var text = range.text; var style = p.style.nameLocal; - var inTable = p.range.tables.count > 0; - var containsImage = p.range.inlineShapes.count > 0; + var inTable = range.tables.count > 0; var level = 1; var sectionBreak = text.indexOf("\x0C") >= 0; text = trimEndFormattingMarks(text); + if (text === "/") { + range.textRetrievalMode.includeHiddenText = true; + var fullText = range.text; + range.textRetrievalMode.includeHiddenText = false; + if (text !== fullText) { + text = "  " + fullText.substr(1); + } + } + if (inTable) { style = "Table"; } - else if (containsImage) { - imageCount++; - write("   ![](images/image" + imageCount + ".png)\n\n"); - text = ""; - } else if (style.match(/\s\d$/)) { level = +style.substr(style.length - 1); style = style.substr(0, style.length - 2); @@ -294,7 +294,7 @@ function convertDocumentToMarkdown(doc: Word.Document): string { case "Heading": case "Appendix": - var section = p.range.listFormat.listString; + var section = range.listFormat.listString; write("####".substr(0, level) + ' ' + section + " " + text + "\n\n"); break; @@ -305,7 +305,7 @@ function convertDocumentToMarkdown(doc: Word.Document): string { break; case "List Paragraph": - write(" ".substr(0, p.range.listFormat.listLevelNumber * 2 - 2) + "* " + text + "\n"); + write(" ".substr(0, range.listFormat.listLevelNumber * 2 - 2) + "* " + text + "\n"); break; case "Grammar": @@ -324,7 +324,7 @@ function convertDocumentToMarkdown(doc: Word.Document): string { case "Table": if (!lastInTable) { - tableColumnCount = p.range.tables.item(1).columns.count + 1; + tableColumnCount = range.tables.item(1).columns.count + 1; tableCellIndex = 0; } if (tableCellIndex < tableColumnCount) { From 58e869d5e4ce5f888ca62c91e4670326faeeafb0 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 17 Dec 2015 18:25:17 -0800 Subject: [PATCH 077/164] Remove unused variable --- scripts/word2md.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/word2md.ts b/scripts/word2md.ts index 266046cee37..62582992c49 100644 --- a/scripts/word2md.ts +++ b/scripts/word2md.ts @@ -183,7 +183,6 @@ function convertDocumentToMarkdown(doc: Word.Document): string { var tableColumnCount: number; var tableCellIndex: number; var columnAlignment: number[] = []; - var imageCount: number = 0; function setProperties(target: any, properties: any) { for (var name in properties) { From b7f60704bb7f6ad941148cab586afd3e26eff41e Mon Sep 17 00:00:00 2001 From: Rowan Wyborn Date: Fri, 18 Dec 2015 21:56:08 +1100 Subject: [PATCH 078/164] Initial check in - Support other JSX factories Issue #3788 - added jsxNamespace compile option - when jsx mode is "react", jsxNamespace optionally specifies the emit namespace for React calls, eg "--jsxNamespace MyDOMLib" will emit calls as MyDOMLib.createElement (instead of React.createElement) - symbol specified by jsxNamespace must be present, else compile error is generated (same handling as is done for React symbol when no jsxNamespace is specified) --- src/compiler/checker.ts | 11 ++++++----- src/compiler/commandLineParser.ts | 5 +++++ src/compiler/diagnosticMessages.json | 4 ++++ src/compiler/emitter.ts | 2 +- src/compiler/types.ts | 1 + 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2b3852eede3..76f218906bf 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8491,13 +8491,14 @@ namespace ts { checkGrammarJsxElement(node); checkJsxPreconditions(node); - // If we're compiling under --jsx react, the symbol 'React' should + // If we're compiling under --jsx react, the JSX namespace symbol should // be marked as 'used' so we don't incorrectly elide its import. And if there - // is no 'React' symbol in scope, we should issue an error. + // is no JSX namespace symbol in scope, we should issue an error. if (compilerOptions.jsx === JsxEmit.React) { - const reactSym = resolveName(node.tagName, "React", SymbolFlags.Value, Diagnostics.Cannot_find_name_0, "React"); - if (reactSym) { - getSymbolLinks(reactSym).referenced = true; + const jsxNamespace = compilerOptions.jsxNamespace ? compilerOptions.jsxNamespace : "React"; + const jsxSym = resolveName(node.tagName, jsxNamespace, SymbolFlags.Value, Diagnostics.Cannot_find_name_0, jsxNamespace); + if (jsxSym) { + getSymbolLinks(jsxSym).referenced = true; } } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 034b7022e82..210c6f7293f 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -54,6 +54,11 @@ namespace ts { description: Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, error: Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, + { + name: "jsxNamespace", + type: "string", + description: Diagnostics.Specify_JSX_emit_namespace_when_JSX_code_generation_mode_is_react + }, { name: "listFiles", type: "boolean", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 1d1510e6eb6..ec57722c9a8 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2389,6 +2389,10 @@ "category": "Message", "code": 6083 }, + "Specify JSX emit namespace when JSX code generation mode is 'react'": { + "category": "Message", + "code": 6084 + }, "Variable '{0}' implicitly has an '{1}' type.": { "category": "Error", diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index f0b49854734..a5f2228f7ed 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1192,7 +1192,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitJsxElement(openingNode: JsxOpeningLikeElement, children?: JsxChild[]) { const syntheticReactRef = createSynthesizedNode(SyntaxKind.Identifier); - syntheticReactRef.text = "React"; + syntheticReactRef.text = compilerOptions.jsxNamespace ? compilerOptions.jsxNamespace : "React"; syntheticReactRef.parent = openingNode; // Call React.createElement(tag, ... diff --git a/src/compiler/types.ts b/src/compiler/types.ts index a8c4ee211c3..977b2efac6a 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2382,6 +2382,7 @@ namespace ts { inlineSourceMap?: boolean; inlineSources?: boolean; jsx?: JsxEmit; + jsxNamespace? : string; listFiles?: boolean; locale?: string; mapRoot?: string; From 2395890268ebfe6daf053d9c3b3e29555c307226 Mon Sep 17 00:00:00 2001 From: Rowan Wyborn Date: Fri, 18 Dec 2015 22:25:23 +1100 Subject: [PATCH 079/164] fix trailing whitespace --- src/compiler/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 977b2efac6a..d09ebfef81f 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2382,7 +2382,7 @@ namespace ts { inlineSourceMap?: boolean; inlineSources?: boolean; jsx?: JsxEmit; - jsxNamespace? : string; + jsxNamespace? : string; listFiles?: boolean; locale?: string; mapRoot?: string; From e93df41f544d0495a517fafc9170b84b2867bc25 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Fri, 18 Dec 2015 19:06:44 -0800 Subject: [PATCH 080/164] Addressing CR feedback --- scripts/word2md.js | 245 --------------------------------------------- scripts/word2md.ts | 4 + 2 files changed, 4 insertions(+), 245 deletions(-) delete mode 100644 scripts/word2md.js diff --git a/scripts/word2md.js b/scripts/word2md.js deleted file mode 100644 index 4804a9f0563..00000000000 --- a/scripts/word2md.js +++ /dev/null @@ -1,245 +0,0 @@ -// word2md - Word to Markdown conversion tool -// -// word2md converts a Microsoft Word document to Markdown formatted text. The tool uses the -// Word Automation APIs to start an instance of Word and access the contents of the document -// being converted. The tool must be run using the cscript.exe script host and requires Word -// to be installed on the target machine. The name of the document to convert must be specified -// as a command line argument and the resulting Markdown is written to standard output. The -// tool recognizes the specific Word styles used in the TypeScript Language Specification. -var sys = (function () { - var fileStream = new ActiveXObject("ADODB.Stream"); - fileStream.Type = 2 /*text*/; - var binaryStream = new ActiveXObject("ADODB.Stream"); - binaryStream.Type = 1 /*binary*/; - var args = []; - for (var i = 0; i < WScript.Arguments.length; i++) { - args[i] = WScript.Arguments.Item(i); - } - return { - args: args, - createObject: function (typeName) { return new ActiveXObject(typeName); }, - write: function (s) { - WScript.StdOut.Write(s); - }, - writeFile: function (fileName, data) { - fileStream.Open(); - binaryStream.Open(); - try { - // Write characters in UTF-8 encoding - fileStream.Charset = "utf-8"; - fileStream.WriteText(data); - // We don't want the BOM, skip it by setting the starting location to 3 (size of BOM). - fileStream.Position = 3; - fileStream.CopyTo(binaryStream); - binaryStream.SaveToFile(fileName, 2 /*overwrite*/); - } - finally { - binaryStream.Close(); - fileStream.Close(); - } - } - }; -})(); -function convertDocumentToMarkdown(doc) { - var result = ""; - var lastStyle; - var lastInTable; - var tableColumnCount; - var tableCellIndex; - var columnAlignment = []; - var imageCount = 0; - function setProperties(target, properties) { - for (var name in properties) { - if (properties.hasOwnProperty(name)) { - var value = properties[name]; - if (typeof value === "object") { - setProperties(target[name], value); - } - else { - target[name] = value; - } - } - } - } - function findReplace(findText, findOptions, replaceText, replaceOptions) { - var find = doc.range().find; - find.clearFormatting(); - setProperties(find, findOptions); - var replace = find.replacement; - replace.clearFormatting(); - setProperties(replace, replaceOptions); - find.execute(findText, false, false, false, false, false, true, 0, true, replaceText, 2); - } - function fixHyperlinks() { - var count = doc.hyperlinks.count; - for (var i = 0; i < count; i++) { - var hyperlink = doc.hyperlinks.item(i + 1); - var address = hyperlink.address; - if (address && address.length > 0) { - var textToDisplay = hyperlink.textToDisplay; - hyperlink.textToDisplay = "[" + textToDisplay + "](" + address + ")"; - } - } - } - function write(s) { - result += s; - } - function writeTableHeader() { - for (var i = 0; i < tableColumnCount - 1; i++) { - switch (columnAlignment[i]) { - case 1: - write("|:---:"); - break; - case 2: - write("|---:"); - break; - default: - write("|---"); - } - } - write("|\n"); - } - function trimEndFormattingMarks(text) { - var i = text.length; - while (i > 0 && text.charCodeAt(i - 1) < 0x20) - i--; - return text.substr(0, i); - } - function writeBlockEnd() { - switch (lastStyle) { - case "Code": - write("```\n\n"); - break; - case "List Paragraph": - case "Table": - case "TOC": - write("\n"); - break; - } - } - function writeParagraph(p) { - var range = p.range; - var text = range.text; - var style = p.style.nameLocal; - var inTable = range.tables.count > 0; - var level = 1; - var sectionBreak = text.indexOf("\x0C") >= 0; - text = trimEndFormattingMarks(text); - if (text === "/") { - range.textRetrievalMode.includeHiddenText = true; - var fullText = range.text; - range.textRetrievalMode.includeHiddenText = false; - if (text !== fullText) { - text = "  " + fullText.substr(1); - } - } - if (inTable) { - style = "Table"; - } - else if (style.match(/\s\d$/)) { - level = +style.substr(style.length - 1); - style = style.substr(0, style.length - 2); - } - if (lastStyle && style !== lastStyle) { - writeBlockEnd(); - } - switch (style) { - case "Heading": - case "Appendix": - var section = range.listFormat.listString; - write("####".substr(0, level) + ' ' + section + " " + text + "\n\n"); - break; - case "Normal": - if (text.length) { - write(text + "\n\n"); - } - break; - case "List Paragraph": - write(" ".substr(0, range.listFormat.listLevelNumber * 2 - 2) + "* " + text + "\n"); - break; - case "Grammar": - write("  " + text.replace(/\s\s\s/g, " ").replace(/\x0B/g, " \n   ") + "\n\n"); - break; - case "Code": - if (lastStyle !== "Code") { - write("```TypeScript\n"); - } - else { - write("\n"); - } - write(text.replace(/\x0B/g, " \n") + "\n"); - break; - case "Table": - if (!lastInTable) { - tableColumnCount = range.tables.item(1).columns.count + 1; - tableCellIndex = 0; - } - if (tableCellIndex < tableColumnCount) { - columnAlignment[tableCellIndex] = p.alignment; - } - write("|" + text); - tableCellIndex++; - if (tableCellIndex % tableColumnCount === 0) { - write("\n"); - if (tableCellIndex === tableColumnCount) { - writeTableHeader(); - } - } - break; - case "TOC Heading": - write("## " + text + "\n\n"); - break; - case "TOC": - var strings = text.split("\t"); - write(" ".substr(0, level * 2 - 2) + "* [" + strings[0] + " " + strings[1] + "](#" + strings[0] + ")\n"); - break; - } - if (sectionBreak) { - write("
\n\n"); - } - lastStyle = style; - lastInTable = inTable; - } - function writeDocument() { - var title = doc.builtInDocumentProperties.item(1) + ""; - if (title.length) { - write("# " + title + "\n\n"); - } - for (var p = doc.paragraphs.first; p; p = p.next()) { - writeParagraph(p); - } - writeBlockEnd(); - } - findReplace("<", {}, "<", {}); - findReplace("<", { style: "Code" }, "<", {}); - findReplace("<", { style: "Code Fragment" }, "<", {}); - findReplace("<", { style: "Terminal" }, "<", {}); - findReplace("", { font: { subscript: true } }, "^&", { font: { subscript: false } }); - findReplace("", { style: "Code Fragment" }, "`^&`", { style: -66 /* default font */ }); - findReplace("", { style: "Production" }, "*^&*", { style: -66 /* default font */ }); - findReplace("", { style: "Terminal" }, "`^&`", { style: -66 /* default font */ }); - findReplace("", { font: { bold: true, italic: true } }, "***^&***", { font: { bold: false, italic: false } }); - findReplace("", { font: { italic: true } }, "*^&*", { font: { italic: false } }); - doc.fields.toggleShowCodes(); - findReplace("^19 REF", {}, "[^&](#^&)", {}); - doc.fields.toggleShowCodes(); - fixHyperlinks(); - writeDocument(); - result = result.replace(/\x85/g, "\u2026"); - result = result.replace(/\x96/g, "\u2013"); - result = result.replace(/\x97/g, "\u2014"); - return result; -} -function main(args) { - if (args.length !== 2) { - sys.write("Syntax: word2md \n"); - return; - } - var app = sys.createObject("Word.Application"); - var doc = app.documents.open(args[0]); - sys.writeFile(args[1], convertDocumentToMarkdown(doc)); - doc.close(false); - app.quit(); -} -main(sys.args); -//# sourceMappingURL=file:///c:/ts/scripts/word2md.js.map \ No newline at end of file diff --git a/scripts/word2md.ts b/scripts/word2md.ts index 62582992c49..f602c700ff9 100644 --- a/scripts/word2md.ts +++ b/scripts/word2md.ts @@ -270,6 +270,10 @@ function convertDocumentToMarkdown(doc: Word.Document): string { text = trimEndFormattingMarks(text); if (text === "/") { + // An inline image shows up in the text as a "/". When we see a paragraph + // consisting of nothing but "/", we check to see if the paragraph contains + // hidden text and, if so, emit that instead. The hidden text is assumed to + // contain an appropriate markdown image link. range.textRetrievalMode.includeHiddenText = true; var fullText = range.text; range.textRetrievalMode.includeHiddenText = false; From 4e702e5771deae24f7041088825596b02e484251 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 21 Dec 2015 11:39:05 -0800 Subject: [PATCH 081/164] Implement breakpoints in paramters with destructuring binding pattern --- src/services/breakpoints.ts | 24 ++++++++++---- ...uringParameterArrayBindingPattern.baseline | 16 +++++----- ...ringParameterArrayBindingPattern2.baseline | 16 +++++----- ...rArrayBindingPatternDefaultValues.baseline | 28 +++------------- ...ArrayBindingPatternDefaultValues2.baseline | 18 +++-------- ...rameterNestedObjectBindingPattern.baseline | 12 +++---- ...ObjectBindingPatternDefaultValues.baseline | 32 ++----------------- ...ringParameterObjectBindingPattern.baseline | 12 +++---- ...ObjectBindingPatternDefaultValues.baseline | 21 ++---------- 9 files changed, 59 insertions(+), 120 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 94fbcb785e8..5b6647e4338 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -287,11 +287,15 @@ namespace ts.BreakpointResolver { return spanInPreviousNode(node); } - // initializer of variable declaration go to previous node - if (node.parent.kind === SyntaxKind.VariableDeclaration && - ((node.parent).initializer === node || - isAssignmentOperator(node.kind))) { - return spanInPreviousNode(node); + // initializer of variable/parameter declaration go to previous node + if ((node.parent.kind === SyntaxKind.VariableDeclaration || + node.parent.kind === SyntaxKind.Parameter)) { + const paramOrVarDecl = node.parent; + if (paramOrVarDecl.initializer === node || + paramOrVarDecl.type === node || + isAssignmentOperator(node.kind)) { + return spanInPreviousNode(node); + } } // Default go to parent to set the breakpoint @@ -345,7 +349,11 @@ namespace ts.BreakpointResolver { } function spanInParameterDeclaration(parameter: ParameterDeclaration): TextSpan { - if (canHaveSpanInParameterDeclaration(parameter)) { + if (isBindingPattern(parameter.name)) { + // set breakpoint in binding pattern + return spanInBindingPattern(parameter.name); + } + else if (canHaveSpanInParameterDeclaration(parameter)) { return textSpan(parameter); } else { @@ -562,7 +570,9 @@ namespace ts.BreakpointResolver { function spanInColonToken(node: Node): TextSpan { // Is this : specifying return annotation of the function declaration - if (isFunctionLike(node.parent) || node.parent.kind === SyntaxKind.PropertyAssignment) { + if (isFunctionLike(node.parent) || + node.parent.kind === SyntaxKind.PropertyAssignment || + node.parent.kind === SyntaxKind.Parameter) { return spanInPreviousNode(node); } diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline index c0738652a8e..03f0ee87356 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern.baseline @@ -28,12 +28,12 @@ >:=> (line 7, col 4) to (line 7, col 22) 6 >function foo1([, nameA]: Robot) { - ~~~~~~~~~ => Pos: (147 to 155) SpanInfo: {"start":150,"length":5} + ~~~~~~~~~~~~~~~~~ => Pos: (147 to 163) SpanInfo: {"start":150,"length":5} >nameA >:=> (line 6, col 17) to (line 6, col 22) 6 >function foo1([, nameA]: Robot) { - ~~~~~~~~~~~ => Pos: (156 to 166) SpanInfo: {"start":171,"length":18} + ~~~ => Pos: (164 to 166) SpanInfo: {"start":171,"length":18} >console.log(nameA) >:=> (line 7, col 4) to (line 7, col 22) -------------------------------- @@ -56,12 +56,12 @@ >:=> (line 10, col 4) to (line 10, col 24) 9 >function foo2([numberB]: Robot) { - ~~~~~~~~~ => Pos: (207 to 215) SpanInfo: {"start":208,"length":7} + ~~~~~~~~~~~~~~~~~ => Pos: (207 to 223) SpanInfo: {"start":208,"length":7} >numberB >:=> (line 9, col 15) to (line 9, col 22) 9 >function foo2([numberB]: Robot) { - ~~~~~~~~~~~ => Pos: (216 to 226) SpanInfo: {"start":231,"length":20} + ~~~ => Pos: (224 to 226) SpanInfo: {"start":231,"length":20} >console.log(numberB) >:=> (line 10, col 4) to (line 10, col 24) -------------------------------- @@ -94,12 +94,12 @@ >:=> (line 12, col 25) to (line 12, col 31) 12 >function foo3([numberA2, nameA2, skillA2]: Robot) { - ~~~~~~~~~ => Pos: (287 to 295) SpanInfo: {"start":288,"length":7} + ~~~~~~~~~~~~~~~~~=> Pos: (287 to 303) SpanInfo: {"start":288,"length":7} >skillA2 >:=> (line 12, col 33) to (line 12, col 40) 12 >function foo3([numberA2, nameA2, skillA2]: Robot) { - ~~~~~~~~~~~=> Pos: (296 to 306) SpanInfo: {"start":311,"length":19} + ~~~=> Pos: (304 to 306) SpanInfo: {"start":311,"length":19} >console.log(nameA2) >:=> (line 13, col 4) to (line 13, col 23) -------------------------------- @@ -127,12 +127,12 @@ >:=> (line 15, col 15) to (line 15, col 23) 15 >function foo4([numberA3, ...robotAInfo]: Robot) { - ~~~~~~~~~~~~~~~ => Pos: (358 to 372) SpanInfo: {"start":359,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (358 to 380) SpanInfo: {"start":359,"length":13} >...robotAInfo >:=> (line 15, col 25) to (line 15, col 38) 15 >function foo4([numberA3, ...robotAInfo]: Robot) { - ~~~~~~~~~~~=> Pos: (373 to 383) SpanInfo: {"start":388,"length":23} + ~~~=> Pos: (381 to 383) SpanInfo: {"start":388,"length":23} >console.log(robotAInfo) >:=> (line 16, col 4) to (line 16, col 27) -------------------------------- diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline index 254e3a16bb0..cb9088c99ef 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPattern2.baseline @@ -28,12 +28,12 @@ >:=> (line 7, col 4) to (line 7, col 23) 6 >function foo1([, skillA]: Robot) { - ~~~~~~~~~~ => Pos: (162 to 171) SpanInfo: {"start":165,"length":6} + ~~~~~~~~~~~~~~~~~~ => Pos: (162 to 179) SpanInfo: {"start":165,"length":6} >skillA >:=> (line 6, col 17) to (line 6, col 23) 6 >function foo1([, skillA]: Robot) { - ~~~~~~~~~~~ => Pos: (172 to 182) SpanInfo: {"start":187,"length":19} + ~~~ => Pos: (180 to 182) SpanInfo: {"start":187,"length":19} >console.log(skillA) >:=> (line 7, col 4) to (line 7, col 23) -------------------------------- @@ -56,12 +56,12 @@ >:=> (line 10, col 4) to (line 10, col 23) 9 >function foo2([nameMB]: Robot) { - ~~~~~~~~ => Pos: (224 to 231) SpanInfo: {"start":225,"length":6} + ~~~~~~~~~~~~~~~~ => Pos: (224 to 239) SpanInfo: {"start":225,"length":6} >nameMB >:=> (line 9, col 15) to (line 9, col 21) 9 >function foo2([nameMB]: Robot) { - ~~~~~~~~~~~ => Pos: (232 to 242) SpanInfo: {"start":247,"length":19} + ~~~ => Pos: (240 to 242) SpanInfo: {"start":247,"length":19} >console.log(nameMB) >:=> (line 10, col 4) to (line 10, col 23) -------------------------------- @@ -99,12 +99,12 @@ >:=> (line 12, col 39) to (line 12, col 54) 12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { - ~=> Pos: (325 to 325) SpanInfo: {"start":293,"length":32} + ~~~~~~~~~=> Pos: (325 to 333) SpanInfo: {"start":293,"length":32} >[primarySkillA, secondarySkillA] >:=> (line 12, col 23) to (line 12, col 55) 12 >function foo3([nameMA, [primarySkillA, secondarySkillA]]: Robot) { - ~~~~~~~~~~~=> Pos: (326 to 336) SpanInfo: {"start":341,"length":19} + ~~~=> Pos: (334 to 336) SpanInfo: {"start":341,"length":19} >console.log(nameMA) >:=> (line 13, col 4) to (line 13, col 23) -------------------------------- @@ -127,12 +127,12 @@ >:=> (line 16, col 4) to (line 16, col 32) 15 >function foo4([...multiRobotAInfo]: Robot) { - ~~~~~~~~~~~~~~~~~~~~ => Pos: (378 to 397) SpanInfo: {"start":379,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (378 to 405) SpanInfo: {"start":379,"length":18} >...multiRobotAInfo >:=> (line 15, col 15) to (line 15, col 33) 15 >function foo4([...multiRobotAInfo]: Robot) { - ~~~~~~~~~~~ => Pos: (398 to 408) SpanInfo: {"start":413,"length":28} + ~~~ => Pos: (406 to 408) SpanInfo: {"start":413,"length":28} >console.log(multiRobotAInfo) >:=> (line 16, col 4) to (line 16, col 32) -------------------------------- diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline index 4208b8de46b..d071692b0f2 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues.baseline @@ -28,16 +28,11 @@ >:=> (line 7, col 4) to (line 7, col 22) 6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~~~~~~ => Pos: (147 to 166) SpanInfo: {"start":150,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (147 to 198) SpanInfo: {"start":150,"length":16} >nameA = "noName" >:=> (line 6, col 17) to (line 6, col 33) 6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (167 to 198) SpanInfo: {"start":147,"length":51} - >[, nameA = "noName"]: Robot = [-1, "name", "skill"] - >:=> (line 6, col 14) to (line 6, col 65) -6 >function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { - ~~~=> Pos: (199 to 201) SpanInfo: {"start":206,"length":18} >console.log(nameA) >:=> (line 7, col 4) to (line 7, col 22) @@ -61,16 +56,11 @@ >:=> (line 10, col 4) to (line 10, col 24) 9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~ => Pos: (242 to 255) SpanInfo: {"start":243,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (242 to 287) SpanInfo: {"start":243,"length":12} >numberB = -1 >:=> (line 9, col 15) to (line 9, col 27) 9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (256 to 287) SpanInfo: {"start":242,"length":45} - >[numberB = -1]: Robot = [-1, "name", "skill"] - >:=> (line 9, col 14) to (line 9, col 59) -9 >function foo2([numberB = -1]: Robot = [-1, "name", "skill"]) { - ~~~=> Pos: (288 to 290) SpanInfo: {"start":295,"length":20} >console.log(numberB) >:=> (line 10, col 4) to (line 10, col 24) @@ -104,16 +94,11 @@ >:=> (line 12, col 30) to (line 12, col 45) 12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (365 to 383) SpanInfo: {"start":366,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (365 to 415) SpanInfo: {"start":366,"length":17} >skillA2 = "skill" >:=> (line 12, col 47) to (line 12, col 64) 12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (384 to 415) SpanInfo: {"start":333,"length":82} - >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"] - >:=> (line 12, col 14) to (line 12, col 96) -12 >function foo3([numberA2 = -1, nameA2 = "name", skillA2 = "skill"]: Robot = [-1, "name", "skill"]) { - ~~~=> Pos: (416 to 418) SpanInfo: {"start":423,"length":19} >console.log(nameA2) >:=> (line 13, col 4) to (line 13, col 23) @@ -142,16 +127,11 @@ >:=> (line 15, col 15) to (line 15, col 28) 15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~ => Pos: (475 to 489) SpanInfo: {"start":476,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (475 to 521) SpanInfo: {"start":476,"length":13} >...robotAInfo >:=> (line 15, col 30) to (line 15, col 43) 15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (490 to 521) SpanInfo: {"start":460,"length":61} - >[numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"] - >:=> (line 15, col 14) to (line 15, col 75) -15 >function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { - ~~~=> Pos: (522 to 524) SpanInfo: {"start":529,"length":23} >console.log(robotAInfo) >:=> (line 16, col 4) to (line 16, col 27) diff --git a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline index b2c63f3b2be..34b41cc1218 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterArrayBindingPatternDefaultValues2.baseline @@ -28,16 +28,11 @@ >:=> (line 7, col 4) to (line 7, col 23) 6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (154 to 188) SpanInfo: {"start":157,"length":31} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (154 to 228) SpanInfo: {"start":157,"length":31} >skillA = ["noSkill", "noSkill"] >:=> (line 6, col 17) to (line 6, col 48) 6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (189 to 228) SpanInfo: {"start":154,"length":74} - >[, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]] - >:=> (line 6, col 14) to (line 6, col 88) -6 >function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { - ~~~=> Pos: (229 to 231) SpanInfo: {"start":236,"length":19} >console.log(skillA) >:=> (line 7, col 4) to (line 7, col 23) @@ -61,16 +56,11 @@ >:=> (line 10, col 4) to (line 10, col 23) 9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { - ~~~~~~~~~~~~~~~~~~~ => Pos: (273 to 291) SpanInfo: {"start":274,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (273 to 332) SpanInfo: {"start":274,"length":17} >nameMB = "noName" >:=> (line 9, col 15) to (line 9, col 32) 9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (292 to 332) SpanInfo: {"start":273,"length":59} - >[nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]] - >:=> (line 9, col 14) to (line 9, col 73) -9 >function foo2([nameMB = "noName"]: Robot = ["name", ["skill1", "skill2"]]) { - ~~~=> Pos: (333 to 335) SpanInfo: {"start":340,"length":19} >console.log(nameMB) >:=> (line 10, col 4) to (line 10, col 23) @@ -122,7 +112,7 @@ >:=> (line 14, col 4) to (line 14, col 33) 15 >] = ["noSkill", "noSkill"]]: Robot) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (465 to 490) SpanInfo: {"start":397,"length":93} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (465 to 498) SpanInfo: {"start":397,"length":93} >[ > primarySkillA = "primary", > secondarySkillA = "secondary" @@ -130,7 +120,7 @@ >:=> (line 12, col 34) to (line 15, col 26) 15 >] = ["noSkill", "noSkill"]]: Robot) { - ~~~~~~~~~~~ => Pos: (491 to 501) SpanInfo: {"start":506,"length":19} + ~~~ => Pos: (499 to 501) SpanInfo: {"start":506,"length":19} >console.log(nameMA) >:=> (line 16, col 4) to (line 16, col 23) -------------------------------- diff --git a/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline index 3c17d60d1a4..be773df4530 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPattern.baseline @@ -67,12 +67,12 @@ >:=> (line 12, col 45) to (line 12, col 66) 12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { - ~~=> Pos: (321 to 322) SpanInfo: {"start":269,"length":52} + ~~~~~~~~~~=> Pos: (321 to 330) SpanInfo: {"start":269,"length":52} >skills: { primary: primaryA, secondary: secondaryA } >:=> (line 12, col 16) to (line 12, col 68) 12 >function foo1({ skills: { primary: primaryA, secondary: secondaryA } }: Robot) { - ~~~~~~~~~~~=> Pos: (323 to 333) SpanInfo: {"start":338,"length":21} + ~~~=> Pos: (331 to 333) SpanInfo: {"start":338,"length":21} >console.log(primaryA) >:=> (line 13, col 4) to (line 13, col 25) -------------------------------- @@ -115,12 +115,12 @@ >:=> (line 15, col 58) to (line 15, col 79) 15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { - ~~=> Pos: (444 to 445) SpanInfo: {"start":392,"length":52} + ~~~~~~~~~~=> Pos: (444 to 453) SpanInfo: {"start":392,"length":52} >skills: { primary: primaryB, secondary: secondaryB } >:=> (line 15, col 29) to (line 15, col 81) 15 >function foo2({ name: nameC, skills: { primary: primaryB, secondary: secondaryB } }: Robot) { - ~~~~~~~~~~~=> Pos: (446 to 456) SpanInfo: {"start":461,"length":23} + ~~~=> Pos: (454 to 456) SpanInfo: {"start":461,"length":23} >console.log(secondaryB) >:=> (line 16, col 4) to (line 16, col 27) -------------------------------- @@ -143,12 +143,12 @@ >:=> (line 19, col 4) to (line 19, col 31) 18 >function foo3({ skills }: Robot) { - ~~~~~~~~~~ => Pos: (502 to 511) SpanInfo: {"start":504,"length":6} + ~~~~~~~~~~~~~~~~~~ => Pos: (502 to 519) SpanInfo: {"start":504,"length":6} >skills >:=> (line 18, col 16) to (line 18, col 22) 18 >function foo3({ skills }: Robot) { - ~~~~~~~~~~~ => Pos: (512 to 522) SpanInfo: {"start":527,"length":27} + ~~~ => Pos: (520 to 522) SpanInfo: {"start":527,"length":27} >console.log(skills.primary) >:=> (line 19, col 4) to (line 19, col 31) -------------------------------- diff --git a/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline index 9dd4b8dc5b1..c06c9b56fe5 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterNestedObjectBindingPatternDefaultValues.baseline @@ -102,7 +102,7 @@ -------------------------------- 18 > }: Robot = robotA) { - ~~~~~ => Pos: (446 to 450) SpanInfo: {"start":284,"length":161} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (446 to 467) SpanInfo: {"start":284,"length":161} >skills: { > primary: primaryA = "primary", > secondary: secondaryA = "secondary" @@ -110,16 +110,6 @@ >:=> (line 14, col 8) to (line 17, col 60) 18 > }: Robot = robotA) { - ~~~~~~~~~~~~~~~~~ => Pos: (451 to 467) SpanInfo: {"start":274,"length":193} - >{ - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "SomeSkill", secondary: "someSkill" } - > }: Robot = robotA - >:=> (line 13, col 4) to (line 18, col 21) -18 > }: Robot = robotA) { - ~~~ => Pos: (468 to 470) SpanInfo: {"start":475,"length":21} >console.log(primaryA) >:=> (line 19, col 4) to (line 19, col 25) @@ -196,7 +186,7 @@ -------------------------------- 28 > }: Robot = robotA) { - ~~~~~ => Pos: (721 to 725) SpanInfo: {"start":559,"length":161} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (721 to 742) SpanInfo: {"start":559,"length":161} >skills: { > primary: primaryB = "primary", > secondary: secondaryB = "secondary" @@ -204,17 +194,6 @@ >:=> (line 24, col 8) to (line 27, col 60) 28 > }: Robot = robotA) { - ~~~~~~~~~~~~~~~~~ => Pos: (726 to 742) SpanInfo: {"start":519,"length":223} - >{ - > name: nameC = "name", - > skills: { - > primary: primaryB = "primary", - > secondary: secondaryB = "secondary" - > } = { primary: "SomeSkill", secondary: "someSkill" } - > }: Robot = robotA - >:=> (line 22, col 4) to (line 28, col 21) -28 > }: Robot = robotA) { - ~~~ => Pos: (743 to 745) SpanInfo: {"start":750,"length":23} >console.log(secondaryB) >:=> (line 29, col 4) to (line 29, col 27) @@ -238,16 +217,11 @@ >:=> (line 32, col 4) to (line 32, col 31) 31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (791 to 852) SpanInfo: {"start":793,"length":57} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (791 to 869) SpanInfo: {"start":793,"length":57} >skills = { primary: "SomeSkill", secondary: "someSkill" } >:=> (line 31, col 16) to (line 31, col 73) 31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { - ~~~~~~~~~~~~~~~~~=> Pos: (853 to 869) SpanInfo: {"start":791,"length":78} - >{ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA - >:=> (line 31, col 14) to (line 31, col 92) -31 >function foo3({ skills = { primary: "SomeSkill", secondary: "someSkill" } }: Robot = robotA) { - ~~~=> Pos: (870 to 872) SpanInfo: {"start":877,"length":27} >console.log(skills.primary) >:=> (line 32, col 4) to (line 32, col 31) diff --git a/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline index 6279328ed0c..21f11f320ab 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPattern.baseline @@ -46,12 +46,12 @@ >:=> (line 11, col 4) to (line 11, col 22) 10 >function foo1({ name: nameA }: Robot) { - ~~~~~~~~~~~~~~~ => Pos: (201 to 215) SpanInfo: {"start":203,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (201 to 223) SpanInfo: {"start":203,"length":11} >name: nameA >:=> (line 10, col 16) to (line 10, col 27) 10 >function foo1({ name: nameA }: Robot) { - ~~~~~~~~~~~ => Pos: (216 to 226) SpanInfo: {"start":231,"length":18} + ~~~ => Pos: (224 to 226) SpanInfo: {"start":231,"length":18} >console.log(nameA) >:=> (line 11, col 4) to (line 11, col 22) -------------------------------- @@ -79,12 +79,12 @@ >:=> (line 13, col 16) to (line 13, col 27) 13 >function foo2({ name: nameB, skill: skillB }: Robot) { - ~~~~~~~~~~~~~~~~ => Pos: (281 to 296) SpanInfo: {"start":282,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (281 to 304) SpanInfo: {"start":282,"length":13} >skill: skillB >:=> (line 13, col 29) to (line 13, col 42) 13 >function foo2({ name: nameB, skill: skillB }: Robot) { - ~~~~~~~~~~~=> Pos: (297 to 307) SpanInfo: {"start":312,"length":18} + ~~~=> Pos: (305 to 307) SpanInfo: {"start":312,"length":18} >console.log(nameB) >:=> (line 14, col 4) to (line 14, col 22) -------------------------------- @@ -107,12 +107,12 @@ >:=> (line 17, col 4) to (line 17, col 21) 16 >function foo3({ name }: Robot) { - ~~~~~~~~ => Pos: (348 to 355) SpanInfo: {"start":350,"length":4} + ~~~~~~~~~~~~~~~~ => Pos: (348 to 363) SpanInfo: {"start":350,"length":4} >name >:=> (line 16, col 16) to (line 16, col 20) 16 >function foo3({ name }: Robot) { - ~~~~~~~~~~~ => Pos: (356 to 366) SpanInfo: {"start":371,"length":17} + ~~~ => Pos: (364 to 366) SpanInfo: {"start":371,"length":17} >console.log(name) >:=> (line 17, col 4) to (line 17, col 21) -------------------------------- diff --git a/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline index a2392f5794c..6cb9b39c0d3 100644 --- a/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringParameterObjectBindingPatternDefaultValues.baseline @@ -46,16 +46,11 @@ >:=> (line 11, col 4) to (line 11, col 22) 10 >function foo1({ name: nameA = "" }: Robot = { }) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (203 to 230) SpanInfo: {"start":205,"length":24} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (203 to 244) SpanInfo: {"start":205,"length":24} >name: nameA = "" >:=> (line 10, col 16) to (line 10, col 40) 10 >function foo1({ name: nameA = "" }: Robot = { }) { - ~~~~~~~~~~~~~~=> Pos: (231 to 244) SpanInfo: {"start":203,"length":41} - >{ name: nameA = "" }: Robot = { } - >:=> (line 10, col 14) to (line 10, col 55) -10 >function foo1({ name: nameA = "" }: Robot = { }) { - ~~~=> Pos: (245 to 247) SpanInfo: {"start":252,"length":18} >console.log(nameA) >:=> (line 11, col 4) to (line 11, col 22) @@ -84,16 +79,11 @@ >:=> (line 13, col 16) to (line 13, col 40) 13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (315 to 342) SpanInfo: {"start":316,"length":25} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (315 to 355) SpanInfo: {"start":316,"length":25} >skill: skillB = "noSkill" >:=> (line 13, col 42) to (line 13, col 67) 13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { - ~~~~~~~~~~~~~=> Pos: (343 to 355) SpanInfo: {"start":288,"length":67} - >{ name: nameB = "", skill: skillB = "noSkill" }: Robot = {} - >:=> (line 13, col 14) to (line 13, col 81) -13 >function foo2({ name: nameB = "", skill: skillB = "noSkill" }: Robot = {}) { - ~~~=> Pos: (356 to 358) SpanInfo: {"start":363,"length":18} >console.log(nameB) >:=> (line 14, col 4) to (line 14, col 22) @@ -117,16 +107,11 @@ >:=> (line 17, col 4) to (line 17, col 21) 16 >function foo3({ name = "" }: Robot = {}) { - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (399 to 419) SpanInfo: {"start":401,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (399 to 432) SpanInfo: {"start":401,"length":17} >name = "" >:=> (line 16, col 16) to (line 16, col 33) 16 >function foo3({ name = "" }: Robot = {}) { - ~~~~~~~~~~~~~=> Pos: (420 to 432) SpanInfo: {"start":399,"length":33} - >{ name = "" }: Robot = {} - >:=> (line 16, col 14) to (line 16, col 47) -16 >function foo3({ name = "" }: Robot = {}) { - ~~~=> Pos: (433 to 435) SpanInfo: {"start":440,"length":17} >console.log(name) >:=> (line 17, col 4) to (line 17, col 21) From 39dbad862cad8123bfe7f58a53cbe53efc82b16d Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 21 Dec 2015 11:47:57 -0800 Subject: [PATCH 082/164] Test cases for breakpoint in destructuring of For Initializers --- ...structuringForArrayBindingPattern.baseline | 1064 ++++++++++++++++ ...rArrayBindingPatternDefaultValues.baseline | 1077 +++++++++++++++++ ...tructuringForObjectBindingPattern.baseline | 653 ++++++++++ ...ObjectBindingPatternDefaultValues.baseline | 857 +++++++++++++ ...tionDestructuringForArrayBindingPattern.ts | 95 ++ ...ringForArrayBindingPatternDefaultValues.ts | 104 ++ ...ionDestructuringForObjectBindingPattern.ts | 64 + ...ingForObjectBindingPatternDefaultValues.ts | 96 ++ 8 files changed, 4010 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline new file mode 100644 index 00000000000..a9de03bb74b --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline @@ -0,0 +1,1064 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 > + + ~ => Pos: (142 to 142) SpanInfo: undefined +-------------------------------- +7 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (143 to 186) SpanInfo: {"start":143,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 7, col 0) to (line 7, col 42) +-------------------------------- +8 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (187 to 208) SpanInfo: {"start":213,"length":13} + >return robotA + >:=> (line 9, col 4) to (line 9, col 17) +-------------------------------- +9 > return robotA; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (209 to 227) SpanInfo: {"start":213,"length":13} + >return robotA + >:=> (line 9, col 4) to (line 9, col 17) +-------------------------------- +10 >} + + ~~ => Pos: (228 to 229) SpanInfo: {"start":228,"length":1} + >} + >:=> (line 10, col 0) to (line 10, col 1) +-------------------------------- +11 > + + ~ => Pos: (230 to 230) SpanInfo: undefined +-------------------------------- +12 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (231 to 294) SpanInfo: {"start":231,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 12, col 0) to (line 12, col 62) +-------------------------------- +13 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (295 to 368) SpanInfo: {"start":295,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 13, col 0) to (line 13, col 72) +-------------------------------- +14 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (369 to 395) SpanInfo: {"start":400,"length":18} + >return multiRobotA + >:=> (line 15, col 4) to (line 15, col 22) +-------------------------------- +15 > return multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (396 to 419) SpanInfo: {"start":400,"length":18} + >return multiRobotA + >:=> (line 15, col 4) to (line 15, col 22) +-------------------------------- +16 >} + + ~~ => Pos: (420 to 421) SpanInfo: {"start":420,"length":1} + >} + >:=> (line 16, col 0) to (line 16, col 1) +-------------------------------- +17 > + + ~ => Pos: (422 to 422) SpanInfo: undefined +-------------------------------- +18 >for (let [, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (423 to 450) SpanInfo: {"start":435,"length":5} + >nameA + >:=> (line 18, col 12) to (line 18, col 17) +18 >for (let [, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (451 to 457) SpanInfo: {"start":452,"length":5} + >i = 0 + >:=> (line 18, col 29) to (line 18, col 34) +18 >for (let [, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (458 to 464) SpanInfo: {"start":459,"length":5} + >i < 1 + >:=> (line 18, col 36) to (line 18, col 41) +18 >for (let [, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (465 to 472) SpanInfo: {"start":466,"length":3} + >i++ + >:=> (line 18, col 43) to (line 18, col 46) +-------------------------------- +19 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (473 to 496) SpanInfo: {"start":477,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +20 >} + + ~~ => Pos: (497 to 498) SpanInfo: {"start":477,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (499 to 518) SpanInfo: {"start":511,"length":5} + >nameA + >:=> (line 21, col 12) to (line 21, col 17) +21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (519 to 530) SpanInfo: {"start":520,"length":10} + >getRobot() + >:=> (line 21, col 21) to (line 21, col 31) +21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (531 to 537) SpanInfo: {"start":532,"length":5} + >i = 0 + >:=> (line 21, col 33) to (line 21, col 38) +21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (538 to 544) SpanInfo: {"start":539,"length":5} + >i < 1 + >:=> (line 21, col 40) to (line 21, col 45) +21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (545 to 552) SpanInfo: {"start":546,"length":3} + >i++ + >:=> (line 21, col 47) to (line 21, col 50) +-------------------------------- +22 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (553 to 576) SpanInfo: {"start":557,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (577 to 578) SpanInfo: {"start":557,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +24 >for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (579 to 626) SpanInfo: {"start":591,"length":5} + >nameA + >:=> (line 24, col 12) to (line 24, col 17) +24 >for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (627 to 633) SpanInfo: {"start":628,"length":5} + >i = 0 + >:=> (line 24, col 49) to (line 24, col 54) +24 >for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (634 to 640) SpanInfo: {"start":635,"length":5} + >i < 1 + >:=> (line 24, col 56) to (line 24, col 61) +24 >for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (641 to 648) SpanInfo: {"start":642,"length":3} + >i++ + >:=> (line 24, col 63) to (line 24, col 66) +-------------------------------- +25 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (649 to 672) SpanInfo: {"start":653,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +26 >} + + ~~ => Pos: (673 to 674) SpanInfo: {"start":653,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (675 to 685) SpanInfo: {"start":687,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 27, col 12) to (line 27, col 44) +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (686 to 701) SpanInfo: {"start":688,"length":13} + >primarySkillA + >:=> (line 27, col 13) to (line 27, col 26) +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (702 to 718) SpanInfo: {"start":703,"length":15} + >secondarySkillA + >:=> (line 27, col 28) to (line 27, col 43) +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (719 to 734) SpanInfo: {"start":687,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 27, col 12) to (line 27, col 44) +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (735 to 741) SpanInfo: {"start":736,"length":5} + >i = 0 + >:=> (line 27, col 61) to (line 27, col 66) +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (742 to 748) SpanInfo: {"start":743,"length":5} + >i < 1 + >:=> (line 27, col 68) to (line 27, col 73) +27 >for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (749 to 756) SpanInfo: {"start":750,"length":3} + >i++ + >:=> (line 27, col 75) to (line 27, col 78) +-------------------------------- +28 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (757 to 788) SpanInfo: {"start":761,"length":26} + >console.log(primarySkillA) + >:=> (line 28, col 4) to (line 28, col 30) +-------------------------------- +29 >} + + ~~ => Pos: (789 to 790) SpanInfo: {"start":761,"length":26} + >console.log(primarySkillA) + >:=> (line 28, col 4) to (line 28, col 30) +-------------------------------- +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (791 to 801) SpanInfo: {"start":803,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 30, col 12) to (line 30, col 44) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (802 to 817) SpanInfo: {"start":804,"length":13} + >primarySkillA + >:=> (line 30, col 13) to (line 30, col 26) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (818 to 834) SpanInfo: {"start":819,"length":15} + >secondarySkillA + >:=> (line 30, col 28) to (line 30, col 43) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~=> Pos: (835 to 837) SpanInfo: {"start":803,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 30, col 12) to (line 30, col 44) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (838 to 854) SpanInfo: {"start":839,"length":15} + >getMultiRobot() + >:=> (line 30, col 48) to (line 30, col 63) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (855 to 861) SpanInfo: {"start":856,"length":5} + >i = 0 + >:=> (line 30, col 65) to (line 30, col 70) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (862 to 868) SpanInfo: {"start":863,"length":5} + >i < 1 + >:=> (line 30, col 72) to (line 30, col 77) +30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (869 to 876) SpanInfo: {"start":870,"length":3} + >i++ + >:=> (line 30, col 79) to (line 30, col 82) +-------------------------------- +31 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (877 to 908) SpanInfo: {"start":881,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +32 >} + + ~~ => Pos: (909 to 910) SpanInfo: {"start":881,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (911 to 921) SpanInfo: {"start":923,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 33, col 12) to (line 33, col 44) +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (922 to 937) SpanInfo: {"start":924,"length":13} + >primarySkillA + >:=> (line 33, col 13) to (line 33, col 26) +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (938 to 954) SpanInfo: {"start":939,"length":15} + >secondarySkillA + >:=> (line 33, col 28) to (line 33, col 43) +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (955 to 994) SpanInfo: {"start":923,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 33, col 12) to (line 33, col 44) +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (995 to 1001) SpanInfo: {"start":996,"length":5} + >i = 0 + >:=> (line 33, col 85) to (line 33, col 90) +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1002 to 1008) SpanInfo: {"start":1003,"length":5} + >i < 1 + >:=> (line 33, col 92) to (line 33, col 97) +33 >for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1009 to 1016) SpanInfo: {"start":1010,"length":3} + >i++ + >:=> (line 33, col 99) to (line 33, col 102) +-------------------------------- +34 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1017 to 1048) SpanInfo: {"start":1021,"length":26} + >console.log(primarySkillA) + >:=> (line 34, col 4) to (line 34, col 30) +-------------------------------- +35 >} + + ~~ => Pos: (1049 to 1050) SpanInfo: {"start":1021,"length":26} + >console.log(primarySkillA) + >:=> (line 34, col 4) to (line 34, col 30) +-------------------------------- +36 > + + ~ => Pos: (1051 to 1051) SpanInfo: undefined +-------------------------------- +37 >for (let [numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1052 to 1079) SpanInfo: {"start":1062,"length":7} + >numberB + >:=> (line 37, col 10) to (line 37, col 17) +37 >for (let [numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1080 to 1086) SpanInfo: {"start":1081,"length":5} + >i = 0 + >:=> (line 37, col 29) to (line 37, col 34) +37 >for (let [numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1087 to 1093) SpanInfo: {"start":1088,"length":5} + >i < 1 + >:=> (line 37, col 36) to (line 37, col 41) +37 >for (let [numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1094 to 1101) SpanInfo: {"start":1095,"length":3} + >i++ + >:=> (line 37, col 43) to (line 37, col 46) +-------------------------------- +38 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1102 to 1127) SpanInfo: {"start":1106,"length":20} + >console.log(numberB) + >:=> (line 38, col 4) to (line 38, col 24) +-------------------------------- +39 >} + + ~~ => Pos: (1128 to 1129) SpanInfo: {"start":1106,"length":20} + >console.log(numberB) + >:=> (line 38, col 4) to (line 38, col 24) +-------------------------------- +40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1130 to 1149) SpanInfo: {"start":1140,"length":7} + >numberB + >:=> (line 40, col 10) to (line 40, col 17) +40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (1150 to 1161) SpanInfo: {"start":1151,"length":10} + >getRobot() + >:=> (line 40, col 21) to (line 40, col 31) +40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1162 to 1168) SpanInfo: {"start":1163,"length":5} + >i = 0 + >:=> (line 40, col 33) to (line 40, col 38) +40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1169 to 1175) SpanInfo: {"start":1170,"length":5} + >i < 1 + >:=> (line 40, col 40) to (line 40, col 45) +40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1176 to 1183) SpanInfo: {"start":1177,"length":3} + >i++ + >:=> (line 40, col 47) to (line 40, col 50) +-------------------------------- +41 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1184 to 1209) SpanInfo: {"start":1188,"length":20} + >console.log(numberB) + >:=> (line 41, col 4) to (line 41, col 24) +-------------------------------- +42 >} + + ~~ => Pos: (1210 to 1211) SpanInfo: {"start":1188,"length":20} + >console.log(numberB) + >:=> (line 41, col 4) to (line 41, col 24) +-------------------------------- +43 >for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1212 to 1259) SpanInfo: {"start":1222,"length":7} + >numberB + >:=> (line 43, col 10) to (line 43, col 17) +43 >for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1260 to 1266) SpanInfo: {"start":1261,"length":5} + >i = 0 + >:=> (line 43, col 49) to (line 43, col 54) +43 >for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1267 to 1273) SpanInfo: {"start":1268,"length":5} + >i < 1 + >:=> (line 43, col 56) to (line 43, col 61) +43 >for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1274 to 1281) SpanInfo: {"start":1275,"length":3} + >i++ + >:=> (line 43, col 63) to (line 43, col 66) +-------------------------------- +44 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1282 to 1307) SpanInfo: {"start":1286,"length":20} + >console.log(numberB) + >:=> (line 44, col 4) to (line 44, col 24) +-------------------------------- +45 >} + + ~~ => Pos: (1308 to 1309) SpanInfo: {"start":1286,"length":20} + >console.log(numberB) + >:=> (line 44, col 4) to (line 44, col 24) +-------------------------------- +46 >for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1310 to 1340) SpanInfo: {"start":1320,"length":5} + >nameB + >:=> (line 46, col 10) to (line 46, col 15) +46 >for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1341 to 1347) SpanInfo: {"start":1342,"length":5} + >i = 0 + >:=> (line 46, col 32) to (line 46, col 37) +46 >for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1348 to 1354) SpanInfo: {"start":1349,"length":5} + >i < 1 + >:=> (line 46, col 39) to (line 46, col 44) +46 >for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1355 to 1362) SpanInfo: {"start":1356,"length":3} + >i++ + >:=> (line 46, col 46) to (line 46, col 49) +-------------------------------- +47 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1363 to 1386) SpanInfo: {"start":1367,"length":18} + >console.log(nameB) + >:=> (line 47, col 4) to (line 47, col 22) +-------------------------------- +48 >} + + ~~ => Pos: (1387 to 1388) SpanInfo: {"start":1367,"length":18} + >console.log(nameB) + >:=> (line 47, col 4) to (line 47, col 22) +-------------------------------- +49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (1389 to 1406) SpanInfo: {"start":1399,"length":5} + >nameB + >:=> (line 49, col 10) to (line 49, col 15) +49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1407 to 1423) SpanInfo: {"start":1408,"length":15} + >getMultiRobot() + >:=> (line 49, col 19) to (line 49, col 34) +49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1424 to 1430) SpanInfo: {"start":1425,"length":5} + >i = 0 + >:=> (line 49, col 36) to (line 49, col 41) +49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1431 to 1437) SpanInfo: {"start":1432,"length":5} + >i < 1 + >:=> (line 49, col 43) to (line 49, col 48) +49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1438 to 1445) SpanInfo: {"start":1439,"length":3} + >i++ + >:=> (line 49, col 50) to (line 49, col 53) +-------------------------------- +50 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1446 to 1469) SpanInfo: {"start":1450,"length":18} + >console.log(nameB) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +51 >} + + ~~ => Pos: (1470 to 1471) SpanInfo: {"start":1450,"length":18} + >console.log(nameB) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +52 >for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1472 to 1526) SpanInfo: {"start":1482,"length":5} + >nameB + >:=> (line 52, col 10) to (line 52, col 15) +52 >for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1527 to 1533) SpanInfo: {"start":1528,"length":5} + >i = 0 + >:=> (line 52, col 56) to (line 52, col 61) +52 >for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1534 to 1540) SpanInfo: {"start":1535,"length":5} + >i < 1 + >:=> (line 52, col 63) to (line 52, col 68) +52 >for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1541 to 1548) SpanInfo: {"start":1542,"length":3} + >i++ + >:=> (line 52, col 70) to (line 52, col 73) +-------------------------------- +53 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1549 to 1572) SpanInfo: {"start":1553,"length":18} + >console.log(nameB) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +54 >} + + ~~ => Pos: (1573 to 1574) SpanInfo: {"start":1553,"length":18} + >console.log(nameB) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +55 > + + ~ => Pos: (1575 to 1575) SpanInfo: undefined +-------------------------------- +56 >for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1576 to 1594) SpanInfo: {"start":1586,"length":8} + >numberA2 + >:=> (line 56, col 10) to (line 56, col 18) +56 >for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1595 to 1602) SpanInfo: {"start":1596,"length":6} + >nameA2 + >:=> (line 56, col 20) to (line 56, col 26) +56 >for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1603 to 1621) SpanInfo: {"start":1604,"length":7} + >skillA2 + >:=> (line 56, col 28) to (line 56, col 35) +56 >for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1622 to 1628) SpanInfo: {"start":1623,"length":5} + >i = 0 + >:=> (line 56, col 47) to (line 56, col 52) +56 >for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1629 to 1635) SpanInfo: {"start":1630,"length":5} + >i < 1 + >:=> (line 56, col 54) to (line 56, col 59) +56 >for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1636 to 1643) SpanInfo: {"start":1637,"length":3} + >i++ + >:=> (line 56, col 61) to (line 56, col 64) +-------------------------------- +57 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1644 to 1668) SpanInfo: {"start":1648,"length":19} + >console.log(nameA2) + >:=> (line 57, col 4) to (line 57, col 23) +-------------------------------- +58 >} + + ~~ => Pos: (1669 to 1670) SpanInfo: {"start":1648,"length":19} + >console.log(nameA2) + >:=> (line 57, col 4) to (line 57, col 23) +-------------------------------- +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1671 to 1689) SpanInfo: {"start":1681,"length":8} + >numberA2 + >:=> (line 59, col 10) to (line 59, col 18) +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1690 to 1697) SpanInfo: {"start":1691,"length":6} + >nameA2 + >:=> (line 59, col 20) to (line 59, col 26) +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (1698 to 1708) SpanInfo: {"start":1699,"length":7} + >skillA2 + >:=> (line 59, col 28) to (line 59, col 35) +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (1709 to 1720) SpanInfo: {"start":1710,"length":10} + >getRobot() + >:=> (line 59, col 39) to (line 59, col 49) +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1721 to 1727) SpanInfo: {"start":1722,"length":5} + >i = 0 + >:=> (line 59, col 51) to (line 59, col 56) +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1728 to 1734) SpanInfo: {"start":1729,"length":5} + >i < 1 + >:=> (line 59, col 58) to (line 59, col 63) +59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1735 to 1742) SpanInfo: {"start":1736,"length":3} + >i++ + >:=> (line 59, col 65) to (line 59, col 68) +-------------------------------- +60 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1743 to 1767) SpanInfo: {"start":1747,"length":19} + >console.log(nameA2) + >:=> (line 60, col 4) to (line 60, col 23) +-------------------------------- +61 >} + + ~~ => Pos: (1768 to 1769) SpanInfo: {"start":1747,"length":19} + >console.log(nameA2) + >:=> (line 60, col 4) to (line 60, col 23) +-------------------------------- +62 >for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1770 to 1788) SpanInfo: {"start":1780,"length":8} + >numberA2 + >:=> (line 62, col 10) to (line 62, col 18) +62 >for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1789 to 1796) SpanInfo: {"start":1790,"length":6} + >nameA2 + >:=> (line 62, col 20) to (line 62, col 26) +62 >for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1797 to 1835) SpanInfo: {"start":1798,"length":7} + >skillA2 + >:=> (line 62, col 28) to (line 62, col 35) +62 >for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1836 to 1842) SpanInfo: {"start":1837,"length":5} + >i = 0 + >:=> (line 62, col 67) to (line 62, col 72) +62 >for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1843 to 1849) SpanInfo: {"start":1844,"length":5} + >i < 1 + >:=> (line 62, col 74) to (line 62, col 79) +62 >for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1850 to 1857) SpanInfo: {"start":1851,"length":3} + >i++ + >:=> (line 62, col 81) to (line 62, col 84) +-------------------------------- +63 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1858 to 1882) SpanInfo: {"start":1862,"length":19} + >console.log(nameA2) + >:=> (line 63, col 4) to (line 63, col 23) +-------------------------------- +64 >} + + ~~ => Pos: (1883 to 1884) SpanInfo: {"start":1862,"length":19} + >console.log(nameA2) + >:=> (line 63, col 4) to (line 63, col 23) +-------------------------------- +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1885 to 1901) SpanInfo: {"start":1895,"length":6} + >nameMA + >:=> (line 65, col 10) to (line 65, col 16) +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (1902 to 1917) SpanInfo: {"start":1904,"length":13} + >primarySkillA + >:=> (line 65, col 19) to (line 65, col 32) +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1918 to 1934) SpanInfo: {"start":1919,"length":15} + >secondarySkillA + >:=> (line 65, col 34) to (line 65, col 49) +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (1935 to 1950) SpanInfo: {"start":1903,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 65, col 18) to (line 65, col 50) +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1951 to 1957) SpanInfo: {"start":1952,"length":5} + >i = 0 + >:=> (line 65, col 67) to (line 65, col 72) +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1958 to 1964) SpanInfo: {"start":1959,"length":5} + >i < 1 + >:=> (line 65, col 74) to (line 65, col 79) +65 >for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1965 to 1972) SpanInfo: {"start":1966,"length":3} + >i++ + >:=> (line 65, col 81) to (line 65, col 84) +-------------------------------- +66 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1973 to 1997) SpanInfo: {"start":1977,"length":19} + >console.log(nameMA) + >:=> (line 66, col 4) to (line 66, col 23) +-------------------------------- +67 >} + + ~~ => Pos: (1998 to 1999) SpanInfo: {"start":1977,"length":19} + >console.log(nameMA) + >:=> (line 66, col 4) to (line 66, col 23) +-------------------------------- +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2000 to 2016) SpanInfo: {"start":2010,"length":6} + >nameMA + >:=> (line 68, col 10) to (line 68, col 16) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (2017 to 2032) SpanInfo: {"start":2019,"length":13} + >primarySkillA + >:=> (line 68, col 19) to (line 68, col 32) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2033 to 2049) SpanInfo: {"start":2034,"length":15} + >secondarySkillA + >:=> (line 68, col 34) to (line 68, col 49) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~=> Pos: (2050 to 2052) SpanInfo: {"start":2018,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 68, col 18) to (line 68, col 50) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2053 to 2069) SpanInfo: {"start":2054,"length":15} + >getMultiRobot() + >:=> (line 68, col 54) to (line 68, col 69) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2070 to 2076) SpanInfo: {"start":2071,"length":5} + >i = 0 + >:=> (line 68, col 71) to (line 68, col 76) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2077 to 2083) SpanInfo: {"start":2078,"length":5} + >i < 1 + >:=> (line 68, col 78) to (line 68, col 83) +68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2084 to 2091) SpanInfo: {"start":2085,"length":3} + >i++ + >:=> (line 68, col 85) to (line 68, col 88) +-------------------------------- +69 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2092 to 2116) SpanInfo: {"start":2096,"length":19} + >console.log(nameMA) + >:=> (line 69, col 4) to (line 69, col 23) +-------------------------------- +70 >} + + ~~ => Pos: (2117 to 2118) SpanInfo: {"start":2096,"length":19} + >console.log(nameMA) + >:=> (line 69, col 4) to (line 69, col 23) +-------------------------------- +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2119 to 2135) SpanInfo: {"start":2129,"length":6} + >nameMA + >:=> (line 71, col 10) to (line 71, col 16) +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (2136 to 2151) SpanInfo: {"start":2138,"length":13} + >primarySkillA + >:=> (line 71, col 19) to (line 71, col 32) +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2152 to 2168) SpanInfo: {"start":2153,"length":15} + >secondarySkillA + >:=> (line 71, col 34) to (line 71, col 49) +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2169 to 2208) SpanInfo: {"start":2137,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 71, col 18) to (line 71, col 50) +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2209 to 2215) SpanInfo: {"start":2210,"length":5} + >i = 0 + >:=> (line 71, col 91) to (line 71, col 96) +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2216 to 2222) SpanInfo: {"start":2217,"length":5} + >i < 1 + >:=> (line 71, col 98) to (line 71, col 103) +71 >for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2223 to 2230) SpanInfo: {"start":2224,"length":3} + >i++ + >:=> (line 71, col 105) to (line 71, col 108) +-------------------------------- +72 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2231 to 2255) SpanInfo: {"start":2235,"length":19} + >console.log(nameMA) + >:=> (line 72, col 4) to (line 72, col 23) +-------------------------------- +73 >} + + ~~ => Pos: (2256 to 2257) SpanInfo: {"start":2235,"length":19} + >console.log(nameMA) + >:=> (line 72, col 4) to (line 72, col 23) +-------------------------------- +74 > + + ~ => Pos: (2258 to 2258) SpanInfo: undefined +-------------------------------- +75 >for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2259 to 2277) SpanInfo: {"start":2269,"length":8} + >numberA3 + >:=> (line 75, col 10) to (line 75, col 18) +75 >for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2278 to 2302) SpanInfo: {"start":2279,"length":13} + >...robotAInfo + >:=> (line 75, col 20) to (line 75, col 33) +75 >for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2303 to 2309) SpanInfo: {"start":2304,"length":5} + >i = 0 + >:=> (line 75, col 45) to (line 75, col 50) +75 >for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2310 to 2316) SpanInfo: {"start":2311,"length":5} + >i < 1 + >:=> (line 75, col 52) to (line 75, col 57) +75 >for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2317 to 2324) SpanInfo: {"start":2318,"length":3} + >i++ + >:=> (line 75, col 59) to (line 75, col 62) +-------------------------------- +76 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2325 to 2351) SpanInfo: {"start":2329,"length":21} + >console.log(numberA3) + >:=> (line 76, col 4) to (line 76, col 25) +-------------------------------- +77 >} + + ~~ => Pos: (2352 to 2353) SpanInfo: {"start":2329,"length":21} + >console.log(numberA3) + >:=> (line 76, col 4) to (line 76, col 25) +-------------------------------- +78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2354 to 2372) SpanInfo: {"start":2364,"length":8} + >numberA3 + >:=> (line 78, col 10) to (line 78, col 18) +78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2373 to 2389) SpanInfo: {"start":2374,"length":13} + >...robotAInfo + >:=> (line 78, col 20) to (line 78, col 33) +78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (2390 to 2401) SpanInfo: {"start":2391,"length":10} + >getRobot() + >:=> (line 78, col 37) to (line 78, col 47) +78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2402 to 2408) SpanInfo: {"start":2403,"length":5} + >i = 0 + >:=> (line 78, col 49) to (line 78, col 54) +78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2409 to 2415) SpanInfo: {"start":2410,"length":5} + >i < 1 + >:=> (line 78, col 56) to (line 78, col 61) +78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2416 to 2423) SpanInfo: {"start":2417,"length":3} + >i++ + >:=> (line 78, col 63) to (line 78, col 66) +-------------------------------- +79 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2424 to 2450) SpanInfo: {"start":2428,"length":21} + >console.log(numberA3) + >:=> (line 79, col 4) to (line 79, col 25) +-------------------------------- +80 >} + + ~~ => Pos: (2451 to 2452) SpanInfo: {"start":2428,"length":21} + >console.log(numberA3) + >:=> (line 79, col 4) to (line 79, col 25) +-------------------------------- +81 >for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2453 to 2471) SpanInfo: {"start":2463,"length":8} + >numberA3 + >:=> (line 81, col 10) to (line 81, col 18) +81 >for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2472 to 2516) SpanInfo: {"start":2473,"length":13} + >...robotAInfo + >:=> (line 81, col 20) to (line 81, col 33) +81 >for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2517 to 2523) SpanInfo: {"start":2518,"length":5} + >i = 0 + >:=> (line 81, col 65) to (line 81, col 70) +81 >for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2524 to 2530) SpanInfo: {"start":2525,"length":5} + >i < 1 + >:=> (line 81, col 72) to (line 81, col 77) +81 >for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2531 to 2538) SpanInfo: {"start":2532,"length":3} + >i++ + >:=> (line 81, col 79) to (line 81, col 82) +-------------------------------- +82 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2539 to 2565) SpanInfo: {"start":2543,"length":21} + >console.log(numberA3) + >:=> (line 82, col 4) to (line 82, col 25) +-------------------------------- +83 >} + + ~~ => Pos: (2566 to 2567) SpanInfo: {"start":2543,"length":21} + >console.log(numberA3) + >:=> (line 82, col 4) to (line 82, col 25) +-------------------------------- +84 >for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2568 to 2611) SpanInfo: {"start":2578,"length":18} + >...multiRobotAInfo + >:=> (line 84, col 10) to (line 84, col 28) +84 >for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2612 to 2618) SpanInfo: {"start":2613,"length":5} + >i = 0 + >:=> (line 84, col 45) to (line 84, col 50) +84 >for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2619 to 2625) SpanInfo: {"start":2620,"length":5} + >i < 1 + >:=> (line 84, col 52) to (line 84, col 57) +84 >for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2626 to 2633) SpanInfo: {"start":2627,"length":3} + >i++ + >:=> (line 84, col 59) to (line 84, col 62) +-------------------------------- +85 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2634 to 2667) SpanInfo: {"start":2638,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 85, col 4) to (line 85, col 32) +-------------------------------- +86 >} + + ~~ => Pos: (2668 to 2669) SpanInfo: {"start":2638,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 85, col 4) to (line 85, col 32) +-------------------------------- +87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2670 to 2700) SpanInfo: {"start":2680,"length":18} + >...multiRobotAInfo + >:=> (line 87, col 10) to (line 87, col 28) +87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2701 to 2717) SpanInfo: {"start":2702,"length":15} + >getMultiRobot() + >:=> (line 87, col 32) to (line 87, col 47) +87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2718 to 2724) SpanInfo: {"start":2719,"length":5} + >i = 0 + >:=> (line 87, col 49) to (line 87, col 54) +87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2725 to 2731) SpanInfo: {"start":2726,"length":5} + >i < 1 + >:=> (line 87, col 56) to (line 87, col 61) +87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2732 to 2739) SpanInfo: {"start":2733,"length":3} + >i++ + >:=> (line 87, col 63) to (line 87, col 66) +-------------------------------- +88 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2740 to 2773) SpanInfo: {"start":2744,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 88, col 4) to (line 88, col 32) +-------------------------------- +89 >} + + ~~ => Pos: (2774 to 2775) SpanInfo: {"start":2744,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 88, col 4) to (line 88, col 32) +-------------------------------- +90 >for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2776 to 2843) SpanInfo: {"start":2786,"length":18} + >...multiRobotAInfo + >:=> (line 90, col 10) to (line 90, col 28) +90 >for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2844 to 2850) SpanInfo: {"start":2845,"length":5} + >i = 0 + >:=> (line 90, col 69) to (line 90, col 74) +90 >for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2851 to 2857) SpanInfo: {"start":2852,"length":5} + >i < 1 + >:=> (line 90, col 76) to (line 90, col 81) +90 >for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2858 to 2865) SpanInfo: {"start":2859,"length":3} + >i++ + >:=> (line 90, col 83) to (line 90, col 86) +-------------------------------- +91 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2866 to 2899) SpanInfo: {"start":2870,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 91, col 4) to (line 91, col 32) +-------------------------------- +92 >} + ~ => Pos: (2900 to 2900) SpanInfo: {"start":2870,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 91, col 4) to (line 91, col 32) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..17fc43d9d9e --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,1077 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, string[]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (89 to 133) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (134 to 177) SpanInfo: {"start":134,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (178 to 199) SpanInfo: {"start":204,"length":13} + >return robotA + >:=> (line 8, col 4) to (line 8, col 17) +-------------------------------- +8 > return robotA; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (200 to 218) SpanInfo: {"start":204,"length":13} + >return robotA + >:=> (line 8, col 4) to (line 8, col 17) +-------------------------------- +9 >} + + ~~ => Pos: (219 to 220) SpanInfo: {"start":219,"length":1} + >} + >:=> (line 9, col 0) to (line 9, col 1) +-------------------------------- +10 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (221 to 284) SpanInfo: {"start":221,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 10, col 0) to (line 10, col 62) +-------------------------------- +11 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (285 to 358) SpanInfo: {"start":285,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 11, col 0) to (line 11, col 72) +-------------------------------- +12 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (359 to 385) SpanInfo: {"start":390,"length":18} + >return multiRobotA + >:=> (line 13, col 4) to (line 13, col 22) +-------------------------------- +13 > return multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (386 to 409) SpanInfo: {"start":390,"length":18} + >return multiRobotA + >:=> (line 13, col 4) to (line 13, col 22) +-------------------------------- +14 >} + + ~~ => Pos: (410 to 411) SpanInfo: {"start":410,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (412 to 447) SpanInfo: {"start":424,"length":13} + >nameA ="name" + >:=> (line 15, col 12) to (line 15, col 25) +15 >for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (448 to 454) SpanInfo: {"start":449,"length":5} + >i = 0 + >:=> (line 15, col 37) to (line 15, col 42) +15 >for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (455 to 461) SpanInfo: {"start":456,"length":5} + >i < 1 + >:=> (line 15, col 44) to (line 15, col 49) +15 >for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (462 to 469) SpanInfo: {"start":463,"length":3} + >i++ + >:=> (line 15, col 51) to (line 15, col 54) +-------------------------------- +16 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (470 to 493) SpanInfo: {"start":474,"length":18} + >console.log(nameA) + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +17 >} + + ~~ => Pos: (494 to 495) SpanInfo: {"start":474,"length":18} + >console.log(nameA) + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (496 to 524) SpanInfo: {"start":508,"length":14} + >nameA = "name" + >:=> (line 18, col 12) to (line 18, col 26) +18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (525 to 536) SpanInfo: {"start":526,"length":10} + >getRobot() + >:=> (line 18, col 30) to (line 18, col 40) +18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (537 to 543) SpanInfo: {"start":538,"length":5} + >i = 0 + >:=> (line 18, col 42) to (line 18, col 47) +18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (544 to 550) SpanInfo: {"start":545,"length":5} + >i < 1 + >:=> (line 18, col 49) to (line 18, col 54) +18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (551 to 558) SpanInfo: {"start":552,"length":3} + >i++ + >:=> (line 18, col 56) to (line 18, col 59) +-------------------------------- +19 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (559 to 582) SpanInfo: {"start":563,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +20 >} + + ~~ => Pos: (583 to 584) SpanInfo: {"start":563,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +21 >for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (585 to 641) SpanInfo: {"start":597,"length":14} + >nameA = "name" + >:=> (line 21, col 12) to (line 21, col 26) +21 >for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (642 to 648) SpanInfo: {"start":643,"length":5} + >i = 0 + >:=> (line 21, col 58) to (line 21, col 63) +21 >for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (649 to 655) SpanInfo: {"start":650,"length":5} + >i < 1 + >:=> (line 21, col 65) to (line 21, col 70) +21 >for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (656 to 663) SpanInfo: {"start":657,"length":3} + >i++ + >:=> (line 21, col 72) to (line 21, col 75) +-------------------------------- +22 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (664 to 687) SpanInfo: {"start":668,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (688 to 689) SpanInfo: {"start":668,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +24 >for (let [, [ + + ~~~~~~~~~~~ => Pos: (690 to 700) SpanInfo: {"start":702,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 24, col 12) to (line 27, col 20) +24 >for (let [, [ + + ~~~ => Pos: (701 to 703) SpanInfo: {"start":708,"length":25} + >primarySkillA = "primary" + >:=> (line 25, col 4) to (line 25, col 29) +-------------------------------- +25 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (704 to 734) SpanInfo: {"start":708,"length":25} + >primarySkillA = "primary" + >:=> (line 25, col 4) to (line 25, col 29) +-------------------------------- +26 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (735 to 768) SpanInfo: {"start":739,"length":29} + >secondarySkillA = "secondary" + >:=> (line 26, col 4) to (line 26, col 33) +-------------------------------- +27 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~ => Pos: (769 to 769) SpanInfo: {"start":739,"length":29} + >secondarySkillA = "secondary" + >:=> (line 26, col 4) to (line 26, col 33) +27 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (770 to 804) SpanInfo: {"start":702,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 24, col 12) to (line 27, col 20) +27 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (805 to 811) SpanInfo: {"start":806,"length":5} + >i = 0 + >:=> (line 27, col 37) to (line 27, col 42) +27 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (812 to 818) SpanInfo: {"start":813,"length":5} + >i < 1 + >:=> (line 27, col 44) to (line 27, col 49) +27 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (819 to 826) SpanInfo: {"start":820,"length":3} + >i++ + >:=> (line 27, col 51) to (line 27, col 54) +-------------------------------- +28 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (827 to 858) SpanInfo: {"start":831,"length":26} + >console.log(primarySkillA) + >:=> (line 28, col 4) to (line 28, col 30) +-------------------------------- +29 >} + + ~~ => Pos: (859 to 860) SpanInfo: {"start":831,"length":26} + >console.log(primarySkillA) + >:=> (line 28, col 4) to (line 28, col 30) +-------------------------------- +30 >for (let [, [ + + ~~~~~~~~~~~ => Pos: (861 to 871) SpanInfo: {"start":873,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 30, col 12) to (line 33, col 20) +30 >for (let [, [ + + ~~~ => Pos: (872 to 874) SpanInfo: {"start":879,"length":25} + >primarySkillA = "primary" + >:=> (line 31, col 4) to (line 31, col 29) +-------------------------------- +31 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (875 to 905) SpanInfo: {"start":879,"length":25} + >primarySkillA = "primary" + >:=> (line 31, col 4) to (line 31, col 29) +-------------------------------- +32 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (906 to 939) SpanInfo: {"start":910,"length":29} + >secondarySkillA = "secondary" + >:=> (line 32, col 4) to (line 32, col 33) +-------------------------------- +33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~ => Pos: (940 to 940) SpanInfo: {"start":910,"length":29} + >secondarySkillA = "secondary" + >:=> (line 32, col 4) to (line 32, col 33) +33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (941 to 962) SpanInfo: {"start":873,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 30, col 12) to (line 33, col 20) +33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (963 to 979) SpanInfo: {"start":964,"length":15} + >getMultiRobot() + >:=> (line 33, col 24) to (line 33, col 39) +33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (980 to 986) SpanInfo: {"start":981,"length":5} + >i = 0 + >:=> (line 33, col 41) to (line 33, col 46) +33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (987 to 993) SpanInfo: {"start":988,"length":5} + >i < 1 + >:=> (line 33, col 48) to (line 33, col 53) +33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (994 to 1001) SpanInfo: {"start":995,"length":3} + >i++ + >:=> (line 33, col 55) to (line 33, col 58) +-------------------------------- +34 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1002 to 1033) SpanInfo: {"start":1006,"length":26} + >console.log(primarySkillA) + >:=> (line 34, col 4) to (line 34, col 30) +-------------------------------- +35 >} + + ~~ => Pos: (1034 to 1035) SpanInfo: {"start":1006,"length":26} + >console.log(primarySkillA) + >:=> (line 34, col 4) to (line 34, col 30) +-------------------------------- +36 >for (let [, [ + + ~~~~~~~~~~~ => Pos: (1036 to 1046) SpanInfo: {"start":1048,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 36, col 12) to (line 39, col 20) +36 >for (let [, [ + + ~~~ => Pos: (1047 to 1049) SpanInfo: {"start":1054,"length":25} + >primarySkillA = "primary" + >:=> (line 37, col 4) to (line 37, col 29) +-------------------------------- +37 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1050 to 1080) SpanInfo: {"start":1054,"length":25} + >primarySkillA = "primary" + >:=> (line 37, col 4) to (line 37, col 29) +-------------------------------- +38 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1081 to 1114) SpanInfo: {"start":1085,"length":29} + >secondarySkillA = "secondary" + >:=> (line 38, col 4) to (line 38, col 33) +-------------------------------- +39 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~ => Pos: (1115 to 1115) SpanInfo: {"start":1085,"length":29} + >secondarySkillA = "secondary" + >:=> (line 38, col 4) to (line 38, col 33) +39 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1116 to 1174) SpanInfo: {"start":1048,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 36, col 12) to (line 39, col 20) +39 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1175 to 1181) SpanInfo: {"start":1176,"length":5} + >i = 0 + >:=> (line 39, col 61) to (line 39, col 66) +39 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1182 to 1188) SpanInfo: {"start":1183,"length":5} + >i < 1 + >:=> (line 39, col 68) to (line 39, col 73) +39 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1189 to 1196) SpanInfo: {"start":1190,"length":3} + >i++ + >:=> (line 39, col 75) to (line 39, col 78) +-------------------------------- +40 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1197 to 1228) SpanInfo: {"start":1201,"length":26} + >console.log(primarySkillA) + >:=> (line 40, col 4) to (line 40, col 30) +-------------------------------- +41 >} + + ~~ => Pos: (1229 to 1230) SpanInfo: {"start":1201,"length":26} + >console.log(primarySkillA) + >:=> (line 40, col 4) to (line 40, col 30) +-------------------------------- +42 >for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1231 to 1263) SpanInfo: {"start":1241,"length":12} + >numberB = -1 + >:=> (line 42, col 10) to (line 42, col 22) +42 >for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1264 to 1270) SpanInfo: {"start":1265,"length":5} + >i = 0 + >:=> (line 42, col 34) to (line 42, col 39) +42 >for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1271 to 1277) SpanInfo: {"start":1272,"length":5} + >i < 1 + >:=> (line 42, col 41) to (line 42, col 46) +42 >for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1278 to 1285) SpanInfo: {"start":1279,"length":3} + >i++ + >:=> (line 42, col 48) to (line 42, col 51) +-------------------------------- +43 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1286 to 1311) SpanInfo: {"start":1290,"length":20} + >console.log(numberB) + >:=> (line 43, col 4) to (line 43, col 24) +-------------------------------- +44 >} + + ~~ => Pos: (1312 to 1313) SpanInfo: {"start":1290,"length":20} + >console.log(numberB) + >:=> (line 43, col 4) to (line 43, col 24) +-------------------------------- +45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1314 to 1338) SpanInfo: {"start":1324,"length":12} + >numberB = -1 + >:=> (line 45, col 10) to (line 45, col 22) +45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (1339 to 1350) SpanInfo: {"start":1340,"length":10} + >getRobot() + >:=> (line 45, col 26) to (line 45, col 36) +45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1351 to 1357) SpanInfo: {"start":1352,"length":5} + >i = 0 + >:=> (line 45, col 38) to (line 45, col 43) +45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1358 to 1364) SpanInfo: {"start":1359,"length":5} + >i < 1 + >:=> (line 45, col 45) to (line 45, col 50) +45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1365 to 1372) SpanInfo: {"start":1366,"length":3} + >i++ + >:=> (line 45, col 52) to (line 45, col 55) +-------------------------------- +46 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1373 to 1398) SpanInfo: {"start":1377,"length":20} + >console.log(numberB) + >:=> (line 46, col 4) to (line 46, col 24) +-------------------------------- +47 >} + + ~~ => Pos: (1399 to 1400) SpanInfo: {"start":1377,"length":20} + >console.log(numberB) + >:=> (line 46, col 4) to (line 46, col 24) +-------------------------------- +48 >for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1401 to 1453) SpanInfo: {"start":1411,"length":12} + >numberB = -1 + >:=> (line 48, col 10) to (line 48, col 22) +48 >for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1454 to 1460) SpanInfo: {"start":1455,"length":5} + >i = 0 + >:=> (line 48, col 54) to (line 48, col 59) +48 >for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1461 to 1467) SpanInfo: {"start":1462,"length":5} + >i < 1 + >:=> (line 48, col 61) to (line 48, col 66) +48 >for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1468 to 1475) SpanInfo: {"start":1469,"length":3} + >i++ + >:=> (line 48, col 68) to (line 48, col 71) +-------------------------------- +49 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1476 to 1501) SpanInfo: {"start":1480,"length":20} + >console.log(numberB) + >:=> (line 49, col 4) to (line 49, col 24) +-------------------------------- +50 >} + + ~~ => Pos: (1502 to 1503) SpanInfo: {"start":1480,"length":20} + >console.log(numberB) + >:=> (line 49, col 4) to (line 49, col 24) +-------------------------------- +51 >for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1504 to 1543) SpanInfo: {"start":1514,"length":14} + >nameB = "name" + >:=> (line 51, col 10) to (line 51, col 24) +51 >for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1544 to 1550) SpanInfo: {"start":1545,"length":5} + >i = 0 + >:=> (line 51, col 41) to (line 51, col 46) +51 >for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1551 to 1557) SpanInfo: {"start":1552,"length":5} + >i < 1 + >:=> (line 51, col 48) to (line 51, col 53) +51 >for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1558 to 1565) SpanInfo: {"start":1559,"length":3} + >i++ + >:=> (line 51, col 55) to (line 51, col 58) +-------------------------------- +52 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1566 to 1589) SpanInfo: {"start":1570,"length":18} + >console.log(nameB) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +53 >} + + ~~ => Pos: (1590 to 1591) SpanInfo: {"start":1570,"length":18} + >console.log(nameB) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1592 to 1618) SpanInfo: {"start":1602,"length":14} + >nameB = "name" + >:=> (line 54, col 10) to (line 54, col 24) +54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1619 to 1635) SpanInfo: {"start":1620,"length":15} + >getMultiRobot() + >:=> (line 54, col 28) to (line 54, col 43) +54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1636 to 1642) SpanInfo: {"start":1637,"length":5} + >i = 0 + >:=> (line 54, col 45) to (line 54, col 50) +54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1643 to 1649) SpanInfo: {"start":1644,"length":5} + >i < 1 + >:=> (line 54, col 52) to (line 54, col 57) +54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1650 to 1657) SpanInfo: {"start":1651,"length":3} + >i++ + >:=> (line 54, col 59) to (line 54, col 62) +-------------------------------- +55 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1658 to 1681) SpanInfo: {"start":1662,"length":18} + >console.log(nameB) + >:=> (line 55, col 4) to (line 55, col 22) +-------------------------------- +56 >} + + ~~ => Pos: (1682 to 1683) SpanInfo: {"start":1662,"length":18} + >console.log(nameB) + >:=> (line 55, col 4) to (line 55, col 22) +-------------------------------- +57 >for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1684 to 1747) SpanInfo: {"start":1694,"length":14} + >nameB = "name" + >:=> (line 57, col 10) to (line 57, col 24) +57 >for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1748 to 1754) SpanInfo: {"start":1749,"length":5} + >i = 0 + >:=> (line 57, col 65) to (line 57, col 70) +57 >for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1755 to 1761) SpanInfo: {"start":1756,"length":5} + >i < 1 + >:=> (line 57, col 72) to (line 57, col 77) +57 >for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1762 to 1769) SpanInfo: {"start":1763,"length":3} + >i++ + >:=> (line 57, col 79) to (line 57, col 82) +-------------------------------- +58 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1770 to 1793) SpanInfo: {"start":1774,"length":18} + >console.log(nameB) + >:=> (line 58, col 4) to (line 58, col 22) +-------------------------------- +59 >} + + ~~ => Pos: (1794 to 1795) SpanInfo: {"start":1774,"length":18} + >console.log(nameB) + >:=> (line 58, col 4) to (line 58, col 22) +-------------------------------- +60 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1796 to 1819) SpanInfo: {"start":1806,"length":13} + >numberA2 = -1 + >:=> (line 60, col 10) to (line 60, col 23) +60 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1820 to 1836) SpanInfo: {"start":1821,"length":15} + >nameA2 = "name" + >:=> (line 60, col 25) to (line 60, col 40) +60 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1837 to 1865) SpanInfo: {"start":1838,"length":17} + >skillA2 = "skill" + >:=> (line 60, col 42) to (line 60, col 59) +60 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1866 to 1872) SpanInfo: {"start":1867,"length":5} + >i = 0 + >:=> (line 60, col 71) to (line 60, col 76) +60 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1873 to 1879) SpanInfo: {"start":1874,"length":5} + >i < 1 + >:=> (line 60, col 78) to (line 60, col 83) +60 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1880 to 1887) SpanInfo: {"start":1881,"length":3} + >i++ + >:=> (line 60, col 85) to (line 60, col 88) +-------------------------------- +61 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1888 to 1912) SpanInfo: {"start":1892,"length":19} + >console.log(nameA2) + >:=> (line 61, col 4) to (line 61, col 23) +-------------------------------- +62 >} + + ~~ => Pos: (1913 to 1914) SpanInfo: {"start":1892,"length":19} + >console.log(nameA2) + >:=> (line 61, col 4) to (line 61, col 23) +-------------------------------- +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1915 to 1938) SpanInfo: {"start":1925,"length":13} + >numberA2 = -1 + >:=> (line 63, col 10) to (line 63, col 23) +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1939 to 1955) SpanInfo: {"start":1940,"length":15} + >nameA2 = "name" + >:=> (line 63, col 25) to (line 63, col 40) +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1956 to 1976) SpanInfo: {"start":1957,"length":17} + >skillA2 = "skill" + >:=> (line 63, col 42) to (line 63, col 59) +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (1977 to 1988) SpanInfo: {"start":1978,"length":10} + >getRobot() + >:=> (line 63, col 63) to (line 63, col 73) +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1989 to 1995) SpanInfo: {"start":1990,"length":5} + >i = 0 + >:=> (line 63, col 75) to (line 63, col 80) +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1996 to 2002) SpanInfo: {"start":1997,"length":5} + >i < 1 + >:=> (line 63, col 82) to (line 63, col 87) +63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2003 to 2010) SpanInfo: {"start":2004,"length":3} + >i++ + >:=> (line 63, col 89) to (line 63, col 92) +-------------------------------- +64 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2011 to 2035) SpanInfo: {"start":2015,"length":19} + >console.log(nameA2) + >:=> (line 64, col 4) to (line 64, col 23) +-------------------------------- +65 >} + + ~~ => Pos: (2036 to 2037) SpanInfo: {"start":2015,"length":19} + >console.log(nameA2) + >:=> (line 64, col 4) to (line 64, col 23) +-------------------------------- +66 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2038 to 2061) SpanInfo: {"start":2048,"length":13} + >numberA2 = -1 + >:=> (line 66, col 10) to (line 66, col 23) +66 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2062 to 2078) SpanInfo: {"start":2063,"length":15} + >nameA2 = "name" + >:=> (line 66, col 25) to (line 66, col 40) +66 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2079 to 2127) SpanInfo: {"start":2080,"length":17} + >skillA2 = "skill" + >:=> (line 66, col 42) to (line 66, col 59) +66 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2128 to 2134) SpanInfo: {"start":2129,"length":5} + >i = 0 + >:=> (line 66, col 91) to (line 66, col 96) +66 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2135 to 2141) SpanInfo: {"start":2136,"length":5} + >i < 1 + >:=> (line 66, col 98) to (line 66, col 103) +66 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2142 to 2149) SpanInfo: {"start":2143,"length":3} + >i++ + >:=> (line 66, col 105) to (line 66, col 108) +-------------------------------- +67 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2150 to 2174) SpanInfo: {"start":2154,"length":19} + >console.log(nameA2) + >:=> (line 67, col 4) to (line 67, col 23) +-------------------------------- +68 >} + + ~~ => Pos: (2175 to 2176) SpanInfo: {"start":2154,"length":19} + >console.log(nameA2) + >:=> (line 67, col 4) to (line 67, col 23) +-------------------------------- +69 >for (let + + ~~~~~~~~~ => Pos: (2177 to 2185) SpanInfo: {"start":2191,"length":17} + >nameMA = "noName" + >:=> (line 70, col 5) to (line 70, col 22) +-------------------------------- +70 > [nameMA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2186 to 2209) SpanInfo: {"start":2191,"length":17} + >nameMA = "noName" + >:=> (line 70, col 5) to (line 70, col 22) +-------------------------------- +71 > [ + + ~~~~~~~~~~ => Pos: (2210 to 2219) SpanInfo: {"start":2232,"length":25} + >primarySkillA = "primary" + >:=> (line 72, col 12) to (line 72, col 37) +-------------------------------- +72 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2220 to 2258) SpanInfo: {"start":2232,"length":25} + >primarySkillA = "primary" + >:=> (line 72, col 12) to (line 72, col 37) +-------------------------------- +73 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2259 to 2300) SpanInfo: {"start":2271,"length":29} + >secondarySkillA = "secondary" + >:=> (line 73, col 12) to (line 73, col 41) +-------------------------------- +74 > ] = ["none", "none"] + + ~~~~~~~~~ => Pos: (2301 to 2309) SpanInfo: {"start":2271,"length":29} + >secondarySkillA = "secondary" + >:=> (line 73, col 12) to (line 73, col 41) +74 > ] = ["none", "none"] + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2310 to 2329) SpanInfo: {"start":2218,"length":111} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 71, col 8) to (line 74, col 28) +-------------------------------- +75 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2330 to 2349) SpanInfo: {"start":2218,"length":111} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 71, col 8) to (line 74, col 28) +75 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2350 to 2356) SpanInfo: {"start":2351,"length":5} + >i = 0 + >:=> (line 75, col 21) to (line 75, col 26) +75 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2357 to 2363) SpanInfo: {"start":2358,"length":5} + >i < 1 + >:=> (line 75, col 28) to (line 75, col 33) +75 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2364 to 2371) SpanInfo: {"start":2365,"length":3} + >i++ + >:=> (line 75, col 35) to (line 75, col 38) +-------------------------------- +76 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2372 to 2396) SpanInfo: {"start":2376,"length":19} + >console.log(nameMA) + >:=> (line 76, col 4) to (line 76, col 23) +-------------------------------- +77 >} + + ~~ => Pos: (2397 to 2398) SpanInfo: {"start":2376,"length":19} + >console.log(nameMA) + >:=> (line 76, col 4) to (line 76, col 23) +-------------------------------- +78 >for (let [nameMA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2399 to 2427) SpanInfo: {"start":2409,"length":17} + >nameMA = "noName" + >:=> (line 78, col 10) to (line 78, col 27) +-------------------------------- +79 > [ + + ~~~~~~ => Pos: (2428 to 2433) SpanInfo: {"start":2442,"length":25} + >primarySkillA = "primary" + >:=> (line 80, col 8) to (line 80, col 33) +-------------------------------- +80 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2434 to 2468) SpanInfo: {"start":2442,"length":25} + >primarySkillA = "primary" + >:=> (line 80, col 8) to (line 80, col 33) +-------------------------------- +81 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2469 to 2506) SpanInfo: {"start":2477,"length":29} + >secondarySkillA = "secondary" + >:=> (line 81, col 8) to (line 81, col 37) +-------------------------------- +82 > ] = ["none", "none"] + + ~~~~~ => Pos: (2507 to 2511) SpanInfo: {"start":2477,"length":29} + >secondarySkillA = "secondary" + >:=> (line 81, col 8) to (line 81, col 37) +82 > ] = ["none", "none"] + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2512 to 2531) SpanInfo: {"start":2432,"length":99} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 79, col 4) to (line 82, col 24) +-------------------------------- +83 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~ => Pos: (2532 to 2535) SpanInfo: {"start":2432,"length":99} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 79, col 4) to (line 82, col 24) +83 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2536 to 2552) SpanInfo: {"start":2537,"length":15} + >getMultiRobot() + >:=> (line 83, col 5) to (line 83, col 20) +83 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2553 to 2559) SpanInfo: {"start":2554,"length":5} + >i = 0 + >:=> (line 83, col 22) to (line 83, col 27) +83 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2560 to 2566) SpanInfo: {"start":2561,"length":5} + >i < 1 + >:=> (line 83, col 29) to (line 83, col 34) +83 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2567 to 2574) SpanInfo: {"start":2568,"length":3} + >i++ + >:=> (line 83, col 36) to (line 83, col 39) +-------------------------------- +84 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2575 to 2599) SpanInfo: {"start":2579,"length":19} + >console.log(nameMA) + >:=> (line 84, col 4) to (line 84, col 23) +-------------------------------- +85 >} + + ~~ => Pos: (2600 to 2601) SpanInfo: {"start":2579,"length":19} + >console.log(nameMA) + >:=> (line 84, col 4) to (line 84, col 23) +-------------------------------- +86 >for (let [nameMA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2602 to 2630) SpanInfo: {"start":2612,"length":17} + >nameMA = "noName" + >:=> (line 86, col 10) to (line 86, col 27) +-------------------------------- +87 > [ + + ~~~~~~ => Pos: (2631 to 2636) SpanInfo: {"start":2645,"length":25} + >primarySkillA = "primary" + >:=> (line 88, col 8) to (line 88, col 33) +-------------------------------- +88 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2637 to 2671) SpanInfo: {"start":2645,"length":25} + >primarySkillA = "primary" + >:=> (line 88, col 8) to (line 88, col 33) +-------------------------------- +89 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2672 to 2709) SpanInfo: {"start":2680,"length":29} + >secondarySkillA = "secondary" + >:=> (line 89, col 8) to (line 89, col 37) +-------------------------------- +90 > ] = ["none", "none"] + + ~~~~~ => Pos: (2710 to 2714) SpanInfo: {"start":2680,"length":29} + >secondarySkillA = "secondary" + >:=> (line 89, col 8) to (line 89, col 37) +90 > ] = ["none", "none"] + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2715 to 2734) SpanInfo: {"start":2635,"length":99} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 87, col 4) to (line 90, col 24) +-------------------------------- +91 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2735 to 2775) SpanInfo: {"start":2635,"length":99} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 87, col 4) to (line 90, col 24) +91 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2776 to 2782) SpanInfo: {"start":2777,"length":5} + >i = 0 + >:=> (line 91, col 42) to (line 91, col 47) +91 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2783 to 2789) SpanInfo: {"start":2784,"length":5} + >i < 1 + >:=> (line 91, col 49) to (line 91, col 54) +91 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2790 to 2797) SpanInfo: {"start":2791,"length":3} + >i++ + >:=> (line 91, col 56) to (line 91, col 59) +-------------------------------- +92 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2798 to 2822) SpanInfo: {"start":2802,"length":19} + >console.log(nameMA) + >:=> (line 92, col 4) to (line 92, col 23) +-------------------------------- +93 >} + + ~~ => Pos: (2823 to 2824) SpanInfo: {"start":2802,"length":19} + >console.log(nameMA) + >:=> (line 92, col 4) to (line 92, col 23) +-------------------------------- +94 >for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2825 to 2848) SpanInfo: {"start":2835,"length":13} + >numberA3 = -1 + >:=> (line 94, col 10) to (line 94, col 23) +94 >for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2849 to 2873) SpanInfo: {"start":2850,"length":13} + >...robotAInfo + >:=> (line 94, col 25) to (line 94, col 38) +94 >for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2874 to 2880) SpanInfo: {"start":2875,"length":5} + >i = 0 + >:=> (line 94, col 50) to (line 94, col 55) +94 >for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2881 to 2887) SpanInfo: {"start":2882,"length":5} + >i < 1 + >:=> (line 94, col 57) to (line 94, col 62) +94 >for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2888 to 2895) SpanInfo: {"start":2889,"length":3} + >i++ + >:=> (line 94, col 64) to (line 94, col 67) +-------------------------------- +95 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2896 to 2922) SpanInfo: {"start":2900,"length":21} + >console.log(numberA3) + >:=> (line 95, col 4) to (line 95, col 25) +-------------------------------- +96 >} + + ~~ => Pos: (2923 to 2924) SpanInfo: {"start":2900,"length":21} + >console.log(numberA3) + >:=> (line 95, col 4) to (line 95, col 25) +-------------------------------- +97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2925 to 2948) SpanInfo: {"start":2935,"length":13} + >numberA3 = -1 + >:=> (line 97, col 10) to (line 97, col 23) +97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2949 to 2965) SpanInfo: {"start":2950,"length":13} + >...robotAInfo + >:=> (line 97, col 25) to (line 97, col 38) +97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (2966 to 2977) SpanInfo: {"start":2967,"length":10} + >getRobot() + >:=> (line 97, col 42) to (line 97, col 52) +97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2978 to 2984) SpanInfo: {"start":2979,"length":5} + >i = 0 + >:=> (line 97, col 54) to (line 97, col 59) +97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2985 to 2991) SpanInfo: {"start":2986,"length":5} + >i < 1 + >:=> (line 97, col 61) to (line 97, col 66) +97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2992 to 2999) SpanInfo: {"start":2993,"length":3} + >i++ + >:=> (line 97, col 68) to (line 97, col 71) +-------------------------------- +98 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3000 to 3026) SpanInfo: {"start":3004,"length":21} + >console.log(numberA3) + >:=> (line 98, col 4) to (line 98, col 25) +-------------------------------- +99 >} + + ~~ => Pos: (3027 to 3028) SpanInfo: {"start":3004,"length":21} + >console.log(numberA3) + >:=> (line 98, col 4) to (line 98, col 25) +-------------------------------- +100>for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3029 to 3052) SpanInfo: {"start":3039,"length":13} + >numberA3 = -1 + >:=> (line 100, col 10) to (line 100, col 23) +100>for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3053 to 3097) SpanInfo: {"start":3054,"length":13} + >...robotAInfo + >:=> (line 100, col 25) to (line 100, col 38) +100>for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3098 to 3104) SpanInfo: {"start":3099,"length":5} + >i = 0 + >:=> (line 100, col 70) to (line 100, col 75) +100>for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3105 to 3111) SpanInfo: {"start":3106,"length":5} + >i < 1 + >:=> (line 100, col 77) to (line 100, col 82) +100>for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3112 to 3119) SpanInfo: {"start":3113,"length":3} + >i++ + >:=> (line 100, col 84) to (line 100, col 87) +-------------------------------- +101> console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3120 to 3146) SpanInfo: {"start":3124,"length":21} + >console.log(numberA3) + >:=> (line 101, col 4) to (line 101, col 25) +-------------------------------- +102>} + ~ => Pos: (3147 to 3147) SpanInfo: {"start":3124,"length":21} + >console.log(numberA3) + >:=> (line 101, col 4) to (line 101, col 25) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline new file mode 100644 index 00000000000..5f4ff059dca --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline @@ -0,0 +1,653 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 186) SpanInfo: undefined +-------------------------------- +12 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (187 to 213) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (214 to 220) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (221 to 222) SpanInfo: undefined +-------------------------------- +15 >let robot: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (223 to 277) SpanInfo: {"start":223,"length":53} + >let robot: Robot = { name: "mower", skill: "mowing" } + >:=> (line 15, col 0) to (line 15, col 53) +-------------------------------- +16 >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (278 to 375) SpanInfo: {"start":278,"length":96} + >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 16, col 0) to (line 16, col 96) +-------------------------------- +17 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (376 to 397) SpanInfo: {"start":402,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +18 > return robot; + + ~~~~~~~~~~~~~~~~~~ => Pos: (398 to 415) SpanInfo: {"start":402,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +19 >} + + ~~ => Pos: (416 to 417) SpanInfo: {"start":416,"length":1} + >} + >:=> (line 19, col 0) to (line 19, col 1) +-------------------------------- +20 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (418 to 444) SpanInfo: {"start":449,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +21 > return multiRobot; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (445 to 467) SpanInfo: {"start":449,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +22 >} + + ~~ => Pos: (468 to 469) SpanInfo: {"start":468,"length":1} + >} + >:=> (line 22, col 0) to (line 22, col 1) +-------------------------------- +23 >for (let {name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (470 to 501) SpanInfo: {"start":480,"length":11} + >name: nameA + >:=> (line 23, col 10) to (line 23, col 21) +23 >for (let {name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (502 to 508) SpanInfo: {"start":503,"length":5} + >i = 0 + >:=> (line 23, col 33) to (line 23, col 38) +23 >for (let {name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (509 to 515) SpanInfo: {"start":510,"length":5} + >i < 1 + >:=> (line 23, col 40) to (line 23, col 45) +23 >for (let {name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (516 to 523) SpanInfo: {"start":517,"length":3} + >i++ + >:=> (line 23, col 47) to (line 23, col 50) +-------------------------------- +24 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (524 to 547) SpanInfo: {"start":528,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +25 >} + + ~~ => Pos: (548 to 549) SpanInfo: {"start":528,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (550 to 574) SpanInfo: {"start":560,"length":11} + >name: nameA + >:=> (line 26, col 10) to (line 26, col 21) +26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (575 to 586) SpanInfo: {"start":576,"length":10} + >getRobot() + >:=> (line 26, col 26) to (line 26, col 36) +26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (587 to 593) SpanInfo: {"start":588,"length":5} + >i = 0 + >:=> (line 26, col 38) to (line 26, col 43) +26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (594 to 600) SpanInfo: {"start":595,"length":5} + >i < 1 + >:=> (line 26, col 45) to (line 26, col 50) +26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (601 to 608) SpanInfo: {"start":602,"length":3} + >i++ + >:=> (line 26, col 52) to (line 26, col 55) +-------------------------------- +27 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (609 to 632) SpanInfo: {"start":613,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +28 >} + + ~~ => Pos: (633 to 634) SpanInfo: {"start":613,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +29 >for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (635 to 706) SpanInfo: {"start":645,"length":11} + >name: nameA + >:=> (line 29, col 10) to (line 29, col 21) +29 >for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (707 to 713) SpanInfo: {"start":708,"length":5} + >i = 0 + >:=> (line 29, col 73) to (line 29, col 78) +29 >for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (714 to 720) SpanInfo: {"start":715,"length":5} + >i < 1 + >:=> (line 29, col 80) to (line 29, col 85) +29 >for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (721 to 728) SpanInfo: {"start":722,"length":3} + >i++ + >:=> (line 29, col 87) to (line 29, col 90) +-------------------------------- +30 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (729 to 752) SpanInfo: {"start":733,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +31 >} + + ~~ => Pos: (753 to 754) SpanInfo: {"start":733,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (755 to 772) SpanInfo: {"start":766,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 32, col 11) to (line 32, col 63) +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (773 to 793) SpanInfo: {"start":776,"length":17} + >primary: primaryA + >:=> (line 32, col 21) to (line 32, col 38) +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (794 to 817) SpanInfo: {"start":795,"length":21} + >secondary: secondaryA + >:=> (line 32, col 40) to (line 32, col 61) +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (818 to 833) SpanInfo: {"start":766,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 32, col 11) to (line 32, col 63) +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (834 to 840) SpanInfo: {"start":835,"length":5} + >i = 0 + >:=> (line 32, col 80) to (line 32, col 85) +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (841 to 847) SpanInfo: {"start":842,"length":5} + >i < 1 + >:=> (line 32, col 87) to (line 32, col 92) +32 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (848 to 855) SpanInfo: {"start":849,"length":3} + >i++ + >:=> (line 32, col 94) to (line 32, col 97) +-------------------------------- +33 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (856 to 882) SpanInfo: {"start":860,"length":21} + >console.log(primaryA) + >:=> (line 33, col 4) to (line 33, col 25) +-------------------------------- +34 >} + + ~~ => Pos: (883 to 884) SpanInfo: {"start":860,"length":21} + >console.log(primaryA) + >:=> (line 33, col 4) to (line 33, col 25) +-------------------------------- +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (885 to 902) SpanInfo: {"start":896,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 35, col 11) to (line 35, col 63) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (903 to 923) SpanInfo: {"start":906,"length":17} + >primary: primaryA + >:=> (line 35, col 21) to (line 35, col 38) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (924 to 947) SpanInfo: {"start":925,"length":21} + >secondary: secondaryA + >:=> (line 35, col 40) to (line 35, col 61) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~=> Pos: (948 to 951) SpanInfo: {"start":896,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 35, col 11) to (line 35, col 63) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (952 to 968) SpanInfo: {"start":953,"length":15} + >getMultiRobot() + >:=> (line 35, col 68) to (line 35, col 83) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (969 to 975) SpanInfo: {"start":970,"length":5} + >i = 0 + >:=> (line 35, col 85) to (line 35, col 90) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (976 to 982) SpanInfo: {"start":977,"length":5} + >i < 1 + >:=> (line 35, col 92) to (line 35, col 97) +35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (983 to 990) SpanInfo: {"start":984,"length":3} + >i++ + >:=> (line 35, col 99) to (line 35, col 102) +-------------------------------- +36 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (991 to 1017) SpanInfo: {"start":995,"length":21} + >console.log(primaryA) + >:=> (line 36, col 4) to (line 36, col 25) +-------------------------------- +37 >} + + ~~ => Pos: (1018 to 1019) SpanInfo: {"start":995,"length":21} + >console.log(primaryA) + >:=> (line 36, col 4) to (line 36, col 25) +-------------------------------- +38 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~ => Pos: (1020 to 1037) SpanInfo: {"start":1031,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 38, col 11) to (line 38, col 63) +38 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1038 to 1058) SpanInfo: {"start":1041,"length":17} + >primary: primaryA + >:=> (line 38, col 21) to (line 38, col 38) +38 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1059 to 1082) SpanInfo: {"start":1060,"length":21} + >secondary: secondaryA + >:=> (line 38, col 40) to (line 38, col 61) +38 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~=> Pos: (1083 to 1087) SpanInfo: {"start":1031,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 38, col 11) to (line 38, col 63) +-------------------------------- +39 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1088 to 1178) SpanInfo: {"start":1031,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 38, col 11) to (line 38, col 63) +-------------------------------- +40 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1179 to 1188) SpanInfo: {"start":1183,"length":5} + >i = 0 + >:=> (line 40, col 4) to (line 40, col 9) +40 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1189 to 1195) SpanInfo: {"start":1190,"length":5} + >i < 1 + >:=> (line 40, col 11) to (line 40, col 16) +40 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1196 to 1203) SpanInfo: {"start":1197,"length":3} + >i++ + >:=> (line 40, col 18) to (line 40, col 21) +-------------------------------- +41 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1204 to 1230) SpanInfo: {"start":1208,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +42 >} + + ~~ => Pos: (1231 to 1232) SpanInfo: {"start":1208,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +43 >for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1233 to 1254) SpanInfo: {"start":1243,"length":11} + >name: nameA + >:=> (line 43, col 10) to (line 43, col 21) +43 >for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1255 to 1279) SpanInfo: {"start":1256,"length":13} + >skill: skillA + >:=> (line 43, col 23) to (line 43, col 36) +43 >for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1280 to 1286) SpanInfo: {"start":1281,"length":5} + >i = 0 + >:=> (line 43, col 48) to (line 43, col 53) +43 >for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1287 to 1293) SpanInfo: {"start":1288,"length":5} + >i < 1 + >:=> (line 43, col 55) to (line 43, col 60) +43 >for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1294 to 1301) SpanInfo: {"start":1295,"length":3} + >i++ + >:=> (line 43, col 62) to (line 43, col 65) +-------------------------------- +44 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1302 to 1325) SpanInfo: {"start":1306,"length":18} + >console.log(nameA) + >:=> (line 44, col 4) to (line 44, col 22) +-------------------------------- +45 >} + + ~~ => Pos: (1326 to 1327) SpanInfo: {"start":1306,"length":18} + >console.log(nameA) + >:=> (line 44, col 4) to (line 44, col 22) +-------------------------------- +46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1328 to 1349) SpanInfo: {"start":1338,"length":11} + >name: nameA + >:=> (line 46, col 10) to (line 46, col 21) +46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (1350 to 1367) SpanInfo: {"start":1351,"length":13} + >skill: skillA + >:=> (line 46, col 23) to (line 46, col 36) +46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (1368 to 1379) SpanInfo: {"start":1369,"length":10} + >getRobot() + >:=> (line 46, col 41) to (line 46, col 51) +46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1380 to 1386) SpanInfo: {"start":1381,"length":5} + >i = 0 + >:=> (line 46, col 53) to (line 46, col 58) +46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1387 to 1393) SpanInfo: {"start":1388,"length":5} + >i < 1 + >:=> (line 46, col 60) to (line 46, col 65) +46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1394 to 1401) SpanInfo: {"start":1395,"length":3} + >i++ + >:=> (line 46, col 67) to (line 46, col 70) +-------------------------------- +47 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1402 to 1425) SpanInfo: {"start":1406,"length":18} + >console.log(nameA) + >:=> (line 47, col 4) to (line 47, col 22) +-------------------------------- +48 >} + + ~~ => Pos: (1426 to 1427) SpanInfo: {"start":1406,"length":18} + >console.log(nameA) + >:=> (line 47, col 4) to (line 47, col 22) +-------------------------------- +49 >for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1428 to 1449) SpanInfo: {"start":1438,"length":11} + >name: nameA + >:=> (line 49, col 10) to (line 49, col 21) +49 >for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1450 to 1514) SpanInfo: {"start":1451,"length":13} + >skill: skillA + >:=> (line 49, col 23) to (line 49, col 36) +49 >for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1515 to 1521) SpanInfo: {"start":1516,"length":5} + >i = 0 + >:=> (line 49, col 88) to (line 49, col 93) +49 >for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1522 to 1528) SpanInfo: {"start":1523,"length":5} + >i < 1 + >:=> (line 49, col 95) to (line 49, col 100) +49 >for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1529 to 1536) SpanInfo: {"start":1530,"length":3} + >i++ + >:=> (line 49, col 102) to (line 49, col 105) +-------------------------------- +50 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1537 to 1560) SpanInfo: {"start":1541,"length":18} + >console.log(nameA) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +51 >} + + ~~ => Pos: (1561 to 1562) SpanInfo: {"start":1541,"length":18} + >console.log(nameA) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1563 to 1584) SpanInfo: {"start":1573,"length":11} + >name: nameA + >:=> (line 52, col 10) to (line 52, col 21) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1585 to 1592) SpanInfo: {"start":1586,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 52, col 23) to (line 52, col 75) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1593 to 1613) SpanInfo: {"start":1596,"length":17} + >primary: primaryA + >:=> (line 52, col 33) to (line 52, col 50) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1614 to 1637) SpanInfo: {"start":1615,"length":21} + >secondary: secondaryA + >:=> (line 52, col 52) to (line 52, col 73) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (1638 to 1653) SpanInfo: {"start":1586,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 52, col 23) to (line 52, col 75) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1654 to 1660) SpanInfo: {"start":1655,"length":5} + >i = 0 + >:=> (line 52, col 92) to (line 52, col 97) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1661 to 1667) SpanInfo: {"start":1662,"length":5} + >i < 1 + >:=> (line 52, col 99) to (line 52, col 104) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1668 to 1675) SpanInfo: {"start":1669,"length":3} + >i++ + >:=> (line 52, col 106) to (line 52, col 109) +-------------------------------- +53 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1676 to 1702) SpanInfo: {"start":1680,"length":21} + >console.log(primaryA) + >:=> (line 53, col 4) to (line 53, col 25) +-------------------------------- +54 >} + + ~~ => Pos: (1703 to 1704) SpanInfo: {"start":1680,"length":21} + >console.log(primaryA) + >:=> (line 53, col 4) to (line 53, col 25) +-------------------------------- +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1705 to 1726) SpanInfo: {"start":1715,"length":11} + >name: nameA + >:=> (line 55, col 10) to (line 55, col 21) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1727 to 1734) SpanInfo: {"start":1728,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 55, col 23) to (line 55, col 75) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1735 to 1755) SpanInfo: {"start":1738,"length":17} + >primary: primaryA + >:=> (line 55, col 33) to (line 55, col 50) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1756 to 1779) SpanInfo: {"start":1757,"length":21} + >secondary: secondaryA + >:=> (line 55, col 52) to (line 55, col 73) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~=> Pos: (1780 to 1783) SpanInfo: {"start":1728,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 55, col 23) to (line 55, col 75) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1784 to 1800) SpanInfo: {"start":1785,"length":15} + >getMultiRobot() + >:=> (line 55, col 80) to (line 55, col 95) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1801 to 1807) SpanInfo: {"start":1802,"length":5} + >i = 0 + >:=> (line 55, col 97) to (line 55, col 102) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1808 to 1814) SpanInfo: {"start":1809,"length":5} + >i < 1 + >:=> (line 55, col 104) to (line 55, col 109) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1815 to 1822) SpanInfo: {"start":1816,"length":3} + >i++ + >:=> (line 55, col 111) to (line 55, col 114) +-------------------------------- +56 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1823 to 1849) SpanInfo: {"start":1827,"length":21} + >console.log(primaryA) + >:=> (line 56, col 4) to (line 56, col 25) +-------------------------------- +57 >} + + ~~ => Pos: (1850 to 1851) SpanInfo: {"start":1827,"length":21} + >console.log(primaryA) + >:=> (line 56, col 4) to (line 56, col 25) +-------------------------------- +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1852 to 1873) SpanInfo: {"start":1862,"length":11} + >name: nameA + >:=> (line 58, col 10) to (line 58, col 21) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~ => Pos: (1874 to 1881) SpanInfo: {"start":1875,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 58, col 23) to (line 58, col 75) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1882 to 1902) SpanInfo: {"start":1885,"length":17} + >primary: primaryA + >:=> (line 58, col 33) to (line 58, col 50) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1903 to 1926) SpanInfo: {"start":1904,"length":21} + >secondary: secondaryA + >:=> (line 58, col 52) to (line 58, col 73) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~=> Pos: (1927 to 1931) SpanInfo: {"start":1875,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 58, col 23) to (line 58, col 75) +-------------------------------- +59 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1932 to 2022) SpanInfo: {"start":1875,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 58, col 23) to (line 58, col 75) +-------------------------------- +60 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2023 to 2032) SpanInfo: {"start":2027,"length":5} + >i = 0 + >:=> (line 60, col 4) to (line 60, col 9) +60 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2033 to 2039) SpanInfo: {"start":2034,"length":5} + >i < 1 + >:=> (line 60, col 11) to (line 60, col 16) +60 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2040 to 2047) SpanInfo: {"start":2041,"length":3} + >i++ + >:=> (line 60, col 18) to (line 60, col 21) +-------------------------------- +61 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2048 to 2074) SpanInfo: {"start":2052,"length":21} + >console.log(primaryA) + >:=> (line 61, col 4) to (line 61, col 25) +-------------------------------- +62 >} + ~ => Pos: (2075 to 2075) SpanInfo: {"start":2052,"length":21} + >console.log(primaryA) + >:=> (line 61, col 4) to (line 61, col 25) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..6c7735f2b83 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline @@ -0,0 +1,857 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 187) SpanInfo: undefined +-------------------------------- +12 > secondary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (188 to 215) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (216 to 222) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (223 to 224) SpanInfo: undefined +-------------------------------- +15 >let robot: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (225 to 279) SpanInfo: {"start":225,"length":53} + >let robot: Robot = { name: "mower", skill: "mowing" } + >:=> (line 15, col 0) to (line 15, col 53) +-------------------------------- +16 >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (280 to 377) SpanInfo: {"start":280,"length":96} + >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 16, col 0) to (line 16, col 96) +-------------------------------- +17 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (378 to 399) SpanInfo: {"start":404,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +18 > return robot; + + ~~~~~~~~~~~~~~~~~~ => Pos: (400 to 417) SpanInfo: {"start":404,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +19 >} + + ~~ => Pos: (418 to 419) SpanInfo: {"start":418,"length":1} + >} + >:=> (line 19, col 0) to (line 19, col 1) +-------------------------------- +20 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (420 to 446) SpanInfo: {"start":451,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +21 > return multiRobot; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (447 to 469) SpanInfo: {"start":451,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +22 >} + + ~~ => Pos: (470 to 471) SpanInfo: {"start":470,"length":1} + >} + >:=> (line 22, col 0) to (line 22, col 1) +-------------------------------- +23 >for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (472 to 513) SpanInfo: {"start":482,"length":21} + >name: nameA= "noName" + >:=> (line 23, col 10) to (line 23, col 31) +23 >for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (514 to 520) SpanInfo: {"start":515,"length":5} + >i = 0 + >:=> (line 23, col 43) to (line 23, col 48) +23 >for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (521 to 527) SpanInfo: {"start":522,"length":5} + >i < 1 + >:=> (line 23, col 50) to (line 23, col 55) +23 >for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (528 to 535) SpanInfo: {"start":529,"length":3} + >i++ + >:=> (line 23, col 57) to (line 23, col 60) +-------------------------------- +24 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (536 to 559) SpanInfo: {"start":540,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +25 >} + + ~~ => Pos: (560 to 561) SpanInfo: {"start":540,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (562 to 597) SpanInfo: {"start":572,"length":22} + >name: nameA = "noName" + >:=> (line 26, col 10) to (line 26, col 32) +26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (598 to 609) SpanInfo: {"start":599,"length":10} + >getRobot() + >:=> (line 26, col 37) to (line 26, col 47) +26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (610 to 616) SpanInfo: {"start":611,"length":5} + >i = 0 + >:=> (line 26, col 49) to (line 26, col 54) +26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (617 to 623) SpanInfo: {"start":618,"length":5} + >i < 1 + >:=> (line 26, col 56) to (line 26, col 61) +26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (624 to 631) SpanInfo: {"start":625,"length":3} + >i++ + >:=> (line 26, col 63) to (line 26, col 66) +-------------------------------- +27 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (632 to 655) SpanInfo: {"start":636,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +28 >} + + ~~ => Pos: (656 to 657) SpanInfo: {"start":636,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +29 >for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (658 to 740) SpanInfo: {"start":668,"length":22} + >name: nameA = "noName" + >:=> (line 29, col 10) to (line 29, col 32) +29 >for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (741 to 747) SpanInfo: {"start":742,"length":5} + >i = 0 + >:=> (line 29, col 84) to (line 29, col 89) +29 >for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (748 to 754) SpanInfo: {"start":749,"length":5} + >i < 1 + >:=> (line 29, col 91) to (line 29, col 96) +29 >for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (755 to 762) SpanInfo: {"start":756,"length":3} + >i++ + >:=> (line 29, col 98) to (line 29, col 101) +-------------------------------- +30 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (763 to 786) SpanInfo: {"start":767,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +31 >} + + ~~ => Pos: (787 to 788) SpanInfo: {"start":767,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +32 >for (let { + + ~~~~~~~~~~~ => Pos: (789 to 799) SpanInfo: {"start":804,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 33, col 4) to (line 36, col 46) +-------------------------------- +33 > skills: { + + ~~~~~~~~~~~ => Pos: (800 to 810) SpanInfo: {"start":804,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 33, col 4) to (line 36, col 46) +33 > skills: { + + ~~~ => Pos: (811 to 813) SpanInfo: {"start":822,"length":29} + >primary: primaryA = "primary" + >:=> (line 34, col 8) to (line 34, col 37) +-------------------------------- +34 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (814 to 852) SpanInfo: {"start":822,"length":29} + >primary: primaryA = "primary" + >:=> (line 34, col 8) to (line 34, col 37) +-------------------------------- +35 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (853 to 896) SpanInfo: {"start":861,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 35, col 8) to (line 35, col 43) +-------------------------------- +36 > } = { primary: "none", secondary: "none" } + + ~~~~~ => Pos: (897 to 901) SpanInfo: {"start":861,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 35, col 8) to (line 35, col 43) +36 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (902 to 943) SpanInfo: {"start":804,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 33, col 4) to (line 36, col 46) +-------------------------------- +37 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (944 to 958) SpanInfo: {"start":804,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 33, col 4) to (line 36, col 46) +37 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (959 to 965) SpanInfo: {"start":960,"length":5} + >i = 0 + >:=> (line 37, col 16) to (line 37, col 21) +37 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (966 to 972) SpanInfo: {"start":967,"length":5} + >i < 1 + >:=> (line 37, col 23) to (line 37, col 28) +37 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (973 to 980) SpanInfo: {"start":974,"length":3} + >i++ + >:=> (line 37, col 30) to (line 37, col 33) +-------------------------------- +38 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (981 to 1007) SpanInfo: {"start":985,"length":21} + >console.log(primaryA) + >:=> (line 38, col 4) to (line 38, col 25) +-------------------------------- +39 >} + + ~~ => Pos: (1008 to 1009) SpanInfo: {"start":985,"length":21} + >console.log(primaryA) + >:=> (line 38, col 4) to (line 38, col 25) +-------------------------------- +40 >for (let { + + ~~~~~~~~~~~ => Pos: (1010 to 1020) SpanInfo: {"start":1025,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 41, col 4) to (line 44, col 46) +-------------------------------- +41 > skills: { + + ~~~~~~~~~~~ => Pos: (1021 to 1031) SpanInfo: {"start":1025,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 41, col 4) to (line 44, col 46) +41 > skills: { + + ~~~ => Pos: (1032 to 1034) SpanInfo: {"start":1043,"length":29} + >primary: primaryA = "primary" + >:=> (line 42, col 8) to (line 42, col 37) +-------------------------------- +42 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1035 to 1073) SpanInfo: {"start":1043,"length":29} + >primary: primaryA = "primary" + >:=> (line 42, col 8) to (line 42, col 37) +-------------------------------- +43 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1074 to 1117) SpanInfo: {"start":1082,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 43, col 8) to (line 43, col 43) +-------------------------------- +44 > } = { primary: "none", secondary: "none" } + + ~~~~~ => Pos: (1118 to 1122) SpanInfo: {"start":1082,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 43, col 8) to (line 43, col 43) +44 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1123 to 1164) SpanInfo: {"start":1025,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 41, col 4) to (line 44, col 46) +-------------------------------- +45 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~ => Pos: (1165 to 1167) SpanInfo: {"start":1025,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 41, col 4) to (line 44, col 46) +45 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1168 to 1184) SpanInfo: {"start":1169,"length":15} + >getMultiRobot() + >:=> (line 45, col 4) to (line 45, col 19) +45 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1185 to 1191) SpanInfo: {"start":1186,"length":5} + >i = 0 + >:=> (line 45, col 21) to (line 45, col 26) +45 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1192 to 1198) SpanInfo: {"start":1193,"length":5} + >i < 1 + >:=> (line 45, col 28) to (line 45, col 33) +45 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1199 to 1206) SpanInfo: {"start":1200,"length":3} + >i++ + >:=> (line 45, col 35) to (line 45, col 38) +-------------------------------- +46 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1207 to 1233) SpanInfo: {"start":1211,"length":21} + >console.log(primaryA) + >:=> (line 46, col 4) to (line 46, col 25) +-------------------------------- +47 >} + + ~~ => Pos: (1234 to 1235) SpanInfo: {"start":1211,"length":21} + >console.log(primaryA) + >:=> (line 46, col 4) to (line 46, col 25) +-------------------------------- +48 >for (let { + + ~~~~~~~~~~~ => Pos: (1236 to 1246) SpanInfo: {"start":1251,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 49, col 4) to (line 52, col 46) +-------------------------------- +49 > skills: { + + ~~~~~~~~~~~ => Pos: (1247 to 1257) SpanInfo: {"start":1251,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 49, col 4) to (line 52, col 46) +49 > skills: { + + ~~~ => Pos: (1258 to 1260) SpanInfo: {"start":1269,"length":29} + >primary: primaryA = "primary" + >:=> (line 50, col 8) to (line 50, col 37) +-------------------------------- +50 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1261 to 1299) SpanInfo: {"start":1269,"length":29} + >primary: primaryA = "primary" + >:=> (line 50, col 8) to (line 50, col 37) +-------------------------------- +51 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1300 to 1343) SpanInfo: {"start":1308,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 51, col 8) to (line 51, col 43) +-------------------------------- +52 > } = { primary: "none", secondary: "none" } + + ~~~~~ => Pos: (1344 to 1348) SpanInfo: {"start":1308,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 51, col 8) to (line 51, col 43) +52 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1349 to 1390) SpanInfo: {"start":1251,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 49, col 4) to (line 52, col 46) +-------------------------------- +53 >} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1391 to 1481) SpanInfo: {"start":1251,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 49, col 4) to (line 52, col 46) +-------------------------------- +54 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1482 to 1491) SpanInfo: {"start":1486,"length":5} + >i = 0 + >:=> (line 54, col 4) to (line 54, col 9) +54 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1492 to 1498) SpanInfo: {"start":1493,"length":5} + >i < 1 + >:=> (line 54, col 11) to (line 54, col 16) +54 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1499 to 1506) SpanInfo: {"start":1500,"length":3} + >i++ + >:=> (line 54, col 18) to (line 54, col 21) +-------------------------------- +55 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1507 to 1533) SpanInfo: {"start":1511,"length":21} + >console.log(primaryA) + >:=> (line 55, col 4) to (line 55, col 25) +-------------------------------- +56 >} + + ~~ => Pos: (1534 to 1535) SpanInfo: {"start":1511,"length":21} + >console.log(primaryA) + >:=> (line 55, col 4) to (line 55, col 25) +-------------------------------- +57 >for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1536 to 1568) SpanInfo: {"start":1546,"length":22} + >name: nameA = "noName" + >:=> (line 57, col 10) to (line 57, col 32) +57 >for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1569 to 1603) SpanInfo: {"start":1570,"length":23} + >skill: skillA = "skill" + >:=> (line 57, col 34) to (line 57, col 57) +57 >for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1604 to 1610) SpanInfo: {"start":1605,"length":5} + >i = 0 + >:=> (line 57, col 69) to (line 57, col 74) +57 >for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1611 to 1617) SpanInfo: {"start":1612,"length":5} + >i < 1 + >:=> (line 57, col 76) to (line 57, col 81) +57 >for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1618 to 1625) SpanInfo: {"start":1619,"length":3} + >i++ + >:=> (line 57, col 83) to (line 57, col 86) +-------------------------------- +58 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1626 to 1649) SpanInfo: {"start":1630,"length":18} + >console.log(nameA) + >:=> (line 58, col 4) to (line 58, col 22) +-------------------------------- +59 >} + + ~~ => Pos: (1650 to 1651) SpanInfo: {"start":1630,"length":18} + >console.log(nameA) + >:=> (line 58, col 4) to (line 58, col 22) +-------------------------------- +60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1652 to 1684) SpanInfo: {"start":1662,"length":22} + >name: nameA = "noName" + >:=> (line 60, col 10) to (line 60, col 32) +60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1685 to 1712) SpanInfo: {"start":1686,"length":23} + >skill: skillA = "skill" + >:=> (line 60, col 34) to (line 60, col 57) +60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~=> Pos: (1713 to 1724) SpanInfo: {"start":1714,"length":10} + >getRobot() + >:=> (line 60, col 62) to (line 60, col 72) +60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1725 to 1731) SpanInfo: {"start":1726,"length":5} + >i = 0 + >:=> (line 60, col 74) to (line 60, col 79) +60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1732 to 1738) SpanInfo: {"start":1733,"length":5} + >i < 1 + >:=> (line 60, col 81) to (line 60, col 86) +60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1739 to 1746) SpanInfo: {"start":1740,"length":3} + >i++ + >:=> (line 60, col 88) to (line 60, col 91) +-------------------------------- +61 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1747 to 1770) SpanInfo: {"start":1751,"length":18} + >console.log(nameA) + >:=> (line 61, col 4) to (line 61, col 22) +-------------------------------- +62 >} + + ~~ => Pos: (1771 to 1772) SpanInfo: {"start":1751,"length":18} + >console.log(nameA) + >:=> (line 61, col 4) to (line 61, col 22) +-------------------------------- +63 >for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1773 to 1805) SpanInfo: {"start":1783,"length":22} + >name: nameA = "noName" + >:=> (line 63, col 10) to (line 63, col 32) +63 >for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1806 to 1880) SpanInfo: {"start":1807,"length":23} + >skill: skillA = "skill" + >:=> (line 63, col 34) to (line 63, col 57) +63 >for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1881 to 1887) SpanInfo: {"start":1882,"length":5} + >i = 0 + >:=> (line 63, col 109) to (line 63, col 114) +63 >for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1888 to 1894) SpanInfo: {"start":1889,"length":5} + >i < 1 + >:=> (line 63, col 116) to (line 63, col 121) +63 >for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1895 to 1902) SpanInfo: {"start":1896,"length":3} + >i++ + >:=> (line 63, col 123) to (line 63, col 126) +-------------------------------- +64 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1903 to 1926) SpanInfo: {"start":1907,"length":18} + >console.log(nameA) + >:=> (line 64, col 4) to (line 64, col 22) +-------------------------------- +65 >} + + ~~ => Pos: (1927 to 1928) SpanInfo: {"start":1907,"length":18} + >console.log(nameA) + >:=> (line 64, col 4) to (line 64, col 22) +-------------------------------- +66 >for (let { + + ~~~~~~~~~~~ => Pos: (1929 to 1939) SpanInfo: {"start":1944,"length":22} + >name: nameA = "noName" + >:=> (line 67, col 4) to (line 67, col 26) +-------------------------------- +67 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1940 to 1967) SpanInfo: {"start":1944,"length":22} + >name: nameA = "noName" + >:=> (line 67, col 4) to (line 67, col 26) +-------------------------------- +68 > skills: { + + ~~~~~~~~~~~ => Pos: (1968 to 1978) SpanInfo: {"start":1972,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 68, col 4) to (line 71, col 46) +68 > skills: { + + ~~~ => Pos: (1979 to 1981) SpanInfo: {"start":1990,"length":29} + >primary: primaryA = "primary" + >:=> (line 69, col 8) to (line 69, col 37) +-------------------------------- +69 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1982 to 2020) SpanInfo: {"start":1990,"length":29} + >primary: primaryA = "primary" + >:=> (line 69, col 8) to (line 69, col 37) +-------------------------------- +70 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2021 to 2064) SpanInfo: {"start":2029,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 70, col 8) to (line 70, col 43) +-------------------------------- +71 > } = { primary: "none", secondary: "none" } + + ~~~~~ => Pos: (2065 to 2069) SpanInfo: {"start":2029,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 70, col 8) to (line 70, col 43) +71 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2070 to 2111) SpanInfo: {"start":1972,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 68, col 4) to (line 71, col 46) +-------------------------------- +72 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (2112 to 2126) SpanInfo: {"start":1972,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 68, col 4) to (line 71, col 46) +72 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2127 to 2133) SpanInfo: {"start":2128,"length":5} + >i = 0 + >:=> (line 72, col 16) to (line 72, col 21) +72 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2134 to 2140) SpanInfo: {"start":2135,"length":5} + >i < 1 + >:=> (line 72, col 23) to (line 72, col 28) +72 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2141 to 2148) SpanInfo: {"start":2142,"length":3} + >i++ + >:=> (line 72, col 30) to (line 72, col 33) +-------------------------------- +73 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2149 to 2175) SpanInfo: {"start":2153,"length":21} + >console.log(primaryA) + >:=> (line 73, col 4) to (line 73, col 25) +-------------------------------- +74 >} + + ~~ => Pos: (2176 to 2177) SpanInfo: {"start":2153,"length":21} + >console.log(primaryA) + >:=> (line 73, col 4) to (line 73, col 25) +-------------------------------- +75 >for (let { + + ~~~~~~~~~~~ => Pos: (2178 to 2188) SpanInfo: {"start":2193,"length":22} + >name: nameA = "noName" + >:=> (line 76, col 4) to (line 76, col 26) +-------------------------------- +76 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2189 to 2216) SpanInfo: {"start":2193,"length":22} + >name: nameA = "noName" + >:=> (line 76, col 4) to (line 76, col 26) +-------------------------------- +77 > skills: { + + ~~~~~~~~~~~ => Pos: (2217 to 2227) SpanInfo: {"start":2221,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 77, col 4) to (line 80, col 46) +77 > skills: { + + ~~~ => Pos: (2228 to 2230) SpanInfo: {"start":2239,"length":29} + >primary: primaryA = "primary" + >:=> (line 78, col 8) to (line 78, col 37) +-------------------------------- +78 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2231 to 2269) SpanInfo: {"start":2239,"length":29} + >primary: primaryA = "primary" + >:=> (line 78, col 8) to (line 78, col 37) +-------------------------------- +79 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2270 to 2313) SpanInfo: {"start":2278,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 79, col 8) to (line 79, col 43) +-------------------------------- +80 > } = { primary: "none", secondary: "none" } + + ~~~~~ => Pos: (2314 to 2318) SpanInfo: {"start":2278,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 79, col 8) to (line 79, col 43) +80 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2319 to 2360) SpanInfo: {"start":2221,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 77, col 4) to (line 80, col 46) +-------------------------------- +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~ => Pos: (2361 to 2363) SpanInfo: {"start":2221,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 77, col 4) to (line 80, col 46) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2364 to 2380) SpanInfo: {"start":2365,"length":15} + >getMultiRobot() + >:=> (line 81, col 4) to (line 81, col 19) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2381 to 2387) SpanInfo: {"start":2382,"length":5} + >i = 0 + >:=> (line 81, col 21) to (line 81, col 26) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2388 to 2394) SpanInfo: {"start":2389,"length":5} + >i < 1 + >:=> (line 81, col 28) to (line 81, col 33) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2395 to 2402) SpanInfo: {"start":2396,"length":3} + >i++ + >:=> (line 81, col 35) to (line 81, col 38) +-------------------------------- +82 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2403 to 2429) SpanInfo: {"start":2407,"length":21} + >console.log(primaryA) + >:=> (line 82, col 4) to (line 82, col 25) +-------------------------------- +83 >} + + ~~ => Pos: (2430 to 2431) SpanInfo: {"start":2407,"length":21} + >console.log(primaryA) + >:=> (line 82, col 4) to (line 82, col 25) +-------------------------------- +84 >for (let { + + ~~~~~~~~~~~ => Pos: (2432 to 2442) SpanInfo: {"start":2447,"length":22} + >name: nameA = "noName" + >:=> (line 85, col 4) to (line 85, col 26) +-------------------------------- +85 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2443 to 2470) SpanInfo: {"start":2447,"length":22} + >name: nameA = "noName" + >:=> (line 85, col 4) to (line 85, col 26) +-------------------------------- +86 > skills: { + + ~~~~~~~~~~~ => Pos: (2471 to 2481) SpanInfo: {"start":2475,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 86, col 4) to (line 89, col 46) +86 > skills: { + + ~~~ => Pos: (2482 to 2484) SpanInfo: {"start":2493,"length":29} + >primary: primaryA = "primary" + >:=> (line 87, col 8) to (line 87, col 37) +-------------------------------- +87 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2485 to 2523) SpanInfo: {"start":2493,"length":29} + >primary: primaryA = "primary" + >:=> (line 87, col 8) to (line 87, col 37) +-------------------------------- +88 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2524 to 2567) SpanInfo: {"start":2532,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 88, col 8) to (line 88, col 43) +-------------------------------- +89 > } = { primary: "none", secondary: "none" } + + ~~~~~ => Pos: (2568 to 2572) SpanInfo: {"start":2532,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 88, col 8) to (line 88, col 43) +89 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2573 to 2614) SpanInfo: {"start":2475,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 86, col 4) to (line 89, col 46) +-------------------------------- +90 >} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2615 to 2705) SpanInfo: {"start":2475,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 86, col 4) to (line 89, col 46) +-------------------------------- +91 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2706 to 2715) SpanInfo: {"start":2710,"length":5} + >i = 0 + >:=> (line 91, col 4) to (line 91, col 9) +91 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2716 to 2722) SpanInfo: {"start":2717,"length":5} + >i < 1 + >:=> (line 91, col 11) to (line 91, col 16) +91 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2723 to 2730) SpanInfo: {"start":2724,"length":3} + >i++ + >:=> (line 91, col 18) to (line 91, col 21) +-------------------------------- +92 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2731 to 2757) SpanInfo: {"start":2735,"length":21} + >console.log(primaryA) + >:=> (line 92, col 4) to (line 92, col 25) +-------------------------------- +93 >} + ~ => Pos: (2758 to 2758) SpanInfo: {"start":2735,"length":21} + >console.log(primaryA) + >:=> (line 92, col 4) to (line 92, col 25) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPattern.ts new file mode 100644 index 00000000000..c86ac7b0f30 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPattern.ts @@ -0,0 +1,95 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +//// +////let robotA: Robot = [1, "mower", "mowing"]; +////function getRobot() { +//// return robotA; +////} +//// +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////function getMultiRobot() { +//// return multiRobotA; +////} +//// +////for (let [, nameA] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let [, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let [, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for (let [, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +//// +////for (let [numberB] = robotA, i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for (let [numberB] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for (let [numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for (let [nameB] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for (let [nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameB); +////} +//// +////for (let [numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for (let [numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for (let [nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +//// +////for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(multiRobotAInfo); +////} +////for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(multiRobotAInfo); +////} +////for (let [...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(multiRobotAInfo); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..2ea402297b8 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForArrayBindingPatternDefaultValues.ts @@ -0,0 +1,104 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, string[]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////function getRobot() { +//// return robotA; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////function getMultiRobot() { +//// return multiRobotA; +////} +////for (let [, nameA ="name"] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let [, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let [, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for (let [, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for (let [, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for (let [numberB = -1] = robotA, i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for (let [numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for (let [nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for (let [nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for (let +//// [nameMA = "noName", +//// [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +//// ] = ["none", "none"] +//// ] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for (let [nameMA = "noName", +//// [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +//// ] = ["none", "none"] +////] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for (let [nameMA = "noName", +//// [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +//// ] = ["none", "none"] +////] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPattern.ts new file mode 100644 index 00000000000..fedbe748034 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPattern.ts @@ -0,0 +1,64 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let robot: Robot = { name: "mower", skill: "mowing" }; +////let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////function getRobot() { +//// return robot; +////} +////function getMultiRobot() { +//// return multiRobot; +////} +////for (let {name: nameA } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let { skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let { skills: { primary: primaryA, secondary: secondaryA } } = +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let {name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..9ee1e75b0bf --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForObjectBindingPatternDefaultValues.ts @@ -0,0 +1,96 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary?: string; +//// secondary?: string; +//// }; +////} +////let robot: Robot = { name: "mower", skill: "mowing" }; +////let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////function getRobot() { +//// return robot; +////} +////function getMultiRobot() { +//// return multiRobot; +////} +////for (let {name: nameA= "noName" } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let { +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let { +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let { +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let {name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for (let { +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let { +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for (let { +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From c5407a36d66fcd925b38865cc3b02d3347d4cea2 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 21 Dec 2015 11:53:31 -0800 Subject: [PATCH 083/164] Test cases for destructuring in For Of statement --- ...ructuringForOfArrayBindingPattern.baseline | 978 +++++++++++++++ ...fArrayBindingPatternDefaultValues.baseline | 1061 +++++++++++++++++ ...ucturingForOfObjectBindingPattern.baseline | 635 ++++++++++ ...ObjectBindingPatternDefaultValues.baseline | 855 +++++++++++++ ...onDestructuringForOfArrayBindingPattern.ts | 91 ++ ...ngForOfArrayBindingPatternDefaultValues.ts | 100 ++ ...nDestructuringForOfObjectBindingPattern.ts | 63 + ...gForOfObjectBindingPatternDefaultValues.ts | 85 ++ 8 files changed, 3868 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPatternDefaultValues.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline new file mode 100644 index 00000000000..ea915b80e6a --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline @@ -0,0 +1,978 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (142 to 185) SpanInfo: {"start":142,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >let robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (186 to 233) SpanInfo: {"start":186,"length":46} + >let robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 7, col 0) to (line 7, col 46) +-------------------------------- +8 >let robots = [robotA, robotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (234 to 264) SpanInfo: {"start":234,"length":29} + >let robots = [robotA, robotB] + >:=> (line 8, col 0) to (line 8, col 29) +-------------------------------- +9 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (265 to 287) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +10 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (288 to 306) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +11 >} + + ~~ => Pos: (307 to 308) SpanInfo: {"start":307,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (309 to 372) SpanInfo: {"start":309,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 12, col 0) to (line 12, col 62) +-------------------------------- +13 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (373 to 446) SpanInfo: {"start":373,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 13, col 0) to (line 13, col 72) +-------------------------------- +14 >let multiRobots = [multiRobotA, multiRobotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (447 to 492) SpanInfo: {"start":447,"length":44} + >let multiRobots = [multiRobotA, multiRobotB] + >:=> (line 14, col 0) to (line 14, col 44) +-------------------------------- +15 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (493 to 520) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +16 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (521 to 544) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +17 >} + + ~~ => Pos: (545 to 546) SpanInfo: {"start":545,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >for (let [, nameA] of robots) { + + ~~~~~~~~ => Pos: (547 to 554) SpanInfo: {"start":547,"length":29} + >for (let [, nameA] of robots) + >:=> (line 18, col 0) to (line 18, col 29) +18 >for (let [, nameA] of robots) { + + ~~~~~~~~~~ => Pos: (555 to 564) SpanInfo: {"start":559,"length":5} + >nameA + >:=> (line 18, col 12) to (line 18, col 17) +18 >for (let [, nameA] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (565 to 578) SpanInfo: {"start":547,"length":29} + >for (let [, nameA] of robots) + >:=> (line 18, col 0) to (line 18, col 29) +-------------------------------- +19 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (579 to 602) SpanInfo: {"start":583,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +20 >} + + ~~ => Pos: (603 to 604) SpanInfo: {"start":583,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +21 >for (let [, nameA] of getRobots()) { + + ~~~~~~~~ => Pos: (605 to 612) SpanInfo: {"start":605,"length":34} + >for (let [, nameA] of getRobots()) + >:=> (line 21, col 0) to (line 21, col 34) +21 >for (let [, nameA] of getRobots()) { + + ~~~~~~~~~~ => Pos: (613 to 622) SpanInfo: {"start":617,"length":5} + >nameA + >:=> (line 21, col 12) to (line 21, col 17) +21 >for (let [, nameA] of getRobots()) { + + ~~~ => Pos: (623 to 625) SpanInfo: {"start":605,"length":34} + >for (let [, nameA] of getRobots()) + >:=> (line 21, col 0) to (line 21, col 34) +21 >for (let [, nameA] of getRobots()) { + + ~~~~~~~~~~~~ => Pos: (626 to 637) SpanInfo: {"start":627,"length":11} + >getRobots() + >:=> (line 21, col 22) to (line 21, col 33) +21 >for (let [, nameA] of getRobots()) { + + ~~~~ => Pos: (638 to 641) SpanInfo: {"start":605,"length":34} + >for (let [, nameA] of getRobots()) + >:=> (line 21, col 0) to (line 21, col 34) +-------------------------------- +22 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (642 to 665) SpanInfo: {"start":646,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (666 to 667) SpanInfo: {"start":646,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +24 >for (let [, nameA] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (668 to 675) SpanInfo: {"start":668,"length":39} + >for (let [, nameA] of [robotA, robotB]) + >:=> (line 24, col 0) to (line 24, col 39) +24 >for (let [, nameA] of [robotA, robotB]) { + + ~~~~~~~~~~ => Pos: (676 to 685) SpanInfo: {"start":680,"length":5} + >nameA + >:=> (line 24, col 12) to (line 24, col 17) +24 >for (let [, nameA] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (686 to 709) SpanInfo: {"start":668,"length":39} + >for (let [, nameA] of [robotA, robotB]) + >:=> (line 24, col 0) to (line 24, col 39) +-------------------------------- +25 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (710 to 733) SpanInfo: {"start":714,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +26 >} + + ~~ => Pos: (734 to 735) SpanInfo: {"start":714,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~ => Pos: (736 to 743) SpanInfo: {"start":736,"length":61} + >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) + >:=> (line 27, col 0) to (line 27, col 61) +27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~ => Pos: (744 to 746) SpanInfo: {"start":748,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 27, col 12) to (line 27, col 44) +27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~ => Pos: (747 to 762) SpanInfo: {"start":749,"length":13} + >primarySkillA + >:=> (line 27, col 13) to (line 27, col 26) +27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~ => Pos: (763 to 779) SpanInfo: {"start":764,"length":15} + >secondarySkillA + >:=> (line 27, col 28) to (line 27, col 43) +27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~ => Pos: (780 to 780) SpanInfo: {"start":748,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 27, col 12) to (line 27, col 44) +27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (781 to 799) SpanInfo: {"start":736,"length":61} + >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) + >:=> (line 27, col 0) to (line 27, col 61) +-------------------------------- +28 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (800 to 831) SpanInfo: {"start":804,"length":26} + >console.log(primarySkillA) + >:=> (line 28, col 4) to (line 28, col 30) +-------------------------------- +29 >} + + ~~ => Pos: (832 to 833) SpanInfo: {"start":804,"length":26} + >console.log(primarySkillA) + >:=> (line 28, col 4) to (line 28, col 30) +-------------------------------- +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~ => Pos: (834 to 841) SpanInfo: {"start":834,"length":66} + >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) + >:=> (line 30, col 0) to (line 30, col 66) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~ => Pos: (842 to 844) SpanInfo: {"start":846,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 30, col 12) to (line 30, col 44) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (845 to 860) SpanInfo: {"start":847,"length":13} + >primarySkillA + >:=> (line 30, col 13) to (line 30, col 26) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~ => Pos: (861 to 877) SpanInfo: {"start":862,"length":15} + >secondarySkillA + >:=> (line 30, col 28) to (line 30, col 43) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~ => Pos: (878 to 878) SpanInfo: {"start":846,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 30, col 12) to (line 30, col 44) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~=> Pos: (879 to 881) SpanInfo: {"start":834,"length":66} + >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) + >:=> (line 30, col 0) to (line 30, col 66) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (882 to 898) SpanInfo: {"start":883,"length":16} + >getMultiRobots() + >:=> (line 30, col 49) to (line 30, col 65) +30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~=> Pos: (899 to 902) SpanInfo: {"start":834,"length":66} + >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) + >:=> (line 30, col 0) to (line 30, col 66) +-------------------------------- +31 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (903 to 934) SpanInfo: {"start":907,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +32 >} + + ~~ => Pos: (935 to 936) SpanInfo: {"start":907,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~ => Pos: (937 to 944) SpanInfo: {"start":937,"length":76} + >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) + >:=> (line 33, col 0) to (line 33, col 76) +33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~ => Pos: (945 to 947) SpanInfo: {"start":949,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 33, col 12) to (line 33, col 44) +33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~ => Pos: (948 to 963) SpanInfo: {"start":950,"length":13} + >primarySkillA + >:=> (line 33, col 13) to (line 33, col 26) +33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~ => Pos: (964 to 980) SpanInfo: {"start":965,"length":15} + >secondarySkillA + >:=> (line 33, col 28) to (line 33, col 43) +33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~ => Pos: (981 to 981) SpanInfo: {"start":949,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 33, col 12) to (line 33, col 44) +33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (982 to 1015) SpanInfo: {"start":937,"length":76} + >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) + >:=> (line 33, col 0) to (line 33, col 76) +-------------------------------- +34 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1016 to 1047) SpanInfo: {"start":1020,"length":26} + >console.log(primarySkillA) + >:=> (line 34, col 4) to (line 34, col 30) +-------------------------------- +35 >} + + ~~ => Pos: (1048 to 1049) SpanInfo: {"start":1020,"length":26} + >console.log(primarySkillA) + >:=> (line 34, col 4) to (line 34, col 30) +-------------------------------- +36 >for (let [numberB] of robots) { + + ~~~~~~~~ => Pos: (1050 to 1057) SpanInfo: {"start":1050,"length":29} + >for (let [numberB] of robots) + >:=> (line 36, col 0) to (line 36, col 29) +36 >for (let [numberB] of robots) { + + ~~~~~~~~~~ => Pos: (1058 to 1067) SpanInfo: {"start":1060,"length":7} + >numberB + >:=> (line 36, col 10) to (line 36, col 17) +36 >for (let [numberB] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1068 to 1081) SpanInfo: {"start":1050,"length":29} + >for (let [numberB] of robots) + >:=> (line 36, col 0) to (line 36, col 29) +-------------------------------- +37 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1082 to 1107) SpanInfo: {"start":1086,"length":20} + >console.log(numberB) + >:=> (line 37, col 4) to (line 37, col 24) +-------------------------------- +38 >} + + ~~ => Pos: (1108 to 1109) SpanInfo: {"start":1086,"length":20} + >console.log(numberB) + >:=> (line 37, col 4) to (line 37, col 24) +-------------------------------- +39 >for (let [numberB] of getRobots()) { + + ~~~~~~~~ => Pos: (1110 to 1117) SpanInfo: {"start":1110,"length":34} + >for (let [numberB] of getRobots()) + >:=> (line 39, col 0) to (line 39, col 34) +39 >for (let [numberB] of getRobots()) { + + ~~~~~~~~~~ => Pos: (1118 to 1127) SpanInfo: {"start":1120,"length":7} + >numberB + >:=> (line 39, col 10) to (line 39, col 17) +39 >for (let [numberB] of getRobots()) { + + ~~~ => Pos: (1128 to 1130) SpanInfo: {"start":1110,"length":34} + >for (let [numberB] of getRobots()) + >:=> (line 39, col 0) to (line 39, col 34) +39 >for (let [numberB] of getRobots()) { + + ~~~~~~~~~~~~ => Pos: (1131 to 1142) SpanInfo: {"start":1132,"length":11} + >getRobots() + >:=> (line 39, col 22) to (line 39, col 33) +39 >for (let [numberB] of getRobots()) { + + ~~~~ => Pos: (1143 to 1146) SpanInfo: {"start":1110,"length":34} + >for (let [numberB] of getRobots()) + >:=> (line 39, col 0) to (line 39, col 34) +-------------------------------- +40 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1147 to 1172) SpanInfo: {"start":1151,"length":20} + >console.log(numberB) + >:=> (line 40, col 4) to (line 40, col 24) +-------------------------------- +41 >} + + ~~ => Pos: (1173 to 1174) SpanInfo: {"start":1151,"length":20} + >console.log(numberB) + >:=> (line 40, col 4) to (line 40, col 24) +-------------------------------- +42 >for (let [numberB] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (1175 to 1182) SpanInfo: {"start":1175,"length":39} + >for (let [numberB] of [robotA, robotB]) + >:=> (line 42, col 0) to (line 42, col 39) +42 >for (let [numberB] of [robotA, robotB]) { + + ~~~~~~~~~~ => Pos: (1183 to 1192) SpanInfo: {"start":1185,"length":7} + >numberB + >:=> (line 42, col 10) to (line 42, col 17) +42 >for (let [numberB] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1193 to 1216) SpanInfo: {"start":1175,"length":39} + >for (let [numberB] of [robotA, robotB]) + >:=> (line 42, col 0) to (line 42, col 39) +-------------------------------- +43 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1217 to 1242) SpanInfo: {"start":1221,"length":20} + >console.log(numberB) + >:=> (line 43, col 4) to (line 43, col 24) +-------------------------------- +44 >} + + ~~ => Pos: (1243 to 1244) SpanInfo: {"start":1221,"length":20} + >console.log(numberB) + >:=> (line 43, col 4) to (line 43, col 24) +-------------------------------- +45 >for (let [nameB] of multiRobots) { + + ~~~~~~~~ => Pos: (1245 to 1252) SpanInfo: {"start":1245,"length":32} + >for (let [nameB] of multiRobots) + >:=> (line 45, col 0) to (line 45, col 32) +45 >for (let [nameB] of multiRobots) { + + ~~~~~~~~ => Pos: (1253 to 1260) SpanInfo: {"start":1255,"length":5} + >nameB + >:=> (line 45, col 10) to (line 45, col 15) +45 >for (let [nameB] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1261 to 1279) SpanInfo: {"start":1245,"length":32} + >for (let [nameB] of multiRobots) + >:=> (line 45, col 0) to (line 45, col 32) +-------------------------------- +46 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1280 to 1303) SpanInfo: {"start":1284,"length":18} + >console.log(nameB) + >:=> (line 46, col 4) to (line 46, col 22) +-------------------------------- +47 >} + + ~~ => Pos: (1304 to 1305) SpanInfo: {"start":1284,"length":18} + >console.log(nameB) + >:=> (line 46, col 4) to (line 46, col 22) +-------------------------------- +48 >for (let [nameB] of getMultiRobots()) { + + ~~~~~~~~ => Pos: (1306 to 1313) SpanInfo: {"start":1306,"length":37} + >for (let [nameB] of getMultiRobots()) + >:=> (line 48, col 0) to (line 48, col 37) +48 >for (let [nameB] of getMultiRobots()) { + + ~~~~~~~~ => Pos: (1314 to 1321) SpanInfo: {"start":1316,"length":5} + >nameB + >:=> (line 48, col 10) to (line 48, col 15) +48 >for (let [nameB] of getMultiRobots()) { + + ~~~ => Pos: (1322 to 1324) SpanInfo: {"start":1306,"length":37} + >for (let [nameB] of getMultiRobots()) + >:=> (line 48, col 0) to (line 48, col 37) +48 >for (let [nameB] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1325 to 1341) SpanInfo: {"start":1326,"length":16} + >getMultiRobots() + >:=> (line 48, col 20) to (line 48, col 36) +48 >for (let [nameB] of getMultiRobots()) { + + ~~~~ => Pos: (1342 to 1345) SpanInfo: {"start":1306,"length":37} + >for (let [nameB] of getMultiRobots()) + >:=> (line 48, col 0) to (line 48, col 37) +-------------------------------- +49 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1346 to 1369) SpanInfo: {"start":1350,"length":18} + >console.log(nameB) + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +50 >} + + ~~ => Pos: (1370 to 1371) SpanInfo: {"start":1350,"length":18} + >console.log(nameB) + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +51 >for (let [nameB] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~ => Pos: (1372 to 1379) SpanInfo: {"start":1372,"length":47} + >for (let [nameB] of [multiRobotA, multiRobotB]) + >:=> (line 51, col 0) to (line 51, col 47) +51 >for (let [nameB] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~ => Pos: (1380 to 1387) SpanInfo: {"start":1382,"length":5} + >nameB + >:=> (line 51, col 10) to (line 51, col 15) +51 >for (let [nameB] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1388 to 1421) SpanInfo: {"start":1372,"length":47} + >for (let [nameB] of [multiRobotA, multiRobotB]) + >:=> (line 51, col 0) to (line 51, col 47) +-------------------------------- +52 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1422 to 1445) SpanInfo: {"start":1426,"length":18} + >console.log(nameB) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +53 >} + + ~~ => Pos: (1446 to 1447) SpanInfo: {"start":1426,"length":18} + >console.log(nameB) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +54 >for (let [numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~ => Pos: (1448 to 1455) SpanInfo: {"start":1448,"length":47} + >for (let [numberA2, nameA2, skillA2] of robots) + >:=> (line 54, col 0) to (line 54, col 47) +54 >for (let [numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~~~~ => Pos: (1456 to 1466) SpanInfo: {"start":1458,"length":8} + >numberA2 + >:=> (line 54, col 10) to (line 54, col 18) +54 >for (let [numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~ => Pos: (1467 to 1474) SpanInfo: {"start":1468,"length":6} + >nameA2 + >:=> (line 54, col 20) to (line 54, col 26) +54 >for (let [numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~~ => Pos: (1475 to 1483) SpanInfo: {"start":1476,"length":7} + >skillA2 + >:=> (line 54, col 28) to (line 54, col 35) +54 >for (let [numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (1484 to 1497) SpanInfo: {"start":1448,"length":47} + >for (let [numberA2, nameA2, skillA2] of robots) + >:=> (line 54, col 0) to (line 54, col 47) +-------------------------------- +55 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1498 to 1522) SpanInfo: {"start":1502,"length":19} + >console.log(nameA2) + >:=> (line 55, col 4) to (line 55, col 23) +-------------------------------- +56 >} + + ~~ => Pos: (1523 to 1524) SpanInfo: {"start":1502,"length":19} + >console.log(nameA2) + >:=> (line 55, col 4) to (line 55, col 23) +-------------------------------- +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~ => Pos: (1525 to 1532) SpanInfo: {"start":1525,"length":52} + >for (let [numberA2, nameA2, skillA2] of getRobots()) + >:=> (line 57, col 0) to (line 57, col 52) +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~~~~ => Pos: (1533 to 1543) SpanInfo: {"start":1535,"length":8} + >numberA2 + >:=> (line 57, col 10) to (line 57, col 18) +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~ => Pos: (1544 to 1551) SpanInfo: {"start":1545,"length":6} + >nameA2 + >:=> (line 57, col 20) to (line 57, col 26) +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~~ => Pos: (1552 to 1560) SpanInfo: {"start":1553,"length":7} + >skillA2 + >:=> (line 57, col 28) to (line 57, col 35) +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~ => Pos: (1561 to 1563) SpanInfo: {"start":1525,"length":52} + >for (let [numberA2, nameA2, skillA2] of getRobots()) + >:=> (line 57, col 0) to (line 57, col 52) +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (1564 to 1575) SpanInfo: {"start":1565,"length":11} + >getRobots() + >:=> (line 57, col 40) to (line 57, col 51) +57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~=> Pos: (1576 to 1579) SpanInfo: {"start":1525,"length":52} + >for (let [numberA2, nameA2, skillA2] of getRobots()) + >:=> (line 57, col 0) to (line 57, col 52) +-------------------------------- +58 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1580 to 1604) SpanInfo: {"start":1584,"length":19} + >console.log(nameA2) + >:=> (line 58, col 4) to (line 58, col 23) +-------------------------------- +59 >} + + ~~ => Pos: (1605 to 1606) SpanInfo: {"start":1584,"length":19} + >console.log(nameA2) + >:=> (line 58, col 4) to (line 58, col 23) +-------------------------------- +60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (1607 to 1614) SpanInfo: {"start":1607,"length":57} + >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) + >:=> (line 60, col 0) to (line 60, col 57) +60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~~~~ => Pos: (1615 to 1625) SpanInfo: {"start":1617,"length":8} + >numberA2 + >:=> (line 60, col 10) to (line 60, col 18) +60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (1626 to 1633) SpanInfo: {"start":1627,"length":6} + >nameA2 + >:=> (line 60, col 20) to (line 60, col 26) +60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~~ => Pos: (1634 to 1642) SpanInfo: {"start":1635,"length":7} + >skillA2 + >:=> (line 60, col 28) to (line 60, col 35) +60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1643 to 1666) SpanInfo: {"start":1607,"length":57} + >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) + >:=> (line 60, col 0) to (line 60, col 57) +-------------------------------- +61 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1667 to 1691) SpanInfo: {"start":1671,"length":19} + >console.log(nameA2) + >:=> (line 61, col 4) to (line 61, col 23) +-------------------------------- +62 >} + + ~~ => Pos: (1692 to 1693) SpanInfo: {"start":1671,"length":19} + >console.log(nameA2) + >:=> (line 61, col 4) to (line 61, col 23) +-------------------------------- +63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~ => Pos: (1694 to 1701) SpanInfo: {"start":1694,"length":67} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) + >:=> (line 63, col 0) to (line 63, col 67) +63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~ => Pos: (1702 to 1710) SpanInfo: {"start":1704,"length":6} + >nameMA + >:=> (line 63, col 10) to (line 63, col 16) +63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~ => Pos: (1711 to 1726) SpanInfo: {"start":1713,"length":13} + >primarySkillA + >:=> (line 63, col 19) to (line 63, col 32) +63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1727 to 1743) SpanInfo: {"start":1728,"length":15} + >secondarySkillA + >:=> (line 63, col 34) to (line 63, col 49) +63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~=> Pos: (1744 to 1744) SpanInfo: {"start":1712,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 63, col 18) to (line 63, col 50) +63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1745 to 1763) SpanInfo: {"start":1694,"length":67} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) + >:=> (line 63, col 0) to (line 63, col 67) +-------------------------------- +64 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1764 to 1788) SpanInfo: {"start":1768,"length":19} + >console.log(nameMA) + >:=> (line 64, col 4) to (line 64, col 23) +-------------------------------- +65 >} + + ~~ => Pos: (1789 to 1790) SpanInfo: {"start":1768,"length":19} + >console.log(nameMA) + >:=> (line 64, col 4) to (line 64, col 23) +-------------------------------- +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~ => Pos: (1791 to 1798) SpanInfo: {"start":1791,"length":72} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) + >:=> (line 66, col 0) to (line 66, col 72) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~ => Pos: (1799 to 1807) SpanInfo: {"start":1801,"length":6} + >nameMA + >:=> (line 66, col 10) to (line 66, col 16) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (1808 to 1823) SpanInfo: {"start":1810,"length":13} + >primarySkillA + >:=> (line 66, col 19) to (line 66, col 32) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1824 to 1840) SpanInfo: {"start":1825,"length":15} + >secondarySkillA + >:=> (line 66, col 34) to (line 66, col 49) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~=> Pos: (1841 to 1841) SpanInfo: {"start":1809,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 66, col 18) to (line 66, col 50) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~=> Pos: (1842 to 1844) SpanInfo: {"start":1791,"length":72} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) + >:=> (line 66, col 0) to (line 66, col 72) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1845 to 1861) SpanInfo: {"start":1846,"length":16} + >getMultiRobots() + >:=> (line 66, col 55) to (line 66, col 71) +66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~=> Pos: (1862 to 1865) SpanInfo: {"start":1791,"length":72} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) + >:=> (line 66, col 0) to (line 66, col 72) +-------------------------------- +67 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1866 to 1890) SpanInfo: {"start":1870,"length":19} + >console.log(nameMA) + >:=> (line 67, col 4) to (line 67, col 23) +-------------------------------- +68 >} + + ~~ => Pos: (1891 to 1892) SpanInfo: {"start":1870,"length":19} + >console.log(nameMA) + >:=> (line 67, col 4) to (line 67, col 23) +-------------------------------- +69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~ => Pos: (1893 to 1900) SpanInfo: {"start":1893,"length":82} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) + >:=> (line 69, col 0) to (line 69, col 82) +69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~ => Pos: (1901 to 1909) SpanInfo: {"start":1903,"length":6} + >nameMA + >:=> (line 69, col 10) to (line 69, col 16) +69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~ => Pos: (1910 to 1925) SpanInfo: {"start":1912,"length":13} + >primarySkillA + >:=> (line 69, col 19) to (line 69, col 32) +69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1926 to 1942) SpanInfo: {"start":1927,"length":15} + >secondarySkillA + >:=> (line 69, col 34) to (line 69, col 49) +69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~=> Pos: (1943 to 1943) SpanInfo: {"start":1911,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 69, col 18) to (line 69, col 50) +69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1944 to 1977) SpanInfo: {"start":1893,"length":82} + >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) + >:=> (line 69, col 0) to (line 69, col 82) +-------------------------------- +70 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1978 to 2002) SpanInfo: {"start":1982,"length":19} + >console.log(nameMA) + >:=> (line 70, col 4) to (line 70, col 23) +-------------------------------- +71 >} + + ~~ => Pos: (2003 to 2004) SpanInfo: {"start":1982,"length":19} + >console.log(nameMA) + >:=> (line 70, col 4) to (line 70, col 23) +-------------------------------- +72 >for (let [numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~ => Pos: (2005 to 2012) SpanInfo: {"start":2005,"length":45} + >for (let [numberA3, ...robotAInfo] of robots) + >:=> (line 72, col 0) to (line 72, col 45) +72 >for (let [numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~~~~ => Pos: (2013 to 2023) SpanInfo: {"start":2015,"length":8} + >numberA3 + >:=> (line 72, col 10) to (line 72, col 18) +72 >for (let [numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (2024 to 2038) SpanInfo: {"start":2025,"length":13} + >...robotAInfo + >:=> (line 72, col 20) to (line 72, col 33) +72 >for (let [numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (2039 to 2052) SpanInfo: {"start":2005,"length":45} + >for (let [numberA3, ...robotAInfo] of robots) + >:=> (line 72, col 0) to (line 72, col 45) +-------------------------------- +73 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2053 to 2079) SpanInfo: {"start":2057,"length":21} + >console.log(numberA3) + >:=> (line 73, col 4) to (line 73, col 25) +-------------------------------- +74 >} + + ~~ => Pos: (2080 to 2081) SpanInfo: {"start":2057,"length":21} + >console.log(numberA3) + >:=> (line 73, col 4) to (line 73, col 25) +-------------------------------- +75 >for (let [numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~ => Pos: (2082 to 2089) SpanInfo: {"start":2082,"length":50} + >for (let [numberA3, ...robotAInfo] of getRobots()) + >:=> (line 75, col 0) to (line 75, col 50) +75 >for (let [numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~ => Pos: (2090 to 2100) SpanInfo: {"start":2092,"length":8} + >numberA3 + >:=> (line 75, col 10) to (line 75, col 18) +75 >for (let [numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (2101 to 2115) SpanInfo: {"start":2102,"length":13} + >...robotAInfo + >:=> (line 75, col 20) to (line 75, col 33) +75 >for (let [numberA3, ...robotAInfo] of getRobots()) { + + ~~~ => Pos: (2116 to 2118) SpanInfo: {"start":2082,"length":50} + >for (let [numberA3, ...robotAInfo] of getRobots()) + >:=> (line 75, col 0) to (line 75, col 50) +75 >for (let [numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (2119 to 2130) SpanInfo: {"start":2120,"length":11} + >getRobots() + >:=> (line 75, col 38) to (line 75, col 49) +75 >for (let [numberA3, ...robotAInfo] of getRobots()) { + + ~~~~=> Pos: (2131 to 2134) SpanInfo: {"start":2082,"length":50} + >for (let [numberA3, ...robotAInfo] of getRobots()) + >:=> (line 75, col 0) to (line 75, col 50) +-------------------------------- +76 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2135 to 2161) SpanInfo: {"start":2139,"length":21} + >console.log(numberA3) + >:=> (line 76, col 4) to (line 76, col 25) +-------------------------------- +77 >} + + ~~ => Pos: (2162 to 2163) SpanInfo: {"start":2139,"length":21} + >console.log(numberA3) + >:=> (line 76, col 4) to (line 76, col 25) +-------------------------------- +78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (2164 to 2171) SpanInfo: {"start":2164,"length":55} + >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) + >:=> (line 78, col 0) to (line 78, col 55) +78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~ => Pos: (2172 to 2182) SpanInfo: {"start":2174,"length":8} + >numberA3 + >:=> (line 78, col 10) to (line 78, col 18) +78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (2183 to 2197) SpanInfo: {"start":2184,"length":13} + >...robotAInfo + >:=> (line 78, col 20) to (line 78, col 33) +78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2198 to 2221) SpanInfo: {"start":2164,"length":55} + >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) + >:=> (line 78, col 0) to (line 78, col 55) +-------------------------------- +79 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2222 to 2248) SpanInfo: {"start":2226,"length":21} + >console.log(numberA3) + >:=> (line 79, col 4) to (line 79, col 25) +-------------------------------- +80 >} + + ~~ => Pos: (2249 to 2250) SpanInfo: {"start":2226,"length":21} + >console.log(numberA3) + >:=> (line 79, col 4) to (line 79, col 25) +-------------------------------- +81 >for (let [...multiRobotAInfo] of multiRobots) { + + ~~~~~~~~ => Pos: (2251 to 2258) SpanInfo: {"start":2251,"length":45} + >for (let [...multiRobotAInfo] of multiRobots) + >:=> (line 81, col 0) to (line 81, col 45) +81 >for (let [...multiRobotAInfo] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2259 to 2279) SpanInfo: {"start":2261,"length":18} + >...multiRobotAInfo + >:=> (line 81, col 10) to (line 81, col 28) +81 >for (let [...multiRobotAInfo] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2280 to 2298) SpanInfo: {"start":2251,"length":45} + >for (let [...multiRobotAInfo] of multiRobots) + >:=> (line 81, col 0) to (line 81, col 45) +-------------------------------- +82 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2299 to 2332) SpanInfo: {"start":2303,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 82, col 4) to (line 82, col 32) +-------------------------------- +83 >} + + ~~ => Pos: (2333 to 2334) SpanInfo: {"start":2303,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 82, col 4) to (line 82, col 32) +-------------------------------- +84 >for (let [...multiRobotAInfo] of getMultiRobots()) { + + ~~~~~~~~ => Pos: (2335 to 2342) SpanInfo: {"start":2335,"length":50} + >for (let [...multiRobotAInfo] of getMultiRobots()) + >:=> (line 84, col 0) to (line 84, col 50) +84 >for (let [...multiRobotAInfo] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2343 to 2363) SpanInfo: {"start":2345,"length":18} + >...multiRobotAInfo + >:=> (line 84, col 10) to (line 84, col 28) +84 >for (let [...multiRobotAInfo] of getMultiRobots()) { + + ~~~ => Pos: (2364 to 2366) SpanInfo: {"start":2335,"length":50} + >for (let [...multiRobotAInfo] of getMultiRobots()) + >:=> (line 84, col 0) to (line 84, col 50) +84 >for (let [...multiRobotAInfo] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2367 to 2383) SpanInfo: {"start":2368,"length":16} + >getMultiRobots() + >:=> (line 84, col 33) to (line 84, col 49) +84 >for (let [...multiRobotAInfo] of getMultiRobots()) { + + ~~~~=> Pos: (2384 to 2387) SpanInfo: {"start":2335,"length":50} + >for (let [...multiRobotAInfo] of getMultiRobots()) + >:=> (line 84, col 0) to (line 84, col 50) +-------------------------------- +85 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2388 to 2421) SpanInfo: {"start":2392,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 85, col 4) to (line 85, col 32) +-------------------------------- +86 >} + + ~~ => Pos: (2422 to 2423) SpanInfo: {"start":2392,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 85, col 4) to (line 85, col 32) +-------------------------------- +87 >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~ => Pos: (2424 to 2431) SpanInfo: {"start":2424,"length":60} + >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) + >:=> (line 87, col 0) to (line 87, col 60) +87 >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2432 to 2452) SpanInfo: {"start":2434,"length":18} + >...multiRobotAInfo + >:=> (line 87, col 10) to (line 87, col 28) +87 >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2453 to 2486) SpanInfo: {"start":2424,"length":60} + >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) + >:=> (line 87, col 0) to (line 87, col 60) +-------------------------------- +88 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2487 to 2520) SpanInfo: {"start":2491,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 88, col 4) to (line 88, col 32) +-------------------------------- +89 >} + ~ => Pos: (2521 to 2521) SpanInfo: {"start":2491,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 88, col 4) to (line 88, col 32) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..a30ea914bf3 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,1061 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (142 to 185) SpanInfo: {"start":142,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >let robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (186 to 233) SpanInfo: {"start":186,"length":46} + >let robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 7, col 0) to (line 7, col 46) +-------------------------------- +8 >let robots = [robotA, robotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (234 to 264) SpanInfo: {"start":234,"length":29} + >let robots = [robotA, robotB] + >:=> (line 8, col 0) to (line 8, col 29) +-------------------------------- +9 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (265 to 287) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +10 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (288 to 306) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +11 >} + + ~~ => Pos: (307 to 308) SpanInfo: {"start":307,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (309 to 372) SpanInfo: {"start":309,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 12, col 0) to (line 12, col 62) +-------------------------------- +13 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (373 to 446) SpanInfo: {"start":373,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 13, col 0) to (line 13, col 72) +-------------------------------- +14 >let multiRobots = [multiRobotA, multiRobotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (447 to 492) SpanInfo: {"start":447,"length":44} + >let multiRobots = [multiRobotA, multiRobotB] + >:=> (line 14, col 0) to (line 14, col 44) +-------------------------------- +15 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (493 to 520) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +16 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (521 to 544) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +17 >} + + ~~ => Pos: (545 to 546) SpanInfo: {"start":545,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >for (let [, nameA = "noName"] of robots) { + + ~~~~~~~~ => Pos: (547 to 554) SpanInfo: {"start":547,"length":40} + >for (let [, nameA = "noName"] of robots) + >:=> (line 18, col 0) to (line 18, col 40) +18 >for (let [, nameA = "noName"] of robots) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (555 to 575) SpanInfo: {"start":559,"length":16} + >nameA = "noName" + >:=> (line 18, col 12) to (line 18, col 28) +18 >for (let [, nameA = "noName"] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (576 to 589) SpanInfo: {"start":547,"length":40} + >for (let [, nameA = "noName"] of robots) + >:=> (line 18, col 0) to (line 18, col 40) +-------------------------------- +19 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (590 to 613) SpanInfo: {"start":594,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +20 >} + + ~~ => Pos: (614 to 615) SpanInfo: {"start":594,"length":18} + >console.log(nameA) + >:=> (line 19, col 4) to (line 19, col 22) +-------------------------------- +21 >for (let [, nameA = "noName"] of getRobots()) { + + ~~~~~~~~ => Pos: (616 to 623) SpanInfo: {"start":616,"length":45} + >for (let [, nameA = "noName"] of getRobots()) + >:=> (line 21, col 0) to (line 21, col 45) +21 >for (let [, nameA = "noName"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (624 to 644) SpanInfo: {"start":628,"length":16} + >nameA = "noName" + >:=> (line 21, col 12) to (line 21, col 28) +21 >for (let [, nameA = "noName"] of getRobots()) { + + ~~~ => Pos: (645 to 647) SpanInfo: {"start":616,"length":45} + >for (let [, nameA = "noName"] of getRobots()) + >:=> (line 21, col 0) to (line 21, col 45) +21 >for (let [, nameA = "noName"] of getRobots()) { + + ~~~~~~~~~~~~ => Pos: (648 to 659) SpanInfo: {"start":649,"length":11} + >getRobots() + >:=> (line 21, col 33) to (line 21, col 44) +21 >for (let [, nameA = "noName"] of getRobots()) { + + ~~~~=> Pos: (660 to 663) SpanInfo: {"start":616,"length":45} + >for (let [, nameA = "noName"] of getRobots()) + >:=> (line 21, col 0) to (line 21, col 45) +-------------------------------- +22 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (664 to 687) SpanInfo: {"start":668,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (688 to 689) SpanInfo: {"start":668,"length":18} + >console.log(nameA) + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +24 >for (let [, nameA = "noName"] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (690 to 697) SpanInfo: {"start":690,"length":50} + >for (let [, nameA = "noName"] of [robotA, robotB]) + >:=> (line 24, col 0) to (line 24, col 50) +24 >for (let [, nameA = "noName"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (698 to 718) SpanInfo: {"start":702,"length":16} + >nameA = "noName" + >:=> (line 24, col 12) to (line 24, col 28) +24 >for (let [, nameA = "noName"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (719 to 742) SpanInfo: {"start":690,"length":50} + >for (let [, nameA = "noName"] of [robotA, robotB]) + >:=> (line 24, col 0) to (line 24, col 50) +-------------------------------- +25 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (743 to 766) SpanInfo: {"start":747,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +26 >} + + ~~ => Pos: (767 to 768) SpanInfo: {"start":747,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +27 >for (let [, [ + + ~~~~~~~~ => Pos: (769 to 776) SpanInfo: {"start":769,"length":120} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of multiRobots) + >:=> (line 27, col 0) to (line 30, col 41) +27 >for (let [, [ + + ~~~ => Pos: (777 to 779) SpanInfo: {"start":781,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 27, col 12) to (line 30, col 24) +27 >for (let [, [ + + ~~~ => Pos: (780 to 782) SpanInfo: {"start":787,"length":25} + >primarySkillA = "primary" + >:=> (line 28, col 4) to (line 28, col 29) +-------------------------------- +28 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (783 to 813) SpanInfo: {"start":787,"length":25} + >primarySkillA = "primary" + >:=> (line 28, col 4) to (line 28, col 29) +-------------------------------- +29 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (814 to 847) SpanInfo: {"start":818,"length":29} + >secondarySkillA = "secondary" + >:=> (line 29, col 4) to (line 29, col 33) +-------------------------------- +30 >] = ["skill1", "skill2"]] of multiRobots) { + + ~ => Pos: (848 to 848) SpanInfo: {"start":818,"length":29} + >secondarySkillA = "secondary" + >:=> (line 29, col 4) to (line 29, col 33) +30 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (849 to 872) SpanInfo: {"start":781,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 27, col 12) to (line 30, col 24) +30 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~ => Pos: (873 to 888) SpanInfo: {"start":769,"length":120} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of multiRobots) + >:=> (line 27, col 0) to (line 30, col 41) +30 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~ => Pos: (889 to 891) SpanInfo: {"start":896,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +31 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (892 to 923) SpanInfo: {"start":896,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +32 >} + + ~~ => Pos: (924 to 925) SpanInfo: {"start":896,"length":26} + >console.log(primarySkillA) + >:=> (line 31, col 4) to (line 31, col 30) +-------------------------------- +33 >for (let [, [ + + ~~~~~~~~ => Pos: (926 to 933) SpanInfo: {"start":926,"length":125} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of getMultiRobots()) + >:=> (line 33, col 0) to (line 36, col 46) +33 >for (let [, [ + + ~~~ => Pos: (934 to 936) SpanInfo: {"start":938,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 33, col 12) to (line 36, col 24) +33 >for (let [, [ + + ~~~ => Pos: (937 to 939) SpanInfo: {"start":944,"length":25} + >primarySkillA = "primary" + >:=> (line 34, col 4) to (line 34, col 29) +-------------------------------- +34 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (940 to 970) SpanInfo: {"start":944,"length":25} + >primarySkillA = "primary" + >:=> (line 34, col 4) to (line 34, col 29) +-------------------------------- +35 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (971 to 1004) SpanInfo: {"start":975,"length":29} + >secondarySkillA = "secondary" + >:=> (line 35, col 4) to (line 35, col 33) +-------------------------------- +36 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~ => Pos: (1005 to 1005) SpanInfo: {"start":975,"length":29} + >secondarySkillA = "secondary" + >:=> (line 35, col 4) to (line 35, col 33) +36 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1006 to 1029) SpanInfo: {"start":938,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 33, col 12) to (line 36, col 24) +36 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~ => Pos: (1030 to 1032) SpanInfo: {"start":926,"length":125} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of getMultiRobots()) + >:=> (line 33, col 0) to (line 36, col 46) +36 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1033 to 1049) SpanInfo: {"start":1034,"length":16} + >getMultiRobots() + >:=> (line 36, col 29) to (line 36, col 45) +36 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~=> Pos: (1050 to 1050) SpanInfo: {"start":926,"length":125} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of getMultiRobots()) + >:=> (line 33, col 0) to (line 36, col 46) +36 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~=> Pos: (1051 to 1053) SpanInfo: {"start":1058,"length":26} + >console.log(primarySkillA) + >:=> (line 37, col 4) to (line 37, col 30) +-------------------------------- +37 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1054 to 1085) SpanInfo: {"start":1058,"length":26} + >console.log(primarySkillA) + >:=> (line 37, col 4) to (line 37, col 30) +-------------------------------- +38 >} + + ~~ => Pos: (1086 to 1087) SpanInfo: {"start":1058,"length":26} + >console.log(primarySkillA) + >:=> (line 37, col 4) to (line 37, col 30) +-------------------------------- +39 >for (let [, [ + + ~~~~~~~~ => Pos: (1088 to 1095) SpanInfo: {"start":1088,"length":135} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) + >:=> (line 39, col 0) to (line 42, col 56) +39 >for (let [, [ + + ~~~ => Pos: (1096 to 1098) SpanInfo: {"start":1100,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 39, col 12) to (line 42, col 24) +39 >for (let [, [ + + ~~~ => Pos: (1099 to 1101) SpanInfo: {"start":1106,"length":25} + >primarySkillA = "primary" + >:=> (line 40, col 4) to (line 40, col 29) +-------------------------------- +40 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1102 to 1132) SpanInfo: {"start":1106,"length":25} + >primarySkillA = "primary" + >:=> (line 40, col 4) to (line 40, col 29) +-------------------------------- +41 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1133 to 1166) SpanInfo: {"start":1137,"length":29} + >secondarySkillA = "secondary" + >:=> (line 41, col 4) to (line 41, col 33) +-------------------------------- +42 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~ => Pos: (1167 to 1167) SpanInfo: {"start":1137,"length":29} + >secondarySkillA = "secondary" + >:=> (line 41, col 4) to (line 41, col 33) +42 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1168 to 1191) SpanInfo: {"start":1100,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 39, col 12) to (line 42, col 24) +42 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1192 to 1222) SpanInfo: {"start":1088,"length":135} + >for (let [, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) + >:=> (line 39, col 0) to (line 42, col 56) +42 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~=> Pos: (1223 to 1225) SpanInfo: {"start":1230,"length":26} + >console.log(primarySkillA) + >:=> (line 43, col 4) to (line 43, col 30) +-------------------------------- +43 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1226 to 1257) SpanInfo: {"start":1230,"length":26} + >console.log(primarySkillA) + >:=> (line 43, col 4) to (line 43, col 30) +-------------------------------- +44 >} + + ~~ => Pos: (1258 to 1259) SpanInfo: {"start":1230,"length":26} + >console.log(primarySkillA) + >:=> (line 43, col 4) to (line 43, col 30) +-------------------------------- +45 >for (let [numberB = -1] of robots) { + + ~~~~~~~~ => Pos: (1260 to 1267) SpanInfo: {"start":1260,"length":34} + >for (let [numberB = -1] of robots) + >:=> (line 45, col 0) to (line 45, col 34) +45 >for (let [numberB = -1] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (1268 to 1282) SpanInfo: {"start":1270,"length":12} + >numberB = -1 + >:=> (line 45, col 10) to (line 45, col 22) +45 >for (let [numberB = -1] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1283 to 1296) SpanInfo: {"start":1260,"length":34} + >for (let [numberB = -1] of robots) + >:=> (line 45, col 0) to (line 45, col 34) +-------------------------------- +46 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1297 to 1322) SpanInfo: {"start":1301,"length":20} + >console.log(numberB) + >:=> (line 46, col 4) to (line 46, col 24) +-------------------------------- +47 >} + + ~~ => Pos: (1323 to 1324) SpanInfo: {"start":1301,"length":20} + >console.log(numberB) + >:=> (line 46, col 4) to (line 46, col 24) +-------------------------------- +48 >for (let [numberB = -1] of getRobots()) { + + ~~~~~~~~ => Pos: (1325 to 1332) SpanInfo: {"start":1325,"length":39} + >for (let [numberB = -1] of getRobots()) + >:=> (line 48, col 0) to (line 48, col 39) +48 >for (let [numberB = -1] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (1333 to 1347) SpanInfo: {"start":1335,"length":12} + >numberB = -1 + >:=> (line 48, col 10) to (line 48, col 22) +48 >for (let [numberB = -1] of getRobots()) { + + ~~~ => Pos: (1348 to 1350) SpanInfo: {"start":1325,"length":39} + >for (let [numberB = -1] of getRobots()) + >:=> (line 48, col 0) to (line 48, col 39) +48 >for (let [numberB = -1] of getRobots()) { + + ~~~~~~~~~~~~ => Pos: (1351 to 1362) SpanInfo: {"start":1352,"length":11} + >getRobots() + >:=> (line 48, col 27) to (line 48, col 38) +48 >for (let [numberB = -1] of getRobots()) { + + ~~~~ => Pos: (1363 to 1366) SpanInfo: {"start":1325,"length":39} + >for (let [numberB = -1] of getRobots()) + >:=> (line 48, col 0) to (line 48, col 39) +-------------------------------- +49 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1367 to 1392) SpanInfo: {"start":1371,"length":20} + >console.log(numberB) + >:=> (line 49, col 4) to (line 49, col 24) +-------------------------------- +50 >} + + ~~ => Pos: (1393 to 1394) SpanInfo: {"start":1371,"length":20} + >console.log(numberB) + >:=> (line 49, col 4) to (line 49, col 24) +-------------------------------- +51 >for (let [numberB = -1] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (1395 to 1402) SpanInfo: {"start":1395,"length":44} + >for (let [numberB = -1] of [robotA, robotB]) + >:=> (line 51, col 0) to (line 51, col 44) +51 >for (let [numberB = -1] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (1403 to 1417) SpanInfo: {"start":1405,"length":12} + >numberB = -1 + >:=> (line 51, col 10) to (line 51, col 22) +51 >for (let [numberB = -1] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1418 to 1441) SpanInfo: {"start":1395,"length":44} + >for (let [numberB = -1] of [robotA, robotB]) + >:=> (line 51, col 0) to (line 51, col 44) +-------------------------------- +52 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1442 to 1467) SpanInfo: {"start":1446,"length":20} + >console.log(numberB) + >:=> (line 52, col 4) to (line 52, col 24) +-------------------------------- +53 >} + + ~~ => Pos: (1468 to 1469) SpanInfo: {"start":1446,"length":20} + >console.log(numberB) + >:=> (line 52, col 4) to (line 52, col 24) +-------------------------------- +54 >for (let [nameB = "noName"] of multiRobots) { + + ~~~~~~~~ => Pos: (1470 to 1477) SpanInfo: {"start":1470,"length":43} + >for (let [nameB = "noName"] of multiRobots) + >:=> (line 54, col 0) to (line 54, col 43) +54 >for (let [nameB = "noName"] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1478 to 1496) SpanInfo: {"start":1480,"length":16} + >nameB = "noName" + >:=> (line 54, col 10) to (line 54, col 26) +54 >for (let [nameB = "noName"] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1497 to 1515) SpanInfo: {"start":1470,"length":43} + >for (let [nameB = "noName"] of multiRobots) + >:=> (line 54, col 0) to (line 54, col 43) +-------------------------------- +55 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1516 to 1539) SpanInfo: {"start":1520,"length":18} + >console.log(nameB) + >:=> (line 55, col 4) to (line 55, col 22) +-------------------------------- +56 >} + + ~~ => Pos: (1540 to 1541) SpanInfo: {"start":1520,"length":18} + >console.log(nameB) + >:=> (line 55, col 4) to (line 55, col 22) +-------------------------------- +57 >for (let [nameB = "noName"] of getMultiRobots()) { + + ~~~~~~~~ => Pos: (1542 to 1549) SpanInfo: {"start":1542,"length":48} + >for (let [nameB = "noName"] of getMultiRobots()) + >:=> (line 57, col 0) to (line 57, col 48) +57 >for (let [nameB = "noName"] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1550 to 1568) SpanInfo: {"start":1552,"length":16} + >nameB = "noName" + >:=> (line 57, col 10) to (line 57, col 26) +57 >for (let [nameB = "noName"] of getMultiRobots()) { + + ~~~ => Pos: (1569 to 1571) SpanInfo: {"start":1542,"length":48} + >for (let [nameB = "noName"] of getMultiRobots()) + >:=> (line 57, col 0) to (line 57, col 48) +57 >for (let [nameB = "noName"] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1572 to 1588) SpanInfo: {"start":1573,"length":16} + >getMultiRobots() + >:=> (line 57, col 31) to (line 57, col 47) +57 >for (let [nameB = "noName"] of getMultiRobots()) { + + ~~~~=> Pos: (1589 to 1592) SpanInfo: {"start":1542,"length":48} + >for (let [nameB = "noName"] of getMultiRobots()) + >:=> (line 57, col 0) to (line 57, col 48) +-------------------------------- +58 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1593 to 1616) SpanInfo: {"start":1597,"length":18} + >console.log(nameB) + >:=> (line 58, col 4) to (line 58, col 22) +-------------------------------- +59 >} + + ~~ => Pos: (1617 to 1618) SpanInfo: {"start":1597,"length":18} + >console.log(nameB) + >:=> (line 58, col 4) to (line 58, col 22) +-------------------------------- +60 >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~ => Pos: (1619 to 1626) SpanInfo: {"start":1619,"length":58} + >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) + >:=> (line 60, col 0) to (line 60, col 58) +60 >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1627 to 1645) SpanInfo: {"start":1629,"length":16} + >nameB = "noName" + >:=> (line 60, col 10) to (line 60, col 26) +60 >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1646 to 1679) SpanInfo: {"start":1619,"length":58} + >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) + >:=> (line 60, col 0) to (line 60, col 58) +-------------------------------- +61 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1680 to 1703) SpanInfo: {"start":1684,"length":18} + >console.log(nameB) + >:=> (line 61, col 4) to (line 61, col 22) +-------------------------------- +62 >} + + ~~ => Pos: (1704 to 1705) SpanInfo: {"start":1684,"length":18} + >console.log(nameB) + >:=> (line 61, col 4) to (line 61, col 22) +-------------------------------- +63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~ => Pos: (1706 to 1713) SpanInfo: {"start":1706,"length":73} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) + >:=> (line 63, col 0) to (line 63, col 73) +63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~~~ => Pos: (1714 to 1729) SpanInfo: {"start":1716,"length":13} + >numberA2 = -1 + >:=> (line 63, col 10) to (line 63, col 23) +63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1730 to 1748) SpanInfo: {"start":1731,"length":17} + >nameA2 = "noName" + >:=> (line 63, col 25) to (line 63, col 42) +63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1749 to 1767) SpanInfo: {"start":1750,"length":17} + >skillA2 = "skill" + >:=> (line 63, col 44) to (line 63, col 61) +63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (1768 to 1781) SpanInfo: {"start":1706,"length":73} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) + >:=> (line 63, col 0) to (line 63, col 73) +-------------------------------- +64 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1782 to 1806) SpanInfo: {"start":1786,"length":19} + >console.log(nameA2) + >:=> (line 64, col 4) to (line 64, col 23) +-------------------------------- +65 >} + + ~~ => Pos: (1807 to 1808) SpanInfo: {"start":1786,"length":19} + >console.log(nameA2) + >:=> (line 64, col 4) to (line 64, col 23) +-------------------------------- +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~ => Pos: (1809 to 1816) SpanInfo: {"start":1809,"length":78} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) + >:=> (line 66, col 0) to (line 66, col 78) +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (1817 to 1832) SpanInfo: {"start":1819,"length":13} + >numberA2 = -1 + >:=> (line 66, col 10) to (line 66, col 23) +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1833 to 1851) SpanInfo: {"start":1834,"length":17} + >nameA2 = "noName" + >:=> (line 66, col 25) to (line 66, col 42) +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1852 to 1870) SpanInfo: {"start":1853,"length":17} + >skillA2 = "skill" + >:=> (line 66, col 44) to (line 66, col 61) +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~=> Pos: (1871 to 1873) SpanInfo: {"start":1809,"length":78} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) + >:=> (line 66, col 0) to (line 66, col 78) +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (1874 to 1885) SpanInfo: {"start":1875,"length":11} + >getRobots() + >:=> (line 66, col 66) to (line 66, col 77) +66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~=> Pos: (1886 to 1889) SpanInfo: {"start":1809,"length":78} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) + >:=> (line 66, col 0) to (line 66, col 78) +-------------------------------- +67 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1890 to 1914) SpanInfo: {"start":1894,"length":19} + >console.log(nameA2) + >:=> (line 67, col 4) to (line 67, col 23) +-------------------------------- +68 >} + + ~~ => Pos: (1915 to 1916) SpanInfo: {"start":1894,"length":19} + >console.log(nameA2) + >:=> (line 67, col 4) to (line 67, col 23) +-------------------------------- +69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (1917 to 1924) SpanInfo: {"start":1917,"length":83} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) + >:=> (line 69, col 0) to (line 69, col 83) +69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~ => Pos: (1925 to 1940) SpanInfo: {"start":1927,"length":13} + >numberA2 = -1 + >:=> (line 69, col 10) to (line 69, col 23) +69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1941 to 1959) SpanInfo: {"start":1942,"length":17} + >nameA2 = "noName" + >:=> (line 69, col 25) to (line 69, col 42) +69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1960 to 1978) SpanInfo: {"start":1961,"length":17} + >skillA2 = "skill" + >:=> (line 69, col 44) to (line 69, col 61) +69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1979 to 2002) SpanInfo: {"start":1917,"length":83} + >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) + >:=> (line 69, col 0) to (line 69, col 83) +-------------------------------- +70 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2003 to 2027) SpanInfo: {"start":2007,"length":19} + >console.log(nameA2) + >:=> (line 70, col 4) to (line 70, col 23) +-------------------------------- +71 >} + + ~~ => Pos: (2028 to 2029) SpanInfo: {"start":2007,"length":19} + >console.log(nameA2) + >:=> (line 70, col 4) to (line 70, col 23) +-------------------------------- +72 >for (let [nameMA = "noName", [ + + ~~~~~~~~ => Pos: (2030 to 2037) SpanInfo: {"start":2030,"length":137} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of multiRobots) + >:=> (line 72, col 0) to (line 75, col 41) +72 >for (let [nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2038 to 2057) SpanInfo: {"start":2040,"length":17} + >nameMA = "noName" + >:=> (line 72, col 10) to (line 72, col 27) +72 >for (let [nameMA = "noName", [ + + ~~~ => Pos: (2058 to 2060) SpanInfo: {"start":2065,"length":25} + >primarySkillA = "primary" + >:=> (line 73, col 4) to (line 73, col 29) +-------------------------------- +73 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2061 to 2091) SpanInfo: {"start":2065,"length":25} + >primarySkillA = "primary" + >:=> (line 73, col 4) to (line 73, col 29) +-------------------------------- +74 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2092 to 2125) SpanInfo: {"start":2096,"length":29} + >secondarySkillA = "secondary" + >:=> (line 74, col 4) to (line 74, col 33) +-------------------------------- +75 >] = ["skill1", "skill2"]] of multiRobots) { + + ~ => Pos: (2126 to 2126) SpanInfo: {"start":2096,"length":29} + >secondarySkillA = "secondary" + >:=> (line 74, col 4) to (line 74, col 33) +75 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2127 to 2150) SpanInfo: {"start":2059,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 72, col 29) to (line 75, col 24) +75 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~ => Pos: (2151 to 2166) SpanInfo: {"start":2030,"length":137} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of multiRobots) + >:=> (line 72, col 0) to (line 75, col 41) +75 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~ => Pos: (2167 to 2169) SpanInfo: {"start":2174,"length":19} + >console.log(nameMA) + >:=> (line 76, col 4) to (line 76, col 23) +-------------------------------- +76 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2170 to 2194) SpanInfo: {"start":2174,"length":19} + >console.log(nameMA) + >:=> (line 76, col 4) to (line 76, col 23) +-------------------------------- +77 >} + + ~~ => Pos: (2195 to 2196) SpanInfo: {"start":2174,"length":19} + >console.log(nameMA) + >:=> (line 76, col 4) to (line 76, col 23) +-------------------------------- +78 >for (let [nameMA = "noName", [ + + ~~~~~~~~ => Pos: (2197 to 2204) SpanInfo: {"start":2197,"length":142} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of getMultiRobots()) + >:=> (line 78, col 0) to (line 81, col 46) +78 >for (let [nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2205 to 2224) SpanInfo: {"start":2207,"length":17} + >nameMA = "noName" + >:=> (line 78, col 10) to (line 78, col 27) +78 >for (let [nameMA = "noName", [ + + ~~~ => Pos: (2225 to 2227) SpanInfo: {"start":2232,"length":25} + >primarySkillA = "primary" + >:=> (line 79, col 4) to (line 79, col 29) +-------------------------------- +79 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2228 to 2258) SpanInfo: {"start":2232,"length":25} + >primarySkillA = "primary" + >:=> (line 79, col 4) to (line 79, col 29) +-------------------------------- +80 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2259 to 2292) SpanInfo: {"start":2263,"length":29} + >secondarySkillA = "secondary" + >:=> (line 80, col 4) to (line 80, col 33) +-------------------------------- +81 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~ => Pos: (2293 to 2293) SpanInfo: {"start":2263,"length":29} + >secondarySkillA = "secondary" + >:=> (line 80, col 4) to (line 80, col 33) +81 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2294 to 2317) SpanInfo: {"start":2226,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 78, col 29) to (line 81, col 24) +81 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~ => Pos: (2318 to 2320) SpanInfo: {"start":2197,"length":142} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of getMultiRobots()) + >:=> (line 78, col 0) to (line 81, col 46) +81 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2321 to 2337) SpanInfo: {"start":2322,"length":16} + >getMultiRobots() + >:=> (line 81, col 29) to (line 81, col 45) +81 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~=> Pos: (2338 to 2338) SpanInfo: {"start":2197,"length":142} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of getMultiRobots()) + >:=> (line 78, col 0) to (line 81, col 46) +81 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~=> Pos: (2339 to 2341) SpanInfo: {"start":2346,"length":19} + >console.log(nameMA) + >:=> (line 82, col 4) to (line 82, col 23) +-------------------------------- +82 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2342 to 2366) SpanInfo: {"start":2346,"length":19} + >console.log(nameMA) + >:=> (line 82, col 4) to (line 82, col 23) +-------------------------------- +83 >} + + ~~ => Pos: (2367 to 2368) SpanInfo: {"start":2346,"length":19} + >console.log(nameMA) + >:=> (line 82, col 4) to (line 82, col 23) +-------------------------------- +84 >for (let [nameMA = "noName", [ + + ~~~~~~~~ => Pos: (2369 to 2376) SpanInfo: {"start":2369,"length":152} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) + >:=> (line 84, col 0) to (line 87, col 56) +84 >for (let [nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2377 to 2396) SpanInfo: {"start":2379,"length":17} + >nameMA = "noName" + >:=> (line 84, col 10) to (line 84, col 27) +84 >for (let [nameMA = "noName", [ + + ~~~ => Pos: (2397 to 2399) SpanInfo: {"start":2404,"length":25} + >primarySkillA = "primary" + >:=> (line 85, col 4) to (line 85, col 29) +-------------------------------- +85 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2400 to 2430) SpanInfo: {"start":2404,"length":25} + >primarySkillA = "primary" + >:=> (line 85, col 4) to (line 85, col 29) +-------------------------------- +86 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2431 to 2464) SpanInfo: {"start":2435,"length":29} + >secondarySkillA = "secondary" + >:=> (line 86, col 4) to (line 86, col 33) +-------------------------------- +87 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~ => Pos: (2465 to 2465) SpanInfo: {"start":2435,"length":29} + >secondarySkillA = "secondary" + >:=> (line 86, col 4) to (line 86, col 33) +87 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2466 to 2489) SpanInfo: {"start":2398,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 84, col 29) to (line 87, col 24) +87 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2490 to 2520) SpanInfo: {"start":2369,"length":152} + >for (let [nameMA = "noName", [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) + >:=> (line 84, col 0) to (line 87, col 56) +87 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~=> Pos: (2521 to 2523) SpanInfo: {"start":2528,"length":19} + >console.log(nameMA) + >:=> (line 88, col 4) to (line 88, col 23) +-------------------------------- +88 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2524 to 2548) SpanInfo: {"start":2528,"length":19} + >console.log(nameMA) + >:=> (line 88, col 4) to (line 88, col 23) +-------------------------------- +89 >} + + ~~ => Pos: (2549 to 2550) SpanInfo: {"start":2528,"length":19} + >console.log(nameMA) + >:=> (line 88, col 4) to (line 88, col 23) +-------------------------------- +90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~ => Pos: (2551 to 2558) SpanInfo: {"start":2551,"length":50} + >for (let [numberA3 = -1, ...robotAInfo] of robots) + >:=> (line 90, col 0) to (line 90, col 50) +90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~~ => Pos: (2559 to 2574) SpanInfo: {"start":2561,"length":13} + >numberA3 = -1 + >:=> (line 90, col 10) to (line 90, col 23) +90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (2575 to 2589) SpanInfo: {"start":2576,"length":13} + >...robotAInfo + >:=> (line 90, col 25) to (line 90, col 38) +90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (2590 to 2603) SpanInfo: {"start":2551,"length":50} + >for (let [numberA3 = -1, ...robotAInfo] of robots) + >:=> (line 90, col 0) to (line 90, col 50) +-------------------------------- +91 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2604 to 2630) SpanInfo: {"start":2608,"length":21} + >console.log(numberA3) + >:=> (line 91, col 4) to (line 91, col 25) +-------------------------------- +92 >} + + ~~ => Pos: (2631 to 2632) SpanInfo: {"start":2608,"length":21} + >console.log(numberA3) + >:=> (line 91, col 4) to (line 91, col 25) +-------------------------------- +93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~ => Pos: (2633 to 2640) SpanInfo: {"start":2633,"length":55} + >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) + >:=> (line 93, col 0) to (line 93, col 55) +93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (2641 to 2656) SpanInfo: {"start":2643,"length":13} + >numberA3 = -1 + >:=> (line 93, col 10) to (line 93, col 23) +93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (2657 to 2671) SpanInfo: {"start":2658,"length":13} + >...robotAInfo + >:=> (line 93, col 25) to (line 93, col 38) +93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~ => Pos: (2672 to 2674) SpanInfo: {"start":2633,"length":55} + >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) + >:=> (line 93, col 0) to (line 93, col 55) +93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (2675 to 2686) SpanInfo: {"start":2676,"length":11} + >getRobots() + >:=> (line 93, col 43) to (line 93, col 54) +93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~=> Pos: (2687 to 2690) SpanInfo: {"start":2633,"length":55} + >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) + >:=> (line 93, col 0) to (line 93, col 55) +-------------------------------- +94 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2691 to 2717) SpanInfo: {"start":2695,"length":21} + >console.log(numberA3) + >:=> (line 94, col 4) to (line 94, col 25) +-------------------------------- +95 >} + + ~~ => Pos: (2718 to 2719) SpanInfo: {"start":2695,"length":21} + >console.log(numberA3) + >:=> (line 94, col 4) to (line 94, col 25) +-------------------------------- +96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (2720 to 2727) SpanInfo: {"start":2720,"length":60} + >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) + >:=> (line 96, col 0) to (line 96, col 60) +96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~ => Pos: (2728 to 2743) SpanInfo: {"start":2730,"length":13} + >numberA3 = -1 + >:=> (line 96, col 10) to (line 96, col 23) +96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (2744 to 2758) SpanInfo: {"start":2745,"length":13} + >...robotAInfo + >:=> (line 96, col 25) to (line 96, col 38) +96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2759 to 2782) SpanInfo: {"start":2720,"length":60} + >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) + >:=> (line 96, col 0) to (line 96, col 60) +-------------------------------- +97 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2783 to 2809) SpanInfo: {"start":2787,"length":21} + >console.log(numberA3) + >:=> (line 97, col 4) to (line 97, col 25) +-------------------------------- +98 >} + ~ => Pos: (2810 to 2810) SpanInfo: {"start":2787,"length":21} + >console.log(numberA3) + >:=> (line 97, col 4) to (line 97, col 25) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline new file mode 100644 index 00000000000..27e089a811d --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline @@ -0,0 +1,635 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 186) SpanInfo: undefined +-------------------------------- +12 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (187 to 213) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (214 to 220) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (221 to 222) SpanInfo: undefined +-------------------------------- +15 >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (223 to 322) SpanInfo: {"start":223,"length":98} + >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 15, col 0) to (line 15, col 98) +-------------------------------- +16 >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (323 to 424) SpanInfo: {"start":323,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +17 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (425 to 504) SpanInfo: {"start":323,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +18 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (505 to 527) SpanInfo: {"start":532,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +19 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (528 to 546) SpanInfo: {"start":532,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +20 >} + + ~~ => Pos: (547 to 548) SpanInfo: {"start":547,"length":1} + >} + >:=> (line 20, col 0) to (line 20, col 1) +-------------------------------- +21 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (549 to 576) SpanInfo: {"start":581,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +22 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (577 to 600) SpanInfo: {"start":581,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (601 to 602) SpanInfo: {"start":601,"length":1} + >} + >:=> (line 23, col 0) to (line 23, col 1) +-------------------------------- +24 >for (let {name: nameA } of robots) { + + ~~~~~~~~ => Pos: (603 to 610) SpanInfo: {"start":603,"length":34} + >for (let {name: nameA } of robots) + >:=> (line 24, col 0) to (line 24, col 34) +24 >for (let {name: nameA } of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (611 to 625) SpanInfo: {"start":613,"length":11} + >name: nameA + >:=> (line 24, col 10) to (line 24, col 21) +24 >for (let {name: nameA } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (626 to 639) SpanInfo: {"start":603,"length":34} + >for (let {name: nameA } of robots) + >:=> (line 24, col 0) to (line 24, col 34) +-------------------------------- +25 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (640 to 663) SpanInfo: {"start":644,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +26 >} + + ~~ => Pos: (664 to 665) SpanInfo: {"start":644,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +27 >for (let {name: nameA } of getRobots()) { + + ~~~~~~~~ => Pos: (666 to 673) SpanInfo: {"start":666,"length":39} + >for (let {name: nameA } of getRobots()) + >:=> (line 27, col 0) to (line 27, col 39) +27 >for (let {name: nameA } of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (674 to 688) SpanInfo: {"start":676,"length":11} + >name: nameA + >:=> (line 27, col 10) to (line 27, col 21) +27 >for (let {name: nameA } of getRobots()) { + + ~~~ => Pos: (689 to 691) SpanInfo: {"start":666,"length":39} + >for (let {name: nameA } of getRobots()) + >:=> (line 27, col 0) to (line 27, col 39) +27 >for (let {name: nameA } of getRobots()) { + + ~~~~~~~~~~~~ => Pos: (692 to 703) SpanInfo: {"start":693,"length":11} + >getRobots() + >:=> (line 27, col 27) to (line 27, col 38) +27 >for (let {name: nameA } of getRobots()) { + + ~~~~ => Pos: (704 to 707) SpanInfo: {"start":666,"length":39} + >for (let {name: nameA } of getRobots()) + >:=> (line 27, col 0) to (line 27, col 39) +-------------------------------- +28 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (708 to 731) SpanInfo: {"start":712,"length":18} + >console.log(nameA) + >:=> (line 28, col 4) to (line 28, col 22) +-------------------------------- +29 >} + + ~~ => Pos: (732 to 733) SpanInfo: {"start":712,"length":18} + >console.log(nameA) + >:=> (line 28, col 4) to (line 28, col 22) +-------------------------------- +30 >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~ => Pos: (734 to 741) SpanInfo: {"start":734,"length":104} + >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 30, col 0) to (line 30, col 104) +30 >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~ => Pos: (742 to 756) SpanInfo: {"start":744,"length":11} + >name: nameA + >:=> (line 30, col 10) to (line 30, col 21) +30 >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (757 to 840) SpanInfo: {"start":734,"length":104} + >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 30, col 0) to (line 30, col 104) +-------------------------------- +31 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (841 to 864) SpanInfo: {"start":845,"length":18} + >console.log(nameA) + >:=> (line 31, col 4) to (line 31, col 22) +-------------------------------- +32 >} + + ~~ => Pos: (865 to 866) SpanInfo: {"start":845,"length":18} + >console.log(nameA) + >:=> (line 31, col 4) to (line 31, col 22) +-------------------------------- +33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~ => Pos: (867 to 874) SpanInfo: {"start":867,"length":81} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) + >:=> (line 33, col 0) to (line 33, col 81) +33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~ => Pos: (875 to 884) SpanInfo: {"start":878,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 33, col 11) to (line 33, col 63) +33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (885 to 905) SpanInfo: {"start":888,"length":17} + >primary: primaryA + >:=> (line 33, col 21) to (line 33, col 38) +33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (906 to 929) SpanInfo: {"start":907,"length":21} + >secondary: secondaryA + >:=> (line 33, col 40) to (line 33, col 61) +33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~=> Pos: (930 to 931) SpanInfo: {"start":878,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 33, col 11) to (line 33, col 63) +33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (932 to 950) SpanInfo: {"start":867,"length":81} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) + >:=> (line 33, col 0) to (line 33, col 81) +-------------------------------- +34 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (951 to 977) SpanInfo: {"start":955,"length":21} + >console.log(primaryA) + >:=> (line 34, col 4) to (line 34, col 25) +-------------------------------- +35 >} + + ~~ => Pos: (978 to 979) SpanInfo: {"start":955,"length":21} + >console.log(primaryA) + >:=> (line 34, col 4) to (line 34, col 25) +-------------------------------- +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~ => Pos: (980 to 987) SpanInfo: {"start":980,"length":86} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) + >:=> (line 36, col 0) to (line 36, col 86) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~ => Pos: (988 to 997) SpanInfo: {"start":991,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 36, col 11) to (line 36, col 63) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (998 to 1018) SpanInfo: {"start":1001,"length":17} + >primary: primaryA + >:=> (line 36, col 21) to (line 36, col 38) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1019 to 1042) SpanInfo: {"start":1020,"length":21} + >secondary: secondaryA + >:=> (line 36, col 40) to (line 36, col 61) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~=> Pos: (1043 to 1044) SpanInfo: {"start":991,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 36, col 11) to (line 36, col 63) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~=> Pos: (1045 to 1047) SpanInfo: {"start":980,"length":86} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) + >:=> (line 36, col 0) to (line 36, col 86) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1048 to 1064) SpanInfo: {"start":1049,"length":16} + >getMultiRobots() + >:=> (line 36, col 69) to (line 36, col 85) +36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~=> Pos: (1065 to 1068) SpanInfo: {"start":980,"length":86} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) + >:=> (line 36, col 0) to (line 36, col 86) +-------------------------------- +37 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1069 to 1095) SpanInfo: {"start":1073,"length":21} + >console.log(primaryA) + >:=> (line 37, col 4) to (line 37, col 25) +-------------------------------- +38 >} + + ~~ => Pos: (1096 to 1097) SpanInfo: {"start":1073,"length":21} + >console.log(primaryA) + >:=> (line 37, col 4) to (line 37, col 25) +-------------------------------- +39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~ => Pos: (1098 to 1105) SpanInfo: {"start":1098,"length":218} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 39, col 0) to (line 40, col 79) +39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~ => Pos: (1106 to 1115) SpanInfo: {"start":1109,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 39, col 11) to (line 39, col 63) +39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1116 to 1136) SpanInfo: {"start":1119,"length":17} + >primary: primaryA + >:=> (line 39, col 21) to (line 39, col 38) +39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1137 to 1160) SpanInfo: {"start":1138,"length":21} + >secondary: secondaryA + >:=> (line 39, col 40) to (line 39, col 61) +39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~=> Pos: (1161 to 1162) SpanInfo: {"start":1109,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 39, col 11) to (line 39, col 63) +39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1163 to 1236) SpanInfo: {"start":1098,"length":218} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 39, col 0) to (line 40, col 79) +-------------------------------- +40 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1237 to 1315) SpanInfo: {"start":1098,"length":218} + >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 39, col 0) to (line 40, col 79) +40 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~=> Pos: (1316 to 1318) SpanInfo: {"start":1323,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +41 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1319 to 1345) SpanInfo: {"start":1323,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +42 >} + + ~~ => Pos: (1346 to 1347) SpanInfo: {"start":1323,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +43 >for (let {name: nameA, skill: skillA } of robots) { + + ~~~~~~~~ => Pos: (1348 to 1355) SpanInfo: {"start":1348,"length":49} + >for (let {name: nameA, skill: skillA } of robots) + >:=> (line 43, col 0) to (line 43, col 49) +43 >for (let {name: nameA, skill: skillA } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1356 to 1369) SpanInfo: {"start":1358,"length":11} + >name: nameA + >:=> (line 43, col 10) to (line 43, col 21) +43 >for (let {name: nameA, skill: skillA } of robots) { + + ~~~~~~~~~~~~~~~~ => Pos: (1370 to 1385) SpanInfo: {"start":1371,"length":13} + >skill: skillA + >:=> (line 43, col 23) to (line 43, col 36) +43 >for (let {name: nameA, skill: skillA } of robots) { + + ~~~~~~~~~~~~~~=> Pos: (1386 to 1399) SpanInfo: {"start":1348,"length":49} + >for (let {name: nameA, skill: skillA } of robots) + >:=> (line 43, col 0) to (line 43, col 49) +-------------------------------- +44 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1400 to 1423) SpanInfo: {"start":1404,"length":18} + >console.log(nameA) + >:=> (line 44, col 4) to (line 44, col 22) +-------------------------------- +45 >} + + ~~ => Pos: (1424 to 1425) SpanInfo: {"start":1404,"length":18} + >console.log(nameA) + >:=> (line 44, col 4) to (line 44, col 22) +-------------------------------- +46 >for (let {name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~ => Pos: (1426 to 1433) SpanInfo: {"start":1426,"length":54} + >for (let {name: nameA, skill: skillA } of getRobots()) + >:=> (line 46, col 0) to (line 46, col 54) +46 >for (let {name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~~~~~~~ => Pos: (1434 to 1447) SpanInfo: {"start":1436,"length":11} + >name: nameA + >:=> (line 46, col 10) to (line 46, col 21) +46 >for (let {name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (1448 to 1463) SpanInfo: {"start":1449,"length":13} + >skill: skillA + >:=> (line 46, col 23) to (line 46, col 36) +46 >for (let {name: nameA, skill: skillA } of getRobots()) { + + ~~~ => Pos: (1464 to 1466) SpanInfo: {"start":1426,"length":54} + >for (let {name: nameA, skill: skillA } of getRobots()) + >:=> (line 46, col 0) to (line 46, col 54) +46 >for (let {name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (1467 to 1478) SpanInfo: {"start":1468,"length":11} + >getRobots() + >:=> (line 46, col 42) to (line 46, col 53) +46 >for (let {name: nameA, skill: skillA } of getRobots()) { + + ~~~~=> Pos: (1479 to 1482) SpanInfo: {"start":1426,"length":54} + >for (let {name: nameA, skill: skillA } of getRobots()) + >:=> (line 46, col 0) to (line 46, col 54) +-------------------------------- +47 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1483 to 1506) SpanInfo: {"start":1487,"length":18} + >console.log(nameA) + >:=> (line 47, col 4) to (line 47, col 22) +-------------------------------- +48 >} + + ~~ => Pos: (1507 to 1508) SpanInfo: {"start":1487,"length":18} + >console.log(nameA) + >:=> (line 47, col 4) to (line 47, col 22) +-------------------------------- +49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~ => Pos: (1509 to 1516) SpanInfo: {"start":1509,"length":119} + >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 49, col 0) to (line 49, col 119) +49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~ => Pos: (1517 to 1530) SpanInfo: {"start":1519,"length":11} + >name: nameA + >:=> (line 49, col 10) to (line 49, col 21) +49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~ => Pos: (1531 to 1546) SpanInfo: {"start":1532,"length":13} + >skill: skillA + >:=> (line 49, col 23) to (line 49, col 36) +49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1547 to 1630) SpanInfo: {"start":1509,"length":119} + >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 49, col 0) to (line 49, col 119) +-------------------------------- +50 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1631 to 1654) SpanInfo: {"start":1635,"length":18} + >console.log(nameA) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +51 >} + + ~~ => Pos: (1655 to 1656) SpanInfo: {"start":1635,"length":18} + >console.log(nameA) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~ => Pos: (1657 to 1664) SpanInfo: {"start":1657,"length":93} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) + >:=> (line 52, col 0) to (line 52, col 93) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~ => Pos: (1665 to 1678) SpanInfo: {"start":1667,"length":11} + >name: nameA + >:=> (line 52, col 10) to (line 52, col 21) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~ => Pos: (1679 to 1686) SpanInfo: {"start":1680,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 52, col 23) to (line 52, col 75) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1687 to 1707) SpanInfo: {"start":1690,"length":17} + >primary: primaryA + >:=> (line 52, col 33) to (line 52, col 50) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1708 to 1731) SpanInfo: {"start":1709,"length":21} + >secondary: secondaryA + >:=> (line 52, col 52) to (line 52, col 73) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~=> Pos: (1732 to 1733) SpanInfo: {"start":1680,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 52, col 23) to (line 52, col 75) +52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1734 to 1752) SpanInfo: {"start":1657,"length":93} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) + >:=> (line 52, col 0) to (line 52, col 93) +-------------------------------- +53 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1753 to 1776) SpanInfo: {"start":1757,"length":18} + >console.log(nameA) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +54 >} + + ~~ => Pos: (1777 to 1778) SpanInfo: {"start":1757,"length":18} + >console.log(nameA) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~ => Pos: (1779 to 1786) SpanInfo: {"start":1779,"length":98} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) + >:=> (line 55, col 0) to (line 55, col 98) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~ => Pos: (1787 to 1800) SpanInfo: {"start":1789,"length":11} + >name: nameA + >:=> (line 55, col 10) to (line 55, col 21) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~ => Pos: (1801 to 1808) SpanInfo: {"start":1802,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 55, col 23) to (line 55, col 75) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1809 to 1829) SpanInfo: {"start":1812,"length":17} + >primary: primaryA + >:=> (line 55, col 33) to (line 55, col 50) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1830 to 1853) SpanInfo: {"start":1831,"length":21} + >secondary: secondaryA + >:=> (line 55, col 52) to (line 55, col 73) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~=> Pos: (1854 to 1855) SpanInfo: {"start":1802,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 55, col 23) to (line 55, col 75) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~=> Pos: (1856 to 1858) SpanInfo: {"start":1779,"length":98} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) + >:=> (line 55, col 0) to (line 55, col 98) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1859 to 1875) SpanInfo: {"start":1860,"length":16} + >getMultiRobots() + >:=> (line 55, col 81) to (line 55, col 97) +55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~=> Pos: (1876 to 1879) SpanInfo: {"start":1779,"length":98} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) + >:=> (line 55, col 0) to (line 55, col 98) +-------------------------------- +56 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1880 to 1903) SpanInfo: {"start":1884,"length":18} + >console.log(nameA) + >:=> (line 56, col 4) to (line 56, col 22) +-------------------------------- +57 >} + + ~~ => Pos: (1904 to 1905) SpanInfo: {"start":1884,"length":18} + >console.log(nameA) + >:=> (line 56, col 4) to (line 56, col 22) +-------------------------------- +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~ => Pos: (1906 to 1913) SpanInfo: {"start":1906,"length":230} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 58, col 0) to (line 59, col 79) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~ => Pos: (1914 to 1927) SpanInfo: {"start":1916,"length":11} + >name: nameA + >:=> (line 58, col 10) to (line 58, col 21) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~ => Pos: (1928 to 1935) SpanInfo: {"start":1929,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 58, col 23) to (line 58, col 75) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1936 to 1956) SpanInfo: {"start":1939,"length":17} + >primary: primaryA + >:=> (line 58, col 33) to (line 58, col 50) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1957 to 1980) SpanInfo: {"start":1958,"length":21} + >secondary: secondaryA + >:=> (line 58, col 52) to (line 58, col 73) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~=> Pos: (1981 to 1982) SpanInfo: {"start":1929,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 58, col 23) to (line 58, col 75) +58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1983 to 2056) SpanInfo: {"start":1906,"length":230} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 58, col 0) to (line 59, col 79) +-------------------------------- +59 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2057 to 2135) SpanInfo: {"start":1906,"length":230} + >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 58, col 0) to (line 59, col 79) +59 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~=> Pos: (2136 to 2138) SpanInfo: {"start":2143,"length":18} + >console.log(nameA) + >:=> (line 60, col 4) to (line 60, col 22) +-------------------------------- +60 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2139 to 2162) SpanInfo: {"start":2143,"length":18} + >console.log(nameA) + >:=> (line 60, col 4) to (line 60, col 22) +-------------------------------- +61 >} + ~ => Pos: (2163 to 2163) SpanInfo: {"start":2143,"length":18} + >console.log(nameA) + >:=> (line 60, col 4) to (line 60, col 22) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..d5553960334 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline @@ -0,0 +1,855 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 187) SpanInfo: undefined +-------------------------------- +12 > secondary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (188 to 215) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (216 to 222) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (223 to 224) SpanInfo: undefined +-------------------------------- +15 >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (225 to 324) SpanInfo: {"start":225,"length":98} + >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 15, col 0) to (line 15, col 98) +-------------------------------- +16 >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (325 to 426) SpanInfo: {"start":325,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +17 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (427 to 506) SpanInfo: {"start":325,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +18 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (507 to 529) SpanInfo: {"start":534,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +19 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (530 to 548) SpanInfo: {"start":534,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +20 >} + + ~~ => Pos: (549 to 550) SpanInfo: {"start":549,"length":1} + >} + >:=> (line 20, col 0) to (line 20, col 1) +-------------------------------- +21 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (551 to 578) SpanInfo: {"start":583,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +22 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (579 to 602) SpanInfo: {"start":583,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (603 to 604) SpanInfo: {"start":603,"length":1} + >} + >:=> (line 23, col 0) to (line 23, col 1) +-------------------------------- +24 >for (let {name: nameA = "noName" } of robots) { + + ~~~~~~~~ => Pos: (605 to 612) SpanInfo: {"start":605,"length":45} + >for (let {name: nameA = "noName" } of robots) + >:=> (line 24, col 0) to (line 24, col 45) +24 >for (let {name: nameA = "noName" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (613 to 638) SpanInfo: {"start":615,"length":22} + >name: nameA = "noName" + >:=> (line 24, col 10) to (line 24, col 32) +24 >for (let {name: nameA = "noName" } of robots) { + + ~~~~~~~~~~~~~~=> Pos: (639 to 652) SpanInfo: {"start":605,"length":45} + >for (let {name: nameA = "noName" } of robots) + >:=> (line 24, col 0) to (line 24, col 45) +-------------------------------- +25 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (653 to 676) SpanInfo: {"start":657,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +26 >} + + ~~ => Pos: (677 to 678) SpanInfo: {"start":657,"length":18} + >console.log(nameA) + >:=> (line 25, col 4) to (line 25, col 22) +-------------------------------- +27 >for (let {name: nameA = "noName" } of getRobots()) { + + ~~~~~~~~ => Pos: (679 to 686) SpanInfo: {"start":679,"length":50} + >for (let {name: nameA = "noName" } of getRobots()) + >:=> (line 27, col 0) to (line 27, col 50) +27 >for (let {name: nameA = "noName" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (687 to 712) SpanInfo: {"start":689,"length":22} + >name: nameA = "noName" + >:=> (line 27, col 10) to (line 27, col 32) +27 >for (let {name: nameA = "noName" } of getRobots()) { + + ~~~ => Pos: (713 to 715) SpanInfo: {"start":679,"length":50} + >for (let {name: nameA = "noName" } of getRobots()) + >:=> (line 27, col 0) to (line 27, col 50) +27 >for (let {name: nameA = "noName" } of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (716 to 727) SpanInfo: {"start":717,"length":11} + >getRobots() + >:=> (line 27, col 38) to (line 27, col 49) +27 >for (let {name: nameA = "noName" } of getRobots()) { + + ~~~~=> Pos: (728 to 731) SpanInfo: {"start":679,"length":50} + >for (let {name: nameA = "noName" } of getRobots()) + >:=> (line 27, col 0) to (line 27, col 50) +-------------------------------- +28 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (732 to 755) SpanInfo: {"start":736,"length":18} + >console.log(nameA) + >:=> (line 28, col 4) to (line 28, col 22) +-------------------------------- +29 >} + + ~~ => Pos: (756 to 757) SpanInfo: {"start":736,"length":18} + >console.log(nameA) + >:=> (line 28, col 4) to (line 28, col 22) +-------------------------------- +30 >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~ => Pos: (758 to 765) SpanInfo: {"start":758,"length":115} + >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 30, col 0) to (line 30, col 115) +30 >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (766 to 791) SpanInfo: {"start":768,"length":22} + >name: nameA = "noName" + >:=> (line 30, col 10) to (line 30, col 32) +30 >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (792 to 875) SpanInfo: {"start":758,"length":115} + >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 30, col 0) to (line 30, col 115) +-------------------------------- +31 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (876 to 899) SpanInfo: {"start":880,"length":18} + >console.log(nameA) + >:=> (line 31, col 4) to (line 31, col 22) +-------------------------------- +32 >} + + ~~ => Pos: (900 to 901) SpanInfo: {"start":880,"length":18} + >console.log(nameA) + >:=> (line 31, col 4) to (line 31, col 22) +-------------------------------- +33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~ => Pos: (902 to 909) SpanInfo: {"start":902,"length":158} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) + >:=> (line 33, col 0) to (line 34, col 66) +33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~ => Pos: (910 to 919) SpanInfo: {"start":913,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 33, col 11) to (line 34, col 48) +33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (920 to 952) SpanInfo: {"start":923,"length":29} + >primary: primaryA = "primary" + >:=> (line 33, col 21) to (line 33, col 50) +33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (953 to 990) SpanInfo: {"start":954,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 33, col 52) to (line 33, col 87) +33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~=> Pos: (991 to 993) SpanInfo: {"start":913,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 33, col 11) to (line 34, col 48) +-------------------------------- +34 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (994 to 1043) SpanInfo: {"start":913,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 33, col 11) to (line 34, col 48) +34 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + + ~~~~~~~~~~~~~~~~=> Pos: (1044 to 1059) SpanInfo: {"start":902,"length":158} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) + >:=> (line 33, col 0) to (line 34, col 66) +34 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + + ~~~=> Pos: (1060 to 1062) SpanInfo: {"start":1067,"length":21} + >console.log(primaryA) + >:=> (line 35, col 4) to (line 35, col 25) +-------------------------------- +35 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1063 to 1089) SpanInfo: {"start":1067,"length":21} + >console.log(primaryA) + >:=> (line 35, col 4) to (line 35, col 25) +-------------------------------- +36 >} + + ~~ => Pos: (1090 to 1091) SpanInfo: {"start":1067,"length":21} + >console.log(primaryA) + >:=> (line 35, col 4) to (line 35, col 25) +-------------------------------- +37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~ => Pos: (1092 to 1099) SpanInfo: {"start":1092,"length":163} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) + >:=> (line 37, col 0) to (line 38, col 71) +37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~ => Pos: (1100 to 1109) SpanInfo: {"start":1103,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 37, col 11) to (line 38, col 48) +37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1110 to 1142) SpanInfo: {"start":1113,"length":29} + >primary: primaryA = "primary" + >:=> (line 37, col 21) to (line 37, col 50) +37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1143 to 1180) SpanInfo: {"start":1144,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 37, col 52) to (line 37, col 87) +37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~=> Pos: (1181 to 1183) SpanInfo: {"start":1103,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 37, col 11) to (line 38, col 48) +-------------------------------- +38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1184 to 1233) SpanInfo: {"start":1103,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 37, col 11) to (line 38, col 48) +38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~~=> Pos: (1234 to 1236) SpanInfo: {"start":1092,"length":163} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) + >:=> (line 37, col 0) to (line 38, col 71) +38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1237 to 1253) SpanInfo: {"start":1238,"length":16} + >getMultiRobots() + >:=> (line 38, col 54) to (line 38, col 70) +38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~=> Pos: (1254 to 1254) SpanInfo: {"start":1092,"length":163} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) + >:=> (line 37, col 0) to (line 38, col 71) +38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~~=> Pos: (1255 to 1257) SpanInfo: {"start":1262,"length":21} + >console.log(primaryA) + >:=> (line 39, col 4) to (line 39, col 25) +-------------------------------- +39 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1258 to 1284) SpanInfo: {"start":1262,"length":21} + >console.log(primaryA) + >:=> (line 39, col 4) to (line 39, col 25) +-------------------------------- +40 >} + + ~~ => Pos: (1285 to 1286) SpanInfo: {"start":1262,"length":21} + >console.log(primaryA) + >:=> (line 39, col 4) to (line 39, col 25) +-------------------------------- +41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~ => Pos: (1287 to 1294) SpanInfo: {"start":1287,"length":313} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of + > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 41, col 0) to (line 44, col 79) +41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~ => Pos: (1295 to 1304) SpanInfo: {"start":1298,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 41, col 11) to (line 42, col 48) +41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1305 to 1337) SpanInfo: {"start":1308,"length":29} + >primary: primaryA = "primary" + >:=> (line 41, col 21) to (line 41, col 50) +41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1338 to 1375) SpanInfo: {"start":1339,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 41, col 52) to (line 41, col 87) +41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~=> Pos: (1376 to 1378) SpanInfo: {"start":1298,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 41, col 11) to (line 42, col 48) +-------------------------------- +42 > { primary: "nosKill", secondary: "noSkill" } } of + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1379 to 1428) SpanInfo: {"start":1298,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 41, col 11) to (line 42, col 48) +42 > { primary: "nosKill", secondary: "noSkill" } } of + + ~~~~=> Pos: (1429 to 1432) SpanInfo: {"start":1287,"length":313} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of + > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 41, col 0) to (line 44, col 79) +-------------------------------- +43 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1433 to 1520) SpanInfo: {"start":1287,"length":313} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of + > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 41, col 0) to (line 44, col 79) +-------------------------------- +44 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1521 to 1599) SpanInfo: {"start":1287,"length":313} + >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } } of + > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 41, col 0) to (line 44, col 79) +44 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~=> Pos: (1600 to 1602) SpanInfo: {"start":1607,"length":21} + >console.log(primaryA) + >:=> (line 45, col 4) to (line 45, col 25) +-------------------------------- +45 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1603 to 1629) SpanInfo: {"start":1607,"length":21} + >console.log(primaryA) + >:=> (line 45, col 4) to (line 45, col 25) +-------------------------------- +46 >} + + ~~ => Pos: (1630 to 1631) SpanInfo: {"start":1607,"length":21} + >console.log(primaryA) + >:=> (line 45, col 4) to (line 45, col 25) +-------------------------------- +47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~ => Pos: (1632 to 1639) SpanInfo: {"start":1632,"length":72} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) + >:=> (line 47, col 0) to (line 47, col 72) +47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1640 to 1664) SpanInfo: {"start":1642,"length":22} + >name: nameA = "noName" + >:=> (line 47, col 10) to (line 47, col 32) +47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1665 to 1692) SpanInfo: {"start":1666,"length":25} + >skill: skillA = "noSkill" + >:=> (line 47, col 34) to (line 47, col 59) +47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~=> Pos: (1693 to 1706) SpanInfo: {"start":1632,"length":72} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) + >:=> (line 47, col 0) to (line 47, col 72) +-------------------------------- +48 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1707 to 1730) SpanInfo: {"start":1711,"length":18} + >console.log(nameA) + >:=> (line 48, col 4) to (line 48, col 22) +-------------------------------- +49 >} + + ~~ => Pos: (1731 to 1732) SpanInfo: {"start":1711,"length":18} + >console.log(nameA) + >:=> (line 48, col 4) to (line 48, col 22) +-------------------------------- +50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~ => Pos: (1733 to 1740) SpanInfo: {"start":1733,"length":78} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) + >:=> (line 50, col 0) to (line 50, col 78) +50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1741 to 1765) SpanInfo: {"start":1743,"length":22} + >name: nameA = "noName" + >:=> (line 50, col 10) to (line 50, col 32) +50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1766 to 1794) SpanInfo: {"start":1767,"length":25} + >skill: skillA = "noSkill" + >:=> (line 50, col 34) to (line 50, col 59) +50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~=> Pos: (1795 to 1797) SpanInfo: {"start":1733,"length":78} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) + >:=> (line 50, col 0) to (line 50, col 78) +50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~=> Pos: (1798 to 1809) SpanInfo: {"start":1799,"length":11} + >getRobots() + >:=> (line 50, col 66) to (line 50, col 77) +50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~=> Pos: (1810 to 1813) SpanInfo: {"start":1733,"length":78} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) + >:=> (line 50, col 0) to (line 50, col 78) +-------------------------------- +51 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1814 to 1837) SpanInfo: {"start":1818,"length":18} + >console.log(nameA) + >:=> (line 51, col 4) to (line 51, col 22) +-------------------------------- +52 >} + + ~~ => Pos: (1838 to 1839) SpanInfo: {"start":1818,"length":18} + >console.log(nameA) + >:=> (line 51, col 4) to (line 51, col 22) +-------------------------------- +53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~ => Pos: (1840 to 1847) SpanInfo: {"start":1840,"length":143} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 53, col 0) to (line 53, col 143) +53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1848 to 1872) SpanInfo: {"start":1850,"length":22} + >name: nameA = "noName" + >:=> (line 53, col 10) to (line 53, col 32) +53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1873 to 1901) SpanInfo: {"start":1874,"length":25} + >skill: skillA = "noSkill" + >:=> (line 53, col 34) to (line 53, col 59) +53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1902 to 1985) SpanInfo: {"start":1840,"length":143} + >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) + >:=> (line 53, col 0) to (line 53, col 143) +-------------------------------- +54 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1986 to 2009) SpanInfo: {"start":1990,"length":18} + >console.log(nameA) + >:=> (line 54, col 4) to (line 54, col 22) +-------------------------------- +55 >} + + ~~ => Pos: (2010 to 2011) SpanInfo: {"start":1990,"length":18} + >console.log(nameA) + >:=> (line 54, col 4) to (line 54, col 22) +-------------------------------- +56 >for (let { + + ~~~~~~~~ => Pos: (2012 to 2019) SpanInfo: {"start":2012,"length":206} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of multiRobots) + >:=> (line 56, col 0) to (line 62, col 17) +56 >for (let { + + ~~~ => Pos: (2020 to 2022) SpanInfo: {"start":2027,"length":22} + >name: nameA = "noName" + >:=> (line 57, col 4) to (line 57, col 26) +-------------------------------- +57 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2023 to 2050) SpanInfo: {"start":2027,"length":22} + >name: nameA = "noName" + >:=> (line 57, col 4) to (line 57, col 26) +-------------------------------- +58 > skills: { + + ~~~~~~~~~~~ => Pos: (2051 to 2061) SpanInfo: {"start":2055,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 58, col 4) to (line 61, col 52) +58 > skills: { + + ~~~ => Pos: (2062 to 2064) SpanInfo: {"start":2073,"length":29} + >primary: primaryA = "primary" + >:=> (line 59, col 8) to (line 59, col 37) +-------------------------------- +59 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2065 to 2103) SpanInfo: {"start":2073,"length":29} + >primary: primaryA = "primary" + >:=> (line 59, col 8) to (line 59, col 37) +-------------------------------- +60 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2104 to 2147) SpanInfo: {"start":2112,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 60, col 8) to (line 60, col 43) +-------------------------------- +61 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~ => Pos: (2148 to 2152) SpanInfo: {"start":2112,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 60, col 8) to (line 60, col 43) +61 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2153 to 2200) SpanInfo: {"start":2055,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 58, col 4) to (line 61, col 52) +-------------------------------- +62 >} of multiRobots) { + + ~ => Pos: (2201 to 2201) SpanInfo: {"start":2055,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 58, col 4) to (line 61, col 52) +62 >} of multiRobots) { + + ~~~~~~~~~~~~~~~~ => Pos: (2202 to 2217) SpanInfo: {"start":2012,"length":206} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of multiRobots) + >:=> (line 56, col 0) to (line 62, col 17) +62 >} of multiRobots) { + + ~~~ => Pos: (2218 to 2220) SpanInfo: {"start":2225,"length":18} + >console.log(nameA) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +63 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2221 to 2244) SpanInfo: {"start":2225,"length":18} + >console.log(nameA) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +64 >} + + ~~ => Pos: (2245 to 2246) SpanInfo: {"start":2225,"length":18} + >console.log(nameA) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +65 >for (let { + + ~~~~~~~~ => Pos: (2247 to 2254) SpanInfo: {"start":2247,"length":211} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) + >:=> (line 65, col 0) to (line 71, col 22) +65 >for (let { + + ~~~ => Pos: (2255 to 2257) SpanInfo: {"start":2262,"length":22} + >name: nameA = "noName" + >:=> (line 66, col 4) to (line 66, col 26) +-------------------------------- +66 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2258 to 2285) SpanInfo: {"start":2262,"length":22} + >name: nameA = "noName" + >:=> (line 66, col 4) to (line 66, col 26) +-------------------------------- +67 > skills: { + + ~~~~~~~~~~~ => Pos: (2286 to 2296) SpanInfo: {"start":2290,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 67, col 4) to (line 70, col 52) +67 > skills: { + + ~~~ => Pos: (2297 to 2299) SpanInfo: {"start":2308,"length":29} + >primary: primaryA = "primary" + >:=> (line 68, col 8) to (line 68, col 37) +-------------------------------- +68 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2300 to 2338) SpanInfo: {"start":2308,"length":29} + >primary: primaryA = "primary" + >:=> (line 68, col 8) to (line 68, col 37) +-------------------------------- +69 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2339 to 2382) SpanInfo: {"start":2347,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 69, col 8) to (line 69, col 43) +-------------------------------- +70 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~ => Pos: (2383 to 2387) SpanInfo: {"start":2347,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 69, col 8) to (line 69, col 43) +70 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2388 to 2435) SpanInfo: {"start":2290,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 67, col 4) to (line 70, col 52) +-------------------------------- +71 >} of getMultiRobots()) { + + ~ => Pos: (2436 to 2436) SpanInfo: {"start":2290,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 67, col 4) to (line 70, col 52) +71 >} of getMultiRobots()) { + + ~~~ => Pos: (2437 to 2439) SpanInfo: {"start":2247,"length":211} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) + >:=> (line 65, col 0) to (line 71, col 22) +71 >} of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2440 to 2456) SpanInfo: {"start":2441,"length":16} + >getMultiRobots() + >:=> (line 71, col 5) to (line 71, col 21) +71 >} of getMultiRobots()) { + + ~ => Pos: (2457 to 2457) SpanInfo: {"start":2247,"length":211} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of getMultiRobots()) + >:=> (line 65, col 0) to (line 71, col 22) +71 >} of getMultiRobots()) { + + ~~~ => Pos: (2458 to 2460) SpanInfo: {"start":2465,"length":18} + >console.log(nameA) + >:=> (line 72, col 4) to (line 72, col 22) +-------------------------------- +72 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2461 to 2484) SpanInfo: {"start":2465,"length":18} + >console.log(nameA) + >:=> (line 72, col 4) to (line 72, col 22) +-------------------------------- +73 >} + + ~~ => Pos: (2485 to 2486) SpanInfo: {"start":2465,"length":18} + >console.log(nameA) + >:=> (line 72, col 4) to (line 72, col 22) +-------------------------------- +74 >for (let { + + ~~~~~~~~ => Pos: (2487 to 2494) SpanInfo: {"start":2487,"length":357} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 74, col 0) to (line 81, col 79) +74 >for (let { + + ~~~ => Pos: (2495 to 2497) SpanInfo: {"start":2502,"length":22} + >name: nameA = "noName" + >:=> (line 75, col 4) to (line 75, col 26) +-------------------------------- +75 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2498 to 2525) SpanInfo: {"start":2502,"length":22} + >name: nameA = "noName" + >:=> (line 75, col 4) to (line 75, col 26) +-------------------------------- +76 > skills: { + + ~~~~~~~~~~~ => Pos: (2526 to 2536) SpanInfo: {"start":2530,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 76, col 4) to (line 79, col 52) +76 > skills: { + + ~~~ => Pos: (2537 to 2539) SpanInfo: {"start":2548,"length":29} + >primary: primaryA = "primary" + >:=> (line 77, col 8) to (line 77, col 37) +-------------------------------- +77 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2540 to 2578) SpanInfo: {"start":2548,"length":29} + >primary: primaryA = "primary" + >:=> (line 77, col 8) to (line 77, col 37) +-------------------------------- +78 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2579 to 2622) SpanInfo: {"start":2587,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 78, col 8) to (line 78, col 43) +-------------------------------- +79 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~ => Pos: (2623 to 2627) SpanInfo: {"start":2587,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 78, col 8) to (line 78, col 43) +79 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2628 to 2675) SpanInfo: {"start":2530,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 76, col 4) to (line 79, col 52) +-------------------------------- +80 >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~ => Pos: (2676 to 2676) SpanInfo: {"start":2530,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 76, col 4) to (line 79, col 52) +80 >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2677 to 2764) SpanInfo: {"start":2487,"length":357} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 74, col 0) to (line 81, col 79) +-------------------------------- +81 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2765 to 2843) SpanInfo: {"start":2487,"length":357} + >for (let { + > name: nameA = "noName", + > skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) + >:=> (line 74, col 0) to (line 81, col 79) +81 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~=> Pos: (2844 to 2846) SpanInfo: {"start":2851,"length":18} + >console.log(nameA) + >:=> (line 82, col 4) to (line 82, col 22) +-------------------------------- +82 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2847 to 2870) SpanInfo: {"start":2851,"length":18} + >console.log(nameA) + >:=> (line 82, col 4) to (line 82, col 22) +-------------------------------- +83 >} + ~ => Pos: (2871 to 2871) SpanInfo: {"start":2851,"length":18} + >console.log(nameA) + >:=> (line 82, col 4) to (line 82, col 22) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPattern.ts new file mode 100644 index 00000000000..90a726c9066 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPattern.ts @@ -0,0 +1,91 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////let robotB: Robot = [2, "trimmer", "trimming"]; +////let robots = [robotA, robotB]; +////function getRobots() { +//// return robots; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////let multiRobots = [multiRobotA, multiRobotB]; +////function getMultiRobots() { +//// return multiRobots; +////} +////for (let [, nameA] of robots) { +//// console.log(nameA); +////} +////for (let [, nameA] of getRobots()) { +//// console.log(nameA); +////} +////for (let [, nameA] of [robotA, robotB]) { +//// console.log(nameA); +////} +////for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { +//// console.log(primarySkillA); +////} +////for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +//// console.log(primarySkillA); +////} +////for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +//// console.log(primarySkillA); +////} +////for (let [numberB] of robots) { +//// console.log(numberB); +////} +////for (let [numberB] of getRobots()) { +//// console.log(numberB); +////} +////for (let [numberB] of [robotA, robotB]) { +//// console.log(numberB); +////} +////for (let [nameB] of multiRobots) { +//// console.log(nameB); +////} +////for (let [nameB] of getMultiRobots()) { +//// console.log(nameB); +////} +////for (let [nameB] of [multiRobotA, multiRobotB]) { +//// console.log(nameB); +////} +////for (let [numberA2, nameA2, skillA2] of robots) { +//// console.log(nameA2); +////} +////for (let [numberA2, nameA2, skillA2] of getRobots()) { +//// console.log(nameA2); +////} +////for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { +//// console.log(nameA2); +////} +////for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { +//// console.log(nameMA); +////} +////for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +//// console.log(nameMA); +////} +////for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +//// console.log(nameMA); +////} +////for (let [numberA3, ...robotAInfo] of robots) { +//// console.log(numberA3); +////} +////for (let [numberA3, ...robotAInfo] of getRobots()) { +//// console.log(numberA3); +////} +////for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { +//// console.log(numberA3); +////} +////for (let [...multiRobotAInfo] of multiRobots) { +//// console.log(multiRobotAInfo); +////} +////for (let [...multiRobotAInfo] of getMultiRobots()) { +//// console.log(multiRobotAInfo); +////} +////for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { +//// console.log(multiRobotAInfo); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..12689236080 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForOfArrayBindingPatternDefaultValues.ts @@ -0,0 +1,100 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////let robotB: Robot = [2, "trimmer", "trimming"]; +////let robots = [robotA, robotB]; +////function getRobots() { +//// return robots; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////let multiRobots = [multiRobotA, multiRobotB]; +////function getMultiRobots() { +//// return multiRobots; +////} +////for (let [, nameA = "noName"] of robots) { +//// console.log(nameA); +////} +////for (let [, nameA = "noName"] of getRobots()) { +//// console.log(nameA); +////} +////for (let [, nameA = "noName"] of [robotA, robotB]) { +//// console.log(nameA); +////} +////for (let [, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of multiRobots) { +//// console.log(primarySkillA); +////} +////for (let [, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of getMultiRobots()) { +//// console.log(primarySkillA); +////} +////for (let [, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +//// console.log(primarySkillA); +////} +////for (let [numberB = -1] of robots) { +//// console.log(numberB); +////} +////for (let [numberB = -1] of getRobots()) { +//// console.log(numberB); +////} +////for (let [numberB = -1] of [robotA, robotB]) { +//// console.log(numberB); +////} +////for (let [nameB = "noName"] of multiRobots) { +//// console.log(nameB); +////} +////for (let [nameB = "noName"] of getMultiRobots()) { +//// console.log(nameB); +////} +////for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { +//// console.log(nameB); +////} +////for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { +//// console.log(nameA2); +////} +////for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { +//// console.log(nameA2); +////} +////for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { +//// console.log(nameA2); +////} +////for (let [nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of multiRobots) { +//// console.log(nameMA); +////} +////for (let [nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of getMultiRobots()) { +//// console.log(nameMA); +////} +////for (let [nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +//// console.log(nameMA); +////} +////for (let [numberA3 = -1, ...robotAInfo] of robots) { +//// console.log(numberA3); +////} +////for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { +//// console.log(numberA3); +////} +////for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { +//// console.log(numberA3); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPattern.ts new file mode 100644 index 00000000000..8fc1b29bbc0 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPattern.ts @@ -0,0 +1,63 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +////let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +////function getRobots() { +//// return robots; +////} +////function getMultiRobots() { +//// return multiRobots; +////} +////for (let {name: nameA } of robots) { +//// console.log(nameA); +////} +////for (let {name: nameA } of getRobots()) { +//// console.log(nameA); +////} +////for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(primaryA); +////} +////for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +//// console.log(primaryA); +////} +////for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(primaryA); +////} +////for (let {name: nameA, skill: skillA } of robots) { +//// console.log(nameA); +////} +////for (let {name: nameA, skill: skillA } of getRobots()) { +//// console.log(nameA); +////} +////for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(nameA); +////} +////for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +//// console.log(nameA); +////} +////for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(nameA); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..ded0584ec43 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringForOfObjectBindingPatternDefaultValues.ts @@ -0,0 +1,85 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary?: string; +//// secondary?: string; +//// }; +////} +////let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +////let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +////function getRobots() { +//// return robots; +////} +////function getMultiRobots() { +//// return multiRobots; +////} +////for (let {name: nameA = "noName" } of robots) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName" } of getRobots()) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +//// { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { +//// console.log(primaryA); +////} +////for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +//// { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { +//// console.log(primaryA); +////} +////for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +//// { primary: "nosKill", secondary: "noSkill" } } of +//// [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(primaryA); +////} +////for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { +//// console.log(nameA); +////} +////for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for (let { +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of multiRobots) { +//// console.log(nameA); +////} +////for (let { +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of getMultiRobots()) { +//// console.log(nameA); +////} +////for (let { +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(nameA); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From 843bdbb4bd48f024a7d952f7cd00c35a0987e5b4 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 21 Dec 2015 13:01:21 -0800 Subject: [PATCH 084/164] Fix the breakpoints in For Of destructuring --- src/services/breakpoints.ts | 111 +++-- ...ructuringForOfArrayBindingPattern.baseline | 360 ++++------------ ...fArrayBindingPatternDefaultValues.baseline | 387 ++++-------------- ...ucturingForOfObjectBindingPattern.baseline | 212 +++------- ...ObjectBindingPatternDefaultValues.baseline | 301 +++----------- 5 files changed, 326 insertions(+), 1045 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 5b6647e4338..679988dbcf2 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -45,6 +45,10 @@ namespace ts.BreakpointResolver { return createTextSpanFromBounds(start, (endNode || startNode).getEnd()); } + function textSpanEndingAtNextToken(startNode: Node, previousTokenToFindNextEndToken: Node): TextSpan { + return textSpan(startNode, findNextToken(previousTokenToFindNextEndToken, previousTokenToFindNextEndToken.parent)); + } + function spanInNodeIfStartsOnSameLine(node: Node, otherwiseOnNode?: Node): TextSpan { if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line) { return spanInNode(node); @@ -67,29 +71,33 @@ namespace ts.BreakpointResolver { function spanInNode(node: Node): TextSpan { if (node) { if (isExpression(node)) { - if (node.parent.kind === SyntaxKind.DoStatement) { - // Set span as if on while keyword - return spanInPreviousNode(node); - } + switch (node.parent.kind) { + case SyntaxKind.DoStatement: + // Set span as if on while keyword + return spanInPreviousNode(node); - if (node.parent.kind === SyntaxKind.Decorator) { - // Set breakpoint on the decorator emit - return spanInNode(node.parent); - } + case SyntaxKind.Decorator: + // Set breakpoint on the decorator emit + return spanInNode(node.parent); - if (node.parent.kind === SyntaxKind.ForStatement) { - // For now lets set the span on this expression, fix it later - return textSpan(node); - } + case SyntaxKind.ForStatement: + case SyntaxKind.ForOfStatement: + // For now lets set the span on this expression, fix it later + return textSpan(node); - if (node.parent.kind === SyntaxKind.BinaryExpression && (node.parent).operatorToken.kind === SyntaxKind.CommaToken) { - // if this is comma expression, the breakpoint is possible in this expression - return textSpan(node); - } + case SyntaxKind.BinaryExpression: + if ((node.parent).operatorToken.kind === SyntaxKind.CommaToken) { + // if this is comma expression, the breakpoint is possible in this expression + return textSpan(node); + } + break; - if (node.parent.kind === SyntaxKind.ArrowFunction && (node.parent).body === node) { - // If this is body of arrow function, it is allowed to have the breakpoint - return textSpan(node); + case SyntaxKind.ArrowFunction: + if ((node.parent).body === node) { + // If this is body of arrow function, it is allowed to have the breakpoint + return textSpan(node); + } + break; } } @@ -137,7 +145,7 @@ namespace ts.BreakpointResolver { case SyntaxKind.WhileStatement: // Span on while(...) - return textSpan(node, findNextToken((node).expression, node)); + return textSpanEndingAtNextToken(node, (node).expression); case SyntaxKind.DoStatement: // span in statement of the do statement @@ -149,7 +157,7 @@ namespace ts.BreakpointResolver { case SyntaxKind.IfStatement: // set on if(..) span - return textSpan(node, findNextToken((node).expression, node)); + return textSpanEndingAtNextToken(node, (node).expression); case SyntaxKind.LabeledStatement: // span in statement @@ -164,13 +172,16 @@ namespace ts.BreakpointResolver { return spanInForStatement(node); case SyntaxKind.ForInStatement: + // span of for (a in ...) + return textSpanEndingAtNextToken(node, (node).expression); + case SyntaxKind.ForOfStatement: - // span on for (a in ...) - return textSpan(node, findNextToken((node).expression, node)); + // span in initializer + return spanInInitializerOfForLike(node); case SyntaxKind.SwitchStatement: // span on switch(...) - return textSpan(node, findNextToken((node).expression, node)); + return textSpanEndingAtNextToken(node, (node).expression); case SyntaxKind.CaseClause: case SyntaxKind.DefaultClause: @@ -271,6 +282,9 @@ namespace ts.BreakpointResolver { case SyntaxKind.FinallyKeyword: return spanInNextNode(node); + case SyntaxKind.OfKeyword: + return spanInOfKeyword(node); + default: // If this is name of property assignment, set breakpoint in the initializer if (node.parent.kind === SyntaxKind.PropertyAssignment && (node.parent).name === node) { @@ -317,18 +331,20 @@ namespace ts.BreakpointResolver { function spanInVariableDeclaration(variableDeclaration: VariableDeclaration): TextSpan { // If declaration of for in statement, just set the span in parent - if (variableDeclaration.parent.parent.kind === SyntaxKind.ForInStatement || - variableDeclaration.parent.parent.kind === SyntaxKind.ForOfStatement) { + if (variableDeclaration.parent.parent.kind === SyntaxKind.ForInStatement) { return spanInNode(variableDeclaration.parent.parent); } - + // If this is a destructuring pattern set breakpoint in binding pattern if (isBindingPattern(variableDeclaration.name)) { return spanInBindingPattern(variableDeclaration.name); } // Breakpoint is possible in variableDeclaration only if there is initialization - if (variableDeclaration.initializer || (variableDeclaration.flags & NodeFlags.Export)) { + // or its declaration from 'for of' + if (variableDeclaration.initializer || + (variableDeclaration.flags & NodeFlags.Export) || + variableDeclaration.parent.parent.kind === SyntaxKind.ForOfStatement) { return textSpanFromVariableDeclaration(variableDeclaration); } @@ -410,11 +426,11 @@ namespace ts.BreakpointResolver { case SyntaxKind.WhileStatement: case SyntaxKind.IfStatement: case SyntaxKind.ForInStatement: - case SyntaxKind.ForOfStatement: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); // Set span on previous token if it starts on same line otherwise on the first statement of the block case SyntaxKind.ForStatement: + case SyntaxKind.ForOfStatement: return spanInNodeIfStartsOnSameLine(findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } @@ -422,17 +438,23 @@ namespace ts.BreakpointResolver { return spanInNode(block.statements[0]); } + function spanInInitializerOfForLike(forLikeStaement: ForStatement | ForOfStatement | ForInStatement): TextSpan { + if (forLikeStaement.initializer.kind === SyntaxKind.VariableDeclarationList) { + // declaration list, set breakpoint in first declaration + let variableDeclarationList = forLikeStaement.initializer; + if (variableDeclarationList.declarations.length > 0) { + return spanInNode(variableDeclarationList.declarations[0]); + } + } + else { + // Expression - set breakpoint in it + return spanInNode(forLikeStaement.initializer); + } + } + function spanInForStatement(forStatement: ForStatement): TextSpan { if (forStatement.initializer) { - if (forStatement.initializer.kind === SyntaxKind.VariableDeclarationList) { - let variableDeclarationList = forStatement.initializer; - if (variableDeclarationList.declarations.length > 0) { - return spanInNode(variableDeclarationList.declarations[0]); - } - } - else { - return spanInNode(forStatement.initializer); - } + return spanInInitializerOfForLike(forStatement); } if (forStatement.condition) { @@ -560,6 +582,7 @@ namespace ts.BreakpointResolver { case SyntaxKind.WhileStatement: case SyntaxKind.DoStatement: case SyntaxKind.ForStatement: + case SyntaxKind.ForOfStatement: return spanInPreviousNode(node); // Default to parent node @@ -590,7 +613,17 @@ namespace ts.BreakpointResolver { function spanInWhileKeyword(node: Node): TextSpan { if (node.parent.kind === SyntaxKind.DoStatement) { // Set span on while expression - return textSpan(node, findNextToken((node.parent).expression, node.parent)); + return textSpanEndingAtNextToken(node, (node.parent).expression); + } + + // Default to parent node + return spanInNode(node.parent); + } + + function spanInOfKeyword(node: Node): TextSpan { + if (node.parent.kind === SyntaxKind.ForOfStatement) { + // set using next token + return spanInNextNode(node); } // Default to parent node diff --git a/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline index ea915b80e6a..2d0cbda5d8d 100644 --- a/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPattern.baseline @@ -93,19 +93,14 @@ -------------------------------- 18 >for (let [, nameA] of robots) { - ~~~~~~~~ => Pos: (547 to 554) SpanInfo: {"start":547,"length":29} - >for (let [, nameA] of robots) - >:=> (line 18, col 0) to (line 18, col 29) -18 >for (let [, nameA] of robots) { - - ~~~~~~~~~~ => Pos: (555 to 564) SpanInfo: {"start":559,"length":5} + ~~~~~~~~~~~~~~~~~~ => Pos: (547 to 564) SpanInfo: {"start":559,"length":5} >nameA >:=> (line 18, col 12) to (line 18, col 17) 18 >for (let [, nameA] of robots) { - ~~~~~~~~~~~~~~ => Pos: (565 to 578) SpanInfo: {"start":547,"length":29} - >for (let [, nameA] of robots) - >:=> (line 18, col 0) to (line 18, col 29) + ~~~~~~~~~~~~~~ => Pos: (565 to 578) SpanInfo: {"start":569,"length":6} + >robots + >:=> (line 18, col 22) to (line 18, col 28) -------------------------------- 19 > console.log(nameA); @@ -121,29 +116,14 @@ -------------------------------- 21 >for (let [, nameA] of getRobots()) { - ~~~~~~~~ => Pos: (605 to 612) SpanInfo: {"start":605,"length":34} - >for (let [, nameA] of getRobots()) - >:=> (line 21, col 0) to (line 21, col 34) -21 >for (let [, nameA] of getRobots()) { - - ~~~~~~~~~~ => Pos: (613 to 622) SpanInfo: {"start":617,"length":5} + ~~~~~~~~~~~~~~~~~~ => Pos: (605 to 622) SpanInfo: {"start":617,"length":5} >nameA >:=> (line 21, col 12) to (line 21, col 17) 21 >for (let [, nameA] of getRobots()) { - ~~~ => Pos: (623 to 625) SpanInfo: {"start":605,"length":34} - >for (let [, nameA] of getRobots()) - >:=> (line 21, col 0) to (line 21, col 34) -21 >for (let [, nameA] of getRobots()) { - - ~~~~~~~~~~~~ => Pos: (626 to 637) SpanInfo: {"start":627,"length":11} + ~~~~~~~~~~~~~~~~~~~ => Pos: (623 to 641) SpanInfo: {"start":627,"length":11} >getRobots() >:=> (line 21, col 22) to (line 21, col 33) -21 >for (let [, nameA] of getRobots()) { - - ~~~~ => Pos: (638 to 641) SpanInfo: {"start":605,"length":34} - >for (let [, nameA] of getRobots()) - >:=> (line 21, col 0) to (line 21, col 34) -------------------------------- 22 > console.log(nameA); @@ -159,19 +139,14 @@ -------------------------------- 24 >for (let [, nameA] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (668 to 675) SpanInfo: {"start":668,"length":39} - >for (let [, nameA] of [robotA, robotB]) - >:=> (line 24, col 0) to (line 24, col 39) -24 >for (let [, nameA] of [robotA, robotB]) { - - ~~~~~~~~~~ => Pos: (676 to 685) SpanInfo: {"start":680,"length":5} + ~~~~~~~~~~~~~~~~~~ => Pos: (668 to 685) SpanInfo: {"start":680,"length":5} >nameA >:=> (line 24, col 12) to (line 24, col 17) 24 >for (let [, nameA] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (686 to 709) SpanInfo: {"start":668,"length":39} - >for (let [, nameA] of [robotA, robotB]) - >:=> (line 24, col 0) to (line 24, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (686 to 709) SpanInfo: {"start":690,"length":16} + >[robotA, robotB] + >:=> (line 24, col 22) to (line 24, col 38) -------------------------------- 25 > console.log(nameA); @@ -187,12 +162,7 @@ -------------------------------- 27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { - ~~~~~~~~ => Pos: (736 to 743) SpanInfo: {"start":736,"length":61} - >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) - >:=> (line 27, col 0) to (line 27, col 61) -27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { - - ~~~ => Pos: (744 to 746) SpanInfo: {"start":748,"length":32} + ~~~~~~~~~~~ => Pos: (736 to 746) SpanInfo: {"start":748,"length":32} >[primarySkillA, secondarySkillA] >:=> (line 27, col 12) to (line 27, col 44) 27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { @@ -212,9 +182,9 @@ >:=> (line 27, col 12) to (line 27, col 44) 27 >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (781 to 799) SpanInfo: {"start":736,"length":61} - >for (let [, [primarySkillA, secondarySkillA]] of multiRobots) - >:=> (line 27, col 0) to (line 27, col 61) + ~~~~~~~~~~~~~~~~~~~=> Pos: (781 to 799) SpanInfo: {"start":785,"length":11} + >multiRobots + >:=> (line 27, col 49) to (line 27, col 60) -------------------------------- 28 > console.log(primarySkillA); @@ -230,12 +200,7 @@ -------------------------------- 30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - ~~~~~~~~ => Pos: (834 to 841) SpanInfo: {"start":834,"length":66} - >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) - >:=> (line 30, col 0) to (line 30, col 66) -30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - - ~~~ => Pos: (842 to 844) SpanInfo: {"start":846,"length":32} + ~~~~~~~~~~~ => Pos: (834 to 844) SpanInfo: {"start":846,"length":32} >[primarySkillA, secondarySkillA] >:=> (line 30, col 12) to (line 30, col 44) 30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { @@ -255,19 +220,9 @@ >:=> (line 30, col 12) to (line 30, col 44) 30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - ~~~=> Pos: (879 to 881) SpanInfo: {"start":834,"length":66} - >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) - >:=> (line 30, col 0) to (line 30, col 66) -30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (882 to 898) SpanInfo: {"start":883,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (879 to 902) SpanInfo: {"start":883,"length":16} >getMultiRobots() >:=> (line 30, col 49) to (line 30, col 65) -30 >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - - ~~~~=> Pos: (899 to 902) SpanInfo: {"start":834,"length":66} - >for (let [, [primarySkillA, secondarySkillA]] of getMultiRobots()) - >:=> (line 30, col 0) to (line 30, col 66) -------------------------------- 31 > console.log(primarySkillA); @@ -283,12 +238,7 @@ -------------------------------- 33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { - ~~~~~~~~ => Pos: (937 to 944) SpanInfo: {"start":937,"length":76} - >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) - >:=> (line 33, col 0) to (line 33, col 76) -33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { - - ~~~ => Pos: (945 to 947) SpanInfo: {"start":949,"length":32} + ~~~~~~~~~~~ => Pos: (937 to 947) SpanInfo: {"start":949,"length":32} >[primarySkillA, secondarySkillA] >:=> (line 33, col 12) to (line 33, col 44) 33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { @@ -308,9 +258,9 @@ >:=> (line 33, col 12) to (line 33, col 44) 33 >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (982 to 1015) SpanInfo: {"start":937,"length":76} - >for (let [, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) - >:=> (line 33, col 0) to (line 33, col 76) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (982 to 1015) SpanInfo: {"start":986,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 33, col 49) to (line 33, col 75) -------------------------------- 34 > console.log(primarySkillA); @@ -326,19 +276,14 @@ -------------------------------- 36 >for (let [numberB] of robots) { - ~~~~~~~~ => Pos: (1050 to 1057) SpanInfo: {"start":1050,"length":29} - >for (let [numberB] of robots) - >:=> (line 36, col 0) to (line 36, col 29) -36 >for (let [numberB] of robots) { - - ~~~~~~~~~~ => Pos: (1058 to 1067) SpanInfo: {"start":1060,"length":7} + ~~~~~~~~~~~~~~~~~~ => Pos: (1050 to 1067) SpanInfo: {"start":1060,"length":7} >numberB >:=> (line 36, col 10) to (line 36, col 17) 36 >for (let [numberB] of robots) { - ~~~~~~~~~~~~~~ => Pos: (1068 to 1081) SpanInfo: {"start":1050,"length":29} - >for (let [numberB] of robots) - >:=> (line 36, col 0) to (line 36, col 29) + ~~~~~~~~~~~~~~ => Pos: (1068 to 1081) SpanInfo: {"start":1072,"length":6} + >robots + >:=> (line 36, col 22) to (line 36, col 28) -------------------------------- 37 > console.log(numberB); @@ -354,29 +299,14 @@ -------------------------------- 39 >for (let [numberB] of getRobots()) { - ~~~~~~~~ => Pos: (1110 to 1117) SpanInfo: {"start":1110,"length":34} - >for (let [numberB] of getRobots()) - >:=> (line 39, col 0) to (line 39, col 34) -39 >for (let [numberB] of getRobots()) { - - ~~~~~~~~~~ => Pos: (1118 to 1127) SpanInfo: {"start":1120,"length":7} + ~~~~~~~~~~~~~~~~~~ => Pos: (1110 to 1127) SpanInfo: {"start":1120,"length":7} >numberB >:=> (line 39, col 10) to (line 39, col 17) 39 >for (let [numberB] of getRobots()) { - ~~~ => Pos: (1128 to 1130) SpanInfo: {"start":1110,"length":34} - >for (let [numberB] of getRobots()) - >:=> (line 39, col 0) to (line 39, col 34) -39 >for (let [numberB] of getRobots()) { - - ~~~~~~~~~~~~ => Pos: (1131 to 1142) SpanInfo: {"start":1132,"length":11} + ~~~~~~~~~~~~~~~~~~~ => Pos: (1128 to 1146) SpanInfo: {"start":1132,"length":11} >getRobots() >:=> (line 39, col 22) to (line 39, col 33) -39 >for (let [numberB] of getRobots()) { - - ~~~~ => Pos: (1143 to 1146) SpanInfo: {"start":1110,"length":34} - >for (let [numberB] of getRobots()) - >:=> (line 39, col 0) to (line 39, col 34) -------------------------------- 40 > console.log(numberB); @@ -392,19 +322,14 @@ -------------------------------- 42 >for (let [numberB] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (1175 to 1182) SpanInfo: {"start":1175,"length":39} - >for (let [numberB] of [robotA, robotB]) - >:=> (line 42, col 0) to (line 42, col 39) -42 >for (let [numberB] of [robotA, robotB]) { - - ~~~~~~~~~~ => Pos: (1183 to 1192) SpanInfo: {"start":1185,"length":7} + ~~~~~~~~~~~~~~~~~~ => Pos: (1175 to 1192) SpanInfo: {"start":1185,"length":7} >numberB >:=> (line 42, col 10) to (line 42, col 17) 42 >for (let [numberB] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1193 to 1216) SpanInfo: {"start":1175,"length":39} - >for (let [numberB] of [robotA, robotB]) - >:=> (line 42, col 0) to (line 42, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1193 to 1216) SpanInfo: {"start":1197,"length":16} + >[robotA, robotB] + >:=> (line 42, col 22) to (line 42, col 38) -------------------------------- 43 > console.log(numberB); @@ -420,19 +345,14 @@ -------------------------------- 45 >for (let [nameB] of multiRobots) { - ~~~~~~~~ => Pos: (1245 to 1252) SpanInfo: {"start":1245,"length":32} - >for (let [nameB] of multiRobots) - >:=> (line 45, col 0) to (line 45, col 32) -45 >for (let [nameB] of multiRobots) { - - ~~~~~~~~ => Pos: (1253 to 1260) SpanInfo: {"start":1255,"length":5} + ~~~~~~~~~~~~~~~~ => Pos: (1245 to 1260) SpanInfo: {"start":1255,"length":5} >nameB >:=> (line 45, col 10) to (line 45, col 15) 45 >for (let [nameB] of multiRobots) { - ~~~~~~~~~~~~~~~~~~~ => Pos: (1261 to 1279) SpanInfo: {"start":1245,"length":32} - >for (let [nameB] of multiRobots) - >:=> (line 45, col 0) to (line 45, col 32) + ~~~~~~~~~~~~~~~~~~~ => Pos: (1261 to 1279) SpanInfo: {"start":1265,"length":11} + >multiRobots + >:=> (line 45, col 20) to (line 45, col 31) -------------------------------- 46 > console.log(nameB); @@ -448,29 +368,14 @@ -------------------------------- 48 >for (let [nameB] of getMultiRobots()) { - ~~~~~~~~ => Pos: (1306 to 1313) SpanInfo: {"start":1306,"length":37} - >for (let [nameB] of getMultiRobots()) - >:=> (line 48, col 0) to (line 48, col 37) -48 >for (let [nameB] of getMultiRobots()) { - - ~~~~~~~~ => Pos: (1314 to 1321) SpanInfo: {"start":1316,"length":5} + ~~~~~~~~~~~~~~~~ => Pos: (1306 to 1321) SpanInfo: {"start":1316,"length":5} >nameB >:=> (line 48, col 10) to (line 48, col 15) 48 >for (let [nameB] of getMultiRobots()) { - ~~~ => Pos: (1322 to 1324) SpanInfo: {"start":1306,"length":37} - >for (let [nameB] of getMultiRobots()) - >:=> (line 48, col 0) to (line 48, col 37) -48 >for (let [nameB] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~ => Pos: (1325 to 1341) SpanInfo: {"start":1326,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1322 to 1345) SpanInfo: {"start":1326,"length":16} >getMultiRobots() >:=> (line 48, col 20) to (line 48, col 36) -48 >for (let [nameB] of getMultiRobots()) { - - ~~~~ => Pos: (1342 to 1345) SpanInfo: {"start":1306,"length":37} - >for (let [nameB] of getMultiRobots()) - >:=> (line 48, col 0) to (line 48, col 37) -------------------------------- 49 > console.log(nameB); @@ -486,19 +391,14 @@ -------------------------------- 51 >for (let [nameB] of [multiRobotA, multiRobotB]) { - ~~~~~~~~ => Pos: (1372 to 1379) SpanInfo: {"start":1372,"length":47} - >for (let [nameB] of [multiRobotA, multiRobotB]) - >:=> (line 51, col 0) to (line 51, col 47) -51 >for (let [nameB] of [multiRobotA, multiRobotB]) { - - ~~~~~~~~ => Pos: (1380 to 1387) SpanInfo: {"start":1382,"length":5} + ~~~~~~~~~~~~~~~~ => Pos: (1372 to 1387) SpanInfo: {"start":1382,"length":5} >nameB >:=> (line 51, col 10) to (line 51, col 15) 51 >for (let [nameB] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1388 to 1421) SpanInfo: {"start":1372,"length":47} - >for (let [nameB] of [multiRobotA, multiRobotB]) - >:=> (line 51, col 0) to (line 51, col 47) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1388 to 1421) SpanInfo: {"start":1392,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 51, col 20) to (line 51, col 46) -------------------------------- 52 > console.log(nameB); @@ -514,12 +414,7 @@ -------------------------------- 54 >for (let [numberA2, nameA2, skillA2] of robots) { - ~~~~~~~~ => Pos: (1448 to 1455) SpanInfo: {"start":1448,"length":47} - >for (let [numberA2, nameA2, skillA2] of robots) - >:=> (line 54, col 0) to (line 54, col 47) -54 >for (let [numberA2, nameA2, skillA2] of robots) { - - ~~~~~~~~~~~ => Pos: (1456 to 1466) SpanInfo: {"start":1458,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (1448 to 1466) SpanInfo: {"start":1458,"length":8} >numberA2 >:=> (line 54, col 10) to (line 54, col 18) 54 >for (let [numberA2, nameA2, skillA2] of robots) { @@ -534,9 +429,9 @@ >:=> (line 54, col 28) to (line 54, col 35) 54 >for (let [numberA2, nameA2, skillA2] of robots) { - ~~~~~~~~~~~~~~=> Pos: (1484 to 1497) SpanInfo: {"start":1448,"length":47} - >for (let [numberA2, nameA2, skillA2] of robots) - >:=> (line 54, col 0) to (line 54, col 47) + ~~~~~~~~~~~~~~=> Pos: (1484 to 1497) SpanInfo: {"start":1488,"length":6} + >robots + >:=> (line 54, col 40) to (line 54, col 46) -------------------------------- 55 > console.log(nameA2); @@ -552,12 +447,7 @@ -------------------------------- 57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { - ~~~~~~~~ => Pos: (1525 to 1532) SpanInfo: {"start":1525,"length":52} - >for (let [numberA2, nameA2, skillA2] of getRobots()) - >:=> (line 57, col 0) to (line 57, col 52) -57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { - - ~~~~~~~~~~~ => Pos: (1533 to 1543) SpanInfo: {"start":1535,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (1525 to 1543) SpanInfo: {"start":1535,"length":8} >numberA2 >:=> (line 57, col 10) to (line 57, col 18) 57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { @@ -572,19 +462,9 @@ >:=> (line 57, col 28) to (line 57, col 35) 57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { - ~~~ => Pos: (1561 to 1563) SpanInfo: {"start":1525,"length":52} - >for (let [numberA2, nameA2, skillA2] of getRobots()) - >:=> (line 57, col 0) to (line 57, col 52) -57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (1564 to 1575) SpanInfo: {"start":1565,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (1561 to 1579) SpanInfo: {"start":1565,"length":11} >getRobots() >:=> (line 57, col 40) to (line 57, col 51) -57 >for (let [numberA2, nameA2, skillA2] of getRobots()) { - - ~~~~=> Pos: (1576 to 1579) SpanInfo: {"start":1525,"length":52} - >for (let [numberA2, nameA2, skillA2] of getRobots()) - >:=> (line 57, col 0) to (line 57, col 52) -------------------------------- 58 > console.log(nameA2); @@ -600,12 +480,7 @@ -------------------------------- 60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (1607 to 1614) SpanInfo: {"start":1607,"length":57} - >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) - >:=> (line 60, col 0) to (line 60, col 57) -60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { - - ~~~~~~~~~~~ => Pos: (1615 to 1625) SpanInfo: {"start":1617,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (1607 to 1625) SpanInfo: {"start":1617,"length":8} >numberA2 >:=> (line 60, col 10) to (line 60, col 18) 60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { @@ -620,9 +495,9 @@ >:=> (line 60, col 28) to (line 60, col 35) 60 >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1643 to 1666) SpanInfo: {"start":1607,"length":57} - >for (let [numberA2, nameA2, skillA2] of [robotA, robotB]) - >:=> (line 60, col 0) to (line 60, col 57) + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1643 to 1666) SpanInfo: {"start":1647,"length":16} + >[robotA, robotB] + >:=> (line 60, col 40) to (line 60, col 56) -------------------------------- 61 > console.log(nameA2); @@ -638,12 +513,7 @@ -------------------------------- 63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { - ~~~~~~~~ => Pos: (1694 to 1701) SpanInfo: {"start":1694,"length":67} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) - >:=> (line 63, col 0) to (line 63, col 67) -63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { - - ~~~~~~~~~ => Pos: (1702 to 1710) SpanInfo: {"start":1704,"length":6} + ~~~~~~~~~~~~~~~~~ => Pos: (1694 to 1710) SpanInfo: {"start":1704,"length":6} >nameMA >:=> (line 63, col 10) to (line 63, col 16) 63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { @@ -663,9 +533,9 @@ >:=> (line 63, col 18) to (line 63, col 50) 63 >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (1745 to 1763) SpanInfo: {"start":1694,"length":67} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of multiRobots) - >:=> (line 63, col 0) to (line 63, col 67) + ~~~~~~~~~~~~~~~~~~~=> Pos: (1745 to 1763) SpanInfo: {"start":1749,"length":11} + >multiRobots + >:=> (line 63, col 55) to (line 63, col 66) -------------------------------- 64 > console.log(nameMA); @@ -681,12 +551,7 @@ -------------------------------- 66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - ~~~~~~~~ => Pos: (1791 to 1798) SpanInfo: {"start":1791,"length":72} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) - >:=> (line 66, col 0) to (line 66, col 72) -66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - - ~~~~~~~~~ => Pos: (1799 to 1807) SpanInfo: {"start":1801,"length":6} + ~~~~~~~~~~~~~~~~~ => Pos: (1791 to 1807) SpanInfo: {"start":1801,"length":6} >nameMA >:=> (line 66, col 10) to (line 66, col 16) 66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { @@ -706,19 +571,9 @@ >:=> (line 66, col 18) to (line 66, col 50) 66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - ~~~=> Pos: (1842 to 1844) SpanInfo: {"start":1791,"length":72} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) - >:=> (line 66, col 0) to (line 66, col 72) -66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (1845 to 1861) SpanInfo: {"start":1846,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1842 to 1865) SpanInfo: {"start":1846,"length":16} >getMultiRobots() >:=> (line 66, col 55) to (line 66, col 71) -66 >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { - - ~~~~=> Pos: (1862 to 1865) SpanInfo: {"start":1791,"length":72} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) - >:=> (line 66, col 0) to (line 66, col 72) -------------------------------- 67 > console.log(nameMA); @@ -734,12 +589,7 @@ -------------------------------- 69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { - ~~~~~~~~ => Pos: (1893 to 1900) SpanInfo: {"start":1893,"length":82} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) - >:=> (line 69, col 0) to (line 69, col 82) -69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { - - ~~~~~~~~~ => Pos: (1901 to 1909) SpanInfo: {"start":1903,"length":6} + ~~~~~~~~~~~~~~~~~ => Pos: (1893 to 1909) SpanInfo: {"start":1903,"length":6} >nameMA >:=> (line 69, col 10) to (line 69, col 16) 69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { @@ -759,9 +609,9 @@ >:=> (line 69, col 18) to (line 69, col 50) 69 >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1944 to 1977) SpanInfo: {"start":1893,"length":82} - >for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) - >:=> (line 69, col 0) to (line 69, col 82) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1944 to 1977) SpanInfo: {"start":1948,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 69, col 55) to (line 69, col 81) -------------------------------- 70 > console.log(nameMA); @@ -777,12 +627,7 @@ -------------------------------- 72 >for (let [numberA3, ...robotAInfo] of robots) { - ~~~~~~~~ => Pos: (2005 to 2012) SpanInfo: {"start":2005,"length":45} - >for (let [numberA3, ...robotAInfo] of robots) - >:=> (line 72, col 0) to (line 72, col 45) -72 >for (let [numberA3, ...robotAInfo] of robots) { - - ~~~~~~~~~~~ => Pos: (2013 to 2023) SpanInfo: {"start":2015,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (2005 to 2023) SpanInfo: {"start":2015,"length":8} >numberA3 >:=> (line 72, col 10) to (line 72, col 18) 72 >for (let [numberA3, ...robotAInfo] of robots) { @@ -792,9 +637,9 @@ >:=> (line 72, col 20) to (line 72, col 33) 72 >for (let [numberA3, ...robotAInfo] of robots) { - ~~~~~~~~~~~~~~=> Pos: (2039 to 2052) SpanInfo: {"start":2005,"length":45} - >for (let [numberA3, ...robotAInfo] of robots) - >:=> (line 72, col 0) to (line 72, col 45) + ~~~~~~~~~~~~~~=> Pos: (2039 to 2052) SpanInfo: {"start":2043,"length":6} + >robots + >:=> (line 72, col 38) to (line 72, col 44) -------------------------------- 73 > console.log(numberA3); @@ -810,12 +655,7 @@ -------------------------------- 75 >for (let [numberA3, ...robotAInfo] of getRobots()) { - ~~~~~~~~ => Pos: (2082 to 2089) SpanInfo: {"start":2082,"length":50} - >for (let [numberA3, ...robotAInfo] of getRobots()) - >:=> (line 75, col 0) to (line 75, col 50) -75 >for (let [numberA3, ...robotAInfo] of getRobots()) { - - ~~~~~~~~~~~ => Pos: (2090 to 2100) SpanInfo: {"start":2092,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (2082 to 2100) SpanInfo: {"start":2092,"length":8} >numberA3 >:=> (line 75, col 10) to (line 75, col 18) 75 >for (let [numberA3, ...robotAInfo] of getRobots()) { @@ -825,19 +665,9 @@ >:=> (line 75, col 20) to (line 75, col 33) 75 >for (let [numberA3, ...robotAInfo] of getRobots()) { - ~~~ => Pos: (2116 to 2118) SpanInfo: {"start":2082,"length":50} - >for (let [numberA3, ...robotAInfo] of getRobots()) - >:=> (line 75, col 0) to (line 75, col 50) -75 >for (let [numberA3, ...robotAInfo] of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (2119 to 2130) SpanInfo: {"start":2120,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (2116 to 2134) SpanInfo: {"start":2120,"length":11} >getRobots() >:=> (line 75, col 38) to (line 75, col 49) -75 >for (let [numberA3, ...robotAInfo] of getRobots()) { - - ~~~~=> Pos: (2131 to 2134) SpanInfo: {"start":2082,"length":50} - >for (let [numberA3, ...robotAInfo] of getRobots()) - >:=> (line 75, col 0) to (line 75, col 50) -------------------------------- 76 > console.log(numberA3); @@ -853,12 +683,7 @@ -------------------------------- 78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (2164 to 2171) SpanInfo: {"start":2164,"length":55} - >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) - >:=> (line 78, col 0) to (line 78, col 55) -78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { - - ~~~~~~~~~~~ => Pos: (2172 to 2182) SpanInfo: {"start":2174,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (2164 to 2182) SpanInfo: {"start":2174,"length":8} >numberA3 >:=> (line 78, col 10) to (line 78, col 18) 78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { @@ -868,9 +693,9 @@ >:=> (line 78, col 20) to (line 78, col 33) 78 >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2198 to 2221) SpanInfo: {"start":2164,"length":55} - >for (let [numberA3, ...robotAInfo] of [robotA, robotB]) - >:=> (line 78, col 0) to (line 78, col 55) + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2198 to 2221) SpanInfo: {"start":2202,"length":16} + >[robotA, robotB] + >:=> (line 78, col 38) to (line 78, col 54) -------------------------------- 79 > console.log(numberA3); @@ -886,19 +711,14 @@ -------------------------------- 81 >for (let [...multiRobotAInfo] of multiRobots) { - ~~~~~~~~ => Pos: (2251 to 2258) SpanInfo: {"start":2251,"length":45} - >for (let [...multiRobotAInfo] of multiRobots) - >:=> (line 81, col 0) to (line 81, col 45) -81 >for (let [...multiRobotAInfo] of multiRobots) { - - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2259 to 2279) SpanInfo: {"start":2261,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2251 to 2279) SpanInfo: {"start":2261,"length":18} >...multiRobotAInfo >:=> (line 81, col 10) to (line 81, col 28) 81 >for (let [...multiRobotAInfo] of multiRobots) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (2280 to 2298) SpanInfo: {"start":2251,"length":45} - >for (let [...multiRobotAInfo] of multiRobots) - >:=> (line 81, col 0) to (line 81, col 45) + ~~~~~~~~~~~~~~~~~~~=> Pos: (2280 to 2298) SpanInfo: {"start":2284,"length":11} + >multiRobots + >:=> (line 81, col 33) to (line 81, col 44) -------------------------------- 82 > console.log(multiRobotAInfo); @@ -914,29 +734,14 @@ -------------------------------- 84 >for (let [...multiRobotAInfo] of getMultiRobots()) { - ~~~~~~~~ => Pos: (2335 to 2342) SpanInfo: {"start":2335,"length":50} - >for (let [...multiRobotAInfo] of getMultiRobots()) - >:=> (line 84, col 0) to (line 84, col 50) -84 >for (let [...multiRobotAInfo] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2343 to 2363) SpanInfo: {"start":2345,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2335 to 2363) SpanInfo: {"start":2345,"length":18} >...multiRobotAInfo >:=> (line 84, col 10) to (line 84, col 28) 84 >for (let [...multiRobotAInfo] of getMultiRobots()) { - ~~~ => Pos: (2364 to 2366) SpanInfo: {"start":2335,"length":50} - >for (let [...multiRobotAInfo] of getMultiRobots()) - >:=> (line 84, col 0) to (line 84, col 50) -84 >for (let [...multiRobotAInfo] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (2367 to 2383) SpanInfo: {"start":2368,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2364 to 2387) SpanInfo: {"start":2368,"length":16} >getMultiRobots() >:=> (line 84, col 33) to (line 84, col 49) -84 >for (let [...multiRobotAInfo] of getMultiRobots()) { - - ~~~~=> Pos: (2384 to 2387) SpanInfo: {"start":2335,"length":50} - >for (let [...multiRobotAInfo] of getMultiRobots()) - >:=> (line 84, col 0) to (line 84, col 50) -------------------------------- 85 > console.log(multiRobotAInfo); @@ -952,19 +757,14 @@ -------------------------------- 87 >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { - ~~~~~~~~ => Pos: (2424 to 2431) SpanInfo: {"start":2424,"length":60} - >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) - >:=> (line 87, col 0) to (line 87, col 60) -87 >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { - - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2432 to 2452) SpanInfo: {"start":2434,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2424 to 2452) SpanInfo: {"start":2434,"length":18} >...multiRobotAInfo >:=> (line 87, col 10) to (line 87, col 28) 87 >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2453 to 2486) SpanInfo: {"start":2424,"length":60} - >for (let [...multiRobotAInfo] of [multiRobotA, multiRobotB]) - >:=> (line 87, col 0) to (line 87, col 60) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2453 to 2486) SpanInfo: {"start":2457,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 87, col 33) to (line 87, col 59) -------------------------------- 88 > console.log(multiRobotAInfo); diff --git a/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline index a30ea914bf3..5dfc730003f 100644 --- a/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForOfArrayBindingPatternDefaultValues.baseline @@ -93,19 +93,14 @@ -------------------------------- 18 >for (let [, nameA = "noName"] of robots) { - ~~~~~~~~ => Pos: (547 to 554) SpanInfo: {"start":547,"length":40} - >for (let [, nameA = "noName"] of robots) - >:=> (line 18, col 0) to (line 18, col 40) -18 >for (let [, nameA = "noName"] of robots) { - - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (555 to 575) SpanInfo: {"start":559,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (547 to 575) SpanInfo: {"start":559,"length":16} >nameA = "noName" >:=> (line 18, col 12) to (line 18, col 28) 18 >for (let [, nameA = "noName"] of robots) { - ~~~~~~~~~~~~~~ => Pos: (576 to 589) SpanInfo: {"start":547,"length":40} - >for (let [, nameA = "noName"] of robots) - >:=> (line 18, col 0) to (line 18, col 40) + ~~~~~~~~~~~~~~ => Pos: (576 to 589) SpanInfo: {"start":580,"length":6} + >robots + >:=> (line 18, col 33) to (line 18, col 39) -------------------------------- 19 > console.log(nameA); @@ -121,29 +116,14 @@ -------------------------------- 21 >for (let [, nameA = "noName"] of getRobots()) { - ~~~~~~~~ => Pos: (616 to 623) SpanInfo: {"start":616,"length":45} - >for (let [, nameA = "noName"] of getRobots()) - >:=> (line 21, col 0) to (line 21, col 45) -21 >for (let [, nameA = "noName"] of getRobots()) { - - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (624 to 644) SpanInfo: {"start":628,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (616 to 644) SpanInfo: {"start":628,"length":16} >nameA = "noName" >:=> (line 21, col 12) to (line 21, col 28) 21 >for (let [, nameA = "noName"] of getRobots()) { - ~~~ => Pos: (645 to 647) SpanInfo: {"start":616,"length":45} - >for (let [, nameA = "noName"] of getRobots()) - >:=> (line 21, col 0) to (line 21, col 45) -21 >for (let [, nameA = "noName"] of getRobots()) { - - ~~~~~~~~~~~~ => Pos: (648 to 659) SpanInfo: {"start":649,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (645 to 663) SpanInfo: {"start":649,"length":11} >getRobots() >:=> (line 21, col 33) to (line 21, col 44) -21 >for (let [, nameA = "noName"] of getRobots()) { - - ~~~~=> Pos: (660 to 663) SpanInfo: {"start":616,"length":45} - >for (let [, nameA = "noName"] of getRobots()) - >:=> (line 21, col 0) to (line 21, col 45) -------------------------------- 22 > console.log(nameA); @@ -159,19 +139,14 @@ -------------------------------- 24 >for (let [, nameA = "noName"] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (690 to 697) SpanInfo: {"start":690,"length":50} - >for (let [, nameA = "noName"] of [robotA, robotB]) - >:=> (line 24, col 0) to (line 24, col 50) -24 >for (let [, nameA = "noName"] of [robotA, robotB]) { - - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (698 to 718) SpanInfo: {"start":702,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (690 to 718) SpanInfo: {"start":702,"length":16} >nameA = "noName" >:=> (line 24, col 12) to (line 24, col 28) 24 >for (let [, nameA = "noName"] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (719 to 742) SpanInfo: {"start":690,"length":50} - >for (let [, nameA = "noName"] of [robotA, robotB]) - >:=> (line 24, col 0) to (line 24, col 50) + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (719 to 742) SpanInfo: {"start":723,"length":16} + >[robotA, robotB] + >:=> (line 24, col 33) to (line 24, col 49) -------------------------------- 25 > console.log(nameA); @@ -187,15 +162,7 @@ -------------------------------- 27 >for (let [, [ - ~~~~~~~~ => Pos: (769 to 776) SpanInfo: {"start":769,"length":120} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of multiRobots) - >:=> (line 27, col 0) to (line 30, col 41) -27 >for (let [, [ - - ~~~ => Pos: (777 to 779) SpanInfo: {"start":781,"length":91} + ~~~~~~~~~~~ => Pos: (769 to 779) SpanInfo: {"start":781,"length":91} >[ > primarySkillA = "primary", > secondarySkillA = "secondary" @@ -234,17 +201,9 @@ >:=> (line 27, col 12) to (line 30, col 24) 30 >] = ["skill1", "skill2"]] of multiRobots) { - ~~~~~~~~~~~~~~~~ => Pos: (873 to 888) SpanInfo: {"start":769,"length":120} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of multiRobots) - >:=> (line 27, col 0) to (line 30, col 41) -30 >] = ["skill1", "skill2"]] of multiRobots) { - - ~~~ => Pos: (889 to 891) SpanInfo: {"start":896,"length":26} - >console.log(primarySkillA) - >:=> (line 31, col 4) to (line 31, col 30) + ~~~~~~~~~~~~~~~~~~~ => Pos: (873 to 891) SpanInfo: {"start":877,"length":11} + >multiRobots + >:=> (line 30, col 29) to (line 30, col 40) -------------------------------- 31 > console.log(primarySkillA); @@ -260,15 +219,7 @@ -------------------------------- 33 >for (let [, [ - ~~~~~~~~ => Pos: (926 to 933) SpanInfo: {"start":926,"length":125} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of getMultiRobots()) - >:=> (line 33, col 0) to (line 36, col 46) -33 >for (let [, [ - - ~~~ => Pos: (934 to 936) SpanInfo: {"start":938,"length":91} + ~~~~~~~~~~~ => Pos: (926 to 936) SpanInfo: {"start":938,"length":91} >[ > primarySkillA = "primary", > secondarySkillA = "secondary" @@ -307,30 +258,9 @@ >:=> (line 33, col 12) to (line 36, col 24) 36 >] = ["skill1", "skill2"]] of getMultiRobots()) { - ~~~ => Pos: (1030 to 1032) SpanInfo: {"start":926,"length":125} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of getMultiRobots()) - >:=> (line 33, col 0) to (line 36, col 46) -36 >] = ["skill1", "skill2"]] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~ => Pos: (1033 to 1049) SpanInfo: {"start":1034,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1030 to 1053) SpanInfo: {"start":1034,"length":16} >getMultiRobots() >:=> (line 36, col 29) to (line 36, col 45) -36 >] = ["skill1", "skill2"]] of getMultiRobots()) { - - ~=> Pos: (1050 to 1050) SpanInfo: {"start":926,"length":125} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of getMultiRobots()) - >:=> (line 33, col 0) to (line 36, col 46) -36 >] = ["skill1", "skill2"]] of getMultiRobots()) { - - ~~~=> Pos: (1051 to 1053) SpanInfo: {"start":1058,"length":26} - >console.log(primarySkillA) - >:=> (line 37, col 4) to (line 37, col 30) -------------------------------- 37 > console.log(primarySkillA); @@ -346,15 +276,7 @@ -------------------------------- 39 >for (let [, [ - ~~~~~~~~ => Pos: (1088 to 1095) SpanInfo: {"start":1088,"length":135} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) - >:=> (line 39, col 0) to (line 42, col 56) -39 >for (let [, [ - - ~~~ => Pos: (1096 to 1098) SpanInfo: {"start":1100,"length":91} + ~~~~~~~~~~~ => Pos: (1088 to 1098) SpanInfo: {"start":1100,"length":91} >[ > primarySkillA = "primary", > secondarySkillA = "secondary" @@ -393,17 +315,9 @@ >:=> (line 39, col 12) to (line 42, col 24) 42 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1192 to 1222) SpanInfo: {"start":1088,"length":135} - >for (let [, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) - >:=> (line 39, col 0) to (line 42, col 56) -42 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { - - ~~~=> Pos: (1223 to 1225) SpanInfo: {"start":1230,"length":26} - >console.log(primarySkillA) - >:=> (line 43, col 4) to (line 43, col 30) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1192 to 1225) SpanInfo: {"start":1196,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 42, col 29) to (line 42, col 55) -------------------------------- 43 > console.log(primarySkillA); @@ -419,19 +333,14 @@ -------------------------------- 45 >for (let [numberB = -1] of robots) { - ~~~~~~~~ => Pos: (1260 to 1267) SpanInfo: {"start":1260,"length":34} - >for (let [numberB = -1] of robots) - >:=> (line 45, col 0) to (line 45, col 34) -45 >for (let [numberB = -1] of robots) { - - ~~~~~~~~~~~~~~~ => Pos: (1268 to 1282) SpanInfo: {"start":1270,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1260 to 1282) SpanInfo: {"start":1270,"length":12} >numberB = -1 >:=> (line 45, col 10) to (line 45, col 22) 45 >for (let [numberB = -1] of robots) { - ~~~~~~~~~~~~~~ => Pos: (1283 to 1296) SpanInfo: {"start":1260,"length":34} - >for (let [numberB = -1] of robots) - >:=> (line 45, col 0) to (line 45, col 34) + ~~~~~~~~~~~~~~ => Pos: (1283 to 1296) SpanInfo: {"start":1287,"length":6} + >robots + >:=> (line 45, col 27) to (line 45, col 33) -------------------------------- 46 > console.log(numberB); @@ -447,29 +356,14 @@ -------------------------------- 48 >for (let [numberB = -1] of getRobots()) { - ~~~~~~~~ => Pos: (1325 to 1332) SpanInfo: {"start":1325,"length":39} - >for (let [numberB = -1] of getRobots()) - >:=> (line 48, col 0) to (line 48, col 39) -48 >for (let [numberB = -1] of getRobots()) { - - ~~~~~~~~~~~~~~~ => Pos: (1333 to 1347) SpanInfo: {"start":1335,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1325 to 1347) SpanInfo: {"start":1335,"length":12} >numberB = -1 >:=> (line 48, col 10) to (line 48, col 22) 48 >for (let [numberB = -1] of getRobots()) { - ~~~ => Pos: (1348 to 1350) SpanInfo: {"start":1325,"length":39} - >for (let [numberB = -1] of getRobots()) - >:=> (line 48, col 0) to (line 48, col 39) -48 >for (let [numberB = -1] of getRobots()) { - - ~~~~~~~~~~~~ => Pos: (1351 to 1362) SpanInfo: {"start":1352,"length":11} + ~~~~~~~~~~~~~~~~~~~ => Pos: (1348 to 1366) SpanInfo: {"start":1352,"length":11} >getRobots() >:=> (line 48, col 27) to (line 48, col 38) -48 >for (let [numberB = -1] of getRobots()) { - - ~~~~ => Pos: (1363 to 1366) SpanInfo: {"start":1325,"length":39} - >for (let [numberB = -1] of getRobots()) - >:=> (line 48, col 0) to (line 48, col 39) -------------------------------- 49 > console.log(numberB); @@ -485,19 +379,14 @@ -------------------------------- 51 >for (let [numberB = -1] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (1395 to 1402) SpanInfo: {"start":1395,"length":44} - >for (let [numberB = -1] of [robotA, robotB]) - >:=> (line 51, col 0) to (line 51, col 44) -51 >for (let [numberB = -1] of [robotA, robotB]) { - - ~~~~~~~~~~~~~~~ => Pos: (1403 to 1417) SpanInfo: {"start":1405,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1395 to 1417) SpanInfo: {"start":1405,"length":12} >numberB = -1 >:=> (line 51, col 10) to (line 51, col 22) 51 >for (let [numberB = -1] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1418 to 1441) SpanInfo: {"start":1395,"length":44} - >for (let [numberB = -1] of [robotA, robotB]) - >:=> (line 51, col 0) to (line 51, col 44) + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1418 to 1441) SpanInfo: {"start":1422,"length":16} + >[robotA, robotB] + >:=> (line 51, col 27) to (line 51, col 43) -------------------------------- 52 > console.log(numberB); @@ -513,19 +402,14 @@ -------------------------------- 54 >for (let [nameB = "noName"] of multiRobots) { - ~~~~~~~~ => Pos: (1470 to 1477) SpanInfo: {"start":1470,"length":43} - >for (let [nameB = "noName"] of multiRobots) - >:=> (line 54, col 0) to (line 54, col 43) -54 >for (let [nameB = "noName"] of multiRobots) { - - ~~~~~~~~~~~~~~~~~~~ => Pos: (1478 to 1496) SpanInfo: {"start":1480,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1470 to 1496) SpanInfo: {"start":1480,"length":16} >nameB = "noName" >:=> (line 54, col 10) to (line 54, col 26) 54 >for (let [nameB = "noName"] of multiRobots) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (1497 to 1515) SpanInfo: {"start":1470,"length":43} - >for (let [nameB = "noName"] of multiRobots) - >:=> (line 54, col 0) to (line 54, col 43) + ~~~~~~~~~~~~~~~~~~~=> Pos: (1497 to 1515) SpanInfo: {"start":1501,"length":11} + >multiRobots + >:=> (line 54, col 31) to (line 54, col 42) -------------------------------- 55 > console.log(nameB); @@ -541,29 +425,14 @@ -------------------------------- 57 >for (let [nameB = "noName"] of getMultiRobots()) { - ~~~~~~~~ => Pos: (1542 to 1549) SpanInfo: {"start":1542,"length":48} - >for (let [nameB = "noName"] of getMultiRobots()) - >:=> (line 57, col 0) to (line 57, col 48) -57 >for (let [nameB = "noName"] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~~~ => Pos: (1550 to 1568) SpanInfo: {"start":1552,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1542 to 1568) SpanInfo: {"start":1552,"length":16} >nameB = "noName" >:=> (line 57, col 10) to (line 57, col 26) 57 >for (let [nameB = "noName"] of getMultiRobots()) { - ~~~ => Pos: (1569 to 1571) SpanInfo: {"start":1542,"length":48} - >for (let [nameB = "noName"] of getMultiRobots()) - >:=> (line 57, col 0) to (line 57, col 48) -57 >for (let [nameB = "noName"] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (1572 to 1588) SpanInfo: {"start":1573,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1569 to 1592) SpanInfo: {"start":1573,"length":16} >getMultiRobots() >:=> (line 57, col 31) to (line 57, col 47) -57 >for (let [nameB = "noName"] of getMultiRobots()) { - - ~~~~=> Pos: (1589 to 1592) SpanInfo: {"start":1542,"length":48} - >for (let [nameB = "noName"] of getMultiRobots()) - >:=> (line 57, col 0) to (line 57, col 48) -------------------------------- 58 > console.log(nameB); @@ -579,19 +448,14 @@ -------------------------------- 60 >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { - ~~~~~~~~ => Pos: (1619 to 1626) SpanInfo: {"start":1619,"length":58} - >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) - >:=> (line 60, col 0) to (line 60, col 58) -60 >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { - - ~~~~~~~~~~~~~~~~~~~ => Pos: (1627 to 1645) SpanInfo: {"start":1629,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1619 to 1645) SpanInfo: {"start":1629,"length":16} >nameB = "noName" >:=> (line 60, col 10) to (line 60, col 26) 60 >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1646 to 1679) SpanInfo: {"start":1619,"length":58} - >for (let [nameB = "noName"] of [multiRobotA, multiRobotB]) - >:=> (line 60, col 0) to (line 60, col 58) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1646 to 1679) SpanInfo: {"start":1650,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 60, col 31) to (line 60, col 57) -------------------------------- 61 > console.log(nameB); @@ -607,12 +471,7 @@ -------------------------------- 63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { - ~~~~~~~~ => Pos: (1706 to 1713) SpanInfo: {"start":1706,"length":73} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) - >:=> (line 63, col 0) to (line 63, col 73) -63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { - - ~~~~~~~~~~~~~~~~ => Pos: (1714 to 1729) SpanInfo: {"start":1716,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1706 to 1729) SpanInfo: {"start":1716,"length":13} >numberA2 = -1 >:=> (line 63, col 10) to (line 63, col 23) 63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { @@ -627,9 +486,9 @@ >:=> (line 63, col 44) to (line 63, col 61) 63 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { - ~~~~~~~~~~~~~~=> Pos: (1768 to 1781) SpanInfo: {"start":1706,"length":73} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) - >:=> (line 63, col 0) to (line 63, col 73) + ~~~~~~~~~~~~~~=> Pos: (1768 to 1781) SpanInfo: {"start":1772,"length":6} + >robots + >:=> (line 63, col 66) to (line 63, col 72) -------------------------------- 64 > console.log(nameA2); @@ -645,12 +504,7 @@ -------------------------------- 66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { - ~~~~~~~~ => Pos: (1809 to 1816) SpanInfo: {"start":1809,"length":78} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) - >:=> (line 66, col 0) to (line 66, col 78) -66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { - - ~~~~~~~~~~~~~~~~ => Pos: (1817 to 1832) SpanInfo: {"start":1819,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1809 to 1832) SpanInfo: {"start":1819,"length":13} >numberA2 = -1 >:=> (line 66, col 10) to (line 66, col 23) 66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { @@ -665,19 +519,9 @@ >:=> (line 66, col 44) to (line 66, col 61) 66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { - ~~~=> Pos: (1871 to 1873) SpanInfo: {"start":1809,"length":78} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) - >:=> (line 66, col 0) to (line 66, col 78) -66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (1874 to 1885) SpanInfo: {"start":1875,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (1871 to 1889) SpanInfo: {"start":1875,"length":11} >getRobots() >:=> (line 66, col 66) to (line 66, col 77) -66 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { - - ~~~~=> Pos: (1886 to 1889) SpanInfo: {"start":1809,"length":78} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) - >:=> (line 66, col 0) to (line 66, col 78) -------------------------------- 67 > console.log(nameA2); @@ -693,12 +537,7 @@ -------------------------------- 69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (1917 to 1924) SpanInfo: {"start":1917,"length":83} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) - >:=> (line 69, col 0) to (line 69, col 83) -69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { - - ~~~~~~~~~~~~~~~~ => Pos: (1925 to 1940) SpanInfo: {"start":1927,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1917 to 1940) SpanInfo: {"start":1927,"length":13} >numberA2 = -1 >:=> (line 69, col 10) to (line 69, col 23) 69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { @@ -713,9 +552,9 @@ >:=> (line 69, col 44) to (line 69, col 61) 69 >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1979 to 2002) SpanInfo: {"start":1917,"length":83} - >for (let [numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) - >:=> (line 69, col 0) to (line 69, col 83) + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1979 to 2002) SpanInfo: {"start":1983,"length":16} + >[robotA, robotB] + >:=> (line 69, col 66) to (line 69, col 82) -------------------------------- 70 > console.log(nameA2); @@ -731,15 +570,7 @@ -------------------------------- 72 >for (let [nameMA = "noName", [ - ~~~~~~~~ => Pos: (2030 to 2037) SpanInfo: {"start":2030,"length":137} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of multiRobots) - >:=> (line 72, col 0) to (line 75, col 41) -72 >for (let [nameMA = "noName", [ - - ~~~~~~~~~~~~~~~~~~~~ => Pos: (2038 to 2057) SpanInfo: {"start":2040,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2030 to 2057) SpanInfo: {"start":2040,"length":17} >nameMA = "noName" >:=> (line 72, col 10) to (line 72, col 27) 72 >for (let [nameMA = "noName", [ @@ -775,17 +606,9 @@ >:=> (line 72, col 29) to (line 75, col 24) 75 >] = ["skill1", "skill2"]] of multiRobots) { - ~~~~~~~~~~~~~~~~ => Pos: (2151 to 2166) SpanInfo: {"start":2030,"length":137} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of multiRobots) - >:=> (line 72, col 0) to (line 75, col 41) -75 >] = ["skill1", "skill2"]] of multiRobots) { - - ~~~ => Pos: (2167 to 2169) SpanInfo: {"start":2174,"length":19} - >console.log(nameMA) - >:=> (line 76, col 4) to (line 76, col 23) + ~~~~~~~~~~~~~~~~~~~ => Pos: (2151 to 2169) SpanInfo: {"start":2155,"length":11} + >multiRobots + >:=> (line 75, col 29) to (line 75, col 40) -------------------------------- 76 > console.log(nameMA); @@ -801,15 +624,7 @@ -------------------------------- 78 >for (let [nameMA = "noName", [ - ~~~~~~~~ => Pos: (2197 to 2204) SpanInfo: {"start":2197,"length":142} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of getMultiRobots()) - >:=> (line 78, col 0) to (line 81, col 46) -78 >for (let [nameMA = "noName", [ - - ~~~~~~~~~~~~~~~~~~~~ => Pos: (2205 to 2224) SpanInfo: {"start":2207,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2197 to 2224) SpanInfo: {"start":2207,"length":17} >nameMA = "noName" >:=> (line 78, col 10) to (line 78, col 27) 78 >for (let [nameMA = "noName", [ @@ -845,30 +660,9 @@ >:=> (line 78, col 29) to (line 81, col 24) 81 >] = ["skill1", "skill2"]] of getMultiRobots()) { - ~~~ => Pos: (2318 to 2320) SpanInfo: {"start":2197,"length":142} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of getMultiRobots()) - >:=> (line 78, col 0) to (line 81, col 46) -81 >] = ["skill1", "skill2"]] of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~ => Pos: (2321 to 2337) SpanInfo: {"start":2322,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2318 to 2341) SpanInfo: {"start":2322,"length":16} >getMultiRobots() >:=> (line 81, col 29) to (line 81, col 45) -81 >] = ["skill1", "skill2"]] of getMultiRobots()) { - - ~=> Pos: (2338 to 2338) SpanInfo: {"start":2197,"length":142} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of getMultiRobots()) - >:=> (line 78, col 0) to (line 81, col 46) -81 >] = ["skill1", "skill2"]] of getMultiRobots()) { - - ~~~=> Pos: (2339 to 2341) SpanInfo: {"start":2346,"length":19} - >console.log(nameMA) - >:=> (line 82, col 4) to (line 82, col 23) -------------------------------- 82 > console.log(nameMA); @@ -884,15 +678,7 @@ -------------------------------- 84 >for (let [nameMA = "noName", [ - ~~~~~~~~ => Pos: (2369 to 2376) SpanInfo: {"start":2369,"length":152} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) - >:=> (line 84, col 0) to (line 87, col 56) -84 >for (let [nameMA = "noName", [ - - ~~~~~~~~~~~~~~~~~~~~ => Pos: (2377 to 2396) SpanInfo: {"start":2379,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2369 to 2396) SpanInfo: {"start":2379,"length":17} >nameMA = "noName" >:=> (line 84, col 10) to (line 84, col 27) 84 >for (let [nameMA = "noName", [ @@ -928,17 +714,9 @@ >:=> (line 84, col 29) to (line 87, col 24) 87 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2490 to 2520) SpanInfo: {"start":2369,"length":152} - >for (let [nameMA = "noName", [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) - >:=> (line 84, col 0) to (line 87, col 56) -87 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { - - ~~~=> Pos: (2521 to 2523) SpanInfo: {"start":2528,"length":19} - >console.log(nameMA) - >:=> (line 88, col 4) to (line 88, col 23) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2490 to 2523) SpanInfo: {"start":2494,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 87, col 29) to (line 87, col 55) -------------------------------- 88 > console.log(nameMA); @@ -954,12 +732,7 @@ -------------------------------- 90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { - ~~~~~~~~ => Pos: (2551 to 2558) SpanInfo: {"start":2551,"length":50} - >for (let [numberA3 = -1, ...robotAInfo] of robots) - >:=> (line 90, col 0) to (line 90, col 50) -90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { - - ~~~~~~~~~~~~~~~~ => Pos: (2559 to 2574) SpanInfo: {"start":2561,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2551 to 2574) SpanInfo: {"start":2561,"length":13} >numberA3 = -1 >:=> (line 90, col 10) to (line 90, col 23) 90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { @@ -969,9 +742,9 @@ >:=> (line 90, col 25) to (line 90, col 38) 90 >for (let [numberA3 = -1, ...robotAInfo] of robots) { - ~~~~~~~~~~~~~~=> Pos: (2590 to 2603) SpanInfo: {"start":2551,"length":50} - >for (let [numberA3 = -1, ...robotAInfo] of robots) - >:=> (line 90, col 0) to (line 90, col 50) + ~~~~~~~~~~~~~~=> Pos: (2590 to 2603) SpanInfo: {"start":2594,"length":6} + >robots + >:=> (line 90, col 43) to (line 90, col 49) -------------------------------- 91 > console.log(numberA3); @@ -987,12 +760,7 @@ -------------------------------- 93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { - ~~~~~~~~ => Pos: (2633 to 2640) SpanInfo: {"start":2633,"length":55} - >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) - >:=> (line 93, col 0) to (line 93, col 55) -93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { - - ~~~~~~~~~~~~~~~~ => Pos: (2641 to 2656) SpanInfo: {"start":2643,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2633 to 2656) SpanInfo: {"start":2643,"length":13} >numberA3 = -1 >:=> (line 93, col 10) to (line 93, col 23) 93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { @@ -1002,19 +770,9 @@ >:=> (line 93, col 25) to (line 93, col 38) 93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { - ~~~ => Pos: (2672 to 2674) SpanInfo: {"start":2633,"length":55} - >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) - >:=> (line 93, col 0) to (line 93, col 55) -93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (2675 to 2686) SpanInfo: {"start":2676,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (2672 to 2690) SpanInfo: {"start":2676,"length":11} >getRobots() >:=> (line 93, col 43) to (line 93, col 54) -93 >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) { - - ~~~~=> Pos: (2687 to 2690) SpanInfo: {"start":2633,"length":55} - >for (let [numberA3 = -1, ...robotAInfo] of getRobots()) - >:=> (line 93, col 0) to (line 93, col 55) -------------------------------- 94 > console.log(numberA3); @@ -1030,12 +788,7 @@ -------------------------------- 96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { - ~~~~~~~~ => Pos: (2720 to 2727) SpanInfo: {"start":2720,"length":60} - >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) - >:=> (line 96, col 0) to (line 96, col 60) -96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { - - ~~~~~~~~~~~~~~~~ => Pos: (2728 to 2743) SpanInfo: {"start":2730,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2720 to 2743) SpanInfo: {"start":2730,"length":13} >numberA3 = -1 >:=> (line 96, col 10) to (line 96, col 23) 96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { @@ -1045,9 +798,9 @@ >:=> (line 96, col 25) to (line 96, col 38) 96 >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { - ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2759 to 2782) SpanInfo: {"start":2720,"length":60} - >for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) - >:=> (line 96, col 0) to (line 96, col 60) + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2759 to 2782) SpanInfo: {"start":2763,"length":16} + >[robotA, robotB] + >:=> (line 96, col 43) to (line 96, col 59) -------------------------------- 97 > console.log(numberA3); diff --git a/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline index 27e089a811d..14e0d2a2d27 100644 --- a/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPattern.baseline @@ -113,19 +113,14 @@ -------------------------------- 24 >for (let {name: nameA } of robots) { - ~~~~~~~~ => Pos: (603 to 610) SpanInfo: {"start":603,"length":34} - >for (let {name: nameA } of robots) - >:=> (line 24, col 0) to (line 24, col 34) -24 >for (let {name: nameA } of robots) { - - ~~~~~~~~~~~~~~~ => Pos: (611 to 625) SpanInfo: {"start":613,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (603 to 625) SpanInfo: {"start":613,"length":11} >name: nameA >:=> (line 24, col 10) to (line 24, col 21) 24 >for (let {name: nameA } of robots) { - ~~~~~~~~~~~~~~ => Pos: (626 to 639) SpanInfo: {"start":603,"length":34} - >for (let {name: nameA } of robots) - >:=> (line 24, col 0) to (line 24, col 34) + ~~~~~~~~~~~~~~ => Pos: (626 to 639) SpanInfo: {"start":630,"length":6} + >robots + >:=> (line 24, col 27) to (line 24, col 33) -------------------------------- 25 > console.log(nameA); @@ -141,29 +136,14 @@ -------------------------------- 27 >for (let {name: nameA } of getRobots()) { - ~~~~~~~~ => Pos: (666 to 673) SpanInfo: {"start":666,"length":39} - >for (let {name: nameA } of getRobots()) - >:=> (line 27, col 0) to (line 27, col 39) -27 >for (let {name: nameA } of getRobots()) { - - ~~~~~~~~~~~~~~~ => Pos: (674 to 688) SpanInfo: {"start":676,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (666 to 688) SpanInfo: {"start":676,"length":11} >name: nameA >:=> (line 27, col 10) to (line 27, col 21) 27 >for (let {name: nameA } of getRobots()) { - ~~~ => Pos: (689 to 691) SpanInfo: {"start":666,"length":39} - >for (let {name: nameA } of getRobots()) - >:=> (line 27, col 0) to (line 27, col 39) -27 >for (let {name: nameA } of getRobots()) { - - ~~~~~~~~~~~~ => Pos: (692 to 703) SpanInfo: {"start":693,"length":11} + ~~~~~~~~~~~~~~~~~~~ => Pos: (689 to 707) SpanInfo: {"start":693,"length":11} >getRobots() >:=> (line 27, col 27) to (line 27, col 38) -27 >for (let {name: nameA } of getRobots()) { - - ~~~~ => Pos: (704 to 707) SpanInfo: {"start":666,"length":39} - >for (let {name: nameA } of getRobots()) - >:=> (line 27, col 0) to (line 27, col 39) -------------------------------- 28 > console.log(nameA); @@ -179,19 +159,14 @@ -------------------------------- 30 >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~ => Pos: (734 to 741) SpanInfo: {"start":734,"length":104} - >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 30, col 0) to (line 30, col 104) -30 >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - - ~~~~~~~~~~~~~~~ => Pos: (742 to 756) SpanInfo: {"start":744,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (734 to 756) SpanInfo: {"start":744,"length":11} >name: nameA >:=> (line 30, col 10) to (line 30, col 21) 30 >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (757 to 840) SpanInfo: {"start":734,"length":104} - >for (let {name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 30, col 0) to (line 30, col 104) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (757 to 840) SpanInfo: {"start":761,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 30, col 27) to (line 30, col 103) -------------------------------- 31 > console.log(nameA); @@ -207,12 +182,7 @@ -------------------------------- 33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { - ~~~~~~~~ => Pos: (867 to 874) SpanInfo: {"start":867,"length":81} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) - >:=> (line 33, col 0) to (line 33, col 81) -33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { - - ~~~~~~~~~~ => Pos: (875 to 884) SpanInfo: {"start":878,"length":52} + ~~~~~~~~~~~~~~~~~~ => Pos: (867 to 884) SpanInfo: {"start":878,"length":52} >skills: { primary: primaryA, secondary: secondaryA } >:=> (line 33, col 11) to (line 33, col 63) 33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { @@ -232,9 +202,9 @@ >:=> (line 33, col 11) to (line 33, col 63) 33 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (932 to 950) SpanInfo: {"start":867,"length":81} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) - >:=> (line 33, col 0) to (line 33, col 81) + ~~~~~~~~~~~~~~~~~~~=> Pos: (932 to 950) SpanInfo: {"start":936,"length":11} + >multiRobots + >:=> (line 33, col 69) to (line 33, col 80) -------------------------------- 34 > console.log(primaryA); @@ -250,12 +220,7 @@ -------------------------------- 36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - ~~~~~~~~ => Pos: (980 to 987) SpanInfo: {"start":980,"length":86} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) - >:=> (line 36, col 0) to (line 36, col 86) -36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - - ~~~~~~~~~~ => Pos: (988 to 997) SpanInfo: {"start":991,"length":52} + ~~~~~~~~~~~~~~~~~~ => Pos: (980 to 997) SpanInfo: {"start":991,"length":52} >skills: { primary: primaryA, secondary: secondaryA } >:=> (line 36, col 11) to (line 36, col 63) 36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { @@ -275,19 +240,9 @@ >:=> (line 36, col 11) to (line 36, col 63) 36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - ~~~=> Pos: (1045 to 1047) SpanInfo: {"start":980,"length":86} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) - >:=> (line 36, col 0) to (line 36, col 86) -36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (1048 to 1064) SpanInfo: {"start":1049,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1045 to 1068) SpanInfo: {"start":1049,"length":16} >getMultiRobots() >:=> (line 36, col 69) to (line 36, col 85) -36 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - - ~~~~=> Pos: (1065 to 1068) SpanInfo: {"start":980,"length":86} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) - >:=> (line 36, col 0) to (line 36, col 86) -------------------------------- 37 > console.log(primaryA); @@ -303,13 +258,7 @@ -------------------------------- 39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - ~~~~~~~~ => Pos: (1098 to 1105) SpanInfo: {"start":1098,"length":218} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 39, col 0) to (line 40, col 79) -39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - - ~~~~~~~~~~ => Pos: (1106 to 1115) SpanInfo: {"start":1109,"length":52} + ~~~~~~~~~~~~~~~~~~ => Pos: (1098 to 1115) SpanInfo: {"start":1109,"length":52} >skills: { primary: primaryA, secondary: secondaryA } >:=> (line 39, col 11) to (line 39, col 63) 39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, @@ -329,22 +278,17 @@ >:=> (line 39, col 11) to (line 39, col 63) 39 >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1163 to 1236) SpanInfo: {"start":1098,"length":218} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 39, col 0) to (line 40, col 79) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1163 to 1236) SpanInfo: {"start":1167,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 39, col 69) to (line 40, col 78) -------------------------------- 40 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1237 to 1315) SpanInfo: {"start":1098,"length":218} - >for (let { skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 39, col 0) to (line 40, col 79) -40 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - - ~~~=> Pos: (1316 to 1318) SpanInfo: {"start":1323,"length":21} - >console.log(primaryA) - >:=> (line 41, col 4) to (line 41, col 25) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1237 to 1318) SpanInfo: {"start":1167,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 39, col 69) to (line 40, col 78) -------------------------------- 41 > console.log(primaryA); @@ -360,12 +304,7 @@ -------------------------------- 43 >for (let {name: nameA, skill: skillA } of robots) { - ~~~~~~~~ => Pos: (1348 to 1355) SpanInfo: {"start":1348,"length":49} - >for (let {name: nameA, skill: skillA } of robots) - >:=> (line 43, col 0) to (line 43, col 49) -43 >for (let {name: nameA, skill: skillA } of robots) { - - ~~~~~~~~~~~~~~ => Pos: (1356 to 1369) SpanInfo: {"start":1358,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1348 to 1369) SpanInfo: {"start":1358,"length":11} >name: nameA >:=> (line 43, col 10) to (line 43, col 21) 43 >for (let {name: nameA, skill: skillA } of robots) { @@ -375,9 +314,9 @@ >:=> (line 43, col 23) to (line 43, col 36) 43 >for (let {name: nameA, skill: skillA } of robots) { - ~~~~~~~~~~~~~~=> Pos: (1386 to 1399) SpanInfo: {"start":1348,"length":49} - >for (let {name: nameA, skill: skillA } of robots) - >:=> (line 43, col 0) to (line 43, col 49) + ~~~~~~~~~~~~~~=> Pos: (1386 to 1399) SpanInfo: {"start":1390,"length":6} + >robots + >:=> (line 43, col 42) to (line 43, col 48) -------------------------------- 44 > console.log(nameA); @@ -393,12 +332,7 @@ -------------------------------- 46 >for (let {name: nameA, skill: skillA } of getRobots()) { - ~~~~~~~~ => Pos: (1426 to 1433) SpanInfo: {"start":1426,"length":54} - >for (let {name: nameA, skill: skillA } of getRobots()) - >:=> (line 46, col 0) to (line 46, col 54) -46 >for (let {name: nameA, skill: skillA } of getRobots()) { - - ~~~~~~~~~~~~~~ => Pos: (1434 to 1447) SpanInfo: {"start":1436,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1426 to 1447) SpanInfo: {"start":1436,"length":11} >name: nameA >:=> (line 46, col 10) to (line 46, col 21) 46 >for (let {name: nameA, skill: skillA } of getRobots()) { @@ -408,19 +342,9 @@ >:=> (line 46, col 23) to (line 46, col 36) 46 >for (let {name: nameA, skill: skillA } of getRobots()) { - ~~~ => Pos: (1464 to 1466) SpanInfo: {"start":1426,"length":54} - >for (let {name: nameA, skill: skillA } of getRobots()) - >:=> (line 46, col 0) to (line 46, col 54) -46 >for (let {name: nameA, skill: skillA } of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (1467 to 1478) SpanInfo: {"start":1468,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (1464 to 1482) SpanInfo: {"start":1468,"length":11} >getRobots() >:=> (line 46, col 42) to (line 46, col 53) -46 >for (let {name: nameA, skill: skillA } of getRobots()) { - - ~~~~=> Pos: (1479 to 1482) SpanInfo: {"start":1426,"length":54} - >for (let {name: nameA, skill: skillA } of getRobots()) - >:=> (line 46, col 0) to (line 46, col 54) -------------------------------- 47 > console.log(nameA); @@ -436,12 +360,7 @@ -------------------------------- 49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~ => Pos: (1509 to 1516) SpanInfo: {"start":1509,"length":119} - >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 49, col 0) to (line 49, col 119) -49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - - ~~~~~~~~~~~~~~ => Pos: (1517 to 1530) SpanInfo: {"start":1519,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1509 to 1530) SpanInfo: {"start":1519,"length":11} >name: nameA >:=> (line 49, col 10) to (line 49, col 21) 49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { @@ -451,9 +370,9 @@ >:=> (line 49, col 23) to (line 49, col 36) 49 >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1547 to 1630) SpanInfo: {"start":1509,"length":119} - >for (let {name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 49, col 0) to (line 49, col 119) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1547 to 1630) SpanInfo: {"start":1551,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 49, col 42) to (line 49, col 118) -------------------------------- 50 > console.log(nameA); @@ -469,12 +388,7 @@ -------------------------------- 52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { - ~~~~~~~~ => Pos: (1657 to 1664) SpanInfo: {"start":1657,"length":93} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) - >:=> (line 52, col 0) to (line 52, col 93) -52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { - - ~~~~~~~~~~~~~~ => Pos: (1665 to 1678) SpanInfo: {"start":1667,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1657 to 1678) SpanInfo: {"start":1667,"length":11} >name: nameA >:=> (line 52, col 10) to (line 52, col 21) 52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { @@ -499,9 +413,9 @@ >:=> (line 52, col 23) to (line 52, col 75) 52 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { - ~~~~~~~~~~~~~~~~~~~=> Pos: (1734 to 1752) SpanInfo: {"start":1657,"length":93} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) - >:=> (line 52, col 0) to (line 52, col 93) + ~~~~~~~~~~~~~~~~~~~=> Pos: (1734 to 1752) SpanInfo: {"start":1738,"length":11} + >multiRobots + >:=> (line 52, col 81) to (line 52, col 92) -------------------------------- 53 > console.log(nameA); @@ -517,12 +431,7 @@ -------------------------------- 55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - ~~~~~~~~ => Pos: (1779 to 1786) SpanInfo: {"start":1779,"length":98} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) - >:=> (line 55, col 0) to (line 55, col 98) -55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - - ~~~~~~~~~~~~~~ => Pos: (1787 to 1800) SpanInfo: {"start":1789,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1779 to 1800) SpanInfo: {"start":1789,"length":11} >name: nameA >:=> (line 55, col 10) to (line 55, col 21) 55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { @@ -547,19 +456,9 @@ >:=> (line 55, col 23) to (line 55, col 75) 55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - ~~~=> Pos: (1856 to 1858) SpanInfo: {"start":1779,"length":98} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) - >:=> (line 55, col 0) to (line 55, col 98) -55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (1859 to 1875) SpanInfo: {"start":1860,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1856 to 1879) SpanInfo: {"start":1860,"length":16} >getMultiRobots() >:=> (line 55, col 81) to (line 55, col 97) -55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { - - ~~~~=> Pos: (1876 to 1879) SpanInfo: {"start":1779,"length":98} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) - >:=> (line 55, col 0) to (line 55, col 98) -------------------------------- 56 > console.log(nameA); @@ -575,13 +474,7 @@ -------------------------------- 58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - ~~~~~~~~ => Pos: (1906 to 1913) SpanInfo: {"start":1906,"length":230} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 58, col 0) to (line 59, col 79) -58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - - ~~~~~~~~~~~~~~ => Pos: (1914 to 1927) SpanInfo: {"start":1916,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1906 to 1927) SpanInfo: {"start":1916,"length":11} >name: nameA >:=> (line 58, col 10) to (line 58, col 21) 58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, @@ -606,22 +499,17 @@ >:=> (line 58, col 23) to (line 58, col 75) 58 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1983 to 2056) SpanInfo: {"start":1906,"length":230} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 58, col 0) to (line 59, col 79) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1983 to 2056) SpanInfo: {"start":1987,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 58, col 81) to (line 59, col 78) -------------------------------- 59 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2057 to 2135) SpanInfo: {"start":1906,"length":230} - >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 58, col 0) to (line 59, col 79) -59 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - - ~~~=> Pos: (2136 to 2138) SpanInfo: {"start":2143,"length":18} - >console.log(nameA) - >:=> (line 60, col 4) to (line 60, col 22) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2057 to 2138) SpanInfo: {"start":1987,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 58, col 81) to (line 59, col 78) -------------------------------- 60 > console.log(nameA); diff --git a/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline index d5553960334..d2169558daf 100644 --- a/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForOfObjectBindingPatternDefaultValues.baseline @@ -113,19 +113,14 @@ -------------------------------- 24 >for (let {name: nameA = "noName" } of robots) { - ~~~~~~~~ => Pos: (605 to 612) SpanInfo: {"start":605,"length":45} - >for (let {name: nameA = "noName" } of robots) - >:=> (line 24, col 0) to (line 24, col 45) -24 >for (let {name: nameA = "noName" } of robots) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (613 to 638) SpanInfo: {"start":615,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (605 to 638) SpanInfo: {"start":615,"length":22} >name: nameA = "noName" >:=> (line 24, col 10) to (line 24, col 32) 24 >for (let {name: nameA = "noName" } of robots) { - ~~~~~~~~~~~~~~=> Pos: (639 to 652) SpanInfo: {"start":605,"length":45} - >for (let {name: nameA = "noName" } of robots) - >:=> (line 24, col 0) to (line 24, col 45) + ~~~~~~~~~~~~~~=> Pos: (639 to 652) SpanInfo: {"start":643,"length":6} + >robots + >:=> (line 24, col 38) to (line 24, col 44) -------------------------------- 25 > console.log(nameA); @@ -141,29 +136,14 @@ -------------------------------- 27 >for (let {name: nameA = "noName" } of getRobots()) { - ~~~~~~~~ => Pos: (679 to 686) SpanInfo: {"start":679,"length":50} - >for (let {name: nameA = "noName" } of getRobots()) - >:=> (line 27, col 0) to (line 27, col 50) -27 >for (let {name: nameA = "noName" } of getRobots()) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (687 to 712) SpanInfo: {"start":689,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (679 to 712) SpanInfo: {"start":689,"length":22} >name: nameA = "noName" >:=> (line 27, col 10) to (line 27, col 32) 27 >for (let {name: nameA = "noName" } of getRobots()) { - ~~~ => Pos: (713 to 715) SpanInfo: {"start":679,"length":50} - >for (let {name: nameA = "noName" } of getRobots()) - >:=> (line 27, col 0) to (line 27, col 50) -27 >for (let {name: nameA = "noName" } of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (716 to 727) SpanInfo: {"start":717,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (713 to 731) SpanInfo: {"start":717,"length":11} >getRobots() >:=> (line 27, col 38) to (line 27, col 49) -27 >for (let {name: nameA = "noName" } of getRobots()) { - - ~~~~=> Pos: (728 to 731) SpanInfo: {"start":679,"length":50} - >for (let {name: nameA = "noName" } of getRobots()) - >:=> (line 27, col 0) to (line 27, col 50) -------------------------------- 28 > console.log(nameA); @@ -179,19 +159,14 @@ -------------------------------- 30 >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~ => Pos: (758 to 765) SpanInfo: {"start":758,"length":115} - >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 30, col 0) to (line 30, col 115) -30 >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (766 to 791) SpanInfo: {"start":768,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (758 to 791) SpanInfo: {"start":768,"length":22} >name: nameA = "noName" >:=> (line 30, col 10) to (line 30, col 32) 30 >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (792 to 875) SpanInfo: {"start":758,"length":115} - >for (let {name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 30, col 0) to (line 30, col 115) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (792 to 875) SpanInfo: {"start":796,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 30, col 38) to (line 30, col 114) -------------------------------- 31 > console.log(nameA); @@ -207,13 +182,7 @@ -------------------------------- 33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - ~~~~~~~~ => Pos: (902 to 909) SpanInfo: {"start":902,"length":158} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) - >:=> (line 33, col 0) to (line 34, col 66) -33 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - - ~~~~~~~~~~ => Pos: (910 to 919) SpanInfo: {"start":913,"length":129} + ~~~~~~~~~~~~~~~~~~ => Pos: (902 to 919) SpanInfo: {"start":913,"length":129} >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = > { primary: "nosKill", secondary: "noSkill" } >:=> (line 33, col 11) to (line 34, col 48) @@ -242,15 +211,9 @@ >:=> (line 33, col 11) to (line 34, col 48) 34 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { - ~~~~~~~~~~~~~~~~=> Pos: (1044 to 1059) SpanInfo: {"start":902,"length":158} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) - >:=> (line 33, col 0) to (line 34, col 66) -34 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { - - ~~~=> Pos: (1060 to 1062) SpanInfo: {"start":1067,"length":21} - >console.log(primaryA) - >:=> (line 35, col 4) to (line 35, col 25) + ~~~~~~~~~~~~~~~~~~~=> Pos: (1044 to 1062) SpanInfo: {"start":1048,"length":11} + >multiRobots + >:=> (line 34, col 54) to (line 34, col 65) -------------------------------- 35 > console.log(primaryA); @@ -266,13 +229,7 @@ -------------------------------- 37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - ~~~~~~~~ => Pos: (1092 to 1099) SpanInfo: {"start":1092,"length":163} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) - >:=> (line 37, col 0) to (line 38, col 71) -37 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - - ~~~~~~~~~~ => Pos: (1100 to 1109) SpanInfo: {"start":1103,"length":129} + ~~~~~~~~~~~~~~~~~~ => Pos: (1092 to 1109) SpanInfo: {"start":1103,"length":129} >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = > { primary: "nosKill", secondary: "noSkill" } >:=> (line 37, col 11) to (line 38, col 48) @@ -301,26 +258,9 @@ >:=> (line 37, col 11) to (line 38, col 48) 38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { - ~~~=> Pos: (1234 to 1236) SpanInfo: {"start":1092,"length":163} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) - >:=> (line 37, col 0) to (line 38, col 71) -38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~=> Pos: (1237 to 1253) SpanInfo: {"start":1238,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1234 to 1257) SpanInfo: {"start":1238,"length":16} >getMultiRobots() >:=> (line 38, col 54) to (line 38, col 70) -38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { - - ~=> Pos: (1254 to 1254) SpanInfo: {"start":1092,"length":163} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) - >:=> (line 37, col 0) to (line 38, col 71) -38 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { - - ~~~=> Pos: (1255 to 1257) SpanInfo: {"start":1262,"length":21} - >console.log(primaryA) - >:=> (line 39, col 4) to (line 39, col 25) -------------------------------- 39 > console.log(primaryA); @@ -336,15 +276,7 @@ -------------------------------- 41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - ~~~~~~~~ => Pos: (1287 to 1294) SpanInfo: {"start":1287,"length":313} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of - > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 41, col 0) to (line 44, col 79) -41 >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - - ~~~~~~~~~~ => Pos: (1295 to 1304) SpanInfo: {"start":1298,"length":129} + ~~~~~~~~~~~~~~~~~~ => Pos: (1287 to 1304) SpanInfo: {"start":1298,"length":129} >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = > { primary: "nosKill", secondary: "noSkill" } >:=> (line 41, col 11) to (line 42, col 48) @@ -373,35 +305,24 @@ >:=> (line 41, col 11) to (line 42, col 48) 42 > { primary: "nosKill", secondary: "noSkill" } } of - ~~~~=> Pos: (1429 to 1432) SpanInfo: {"start":1287,"length":313} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of - > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 41, col 0) to (line 44, col 79) + ~~~~=> Pos: (1429 to 1432) SpanInfo: {"start":1437,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 43, col 4) to (line 44, col 78) -------------------------------- 43 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1433 to 1520) SpanInfo: {"start":1287,"length":313} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of - > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 41, col 0) to (line 44, col 79) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1433 to 1520) SpanInfo: {"start":1437,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 43, col 4) to (line 44, col 78) -------------------------------- 44 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1521 to 1599) SpanInfo: {"start":1287,"length":313} - >for (let { skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = - > { primary: "nosKill", secondary: "noSkill" } } of - > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 41, col 0) to (line 44, col 79) -44 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - - ~~~=> Pos: (1600 to 1602) SpanInfo: {"start":1607,"length":21} - >console.log(primaryA) - >:=> (line 45, col 4) to (line 45, col 25) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1521 to 1602) SpanInfo: {"start":1437,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 43, col 4) to (line 44, col 78) -------------------------------- 45 > console.log(primaryA); @@ -417,12 +338,7 @@ -------------------------------- 47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { - ~~~~~~~~ => Pos: (1632 to 1639) SpanInfo: {"start":1632,"length":72} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) - >:=> (line 47, col 0) to (line 47, col 72) -47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1640 to 1664) SpanInfo: {"start":1642,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1632 to 1664) SpanInfo: {"start":1642,"length":22} >name: nameA = "noName" >:=> (line 47, col 10) to (line 47, col 32) 47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { @@ -432,9 +348,9 @@ >:=> (line 47, col 34) to (line 47, col 59) 47 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) { - ~~~~~~~~~~~~~~=> Pos: (1693 to 1706) SpanInfo: {"start":1632,"length":72} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of robots) - >:=> (line 47, col 0) to (line 47, col 72) + ~~~~~~~~~~~~~~=> Pos: (1693 to 1706) SpanInfo: {"start":1697,"length":6} + >robots + >:=> (line 47, col 65) to (line 47, col 71) -------------------------------- 48 > console.log(nameA); @@ -450,12 +366,7 @@ -------------------------------- 50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { - ~~~~~~~~ => Pos: (1733 to 1740) SpanInfo: {"start":1733,"length":78} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) - >:=> (line 50, col 0) to (line 50, col 78) -50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1741 to 1765) SpanInfo: {"start":1743,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1733 to 1765) SpanInfo: {"start":1743,"length":22} >name: nameA = "noName" >:=> (line 50, col 10) to (line 50, col 32) 50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { @@ -465,19 +376,9 @@ >:=> (line 50, col 34) to (line 50, col 59) 50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { - ~~~=> Pos: (1795 to 1797) SpanInfo: {"start":1733,"length":78} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) - >:=> (line 50, col 0) to (line 50, col 78) -50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { - - ~~~~~~~~~~~~=> Pos: (1798 to 1809) SpanInfo: {"start":1799,"length":11} + ~~~~~~~~~~~~~~~~~~~=> Pos: (1795 to 1813) SpanInfo: {"start":1799,"length":11} >getRobots() >:=> (line 50, col 66) to (line 50, col 77) -50 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { - - ~~~~=> Pos: (1810 to 1813) SpanInfo: {"start":1733,"length":78} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) - >:=> (line 50, col 0) to (line 50, col 78) -------------------------------- 51 > console.log(nameA); @@ -493,12 +394,7 @@ -------------------------------- 53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~ => Pos: (1840 to 1847) SpanInfo: {"start":1840,"length":143} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 53, col 0) to (line 53, col 143) -53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1848 to 1872) SpanInfo: {"start":1850,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1840 to 1872) SpanInfo: {"start":1850,"length":22} >name: nameA = "noName" >:=> (line 53, col 10) to (line 53, col 32) 53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { @@ -508,9 +404,9 @@ >:=> (line 53, col 34) to (line 53, col 59) 53 >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1902 to 1985) SpanInfo: {"start":1840,"length":143} - >for (let {name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) - >:=> (line 53, col 0) to (line 53, col 143) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1902 to 1985) SpanInfo: {"start":1906,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 53, col 66) to (line 53, col 142) -------------------------------- 54 > console.log(nameA); @@ -526,18 +422,7 @@ -------------------------------- 56 >for (let { - ~~~~~~~~ => Pos: (2012 to 2019) SpanInfo: {"start":2012,"length":206} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of multiRobots) - >:=> (line 56, col 0) to (line 62, col 17) -56 >for (let { - - ~~~ => Pos: (2020 to 2022) SpanInfo: {"start":2027,"length":22} + ~~~~~~~~~~~ => Pos: (2012 to 2022) SpanInfo: {"start":2027,"length":22} >name: nameA = "noName" >:=> (line 57, col 4) to (line 57, col 26) -------------------------------- @@ -597,20 +482,9 @@ >:=> (line 58, col 4) to (line 61, col 52) 62 >} of multiRobots) { - ~~~~~~~~~~~~~~~~ => Pos: (2202 to 2217) SpanInfo: {"start":2012,"length":206} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of multiRobots) - >:=> (line 56, col 0) to (line 62, col 17) -62 >} of multiRobots) { - - ~~~ => Pos: (2218 to 2220) SpanInfo: {"start":2225,"length":18} - >console.log(nameA) - >:=> (line 63, col 4) to (line 63, col 22) + ~~~~~~~~~~~~~~~~~~~ => Pos: (2202 to 2220) SpanInfo: {"start":2206,"length":11} + >multiRobots + >:=> (line 62, col 5) to (line 62, col 16) -------------------------------- 63 > console.log(nameA); @@ -626,18 +500,7 @@ -------------------------------- 65 >for (let { - ~~~~~~~~ => Pos: (2247 to 2254) SpanInfo: {"start":2247,"length":211} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of getMultiRobots()) - >:=> (line 65, col 0) to (line 71, col 22) -65 >for (let { - - ~~~ => Pos: (2255 to 2257) SpanInfo: {"start":2262,"length":22} + ~~~~~~~~~~~ => Pos: (2247 to 2257) SpanInfo: {"start":2262,"length":22} >name: nameA = "noName" >:=> (line 66, col 4) to (line 66, col 26) -------------------------------- @@ -697,36 +560,9 @@ >:=> (line 67, col 4) to (line 70, col 52) 71 >} of getMultiRobots()) { - ~~~ => Pos: (2437 to 2439) SpanInfo: {"start":2247,"length":211} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of getMultiRobots()) - >:=> (line 65, col 0) to (line 71, col 22) -71 >} of getMultiRobots()) { - - ~~~~~~~~~~~~~~~~~ => Pos: (2440 to 2456) SpanInfo: {"start":2441,"length":16} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2437 to 2460) SpanInfo: {"start":2441,"length":16} >getMultiRobots() >:=> (line 71, col 5) to (line 71, col 21) -71 >} of getMultiRobots()) { - - ~ => Pos: (2457 to 2457) SpanInfo: {"start":2247,"length":211} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of getMultiRobots()) - >:=> (line 65, col 0) to (line 71, col 22) -71 >} of getMultiRobots()) { - - ~~~ => Pos: (2458 to 2460) SpanInfo: {"start":2465,"length":18} - >console.log(nameA) - >:=> (line 72, col 4) to (line 72, col 22) -------------------------------- 72 > console.log(nameA); @@ -742,19 +578,7 @@ -------------------------------- 74 >for (let { - ~~~~~~~~ => Pos: (2487 to 2494) SpanInfo: {"start":2487,"length":357} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 74, col 0) to (line 81, col 79) -74 >for (let { - - ~~~ => Pos: (2495 to 2497) SpanInfo: {"start":2502,"length":22} + ~~~~~~~~~~~ => Pos: (2487 to 2497) SpanInfo: {"start":2502,"length":22} >name: nameA = "noName" >:=> (line 75, col 4) to (line 75, col 26) -------------------------------- @@ -814,34 +638,17 @@ >:=> (line 76, col 4) to (line 79, col 52) 80 >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2677 to 2764) SpanInfo: {"start":2487,"length":357} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 74, col 0) to (line 81, col 79) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2677 to 2764) SpanInfo: {"start":2681,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 80, col 5) to (line 81, col 78) -------------------------------- 81 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2765 to 2843) SpanInfo: {"start":2487,"length":357} - >for (let { - > name: nameA = "noName", - > skills: { - > primary: primaryA = "primary", - > secondary: secondaryA = "secondary" - > } = { primary: "noSkill", secondary: "noSkill" } - >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, - > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) - >:=> (line 74, col 0) to (line 81, col 79) -81 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { - - ~~~=> Pos: (2844 to 2846) SpanInfo: {"start":2851,"length":18} - >console.log(nameA) - >:=> (line 82, col 4) to (line 82, col 22) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2765 to 2846) SpanInfo: {"start":2681,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 80, col 5) to (line 81, col 78) -------------------------------- 82 > console.log(nameA); From 681e3543d66b3ead2c80ba9f5adf9f7c81d45847 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 21 Dec 2015 15:45:28 -0800 Subject: [PATCH 085/164] Fix the breakpoint spans of call / new expressions --- src/services/breakpoints.ts | 80 ++++---- ...structuringForArrayBindingPattern.baseline | 56 +---- ...rArrayBindingPatternDefaultValues.baseline | 49 +---- ...tructuringForObjectBindingPattern.baseline | 28 +-- ...ObjectBindingPatternDefaultValues.baseline | 28 +-- .../bpSpan_arrayLiteralExpressions.baseline | 72 +------ .../bpSpan_binaryExpressions.baseline | 35 +--- .../reference/bpSpan_classes.baseline | 47 +---- .../bpSpan_conditionalExpressions.baseline | 44 +--- tests/baselines/reference/bpSpan_do.baseline | 17 +- .../baselines/reference/bpSpan_forIn.baseline | 7 +- .../bpSpan_functionExpressions.baseline | 19 +- .../reference/bpSpan_ifElse.baseline | 9 +- .../reference/bpSpan_import.baseline | 15 +- .../bpSpan_parenCallOrNewExpressions.baseline | 192 ++---------------- .../baselines/reference/bpSpan_stmts.baseline | 7 +- .../reference/bpSpan_switch.baseline | 36 +--- .../reference/bpSpan_tryCatchFinally.baseline | 37 +--- .../bpSpan_typeAssertionExpressions.baseline | 45 +--- .../reference/bpSpan_typealias.baseline | 14 +- .../bpSpan_unaryExpressions.baseline | 18 +- .../baselines/reference/bpSpan_while.baseline | 18 +- 22 files changed, 138 insertions(+), 735 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 679988dbcf2..908fefb2d7d 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -70,37 +70,6 @@ namespace ts.BreakpointResolver { function spanInNode(node: Node): TextSpan { if (node) { - if (isExpression(node)) { - switch (node.parent.kind) { - case SyntaxKind.DoStatement: - // Set span as if on while keyword - return spanInPreviousNode(node); - - case SyntaxKind.Decorator: - // Set breakpoint on the decorator emit - return spanInNode(node.parent); - - case SyntaxKind.ForStatement: - case SyntaxKind.ForOfStatement: - // For now lets set the span on this expression, fix it later - return textSpan(node); - - case SyntaxKind.BinaryExpression: - if ((node.parent).operatorToken.kind === SyntaxKind.CommaToken) { - // if this is comma expression, the breakpoint is possible in this expression - return textSpan(node); - } - break; - - case SyntaxKind.ArrowFunction: - if ((node.parent).body === node) { - // If this is body of arrow function, it is allowed to have the breakpoint - return textSpan(node); - } - break; - } - } - switch (node.kind) { case SyntaxKind.VariableStatement: // Span on first variable declaration @@ -221,8 +190,6 @@ namespace ts.BreakpointResolver { case SyntaxKind.ClassDeclaration: case SyntaxKind.EnumDeclaration: case SyntaxKind.EnumMember: - case SyntaxKind.CallExpression: - case SyntaxKind.NewExpression: case SyntaxKind.BindingElement: // span on complete node return textSpan(node); @@ -286,6 +253,37 @@ namespace ts.BreakpointResolver { return spanInOfKeyword(node); default: + if (isExpression(node)) { + switch (node.parent.kind) { + case SyntaxKind.DoStatement: + // Set span as if on while keyword + return spanInPreviousNode(node); + + case SyntaxKind.Decorator: + // Set breakpoint on the decorator emit + return spanInNode(node.parent); + + case SyntaxKind.ForStatement: + case SyntaxKind.ForOfStatement: + // For now lets set the span on this expression, fix it later + return textSpan(node); + + case SyntaxKind.BinaryExpression: + if ((node.parent).operatorToken.kind === SyntaxKind.CommaToken) { + // if this is comma expression, the breakpoint is possible in this expression + return textSpan(node); + } + break; + + case SyntaxKind.ArrowFunction: + if ((node.parent).body === node) { + // If this is body of arrow function, it is allowed to have the breakpoint + return textSpan(node); + } + break; + } + } + // If this is name of property assignment, set breakpoint in the initializer if (node.parent.kind === SyntaxKind.PropertyAssignment && (node.parent).name === node) { return spanInNode((node.parent).initializer); @@ -293,7 +291,7 @@ namespace ts.BreakpointResolver { // Breakpoint in type assertion goes to its operand if (node.parent.kind === SyntaxKind.TypeAssertionExpression && (node.parent).type === node) { - return spanInNode((node.parent).expression); + return spanInNextNode((node.parent).type); } // return type of function go to previous token @@ -559,11 +557,16 @@ namespace ts.BreakpointResolver { } function spanInOpenParenToken(node: Node): TextSpan { - if (node.parent.kind === SyntaxKind.DoStatement) { - // Go to while keyword and do action instead + if (node.parent.kind === SyntaxKind.DoStatement || // Go to while keyword and do action instead + node.parent.kind === SyntaxKind.CallExpression || + node.parent.kind === SyntaxKind.NewExpression) { return spanInPreviousNode(node); } + if (node.parent.kind === SyntaxKind.ParenthesizedExpression) { + return spanInNextNode(node); + } + // Default to parent node return spanInNode(node.parent); } @@ -583,6 +586,9 @@ namespace ts.BreakpointResolver { case SyntaxKind.DoStatement: case SyntaxKind.ForStatement: case SyntaxKind.ForOfStatement: + case SyntaxKind.CallExpression: + case SyntaxKind.NewExpression: + case SyntaxKind.ParenthesizedExpression: return spanInPreviousNode(node); // Default to parent node @@ -604,7 +610,7 @@ namespace ts.BreakpointResolver { function spanInGreaterThanOrLessThanToken(node: Node): TextSpan { if (node.parent.kind === SyntaxKind.TypeAssertionExpression) { - return spanInNode((node.parent).expression); + return spanInNextNode(node); } return spanInNode(node.parent); diff --git a/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline index a9de03bb74b..9a65a6f2e95 100644 --- a/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPattern.baseline @@ -120,16 +120,11 @@ -------------------------------- 21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~ => Pos: (499 to 518) SpanInfo: {"start":511,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (499 to 530) SpanInfo: {"start":511,"length":5} >nameA >:=> (line 21, col 12) to (line 21, col 17) 21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~ => Pos: (519 to 530) SpanInfo: {"start":520,"length":10} - >getRobot() - >:=> (line 21, col 21) to (line 21, col 31) -21 >for (let [, nameA] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (531 to 537) SpanInfo: {"start":532,"length":5} >i = 0 >:=> (line 21, col 33) to (line 21, col 38) @@ -254,16 +249,11 @@ >:=> (line 30, col 28) to (line 30, col 43) 30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~=> Pos: (835 to 837) SpanInfo: {"start":803,"length":32} + ~~~~~~~~~~~~~~~~~~~~=> Pos: (835 to 854) SpanInfo: {"start":803,"length":32} >[primarySkillA, secondarySkillA] >:=> (line 30, col 12) to (line 30, col 44) 30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~=> Pos: (838 to 854) SpanInfo: {"start":839,"length":15} - >getMultiRobot() - >:=> (line 30, col 48) to (line 30, col 63) -30 >for (let [, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (855 to 861) SpanInfo: {"start":856,"length":5} >i = 0 >:=> (line 30, col 65) to (line 30, col 70) @@ -377,16 +367,11 @@ -------------------------------- 40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~ => Pos: (1130 to 1149) SpanInfo: {"start":1140,"length":7} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1130 to 1161) SpanInfo: {"start":1140,"length":7} >numberB >:=> (line 40, col 10) to (line 40, col 17) 40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~ => Pos: (1150 to 1161) SpanInfo: {"start":1151,"length":10} - >getRobot() - >:=> (line 40, col 21) to (line 40, col 31) -40 >for (let [numberB] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (1162 to 1168) SpanInfo: {"start":1163,"length":5} >i = 0 >:=> (line 40, col 33) to (line 40, col 38) @@ -481,16 +466,11 @@ -------------------------------- 49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~ => Pos: (1389 to 1406) SpanInfo: {"start":1399,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1389 to 1423) SpanInfo: {"start":1399,"length":5} >nameB >:=> (line 49, col 10) to (line 49, col 15) 49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (1407 to 1423) SpanInfo: {"start":1408,"length":15} - >getMultiRobot() - >:=> (line 49, col 19) to (line 49, col 34) -49 >for (let [nameB] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (1424 to 1430) SpanInfo: {"start":1425,"length":5} >i = 0 >:=> (line 49, col 36) to (line 49, col 41) @@ -609,16 +589,11 @@ >:=> (line 59, col 20) to (line 59, col 26) 59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~ => Pos: (1698 to 1708) SpanInfo: {"start":1699,"length":7} + ~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1698 to 1720) SpanInfo: {"start":1699,"length":7} >skillA2 >:=> (line 59, col 28) to (line 59, col 35) 59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (1709 to 1720) SpanInfo: {"start":1710,"length":10} - >getRobot() - >:=> (line 59, col 39) to (line 59, col 49) -59 >for (let [numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (1721 to 1727) SpanInfo: {"start":1722,"length":5} >i = 0 >:=> (line 59, col 51) to (line 59, col 56) @@ -753,16 +728,11 @@ >:=> (line 68, col 34) to (line 68, col 49) 68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~=> Pos: (2050 to 2052) SpanInfo: {"start":2018,"length":32} + ~~~~~~~~~~~~~~~~~~~~=> Pos: (2050 to 2069) SpanInfo: {"start":2018,"length":32} >[primarySkillA, secondarySkillA] >:=> (line 68, col 18) to (line 68, col 50) 68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~=> Pos: (2053 to 2069) SpanInfo: {"start":2054,"length":15} - >getMultiRobot() - >:=> (line 68, col 54) to (line 68, col 69) -68 >for (let [nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (2070 to 2076) SpanInfo: {"start":2071,"length":5} >i = 0 >:=> (line 68, col 71) to (line 68, col 76) @@ -886,16 +856,11 @@ >:=> (line 78, col 10) to (line 78, col 18) 78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (2373 to 2389) SpanInfo: {"start":2374,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2373 to 2401) SpanInfo: {"start":2374,"length":13} >...robotAInfo >:=> (line 78, col 20) to (line 78, col 33) 78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (2390 to 2401) SpanInfo: {"start":2391,"length":10} - >getRobot() - >:=> (line 78, col 37) to (line 78, col 47) -78 >for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (2402 to 2408) SpanInfo: {"start":2403,"length":5} >i = 0 >:=> (line 78, col 49) to (line 78, col 54) @@ -995,16 +960,11 @@ -------------------------------- 87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2670 to 2700) SpanInfo: {"start":2680,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2670 to 2717) SpanInfo: {"start":2680,"length":18} >...multiRobotAInfo >:=> (line 87, col 10) to (line 87, col 28) 87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~=> Pos: (2701 to 2717) SpanInfo: {"start":2702,"length":15} - >getMultiRobot() - >:=> (line 87, col 32) to (line 87, col 47) -87 >for (let [...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (2718 to 2724) SpanInfo: {"start":2719,"length":5} >i = 0 >:=> (line 87, col 49) to (line 87, col 54) diff --git a/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline index 17fc43d9d9e..78fc1b42b2f 100644 --- a/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForArrayBindingPatternDefaultValues.baseline @@ -108,16 +108,11 @@ -------------------------------- 18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (496 to 524) SpanInfo: {"start":508,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (496 to 536) SpanInfo: {"start":508,"length":14} >nameA = "name" >:=> (line 18, col 12) to (line 18, col 26) 18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~ => Pos: (525 to 536) SpanInfo: {"start":526,"length":10} - >getRobot() - >:=> (line 18, col 30) to (line 18, col 40) -18 >for (let [, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (537 to 543) SpanInfo: {"start":538,"length":5} >i = 0 >:=> (line 18, col 42) to (line 18, col 47) @@ -277,7 +272,7 @@ >:=> (line 32, col 4) to (line 32, col 33) 33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (941 to 962) SpanInfo: {"start":873,"length":87} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (941 to 979) SpanInfo: {"start":873,"length":87} >[ > primarySkillA = "primary", > secondarySkillA = "secondary" @@ -285,11 +280,6 @@ >:=> (line 30, col 12) to (line 33, col 20) 33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (963 to 979) SpanInfo: {"start":964,"length":15} - >getMultiRobot() - >:=> (line 33, col 24) to (line 33, col 39) -33 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (980 to 986) SpanInfo: {"start":981,"length":5} >i = 0 >:=> (line 33, col 41) to (line 33, col 46) @@ -418,16 +408,11 @@ -------------------------------- 45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1314 to 1338) SpanInfo: {"start":1324,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1314 to 1350) SpanInfo: {"start":1324,"length":12} >numberB = -1 >:=> (line 45, col 10) to (line 45, col 22) 45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~ => Pos: (1339 to 1350) SpanInfo: {"start":1340,"length":10} - >getRobot() - >:=> (line 45, col 26) to (line 45, col 36) -45 >for (let [numberB = -1] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (1351 to 1357) SpanInfo: {"start":1352,"length":5} >i = 0 >:=> (line 45, col 38) to (line 45, col 43) @@ -522,16 +507,11 @@ -------------------------------- 54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1592 to 1618) SpanInfo: {"start":1602,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1592 to 1635) SpanInfo: {"start":1602,"length":14} >nameB = "name" >:=> (line 54, col 10) to (line 54, col 24) 54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (1619 to 1635) SpanInfo: {"start":1620,"length":15} - >getMultiRobot() - >:=> (line 54, col 28) to (line 54, col 43) -54 >for (let [nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (1636 to 1642) SpanInfo: {"start":1637,"length":5} >i = 0 >:=> (line 54, col 45) to (line 54, col 50) @@ -646,16 +626,11 @@ >:=> (line 63, col 25) to (line 63, col 40) 63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1956 to 1976) SpanInfo: {"start":1957,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1956 to 1988) SpanInfo: {"start":1957,"length":17} >skillA2 = "skill" >:=> (line 63, col 42) to (line 63, col 59) 63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (1977 to 1988) SpanInfo: {"start":1978,"length":10} - >getRobot() - >:=> (line 63, col 63) to (line 63, col 73) -63 >for (let [numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (1989 to 1995) SpanInfo: {"start":1990,"length":5} >i = 0 >:=> (line 63, col 75) to (line 63, col 80) @@ -845,7 +820,7 @@ -------------------------------- 83 >] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~ => Pos: (2532 to 2535) SpanInfo: {"start":2432,"length":99} + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (2532 to 2552) SpanInfo: {"start":2432,"length":99} >[ > primarySkillA = "primary", > secondarySkillA = "secondary" @@ -853,11 +828,6 @@ >:=> (line 79, col 4) to (line 82, col 24) 83 >] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (2536 to 2552) SpanInfo: {"start":2537,"length":15} - >getMultiRobot() - >:=> (line 83, col 5) to (line 83, col 20) -83 >] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (2553 to 2559) SpanInfo: {"start":2554,"length":5} >i = 0 >:=> (line 83, col 22) to (line 83, col 27) @@ -1003,16 +973,11 @@ >:=> (line 97, col 10) to (line 97, col 23) 97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (2949 to 2965) SpanInfo: {"start":2950,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2949 to 2977) SpanInfo: {"start":2950,"length":13} >...robotAInfo >:=> (line 97, col 25) to (line 97, col 38) 97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (2966 to 2977) SpanInfo: {"start":2967,"length":10} - >getRobot() - >:=> (line 97, col 42) to (line 97, col 52) -97 >for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (2978 to 2984) SpanInfo: {"start":2979,"length":5} >i = 0 >:=> (line 97, col 54) to (line 97, col 59) diff --git a/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline index 5f4ff059dca..718799a8334 100644 --- a/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPattern.baseline @@ -138,16 +138,11 @@ -------------------------------- 26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (550 to 574) SpanInfo: {"start":560,"length":11} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (550 to 586) SpanInfo: {"start":560,"length":11} >name: nameA >:=> (line 26, col 10) to (line 26, col 21) 26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~ => Pos: (575 to 586) SpanInfo: {"start":576,"length":10} - >getRobot() - >:=> (line 26, col 26) to (line 26, col 36) -26 >for (let {name: nameA } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (587 to 593) SpanInfo: {"start":588,"length":5} >i = 0 >:=> (line 26, col 38) to (line 26, col 43) @@ -272,16 +267,11 @@ >:=> (line 35, col 40) to (line 35, col 61) 35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~=> Pos: (948 to 951) SpanInfo: {"start":896,"length":52} + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (948 to 968) SpanInfo: {"start":896,"length":52} >skills: { primary: primaryA, secondary: secondaryA } >:=> (line 35, col 11) to (line 35, col 63) 35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~=> Pos: (952 to 968) SpanInfo: {"start":953,"length":15} - >getMultiRobot() - >:=> (line 35, col 68) to (line 35, col 83) -35 >for (let { skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (969 to 975) SpanInfo: {"start":970,"length":5} >i = 0 >:=> (line 35, col 85) to (line 35, col 90) @@ -408,16 +398,11 @@ >:=> (line 46, col 10) to (line 46, col 21) 46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~ => Pos: (1350 to 1367) SpanInfo: {"start":1351,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1350 to 1379) SpanInfo: {"start":1351,"length":13} >skill: skillA >:=> (line 46, col 23) to (line 46, col 36) 46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (1368 to 1379) SpanInfo: {"start":1369,"length":10} - >getRobot() - >:=> (line 46, col 41) to (line 46, col 51) -46 >for (let {name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (1380 to 1386) SpanInfo: {"start":1381,"length":5} >i = 0 >:=> (line 46, col 53) to (line 46, col 58) @@ -557,16 +542,11 @@ >:=> (line 55, col 52) to (line 55, col 73) 55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~=> Pos: (1780 to 1783) SpanInfo: {"start":1728,"length":52} + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1780 to 1800) SpanInfo: {"start":1728,"length":52} >skills: { primary: primaryA, secondary: secondaryA } >:=> (line 55, col 23) to (line 55, col 75) 55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~=> Pos: (1784 to 1800) SpanInfo: {"start":1785,"length":15} - >getMultiRobot() - >:=> (line 55, col 80) to (line 55, col 95) -55 >for (let {name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (1801 to 1807) SpanInfo: {"start":1802,"length":5} >i = 0 >:=> (line 55, col 97) to (line 55, col 102) diff --git a/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline index 6c7735f2b83..54d9cbc0471 100644 --- a/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringForObjectBindingPatternDefaultValues.baseline @@ -138,16 +138,11 @@ -------------------------------- 26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (562 to 597) SpanInfo: {"start":572,"length":22} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (562 to 609) SpanInfo: {"start":572,"length":22} >name: nameA = "noName" >:=> (line 26, col 10) to (line 26, col 32) 26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (598 to 609) SpanInfo: {"start":599,"length":10} - >getRobot() - >:=> (line 26, col 37) to (line 26, col 47) -26 >for (let {name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (610 to 616) SpanInfo: {"start":611,"length":5} >i = 0 >:=> (line 26, col 49) to (line 26, col 54) @@ -343,7 +338,7 @@ -------------------------------- 45 >} = getMultiRobot(), i = 0; i < 1; i++) { - ~~~ => Pos: (1165 to 1167) SpanInfo: {"start":1025,"length":139} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1165 to 1184) SpanInfo: {"start":1025,"length":139} >skills: { > primary: primaryA = "primary", > secondary: secondaryA = "secondary" @@ -351,11 +346,6 @@ >:=> (line 41, col 4) to (line 44, col 46) 45 >} = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (1168 to 1184) SpanInfo: {"start":1169,"length":15} - >getMultiRobot() - >:=> (line 45, col 4) to (line 45, col 19) -45 >} = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (1185 to 1191) SpanInfo: {"start":1186,"length":5} >i = 0 >:=> (line 45, col 21) to (line 45, col 26) @@ -513,16 +503,11 @@ >:=> (line 60, col 10) to (line 60, col 32) 60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1685 to 1712) SpanInfo: {"start":1686,"length":23} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1685 to 1724) SpanInfo: {"start":1686,"length":23} >skill: skillA = "skill" >:=> (line 60, col 34) to (line 60, col 57) 60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~=> Pos: (1713 to 1724) SpanInfo: {"start":1714,"length":10} - >getRobot() - >:=> (line 60, col 62) to (line 60, col 72) -60 >for (let {name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { - ~~~~~~~=> Pos: (1725 to 1731) SpanInfo: {"start":1726,"length":5} >i = 0 >:=> (line 60, col 74) to (line 60, col 79) @@ -729,7 +714,7 @@ -------------------------------- 81 >} = getMultiRobot(), i = 0; i < 1; i++) { - ~~~ => Pos: (2361 to 2363) SpanInfo: {"start":2221,"length":139} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2361 to 2380) SpanInfo: {"start":2221,"length":139} >skills: { > primary: primaryA = "primary", > secondary: secondaryA = "secondary" @@ -737,11 +722,6 @@ >:=> (line 77, col 4) to (line 80, col 46) 81 >} = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~~~~~~~~~~~ => Pos: (2364 to 2380) SpanInfo: {"start":2365,"length":15} - >getMultiRobot() - >:=> (line 81, col 4) to (line 81, col 19) -81 >} = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~~~ => Pos: (2381 to 2387) SpanInfo: {"start":2382,"length":5} >i = 0 >:=> (line 81, col 21) to (line 81, col 26) diff --git a/tests/baselines/reference/bpSpan_arrayLiteralExpressions.baseline b/tests/baselines/reference/bpSpan_arrayLiteralExpressions.baseline index d8bfbc84aa0..aa39897be0f 100644 --- a/tests/baselines/reference/bpSpan_arrayLiteralExpressions.baseline +++ b/tests/baselines/reference/bpSpan_arrayLiteralExpressions.baseline @@ -25,26 +25,14 @@ -------------------------------- 5 >a = [foo(30), (function () { - ~~~~~ => Pos: (64 to 68) SpanInfo: {"start":64,"length":49} + ~~~~~~~~~~~~~ => Pos: (64 to 76) SpanInfo: {"start":64,"length":49} >a = [foo(30), (function () { > return 30; >})()] >:=> (line 5, col 0) to (line 7, col 5) 5 >a = [foo(30), (function () { - ~~~~~~~~ => Pos: (69 to 76) SpanInfo: {"start":69,"length":7} - >foo(30) - >:=> (line 5, col 5) to (line 5, col 12) -5 >a = [foo(30), (function () { - - ~~ => Pos: (77 to 78) SpanInfo: {"start":78,"length":34} - >(function () { - > return 30; - >})() - >:=> (line 5, col 14) to (line 7, col 4) -5 >a = [foo(30), (function () { - - ~~~~~~~~~~~~~~ => Pos: (79 to 92) SpanInfo: {"start":97,"length":9} + ~~~~~~~~~~~~~~~~ => Pos: (77 to 92) SpanInfo: {"start":97,"length":9} >return 30 >:=> (line 6, col 4) to (line 6, col 13) -------------------------------- @@ -56,18 +44,11 @@ -------------------------------- 7 >})()]; - ~ => Pos: (108 to 108) SpanInfo: {"start":108,"length":1} + ~~~~ => Pos: (108 to 111) SpanInfo: {"start":108,"length":1} >} >:=> (line 7, col 0) to (line 7, col 1) 7 >})()]; - ~~~ => Pos: (109 to 111) SpanInfo: {"start":78,"length":34} - >(function () { - > return 30; - >})() - >:=> (line 5, col 14) to (line 7, col 4) -7 >})()]; - ~~~ => Pos: (112 to 114) SpanInfo: {"start":64,"length":49} >a = [foo(30), (function () { > return 30; @@ -94,17 +75,7 @@ -------------------------------- 11 >var x = bar()[0]; - ~~~~~~~ => Pos: (148 to 154) SpanInfo: {"start":148,"length":16} - >var x = bar()[0] - >:=> (line 11, col 0) to (line 11, col 16) -11 >var x = bar()[0]; - - ~~~~~~ => Pos: (155 to 160) SpanInfo: {"start":156,"length":5} - >bar() - >:=> (line 11, col 8) to (line 11, col 13) -11 >var x = bar()[0]; - - ~~~~~ => Pos: (161 to 165) SpanInfo: {"start":148,"length":16} + ~~~~~~~~~~~~~~~~~~ => Pos: (148 to 165) SpanInfo: {"start":148,"length":16} >var x = bar()[0] >:=> (line 11, col 0) to (line 11, col 16) -------------------------------- @@ -117,14 +88,7 @@ >:=> (line 12, col 0) to (line 14, col 7) 12 >x = (function () { - ~~ => Pos: (169 to 170) SpanInfo: {"start":170,"length":33} - >(function () { - > return a; - >})() - >:=> (line 12, col 4) to (line 14, col 4) -12 >x = (function () { - - ~~~~~~~~~~~~~~ => Pos: (171 to 184) SpanInfo: {"start":189,"length":8} + ~~~~~~~~~~~~~~~~ => Pos: (169 to 184) SpanInfo: {"start":189,"length":8} >return a >:=> (line 13, col 4) to (line 13, col 12) -------------------------------- @@ -136,18 +100,11 @@ -------------------------------- 14 >})()[x]; - ~ => Pos: (199 to 199) SpanInfo: {"start":199,"length":1} + ~~~~ => Pos: (199 to 202) SpanInfo: {"start":199,"length":1} >} >:=> (line 14, col 0) to (line 14, col 1) 14 >})()[x]; - ~~~ => Pos: (200 to 202) SpanInfo: {"start":170,"length":33} - >(function () { - > return a; - >})() - >:=> (line 12, col 4) to (line 14, col 4) -14 >})()[x]; - ~~~~~ => Pos: (203 to 207) SpanInfo: {"start":166,"length":40} >x = (function () { > return a; @@ -163,14 +120,7 @@ >:=> (line 15, col 0) to (line 17, col 5) 15 >a[(function () { - ~ => Pos: (210 to 210) SpanInfo: {"start":210,"length":33} - >(function () { - > return x; - >})() - >:=> (line 15, col 2) to (line 17, col 4) -15 >a[(function () { - - ~~~~~~~~~~~~~~ => Pos: (211 to 224) SpanInfo: {"start":229,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (210 to 224) SpanInfo: {"start":229,"length":8} >return x >:=> (line 16, col 4) to (line 16, col 12) -------------------------------- @@ -181,15 +131,9 @@ >:=> (line 16, col 4) to (line 16, col 12) -------------------------------- 17 >})()]; - ~ => Pos: (239 to 239) SpanInfo: {"start":239,"length":1} + ~~~~ => Pos: (239 to 242) SpanInfo: {"start":239,"length":1} >} >:=> (line 17, col 0) to (line 17, col 1) -17 >})()]; - ~~~ => Pos: (240 to 242) SpanInfo: {"start":210,"length":33} - >(function () { - > return x; - >})() - >:=> (line 15, col 2) to (line 17, col 4) 17 >})()]; ~~ => Pos: (243 to 244) SpanInfo: {"start":208,"length":36} >a[(function () { diff --git a/tests/baselines/reference/bpSpan_binaryExpressions.baseline b/tests/baselines/reference/bpSpan_binaryExpressions.baseline index 370fec39a25..93f6b97005b 100644 --- a/tests/baselines/reference/bpSpan_binaryExpressions.baseline +++ b/tests/baselines/reference/bpSpan_binaryExpressions.baseline @@ -38,14 +38,7 @@ >:=> (line 6, col 0) to (line 8, col 8) 6 >x = (function foo() { - ~~ => Pos: (55 to 56) SpanInfo: {"start":56,"length":36} - >(function foo() { - > return y; - >})() - >:=> (line 6, col 4) to (line 8, col 4) -6 >x = (function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (57 to 73) SpanInfo: {"start":78,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (55 to 73) SpanInfo: {"start":78,"length":8} >return y >:=> (line 7, col 4) to (line 7, col 12) -------------------------------- @@ -57,18 +50,11 @@ -------------------------------- 8 >})() + y; - ~ => Pos: (88 to 88) SpanInfo: {"start":88,"length":1} + ~~~~ => Pos: (88 to 91) SpanInfo: {"start":88,"length":1} >} >:=> (line 8, col 0) to (line 8, col 1) 8 >})() + y; - ~~~ => Pos: (89 to 91) SpanInfo: {"start":56,"length":36} - >(function foo() { - > return y; - >})() - >:=> (line 6, col 4) to (line 8, col 4) -8 >})() + y; - ~~~~~~ => Pos: (92 to 97) SpanInfo: {"start":52,"length":44} >x = (function foo() { > return y; @@ -84,14 +70,7 @@ >:=> (line 9, col 0) to (line 11, col 9) 9 >x = y + 30 + (function foo() { - ~~ => Pos: (110 to 111) SpanInfo: {"start":111,"length":36} - >(function foo() { - > return y; - >})() - >:=> (line 9, col 13) to (line 11, col 4) -9 >x = y + 30 + (function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (112 to 128) SpanInfo: {"start":133,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (110 to 128) SpanInfo: {"start":133,"length":8} >return y >:=> (line 10, col 4) to (line 10, col 12) -------------------------------- @@ -102,15 +81,9 @@ >:=> (line 10, col 4) to (line 10, col 12) -------------------------------- 11 >})() * 40; - ~ => Pos: (143 to 143) SpanInfo: {"start":143,"length":1} + ~~~~ => Pos: (143 to 146) SpanInfo: {"start":143,"length":1} >} >:=> (line 11, col 0) to (line 11, col 1) -11 >})() * 40; - ~~~ => Pos: (144 to 146) SpanInfo: {"start":111,"length":36} - >(function foo() { - > return y; - >})() - >:=> (line 9, col 13) to (line 11, col 4) 11 >})() * 40; ~~~~~~ => Pos: (147 to 152) SpanInfo: {"start":98,"length":54} >x = y + 30 + (function foo() { diff --git a/tests/baselines/reference/bpSpan_classes.baseline b/tests/baselines/reference/bpSpan_classes.baseline index 811109af835..ecba5c8706a 100644 --- a/tests/baselines/reference/bpSpan_classes.baseline +++ b/tests/baselines/reference/bpSpan_classes.baseline @@ -171,14 +171,9 @@ -------------------------------- 15 > return new Greeter(greeting); - ~~~~~~~~~~~~~~ => Pos: (249 to 262) SpanInfo: {"start":257,"length":28} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (249 to 286) SpanInfo: {"start":257,"length":28} >return new Greeter(greeting) >:=> (line 15, col 8) to (line 15, col 36) -15 > return new Greeter(greeting); - - ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (263 to 286) SpanInfo: {"start":264,"length":21} - >new Greeter(greeting) - >:=> (line 15, col 15) to (line 15, col 36) -------------------------------- 16 > } @@ -192,25 +187,15 @@ -------------------------------- 18 > var greeter = new Greeter("Hello, world!"); - ~~~~~~~~~~~~~~~~~ => Pos: (294 to 310) SpanInfo: {"start":298,"length":42} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (294 to 341) SpanInfo: {"start":298,"length":42} >var greeter = new Greeter("Hello, world!") >:=> (line 18, col 4) to (line 18, col 46) -18 > var greeter = new Greeter("Hello, world!"); - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (311 to 341) SpanInfo: {"start":312,"length":28} - >new Greeter("Hello, world!") - >:=> (line 18, col 18) to (line 18, col 46) -------------------------------- 19 > var str = greeter.greet(); - ~~~~~~~~~~~~~ => Pos: (342 to 354) SpanInfo: {"start":346,"length":25} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (342 to 372) SpanInfo: {"start":346,"length":25} >var str = greeter.greet() >:=> (line 19, col 4) to (line 19, col 29) -19 > var str = greeter.greet(); - - ~~~~~~~~~~~~~~~~~~ => Pos: (355 to 372) SpanInfo: {"start":356,"length":15} - >greeter.greet() - >:=> (line 19, col 14) to (line 19, col 29) -------------------------------- 20 > @@ -240,14 +225,9 @@ -------------------------------- 23 > greeters[0] = new Greeter(greeting); - ~~~~~~~~~~~~~~~~~~~~~ => Pos: (525 to 545) SpanInfo: {"start":533,"length":35} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (525 to 569) SpanInfo: {"start":533,"length":35} >greeters[0] = new Greeter(greeting) >:=> (line 23, col 8) to (line 23, col 43) -23 > greeters[0] = new Greeter(greeting); - - ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (546 to 569) SpanInfo: {"start":547,"length":21} - >new Greeter(greeting) - >:=> (line 23, col 22) to (line 23, col 43) -------------------------------- 24 > for (var i = 0; i < restGreetings.length; i++) { @@ -267,17 +247,7 @@ -------------------------------- 25 > greeters.push(new Greeter(restGreetings[i])); - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (627 to 652) SpanInfo: {"start":639,"length":44} - >greeters.push(new Greeter(restGreetings[i])) - >:=> (line 25, col 12) to (line 25, col 56) -25 > greeters.push(new Greeter(restGreetings[i])); - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (653 to 681) SpanInfo: {"start":653,"length":29} - >new Greeter(restGreetings[i]) - >:=> (line 25, col 26) to (line 25, col 55) -25 > greeters.push(new Greeter(restGreetings[i])); - - ~~~=> Pos: (682 to 684) SpanInfo: {"start":639,"length":44} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (627 to 684) SpanInfo: {"start":639,"length":44} >greeters.push(new Greeter(restGreetings[i])) >:=> (line 25, col 12) to (line 25, col 56) -------------------------------- @@ -309,14 +279,9 @@ -------------------------------- 31 > var b = foo2("Hello", "World", "!"); - ~~~~~~~~~~~ => Pos: (728 to 738) SpanInfo: {"start":732,"length":35} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (728 to 768) SpanInfo: {"start":732,"length":35} >var b = foo2("Hello", "World", "!") >:=> (line 31, col 4) to (line 31, col 39) -31 > var b = foo2("Hello", "World", "!"); - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (739 to 768) SpanInfo: {"start":740,"length":27} - >foo2("Hello", "World", "!") - >:=> (line 31, col 12) to (line 31, col 39) -------------------------------- 32 > // This is simple signle line comment diff --git a/tests/baselines/reference/bpSpan_conditionalExpressions.baseline b/tests/baselines/reference/bpSpan_conditionalExpressions.baseline index 5abd49d50cf..17432ee5439 100644 --- a/tests/baselines/reference/bpSpan_conditionalExpressions.baseline +++ b/tests/baselines/reference/bpSpan_conditionalExpressions.baseline @@ -22,14 +22,7 @@ >:=> (line 3, col 0) to (line 7, col 4) 3 >var z = (function foo() { - ~~ => Pos: (44 to 45) SpanInfo: {"start":45,"length":36} - >(function foo() { - > return x; - >})() - >:=> (line 3, col 8) to (line 5, col 4) -3 >var z = (function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (46 to 62) SpanInfo: {"start":67,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (44 to 62) SpanInfo: {"start":67,"length":8} >return x >:=> (line 4, col 4) to (line 4, col 12) -------------------------------- @@ -41,18 +34,11 @@ -------------------------------- 5 >})() ? y : function bar() { - ~ => Pos: (77 to 77) SpanInfo: {"start":77,"length":1} + ~~~~ => Pos: (77 to 80) SpanInfo: {"start":77,"length":1} >} >:=> (line 5, col 0) to (line 5, col 1) 5 >})() ? y : function bar() { - ~~~ => Pos: (78 to 80) SpanInfo: {"start":45,"length":36} - >(function foo() { - > return x; - >})() - >:=> (line 3, col 8) to (line 5, col 4) -5 >})() ? y : function bar() { - ~~~~~~ => Pos: (81 to 86) SpanInfo: {"start":37,"length":90} >var z = (function foo() { > return x; @@ -74,16 +60,9 @@ -------------------------------- 7 >} (); - ~ => Pos: (123 to 123) SpanInfo: {"start":123,"length":1} + ~~~~~~ => Pos: (123 to 128) SpanInfo: {"start":123,"length":1} >} >:=> (line 7, col 0) to (line 7, col 1) -7 >} (); - - ~~~~~ => Pos: (124 to 128) SpanInfo: {"start":88,"length":39} - >function bar() { - > return x; - >} () - >:=> (line 5, col 11) to (line 7, col 4) -------------------------------- 8 >x = y ? (function () { @@ -94,14 +73,7 @@ >:=> (line 8, col 0) to (line 10, col 10) 8 >x = y ? (function () { - ~~ => Pos: (136 to 137) SpanInfo: {"start":137,"length":33} - >(function () { - > return z; - >})() - >:=> (line 8, col 8) to (line 10, col 4) -8 >x = y ? (function () { - - ~~~~~~~~~~~~~~ => Pos: (138 to 151) SpanInfo: {"start":156,"length":8} + ~~~~~~~~~~~~~~~~ => Pos: (136 to 151) SpanInfo: {"start":156,"length":8} >return z >:=> (line 9, col 4) to (line 9, col 12) -------------------------------- @@ -112,15 +84,9 @@ >:=> (line 9, col 4) to (line 9, col 12) -------------------------------- 10 >})() : 10; - ~ => Pos: (166 to 166) SpanInfo: {"start":166,"length":1} + ~~~~ => Pos: (166 to 169) SpanInfo: {"start":166,"length":1} >} >:=> (line 10, col 0) to (line 10, col 1) -10 >})() : 10; - ~~~ => Pos: (167 to 169) SpanInfo: {"start":137,"length":33} - >(function () { - > return z; - >})() - >:=> (line 8, col 8) to (line 10, col 4) 10 >})() : 10; ~~~~~~~ => Pos: (170 to 176) SpanInfo: {"start":129,"length":47} >x = y ? (function () { diff --git a/tests/baselines/reference/bpSpan_do.baseline b/tests/baselines/reference/bpSpan_do.baseline index 3ff287c2046..602ec5b16c7 100644 --- a/tests/baselines/reference/bpSpan_do.baseline +++ b/tests/baselines/reference/bpSpan_do.baseline @@ -107,14 +107,7 @@ >:=> (line 15, col 2) to (line 17, col 15) 15 >} while ((function () { - ~ => Pos: (131 to 131) SpanInfo: {"start":131,"length":46} - >(function () { - > return 30 * i; - > })() - >:=> (line 15, col 9) to (line 17, col 8) -15 >} while ((function () { - - ~~~~~~~~~~~~~~ => Pos: (132 to 145) SpanInfo: {"start":154,"length":13} + ~~~~~~~~~~~~~~~ => Pos: (131 to 145) SpanInfo: {"start":154,"length":13} >return 30 * i >:=> (line 16, col 8) to (line 16, col 21) -------------------------------- @@ -125,15 +118,9 @@ >:=> (line 16, col 8) to (line 16, col 21) -------------------------------- 17 > })() !== i); - ~~~~~ => Pos: (169 to 173) SpanInfo: {"start":173,"length":1} + ~~~~~~~~ => Pos: (169 to 176) SpanInfo: {"start":173,"length":1} >} >:=> (line 17, col 4) to (line 17, col 5) -17 > })() !== i); - ~~~ => Pos: (174 to 176) SpanInfo: {"start":131,"length":46} - >(function () { - > return 30 * i; - > })() - >:=> (line 15, col 9) to (line 17, col 8) 17 > })() !== i); ~~~~~~~~~ => Pos: (177 to 185) SpanInfo: {"start":124,"length":60} >while ((function () { diff --git a/tests/baselines/reference/bpSpan_forIn.baseline b/tests/baselines/reference/bpSpan_forIn.baseline index c2b72df5b12..1c46a83e3b4 100644 --- a/tests/baselines/reference/bpSpan_forIn.baseline +++ b/tests/baselines/reference/bpSpan_forIn.baseline @@ -104,14 +104,9 @@ -------------------------------- 17 > return new String(); - ~~~~~~~~~~ => Pos: (221 to 230) SpanInfo: {"start":225,"length":19} + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (221 to 245) SpanInfo: {"start":225,"length":19} >return new String() >:=> (line 17, col 4) to (line 17, col 23) -17 > return new String(); - - ~~~~~~~~~~~~~~~ => Pos: (231 to 245) SpanInfo: {"start":232,"length":12} - >new String() - >:=> (line 17, col 11) to (line 17, col 23) -------------------------------- 18 >}) { diff --git a/tests/baselines/reference/bpSpan_functionExpressions.baseline b/tests/baselines/reference/bpSpan_functionExpressions.baseline index 135edff9418..f75bde15f07 100644 --- a/tests/baselines/reference/bpSpan_functionExpressions.baseline +++ b/tests/baselines/reference/bpSpan_functionExpressions.baseline @@ -80,14 +80,9 @@ -------------------------------- 10 > return greet(msg); - ~~~~~~~~~~ => Pos: (235 to 244) SpanInfo: {"start":239,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (235 to 257) SpanInfo: {"start":239,"length":17} >return greet(msg) >:=> (line 10, col 4) to (line 10, col 21) -10 > return greet(msg); - - ~~~~~~~~~~~~~ => Pos: (245 to 257) SpanInfo: {"start":246,"length":10} - >greet(msg) - >:=> (line 10, col 11) to (line 10, col 21) -------------------------------- 11 >}; @@ -132,17 +127,7 @@ -------------------------------- 15 > if (!a()) { - ~~~~~~~~~ => Pos: (322 to 330) SpanInfo: {"start":326,"length":9} - >if (!a()) - >:=> (line 15, col 4) to (line 15, col 13) -15 > if (!a()) { - - ~~~ => Pos: (331 to 333) SpanInfo: {"start":331,"length":3} - >a() - >:=> (line 15, col 9) to (line 15, col 12) -15 > if (!a()) { - - ~~~~ => Pos: (334 to 337) SpanInfo: {"start":326,"length":9} + ~~~~~~~~~~~~~~~~ => Pos: (322 to 337) SpanInfo: {"start":326,"length":9} >if (!a()) >:=> (line 15, col 4) to (line 15, col 13) -------------------------------- diff --git a/tests/baselines/reference/bpSpan_ifElse.baseline b/tests/baselines/reference/bpSpan_ifElse.baseline index b66316d3392..fc9e5f6758a 100644 --- a/tests/baselines/reference/bpSpan_ifElse.baseline +++ b/tests/baselines/reference/bpSpan_ifElse.baseline @@ -131,18 +131,11 @@ -------------------------------- 20 >} ()) { - ~ => Pos: (193 to 193) SpanInfo: {"start":193,"length":1} + ~~~~ => Pos: (193 to 196) SpanInfo: {"start":193,"length":1} >} >:=> (line 20, col 0) to (line 20, col 1) 20 >} ()) { - ~~~ => Pos: (194 to 196) SpanInfo: {"start":161,"length":36} - >function foo() { - > return 30; - >} () - >:=> (line 18, col 4) to (line 20, col 4) -20 >} ()) { - ~ => Pos: (197 to 197) SpanInfo: {"start":157,"length":41} >if (function foo() { > return 30; diff --git a/tests/baselines/reference/bpSpan_import.baseline b/tests/baselines/reference/bpSpan_import.baseline index 26279b48f26..af0f959c57c 100644 --- a/tests/baselines/reference/bpSpan_import.baseline +++ b/tests/baselines/reference/bpSpan_import.baseline @@ -41,20 +41,11 @@ -------------------------------- 7 >var x = new a(); - ~~~~~~~ => Pos: (72 to 78) SpanInfo: {"start":72,"length":15} + ~~~~~~~~~~~~~~~~~ => Pos: (72 to 88) SpanInfo: {"start":72,"length":15} >var x = new a() >:=> (line 7, col 0) to (line 7, col 15) -7 >var x = new a(); - - ~~~~~~~~~~ => Pos: (79 to 88) SpanInfo: {"start":80,"length":7} - >new a() - >:=> (line 7, col 8) to (line 7, col 15) -------------------------------- 8 >var y = new b(); - ~~~~~~~ => Pos: (89 to 95) SpanInfo: {"start":89,"length":15} + ~~~~~~~~~~~~~~~~ => Pos: (89 to 104) SpanInfo: {"start":89,"length":15} >var y = new b() - >:=> (line 8, col 0) to (line 8, col 15) -8 >var y = new b(); - ~~~~~~~~~ => Pos: (96 to 104) SpanInfo: {"start":97,"length":7} - >new b() - >:=> (line 8, col 8) to (line 8, col 15) \ No newline at end of file + >:=> (line 8, col 0) to (line 8, col 15) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpan_parenCallOrNewExpressions.baseline b/tests/baselines/reference/bpSpan_parenCallOrNewExpressions.baseline index 47c932640f9..bcc2326c1f3 100644 --- a/tests/baselines/reference/bpSpan_parenCallOrNewExpressions.baseline +++ b/tests/baselines/reference/bpSpan_parenCallOrNewExpressions.baseline @@ -26,105 +26,46 @@ >:=> (line 4, col 0) to (line 6, col 5) 4 >foo((function bar() { - ~ => Pos: (46 to 46) SpanInfo: {"start":46,"length":42} - >(function bar() { - > return foo(40); - >})() - >:=> (line 4, col 4) to (line 6, col 4) -4 >foo((function bar() { - - ~~~~~~~~~~~~~~~~~ => Pos: (47 to 63) SpanInfo: {"start":68,"length":14} + ~~~~~~~~~~~~~~~~~~ => Pos: (46 to 63) SpanInfo: {"start":68,"length":14} >return foo(40) >:=> (line 5, col 4) to (line 5, col 18) -------------------------------- 5 > return foo(40); - ~~~~~~~~~~ => Pos: (64 to 73) SpanInfo: {"start":68,"length":14} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (64 to 83) SpanInfo: {"start":68,"length":14} >return foo(40) >:=> (line 5, col 4) to (line 5, col 18) -5 > return foo(40); - - ~~~~~~~~~~ => Pos: (74 to 83) SpanInfo: {"start":75,"length":7} - >foo(40) - >:=> (line 5, col 11) to (line 5, col 18) -------------------------------- 6 >})()); - ~ => Pos: (84 to 84) SpanInfo: {"start":84,"length":1} + ~~~~~~~ => Pos: (84 to 90) SpanInfo: {"start":84,"length":1} >} >:=> (line 6, col 0) to (line 6, col 1) -6 >})()); - - ~~~ => Pos: (85 to 87) SpanInfo: {"start":46,"length":42} - >(function bar() { - > return foo(40); - >})() - >:=> (line 4, col 4) to (line 6, col 4) -6 >})()); - - ~~~ => Pos: (88 to 90) SpanInfo: {"start":42,"length":47} - >foo((function bar() { - > return foo(40); - >})()) - >:=> (line 4, col 0) to (line 6, col 5) -------------------------------- 7 >var y = foo((function () { - ~~~~~~~ => Pos: (91 to 97) SpanInfo: {"start":91,"length":52} + ~~~~~~~~~~~~ => Pos: (91 to 102) SpanInfo: {"start":91,"length":52} >var y = foo((function () { > return foo(40); >})()) >:=> (line 7, col 0) to (line 9, col 5) 7 >var y = foo((function () { - ~~~~~ => Pos: (98 to 102) SpanInfo: {"start":99,"length":44} - >foo((function () { - > return foo(40); - >})()) - >:=> (line 7, col 8) to (line 9, col 5) -7 >var y = foo((function () { - - ~ => Pos: (103 to 103) SpanInfo: {"start":103,"length":39} - >(function () { - > return foo(40); - >})() - >:=> (line 7, col 12) to (line 9, col 4) -7 >var y = foo((function () { - - ~~~~~~~~~~~~~~ => Pos: (104 to 117) SpanInfo: {"start":122,"length":14} + ~~~~~~~~~~~~~~~ => Pos: (103 to 117) SpanInfo: {"start":122,"length":14} >return foo(40) >:=> (line 8, col 4) to (line 8, col 18) -------------------------------- 8 > return foo(40); - ~~~~~~~~~~ => Pos: (118 to 127) SpanInfo: {"start":122,"length":14} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (118 to 137) SpanInfo: {"start":122,"length":14} >return foo(40) >:=> (line 8, col 4) to (line 8, col 18) -8 > return foo(40); - - ~~~~~~~~~~ => Pos: (128 to 137) SpanInfo: {"start":129,"length":7} - >foo(40) - >:=> (line 8, col 11) to (line 8, col 18) -------------------------------- 9 >})());; - ~ => Pos: (138 to 138) SpanInfo: {"start":138,"length":1} + ~~~~~~~~ => Pos: (138 to 145) SpanInfo: {"start":138,"length":1} >} >:=> (line 9, col 0) to (line 9, col 1) -9 >})());; - - ~~~ => Pos: (139 to 141) SpanInfo: {"start":103,"length":39} - >(function () { - > return foo(40); - >})() - >:=> (line 7, col 12) to (line 9, col 4) -9 >})());; - - ~~~~ => Pos: (142 to 145) SpanInfo: {"start":99,"length":44} - >foo((function () { - > return foo(40); - >})()) - >:=> (line 7, col 8) to (line 9, col 5) -------------------------------- 10 >class greeter { @@ -167,25 +108,15 @@ -------------------------------- 16 >y = foo(30); - ~~~ => Pos: (221 to 223) SpanInfo: {"start":221,"length":11} + ~~~~~~~~~~~~~ => Pos: (221 to 233) SpanInfo: {"start":221,"length":11} >y = foo(30) >:=> (line 16, col 0) to (line 16, col 11) -16 >y = foo(30); - - ~~~~~~~~~~ => Pos: (224 to 233) SpanInfo: {"start":225,"length":7} - >foo(30) - >:=> (line 16, col 4) to (line 16, col 11) -------------------------------- 17 >y = foo(500 + y); - ~~~ => Pos: (234 to 236) SpanInfo: {"start":234,"length":16} + ~~~~~~~~~~~~~~~~~~ => Pos: (234 to 251) SpanInfo: {"start":234,"length":16} >y = foo(500 + y) >:=> (line 17, col 0) to (line 17, col 16) -17 >y = foo(500 + y); - - ~~~~~~~~~~~~~~~ => Pos: (237 to 251) SpanInfo: {"start":238,"length":12} - >foo(500 + y) - >:=> (line 17, col 4) to (line 17, col 16) -------------------------------- 18 >new greeter((function bar() { @@ -196,127 +127,58 @@ >:=> (line 18, col 0) to (line 20, col 5) 18 >new greeter((function bar() { - ~ => Pos: (264 to 264) SpanInfo: {"start":264,"length":42} - >(function bar() { - > return foo(40); - >})() - >:=> (line 18, col 12) to (line 20, col 4) -18 >new greeter((function bar() { - - ~~~~~~~~~~~~~~~~~ => Pos: (265 to 281) SpanInfo: {"start":286,"length":14} + ~~~~~~~~~~~~~~~~~~ => Pos: (264 to 281) SpanInfo: {"start":286,"length":14} >return foo(40) >:=> (line 19, col 4) to (line 19, col 18) -------------------------------- 19 > return foo(40); - ~~~~~~~~~~ => Pos: (282 to 291) SpanInfo: {"start":286,"length":14} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (282 to 301) SpanInfo: {"start":286,"length":14} >return foo(40) >:=> (line 19, col 4) to (line 19, col 18) -19 > return foo(40); - - ~~~~~~~~~~ => Pos: (292 to 301) SpanInfo: {"start":293,"length":7} - >foo(40) - >:=> (line 19, col 11) to (line 19, col 18) -------------------------------- 20 >})()); - ~ => Pos: (302 to 302) SpanInfo: {"start":302,"length":1} + ~~~~~~~ => Pos: (302 to 308) SpanInfo: {"start":302,"length":1} >} >:=> (line 20, col 0) to (line 20, col 1) -20 >})()); - - ~~~ => Pos: (303 to 305) SpanInfo: {"start":264,"length":42} - >(function bar() { - > return foo(40); - >})() - >:=> (line 18, col 12) to (line 20, col 4) -20 >})()); - - ~~~ => Pos: (306 to 308) SpanInfo: {"start":252,"length":55} - >new greeter((function bar() { - > return foo(40); - >})()) - >:=> (line 18, col 0) to (line 20, col 5) -------------------------------- 21 >var anotherGreeter = new greeter((function bar() { - ~~~~~~~~~~~~~~~~~~~~ => Pos: (309 to 328) SpanInfo: {"start":309,"length":76} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (309 to 341) SpanInfo: {"start":309,"length":76} >var anotherGreeter = new greeter((function bar() { > return foo(40); >})()) >:=> (line 21, col 0) to (line 23, col 5) 21 >var anotherGreeter = new greeter((function bar() { - ~~~~~~~~~~~~~ => Pos: (329 to 341) SpanInfo: {"start":330,"length":55} - >new greeter((function bar() { - > return foo(40); - >})()) - >:=> (line 21, col 21) to (line 23, col 5) -21 >var anotherGreeter = new greeter((function bar() { - - ~ => Pos: (342 to 342) SpanInfo: {"start":342,"length":42} - >(function bar() { - > return foo(40); - >})() - >:=> (line 21, col 33) to (line 23, col 4) -21 >var anotherGreeter = new greeter((function bar() { - - ~~~~~~~~~~~~~~~~~=> Pos: (343 to 359) SpanInfo: {"start":364,"length":14} + ~~~~~~~~~~~~~~~~~~=> Pos: (342 to 359) SpanInfo: {"start":364,"length":14} >return foo(40) >:=> (line 22, col 4) to (line 22, col 18) -------------------------------- 22 > return foo(40); - ~~~~~~~~~~ => Pos: (360 to 369) SpanInfo: {"start":364,"length":14} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (360 to 379) SpanInfo: {"start":364,"length":14} >return foo(40) >:=> (line 22, col 4) to (line 22, col 18) -22 > return foo(40); - - ~~~~~~~~~~ => Pos: (370 to 379) SpanInfo: {"start":371,"length":7} - >foo(40) - >:=> (line 22, col 11) to (line 22, col 18) -------------------------------- 23 >})()); - ~ => Pos: (380 to 380) SpanInfo: {"start":380,"length":1} + ~~~~~~~ => Pos: (380 to 386) SpanInfo: {"start":380,"length":1} >} >:=> (line 23, col 0) to (line 23, col 1) -23 >})()); - - ~~~ => Pos: (381 to 383) SpanInfo: {"start":342,"length":42} - >(function bar() { - > return foo(40); - >})() - >:=> (line 21, col 33) to (line 23, col 4) -23 >})()); - - ~~~ => Pos: (384 to 386) SpanInfo: {"start":330,"length":55} - >new greeter((function bar() { - > return foo(40); - >})()) - >:=> (line 21, col 21) to (line 23, col 5) -------------------------------- 24 >anotherGreeter = new greeter(30); - ~~~~~~~~~~~~~~~~ => Pos: (387 to 402) SpanInfo: {"start":387,"length":32} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (387 to 420) SpanInfo: {"start":387,"length":32} >anotherGreeter = new greeter(30) >:=> (line 24, col 0) to (line 24, col 32) -24 >anotherGreeter = new greeter(30); - - ~~~~~~~~~~~~~~~~~~ => Pos: (403 to 420) SpanInfo: {"start":404,"length":15} - >new greeter(30) - >:=> (line 24, col 17) to (line 24, col 32) -------------------------------- 25 >anotherGreeter = new greeter(40 + y); - ~~~~~~~~~~~~~~~~ => Pos: (421 to 436) SpanInfo: {"start":421,"length":36} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (421 to 458) SpanInfo: {"start":421,"length":36} >anotherGreeter = new greeter(40 + y) >:=> (line 25, col 0) to (line 25, col 36) -25 >anotherGreeter = new greeter(40 + y); - - ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (437 to 458) SpanInfo: {"start":438,"length":19} - >new greeter(40 + y) - >:=> (line 25, col 17) to (line 25, col 36) -------------------------------- 26 >new greeter(30); @@ -343,22 +205,6 @@ >:=> (line 29, col 0) to (line 29, col 1) -------------------------------- 30 >foo2(foo(30), foo(40).toString()); - ~~~~~ => Pos: (537 to 541) SpanInfo: {"start":537,"length":33} - >foo2(foo(30), foo(40).toString()) - >:=> (line 30, col 0) to (line 30, col 33) -30 >foo2(foo(30), foo(40).toString()); - ~~~~~~~~ => Pos: (542 to 549) SpanInfo: {"start":542,"length":7} - >foo(30) - >:=> (line 30, col 5) to (line 30, col 12) -30 >foo2(foo(30), foo(40).toString()); - ~~~~~~~~ => Pos: (550 to 557) SpanInfo: {"start":551,"length":7} - >foo(40) - >:=> (line 30, col 14) to (line 30, col 21) -30 >foo2(foo(30), foo(40).toString()); - ~~~~~~~~~~~ => Pos: (558 to 568) SpanInfo: {"start":551,"length":18} - >foo(40).toString() - >:=> (line 30, col 14) to (line 30, col 32) -30 >foo2(foo(30), foo(40).toString()); - ~~ => Pos: (569 to 570) SpanInfo: {"start":537,"length":33} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (537 to 570) SpanInfo: {"start":537,"length":33} >foo2(foo(30), foo(40).toString()) >:=> (line 30, col 0) to (line 30, col 33) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpan_stmts.baseline b/tests/baselines/reference/bpSpan_stmts.baseline index 7f6bf21b40b..b818c9c9e30 100644 --- a/tests/baselines/reference/bpSpan_stmts.baseline +++ b/tests/baselines/reference/bpSpan_stmts.baseline @@ -278,14 +278,9 @@ -------------------------------- 37 > throw new Error(); - ~~~~~~~~~~~~~ => Pos: (549 to 561) SpanInfo: {"start":557,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (549 to 575) SpanInfo: {"start":557,"length":17} >throw new Error() >:=> (line 37, col 8) to (line 37, col 25) -37 > throw new Error(); - - ~~~~~~~~~~~~~~ => Pos: (562 to 575) SpanInfo: {"start":563,"length":11} - >new Error() - >:=> (line 37, col 14) to (line 37, col 25) -------------------------------- 38 > } catch (e1) { diff --git a/tests/baselines/reference/bpSpan_switch.baseline b/tests/baselines/reference/bpSpan_switch.baseline index c0e2259784d..7fde6067ed0 100644 --- a/tests/baselines/reference/bpSpan_switch.baseline +++ b/tests/baselines/reference/bpSpan_switch.baseline @@ -176,14 +176,7 @@ >:=> (line 29, col 0) to (line 31, col 5) 29 >switch ((function foo() { - ~ => Pos: (357 to 357) SpanInfo: {"start":357,"length":41} - >(function foo() { - > return x * 30; - >})() - >:=> (line 29, col 8) to (line 31, col 4) -29 >switch ((function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (358 to 374) SpanInfo: {"start":379,"length":13} + ~~~~~~~~~~~~~~~~~~ => Pos: (357 to 374) SpanInfo: {"start":379,"length":13} >return x * 30 >:=> (line 30, col 4) to (line 30, col 17) -------------------------------- @@ -195,18 +188,11 @@ -------------------------------- 31 >})()) { - ~ => Pos: (394 to 394) SpanInfo: {"start":394,"length":1} + ~~~~ => Pos: (394 to 397) SpanInfo: {"start":394,"length":1} >} >:=> (line 31, col 0) to (line 31, col 1) 31 >})()) { - ~~~ => Pos: (395 to 397) SpanInfo: {"start":357,"length":41} - >(function foo() { - > return x * 30; - >})() - >:=> (line 29, col 8) to (line 31, col 4) -31 >})()) { - ~ => Pos: (398 to 398) SpanInfo: {"start":349,"length":50} >switch ((function foo() { > return x * 30; @@ -225,14 +211,7 @@ >:=> (line 35, col 8) to (line 35, col 11) 32 > case (function bar() { - ~~ => Pos: (410 to 411) SpanInfo: {"start":411,"length":45} - >(function bar() { - > return 30; - > })() - >:=> (line 32, col 9) to (line 34, col 8) -32 > case (function bar() { - - ~~~~~~~~~~~~~~~~~ => Pos: (412 to 428) SpanInfo: {"start":437,"length":9} + ~~~~~~~~~~~~~~~~~~~ => Pos: (410 to 428) SpanInfo: {"start":437,"length":9} >return 30 >:=> (line 33, col 8) to (line 33, col 17) -------------------------------- @@ -244,18 +223,11 @@ -------------------------------- 34 > })(): - ~~~~~ => Pos: (448 to 452) SpanInfo: {"start":452,"length":1} + ~~~~~~~~ => Pos: (448 to 455) SpanInfo: {"start":452,"length":1} >} >:=> (line 34, col 4) to (line 34, col 5) 34 > })(): - ~~~ => Pos: (453 to 455) SpanInfo: {"start":411,"length":45} - >(function bar() { - > return 30; - > })() - >:=> (line 32, col 9) to (line 34, col 8) -34 > })(): - ~~ => Pos: (456 to 457) SpanInfo: {"start":466,"length":3} >x++ >:=> (line 35, col 8) to (line 35, col 11) diff --git a/tests/baselines/reference/bpSpan_tryCatchFinally.baseline b/tests/baselines/reference/bpSpan_tryCatchFinally.baseline index e5465b8812c..c35683b6e53 100644 --- a/tests/baselines/reference/bpSpan_tryCatchFinally.baseline +++ b/tests/baselines/reference/bpSpan_tryCatchFinally.baseline @@ -85,14 +85,9 @@ -------------------------------- 12 > throw new Error(); - ~~~~~~~~~ => Pos: (113 to 121) SpanInfo: {"start":117,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (113 to 135) SpanInfo: {"start":117,"length":17} >throw new Error() >:=> (line 12, col 4) to (line 12, col 21) -12 > throw new Error(); - - ~~~~~~~~~~~~~~ => Pos: (122 to 135) SpanInfo: {"start":123,"length":11} - >new Error() - >:=> (line 12, col 10) to (line 12, col 21) -------------------------------- 13 >} @@ -173,45 +168,21 @@ >:=> (line 23, col 4) to (line 25, col 8) 23 > throw (function foo() { - ~~ => Pos: (210 to 211) SpanInfo: {"start":211,"length":59} - >(function foo() { - > new Error(x.toString()); - > })() - >:=> (line 23, col 10) to (line 25, col 8) -23 > throw (function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (212 to 228) SpanInfo: {"start":237,"length":23} + ~~~~~~~~~~~~~~~~~~~ => Pos: (210 to 228) SpanInfo: {"start":237,"length":23} >new Error(x.toString()) >:=> (line 24, col 8) to (line 24, col 31) -------------------------------- 24 > new Error(x.toString()); - ~~~~~~~~~~~~~~~~~~ => Pos: (229 to 246) SpanInfo: {"start":237,"length":23} - >new Error(x.toString()) - >:=> (line 24, col 8) to (line 24, col 31) -24 > new Error(x.toString()); - - ~~~~~~~~~~~~ => Pos: (247 to 258) SpanInfo: {"start":247,"length":12} - >x.toString() - >:=> (line 24, col 18) to (line 24, col 30) -24 > new Error(x.toString()); - - ~~~ => Pos: (259 to 261) SpanInfo: {"start":237,"length":23} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (229 to 261) SpanInfo: {"start":237,"length":23} >new Error(x.toString()) >:=> (line 24, col 8) to (line 24, col 31) -------------------------------- 25 > })(); - ~~~~~ => Pos: (262 to 266) SpanInfo: {"start":266,"length":1} + ~~~~~~~~~~ => Pos: (262 to 271) SpanInfo: {"start":266,"length":1} >} >:=> (line 25, col 4) to (line 25, col 5) -25 > })(); - - ~~~~~ => Pos: (267 to 271) SpanInfo: {"start":211,"length":59} - >(function foo() { - > new Error(x.toString()); - > })() - >:=> (line 23, col 10) to (line 25, col 8) -------------------------------- 26 >} diff --git a/tests/baselines/reference/bpSpan_typeAssertionExpressions.baseline b/tests/baselines/reference/bpSpan_typeAssertionExpressions.baseline index c04ddb8503b..9a15f782081 100644 --- a/tests/baselines/reference/bpSpan_typeAssertionExpressions.baseline +++ b/tests/baselines/reference/bpSpan_typeAssertionExpressions.baseline @@ -14,28 +14,13 @@ -------------------------------- 3 >var a = new Greeter(); - ~~~~~~~ => Pos: (18 to 24) SpanInfo: {"start":18,"length":30} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (18 to 49) SpanInfo: {"start":18,"length":30} >var a = new Greeter() >:=> (line 3, col 0) to (line 3, col 30) -3 >var a = new Greeter(); - - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (25 to 49) SpanInfo: {"start":35,"length":13} - >new Greeter() - >:=> (line 3, col 17) to (line 3, col 30) -------------------------------- 4 >a = ( new Greeter()); - ~~~~~ => Pos: (50 to 54) SpanInfo: {"start":50,"length":29} - >a = ( new Greeter()) - >:=> (line 4, col 0) to (line 4, col 29) -4 >a = ( new Greeter()); - - ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (55 to 77) SpanInfo: {"start":65,"length":13} - >new Greeter() - >:=> (line 4, col 15) to (line 4, col 28) -4 >a = ( new Greeter()); - - ~~~ => Pos: (78 to 80) SpanInfo: {"start":50,"length":29} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 80) SpanInfo: {"start":50,"length":29} >a = ( new Greeter()) >:=> (line 4, col 0) to (line 4, col 29) -------------------------------- @@ -48,35 +33,17 @@ >:=> (line 5, col 0) to (line 7, col 4) 5 >a = (function foo() { - ~~~~~~~~~~~ => Pos: (84 to 94) SpanInfo: {"start":94,"length":48} - >(function foo() { - > return new Greeter(); - >})() - >:=> (line 5, col 13) to (line 7, col 4) -5 >a = (function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (95 to 111) SpanInfo: {"start":116,"length":20} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (84 to 111) SpanInfo: {"start":116,"length":20} >return new Greeter() >:=> (line 6, col 4) to (line 6, col 24) -------------------------------- 6 > return new Greeter(); - ~~~~~~~~~~ => Pos: (112 to 121) SpanInfo: {"start":116,"length":20} + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (112 to 137) SpanInfo: {"start":116,"length":20} >return new Greeter() >:=> (line 6, col 4) to (line 6, col 24) -6 > return new Greeter(); - - ~~~~~~~~~~~~~~~~ => Pos: (122 to 137) SpanInfo: {"start":123,"length":13} - >new Greeter() - >:=> (line 6, col 11) to (line 6, col 24) -------------------------------- 7 >})(); - ~ => Pos: (138 to 138) SpanInfo: {"start":138,"length":1} + ~~~~~ => Pos: (138 to 142) SpanInfo: {"start":138,"length":1} >} - >:=> (line 7, col 0) to (line 7, col 1) -7 >})(); - ~~~~ => Pos: (139 to 142) SpanInfo: {"start":94,"length":48} - >(function foo() { - > return new Greeter(); - >})() - >:=> (line 5, col 13) to (line 7, col 4) \ No newline at end of file + >:=> (line 7, col 0) to (line 7, col 1) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpan_typealias.baseline b/tests/baselines/reference/bpSpan_typealias.baseline index 88e60b55e47..80e654ad2f3 100644 --- a/tests/baselines/reference/bpSpan_typealias.baseline +++ b/tests/baselines/reference/bpSpan_typealias.baseline @@ -52,25 +52,15 @@ -------------------------------- 8 > var x: a = new m.c(); - ~~~~~~~~~~~~~~ => Pos: (111 to 124) SpanInfo: {"start":115,"length":20} + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (111 to 136) SpanInfo: {"start":115,"length":20} >var x: a = new m.c() >:=> (line 8, col 4) to (line 8, col 24) -8 > var x: a = new m.c(); - - ~~~~~~~~~~~~ => Pos: (125 to 136) SpanInfo: {"start":126,"length":9} - >new m.c() - >:=> (line 8, col 15) to (line 8, col 24) -------------------------------- 9 > var y: b = new m.c(); - ~~~~~~~~~~~~~~ => Pos: (137 to 150) SpanInfo: {"start":141,"length":20} + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (137 to 162) SpanInfo: {"start":141,"length":20} >var y: b = new m.c() >:=> (line 9, col 4) to (line 9, col 24) -9 > var y: b = new m.c(); - - ~~~~~~~~~~~~ => Pos: (151 to 162) SpanInfo: {"start":152,"length":9} - >new m.c() - >:=> (line 9, col 15) to (line 9, col 24) -------------------------------- 10 >} ~ => Pos: (163 to 163) SpanInfo: {"start":163,"length":1} diff --git a/tests/baselines/reference/bpSpan_unaryExpressions.baseline b/tests/baselines/reference/bpSpan_unaryExpressions.baseline index 2ad1191cf95..e0433bf5fad 100644 --- a/tests/baselines/reference/bpSpan_unaryExpressions.baseline +++ b/tests/baselines/reference/bpSpan_unaryExpressions.baseline @@ -32,14 +32,7 @@ >:=> (line 5, col 0) to (line 7, col 4) 5 >typeof (function foo() { - ~~ => Pos: (40 to 41) SpanInfo: {"start":41,"length":36} - >(function foo() { - > return y; - >})() - >:=> (line 5, col 7) to (line 7, col 4) -5 >typeof (function foo() { - - ~~~~~~~~~~~~~~~~~ => Pos: (42 to 58) SpanInfo: {"start":63,"length":8} + ~~~~~~~~~~~~~~~~~~~ => Pos: (40 to 58) SpanInfo: {"start":63,"length":8} >return y >:=> (line 6, col 4) to (line 6, col 12) -------------------------------- @@ -51,16 +44,9 @@ -------------------------------- 7 >})(); - ~ => Pos: (73 to 73) SpanInfo: {"start":73,"length":1} + ~~~~~~ => Pos: (73 to 78) SpanInfo: {"start":73,"length":1} >} >:=> (line 7, col 0) to (line 7, col 1) -7 >})(); - - ~~~~~ => Pos: (74 to 78) SpanInfo: {"start":41,"length":36} - >(function foo() { - > return y; - >})() - >:=> (line 5, col 7) to (line 7, col 4) -------------------------------- 8 >++x; diff --git a/tests/baselines/reference/bpSpan_while.baseline b/tests/baselines/reference/bpSpan_while.baseline index 91632b78009..464a736447a 100644 --- a/tests/baselines/reference/bpSpan_while.baseline +++ b/tests/baselines/reference/bpSpan_while.baseline @@ -79,14 +79,7 @@ >:=> (line 12, col 0) to (line 14, col 11) 12 >while ((function () { - ~ => Pos: (126 to 126) SpanInfo: {"start":126,"length":38} - >(function () { - > return 30 * a; - >})() - >:=> (line 12, col 7) to (line 14, col 4) -12 >while ((function () { - - ~~~~~~~~~~~~~~ => Pos: (127 to 140) SpanInfo: {"start":145,"length":13} + ~~~~~~~~~~~~~~~ => Pos: (126 to 140) SpanInfo: {"start":145,"length":13} >return 30 * a >:=> (line 13, col 4) to (line 13, col 17) -------------------------------- @@ -98,18 +91,11 @@ -------------------------------- 14 >})() !== a) { - ~ => Pos: (160 to 160) SpanInfo: {"start":160,"length":1} + ~~~~ => Pos: (160 to 163) SpanInfo: {"start":160,"length":1} >} >:=> (line 14, col 0) to (line 14, col 1) 14 >})() !== a) { - ~~~ => Pos: (161 to 163) SpanInfo: {"start":126,"length":38} - >(function () { - > return 30 * a; - >})() - >:=> (line 12, col 7) to (line 14, col 4) -14 >})() !== a) { - ~~~~~~~ => Pos: (164 to 170) SpanInfo: {"start":119,"length":52} >while ((function () { > return 30 * a; From 7146b4870f9300f31dc0c8d4fbf8fe59d43b0772 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 21 Dec 2015 15:48:26 -0800 Subject: [PATCH 086/164] Test cases for breakpoints in assingment statement with destructuring --- ...nmentStatementArrayBindingPattern.baseline | 275 ++++++++++++++++++ ...tArrayBindingPatternDefaultValues.baseline | 265 +++++++++++++++++ ...gAssignmentStatementArrayBindingPattern.ts | 55 ++++ ...atementArrayBindingPatternDefaultValues.ts | 53 ++++ 4 files changed, 648 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline new file mode 100644 index 00000000000..b49dabe0f82 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline @@ -0,0 +1,275 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 > + + ~ => Pos: (142 to 142) SpanInfo: undefined +-------------------------------- +7 >var robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (143 to 186) SpanInfo: {"start":143,"length":42} + >var robotA: Robot = [1, "mower", "mowing"] + >:=> (line 7, col 0) to (line 7, col 42) +-------------------------------- +8 >var robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (187 to 234) SpanInfo: {"start":187,"length":46} + >var robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 8, col 0) to (line 8, col 46) +-------------------------------- +9 >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (235 to 298) SpanInfo: {"start":235,"length":62} + >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 9, col 0) to (line 9, col 62) +-------------------------------- +10 >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (299 to 372) SpanInfo: {"start":299,"length":72} + >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 10, col 0) to (line 10, col 72) +-------------------------------- +11 > + + ~ => Pos: (373 to 373) SpanInfo: undefined +-------------------------------- +12 >let nameA: string, numberB: number, nameB: string, skillB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (374 to 440) SpanInfo: undefined +-------------------------------- +13 >let robotAInfo: (number | string)[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (441 to 477) SpanInfo: undefined +-------------------------------- +14 > + + ~ => Pos: (478 to 478) SpanInfo: undefined +-------------------------------- +15 >let multiSkillB: [string, string], nameMB: string, primarySkillB: string, secondarySkillB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (479 to 577) SpanInfo: undefined +-------------------------------- +16 >let multiRobotAInfo: (string | [string, string])[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (578 to 629) SpanInfo: undefined +-------------------------------- +17 > + + ~ => Pos: (630 to 630) SpanInfo: undefined +-------------------------------- +18 >[, nameA] = robotA; + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (631 to 650) SpanInfo: {"start":631,"length":18} + >[, nameA] = robotA + >:=> (line 18, col 0) to (line 18, col 18) +-------------------------------- +19 >[, nameB] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (651 to 675) SpanInfo: {"start":651,"length":23} + >[, nameB] = getRobotB() + >:=> (line 19, col 0) to (line 19, col 23) +-------------------------------- +20 >[, nameB] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (676 to 715) SpanInfo: {"start":676,"length":38} + >[, nameB] = [2, "trimmer", "trimming"] + >:=> (line 20, col 0) to (line 20, col 38) +-------------------------------- +21 >[, multiSkillB] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (716 to 746) SpanInfo: {"start":716,"length":29} + >[, multiSkillB] = multiRobotB + >:=> (line 21, col 0) to (line 21, col 29) +-------------------------------- +22 >[, multiSkillB] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (747 to 782) SpanInfo: {"start":747,"length":34} + >[, multiSkillB] = getMultiRobotB() + >:=> (line 22, col 0) to (line 22, col 34) +-------------------------------- +23 >[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (783 to 835) SpanInfo: {"start":783,"length":51} + >[, multiSkillB] = ["roomba", ["vaccum", "mopping"]] + >:=> (line 23, col 0) to (line 23, col 51) +-------------------------------- +24 > + + ~ => Pos: (836 to 836) SpanInfo: undefined +-------------------------------- +25 >[numberB] = robotB; + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (837 to 856) SpanInfo: {"start":837,"length":18} + >[numberB] = robotB + >:=> (line 25, col 0) to (line 25, col 18) +-------------------------------- +26 >[numberB] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (857 to 881) SpanInfo: {"start":857,"length":23} + >[numberB] = getRobotB() + >:=> (line 26, col 0) to (line 26, col 23) +-------------------------------- +27 >[numberB] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (882 to 921) SpanInfo: {"start":882,"length":38} + >[numberB] = [2, "trimmer", "trimming"] + >:=> (line 27, col 0) to (line 27, col 38) +-------------------------------- +28 >[nameMB] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (922 to 945) SpanInfo: {"start":922,"length":22} + >[nameMB] = multiRobotB + >:=> (line 28, col 0) to (line 28, col 22) +-------------------------------- +29 >[nameMB] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (946 to 974) SpanInfo: {"start":946,"length":27} + >[nameMB] = getMultiRobotB() + >:=> (line 29, col 0) to (line 29, col 27) +-------------------------------- +30 >[nameMB] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (975 to 1022) SpanInfo: {"start":975,"length":46} + >[nameMB] = ["trimmer", ["trimming", "edging"]] + >:=> (line 30, col 0) to (line 30, col 46) +-------------------------------- +31 > + + ~ => Pos: (1023 to 1023) SpanInfo: undefined +-------------------------------- +32 >[numberB, nameB, skillB] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1024 to 1058) SpanInfo: {"start":1024,"length":33} + >[numberB, nameB, skillB] = robotB + >:=> (line 32, col 0) to (line 32, col 33) +-------------------------------- +33 >[numberB, nameB, skillB] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1059 to 1098) SpanInfo: {"start":1059,"length":38} + >[numberB, nameB, skillB] = getRobotB() + >:=> (line 33, col 0) to (line 33, col 38) +-------------------------------- +34 >[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1099 to 1153) SpanInfo: {"start":1099,"length":53} + >[numberB, nameB, skillB] = [2, "trimmer", "trimming"] + >:=> (line 34, col 0) to (line 34, col 53) +-------------------------------- +35 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1154 to 1211) SpanInfo: {"start":1154,"length":56} + >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB + >:=> (line 35, col 0) to (line 35, col 56) +-------------------------------- +36 >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1212 to 1274) SpanInfo: {"start":1212,"length":61} + >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB() + >:=> (line 36, col 0) to (line 36, col 61) +-------------------------------- +37 >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1275 to 1356) SpanInfo: {"start":1275,"length":80} + >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]] + >:=> (line 37, col 0) to (line 37, col 80) +-------------------------------- +38 > + + ~ => Pos: (1357 to 1357) SpanInfo: undefined +-------------------------------- +39 >[numberB, ...robotAInfo] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1358 to 1392) SpanInfo: {"start":1358,"length":33} + >[numberB, ...robotAInfo] = robotB + >:=> (line 39, col 0) to (line 39, col 33) +-------------------------------- +40 >[numberB, ...robotAInfo] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1393 to 1432) SpanInfo: {"start":1393,"length":38} + >[numberB, ...robotAInfo] = getRobotB() + >:=> (line 40, col 0) to (line 40, col 38) +-------------------------------- +41 >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1433 to 1494) SpanInfo: {"start":1433,"length":60} + >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"] + >:=> (line 41, col 0) to (line 41, col 60) +-------------------------------- +42 >[...multiRobotAInfo] = multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1495 to 1530) SpanInfo: {"start":1495,"length":34} + >[...multiRobotAInfo] = multiRobotA + >:=> (line 42, col 0) to (line 42, col 34) +-------------------------------- +43 >[...multiRobotAInfo] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1531 to 1571) SpanInfo: {"start":1531,"length":39} + >[...multiRobotAInfo] = getMultiRobotB() + >:=> (line 43, col 0) to (line 43, col 39) +-------------------------------- +44 >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1572 to 1631) SpanInfo: {"start":1572,"length":58} + >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] + >:=> (line 44, col 0) to (line 44, col 58) +-------------------------------- +45 > + + ~ => Pos: (1632 to 1632) SpanInfo: undefined +-------------------------------- +46 >function getRobotB() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1633 to 1655) SpanInfo: {"start":1660,"length":13} + >return robotB + >:=> (line 47, col 4) to (line 47, col 17) +-------------------------------- +47 > return robotB; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1656 to 1674) SpanInfo: {"start":1660,"length":13} + >return robotB + >:=> (line 47, col 4) to (line 47, col 17) +-------------------------------- +48 >} + + ~~ => Pos: (1675 to 1676) SpanInfo: {"start":1675,"length":1} + >} + >:=> (line 48, col 0) to (line 48, col 1) +-------------------------------- +49 > + + ~ => Pos: (1677 to 1677) SpanInfo: undefined +-------------------------------- +50 >function getMultiRobotB() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1678 to 1705) SpanInfo: {"start":1710,"length":18} + >return multiRobotB + >:=> (line 51, col 4) to (line 51, col 22) +-------------------------------- +51 > return multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1706 to 1729) SpanInfo: {"start":1710,"length":18} + >return multiRobotB + >:=> (line 51, col 4) to (line 51, col 22) +-------------------------------- +52 >} + ~ => Pos: (1730 to 1730) SpanInfo: {"start":1730,"length":1} + >} + >:=> (line 52, col 0) to (line 52, col 1) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..e5d777f1a1c --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,265 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, string[]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (89 to 133) SpanInfo: undefined +-------------------------------- +6 > + + ~ => Pos: (134 to 134) SpanInfo: undefined +-------------------------------- +7 >var robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (135 to 178) SpanInfo: {"start":135,"length":42} + >var robotA: Robot = [1, "mower", "mowing"] + >:=> (line 7, col 0) to (line 7, col 42) +-------------------------------- +8 >var robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (179 to 226) SpanInfo: {"start":179,"length":46} + >var robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 8, col 0) to (line 8, col 46) +-------------------------------- +9 >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (227 to 290) SpanInfo: {"start":227,"length":62} + >var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 9, col 0) to (line 9, col 62) +-------------------------------- +10 >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (291 to 364) SpanInfo: {"start":291,"length":72} + >var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 10, col 0) to (line 10, col 72) +-------------------------------- +11 > + + ~ => Pos: (365 to 365) SpanInfo: undefined +-------------------------------- +12 >let nameA: string, numberB: number, nameB: string, skillB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (366 to 432) SpanInfo: undefined +-------------------------------- +13 >let robotAInfo: (number | string)[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (433 to 469) SpanInfo: undefined +-------------------------------- +14 > + + ~ => Pos: (470 to 470) SpanInfo: undefined +-------------------------------- +15 >let multiSkillB: string[], nameMB: string, primarySkillB: string, secondarySkillB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (471 to 561) SpanInfo: undefined +-------------------------------- +16 >let multiRobotAInfo: (string | string[])[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (562 to 605) SpanInfo: undefined +-------------------------------- +17 > + + ~ => Pos: (606 to 606) SpanInfo: undefined +-------------------------------- +18 >[, nameA = "helloNoName"] = robotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (607 to 642) SpanInfo: {"start":607,"length":34} + >[, nameA = "helloNoName"] = robotA + >:=> (line 18, col 0) to (line 18, col 34) +-------------------------------- +19 >[, nameB = "helloNoName"] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (643 to 683) SpanInfo: {"start":643,"length":39} + >[, nameB = "helloNoName"] = getRobotB() + >:=> (line 19, col 0) to (line 19, col 39) +-------------------------------- +20 >[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (684 to 739) SpanInfo: {"start":684,"length":54} + >[, nameB = "helloNoName"] = [2, "trimmer", "trimming"] + >:=> (line 20, col 0) to (line 20, col 54) +-------------------------------- +21 >[, multiSkillB = []] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (740 to 775) SpanInfo: {"start":740,"length":34} + >[, multiSkillB = []] = multiRobotB + >:=> (line 21, col 0) to (line 21, col 34) +-------------------------------- +22 >[, multiSkillB = []] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (776 to 816) SpanInfo: {"start":776,"length":39} + >[, multiSkillB = []] = getMultiRobotB() + >:=> (line 22, col 0) to (line 22, col 39) +-------------------------------- +23 >[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (817 to 874) SpanInfo: {"start":817,"length":56} + >[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]] + >:=> (line 23, col 0) to (line 23, col 56) +-------------------------------- +24 > + + ~ => Pos: (875 to 875) SpanInfo: undefined +-------------------------------- +25 >[numberB = -1] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (876 to 900) SpanInfo: {"start":876,"length":23} + >[numberB = -1] = robotB + >:=> (line 25, col 0) to (line 25, col 23) +-------------------------------- +26 >[numberB = -1] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (901 to 930) SpanInfo: {"start":901,"length":28} + >[numberB = -1] = getRobotB() + >:=> (line 26, col 0) to (line 26, col 28) +-------------------------------- +27 >[numberB = -1] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (931 to 975) SpanInfo: {"start":931,"length":43} + >[numberB = -1] = [2, "trimmer", "trimming"] + >:=> (line 27, col 0) to (line 27, col 43) +-------------------------------- +28 >[nameMB = "helloNoName"] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (976 to 1015) SpanInfo: {"start":976,"length":38} + >[nameMB = "helloNoName"] = multiRobotB + >:=> (line 28, col 0) to (line 28, col 38) +-------------------------------- +29 >[nameMB = "helloNoName"] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1016 to 1060) SpanInfo: {"start":1016,"length":43} + >[nameMB = "helloNoName"] = getMultiRobotB() + >:=> (line 29, col 0) to (line 29, col 43) +-------------------------------- +30 >[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1061 to 1124) SpanInfo: {"start":1061,"length":62} + >[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]] + >:=> (line 30, col 0) to (line 30, col 62) +-------------------------------- +31 > + + ~ => Pos: (1125 to 1125) SpanInfo: undefined +-------------------------------- +32 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1126 to 1193) SpanInfo: {"start":1126,"length":66} + >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB + >:=> (line 32, col 0) to (line 32, col 66) +-------------------------------- +33 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1194 to 1266) SpanInfo: {"start":1194,"length":71} + >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB() + >:=> (line 33, col 0) to (line 33, col 71) +-------------------------------- +34 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1267 to 1354) SpanInfo: {"start":1267,"length":86} + >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"] + >:=> (line 34, col 0) to (line 34, col 86) +-------------------------------- +35 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1355 to 1457) SpanInfo: {"start":1355,"length":101} + >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB + >:=> (line 35, col 0) to (line 35, col 101) +-------------------------------- +36 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1458 to 1565) SpanInfo: {"start":1458,"length":106} + >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB() + >:=> (line 36, col 0) to (line 36, col 106) +-------------------------------- +37 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1566 to 1655) SpanInfo: {"start":1566,"length":129} + >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + > ["trimmer", ["trimming", "edging"]] + >:=> (line 37, col 0) to (line 38, col 39) +-------------------------------- +38 > ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1656 to 1696) SpanInfo: {"start":1566,"length":129} + >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + > ["trimmer", ["trimming", "edging"]] + >:=> (line 37, col 0) to (line 38, col 39) +-------------------------------- +39 > + + ~ => Pos: (1697 to 1697) SpanInfo: undefined +-------------------------------- +40 >[numberB = -1, ...robotAInfo] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1698 to 1737) SpanInfo: {"start":1698,"length":38} + >[numberB = -1, ...robotAInfo] = robotB + >:=> (line 40, col 0) to (line 40, col 38) +-------------------------------- +41 >[numberB = -1, ...robotAInfo] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1738 to 1782) SpanInfo: {"start":1738,"length":43} + >[numberB = -1, ...robotAInfo] = getRobotB() + >:=> (line 41, col 0) to (line 41, col 43) +-------------------------------- +42 >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1783 to 1849) SpanInfo: {"start":1783,"length":65} + >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"] + >:=> (line 42, col 0) to (line 42, col 65) +-------------------------------- +43 > + + ~ => Pos: (1850 to 1850) SpanInfo: undefined +-------------------------------- +44 >function getRobotB() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1851 to 1873) SpanInfo: {"start":1878,"length":13} + >return robotB + >:=> (line 45, col 4) to (line 45, col 17) +-------------------------------- +45 > return robotB; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1874 to 1892) SpanInfo: {"start":1878,"length":13} + >return robotB + >:=> (line 45, col 4) to (line 45, col 17) +-------------------------------- +46 >} + + ~~ => Pos: (1893 to 1894) SpanInfo: {"start":1893,"length":1} + >} + >:=> (line 46, col 0) to (line 46, col 1) +-------------------------------- +47 > + + ~ => Pos: (1895 to 1895) SpanInfo: undefined +-------------------------------- +48 >function getMultiRobotB() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1896 to 1923) SpanInfo: {"start":1928,"length":18} + >return multiRobotB + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +49 > return multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1924 to 1947) SpanInfo: {"start":1928,"length":18} + >return multiRobotB + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +50 >} + ~ => Pos: (1948 to 1948) SpanInfo: {"start":1948,"length":1} + >} + >:=> (line 50, col 0) to (line 50, col 1) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPattern.ts new file mode 100644 index 00000000000..5fe69b42f1a --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPattern.ts @@ -0,0 +1,55 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +//// +////var robotA: Robot = [1, "mower", "mowing"]; +////var robotB: Robot = [2, "trimmer", "trimming"]; +////var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +//// +////let nameA: string, numberB: number, nameB: string, skillB: string; +////let robotAInfo: (number | string)[]; +//// +////let multiSkillB: [string, string], nameMB: string, primarySkillB: string, secondarySkillB: string; +////let multiRobotAInfo: (string | [string, string])[]; +//// +////[, nameA] = robotA; +////[, nameB] = getRobotB(); +////[, nameB] = [2, "trimmer", "trimming"]; +////[, multiSkillB] = multiRobotB; +////[, multiSkillB] = getMultiRobotB(); +////[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; +//// +////[numberB] = robotB; +////[numberB] = getRobotB(); +////[numberB] = [2, "trimmer", "trimming"]; +////[nameMB] = multiRobotB; +////[nameMB] = getMultiRobotB(); +////[nameMB] = ["trimmer", ["trimming", "edging"]]; +//// +////[numberB, nameB, skillB] = robotB; +////[numberB, nameB, skillB] = getRobotB(); +////[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; +////[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; +////[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); +////[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; +//// +////[numberB, ...robotAInfo] = robotB; +////[numberB, ...robotAInfo] = getRobotB(); +////[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; +////[...multiRobotAInfo] = multiRobotA; +////[...multiRobotAInfo] = getMultiRobotB(); +////[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; +//// +////function getRobotB() { +//// return robotB; +////} +//// +////function getMultiRobotB() { +//// return multiRobotB; +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..354ec145aa4 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentStatementArrayBindingPatternDefaultValues.ts @@ -0,0 +1,53 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, string[]]; +//// +////var robotA: Robot = [1, "mower", "mowing"]; +////var robotB: Robot = [2, "trimmer", "trimming"]; +////var multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////var multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +//// +////let nameA: string, numberB: number, nameB: string, skillB: string; +////let robotAInfo: (number | string)[]; +//// +////let multiSkillB: string[], nameMB: string, primarySkillB: string, secondarySkillB: string; +////let multiRobotAInfo: (string | string[])[]; +//// +////[, nameA = "helloNoName"] = robotA; +////[, nameB = "helloNoName"] = getRobotB(); +////[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; +////[, multiSkillB = []] = multiRobotB; +////[, multiSkillB = []] = getMultiRobotB(); +////[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; +//// +////[numberB = -1] = robotB; +////[numberB = -1] = getRobotB(); +////[numberB = -1] = [2, "trimmer", "trimming"]; +////[nameMB = "helloNoName"] = multiRobotB; +////[nameMB = "helloNoName"] = getMultiRobotB(); +////[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; +//// +////[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; +////[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); +////[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; +////[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; +////[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); +////[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = +//// ["trimmer", ["trimming", "edging"]]; +//// +////[numberB = -1, ...robotAInfo] = robotB; +////[numberB = -1, ...robotAInfo] = getRobotB(); +////[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; +//// +////function getRobotB() { +//// return robotB; +////} +//// +////function getMultiRobotB() { +//// return multiRobotB; +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From e97118e5698a9bd0518d96a67447417fb6a9c758 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Tue, 22 Dec 2015 18:30:07 +0900 Subject: [PATCH 087/164] InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces --- src/harness/fourslash.ts | 3 ++- src/server/editorServices.ts | 1 + src/services/formatting/rules.ts | 16 +++++++++---- src/services/formatting/rulesProvider.ts | 23 +++++++++++++------ src/services/services.ts | 1 + .../cases/fourslash/formatTemplateLiteral.ts | 4 ++-- .../fourslash/formattingOptionsChange.ts | 6 +++-- tests/cases/fourslash/formattingTemplates.ts | 4 ++-- tests/cases/fourslash/fourslash.ts | 1 + 9 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 9d729345781..8069a4d2e61 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -317,6 +317,7 @@ namespace FourSlash { InsertSpaceAfterFunctionKeywordForAnonymousFunctions: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, PlaceOpenBraceOnNewLineForFunctions: false, PlaceOpenBraceOnNewLineForControlBlocks: false, }; @@ -3287,4 +3288,4 @@ namespace FourSlashInterface { }; } } -} +} diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 0305b7595c2..d84cf75acfc 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -1357,6 +1357,7 @@ namespace ts.server { InsertSpaceAfterFunctionKeywordForAnonymousFunctions: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, PlaceOpenBraceOnNewLineForFunctions: false, PlaceOpenBraceOnNewLineForControlBlocks: false, }; diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index de4761f57d2..23d5c0db8ca 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -219,9 +219,11 @@ namespace ts.formatting { public SpaceBetweenAsyncAndFunctionKeyword: Rule; // Template strings - public SpaceBetweenTagAndTemplateString: Rule; + public NoSpaceBetweenTagAndTemplateString: Rule; public NoSpaceAfterTemplateHeadAndMiddle: Rule; + public SpaceAfterTemplateHeadAndMiddle: Rule; public NoSpaceBeforeTemplateMiddleAndTail: Rule; + public SpaceBeforeTemplateMiddleAndTail: Rule; constructor() { /// @@ -376,9 +378,7 @@ namespace ts.formatting { this.SpaceBetweenAsyncAndFunctionKeyword = new Rule(RuleDescriptor.create1(SyntaxKind.AsyncKeyword, SyntaxKind.FunctionKeyword), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); // template string - this.SpaceBetweenTagAndTemplateString = new Rule(RuleDescriptor.create3(SyntaxKind.Identifier, Shared.TokenRange.FromTokens([SyntaxKind.NoSubstitutionTemplateLiteral, SyntaxKind.TemplateHead])), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); - this.NoSpaceAfterTemplateHeadAndMiddle = new Rule(RuleDescriptor.create4(Shared.TokenRange.FromTokens([SyntaxKind.TemplateHead, SyntaxKind.TemplateMiddle]), Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); - this.NoSpaceBeforeTemplateMiddleAndTail = new Rule(RuleDescriptor.create4(Shared.TokenRange.Any, Shared.TokenRange.FromTokens([SyntaxKind.TemplateMiddle, SyntaxKind.TemplateTail])), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); + this.NoSpaceBetweenTagAndTemplateString = new Rule(RuleDescriptor.create3(SyntaxKind.Identifier, Shared.TokenRange.FromTokens([SyntaxKind.NoSubstitutionTemplateLiteral, SyntaxKind.TemplateHead])), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); // These rules are higher in priority than user-configurable rules. this.HighPriorityCommonRules = [ @@ -406,7 +406,7 @@ namespace ts.formatting { this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, this.SpaceAfterVoidOperator, this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceAfterTemplateHeadAndMiddle, this.NoSpaceBeforeTemplateMiddleAndTail, + this.NoSpaceBetweenTagAndTemplateString, // TypeScript-specific rules this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, @@ -485,6 +485,12 @@ namespace ts.formatting { this.NoSpaceAfterOpenBracket = new Rule(RuleDescriptor.create3(SyntaxKind.OpenBracketToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); this.NoSpaceBeforeCloseBracket = new Rule(RuleDescriptor.create2(Shared.TokenRange.Any, SyntaxKind.CloseBracketToken), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); + // Insert space after opening and before closing template string braces + this.NoSpaceAfterTemplateHeadAndMiddle = new Rule(RuleDescriptor.create4(Shared.TokenRange.FromTokens([SyntaxKind.TemplateHead, SyntaxKind.TemplateMiddle]), Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); + this.SpaceAfterTemplateHeadAndMiddle = new Rule(RuleDescriptor.create4(Shared.TokenRange.FromTokens([SyntaxKind.TemplateHead, SyntaxKind.TemplateMiddle]), Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); + this.NoSpaceBeforeTemplateMiddleAndTail = new Rule(RuleDescriptor.create4(Shared.TokenRange.Any, Shared.TokenRange.FromTokens([SyntaxKind.TemplateMiddle, SyntaxKind.TemplateTail])), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); + this.SpaceBeforeTemplateMiddleAndTail = new Rule(RuleDescriptor.create4(Shared.TokenRange.Any, Shared.TokenRange.FromTokens([SyntaxKind.TemplateMiddle, SyntaxKind.TemplateTail])), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); + // Insert space after function keyword for anonymous functions this.SpaceAfterAnonymousFunctionKeyword = new Rule(RuleDescriptor.create1(SyntaxKind.FunctionKeyword, SyntaxKind.OpenParenToken), RuleOperation.create2(new RuleOperationContext(Rules.IsFunctionDeclContext), RuleAction.Space)); this.NoSpaceAfterAnonymousFunctionKeyword = new Rule(RuleDescriptor.create1(SyntaxKind.FunctionKeyword, SyntaxKind.OpenParenToken), RuleOperation.create2(new RuleOperationContext(Rules.IsFunctionDeclContext), RuleAction.Delete)); diff --git a/src/services/formatting/rulesProvider.ts b/src/services/formatting/rulesProvider.ts index f6cf1de474b..48a783dd0c6 100644 --- a/src/services/formatting/rulesProvider.ts +++ b/src/services/formatting/rulesProvider.ts @@ -71,15 +71,24 @@ namespace ts.formatting { rules.push(this.globalRules.NoSpaceBetweenParens); } - if ( options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets ) { - rules.push( this.globalRules.SpaceAfterOpenBracket ); - rules.push( this.globalRules.SpaceBeforeCloseBracket ); - rules.push( this.globalRules.NoSpaceBetweenBrackets ); + if (options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets) { + rules.push(this.globalRules.SpaceAfterOpenBracket); + rules.push(this.globalRules.SpaceBeforeCloseBracket); + rules.push(this.globalRules.NoSpaceBetweenBrackets); } else { - rules.push( this.globalRules.NoSpaceAfterOpenBracket ); - rules.push( this.globalRules.NoSpaceBeforeCloseBracket ); - rules.push( this.globalRules.NoSpaceBetweenBrackets ); + rules.push(this.globalRules.NoSpaceAfterOpenBracket); + rules.push(this.globalRules.NoSpaceBeforeCloseBracket); + rules.push(this.globalRules.NoSpaceBetweenBrackets); + } + + if (options.InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces) { + rules.push(this.globalRules.SpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.SpaceBeforeTemplateMiddleAndTail); + } + else { + rules.push(this.globalRules.NoSpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.NoSpaceBeforeTemplateMiddleAndTail); } if (options.InsertSpaceAfterSemicolonInForStatements) { diff --git a/src/services/services.ts b/src/services/services.ts index a9dda549ead..04a3b865bdb 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1218,6 +1218,7 @@ namespace ts { InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean; + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean; PlaceOpenBraceOnNewLineForFunctions: boolean; PlaceOpenBraceOnNewLineForControlBlocks: boolean; [s: string]: boolean | number| string; diff --git a/tests/cases/fourslash/formatTemplateLiteral.ts b/tests/cases/fourslash/formatTemplateLiteral.ts index 68f2c8c9469..a10f8dba8f2 100644 --- a/tests/cases/fourslash/formatTemplateLiteral.ts +++ b/tests/cases/fourslash/formatTemplateLiteral.ts @@ -32,9 +32,9 @@ verify.currentLineContentIs("let w = `bar${3}`;"); goTo.marker("5"); verify.currentLineContentIs(" `template`;"); goTo.marker("6"); -verify.currentLineContentIs("String.raw `foo`;"); +verify.currentLineContentIs("String.raw`foo`;"); goTo.marker("7"); -verify.currentLineContentIs("String.raw `bar${3}`;"); +verify.currentLineContentIs("String.raw`bar${3}`;"); goTo.marker("spaceInside"); verify.currentLineContentIs('`Write ${JSON.stringify("")} and ${(765)} and ${346}`;'); \ No newline at end of file diff --git a/tests/cases/fourslash/formattingOptionsChange.ts b/tests/cases/fourslash/formattingOptionsChange.ts index cdd8f61a215..a9c49d72507 100644 --- a/tests/cases/fourslash/formattingOptionsChange.ts +++ b/tests/cases/fourslash/formattingOptionsChange.ts @@ -6,7 +6,8 @@ /////*InsertSpaceAfterKeywordsInControlFlowStatements*/if (true) { } /////*InsertSpaceAfterFunctionKeywordForAnonymousFunctions*/(function () { }) /////*InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis*/(1 ) -/////*InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets*/[1 ]; [ ]; []; [,] +/////*InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets*/[1 ]; [ ]; []; [,]; +/////*InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces*/`${1}`;`${ 1 }` /////*PlaceOpenBraceOnNewLineForFunctions*/class foo { ////} /////*PlaceOpenBraceOnNewLineForControlBlocks*/if (true) { @@ -18,7 +19,8 @@ runTest("InsertSpaceBeforeAndAfterBinaryOperators", "1 + 2 - 3", "1+2-3"); runTest("InsertSpaceAfterKeywordsInControlFlowStatements", "if (true) { }", "if(true) { }"); runTest("InsertSpaceAfterFunctionKeywordForAnonymousFunctions", "(function () { })", "(function() { })"); runTest("InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis", " ( 1 )", " (1)"); -runTest("InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets", "[ 1 ];[];[];[ , ]", "[1];[];[];[, ]"); +runTest("InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets", "[ 1 ];[];[];[ , ];", "[1];[];[];[, ];"); +runTest("InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces", "`${ 1 }`; `${ 1 }`", "`${1}`; `${1}`"); runTest("PlaceOpenBraceOnNewLineForFunctions", "class foo", "class foo {"); runTest("PlaceOpenBraceOnNewLineForControlBlocks", "if ( true )", "if ( true ) {"); diff --git a/tests/cases/fourslash/formattingTemplates.ts b/tests/cases/fourslash/formattingTemplates.ts index c7decd10316..c759376335d 100644 --- a/tests/cases/fourslash/formattingTemplates.ts +++ b/tests/cases/fourslash/formattingTemplates.ts @@ -5,8 +5,8 @@ goTo.marker("1"); edit.insert(";"); -verify.currentLineContentIs("String.call `${123}`;"); +verify.currentLineContentIs("String.call`${123}`;"); goTo.marker("2"); edit.insert(";"); -verify.currentLineContentIs("String.call `${123} ${456}`;"); \ No newline at end of file +verify.currentLineContentIs("String.call`${123} ${456}`;"); \ No newline at end of file diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index b9b379bd465..febc48ff340 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -81,6 +81,7 @@ declare namespace FourSlashInterface { InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean; + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean; PlaceOpenBraceOnNewLineForFunctions: boolean; PlaceOpenBraceOnNewLineForControlBlocks: boolean; [s: string]: boolean | number | string; From 35537b5f32cca42e10eac2bd385bde2ea6fbf062 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 14:54:21 -0800 Subject: [PATCH 088/164] Implement breakpoint spans of array destructuring pattern of destructuring assignment --- src/services/breakpoints.ts | 87 ++++++- src/services/utilities.ts | 28 +++ ...nmentStatementArrayBindingPattern.baseline | 234 ++++++++++++------ ...tArrayBindingPatternDefaultValues.baseline | 224 ++++++++++++----- 4 files changed, 426 insertions(+), 147 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 908fefb2d7d..5042b72cc23 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -97,7 +97,7 @@ namespace ts.BreakpointResolver { if (isFunctionBlock(node)) { return spanInFunctionBlock(node); } - // Fall through + // Fall through case SyntaxKind.ModuleBlock: return spanInBlock(node); @@ -217,17 +217,17 @@ namespace ts.BreakpointResolver { case SyntaxKind.CommaToken: return spanInPreviousNode(node) - + case SyntaxKind.OpenBraceToken: return spanInOpenBraceToken(node); case SyntaxKind.CloseBraceToken: return spanInCloseBraceToken(node); - + case SyntaxKind.CloseBracketToken: return spanInCloseBracketToken(node); - case SyntaxKind.OpenParenToken: + case SyntaxKind.OpenParenToken: return spanInOpenParenToken(node); case SyntaxKind.CloseParenToken: @@ -253,6 +253,42 @@ namespace ts.BreakpointResolver { return spanInOfKeyword(node); default: + // Destructuring pattern in destructuring assignment + // [a, b, c] of + // [a, b, c] = expression + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node)) { + return spanInArrayLiteralOrObjectLiteralDestructuringPattern(node); + } + + // Set breakpoint on identifier element of destructuring pattern + // a or ...c from + // [a, b, ...c] or { a, b } from destructuring pattern + if ((node.kind === SyntaxKind.Identifier || node.kind == SyntaxKind.SpreadElementExpression) && + isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { + return textSpan(node); + } + + if (node.kind === SyntaxKind.BinaryExpression) { + const binaryExpression = node; + // Set breakpoint in destructuring pattern if its destructuring assignment + // [a, b, c] or {a, b, c} of + // [a, b, c] = expression or + // {a, b, c} = expression + if (isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left)) { + return spanInArrayLiteralOrObjectLiteralDestructuringPattern( + binaryExpression.left); + } + + if (binaryExpression.operatorToken.kind === SyntaxKind.EqualsToken && + isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.parent)) { + // Set breakpoint on assignment expression element of destructuring pattern + // a = expression of + // [a = expression, b, c] = someExpression or + // { a = expression, b, c } = someExpression + return textSpan(node); + } + } + if (isExpression(node)) { switch (node.parent.kind) { case SyntaxKind.DoStatement: @@ -310,6 +346,16 @@ namespace ts.BreakpointResolver { } } + if (node.parent.kind === SyntaxKind.BinaryExpression) { + const binaryExpression = node.parent; + if (isArrayLiteralOrObjectLiteralDestructuringPattern(binaryExpression.left) && + (binaryExpression.right === node || + binaryExpression.operatorToken === node)) { + // If initializer of destructuring assignment move to previous token + return spanInPreviousNode(node); + } + } + // Default go to parent to set the breakpoint return spanInNode(node.parent); } @@ -474,13 +520,34 @@ namespace ts.BreakpointResolver { // Empty binding pattern of binding element, set breakpoint on binding element if (bindingPattern.parent.kind === SyntaxKind.BindingElement) { - return spanInNode(bindingPattern.parent); + return textSpan(bindingPattern.parent); } // Variable declaration is used as the span return textSpanFromVariableDeclaration(bindingPattern.parent); } + function spanInArrayLiteralOrObjectLiteralDestructuringPattern(node: DestructuringPattern): TextSpan { + Debug.assert(node.kind !== SyntaxKind.ArrayBindingPattern && node.kind !== SyntaxKind.ObjectBindingPattern); + const elements: NodeArray = + node.kind === SyntaxKind.ArrayLiteralExpression ? + (node).elements : + (node).properties; + + const firstBindingElement = forEach(elements, + element => element.kind !== SyntaxKind.OmittedExpression ? element : undefined); + + if (firstBindingElement) { + return spanInNode(firstBindingElement); + } + + // Could be ArrayLiteral from destructuring assignment or + // just nested element in another destructuring assignment + // set breakpoint on assignment when parent is destructuring assignment + // Otherwise set breakpoint for this element + return textSpan(node.parent.kind === SyntaxKind.BinaryExpression ? node.parent : node); + } + // Tokens: function spanInOpenBraceToken(node: Node): TextSpan { switch (node.parent.kind) { @@ -548,10 +615,16 @@ namespace ts.BreakpointResolver { case SyntaxKind.ArrayBindingPattern: // Breakpoint in last binding element or binding pattern if it contains no elements let bindingPattern = node.parent; - return spanInNode(lastOrUndefined(bindingPattern.elements) || bindingPattern); + return textSpan(lastOrUndefined(bindingPattern.elements) || bindingPattern); - // Default to parent node default: + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { + // Breakpoint in last binding element or binding pattern if it contains no elements + let arrayLiteral = node.parent; + return textSpan(lastOrUndefined(arrayLiteral.elements) || arrayLiteral); + } + + // Default to parent node return spanInNode(node.parent); } } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index b3b4ec31a02..63b1757efd7 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -608,6 +608,34 @@ namespace ts { } return true; } + + export function isArrayLiteralOrObjectLiteralDestructuringPattern(node: Node) { + if (node.kind === SyntaxKind.ArrayLiteralExpression || + node.kind === SyntaxKind.ObjectLiteralExpression) { + // [a,b,c] from: + // [a, b, c] = someExpression; + if (node.parent.kind === SyntaxKind.BinaryExpression && + (node.parent).left === node && + (node.parent).operatorToken.kind === SyntaxKind.EqualsToken) { + return true; + } + + // [a, b, c] from: + // for([a, b, c] of expression) + if (node.parent.kind === SyntaxKind.ForOfStatement && + (node.parent).initializer === node) { + return true; + } + + // [a, b, c] of + // [x, [a, b, c] ] = someExpression + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { + return true; + } + } + + return false; + } } // Display-part writer helpers diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline index b49dabe0f82..87bf1b5a179 100644 --- a/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPattern.baseline @@ -77,39 +77,39 @@ -------------------------------- 18 >[, nameA] = robotA; - ~~~~~~~~~~~~~~~~~~~~ => Pos: (631 to 650) SpanInfo: {"start":631,"length":18} - >[, nameA] = robotA - >:=> (line 18, col 0) to (line 18, col 18) + ~~~~~~~~~~~~~~~~~~~~ => Pos: (631 to 650) SpanInfo: {"start":634,"length":5} + >nameA + >:=> (line 18, col 3) to (line 18, col 8) -------------------------------- 19 >[, nameB] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (651 to 675) SpanInfo: {"start":651,"length":23} - >[, nameB] = getRobotB() - >:=> (line 19, col 0) to (line 19, col 23) + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (651 to 675) SpanInfo: {"start":654,"length":5} + >nameB + >:=> (line 19, col 3) to (line 19, col 8) -------------------------------- 20 >[, nameB] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (676 to 715) SpanInfo: {"start":676,"length":38} - >[, nameB] = [2, "trimmer", "trimming"] - >:=> (line 20, col 0) to (line 20, col 38) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (676 to 715) SpanInfo: {"start":679,"length":5} + >nameB + >:=> (line 20, col 3) to (line 20, col 8) -------------------------------- 21 >[, multiSkillB] = multiRobotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (716 to 746) SpanInfo: {"start":716,"length":29} - >[, multiSkillB] = multiRobotB - >:=> (line 21, col 0) to (line 21, col 29) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (716 to 746) SpanInfo: {"start":719,"length":11} + >multiSkillB + >:=> (line 21, col 3) to (line 21, col 14) -------------------------------- 22 >[, multiSkillB] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (747 to 782) SpanInfo: {"start":747,"length":34} - >[, multiSkillB] = getMultiRobotB() - >:=> (line 22, col 0) to (line 22, col 34) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (747 to 782) SpanInfo: {"start":750,"length":11} + >multiSkillB + >:=> (line 22, col 3) to (line 22, col 14) -------------------------------- 23 >[, multiSkillB] = ["roomba", ["vaccum", "mopping"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (783 to 835) SpanInfo: {"start":783,"length":51} - >[, multiSkillB] = ["roomba", ["vaccum", "mopping"]] - >:=> (line 23, col 0) to (line 23, col 51) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (783 to 835) SpanInfo: {"start":786,"length":11} + >multiSkillB + >:=> (line 23, col 3) to (line 23, col 14) -------------------------------- 24 > @@ -117,39 +117,39 @@ -------------------------------- 25 >[numberB] = robotB; - ~~~~~~~~~~~~~~~~~~~~ => Pos: (837 to 856) SpanInfo: {"start":837,"length":18} - >[numberB] = robotB - >:=> (line 25, col 0) to (line 25, col 18) + ~~~~~~~~~~~~~~~~~~~~ => Pos: (837 to 856) SpanInfo: {"start":838,"length":7} + >numberB + >:=> (line 25, col 1) to (line 25, col 8) -------------------------------- 26 >[numberB] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (857 to 881) SpanInfo: {"start":857,"length":23} - >[numberB] = getRobotB() - >:=> (line 26, col 0) to (line 26, col 23) + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (857 to 881) SpanInfo: {"start":858,"length":7} + >numberB + >:=> (line 26, col 1) to (line 26, col 8) -------------------------------- 27 >[numberB] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (882 to 921) SpanInfo: {"start":882,"length":38} - >[numberB] = [2, "trimmer", "trimming"] - >:=> (line 27, col 0) to (line 27, col 38) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (882 to 921) SpanInfo: {"start":883,"length":7} + >numberB + >:=> (line 27, col 1) to (line 27, col 8) -------------------------------- 28 >[nameMB] = multiRobotB; - ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (922 to 945) SpanInfo: {"start":922,"length":22} - >[nameMB] = multiRobotB - >:=> (line 28, col 0) to (line 28, col 22) + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (922 to 945) SpanInfo: {"start":923,"length":6} + >nameMB + >:=> (line 28, col 1) to (line 28, col 7) -------------------------------- 29 >[nameMB] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (946 to 974) SpanInfo: {"start":946,"length":27} - >[nameMB] = getMultiRobotB() - >:=> (line 29, col 0) to (line 29, col 27) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (946 to 974) SpanInfo: {"start":947,"length":6} + >nameMB + >:=> (line 29, col 1) to (line 29, col 7) -------------------------------- 30 >[nameMB] = ["trimmer", ["trimming", "edging"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (975 to 1022) SpanInfo: {"start":975,"length":46} - >[nameMB] = ["trimmer", ["trimming", "edging"]] - >:=> (line 30, col 0) to (line 30, col 46) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (975 to 1022) SpanInfo: {"start":976,"length":6} + >nameMB + >:=> (line 30, col 1) to (line 30, col 7) -------------------------------- 31 > @@ -157,39 +157,114 @@ -------------------------------- 32 >[numberB, nameB, skillB] = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1024 to 1058) SpanInfo: {"start":1024,"length":33} - >[numberB, nameB, skillB] = robotB - >:=> (line 32, col 0) to (line 32, col 33) + ~~~~~~~~~ => Pos: (1024 to 1032) SpanInfo: {"start":1025,"length":7} + >numberB + >:=> (line 32, col 1) to (line 32, col 8) +32 >[numberB, nameB, skillB] = robotB; + + ~~~~~~~ => Pos: (1033 to 1039) SpanInfo: {"start":1034,"length":5} + >nameB + >:=> (line 32, col 10) to (line 32, col 15) +32 >[numberB, nameB, skillB] = robotB; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1040 to 1058) SpanInfo: {"start":1041,"length":6} + >skillB + >:=> (line 32, col 17) to (line 32, col 23) -------------------------------- 33 >[numberB, nameB, skillB] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1059 to 1098) SpanInfo: {"start":1059,"length":38} - >[numberB, nameB, skillB] = getRobotB() - >:=> (line 33, col 0) to (line 33, col 38) + ~~~~~~~~~ => Pos: (1059 to 1067) SpanInfo: {"start":1060,"length":7} + >numberB + >:=> (line 33, col 1) to (line 33, col 8) +33 >[numberB, nameB, skillB] = getRobotB(); + + ~~~~~~~ => Pos: (1068 to 1074) SpanInfo: {"start":1069,"length":5} + >nameB + >:=> (line 33, col 10) to (line 33, col 15) +33 >[numberB, nameB, skillB] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1075 to 1098) SpanInfo: {"start":1076,"length":6} + >skillB + >:=> (line 33, col 17) to (line 33, col 23) -------------------------------- 34 >[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1099 to 1153) SpanInfo: {"start":1099,"length":53} - >[numberB, nameB, skillB] = [2, "trimmer", "trimming"] - >:=> (line 34, col 0) to (line 34, col 53) + ~~~~~~~~~ => Pos: (1099 to 1107) SpanInfo: {"start":1100,"length":7} + >numberB + >:=> (line 34, col 1) to (line 34, col 8) +34 >[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; + + ~~~~~~~ => Pos: (1108 to 1114) SpanInfo: {"start":1109,"length":5} + >nameB + >:=> (line 34, col 10) to (line 34, col 15) +34 >[numberB, nameB, skillB] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1115 to 1153) SpanInfo: {"start":1116,"length":6} + >skillB + >:=> (line 34, col 17) to (line 34, col 23) -------------------------------- 35 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1154 to 1211) SpanInfo: {"start":1154,"length":56} - >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB - >:=> (line 35, col 0) to (line 35, col 56) + ~~~~~~~~ => Pos: (1154 to 1161) SpanInfo: {"start":1155,"length":6} + >nameMB + >:=> (line 35, col 1) to (line 35, col 7) +35 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; + + ~~~~~~~~~~~~~~~~ => Pos: (1162 to 1177) SpanInfo: {"start":1164,"length":13} + >primarySkillB + >:=> (line 35, col 10) to (line 35, col 23) +35 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; + + ~~~~~~~~~~~~~~~~~ => Pos: (1178 to 1194) SpanInfo: {"start":1179,"length":15} + >secondarySkillB + >:=> (line 35, col 25) to (line 35, col 40) +35 >[nameMB, [primarySkillB, secondarySkillB]] = multiRobotB; + + ~~~~~~~~~~~~~~~~~=> Pos: (1195 to 1211) SpanInfo: {"start":1163,"length":32} + >[primarySkillB, secondarySkillB] + >:=> (line 35, col 9) to (line 35, col 41) -------------------------------- 36 >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1212 to 1274) SpanInfo: {"start":1212,"length":61} - >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB() - >:=> (line 36, col 0) to (line 36, col 61) + ~~~~~~~~ => Pos: (1212 to 1219) SpanInfo: {"start":1213,"length":6} + >nameMB + >:=> (line 36, col 1) to (line 36, col 7) +36 >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~ => Pos: (1220 to 1235) SpanInfo: {"start":1222,"length":13} + >primarySkillB + >:=> (line 36, col 10) to (line 36, col 23) +36 >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~ => Pos: (1236 to 1252) SpanInfo: {"start":1237,"length":15} + >secondarySkillB + >:=> (line 36, col 25) to (line 36, col 40) +36 >[nameMB, [primarySkillB, secondarySkillB]] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1253 to 1274) SpanInfo: {"start":1221,"length":32} + >[primarySkillB, secondarySkillB] + >:=> (line 36, col 9) to (line 36, col 41) -------------------------------- 37 >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1275 to 1356) SpanInfo: {"start":1275,"length":80} - >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]] - >:=> (line 37, col 0) to (line 37, col 80) + ~~~~~~~~ => Pos: (1275 to 1282) SpanInfo: {"start":1276,"length":6} + >nameMB + >:=> (line 37, col 1) to (line 37, col 7) +37 >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~ => Pos: (1283 to 1298) SpanInfo: {"start":1285,"length":13} + >primarySkillB + >:=> (line 37, col 10) to (line 37, col 23) +37 >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~ => Pos: (1299 to 1315) SpanInfo: {"start":1300,"length":15} + >secondarySkillB + >:=> (line 37, col 25) to (line 37, col 40) +37 >[nameMB, [primarySkillB, secondarySkillB]] = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1316 to 1356) SpanInfo: {"start":1284,"length":32} + >[primarySkillB, secondarySkillB] + >:=> (line 37, col 9) to (line 37, col 41) -------------------------------- 38 > @@ -197,39 +272,54 @@ -------------------------------- 39 >[numberB, ...robotAInfo] = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1358 to 1392) SpanInfo: {"start":1358,"length":33} - >[numberB, ...robotAInfo] = robotB - >:=> (line 39, col 0) to (line 39, col 33) + ~~~~~~~~~ => Pos: (1358 to 1366) SpanInfo: {"start":1359,"length":7} + >numberB + >:=> (line 39, col 1) to (line 39, col 8) +39 >[numberB, ...robotAInfo] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1367 to 1392) SpanInfo: {"start":1368,"length":13} + >...robotAInfo + >:=> (line 39, col 10) to (line 39, col 23) -------------------------------- 40 >[numberB, ...robotAInfo] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1393 to 1432) SpanInfo: {"start":1393,"length":38} - >[numberB, ...robotAInfo] = getRobotB() - >:=> (line 40, col 0) to (line 40, col 38) + ~~~~~~~~~ => Pos: (1393 to 1401) SpanInfo: {"start":1394,"length":7} + >numberB + >:=> (line 40, col 1) to (line 40, col 8) +40 >[numberB, ...robotAInfo] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1402 to 1432) SpanInfo: {"start":1403,"length":13} + >...robotAInfo + >:=> (line 40, col 10) to (line 40, col 23) -------------------------------- 41 >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1433 to 1494) SpanInfo: {"start":1433,"length":60} - >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"] - >:=> (line 41, col 0) to (line 41, col 60) + ~~~~~~~~~ => Pos: (1433 to 1441) SpanInfo: {"start":1434,"length":7} + >numberB + >:=> (line 41, col 1) to (line 41, col 8) +41 >[numberB, ...robotAInfo] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1442 to 1494) SpanInfo: {"start":1443,"length":13} + >...robotAInfo + >:=> (line 41, col 10) to (line 41, col 23) -------------------------------- 42 >[...multiRobotAInfo] = multiRobotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1495 to 1530) SpanInfo: {"start":1495,"length":34} - >[...multiRobotAInfo] = multiRobotA - >:=> (line 42, col 0) to (line 42, col 34) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1495 to 1530) SpanInfo: {"start":1496,"length":18} + >...multiRobotAInfo + >:=> (line 42, col 1) to (line 42, col 19) -------------------------------- 43 >[...multiRobotAInfo] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1531 to 1571) SpanInfo: {"start":1531,"length":39} - >[...multiRobotAInfo] = getMultiRobotB() - >:=> (line 43, col 0) to (line 43, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1531 to 1571) SpanInfo: {"start":1532,"length":18} + >...multiRobotAInfo + >:=> (line 43, col 1) to (line 43, col 19) -------------------------------- 44 >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1572 to 1631) SpanInfo: {"start":1572,"length":58} - >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]] - >:=> (line 44, col 0) to (line 44, col 58) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1572 to 1631) SpanInfo: {"start":1573,"length":18} + >...multiRobotAInfo + >:=> (line 44, col 1) to (line 44, col 19) -------------------------------- 45 > diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline index e5d777f1a1c..7169d67bfef 100644 --- a/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentStatementArrayBindingPatternDefaultValues.baseline @@ -77,39 +77,39 @@ -------------------------------- 18 >[, nameA = "helloNoName"] = robotA; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (607 to 642) SpanInfo: {"start":607,"length":34} - >[, nameA = "helloNoName"] = robotA - >:=> (line 18, col 0) to (line 18, col 34) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (607 to 642) SpanInfo: {"start":610,"length":21} + >nameA = "helloNoName" + >:=> (line 18, col 3) to (line 18, col 24) -------------------------------- 19 >[, nameB = "helloNoName"] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (643 to 683) SpanInfo: {"start":643,"length":39} - >[, nameB = "helloNoName"] = getRobotB() - >:=> (line 19, col 0) to (line 19, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (643 to 683) SpanInfo: {"start":646,"length":21} + >nameB = "helloNoName" + >:=> (line 19, col 3) to (line 19, col 24) -------------------------------- 20 >[, nameB = "helloNoName"] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (684 to 739) SpanInfo: {"start":684,"length":54} - >[, nameB = "helloNoName"] = [2, "trimmer", "trimming"] - >:=> (line 20, col 0) to (line 20, col 54) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (684 to 739) SpanInfo: {"start":687,"length":21} + >nameB = "helloNoName" + >:=> (line 20, col 3) to (line 20, col 24) -------------------------------- 21 >[, multiSkillB = []] = multiRobotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (740 to 775) SpanInfo: {"start":740,"length":34} - >[, multiSkillB = []] = multiRobotB - >:=> (line 21, col 0) to (line 21, col 34) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (740 to 775) SpanInfo: {"start":743,"length":16} + >multiSkillB = [] + >:=> (line 21, col 3) to (line 21, col 19) -------------------------------- 22 >[, multiSkillB = []] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (776 to 816) SpanInfo: {"start":776,"length":39} - >[, multiSkillB = []] = getMultiRobotB() - >:=> (line 22, col 0) to (line 22, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (776 to 816) SpanInfo: {"start":779,"length":16} + >multiSkillB = [] + >:=> (line 22, col 3) to (line 22, col 19) -------------------------------- 23 >[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (817 to 874) SpanInfo: {"start":817,"length":56} - >[, multiSkillB = []] = ["roomba", ["vaccum", "mopping"]] - >:=> (line 23, col 0) to (line 23, col 56) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (817 to 874) SpanInfo: {"start":820,"length":16} + >multiSkillB = [] + >:=> (line 23, col 3) to (line 23, col 19) -------------------------------- 24 > @@ -117,39 +117,39 @@ -------------------------------- 25 >[numberB = -1] = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (876 to 900) SpanInfo: {"start":876,"length":23} - >[numberB = -1] = robotB - >:=> (line 25, col 0) to (line 25, col 23) + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (876 to 900) SpanInfo: {"start":877,"length":12} + >numberB = -1 + >:=> (line 25, col 1) to (line 25, col 13) -------------------------------- 26 >[numberB = -1] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (901 to 930) SpanInfo: {"start":901,"length":28} - >[numberB = -1] = getRobotB() - >:=> (line 26, col 0) to (line 26, col 28) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (901 to 930) SpanInfo: {"start":902,"length":12} + >numberB = -1 + >:=> (line 26, col 1) to (line 26, col 13) -------------------------------- 27 >[numberB = -1] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (931 to 975) SpanInfo: {"start":931,"length":43} - >[numberB = -1] = [2, "trimmer", "trimming"] - >:=> (line 27, col 0) to (line 27, col 43) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (931 to 975) SpanInfo: {"start":932,"length":12} + >numberB = -1 + >:=> (line 27, col 1) to (line 27, col 13) -------------------------------- 28 >[nameMB = "helloNoName"] = multiRobotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (976 to 1015) SpanInfo: {"start":976,"length":38} - >[nameMB = "helloNoName"] = multiRobotB - >:=> (line 28, col 0) to (line 28, col 38) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (976 to 1015) SpanInfo: {"start":977,"length":22} + >nameMB = "helloNoName" + >:=> (line 28, col 1) to (line 28, col 23) -------------------------------- 29 >[nameMB = "helloNoName"] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1016 to 1060) SpanInfo: {"start":1016,"length":43} - >[nameMB = "helloNoName"] = getMultiRobotB() - >:=> (line 29, col 0) to (line 29, col 43) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1016 to 1060) SpanInfo: {"start":1017,"length":22} + >nameMB = "helloNoName" + >:=> (line 29, col 1) to (line 29, col 23) -------------------------------- 30 >[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1061 to 1124) SpanInfo: {"start":1061,"length":62} - >[nameMB = "helloNoName"] = ["trimmer", ["trimming", "edging"]] - >:=> (line 30, col 0) to (line 30, col 62) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1061 to 1124) SpanInfo: {"start":1062,"length":22} + >nameMB = "helloNoName" + >:=> (line 30, col 1) to (line 30, col 23) -------------------------------- 31 > @@ -157,47 +157,120 @@ -------------------------------- 32 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1126 to 1193) SpanInfo: {"start":1126,"length":66} - >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB - >:=> (line 32, col 0) to (line 32, col 66) + ~~~~~~~~~~~~~~ => Pos: (1126 to 1139) SpanInfo: {"start":1127,"length":12} + >numberB = -1 + >:=> (line 32, col 1) to (line 32, col 13) +32 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1140 to 1162) SpanInfo: {"start":1141,"length":21} + >nameB = "helloNoName" + >:=> (line 32, col 15) to (line 32, col 36) +32 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1163 to 1193) SpanInfo: {"start":1164,"length":18} + >skillB = "noSkill" + >:=> (line 32, col 38) to (line 32, col 56) -------------------------------- 33 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1194 to 1266) SpanInfo: {"start":1194,"length":71} - >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB() - >:=> (line 33, col 0) to (line 33, col 71) + ~~~~~~~~~~~~~~ => Pos: (1194 to 1207) SpanInfo: {"start":1195,"length":12} + >numberB = -1 + >:=> (line 33, col 1) to (line 33, col 13) +33 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1208 to 1230) SpanInfo: {"start":1209,"length":21} + >nameB = "helloNoName" + >:=> (line 33, col 15) to (line 33, col 36) +33 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1231 to 1266) SpanInfo: {"start":1232,"length":18} + >skillB = "noSkill" + >:=> (line 33, col 38) to (line 33, col 56) -------------------------------- 34 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1267 to 1354) SpanInfo: {"start":1267,"length":86} - >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"] - >:=> (line 34, col 0) to (line 34, col 86) + ~~~~~~~~~~~~~~ => Pos: (1267 to 1280) SpanInfo: {"start":1268,"length":12} + >numberB = -1 + >:=> (line 34, col 1) to (line 34, col 13) +34 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1281 to 1303) SpanInfo: {"start":1282,"length":21} + >nameB = "helloNoName" + >:=> (line 34, col 15) to (line 34, col 36) +34 >[numberB = -1, nameB = "helloNoName", skillB = "noSkill"] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1304 to 1354) SpanInfo: {"start":1305,"length":18} + >skillB = "noSkill" + >:=> (line 34, col 38) to (line 34, col 56) -------------------------------- 35 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1355 to 1457) SpanInfo: {"start":1355,"length":101} - >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB - >:=> (line 35, col 0) to (line 35, col 101) + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1355 to 1378) SpanInfo: {"start":1356,"length":22} + >nameMB = "helloNoName" + >:=> (line 35, col 1) to (line 35, col 23) +35 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1379 to 1406) SpanInfo: {"start":1381,"length":25} + >primarySkillB = "noSkill" + >:=> (line 35, col 26) to (line 35, col 51) +35 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1407 to 1440) SpanInfo: {"start":1408,"length":27} + >secondarySkillB = "noSkill" + >:=> (line 35, col 53) to (line 35, col 80) +35 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB; + + ~~~~~~~~~~~~~~~~~=> Pos: (1441 to 1457) SpanInfo: {"start":1380,"length":61} + >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] + >:=> (line 35, col 25) to (line 35, col 86) -------------------------------- 36 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1458 to 1565) SpanInfo: {"start":1458,"length":106} - >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB() - >:=> (line 36, col 0) to (line 36, col 106) + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1458 to 1481) SpanInfo: {"start":1459,"length":22} + >nameMB = "helloNoName" + >:=> (line 36, col 1) to (line 36, col 23) +36 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1482 to 1509) SpanInfo: {"start":1484,"length":25} + >primarySkillB = "noSkill" + >:=> (line 36, col 26) to (line 36, col 51) +36 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1510 to 1543) SpanInfo: {"start":1511,"length":27} + >secondarySkillB = "noSkill" + >:=> (line 36, col 53) to (line 36, col 80) +36 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1544 to 1565) SpanInfo: {"start":1483,"length":61} + >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] + >:=> (line 36, col 25) to (line 36, col 86) -------------------------------- 37 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1566 to 1655) SpanInfo: {"start":1566,"length":129} - >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = - > ["trimmer", ["trimming", "edging"]] - >:=> (line 37, col 0) to (line 38, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1566 to 1589) SpanInfo: {"start":1567,"length":22} + >nameMB = "helloNoName" + >:=> (line 37, col 1) to (line 37, col 23) +37 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1590 to 1617) SpanInfo: {"start":1592,"length":25} + >primarySkillB = "noSkill" + >:=> (line 37, col 26) to (line 37, col 51) +37 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1618 to 1651) SpanInfo: {"start":1619,"length":27} + >secondarySkillB = "noSkill" + >:=> (line 37, col 53) to (line 37, col 80) +37 >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = + + ~~~~=> Pos: (1652 to 1655) SpanInfo: {"start":1591,"length":61} + >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] + >:=> (line 37, col 25) to (line 37, col 86) -------------------------------- 38 > ["trimmer", ["trimming", "edging"]]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1656 to 1696) SpanInfo: {"start":1566,"length":129} - >[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = - > ["trimmer", ["trimming", "edging"]] - >:=> (line 37, col 0) to (line 38, col 39) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1656 to 1696) SpanInfo: {"start":1591,"length":61} + >[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] + >:=> (line 37, col 25) to (line 37, col 86) -------------------------------- 39 > @@ -205,21 +278,36 @@ -------------------------------- 40 >[numberB = -1, ...robotAInfo] = robotB; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1698 to 1737) SpanInfo: {"start":1698,"length":38} - >[numberB = -1, ...robotAInfo] = robotB - >:=> (line 40, col 0) to (line 40, col 38) + ~~~~~~~~~~~~~~ => Pos: (1698 to 1711) SpanInfo: {"start":1699,"length":12} + >numberB = -1 + >:=> (line 40, col 1) to (line 40, col 13) +40 >[numberB = -1, ...robotAInfo] = robotB; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1712 to 1737) SpanInfo: {"start":1713,"length":13} + >...robotAInfo + >:=> (line 40, col 15) to (line 40, col 28) -------------------------------- 41 >[numberB = -1, ...robotAInfo] = getRobotB(); - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1738 to 1782) SpanInfo: {"start":1738,"length":43} - >[numberB = -1, ...robotAInfo] = getRobotB() - >:=> (line 41, col 0) to (line 41, col 43) + ~~~~~~~~~~~~~~ => Pos: (1738 to 1751) SpanInfo: {"start":1739,"length":12} + >numberB = -1 + >:=> (line 41, col 1) to (line 41, col 13) +41 >[numberB = -1, ...robotAInfo] = getRobotB(); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1752 to 1782) SpanInfo: {"start":1753,"length":13} + >...robotAInfo + >:=> (line 41, col 15) to (line 41, col 28) -------------------------------- 42 >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1783 to 1849) SpanInfo: {"start":1783,"length":65} - >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"] - >:=> (line 42, col 0) to (line 42, col 65) + ~~~~~~~~~~~~~~ => Pos: (1783 to 1796) SpanInfo: {"start":1784,"length":12} + >numberB = -1 + >:=> (line 42, col 1) to (line 42, col 13) +42 >[numberB = -1, ...robotAInfo] = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1797 to 1849) SpanInfo: {"start":1798,"length":13} + >...robotAInfo + >:=> (line 42, col 15) to (line 42, col 28) -------------------------------- 43 > From 481ed321fb7f3cc42c3c74386ecfe082bb20211e Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 15:04:12 -0800 Subject: [PATCH 089/164] Test cases for array pattern destructuring assignment in for initializer --- ...gAssignmentForArrayBindingPattern.baseline | 1125 ++++++++++++++++ ...rArrayBindingPatternDefaultValues.baseline | 1137 +++++++++++++++++ ...cturingAssignmentForArrayBindingPattern.ts | 94 ++ ...mentForArrayBindingPatternDefaultValues.ts | 109 ++ 4 files changed, 2465 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline new file mode 100644 index 00000000000..e08738cffc4 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline @@ -0,0 +1,1125 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (142 to 185) SpanInfo: {"start":142,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (186 to 207) SpanInfo: {"start":212,"length":13} + >return robotA + >:=> (line 8, col 4) to (line 8, col 17) +-------------------------------- +8 > return robotA; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (208 to 226) SpanInfo: {"start":212,"length":13} + >return robotA + >:=> (line 8, col 4) to (line 8, col 17) +-------------------------------- +9 >} + + ~~ => Pos: (227 to 228) SpanInfo: {"start":227,"length":1} + >} + >:=> (line 9, col 0) to (line 9, col 1) +-------------------------------- +10 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (229 to 292) SpanInfo: {"start":229,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 10, col 0) to (line 10, col 62) +-------------------------------- +11 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (293 to 366) SpanInfo: {"start":293,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 11, col 0) to (line 11, col 72) +-------------------------------- +12 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (367 to 393) SpanInfo: {"start":398,"length":18} + >return multiRobotA + >:=> (line 13, col 4) to (line 13, col 22) +-------------------------------- +13 > return multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (394 to 417) SpanInfo: {"start":398,"length":18} + >return multiRobotA + >:=> (line 13, col 4) to (line 13, col 22) +-------------------------------- +14 >} + + ~~ => Pos: (418 to 419) SpanInfo: {"start":418,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >let nameA: string, primarySkillA: string, secondarySkillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (420 to 486) SpanInfo: undefined +-------------------------------- +16 >let numberB: number, nameB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (487 to 522) SpanInfo: undefined +-------------------------------- +17 >let numberA2: number, nameA2: string, skillA2: string, nameMA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (523 to 593) SpanInfo: undefined +-------------------------------- +18 >let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (594 to 696) SpanInfo: undefined +-------------------------------- +19 >let i: number; + + ~~~~~~~~~~~~~~~ => Pos: (697 to 711) SpanInfo: undefined +-------------------------------- +20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (712 to 716) SpanInfo: {"start":717,"length":25} + >[, nameA] = robotA, i = 0 + >:=> (line 20, col 5) to (line 20, col 30) +20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (717 to 735) SpanInfo: {"start":720,"length":5} + >nameA + >:=> (line 20, col 8) to (line 20, col 13) +20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (736 to 742) SpanInfo: {"start":737,"length":5} + >i = 0 + >:=> (line 20, col 25) to (line 20, col 30) +20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (743 to 749) SpanInfo: {"start":744,"length":5} + >i < 1 + >:=> (line 20, col 32) to (line 20, col 37) +20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (750 to 757) SpanInfo: {"start":751,"length":3} + >i++ + >:=> (line 20, col 39) to (line 20, col 42) +-------------------------------- +21 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (758 to 781) SpanInfo: {"start":762,"length":18} + >console.log(nameA) + >:=> (line 21, col 4) to (line 21, col 22) +-------------------------------- +22 >} + + ~~ => Pos: (782 to 783) SpanInfo: {"start":762,"length":18} + >console.log(nameA) + >:=> (line 21, col 4) to (line 21, col 22) +-------------------------------- +23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (784 to 788) SpanInfo: {"start":789,"length":29} + >[, nameA] = getRobot(), i = 0 + >:=> (line 23, col 5) to (line 23, col 34) +23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (789 to 811) SpanInfo: {"start":792,"length":5} + >nameA + >:=> (line 23, col 8) to (line 23, col 13) +23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (812 to 818) SpanInfo: {"start":813,"length":5} + >i = 0 + >:=> (line 23, col 29) to (line 23, col 34) +23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (819 to 825) SpanInfo: {"start":820,"length":5} + >i < 1 + >:=> (line 23, col 36) to (line 23, col 41) +23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (826 to 833) SpanInfo: {"start":827,"length":3} + >i++ + >:=> (line 23, col 43) to (line 23, col 46) +-------------------------------- +24 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (834 to 857) SpanInfo: {"start":838,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +25 >} + + ~~ => Pos: (858 to 859) SpanInfo: {"start":838,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (860 to 864) SpanInfo: {"start":865,"length":45} + >[, nameA] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 26, col 5) to (line 26, col 50) +26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (865 to 903) SpanInfo: {"start":868,"length":5} + >nameA + >:=> (line 26, col 8) to (line 26, col 13) +26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (904 to 910) SpanInfo: {"start":905,"length":5} + >i = 0 + >:=> (line 26, col 45) to (line 26, col 50) +26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (911 to 917) SpanInfo: {"start":912,"length":5} + >i < 1 + >:=> (line 26, col 52) to (line 26, col 57) +26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (918 to 925) SpanInfo: {"start":919,"length":3} + >i++ + >:=> (line 26, col 59) to (line 26, col 62) +-------------------------------- +27 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (926 to 949) SpanInfo: {"start":930,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +28 >} + + ~~ => Pos: (950 to 951) SpanInfo: {"start":930,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (952 to 956) SpanInfo: {"start":957,"length":57} + >[, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0 + >:=> (line 29, col 5) to (line 29, col 62) +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (957 to 974) SpanInfo: {"start":961,"length":13} + >primarySkillA + >:=> (line 29, col 9) to (line 29, col 22) +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (975 to 991) SpanInfo: {"start":976,"length":15} + >secondarySkillA + >:=> (line 29, col 24) to (line 29, col 39) +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (992 to 1007) SpanInfo: {"start":960,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 29, col 8) to (line 29, col 40) +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1008 to 1014) SpanInfo: {"start":1009,"length":5} + >i = 0 + >:=> (line 29, col 57) to (line 29, col 62) +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1015 to 1021) SpanInfo: {"start":1016,"length":5} + >i < 1 + >:=> (line 29, col 64) to (line 29, col 69) +29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1022 to 1029) SpanInfo: {"start":1023,"length":3} + >i++ + >:=> (line 29, col 71) to (line 29, col 74) +-------------------------------- +30 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1030 to 1061) SpanInfo: {"start":1034,"length":26} + >console.log(primarySkillA) + >:=> (line 30, col 4) to (line 30, col 30) +-------------------------------- +31 >} + + ~~ => Pos: (1062 to 1063) SpanInfo: {"start":1034,"length":26} + >console.log(primarySkillA) + >:=> (line 30, col 4) to (line 30, col 30) +-------------------------------- +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1064 to 1068) SpanInfo: {"start":1069,"length":61} + >[, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0 + >:=> (line 32, col 5) to (line 32, col 66) +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (1069 to 1086) SpanInfo: {"start":1073,"length":13} + >primarySkillA + >:=> (line 32, col 9) to (line 32, col 22) +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1087 to 1103) SpanInfo: {"start":1088,"length":15} + >secondarySkillA + >:=> (line 32, col 24) to (line 32, col 39) +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~=> Pos: (1104 to 1123) SpanInfo: {"start":1072,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 32, col 8) to (line 32, col 40) +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1124 to 1130) SpanInfo: {"start":1125,"length":5} + >i = 0 + >:=> (line 32, col 61) to (line 32, col 66) +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1131 to 1137) SpanInfo: {"start":1132,"length":5} + >i < 1 + >:=> (line 32, col 68) to (line 32, col 73) +32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1138 to 1145) SpanInfo: {"start":1139,"length":3} + >i++ + >:=> (line 32, col 75) to (line 32, col 78) +-------------------------------- +33 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1146 to 1177) SpanInfo: {"start":1150,"length":26} + >console.log(primarySkillA) + >:=> (line 33, col 4) to (line 33, col 30) +-------------------------------- +34 >} + + ~~ => Pos: (1178 to 1179) SpanInfo: {"start":1150,"length":26} + >console.log(primarySkillA) + >:=> (line 33, col 4) to (line 33, col 30) +-------------------------------- +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1180 to 1184) SpanInfo: {"start":1185,"length":81} + >[, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 35, col 5) to (line 35, col 86) +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (1185 to 1202) SpanInfo: {"start":1189,"length":13} + >primarySkillA + >:=> (line 35, col 9) to (line 35, col 22) +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1203 to 1219) SpanInfo: {"start":1204,"length":15} + >secondarySkillA + >:=> (line 35, col 24) to (line 35, col 39) +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1220 to 1259) SpanInfo: {"start":1188,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 35, col 8) to (line 35, col 40) +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1260 to 1266) SpanInfo: {"start":1261,"length":5} + >i = 0 + >:=> (line 35, col 81) to (line 35, col 86) +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1267 to 1273) SpanInfo: {"start":1268,"length":5} + >i < 1 + >:=> (line 35, col 88) to (line 35, col 93) +35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1274 to 1281) SpanInfo: {"start":1275,"length":3} + >i++ + >:=> (line 35, col 95) to (line 35, col 98) +-------------------------------- +36 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1282 to 1313) SpanInfo: {"start":1286,"length":26} + >console.log(primarySkillA) + >:=> (line 36, col 4) to (line 36, col 30) +-------------------------------- +37 >} + + ~~ => Pos: (1314 to 1315) SpanInfo: {"start":1286,"length":26} + >console.log(primarySkillA) + >:=> (line 36, col 4) to (line 36, col 30) +-------------------------------- +38 >for ([numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1316 to 1320) SpanInfo: {"start":1321,"length":25} + >[numberB] = robotA, i = 0 + >:=> (line 38, col 5) to (line 38, col 30) +38 >for ([numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1321 to 1339) SpanInfo: {"start":1322,"length":7} + >numberB + >:=> (line 38, col 6) to (line 38, col 13) +38 >for ([numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1340 to 1346) SpanInfo: {"start":1341,"length":5} + >i = 0 + >:=> (line 38, col 25) to (line 38, col 30) +38 >for ([numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1347 to 1353) SpanInfo: {"start":1348,"length":5} + >i < 1 + >:=> (line 38, col 32) to (line 38, col 37) +38 >for ([numberB] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1354 to 1361) SpanInfo: {"start":1355,"length":3} + >i++ + >:=> (line 38, col 39) to (line 38, col 42) +-------------------------------- +39 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1362 to 1387) SpanInfo: {"start":1366,"length":20} + >console.log(numberB) + >:=> (line 39, col 4) to (line 39, col 24) +-------------------------------- +40 >} + + ~~ => Pos: (1388 to 1389) SpanInfo: {"start":1366,"length":20} + >console.log(numberB) + >:=> (line 39, col 4) to (line 39, col 24) +-------------------------------- +41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1390 to 1394) SpanInfo: {"start":1395,"length":29} + >[numberB] = getRobot(), i = 0 + >:=> (line 41, col 5) to (line 41, col 34) +41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1395 to 1417) SpanInfo: {"start":1396,"length":7} + >numberB + >:=> (line 41, col 6) to (line 41, col 13) +41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1418 to 1424) SpanInfo: {"start":1419,"length":5} + >i = 0 + >:=> (line 41, col 29) to (line 41, col 34) +41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1425 to 1431) SpanInfo: {"start":1426,"length":5} + >i < 1 + >:=> (line 41, col 36) to (line 41, col 41) +41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1432 to 1439) SpanInfo: {"start":1433,"length":3} + >i++ + >:=> (line 41, col 43) to (line 41, col 46) +-------------------------------- +42 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1440 to 1465) SpanInfo: {"start":1444,"length":20} + >console.log(numberB) + >:=> (line 42, col 4) to (line 42, col 24) +-------------------------------- +43 >} + + ~~ => Pos: (1466 to 1467) SpanInfo: {"start":1444,"length":20} + >console.log(numberB) + >:=> (line 42, col 4) to (line 42, col 24) +-------------------------------- +44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1468 to 1472) SpanInfo: {"start":1473,"length":45} + >[numberB] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 44, col 5) to (line 44, col 50) +44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1473 to 1511) SpanInfo: {"start":1474,"length":7} + >numberB + >:=> (line 44, col 6) to (line 44, col 13) +44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1512 to 1518) SpanInfo: {"start":1513,"length":5} + >i = 0 + >:=> (line 44, col 45) to (line 44, col 50) +44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1519 to 1525) SpanInfo: {"start":1520,"length":5} + >i < 1 + >:=> (line 44, col 52) to (line 44, col 57) +44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1526 to 1533) SpanInfo: {"start":1527,"length":3} + >i++ + >:=> (line 44, col 59) to (line 44, col 62) +-------------------------------- +45 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1534 to 1559) SpanInfo: {"start":1538,"length":20} + >console.log(numberB) + >:=> (line 45, col 4) to (line 45, col 24) +-------------------------------- +46 >} + + ~~ => Pos: (1560 to 1561) SpanInfo: {"start":1538,"length":20} + >console.log(numberB) + >:=> (line 45, col 4) to (line 45, col 24) +-------------------------------- +47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1562 to 1566) SpanInfo: {"start":1567,"length":28} + >[nameB] = multiRobotA, i = 0 + >:=> (line 47, col 5) to (line 47, col 33) +47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1567 to 1588) SpanInfo: {"start":1568,"length":5} + >nameB + >:=> (line 47, col 6) to (line 47, col 11) +47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1589 to 1595) SpanInfo: {"start":1590,"length":5} + >i = 0 + >:=> (line 47, col 28) to (line 47, col 33) +47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1596 to 1602) SpanInfo: {"start":1597,"length":5} + >i < 1 + >:=> (line 47, col 35) to (line 47, col 40) +47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1603 to 1610) SpanInfo: {"start":1604,"length":3} + >i++ + >:=> (line 47, col 42) to (line 47, col 45) +-------------------------------- +48 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1611 to 1634) SpanInfo: {"start":1615,"length":18} + >console.log(nameB) + >:=> (line 48, col 4) to (line 48, col 22) +-------------------------------- +49 >} + + ~~ => Pos: (1635 to 1636) SpanInfo: {"start":1615,"length":18} + >console.log(nameB) + >:=> (line 48, col 4) to (line 48, col 22) +-------------------------------- +50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1637 to 1641) SpanInfo: {"start":1642,"length":32} + >[nameB] = getMultiRobot(), i = 0 + >:=> (line 50, col 5) to (line 50, col 37) +50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1642 to 1667) SpanInfo: {"start":1643,"length":5} + >nameB + >:=> (line 50, col 6) to (line 50, col 11) +50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1668 to 1674) SpanInfo: {"start":1669,"length":5} + >i = 0 + >:=> (line 50, col 32) to (line 50, col 37) +50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1675 to 1681) SpanInfo: {"start":1676,"length":5} + >i < 1 + >:=> (line 50, col 39) to (line 50, col 44) +50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1682 to 1689) SpanInfo: {"start":1683,"length":3} + >i++ + >:=> (line 50, col 46) to (line 50, col 49) +-------------------------------- +51 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1690 to 1713) SpanInfo: {"start":1694,"length":18} + >console.log(nameB) + >:=> (line 51, col 4) to (line 51, col 22) +-------------------------------- +52 >} + + ~~ => Pos: (1714 to 1715) SpanInfo: {"start":1694,"length":18} + >console.log(nameB) + >:=> (line 51, col 4) to (line 51, col 22) +-------------------------------- +53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1716 to 1720) SpanInfo: {"start":1721,"length":52} + >[nameB] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 53, col 5) to (line 53, col 57) +53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1721 to 1766) SpanInfo: {"start":1722,"length":5} + >nameB + >:=> (line 53, col 6) to (line 53, col 11) +53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1767 to 1773) SpanInfo: {"start":1768,"length":5} + >i = 0 + >:=> (line 53, col 52) to (line 53, col 57) +53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1774 to 1780) SpanInfo: {"start":1775,"length":5} + >i < 1 + >:=> (line 53, col 59) to (line 53, col 64) +53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1781 to 1788) SpanInfo: {"start":1782,"length":3} + >i++ + >:=> (line 53, col 66) to (line 53, col 69) +-------------------------------- +54 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1789 to 1812) SpanInfo: {"start":1793,"length":18} + >console.log(nameB) + >:=> (line 54, col 4) to (line 54, col 22) +-------------------------------- +55 >} + + ~~ => Pos: (1813 to 1814) SpanInfo: {"start":1793,"length":18} + >console.log(nameB) + >:=> (line 54, col 4) to (line 54, col 22) +-------------------------------- +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1815 to 1819) SpanInfo: {"start":1820,"length":43} + >[numberA2, nameA2, skillA2] = robotA, i = 0 + >:=> (line 56, col 5) to (line 56, col 48) +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1820 to 1829) SpanInfo: {"start":1821,"length":8} + >numberA2 + >:=> (line 56, col 6) to (line 56, col 14) +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1830 to 1837) SpanInfo: {"start":1831,"length":6} + >nameA2 + >:=> (line 56, col 16) to (line 56, col 22) +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1838 to 1856) SpanInfo: {"start":1839,"length":7} + >skillA2 + >:=> (line 56, col 24) to (line 56, col 31) +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1857 to 1863) SpanInfo: {"start":1858,"length":5} + >i = 0 + >:=> (line 56, col 43) to (line 56, col 48) +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1864 to 1870) SpanInfo: {"start":1865,"length":5} + >i < 1 + >:=> (line 56, col 50) to (line 56, col 55) +56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1871 to 1878) SpanInfo: {"start":1872,"length":3} + >i++ + >:=> (line 56, col 57) to (line 56, col 60) +-------------------------------- +57 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1879 to 1903) SpanInfo: {"start":1883,"length":19} + >console.log(nameA2) + >:=> (line 57, col 4) to (line 57, col 23) +-------------------------------- +58 >} + + ~~ => Pos: (1904 to 1905) SpanInfo: {"start":1883,"length":19} + >console.log(nameA2) + >:=> (line 57, col 4) to (line 57, col 23) +-------------------------------- +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1906 to 1910) SpanInfo: {"start":1911,"length":47} + >[numberA2, nameA2, skillA2] = getRobot(), i = 0 + >:=> (line 59, col 5) to (line 59, col 52) +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1911 to 1920) SpanInfo: {"start":1912,"length":8} + >numberA2 + >:=> (line 59, col 6) to (line 59, col 14) +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1921 to 1928) SpanInfo: {"start":1922,"length":6} + >nameA2 + >:=> (line 59, col 16) to (line 59, col 22) +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1929 to 1951) SpanInfo: {"start":1930,"length":7} + >skillA2 + >:=> (line 59, col 24) to (line 59, col 31) +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1952 to 1958) SpanInfo: {"start":1953,"length":5} + >i = 0 + >:=> (line 59, col 47) to (line 59, col 52) +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1959 to 1965) SpanInfo: {"start":1960,"length":5} + >i < 1 + >:=> (line 59, col 54) to (line 59, col 59) +59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1966 to 1973) SpanInfo: {"start":1967,"length":3} + >i++ + >:=> (line 59, col 61) to (line 59, col 64) +-------------------------------- +60 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1974 to 1998) SpanInfo: {"start":1978,"length":19} + >console.log(nameA2) + >:=> (line 60, col 4) to (line 60, col 23) +-------------------------------- +61 >} + + ~~ => Pos: (1999 to 2000) SpanInfo: {"start":1978,"length":19} + >console.log(nameA2) + >:=> (line 60, col 4) to (line 60, col 23) +-------------------------------- +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2001 to 2005) SpanInfo: {"start":2006,"length":63} + >[numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 62, col 5) to (line 62, col 68) +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2006 to 2015) SpanInfo: {"start":2007,"length":8} + >numberA2 + >:=> (line 62, col 6) to (line 62, col 14) +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2016 to 2023) SpanInfo: {"start":2017,"length":6} + >nameA2 + >:=> (line 62, col 16) to (line 62, col 22) +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2024 to 2062) SpanInfo: {"start":2025,"length":7} + >skillA2 + >:=> (line 62, col 24) to (line 62, col 31) +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2063 to 2069) SpanInfo: {"start":2064,"length":5} + >i = 0 + >:=> (line 62, col 63) to (line 62, col 68) +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2070 to 2076) SpanInfo: {"start":2071,"length":5} + >i < 1 + >:=> (line 62, col 70) to (line 62, col 75) +62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2077 to 2084) SpanInfo: {"start":2078,"length":3} + >i++ + >:=> (line 62, col 77) to (line 62, col 80) +-------------------------------- +63 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2085 to 2109) SpanInfo: {"start":2089,"length":19} + >console.log(nameA2) + >:=> (line 63, col 4) to (line 63, col 23) +-------------------------------- +64 >} + + ~~ => Pos: (2110 to 2111) SpanInfo: {"start":2089,"length":19} + >console.log(nameA2) + >:=> (line 63, col 4) to (line 63, col 23) +-------------------------------- +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2112 to 2116) SpanInfo: {"start":2117,"length":63} + >[nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0 + >:=> (line 65, col 5) to (line 65, col 68) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2117 to 2124) SpanInfo: {"start":2118,"length":6} + >nameMA + >:=> (line 65, col 6) to (line 65, col 12) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (2125 to 2140) SpanInfo: {"start":2127,"length":13} + >primarySkillA + >:=> (line 65, col 15) to (line 65, col 28) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2141 to 2157) SpanInfo: {"start":2142,"length":15} + >secondarySkillA + >:=> (line 65, col 30) to (line 65, col 45) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (2158 to 2173) SpanInfo: {"start":2126,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 65, col 14) to (line 65, col 46) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2174 to 2180) SpanInfo: {"start":2175,"length":5} + >i = 0 + >:=> (line 65, col 63) to (line 65, col 68) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2181 to 2187) SpanInfo: {"start":2182,"length":5} + >i < 1 + >:=> (line 65, col 70) to (line 65, col 75) +65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2188 to 2195) SpanInfo: {"start":2189,"length":3} + >i++ + >:=> (line 65, col 77) to (line 65, col 80) +-------------------------------- +66 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2196 to 2220) SpanInfo: {"start":2200,"length":19} + >console.log(nameMA) + >:=> (line 66, col 4) to (line 66, col 23) +-------------------------------- +67 >} + + ~~ => Pos: (2221 to 2222) SpanInfo: {"start":2200,"length":19} + >console.log(nameMA) + >:=> (line 66, col 4) to (line 66, col 23) +-------------------------------- +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2223 to 2227) SpanInfo: {"start":2228,"length":67} + >[nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0 + >:=> (line 68, col 5) to (line 68, col 72) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2228 to 2235) SpanInfo: {"start":2229,"length":6} + >nameMA + >:=> (line 68, col 6) to (line 68, col 12) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (2236 to 2251) SpanInfo: {"start":2238,"length":13} + >primarySkillA + >:=> (line 68, col 15) to (line 68, col 28) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2252 to 2268) SpanInfo: {"start":2253,"length":15} + >secondarySkillA + >:=> (line 68, col 30) to (line 68, col 45) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~=> Pos: (2269 to 2288) SpanInfo: {"start":2237,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 68, col 14) to (line 68, col 46) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2289 to 2295) SpanInfo: {"start":2290,"length":5} + >i = 0 + >:=> (line 68, col 67) to (line 68, col 72) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2296 to 2302) SpanInfo: {"start":2297,"length":5} + >i < 1 + >:=> (line 68, col 74) to (line 68, col 79) +68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2303 to 2310) SpanInfo: {"start":2304,"length":3} + >i++ + >:=> (line 68, col 81) to (line 68, col 84) +-------------------------------- +69 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2311 to 2335) SpanInfo: {"start":2315,"length":19} + >console.log(nameMA) + >:=> (line 69, col 4) to (line 69, col 23) +-------------------------------- +70 >} + + ~~ => Pos: (2336 to 2337) SpanInfo: {"start":2315,"length":19} + >console.log(nameMA) + >:=> (line 69, col 4) to (line 69, col 23) +-------------------------------- +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2338 to 2342) SpanInfo: {"start":2343,"length":87} + >[nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 71, col 5) to (line 71, col 92) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2343 to 2350) SpanInfo: {"start":2344,"length":6} + >nameMA + >:=> (line 71, col 6) to (line 71, col 12) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (2351 to 2366) SpanInfo: {"start":2353,"length":13} + >primarySkillA + >:=> (line 71, col 15) to (line 71, col 28) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2367 to 2383) SpanInfo: {"start":2368,"length":15} + >secondarySkillA + >:=> (line 71, col 30) to (line 71, col 45) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2384 to 2423) SpanInfo: {"start":2352,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 71, col 14) to (line 71, col 46) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2424 to 2430) SpanInfo: {"start":2425,"length":5} + >i = 0 + >:=> (line 71, col 87) to (line 71, col 92) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2431 to 2437) SpanInfo: {"start":2432,"length":5} + >i < 1 + >:=> (line 71, col 94) to (line 71, col 99) +71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2438 to 2445) SpanInfo: {"start":2439,"length":3} + >i++ + >:=> (line 71, col 101) to (line 71, col 104) +-------------------------------- +72 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2446 to 2470) SpanInfo: {"start":2450,"length":19} + >console.log(nameMA) + >:=> (line 72, col 4) to (line 72, col 23) +-------------------------------- +73 >} + + ~~ => Pos: (2471 to 2472) SpanInfo: {"start":2450,"length":19} + >console.log(nameMA) + >:=> (line 72, col 4) to (line 72, col 23) +-------------------------------- +74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2473 to 2477) SpanInfo: {"start":2478,"length":41} + >[numberA3, ...robotAInfo] = robotA, i = 0 + >:=> (line 74, col 5) to (line 74, col 46) +74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2478 to 2487) SpanInfo: {"start":2479,"length":8} + >numberA3 + >:=> (line 74, col 6) to (line 74, col 14) +74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2488 to 2512) SpanInfo: {"start":2489,"length":13} + >...robotAInfo + >:=> (line 74, col 16) to (line 74, col 29) +74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2513 to 2519) SpanInfo: {"start":2514,"length":5} + >i = 0 + >:=> (line 74, col 41) to (line 74, col 46) +74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2520 to 2526) SpanInfo: {"start":2521,"length":5} + >i < 1 + >:=> (line 74, col 48) to (line 74, col 53) +74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2527 to 2534) SpanInfo: {"start":2528,"length":3} + >i++ + >:=> (line 74, col 55) to (line 74, col 58) +-------------------------------- +75 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2535 to 2561) SpanInfo: {"start":2539,"length":21} + >console.log(numberA3) + >:=> (line 75, col 4) to (line 75, col 25) +-------------------------------- +76 >} + + ~~ => Pos: (2562 to 2563) SpanInfo: {"start":2539,"length":21} + >console.log(numberA3) + >:=> (line 75, col 4) to (line 75, col 25) +-------------------------------- +77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2564 to 2568) SpanInfo: {"start":2569,"length":45} + >[numberA3, ...robotAInfo] = getRobot(), i = 0 + >:=> (line 77, col 5) to (line 77, col 50) +77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2569 to 2578) SpanInfo: {"start":2570,"length":8} + >numberA3 + >:=> (line 77, col 6) to (line 77, col 14) +77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2579 to 2607) SpanInfo: {"start":2580,"length":13} + >...robotAInfo + >:=> (line 77, col 16) to (line 77, col 29) +77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2608 to 2614) SpanInfo: {"start":2609,"length":5} + >i = 0 + >:=> (line 77, col 45) to (line 77, col 50) +77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2615 to 2621) SpanInfo: {"start":2616,"length":5} + >i < 1 + >:=> (line 77, col 52) to (line 77, col 57) +77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2622 to 2629) SpanInfo: {"start":2623,"length":3} + >i++ + >:=> (line 77, col 59) to (line 77, col 62) +-------------------------------- +78 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2630 to 2656) SpanInfo: {"start":2634,"length":21} + >console.log(numberA3) + >:=> (line 78, col 4) to (line 78, col 25) +-------------------------------- +79 >} + + ~~ => Pos: (2657 to 2658) SpanInfo: {"start":2634,"length":21} + >console.log(numberA3) + >:=> (line 78, col 4) to (line 78, col 25) +-------------------------------- +80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2659 to 2663) SpanInfo: {"start":2664,"length":68} + >[numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 80, col 5) to (line 80, col 73) +80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2664 to 2673) SpanInfo: {"start":2665,"length":8} + >numberA3 + >:=> (line 80, col 6) to (line 80, col 14) +80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2674 to 2725) SpanInfo: {"start":2675,"length":13} + >...robotAInfo + >:=> (line 80, col 16) to (line 80, col 29) +80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2726 to 2732) SpanInfo: {"start":2727,"length":5} + >i = 0 + >:=> (line 80, col 68) to (line 80, col 73) +80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2733 to 2739) SpanInfo: {"start":2734,"length":5} + >i < 1 + >:=> (line 80, col 75) to (line 80, col 80) +80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2740 to 2747) SpanInfo: {"start":2741,"length":3} + >i++ + >:=> (line 80, col 82) to (line 80, col 85) +-------------------------------- +81 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2748 to 2774) SpanInfo: {"start":2752,"length":21} + >console.log(numberA3) + >:=> (line 81, col 4) to (line 81, col 25) +-------------------------------- +82 >} + + ~~ => Pos: (2775 to 2776) SpanInfo: {"start":2752,"length":21} + >console.log(numberA3) + >:=> (line 81, col 4) to (line 81, col 25) +-------------------------------- +83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2777 to 2781) SpanInfo: {"start":2782,"length":41} + >[...multiRobotAInfo] = multiRobotA, i = 0 + >:=> (line 83, col 5) to (line 83, col 46) +83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2782 to 2816) SpanInfo: {"start":2783,"length":18} + >...multiRobotAInfo + >:=> (line 83, col 6) to (line 83, col 24) +83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2817 to 2823) SpanInfo: {"start":2818,"length":5} + >i = 0 + >:=> (line 83, col 41) to (line 83, col 46) +83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2824 to 2830) SpanInfo: {"start":2825,"length":5} + >i < 1 + >:=> (line 83, col 48) to (line 83, col 53) +83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2831 to 2838) SpanInfo: {"start":2832,"length":3} + >i++ + >:=> (line 83, col 55) to (line 83, col 58) +-------------------------------- +84 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2839 to 2872) SpanInfo: {"start":2843,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 84, col 4) to (line 84, col 32) +-------------------------------- +85 >} + + ~~ => Pos: (2873 to 2874) SpanInfo: {"start":2843,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 84, col 4) to (line 84, col 32) +-------------------------------- +86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2875 to 2879) SpanInfo: {"start":2880,"length":45} + >[...multiRobotAInfo] = getMultiRobot(), i = 0 + >:=> (line 86, col 5) to (line 86, col 50) +86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2880 to 2918) SpanInfo: {"start":2881,"length":18} + >...multiRobotAInfo + >:=> (line 86, col 6) to (line 86, col 24) +86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2919 to 2925) SpanInfo: {"start":2920,"length":5} + >i = 0 + >:=> (line 86, col 45) to (line 86, col 50) +86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2926 to 2932) SpanInfo: {"start":2927,"length":5} + >i < 1 + >:=> (line 86, col 52) to (line 86, col 57) +86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2933 to 2940) SpanInfo: {"start":2934,"length":3} + >i++ + >:=> (line 86, col 59) to (line 86, col 62) +-------------------------------- +87 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2941 to 2974) SpanInfo: {"start":2945,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 87, col 4) to (line 87, col 32) +-------------------------------- +88 >} + + ~~ => Pos: (2975 to 2976) SpanInfo: {"start":2945,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 87, col 4) to (line 87, col 32) +-------------------------------- +89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2977 to 2981) SpanInfo: {"start":2982,"length":84} + >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 89, col 5) to (line 89, col 89) +89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2982 to 3059) SpanInfo: {"start":2983,"length":18} + >...multiRobotAInfo + >:=> (line 89, col 6) to (line 89, col 24) +89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3060 to 3066) SpanInfo: {"start":3061,"length":5} + >i = 0 + >:=> (line 89, col 84) to (line 89, col 89) +89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3067 to 3073) SpanInfo: {"start":3068,"length":5} + >i < 1 + >:=> (line 89, col 91) to (line 89, col 96) +89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3074 to 3081) SpanInfo: {"start":3075,"length":3} + >i++ + >:=> (line 89, col 98) to (line 89, col 101) +-------------------------------- +90 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3082 to 3115) SpanInfo: {"start":3086,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 90, col 4) to (line 90, col 32) +-------------------------------- +91 >} + ~ => Pos: (3116 to 3116) SpanInfo: {"start":3086,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 90, col 4) to (line 90, col 32) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..28b4bdb96e9 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,1137 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (142 to 185) SpanInfo: {"start":142,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (186 to 207) SpanInfo: {"start":212,"length":13} + >return robotA + >:=> (line 8, col 4) to (line 8, col 17) +-------------------------------- +8 > return robotA; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (208 to 226) SpanInfo: {"start":212,"length":13} + >return robotA + >:=> (line 8, col 4) to (line 8, col 17) +-------------------------------- +9 >} + + ~~ => Pos: (227 to 228) SpanInfo: {"start":227,"length":1} + >} + >:=> (line 9, col 0) to (line 9, col 1) +-------------------------------- +10 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (229 to 292) SpanInfo: {"start":229,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 10, col 0) to (line 10, col 62) +-------------------------------- +11 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (293 to 366) SpanInfo: {"start":293,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 11, col 0) to (line 11, col 72) +-------------------------------- +12 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (367 to 393) SpanInfo: {"start":398,"length":18} + >return multiRobotA + >:=> (line 13, col 4) to (line 13, col 22) +-------------------------------- +13 > return multiRobotA; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (394 to 417) SpanInfo: {"start":398,"length":18} + >return multiRobotA + >:=> (line 13, col 4) to (line 13, col 22) +-------------------------------- +14 >} + + ~~ => Pos: (418 to 419) SpanInfo: {"start":418,"length":1} + >} + >:=> (line 14, col 0) to (line 14, col 1) +-------------------------------- +15 >let nameA: string, primarySkillA: string, secondarySkillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (420 to 486) SpanInfo: undefined +-------------------------------- +16 >let numberB: number, nameB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (487 to 522) SpanInfo: undefined +-------------------------------- +17 >let numberA2: number, nameA2: string, skillA2: string, nameMA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (523 to 593) SpanInfo: undefined +-------------------------------- +18 >let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (594 to 696) SpanInfo: undefined +-------------------------------- +19 >let i: number; + + ~~~~~~~~~~~~~~~ => Pos: (697 to 711) SpanInfo: undefined +-------------------------------- +20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (712 to 716) SpanInfo: {"start":717,"length":34} + >[, nameA = "name"] = robotA, i = 0 + >:=> (line 20, col 5) to (line 20, col 39) +20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (717 to 744) SpanInfo: {"start":720,"length":14} + >nameA = "name" + >:=> (line 20, col 8) to (line 20, col 22) +20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (745 to 751) SpanInfo: {"start":746,"length":5} + >i = 0 + >:=> (line 20, col 34) to (line 20, col 39) +20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (752 to 758) SpanInfo: {"start":753,"length":5} + >i < 1 + >:=> (line 20, col 41) to (line 20, col 46) +20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (759 to 766) SpanInfo: {"start":760,"length":3} + >i++ + >:=> (line 20, col 48) to (line 20, col 51) +-------------------------------- +21 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (767 to 790) SpanInfo: {"start":771,"length":18} + >console.log(nameA) + >:=> (line 21, col 4) to (line 21, col 22) +-------------------------------- +22 >} + + ~~ => Pos: (791 to 792) SpanInfo: {"start":771,"length":18} + >console.log(nameA) + >:=> (line 21, col 4) to (line 21, col 22) +-------------------------------- +23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (793 to 797) SpanInfo: {"start":798,"length":38} + >[, nameA = "name"] = getRobot(), i = 0 + >:=> (line 23, col 5) to (line 23, col 43) +23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (798 to 829) SpanInfo: {"start":801,"length":14} + >nameA = "name" + >:=> (line 23, col 8) to (line 23, col 22) +23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (830 to 836) SpanInfo: {"start":831,"length":5} + >i = 0 + >:=> (line 23, col 38) to (line 23, col 43) +23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (837 to 843) SpanInfo: {"start":838,"length":5} + >i < 1 + >:=> (line 23, col 45) to (line 23, col 50) +23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (844 to 851) SpanInfo: {"start":845,"length":3} + >i++ + >:=> (line 23, col 52) to (line 23, col 55) +-------------------------------- +24 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (852 to 875) SpanInfo: {"start":856,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +25 >} + + ~~ => Pos: (876 to 877) SpanInfo: {"start":856,"length":18} + >console.log(nameA) + >:=> (line 24, col 4) to (line 24, col 22) +-------------------------------- +26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (878 to 882) SpanInfo: {"start":883,"length":54} + >[, nameA = "name"] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 26, col 5) to (line 26, col 59) +26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (883 to 930) SpanInfo: {"start":886,"length":14} + >nameA = "name" + >:=> (line 26, col 8) to (line 26, col 22) +26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (931 to 937) SpanInfo: {"start":932,"length":5} + >i = 0 + >:=> (line 26, col 54) to (line 26, col 59) +26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (938 to 944) SpanInfo: {"start":939,"length":5} + >i < 1 + >:=> (line 26, col 61) to (line 26, col 66) +26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (945 to 952) SpanInfo: {"start":946,"length":3} + >i++ + >:=> (line 26, col 68) to (line 26, col 71) +-------------------------------- +27 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (953 to 976) SpanInfo: {"start":957,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +28 >} + + ~~ => Pos: (977 to 978) SpanInfo: {"start":957,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +29 >for ([, [ + + ~~~~~ => Pos: (979 to 983) SpanInfo: {"start":984,"length":112} + >[, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"]] = multiRobotA, i = 0 + >:=> (line 29, col 5) to (line 32, col 42) +29 >for ([, [ + + ~~~~~ => Pos: (984 to 988) SpanInfo: {"start":993,"length":25} + >primarySkillA = "primary" + >:=> (line 30, col 4) to (line 30, col 29) +-------------------------------- +30 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (989 to 1019) SpanInfo: {"start":993,"length":25} + >primarySkillA = "primary" + >:=> (line 30, col 4) to (line 30, col 29) +-------------------------------- +31 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1020 to 1053) SpanInfo: {"start":1024,"length":29} + >secondarySkillA = "secondary" + >:=> (line 31, col 4) to (line 31, col 33) +-------------------------------- +32 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1054 to 1073) SpanInfo: {"start":1024,"length":29} + >secondarySkillA = "secondary" + >:=> (line 31, col 4) to (line 31, col 33) +32 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~ => Pos: (1074 to 1089) SpanInfo: {"start":987,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 29, col 8) to (line 32, col 20) +32 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1090 to 1096) SpanInfo: {"start":1091,"length":5} + >i = 0 + >:=> (line 32, col 37) to (line 32, col 42) +32 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1097 to 1103) SpanInfo: {"start":1098,"length":5} + >i < 1 + >:=> (line 32, col 44) to (line 32, col 49) +32 >] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1104 to 1111) SpanInfo: {"start":1105,"length":3} + >i++ + >:=> (line 32, col 51) to (line 32, col 54) +-------------------------------- +33 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1112 to 1143) SpanInfo: {"start":1116,"length":26} + >console.log(primarySkillA) + >:=> (line 33, col 4) to (line 33, col 30) +-------------------------------- +34 >} + + ~~ => Pos: (1144 to 1145) SpanInfo: {"start":1116,"length":26} + >console.log(primarySkillA) + >:=> (line 33, col 4) to (line 33, col 30) +-------------------------------- +35 >for ([, [ + + ~~~~~ => Pos: (1146 to 1150) SpanInfo: {"start":1151,"length":116} + >[, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"]] = getMultiRobot(), i = 0 + >:=> (line 35, col 5) to (line 38, col 46) +35 >for ([, [ + + ~~~~~ => Pos: (1151 to 1155) SpanInfo: {"start":1160,"length":25} + >primarySkillA = "primary" + >:=> (line 36, col 4) to (line 36, col 29) +-------------------------------- +36 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1156 to 1186) SpanInfo: {"start":1160,"length":25} + >primarySkillA = "primary" + >:=> (line 36, col 4) to (line 36, col 29) +-------------------------------- +37 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1187 to 1220) SpanInfo: {"start":1191,"length":29} + >secondarySkillA = "secondary" + >:=> (line 37, col 4) to (line 37, col 33) +-------------------------------- +38 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1221 to 1240) SpanInfo: {"start":1191,"length":29} + >secondarySkillA = "secondary" + >:=> (line 37, col 4) to (line 37, col 33) +38 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1241 to 1260) SpanInfo: {"start":1154,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 35, col 8) to (line 38, col 20) +38 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1261 to 1267) SpanInfo: {"start":1262,"length":5} + >i = 0 + >:=> (line 38, col 41) to (line 38, col 46) +38 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1268 to 1274) SpanInfo: {"start":1269,"length":5} + >i < 1 + >:=> (line 38, col 48) to (line 38, col 53) +38 >] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1275 to 1282) SpanInfo: {"start":1276,"length":3} + >i++ + >:=> (line 38, col 55) to (line 38, col 58) +-------------------------------- +39 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1283 to 1314) SpanInfo: {"start":1287,"length":26} + >console.log(primarySkillA) + >:=> (line 39, col 4) to (line 39, col 30) +-------------------------------- +40 >} + + ~~ => Pos: (1315 to 1316) SpanInfo: {"start":1287,"length":26} + >console.log(primarySkillA) + >:=> (line 39, col 4) to (line 39, col 30) +-------------------------------- +41 >for ([, [ + + ~~~~~ => Pos: (1317 to 1321) SpanInfo: {"start":1322,"length":136} + >[, [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 41, col 5) to (line 44, col 66) +41 >for ([, [ + + ~~~~~ => Pos: (1322 to 1326) SpanInfo: {"start":1331,"length":25} + >primarySkillA = "primary" + >:=> (line 42, col 4) to (line 42, col 29) +-------------------------------- +42 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1327 to 1357) SpanInfo: {"start":1331,"length":25} + >primarySkillA = "primary" + >:=> (line 42, col 4) to (line 42, col 29) +-------------------------------- +43 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1358 to 1391) SpanInfo: {"start":1362,"length":29} + >secondarySkillA = "secondary" + >:=> (line 43, col 4) to (line 43, col 33) +-------------------------------- +44 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1392 to 1411) SpanInfo: {"start":1362,"length":29} + >secondarySkillA = "secondary" + >:=> (line 43, col 4) to (line 43, col 33) +44 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1412 to 1451) SpanInfo: {"start":1325,"length":87} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["none", "none"] + >:=> (line 41, col 8) to (line 44, col 20) +44 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1452 to 1458) SpanInfo: {"start":1453,"length":5} + >i = 0 + >:=> (line 44, col 61) to (line 44, col 66) +44 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1459 to 1465) SpanInfo: {"start":1460,"length":5} + >i < 1 + >:=> (line 44, col 68) to (line 44, col 73) +44 >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1466 to 1473) SpanInfo: {"start":1467,"length":3} + >i++ + >:=> (line 44, col 75) to (line 44, col 78) +-------------------------------- +45 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1474 to 1505) SpanInfo: {"start":1478,"length":26} + >console.log(primarySkillA) + >:=> (line 45, col 4) to (line 45, col 30) +-------------------------------- +46 >} + + ~~ => Pos: (1506 to 1507) SpanInfo: {"start":1478,"length":26} + >console.log(primarySkillA) + >:=> (line 45, col 4) to (line 45, col 30) +-------------------------------- +47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1508 to 1512) SpanInfo: {"start":1513,"length":30} + >[numberB = -1] = robotA, i = 0 + >:=> (line 47, col 5) to (line 47, col 35) +47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1513 to 1536) SpanInfo: {"start":1514,"length":12} + >numberB = -1 + >:=> (line 47, col 6) to (line 47, col 18) +47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1537 to 1543) SpanInfo: {"start":1538,"length":5} + >i = 0 + >:=> (line 47, col 30) to (line 47, col 35) +47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1544 to 1550) SpanInfo: {"start":1545,"length":5} + >i < 1 + >:=> (line 47, col 37) to (line 47, col 42) +47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1551 to 1558) SpanInfo: {"start":1552,"length":3} + >i++ + >:=> (line 47, col 44) to (line 47, col 47) +-------------------------------- +48 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1559 to 1584) SpanInfo: {"start":1563,"length":20} + >console.log(numberB) + >:=> (line 48, col 4) to (line 48, col 24) +-------------------------------- +49 >} + + ~~ => Pos: (1585 to 1586) SpanInfo: {"start":1563,"length":20} + >console.log(numberB) + >:=> (line 48, col 4) to (line 48, col 24) +-------------------------------- +50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1587 to 1591) SpanInfo: {"start":1592,"length":34} + >[numberB = -1] = getRobot(), i = 0 + >:=> (line 50, col 5) to (line 50, col 39) +50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1592 to 1619) SpanInfo: {"start":1593,"length":12} + >numberB = -1 + >:=> (line 50, col 6) to (line 50, col 18) +50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1620 to 1626) SpanInfo: {"start":1621,"length":5} + >i = 0 + >:=> (line 50, col 34) to (line 50, col 39) +50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1627 to 1633) SpanInfo: {"start":1628,"length":5} + >i < 1 + >:=> (line 50, col 41) to (line 50, col 46) +50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1634 to 1641) SpanInfo: {"start":1635,"length":3} + >i++ + >:=> (line 50, col 48) to (line 50, col 51) +-------------------------------- +51 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1642 to 1667) SpanInfo: {"start":1646,"length":20} + >console.log(numberB) + >:=> (line 51, col 4) to (line 51, col 24) +-------------------------------- +52 >} + + ~~ => Pos: (1668 to 1669) SpanInfo: {"start":1646,"length":20} + >console.log(numberB) + >:=> (line 51, col 4) to (line 51, col 24) +-------------------------------- +53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1670 to 1674) SpanInfo: {"start":1675,"length":50} + >[numberB = -1] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 53, col 5) to (line 53, col 55) +53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1675 to 1718) SpanInfo: {"start":1676,"length":12} + >numberB = -1 + >:=> (line 53, col 6) to (line 53, col 18) +53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1719 to 1725) SpanInfo: {"start":1720,"length":5} + >i = 0 + >:=> (line 53, col 50) to (line 53, col 55) +53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1726 to 1732) SpanInfo: {"start":1727,"length":5} + >i < 1 + >:=> (line 53, col 57) to (line 53, col 62) +53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1733 to 1740) SpanInfo: {"start":1734,"length":3} + >i++ + >:=> (line 53, col 64) to (line 53, col 67) +-------------------------------- +54 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1741 to 1766) SpanInfo: {"start":1745,"length":20} + >console.log(numberB) + >:=> (line 54, col 4) to (line 54, col 24) +-------------------------------- +55 >} + + ~~ => Pos: (1767 to 1768) SpanInfo: {"start":1745,"length":20} + >console.log(numberB) + >:=> (line 54, col 4) to (line 54, col 24) +-------------------------------- +56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1769 to 1773) SpanInfo: {"start":1774,"length":37} + >[nameB = "name"] = multiRobotA, i = 0 + >:=> (line 56, col 5) to (line 56, col 42) +56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1774 to 1804) SpanInfo: {"start":1775,"length":14} + >nameB = "name" + >:=> (line 56, col 6) to (line 56, col 20) +56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1805 to 1811) SpanInfo: {"start":1806,"length":5} + >i = 0 + >:=> (line 56, col 37) to (line 56, col 42) +56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1812 to 1818) SpanInfo: {"start":1813,"length":5} + >i < 1 + >:=> (line 56, col 44) to (line 56, col 49) +56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1819 to 1826) SpanInfo: {"start":1820,"length":3} + >i++ + >:=> (line 56, col 51) to (line 56, col 54) +-------------------------------- +57 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1827 to 1850) SpanInfo: {"start":1831,"length":18} + >console.log(nameB) + >:=> (line 57, col 4) to (line 57, col 22) +-------------------------------- +58 >} + + ~~ => Pos: (1851 to 1852) SpanInfo: {"start":1831,"length":18} + >console.log(nameB) + >:=> (line 57, col 4) to (line 57, col 22) +-------------------------------- +59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1853 to 1857) SpanInfo: {"start":1858,"length":41} + >[nameB = "name"] = getMultiRobot(), i = 0 + >:=> (line 59, col 5) to (line 59, col 46) +59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1858 to 1892) SpanInfo: {"start":1859,"length":14} + >nameB = "name" + >:=> (line 59, col 6) to (line 59, col 20) +59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1893 to 1899) SpanInfo: {"start":1894,"length":5} + >i = 0 + >:=> (line 59, col 41) to (line 59, col 46) +59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1900 to 1906) SpanInfo: {"start":1901,"length":5} + >i < 1 + >:=> (line 59, col 48) to (line 59, col 53) +59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1907 to 1914) SpanInfo: {"start":1908,"length":3} + >i++ + >:=> (line 59, col 55) to (line 59, col 58) +-------------------------------- +60 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1915 to 1938) SpanInfo: {"start":1919,"length":18} + >console.log(nameB) + >:=> (line 60, col 4) to (line 60, col 22) +-------------------------------- +61 >} + + ~~ => Pos: (1939 to 1940) SpanInfo: {"start":1919,"length":18} + >console.log(nameB) + >:=> (line 60, col 4) to (line 60, col 22) +-------------------------------- +62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (1941 to 1945) SpanInfo: {"start":1946,"length":61} + >[nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 62, col 5) to (line 62, col 66) +62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1946 to 2000) SpanInfo: {"start":1947,"length":14} + >nameB = "name" + >:=> (line 62, col 6) to (line 62, col 20) +62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2001 to 2007) SpanInfo: {"start":2002,"length":5} + >i = 0 + >:=> (line 62, col 61) to (line 62, col 66) +62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2008 to 2014) SpanInfo: {"start":2009,"length":5} + >i < 1 + >:=> (line 62, col 68) to (line 62, col 73) +62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2015 to 2022) SpanInfo: {"start":2016,"length":3} + >i++ + >:=> (line 62, col 75) to (line 62, col 78) +-------------------------------- +63 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2023 to 2046) SpanInfo: {"start":2027,"length":18} + >console.log(nameB) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +64 >} + + ~~ => Pos: (2047 to 2048) SpanInfo: {"start":2027,"length":18} + >console.log(nameB) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2049 to 2053) SpanInfo: {"start":2054,"length":67} + >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0 + >:=> (line 65, col 5) to (line 65, col 72) +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (2054 to 2068) SpanInfo: {"start":2055,"length":13} + >numberA2 = -1 + >:=> (line 65, col 6) to (line 65, col 19) +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2069 to 2085) SpanInfo: {"start":2070,"length":15} + >nameA2 = "name" + >:=> (line 65, col 21) to (line 65, col 36) +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2086 to 2114) SpanInfo: {"start":2087,"length":17} + >skillA2 = "skill" + >:=> (line 65, col 38) to (line 65, col 55) +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2115 to 2121) SpanInfo: {"start":2116,"length":5} + >i = 0 + >:=> (line 65, col 67) to (line 65, col 72) +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2122 to 2128) SpanInfo: {"start":2123,"length":5} + >i < 1 + >:=> (line 65, col 74) to (line 65, col 79) +65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2129 to 2136) SpanInfo: {"start":2130,"length":3} + >i++ + >:=> (line 65, col 81) to (line 65, col 84) +-------------------------------- +66 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2137 to 2161) SpanInfo: {"start":2141,"length":19} + >console.log(nameA2) + >:=> (line 66, col 4) to (line 66, col 23) +-------------------------------- +67 >} + + ~~ => Pos: (2162 to 2163) SpanInfo: {"start":2141,"length":19} + >console.log(nameA2) + >:=> (line 66, col 4) to (line 66, col 23) +-------------------------------- +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2164 to 2168) SpanInfo: {"start":2169,"length":71} + >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0 + >:=> (line 68, col 5) to (line 68, col 76) +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (2169 to 2183) SpanInfo: {"start":2170,"length":13} + >numberA2 = -1 + >:=> (line 68, col 6) to (line 68, col 19) +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2184 to 2200) SpanInfo: {"start":2185,"length":15} + >nameA2 = "name" + >:=> (line 68, col 21) to (line 68, col 36) +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2201 to 2233) SpanInfo: {"start":2202,"length":17} + >skillA2 = "skill" + >:=> (line 68, col 38) to (line 68, col 55) +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2234 to 2240) SpanInfo: {"start":2235,"length":5} + >i = 0 + >:=> (line 68, col 71) to (line 68, col 76) +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2241 to 2247) SpanInfo: {"start":2242,"length":5} + >i < 1 + >:=> (line 68, col 78) to (line 68, col 83) +68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2248 to 2255) SpanInfo: {"start":2249,"length":3} + >i++ + >:=> (line 68, col 85) to (line 68, col 88) +-------------------------------- +69 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2256 to 2280) SpanInfo: {"start":2260,"length":19} + >console.log(nameA2) + >:=> (line 69, col 4) to (line 69, col 23) +-------------------------------- +70 >} + + ~~ => Pos: (2281 to 2282) SpanInfo: {"start":2260,"length":19} + >console.log(nameA2) + >:=> (line 69, col 4) to (line 69, col 23) +-------------------------------- +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (2283 to 2287) SpanInfo: {"start":2288,"length":87} + >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 71, col 5) to (line 71, col 92) +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (2288 to 2302) SpanInfo: {"start":2289,"length":13} + >numberA2 = -1 + >:=> (line 71, col 6) to (line 71, col 19) +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2303 to 2319) SpanInfo: {"start":2304,"length":15} + >nameA2 = "name" + >:=> (line 71, col 21) to (line 71, col 36) +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2320 to 2368) SpanInfo: {"start":2321,"length":17} + >skillA2 = "skill" + >:=> (line 71, col 38) to (line 71, col 55) +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2369 to 2375) SpanInfo: {"start":2370,"length":5} + >i = 0 + >:=> (line 71, col 87) to (line 71, col 92) +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2376 to 2382) SpanInfo: {"start":2377,"length":5} + >i < 1 + >:=> (line 71, col 94) to (line 71, col 99) +71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2383 to 2390) SpanInfo: {"start":2384,"length":3} + >i++ + >:=> (line 71, col 101) to (line 71, col 104) +-------------------------------- +72 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2391 to 2415) SpanInfo: {"start":2395,"length":19} + >console.log(nameA2) + >:=> (line 72, col 4) to (line 72, col 23) +-------------------------------- +73 >} + + ~~ => Pos: (2416 to 2417) SpanInfo: {"start":2395,"length":19} + >console.log(nameA2) + >:=> (line 72, col 4) to (line 72, col 23) +-------------------------------- +74 >for ([nameMA = "noName", + + ~~~~~ => Pos: (2418 to 2422) SpanInfo: {"start":2423,"length":166} + >[nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + > ] = multiRobotA, i = 0 + >:=> (line 74, col 5) to (line 79, col 26) +74 >for ([nameMA = "noName", + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2423 to 2442) SpanInfo: {"start":2424,"length":17} + >nameMA = "noName" + >:=> (line 74, col 6) to (line 74, col 23) +-------------------------------- +75 > [ + + ~~~~~~~~~~ => Pos: (2443 to 2452) SpanInfo: {"start":2465,"length":25} + >primarySkillA = "primary" + >:=> (line 76, col 12) to (line 76, col 37) +-------------------------------- +76 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2453 to 2491) SpanInfo: {"start":2465,"length":25} + >primarySkillA = "primary" + >:=> (line 76, col 12) to (line 76, col 37) +-------------------------------- +77 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2492 to 2533) SpanInfo: {"start":2504,"length":29} + >secondarySkillA = "secondary" + >:=> (line 77, col 12) to (line 77, col 41) +-------------------------------- +78 > ] = ["none", "none"] + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2534 to 2562) SpanInfo: {"start":2504,"length":29} + >secondarySkillA = "secondary" + >:=> (line 77, col 12) to (line 77, col 41) +-------------------------------- +79 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2563 to 2582) SpanInfo: {"start":2451,"length":111} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 75, col 8) to (line 78, col 28) +79 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2583 to 2589) SpanInfo: {"start":2584,"length":5} + >i = 0 + >:=> (line 79, col 21) to (line 79, col 26) +79 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2590 to 2596) SpanInfo: {"start":2591,"length":5} + >i < 1 + >:=> (line 79, col 28) to (line 79, col 33) +79 > ] = multiRobotA, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2597 to 2604) SpanInfo: {"start":2598,"length":3} + >i++ + >:=> (line 79, col 35) to (line 79, col 38) +-------------------------------- +80 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2605 to 2629) SpanInfo: {"start":2609,"length":19} + >console.log(nameMA) + >:=> (line 80, col 4) to (line 80, col 23) +-------------------------------- +81 >} + + ~~ => Pos: (2630 to 2631) SpanInfo: {"start":2609,"length":19} + >console.log(nameMA) + >:=> (line 80, col 4) to (line 80, col 23) +-------------------------------- +82 >for ([nameMA = "noName", + + ~~~~~ => Pos: (2632 to 2636) SpanInfo: {"start":2637,"length":150} + >[nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >] = getMultiRobot(), i = 0 + >:=> (line 82, col 5) to (line 87, col 26) +82 >for ([nameMA = "noName", + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2637 to 2656) SpanInfo: {"start":2638,"length":17} + >nameMA = "noName" + >:=> (line 82, col 6) to (line 82, col 23) +-------------------------------- +83 > [ + + ~~~~~~ => Pos: (2657 to 2662) SpanInfo: {"start":2671,"length":25} + >primarySkillA = "primary" + >:=> (line 84, col 8) to (line 84, col 33) +-------------------------------- +84 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2663 to 2697) SpanInfo: {"start":2671,"length":25} + >primarySkillA = "primary" + >:=> (line 84, col 8) to (line 84, col 33) +-------------------------------- +85 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2698 to 2735) SpanInfo: {"start":2706,"length":29} + >secondarySkillA = "secondary" + >:=> (line 85, col 8) to (line 85, col 37) +-------------------------------- +86 > ] = ["none", "none"] + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2736 to 2760) SpanInfo: {"start":2706,"length":29} + >secondarySkillA = "secondary" + >:=> (line 85, col 8) to (line 85, col 37) +-------------------------------- +87 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2761 to 2780) SpanInfo: {"start":2661,"length":99} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 83, col 4) to (line 86, col 24) +87 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2781 to 2787) SpanInfo: {"start":2782,"length":5} + >i = 0 + >:=> (line 87, col 21) to (line 87, col 26) +87 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2788 to 2794) SpanInfo: {"start":2789,"length":5} + >i < 1 + >:=> (line 87, col 28) to (line 87, col 33) +87 >] = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2795 to 2802) SpanInfo: {"start":2796,"length":3} + >i++ + >:=> (line 87, col 35) to (line 87, col 38) +-------------------------------- +88 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2803 to 2827) SpanInfo: {"start":2807,"length":19} + >console.log(nameMA) + >:=> (line 88, col 4) to (line 88, col 23) +-------------------------------- +89 >} + + ~~ => Pos: (2828 to 2829) SpanInfo: {"start":2807,"length":19} + >console.log(nameMA) + >:=> (line 88, col 4) to (line 88, col 23) +-------------------------------- +90 >for ([nameMA = "noName", + + ~~~~~ => Pos: (2830 to 2834) SpanInfo: {"start":2835,"length":170} + >[nameMA = "noName", + > [ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >] = ["trimmer", ["trimming", "edging"]], i = 0 + >:=> (line 90, col 5) to (line 95, col 46) +90 >for ([nameMA = "noName", + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2835 to 2854) SpanInfo: {"start":2836,"length":17} + >nameMA = "noName" + >:=> (line 90, col 6) to (line 90, col 23) +-------------------------------- +91 > [ + + ~~~~~~ => Pos: (2855 to 2860) SpanInfo: {"start":2869,"length":25} + >primarySkillA = "primary" + >:=> (line 92, col 8) to (line 92, col 33) +-------------------------------- +92 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2861 to 2895) SpanInfo: {"start":2869,"length":25} + >primarySkillA = "primary" + >:=> (line 92, col 8) to (line 92, col 33) +-------------------------------- +93 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2896 to 2933) SpanInfo: {"start":2904,"length":29} + >secondarySkillA = "secondary" + >:=> (line 93, col 8) to (line 93, col 37) +-------------------------------- +94 > ] = ["none", "none"] + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2934 to 2958) SpanInfo: {"start":2904,"length":29} + >secondarySkillA = "secondary" + >:=> (line 93, col 8) to (line 93, col 37) +-------------------------------- +95 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2959 to 2998) SpanInfo: {"start":2859,"length":99} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + > ] = ["none", "none"] + >:=> (line 91, col 4) to (line 94, col 24) +95 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2999 to 3005) SpanInfo: {"start":3000,"length":5} + >i = 0 + >:=> (line 95, col 41) to (line 95, col 46) +95 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3006 to 3012) SpanInfo: {"start":3007,"length":5} + >i < 1 + >:=> (line 95, col 48) to (line 95, col 53) +95 >] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3013 to 3020) SpanInfo: {"start":3014,"length":3} + >i++ + >:=> (line 95, col 55) to (line 95, col 58) +-------------------------------- +96 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3021 to 3045) SpanInfo: {"start":3025,"length":19} + >console.log(nameMA) + >:=> (line 96, col 4) to (line 96, col 23) +-------------------------------- +97 >} + + ~~ => Pos: (3046 to 3047) SpanInfo: {"start":3025,"length":19} + >console.log(nameMA) + >:=> (line 96, col 4) to (line 96, col 23) +-------------------------------- +98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~ => Pos: (3048 to 3052) SpanInfo: {"start":3053,"length":46} + >[numberA3 = -1, ...robotAInfo] = robotA, i = 0 + >:=> (line 98, col 5) to (line 98, col 51) +98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (3053 to 3067) SpanInfo: {"start":3054,"length":13} + >numberA3 = -1 + >:=> (line 98, col 6) to (line 98, col 19) +98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3068 to 3092) SpanInfo: {"start":3069,"length":13} + >...robotAInfo + >:=> (line 98, col 21) to (line 98, col 34) +98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3093 to 3099) SpanInfo: {"start":3094,"length":5} + >i = 0 + >:=> (line 98, col 46) to (line 98, col 51) +98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3100 to 3106) SpanInfo: {"start":3101,"length":5} + >i < 1 + >:=> (line 98, col 53) to (line 98, col 58) +98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3107 to 3114) SpanInfo: {"start":3108,"length":3} + >i++ + >:=> (line 98, col 60) to (line 98, col 63) +-------------------------------- +99 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3115 to 3141) SpanInfo: {"start":3119,"length":21} + >console.log(numberA3) + >:=> (line 99, col 4) to (line 99, col 25) +-------------------------------- +100>} + + ~~ => Pos: (3142 to 3143) SpanInfo: {"start":3119,"length":21} + >console.log(numberA3) + >:=> (line 99, col 4) to (line 99, col 25) +-------------------------------- +101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~ => Pos: (3144 to 3148) SpanInfo: {"start":3149,"length":50} + >[numberA3 = -1, ...robotAInfo] = getRobot(), i = 0 + >:=> (line 101, col 5) to (line 101, col 55) +101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (3149 to 3163) SpanInfo: {"start":3150,"length":13} + >numberA3 = -1 + >:=> (line 101, col 6) to (line 101, col 19) +101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3164 to 3192) SpanInfo: {"start":3165,"length":13} + >...robotAInfo + >:=> (line 101, col 21) to (line 101, col 34) +101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3193 to 3199) SpanInfo: {"start":3194,"length":5} + >i = 0 + >:=> (line 101, col 50) to (line 101, col 55) +101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3200 to 3206) SpanInfo: {"start":3201,"length":5} + >i < 1 + >:=> (line 101, col 57) to (line 101, col 62) +101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3207 to 3214) SpanInfo: {"start":3208,"length":3} + >i++ + >:=> (line 101, col 64) to (line 101, col 67) +-------------------------------- +102> console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3215 to 3241) SpanInfo: {"start":3219,"length":21} + >console.log(numberA3) + >:=> (line 102, col 4) to (line 102, col 25) +-------------------------------- +103>} + + ~~ => Pos: (3242 to 3243) SpanInfo: {"start":3219,"length":21} + >console.log(numberA3) + >:=> (line 102, col 4) to (line 102, col 25) +-------------------------------- +104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~ => Pos: (3244 to 3248) SpanInfo: {"start":3249,"length":73} + >[numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 + >:=> (line 104, col 5) to (line 104, col 78) +104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (3249 to 3263) SpanInfo: {"start":3250,"length":13} + >numberA3 = -1 + >:=> (line 104, col 6) to (line 104, col 19) +104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3264 to 3315) SpanInfo: {"start":3265,"length":13} + >...robotAInfo + >:=> (line 104, col 21) to (line 104, col 34) +104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3316 to 3322) SpanInfo: {"start":3317,"length":5} + >i = 0 + >:=> (line 104, col 73) to (line 104, col 78) +104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3323 to 3329) SpanInfo: {"start":3324,"length":5} + >i < 1 + >:=> (line 104, col 80) to (line 104, col 85) +104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3330 to 3337) SpanInfo: {"start":3331,"length":3} + >i++ + >:=> (line 104, col 87) to (line 104, col 90) +-------------------------------- +105> console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3338 to 3364) SpanInfo: {"start":3342,"length":21} + >console.log(numberA3) + >:=> (line 105, col 4) to (line 105, col 25) +-------------------------------- +106>} + ~ => Pos: (3365 to 3365) SpanInfo: {"start":3342,"length":21} + >console.log(numberA3) + >:=> (line 105, col 4) to (line 105, col 25) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPattern.ts new file mode 100644 index 00000000000..c87268684b5 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPattern.ts @@ -0,0 +1,94 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////function getRobot() { +//// return robotA; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////function getMultiRobot() { +//// return multiRobotA; +////} +////let nameA: string, primarySkillA: string, secondarySkillA: string; +////let numberB: number, nameB: string; +////let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +////let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +////let i: number; +////for ([, nameA] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ([, nameA] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for ([numberB] = robotA, i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for ([numberB] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for ([nameB] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(multiRobotAInfo); +////} +////for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(multiRobotAInfo); +////} +////for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(multiRobotAInfo); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..80e4a811fed --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForArrayBindingPatternDefaultValues.ts @@ -0,0 +1,109 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////function getRobot() { +//// return robotA; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////function getMultiRobot() { +//// return multiRobotA; +////} +////let nameA: string, primarySkillA: string, secondarySkillA: string; +////let numberB: number, nameB: string; +////let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +////let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +////let i: number; +////for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ([, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["none", "none"]] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for ([, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["none", "none"]] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for ([, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(primarySkillA); +////} +////for ([numberB = -1] = robotA, i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberB); +////} +////for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameB); +////} +////for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(nameA2); +////} +////for ([nameMA = "noName", +//// [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +//// ] = ["none", "none"] +//// ] = multiRobotA, i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for ([nameMA = "noName", +//// [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +//// ] = ["none", "none"] +////] = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for ([nameMA = "noName", +//// [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +//// ] = ["none", "none"] +////] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { +//// console.log(nameMA); +////} +////for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { +//// console.log(numberA3); +////} +////for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { +//// console.log(numberA3); +////} + +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From bda112546fc997a4d676a0bf73ae04e8154d6346 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 15:23:45 -0800 Subject: [PATCH 090/164] Fix the breakpoint for comma expression --- src/services/breakpoints.ts | 5 +- ...gAssignmentForArrayBindingPattern.baseline | 168 +++-------------- ...rArrayBindingPatternDefaultValues.baseline | 171 +++--------------- tests/baselines/reference/bpSpan_for.baseline | 7 +- 4 files changed, 50 insertions(+), 301 deletions(-) diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index 5042b72cc23..bc3d7a75674 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -287,6 +287,10 @@ namespace ts.BreakpointResolver { // { a = expression, b, c } = someExpression return textSpan(node); } + + if (binaryExpression.operatorToken.kind === SyntaxKind.CommaToken) { + return spanInNode(binaryExpression.left); + } } if (isExpression(node)) { @@ -301,7 +305,6 @@ namespace ts.BreakpointResolver { case SyntaxKind.ForStatement: case SyntaxKind.ForOfStatement: - // For now lets set the span on this expression, fix it later return textSpan(node); case SyntaxKind.BinaryExpression: diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline index e08738cffc4..923e0cced09 100644 --- a/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPattern.baseline @@ -95,12 +95,7 @@ -------------------------------- 20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (712 to 716) SpanInfo: {"start":717,"length":25} - >[, nameA] = robotA, i = 0 - >:=> (line 20, col 5) to (line 20, col 30) -20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~ => Pos: (717 to 735) SpanInfo: {"start":720,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (712 to 735) SpanInfo: {"start":720,"length":5} >nameA >:=> (line 20, col 8) to (line 20, col 13) 20 >for ([, nameA] = robotA, i = 0; i < 1; i++) { @@ -133,12 +128,7 @@ -------------------------------- 23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (784 to 788) SpanInfo: {"start":789,"length":29} - >[, nameA] = getRobot(), i = 0 - >:=> (line 23, col 5) to (line 23, col 34) -23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (789 to 811) SpanInfo: {"start":792,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (784 to 811) SpanInfo: {"start":792,"length":5} >nameA >:=> (line 23, col 8) to (line 23, col 13) 23 >for ([, nameA] = getRobot(), i = 0; i < 1; i++) { @@ -171,12 +161,7 @@ -------------------------------- 26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (860 to 864) SpanInfo: {"start":865,"length":45} - >[, nameA] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 26, col 5) to (line 26, col 50) -26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (865 to 903) SpanInfo: {"start":868,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (860 to 903) SpanInfo: {"start":868,"length":5} >nameA >:=> (line 26, col 8) to (line 26, col 13) 26 >for ([, nameA] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -209,12 +194,7 @@ -------------------------------- 29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (952 to 956) SpanInfo: {"start":957,"length":57} - >[, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0 - >:=> (line 29, col 5) to (line 29, col 62) -29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~ => Pos: (957 to 974) SpanInfo: {"start":961,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (952 to 974) SpanInfo: {"start":961,"length":13} >primarySkillA >:=> (line 29, col 9) to (line 29, col 22) 29 >for ([, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { @@ -257,12 +237,7 @@ -------------------------------- 32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (1064 to 1068) SpanInfo: {"start":1069,"length":61} - >[, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0 - >:=> (line 32, col 5) to (line 32, col 66) -32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~ => Pos: (1069 to 1086) SpanInfo: {"start":1073,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1064 to 1086) SpanInfo: {"start":1073,"length":13} >primarySkillA >:=> (line 32, col 9) to (line 32, col 22) 32 >for ([, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { @@ -305,12 +280,7 @@ -------------------------------- 35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - ~~~~~ => Pos: (1180 to 1184) SpanInfo: {"start":1185,"length":81} - >[, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 35, col 5) to (line 35, col 86) -35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~ => Pos: (1185 to 1202) SpanInfo: {"start":1189,"length":13} + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1180 to 1202) SpanInfo: {"start":1189,"length":13} >primarySkillA >:=> (line 35, col 9) to (line 35, col 22) 35 >for ([, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { @@ -353,12 +323,7 @@ -------------------------------- 38 >for ([numberB] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (1316 to 1320) SpanInfo: {"start":1321,"length":25} - >[numberB] = robotA, i = 0 - >:=> (line 38, col 5) to (line 38, col 30) -38 >for ([numberB] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~ => Pos: (1321 to 1339) SpanInfo: {"start":1322,"length":7} + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1316 to 1339) SpanInfo: {"start":1322,"length":7} >numberB >:=> (line 38, col 6) to (line 38, col 13) 38 >for ([numberB] = robotA, i = 0; i < 1; i++) { @@ -391,12 +356,7 @@ -------------------------------- 41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (1390 to 1394) SpanInfo: {"start":1395,"length":29} - >[numberB] = getRobot(), i = 0 - >:=> (line 41, col 5) to (line 41, col 34) -41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1395 to 1417) SpanInfo: {"start":1396,"length":7} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1390 to 1417) SpanInfo: {"start":1396,"length":7} >numberB >:=> (line 41, col 6) to (line 41, col 13) 41 >for ([numberB] = getRobot(), i = 0; i < 1; i++) { @@ -429,12 +389,7 @@ -------------------------------- 44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (1468 to 1472) SpanInfo: {"start":1473,"length":45} - >[numberB] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 44, col 5) to (line 44, col 50) -44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1473 to 1511) SpanInfo: {"start":1474,"length":7} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1468 to 1511) SpanInfo: {"start":1474,"length":7} >numberB >:=> (line 44, col 6) to (line 44, col 13) 44 >for ([numberB] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -467,12 +422,7 @@ -------------------------------- 47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (1562 to 1566) SpanInfo: {"start":1567,"length":28} - >[nameB] = multiRobotA, i = 0 - >:=> (line 47, col 5) to (line 47, col 33) -47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1567 to 1588) SpanInfo: {"start":1568,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1562 to 1588) SpanInfo: {"start":1568,"length":5} >nameB >:=> (line 47, col 6) to (line 47, col 11) 47 >for ([nameB] = multiRobotA, i = 0; i < 1; i++) { @@ -505,12 +455,7 @@ -------------------------------- 50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (1637 to 1641) SpanInfo: {"start":1642,"length":32} - >[nameB] = getMultiRobot(), i = 0 - >:=> (line 50, col 5) to (line 50, col 37) -50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1642 to 1667) SpanInfo: {"start":1643,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1637 to 1667) SpanInfo: {"start":1643,"length":5} >nameB >:=> (line 50, col 6) to (line 50, col 11) 50 >for ([nameB] = getMultiRobot(), i = 0; i < 1; i++) { @@ -543,12 +488,7 @@ -------------------------------- 53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - ~~~~~ => Pos: (1716 to 1720) SpanInfo: {"start":1721,"length":52} - >[nameB] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 53, col 5) to (line 53, col 57) -53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1721 to 1766) SpanInfo: {"start":1722,"length":5} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1716 to 1766) SpanInfo: {"start":1722,"length":5} >nameB >:=> (line 53, col 6) to (line 53, col 11) 53 >for ([nameB] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { @@ -581,12 +521,7 @@ -------------------------------- 56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (1815 to 1819) SpanInfo: {"start":1820,"length":43} - >[numberA2, nameA2, skillA2] = robotA, i = 0 - >:=> (line 56, col 5) to (line 56, col 48) -56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~ => Pos: (1820 to 1829) SpanInfo: {"start":1821,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (1815 to 1829) SpanInfo: {"start":1821,"length":8} >numberA2 >:=> (line 56, col 6) to (line 56, col 14) 56 >for ([numberA2, nameA2, skillA2] = robotA, i = 0; i < 1; i++) { @@ -629,12 +564,7 @@ -------------------------------- 59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (1906 to 1910) SpanInfo: {"start":1911,"length":47} - >[numberA2, nameA2, skillA2] = getRobot(), i = 0 - >:=> (line 59, col 5) to (line 59, col 52) -59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~ => Pos: (1911 to 1920) SpanInfo: {"start":1912,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (1906 to 1920) SpanInfo: {"start":1912,"length":8} >numberA2 >:=> (line 59, col 6) to (line 59, col 14) 59 >for ([numberA2, nameA2, skillA2] = getRobot(), i = 0; i < 1; i++) { @@ -677,12 +607,7 @@ -------------------------------- 62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (2001 to 2005) SpanInfo: {"start":2006,"length":63} - >[numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 62, col 5) to (line 62, col 68) -62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~ => Pos: (2006 to 2015) SpanInfo: {"start":2007,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (2001 to 2015) SpanInfo: {"start":2007,"length":8} >numberA2 >:=> (line 62, col 6) to (line 62, col 14) 62 >for ([numberA2, nameA2, skillA2] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -725,12 +650,7 @@ -------------------------------- 65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (2112 to 2116) SpanInfo: {"start":2117,"length":63} - >[nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0 - >:=> (line 65, col 5) to (line 65, col 68) -65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { - - ~~~~~~~~ => Pos: (2117 to 2124) SpanInfo: {"start":2118,"length":6} + ~~~~~~~~~~~~~ => Pos: (2112 to 2124) SpanInfo: {"start":2118,"length":6} >nameMA >:=> (line 65, col 6) to (line 65, col 12) 65 >for ([nameMA, [primarySkillA, secondarySkillA]] = multiRobotA, i = 0; i < 1; i++) { @@ -778,12 +698,7 @@ -------------------------------- 68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (2223 to 2227) SpanInfo: {"start":2228,"length":67} - >[nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0 - >:=> (line 68, col 5) to (line 68, col 72) -68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~ => Pos: (2228 to 2235) SpanInfo: {"start":2229,"length":6} + ~~~~~~~~~~~~~ => Pos: (2223 to 2235) SpanInfo: {"start":2229,"length":6} >nameMA >:=> (line 68, col 6) to (line 68, col 12) 68 >for ([nameMA, [primarySkillA, secondarySkillA]] = getMultiRobot(), i = 0; i < 1; i++) { @@ -831,12 +746,7 @@ -------------------------------- 71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - ~~~~~ => Pos: (2338 to 2342) SpanInfo: {"start":2343,"length":87} - >[nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 71, col 5) to (line 71, col 92) -71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - - ~~~~~~~~ => Pos: (2343 to 2350) SpanInfo: {"start":2344,"length":6} + ~~~~~~~~~~~~~ => Pos: (2338 to 2350) SpanInfo: {"start":2344,"length":6} >nameMA >:=> (line 71, col 6) to (line 71, col 12) 71 >for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { @@ -884,12 +794,7 @@ -------------------------------- 74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (2473 to 2477) SpanInfo: {"start":2478,"length":41} - >[numberA3, ...robotAInfo] = robotA, i = 0 - >:=> (line 74, col 5) to (line 74, col 46) -74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~ => Pos: (2478 to 2487) SpanInfo: {"start":2479,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (2473 to 2487) SpanInfo: {"start":2479,"length":8} >numberA3 >:=> (line 74, col 6) to (line 74, col 14) 74 >for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) { @@ -927,12 +832,7 @@ -------------------------------- 77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (2564 to 2568) SpanInfo: {"start":2569,"length":45} - >[numberA3, ...robotAInfo] = getRobot(), i = 0 - >:=> (line 77, col 5) to (line 77, col 50) -77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~ => Pos: (2569 to 2578) SpanInfo: {"start":2570,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (2564 to 2578) SpanInfo: {"start":2570,"length":8} >numberA3 >:=> (line 77, col 6) to (line 77, col 14) 77 >for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { @@ -970,12 +870,7 @@ -------------------------------- 80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (2659 to 2663) SpanInfo: {"start":2664,"length":68} - >[numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 80, col 5) to (line 80, col 73) -80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~ => Pos: (2664 to 2673) SpanInfo: {"start":2665,"length":8} + ~~~~~~~~~~~~~~~ => Pos: (2659 to 2673) SpanInfo: {"start":2665,"length":8} >numberA3 >:=> (line 80, col 6) to (line 80, col 14) 80 >for ([numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -1013,12 +908,7 @@ -------------------------------- 83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (2777 to 2781) SpanInfo: {"start":2782,"length":41} - >[...multiRobotAInfo] = multiRobotA, i = 0 - >:=> (line 83, col 5) to (line 83, col 46) -83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2782 to 2816) SpanInfo: {"start":2783,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2777 to 2816) SpanInfo: {"start":2783,"length":18} >...multiRobotAInfo >:=> (line 83, col 6) to (line 83, col 24) 83 >for ([...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) { @@ -1051,12 +941,7 @@ -------------------------------- 86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (2875 to 2879) SpanInfo: {"start":2880,"length":45} - >[...multiRobotAInfo] = getMultiRobot(), i = 0 - >:=> (line 86, col 5) to (line 86, col 50) -86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2880 to 2918) SpanInfo: {"start":2881,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2875 to 2918) SpanInfo: {"start":2881,"length":18} >...multiRobotAInfo >:=> (line 86, col 6) to (line 86, col 24) 86 >for ([...multiRobotAInfo] = getMultiRobot(), i = 0; i < 1; i++) { @@ -1089,12 +974,7 @@ -------------------------------- 89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - ~~~~~ => Pos: (2977 to 2981) SpanInfo: {"start":2982,"length":84} - >[...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 89, col 5) to (line 89, col 89) -89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2982 to 3059) SpanInfo: {"start":2983,"length":18} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2977 to 3059) SpanInfo: {"start":2983,"length":18} >...multiRobotAInfo >:=> (line 89, col 6) to (line 89, col 24) 89 >for ([...multiRobotAInfo] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline index 28b4bdb96e9..56894ce9a9a 100644 --- a/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForArrayBindingPatternDefaultValues.baseline @@ -95,12 +95,7 @@ -------------------------------- 20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (712 to 716) SpanInfo: {"start":717,"length":34} - >[, nameA = "name"] = robotA, i = 0 - >:=> (line 20, col 5) to (line 20, col 39) -20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (717 to 744) SpanInfo: {"start":720,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (712 to 744) SpanInfo: {"start":720,"length":14} >nameA = "name" >:=> (line 20, col 8) to (line 20, col 22) 20 >for ([, nameA = "name"] = robotA, i = 0; i < 1; i++) { @@ -133,12 +128,7 @@ -------------------------------- 23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (793 to 797) SpanInfo: {"start":798,"length":38} - >[, nameA = "name"] = getRobot(), i = 0 - >:=> (line 23, col 5) to (line 23, col 43) -23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (798 to 829) SpanInfo: {"start":801,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (793 to 829) SpanInfo: {"start":801,"length":14} >nameA = "name" >:=> (line 23, col 8) to (line 23, col 22) 23 >for ([, nameA = "name"] = getRobot(), i = 0; i < 1; i++) { @@ -171,12 +161,7 @@ -------------------------------- 26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (878 to 882) SpanInfo: {"start":883,"length":54} - >[, nameA = "name"] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 26, col 5) to (line 26, col 59) -26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (883 to 930) SpanInfo: {"start":886,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (878 to 930) SpanInfo: {"start":886,"length":14} >nameA = "name" >:=> (line 26, col 8) to (line 26, col 22) 26 >for ([, nameA = "name"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -209,15 +194,7 @@ -------------------------------- 29 >for ([, [ - ~~~~~ => Pos: (979 to 983) SpanInfo: {"start":984,"length":112} - >[, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["none", "none"]] = multiRobotA, i = 0 - >:=> (line 29, col 5) to (line 32, col 42) -29 >for ([, [ - - ~~~~~ => Pos: (984 to 988) SpanInfo: {"start":993,"length":25} + ~~~~~~~~~~ => Pos: (979 to 988) SpanInfo: {"start":993,"length":25} >primarySkillA = "primary" >:=> (line 30, col 4) to (line 30, col 29) -------------------------------- @@ -276,15 +253,7 @@ -------------------------------- 35 >for ([, [ - ~~~~~ => Pos: (1146 to 1150) SpanInfo: {"start":1151,"length":116} - >[, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["none", "none"]] = getMultiRobot(), i = 0 - >:=> (line 35, col 5) to (line 38, col 46) -35 >for ([, [ - - ~~~~~ => Pos: (1151 to 1155) SpanInfo: {"start":1160,"length":25} + ~~~~~~~~~~ => Pos: (1146 to 1155) SpanInfo: {"start":1160,"length":25} >primarySkillA = "primary" >:=> (line 36, col 4) to (line 36, col 29) -------------------------------- @@ -343,15 +312,7 @@ -------------------------------- 41 >for ([, [ - ~~~~~ => Pos: (1317 to 1321) SpanInfo: {"start":1322,"length":136} - >[, [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - >] = ["none", "none"]] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 41, col 5) to (line 44, col 66) -41 >for ([, [ - - ~~~~~ => Pos: (1322 to 1326) SpanInfo: {"start":1331,"length":25} + ~~~~~~~~~~ => Pos: (1317 to 1326) SpanInfo: {"start":1331,"length":25} >primarySkillA = "primary" >:=> (line 42, col 4) to (line 42, col 29) -------------------------------- @@ -410,12 +371,7 @@ -------------------------------- 47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (1508 to 1512) SpanInfo: {"start":1513,"length":30} - >[numberB = -1] = robotA, i = 0 - >:=> (line 47, col 5) to (line 47, col 35) -47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1513 to 1536) SpanInfo: {"start":1514,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1508 to 1536) SpanInfo: {"start":1514,"length":12} >numberB = -1 >:=> (line 47, col 6) to (line 47, col 18) 47 >for ([numberB = -1] = robotA, i = 0; i < 1; i++) { @@ -448,12 +404,7 @@ -------------------------------- 50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (1587 to 1591) SpanInfo: {"start":1592,"length":34} - >[numberB = -1] = getRobot(), i = 0 - >:=> (line 50, col 5) to (line 50, col 39) -50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1592 to 1619) SpanInfo: {"start":1593,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1587 to 1619) SpanInfo: {"start":1593,"length":12} >numberB = -1 >:=> (line 50, col 6) to (line 50, col 18) 50 >for ([numberB = -1] = getRobot(), i = 0; i < 1; i++) { @@ -486,12 +437,7 @@ -------------------------------- 53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (1670 to 1674) SpanInfo: {"start":1675,"length":50} - >[numberB = -1] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 53, col 5) to (line 53, col 55) -53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1675 to 1718) SpanInfo: {"start":1676,"length":12} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1670 to 1718) SpanInfo: {"start":1676,"length":12} >numberB = -1 >:=> (line 53, col 6) to (line 53, col 18) 53 >for ([numberB = -1] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -524,12 +470,7 @@ -------------------------------- 56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (1769 to 1773) SpanInfo: {"start":1774,"length":37} - >[nameB = "name"] = multiRobotA, i = 0 - >:=> (line 56, col 5) to (line 56, col 42) -56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1774 to 1804) SpanInfo: {"start":1775,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1769 to 1804) SpanInfo: {"start":1775,"length":14} >nameB = "name" >:=> (line 56, col 6) to (line 56, col 20) 56 >for ([nameB = "name"] = multiRobotA, i = 0; i < 1; i++) { @@ -562,12 +503,7 @@ -------------------------------- 59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (1853 to 1857) SpanInfo: {"start":1858,"length":41} - >[nameB = "name"] = getMultiRobot(), i = 0 - >:=> (line 59, col 5) to (line 59, col 46) -59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1858 to 1892) SpanInfo: {"start":1859,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1853 to 1892) SpanInfo: {"start":1859,"length":14} >nameB = "name" >:=> (line 59, col 6) to (line 59, col 20) 59 >for ([nameB = "name"] = getMultiRobot(), i = 0; i < 1; i++) { @@ -600,12 +536,7 @@ -------------------------------- 62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - ~~~~~ => Pos: (1941 to 1945) SpanInfo: {"start":1946,"length":61} - >[nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 62, col 5) to (line 62, col 66) -62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1946 to 2000) SpanInfo: {"start":1947,"length":14} + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1941 to 2000) SpanInfo: {"start":1947,"length":14} >nameB = "name" >:=> (line 62, col 6) to (line 62, col 20) 62 >for ([nameB = "name"] = ["trimmer", ["trimming", "edging"]], i = 0; i < 1; i++) { @@ -638,12 +569,7 @@ -------------------------------- 65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (2049 to 2053) SpanInfo: {"start":2054,"length":67} - >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0 - >:=> (line 65, col 5) to (line 65, col 72) -65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~ => Pos: (2054 to 2068) SpanInfo: {"start":2055,"length":13} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2049 to 2068) SpanInfo: {"start":2055,"length":13} >numberA2 = -1 >:=> (line 65, col 6) to (line 65, col 19) 65 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = robotA, i = 0; i < 1; i++) { @@ -686,12 +612,7 @@ -------------------------------- 68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (2164 to 2168) SpanInfo: {"start":2169,"length":71} - >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0 - >:=> (line 68, col 5) to (line 68, col 76) -68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~ => Pos: (2169 to 2183) SpanInfo: {"start":2170,"length":13} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2164 to 2183) SpanInfo: {"start":2170,"length":13} >numberA2 = -1 >:=> (line 68, col 6) to (line 68, col 19) 68 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = getRobot(), i = 0; i < 1; i++) { @@ -734,12 +655,7 @@ -------------------------------- 71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (2283 to 2287) SpanInfo: {"start":2288,"length":87} - >[numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 71, col 5) to (line 71, col 92) -71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~ => Pos: (2288 to 2302) SpanInfo: {"start":2289,"length":13} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2283 to 2302) SpanInfo: {"start":2289,"length":13} >numberA2 = -1 >:=> (line 71, col 6) to (line 71, col 19) 71 >for ([numberA2 = -1, nameA2 = "name", skillA2 = "skill"] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { @@ -782,17 +698,7 @@ -------------------------------- 74 >for ([nameMA = "noName", - ~~~~~ => Pos: (2418 to 2422) SpanInfo: {"start":2423,"length":166} - >[nameMA = "noName", - > [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - > ] = ["none", "none"] - > ] = multiRobotA, i = 0 - >:=> (line 74, col 5) to (line 79, col 26) -74 >for ([nameMA = "noName", - - ~~~~~~~~~~~~~~~~~~~~ => Pos: (2423 to 2442) SpanInfo: {"start":2424,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2418 to 2442) SpanInfo: {"start":2424,"length":17} >nameMA = "noName" >:=> (line 74, col 6) to (line 74, col 23) -------------------------------- @@ -858,17 +764,7 @@ -------------------------------- 82 >for ([nameMA = "noName", - ~~~~~ => Pos: (2632 to 2636) SpanInfo: {"start":2637,"length":150} - >[nameMA = "noName", - > [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - > ] = ["none", "none"] - >] = getMultiRobot(), i = 0 - >:=> (line 82, col 5) to (line 87, col 26) -82 >for ([nameMA = "noName", - - ~~~~~~~~~~~~~~~~~~~~ => Pos: (2637 to 2656) SpanInfo: {"start":2638,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2632 to 2656) SpanInfo: {"start":2638,"length":17} >nameMA = "noName" >:=> (line 82, col 6) to (line 82, col 23) -------------------------------- @@ -934,17 +830,7 @@ -------------------------------- 90 >for ([nameMA = "noName", - ~~~~~ => Pos: (2830 to 2834) SpanInfo: {"start":2835,"length":170} - >[nameMA = "noName", - > [ - > primarySkillA = "primary", - > secondarySkillA = "secondary" - > ] = ["none", "none"] - >] = ["trimmer", ["trimming", "edging"]], i = 0 - >:=> (line 90, col 5) to (line 95, col 46) -90 >for ([nameMA = "noName", - - ~~~~~~~~~~~~~~~~~~~~ => Pos: (2835 to 2854) SpanInfo: {"start":2836,"length":17} + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2830 to 2854) SpanInfo: {"start":2836,"length":17} >nameMA = "noName" >:=> (line 90, col 6) to (line 90, col 23) -------------------------------- @@ -1010,12 +896,7 @@ -------------------------------- 98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { - ~~~~~ => Pos: (3048 to 3052) SpanInfo: {"start":3053,"length":46} - >[numberA3 = -1, ...robotAInfo] = robotA, i = 0 - >:=> (line 98, col 5) to (line 98, col 51) -98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~ => Pos: (3053 to 3067) SpanInfo: {"start":3054,"length":13} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (3048 to 3067) SpanInfo: {"start":3054,"length":13} >numberA3 = -1 >:=> (line 98, col 6) to (line 98, col 19) 98 >for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) { @@ -1053,12 +934,7 @@ -------------------------------- 101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - ~~~~~ => Pos: (3144 to 3148) SpanInfo: {"start":3149,"length":50} - >[numberA3 = -1, ...robotAInfo] = getRobot(), i = 0 - >:=> (line 101, col 5) to (line 101, col 55) -101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~ => Pos: (3149 to 3163) SpanInfo: {"start":3150,"length":13} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (3144 to 3163) SpanInfo: {"start":3150,"length":13} >numberA3 = -1 >:=> (line 101, col 6) to (line 101, col 19) 101>for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) { @@ -1096,12 +972,7 @@ -------------------------------- 104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - ~~~~~ => Pos: (3244 to 3248) SpanInfo: {"start":3249,"length":73} - >[numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0 - >:=> (line 104, col 5) to (line 104, col 78) -104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { - - ~~~~~~~~~~~~~~~ => Pos: (3249 to 3263) SpanInfo: {"start":3250,"length":13} + ~~~~~~~~~~~~~~~~~~~~ => Pos: (3244 to 3263) SpanInfo: {"start":3250,"length":13} >numberA3 = -1 >:=> (line 104, col 6) to (line 104, col 19) 104>for ([numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) { diff --git a/tests/baselines/reference/bpSpan_for.baseline b/tests/baselines/reference/bpSpan_for.baseline index 7fd6ba4c858..46214f6e3b1 100644 --- a/tests/baselines/reference/bpSpan_for.baseline +++ b/tests/baselines/reference/bpSpan_for.baseline @@ -220,12 +220,7 @@ -------------------------------- 32 >for (i = 0, j = 20; j < 20, i < 20; j++) { - ~~~~~ => Pos: (351 to 355) SpanInfo: {"start":356,"length":13} - >i = 0, j = 20 - >:=> (line 32, col 5) to (line 32, col 18) -32 >for (i = 0, j = 20; j < 20, i < 20; j++) { - - ~~~~~~ => Pos: (356 to 361) SpanInfo: {"start":356,"length":5} + ~~~~~~~~~~~ => Pos: (351 to 361) SpanInfo: {"start":356,"length":5} >i = 0 >:=> (line 32, col 5) to (line 32, col 10) 32 >for (i = 0, j = 20; j < 20, i < 20; j++) { From 82570b7fcabf5d912cf228549a04d67febc4cf46 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 15:27:14 -0800 Subject: [PATCH 091/164] Add test cases for array pattern destructurting assignment in 'for of' --- ...ssignmentForOfArrayBindingPattern.baseline | 779 +++++++++++++++++ ...fArrayBindingPatternDefaultValues.baseline | 806 ++++++++++++++++++ ...uringAssignmentForOfArrayBindingPattern.ts | 95 +++ ...ntForOfArrayBindingPatternDefaultValues.ts | 104 +++ 4 files changed, 1784 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPattern.baseline new file mode 100644 index 00000000000..16f6039031e --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPattern.baseline @@ -0,0 +1,779 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (142 to 185) SpanInfo: {"start":142,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >let robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (186 to 233) SpanInfo: {"start":186,"length":46} + >let robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 7, col 0) to (line 7, col 46) +-------------------------------- +8 >let robots = [robotA, robotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (234 to 264) SpanInfo: {"start":234,"length":29} + >let robots = [robotA, robotB] + >:=> (line 8, col 0) to (line 8, col 29) +-------------------------------- +9 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (265 to 287) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +10 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (288 to 306) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +11 >} + + ~~ => Pos: (307 to 308) SpanInfo: {"start":307,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (309 to 372) SpanInfo: {"start":309,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 12, col 0) to (line 12, col 62) +-------------------------------- +13 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (373 to 446) SpanInfo: {"start":373,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 13, col 0) to (line 13, col 72) +-------------------------------- +14 >let multiRobots = [multiRobotA, multiRobotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (447 to 492) SpanInfo: {"start":447,"length":44} + >let multiRobots = [multiRobotA, multiRobotB] + >:=> (line 14, col 0) to (line 14, col 44) +-------------------------------- +15 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (493 to 520) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +16 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (521 to 544) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +17 >} + + ~~ => Pos: (545 to 546) SpanInfo: {"start":545,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >let nameA: string, primarySkillA: string, secondarySkillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (547 to 613) SpanInfo: undefined +-------------------------------- +19 >let numberB: number, nameB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (614 to 649) SpanInfo: undefined +-------------------------------- +20 >let numberA2: number, nameA2: string, skillA2: string, nameMA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (650 to 720) SpanInfo: undefined +-------------------------------- +21 >let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (721 to 823) SpanInfo: undefined +-------------------------------- +22 >for ([, nameA] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (824 to 837) SpanInfo: {"start":832,"length":5} + >nameA + >:=> (line 22, col 8) to (line 22, col 13) +22 >for ([, nameA] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (838 to 851) SpanInfo: {"start":842,"length":6} + >robots + >:=> (line 22, col 18) to (line 22, col 24) +-------------------------------- +23 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (852 to 875) SpanInfo: {"start":856,"length":18} + >console.log(nameA) + >:=> (line 23, col 4) to (line 23, col 22) +-------------------------------- +24 >} + + ~~ => Pos: (876 to 877) SpanInfo: {"start":856,"length":18} + >console.log(nameA) + >:=> (line 23, col 4) to (line 23, col 22) +-------------------------------- +25 >for ([, nameA] of getRobots()) { + + ~~~~~~~~~~~~~~ => Pos: (878 to 891) SpanInfo: {"start":886,"length":5} + >nameA + >:=> (line 25, col 8) to (line 25, col 13) +25 >for ([, nameA] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (892 to 910) SpanInfo: {"start":896,"length":11} + >getRobots() + >:=> (line 25, col 18) to (line 25, col 29) +-------------------------------- +26 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (911 to 934) SpanInfo: {"start":915,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +27 >} + + ~~ => Pos: (935 to 936) SpanInfo: {"start":915,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +28 >for ([, nameA] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~ => Pos: (937 to 950) SpanInfo: {"start":945,"length":5} + >nameA + >:=> (line 28, col 8) to (line 28, col 13) +28 >for ([, nameA] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (951 to 974) SpanInfo: {"start":955,"length":16} + >[robotA, robotB] + >:=> (line 28, col 18) to (line 28, col 34) +-------------------------------- +29 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (975 to 998) SpanInfo: {"start":979,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +30 >} + + ~~ => Pos: (999 to 1000) SpanInfo: {"start":979,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +31 >for ([, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1001 to 1023) SpanInfo: {"start":1010,"length":13} + >primarySkillA + >:=> (line 31, col 9) to (line 31, col 22) +31 >for ([, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1024 to 1040) SpanInfo: {"start":1025,"length":15} + >secondarySkillA + >:=> (line 31, col 24) to (line 31, col 39) +31 >for ([, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~ => Pos: (1041 to 1041) SpanInfo: {"start":1009,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 31, col 8) to (line 31, col 40) +31 >for ([, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1042 to 1060) SpanInfo: {"start":1046,"length":11} + >multiRobots + >:=> (line 31, col 45) to (line 31, col 56) +-------------------------------- +32 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1061 to 1092) SpanInfo: {"start":1065,"length":26} + >console.log(primarySkillA) + >:=> (line 32, col 4) to (line 32, col 30) +-------------------------------- +33 >} + + ~~ => Pos: (1093 to 1094) SpanInfo: {"start":1065,"length":26} + >console.log(primarySkillA) + >:=> (line 32, col 4) to (line 32, col 30) +-------------------------------- +34 >for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1095 to 1117) SpanInfo: {"start":1104,"length":13} + >primarySkillA + >:=> (line 34, col 9) to (line 34, col 22) +34 >for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1118 to 1134) SpanInfo: {"start":1119,"length":15} + >secondarySkillA + >:=> (line 34, col 24) to (line 34, col 39) +34 >for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~ => Pos: (1135 to 1135) SpanInfo: {"start":1103,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 34, col 8) to (line 34, col 40) +34 >for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1136 to 1159) SpanInfo: {"start":1140,"length":16} + >getMultiRobots() + >:=> (line 34, col 45) to (line 34, col 61) +-------------------------------- +35 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1160 to 1191) SpanInfo: {"start":1164,"length":26} + >console.log(primarySkillA) + >:=> (line 35, col 4) to (line 35, col 30) +-------------------------------- +36 >} + + ~~ => Pos: (1192 to 1193) SpanInfo: {"start":1164,"length":26} + >console.log(primarySkillA) + >:=> (line 35, col 4) to (line 35, col 30) +-------------------------------- +37 >for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1194 to 1216) SpanInfo: {"start":1203,"length":13} + >primarySkillA + >:=> (line 37, col 9) to (line 37, col 22) +37 >for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~ => Pos: (1217 to 1233) SpanInfo: {"start":1218,"length":15} + >secondarySkillA + >:=> (line 37, col 24) to (line 37, col 39) +37 >for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~ => Pos: (1234 to 1234) SpanInfo: {"start":1202,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 37, col 8) to (line 37, col 40) +37 >for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1235 to 1268) SpanInfo: {"start":1239,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 37, col 45) to (line 37, col 71) +-------------------------------- +38 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1269 to 1300) SpanInfo: {"start":1273,"length":26} + >console.log(primarySkillA) + >:=> (line 38, col 4) to (line 38, col 30) +-------------------------------- +39 >} + + ~~ => Pos: (1301 to 1302) SpanInfo: {"start":1273,"length":26} + >console.log(primarySkillA) + >:=> (line 38, col 4) to (line 38, col 30) +-------------------------------- +40 >for ([numberB] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1303 to 1316) SpanInfo: {"start":1309,"length":7} + >numberB + >:=> (line 40, col 6) to (line 40, col 13) +40 >for ([numberB] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1317 to 1330) SpanInfo: {"start":1321,"length":6} + >robots + >:=> (line 40, col 18) to (line 40, col 24) +-------------------------------- +41 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1331 to 1356) SpanInfo: {"start":1335,"length":20} + >console.log(numberB) + >:=> (line 41, col 4) to (line 41, col 24) +-------------------------------- +42 >} + + ~~ => Pos: (1357 to 1358) SpanInfo: {"start":1335,"length":20} + >console.log(numberB) + >:=> (line 41, col 4) to (line 41, col 24) +-------------------------------- +43 >for ([numberB] of getRobots()) { + + ~~~~~~~~~~~~~~ => Pos: (1359 to 1372) SpanInfo: {"start":1365,"length":7} + >numberB + >:=> (line 43, col 6) to (line 43, col 13) +43 >for ([numberB] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1373 to 1391) SpanInfo: {"start":1377,"length":11} + >getRobots() + >:=> (line 43, col 18) to (line 43, col 29) +-------------------------------- +44 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1392 to 1417) SpanInfo: {"start":1396,"length":20} + >console.log(numberB) + >:=> (line 44, col 4) to (line 44, col 24) +-------------------------------- +45 >} + + ~~ => Pos: (1418 to 1419) SpanInfo: {"start":1396,"length":20} + >console.log(numberB) + >:=> (line 44, col 4) to (line 44, col 24) +-------------------------------- +46 >for ([numberB] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~ => Pos: (1420 to 1433) SpanInfo: {"start":1426,"length":7} + >numberB + >:=> (line 46, col 6) to (line 46, col 13) +46 >for ([numberB] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1434 to 1457) SpanInfo: {"start":1438,"length":16} + >[robotA, robotB] + >:=> (line 46, col 18) to (line 46, col 34) +-------------------------------- +47 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1458 to 1483) SpanInfo: {"start":1462,"length":20} + >console.log(numberB) + >:=> (line 47, col 4) to (line 47, col 24) +-------------------------------- +48 >} + + ~~ => Pos: (1484 to 1485) SpanInfo: {"start":1462,"length":20} + >console.log(numberB) + >:=> (line 47, col 4) to (line 47, col 24) +-------------------------------- +49 >for ([nameB] of multiRobots) { + + ~~~~~~~~~~~~ => Pos: (1486 to 1497) SpanInfo: {"start":1492,"length":5} + >nameB + >:=> (line 49, col 6) to (line 49, col 11) +49 >for ([nameB] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1498 to 1516) SpanInfo: {"start":1502,"length":11} + >multiRobots + >:=> (line 49, col 16) to (line 49, col 27) +-------------------------------- +50 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1517 to 1540) SpanInfo: {"start":1521,"length":18} + >console.log(nameB) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +51 >} + + ~~ => Pos: (1541 to 1542) SpanInfo: {"start":1521,"length":18} + >console.log(nameB) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +52 >for ([nameB] of getMultiRobots()) { + + ~~~~~~~~~~~~ => Pos: (1543 to 1554) SpanInfo: {"start":1549,"length":5} + >nameB + >:=> (line 52, col 6) to (line 52, col 11) +52 >for ([nameB] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1555 to 1578) SpanInfo: {"start":1559,"length":16} + >getMultiRobots() + >:=> (line 52, col 16) to (line 52, col 32) +-------------------------------- +53 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1579 to 1602) SpanInfo: {"start":1583,"length":18} + >console.log(nameB) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +54 >} + + ~~ => Pos: (1603 to 1604) SpanInfo: {"start":1583,"length":18} + >console.log(nameB) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +55 >for ([nameB] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~ => Pos: (1605 to 1616) SpanInfo: {"start":1611,"length":5} + >nameB + >:=> (line 55, col 6) to (line 55, col 11) +55 >for ([nameB] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1617 to 1650) SpanInfo: {"start":1621,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 55, col 16) to (line 55, col 42) +-------------------------------- +56 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1651 to 1674) SpanInfo: {"start":1655,"length":18} + >console.log(nameB) + >:=> (line 56, col 4) to (line 56, col 22) +-------------------------------- +57 >} + + ~~ => Pos: (1675 to 1676) SpanInfo: {"start":1655,"length":18} + >console.log(nameB) + >:=> (line 56, col 4) to (line 56, col 22) +-------------------------------- +58 >for ([numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (1677 to 1691) SpanInfo: {"start":1683,"length":8} + >numberA2 + >:=> (line 58, col 6) to (line 58, col 14) +58 >for ([numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~ => Pos: (1692 to 1699) SpanInfo: {"start":1693,"length":6} + >nameA2 + >:=> (line 58, col 16) to (line 58, col 22) +58 >for ([numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~~ => Pos: (1700 to 1708) SpanInfo: {"start":1701,"length":7} + >skillA2 + >:=> (line 58, col 24) to (line 58, col 31) +58 >for ([numberA2, nameA2, skillA2] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (1709 to 1722) SpanInfo: {"start":1713,"length":6} + >robots + >:=> (line 58, col 36) to (line 58, col 42) +-------------------------------- +59 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1723 to 1747) SpanInfo: {"start":1727,"length":19} + >console.log(nameA2) + >:=> (line 59, col 4) to (line 59, col 23) +-------------------------------- +60 >} + + ~~ => Pos: (1748 to 1749) SpanInfo: {"start":1727,"length":19} + >console.log(nameA2) + >:=> (line 59, col 4) to (line 59, col 23) +-------------------------------- +61 >for ([numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (1750 to 1764) SpanInfo: {"start":1756,"length":8} + >numberA2 + >:=> (line 61, col 6) to (line 61, col 14) +61 >for ([numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~ => Pos: (1765 to 1772) SpanInfo: {"start":1766,"length":6} + >nameA2 + >:=> (line 61, col 16) to (line 61, col 22) +61 >for ([numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~~ => Pos: (1773 to 1781) SpanInfo: {"start":1774,"length":7} + >skillA2 + >:=> (line 61, col 24) to (line 61, col 31) +61 >for ([numberA2, nameA2, skillA2] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1782 to 1800) SpanInfo: {"start":1786,"length":11} + >getRobots() + >:=> (line 61, col 36) to (line 61, col 47) +-------------------------------- +62 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1801 to 1825) SpanInfo: {"start":1805,"length":19} + >console.log(nameA2) + >:=> (line 62, col 4) to (line 62, col 23) +-------------------------------- +63 >} + + ~~ => Pos: (1826 to 1827) SpanInfo: {"start":1805,"length":19} + >console.log(nameA2) + >:=> (line 62, col 4) to (line 62, col 23) +-------------------------------- +64 >for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (1828 to 1842) SpanInfo: {"start":1834,"length":8} + >numberA2 + >:=> (line 64, col 6) to (line 64, col 14) +64 >for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~ => Pos: (1843 to 1850) SpanInfo: {"start":1844,"length":6} + >nameA2 + >:=> (line 64, col 16) to (line 64, col 22) +64 >for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~~ => Pos: (1851 to 1859) SpanInfo: {"start":1852,"length":7} + >skillA2 + >:=> (line 64, col 24) to (line 64, col 31) +64 >for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1860 to 1883) SpanInfo: {"start":1864,"length":16} + >[robotA, robotB] + >:=> (line 64, col 36) to (line 64, col 52) +-------------------------------- +65 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1884 to 1908) SpanInfo: {"start":1888,"length":19} + >console.log(nameA2) + >:=> (line 65, col 4) to (line 65, col 23) +-------------------------------- +66 >} + + ~~ => Pos: (1909 to 1910) SpanInfo: {"start":1888,"length":19} + >console.log(nameA2) + >:=> (line 65, col 4) to (line 65, col 23) +-------------------------------- +67 >for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~ => Pos: (1911 to 1923) SpanInfo: {"start":1917,"length":6} + >nameMA + >:=> (line 67, col 6) to (line 67, col 12) +67 >for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~ => Pos: (1924 to 1939) SpanInfo: {"start":1926,"length":13} + >primarySkillA + >:=> (line 67, col 15) to (line 67, col 28) +67 >for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~=> Pos: (1940 to 1956) SpanInfo: {"start":1941,"length":15} + >secondarySkillA + >:=> (line 67, col 30) to (line 67, col 45) +67 >for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~=> Pos: (1957 to 1957) SpanInfo: {"start":1925,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 67, col 14) to (line 67, col 46) +67 >for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1958 to 1976) SpanInfo: {"start":1962,"length":11} + >multiRobots + >:=> (line 67, col 51) to (line 67, col 62) +-------------------------------- +68 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1977 to 2001) SpanInfo: {"start":1981,"length":19} + >console.log(nameMA) + >:=> (line 68, col 4) to (line 68, col 23) +-------------------------------- +69 >} + + ~~ => Pos: (2002 to 2003) SpanInfo: {"start":1981,"length":19} + >console.log(nameMA) + >:=> (line 68, col 4) to (line 68, col 23) +-------------------------------- +70 >for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~ => Pos: (2004 to 2016) SpanInfo: {"start":2010,"length":6} + >nameMA + >:=> (line 70, col 6) to (line 70, col 12) +70 >for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (2017 to 2032) SpanInfo: {"start":2019,"length":13} + >primarySkillA + >:=> (line 70, col 15) to (line 70, col 28) +70 >for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2033 to 2049) SpanInfo: {"start":2034,"length":15} + >secondarySkillA + >:=> (line 70, col 30) to (line 70, col 45) +70 >for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~=> Pos: (2050 to 2050) SpanInfo: {"start":2018,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 70, col 14) to (line 70, col 46) +70 >for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2051 to 2074) SpanInfo: {"start":2055,"length":16} + >getMultiRobots() + >:=> (line 70, col 51) to (line 70, col 67) +-------------------------------- +71 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2075 to 2099) SpanInfo: {"start":2079,"length":19} + >console.log(nameMA) + >:=> (line 71, col 4) to (line 71, col 23) +-------------------------------- +72 >} + + ~~ => Pos: (2100 to 2101) SpanInfo: {"start":2079,"length":19} + >console.log(nameMA) + >:=> (line 71, col 4) to (line 71, col 23) +-------------------------------- +73 >for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~ => Pos: (2102 to 2114) SpanInfo: {"start":2108,"length":6} + >nameMA + >:=> (line 73, col 6) to (line 73, col 12) +73 >for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~ => Pos: (2115 to 2130) SpanInfo: {"start":2117,"length":13} + >primarySkillA + >:=> (line 73, col 15) to (line 73, col 28) +73 >for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~=> Pos: (2131 to 2147) SpanInfo: {"start":2132,"length":15} + >secondarySkillA + >:=> (line 73, col 30) to (line 73, col 45) +73 >for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~=> Pos: (2148 to 2148) SpanInfo: {"start":2116,"length":32} + >[primarySkillA, secondarySkillA] + >:=> (line 73, col 14) to (line 73, col 46) +73 >for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2149 to 2182) SpanInfo: {"start":2153,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 73, col 51) to (line 73, col 77) +-------------------------------- +74 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2183 to 2207) SpanInfo: {"start":2187,"length":19} + >console.log(nameMA) + >:=> (line 74, col 4) to (line 74, col 23) +-------------------------------- +75 >} + + ~~ => Pos: (2208 to 2209) SpanInfo: {"start":2187,"length":19} + >console.log(nameMA) + >:=> (line 74, col 4) to (line 74, col 23) +-------------------------------- +76 >for ([numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (2210 to 2224) SpanInfo: {"start":2216,"length":8} + >numberA3 + >:=> (line 76, col 6) to (line 76, col 14) +76 >for ([numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (2225 to 2239) SpanInfo: {"start":2226,"length":13} + >...robotAInfo + >:=> (line 76, col 16) to (line 76, col 29) +76 >for ([numberA3, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (2240 to 2253) SpanInfo: {"start":2244,"length":6} + >robots + >:=> (line 76, col 34) to (line 76, col 40) +-------------------------------- +77 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2254 to 2280) SpanInfo: {"start":2258,"length":21} + >console.log(numberA3) + >:=> (line 77, col 4) to (line 77, col 25) +-------------------------------- +78 >} + + ~~ => Pos: (2281 to 2282) SpanInfo: {"start":2258,"length":21} + >console.log(numberA3) + >:=> (line 77, col 4) to (line 77, col 25) +-------------------------------- +79 >for ([numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (2283 to 2297) SpanInfo: {"start":2289,"length":8} + >numberA3 + >:=> (line 79, col 6) to (line 79, col 14) +79 >for ([numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (2298 to 2312) SpanInfo: {"start":2299,"length":13} + >...robotAInfo + >:=> (line 79, col 16) to (line 79, col 29) +79 >for ([numberA3, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2313 to 2331) SpanInfo: {"start":2317,"length":11} + >getRobots() + >:=> (line 79, col 34) to (line 79, col 45) +-------------------------------- +80 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2332 to 2358) SpanInfo: {"start":2336,"length":21} + >console.log(numberA3) + >:=> (line 80, col 4) to (line 80, col 25) +-------------------------------- +81 >} + + ~~ => Pos: (2359 to 2360) SpanInfo: {"start":2336,"length":21} + >console.log(numberA3) + >:=> (line 80, col 4) to (line 80, col 25) +-------------------------------- +82 >for ([numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (2361 to 2375) SpanInfo: {"start":2367,"length":8} + >numberA3 + >:=> (line 82, col 6) to (line 82, col 14) +82 >for ([numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (2376 to 2390) SpanInfo: {"start":2377,"length":13} + >...robotAInfo + >:=> (line 82, col 16) to (line 82, col 29) +82 >for ([numberA3, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2391 to 2414) SpanInfo: {"start":2395,"length":16} + >[robotA, robotB] + >:=> (line 82, col 34) to (line 82, col 50) +-------------------------------- +83 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2415 to 2441) SpanInfo: {"start":2419,"length":21} + >console.log(numberA3) + >:=> (line 83, col 4) to (line 83, col 25) +-------------------------------- +84 >} + + ~~ => Pos: (2442 to 2443) SpanInfo: {"start":2419,"length":21} + >console.log(numberA3) + >:=> (line 83, col 4) to (line 83, col 25) +-------------------------------- +85 >for ([...multiRobotAInfo] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2444 to 2468) SpanInfo: {"start":2450,"length":18} + >...multiRobotAInfo + >:=> (line 85, col 6) to (line 85, col 24) +85 >for ([...multiRobotAInfo] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2469 to 2487) SpanInfo: {"start":2473,"length":11} + >multiRobots + >:=> (line 85, col 29) to (line 85, col 40) +-------------------------------- +86 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2488 to 2521) SpanInfo: {"start":2492,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 86, col 4) to (line 86, col 32) +-------------------------------- +87 >} + + ~~ => Pos: (2522 to 2523) SpanInfo: {"start":2492,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 86, col 4) to (line 86, col 32) +-------------------------------- +88 >for ([...multiRobotAInfo] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2524 to 2548) SpanInfo: {"start":2530,"length":18} + >...multiRobotAInfo + >:=> (line 88, col 6) to (line 88, col 24) +88 >for ([...multiRobotAInfo] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2549 to 2572) SpanInfo: {"start":2553,"length":16} + >getMultiRobots() + >:=> (line 88, col 29) to (line 88, col 45) +-------------------------------- +89 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2573 to 2606) SpanInfo: {"start":2577,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 89, col 4) to (line 89, col 32) +-------------------------------- +90 >} + + ~~ => Pos: (2607 to 2608) SpanInfo: {"start":2577,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 89, col 4) to (line 89, col 32) +-------------------------------- +91 >for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2609 to 2633) SpanInfo: {"start":2615,"length":18} + >...multiRobotAInfo + >:=> (line 91, col 6) to (line 91, col 24) +91 >for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2634 to 2667) SpanInfo: {"start":2638,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 91, col 29) to (line 91, col 55) +-------------------------------- +92 > console.log(multiRobotAInfo); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2668 to 2701) SpanInfo: {"start":2672,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 92, col 4) to (line 92, col 32) +-------------------------------- +93 >} + ~ => Pos: (2702 to 2702) SpanInfo: {"start":2672,"length":28} + >console.log(multiRobotAInfo) + >:=> (line 92, col 4) to (line 92, col 32) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..c7e2f005833 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfArrayBindingPatternDefaultValues.baseline @@ -0,0 +1,806 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >type Robot = [number, string, string]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (50 to 88) SpanInfo: undefined +-------------------------------- +5 >type MultiSkilledRobot = [string, [string, string]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (89 to 141) SpanInfo: undefined +-------------------------------- +6 >let robotA: Robot = [1, "mower", "mowing"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (142 to 185) SpanInfo: {"start":142,"length":42} + >let robotA: Robot = [1, "mower", "mowing"] + >:=> (line 6, col 0) to (line 6, col 42) +-------------------------------- +7 >let robotB: Robot = [2, "trimmer", "trimming"]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (186 to 233) SpanInfo: {"start":186,"length":46} + >let robotB: Robot = [2, "trimmer", "trimming"] + >:=> (line 7, col 0) to (line 7, col 46) +-------------------------------- +8 >let robots = [robotA, robotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (234 to 264) SpanInfo: {"start":234,"length":29} + >let robots = [robotA, robotB] + >:=> (line 8, col 0) to (line 8, col 29) +-------------------------------- +9 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (265 to 287) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +10 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (288 to 306) SpanInfo: {"start":292,"length":13} + >return robots + >:=> (line 10, col 4) to (line 10, col 17) +-------------------------------- +11 >} + + ~~ => Pos: (307 to 308) SpanInfo: {"start":307,"length":1} + >} + >:=> (line 11, col 0) to (line 11, col 1) +-------------------------------- +12 >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (309 to 372) SpanInfo: {"start":309,"length":62} + >let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]] + >:=> (line 12, col 0) to (line 12, col 62) +-------------------------------- +13 >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (373 to 446) SpanInfo: {"start":373,"length":72} + >let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]] + >:=> (line 13, col 0) to (line 13, col 72) +-------------------------------- +14 >let multiRobots = [multiRobotA, multiRobotB]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (447 to 492) SpanInfo: {"start":447,"length":44} + >let multiRobots = [multiRobotA, multiRobotB] + >:=> (line 14, col 0) to (line 14, col 44) +-------------------------------- +15 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (493 to 520) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +16 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (521 to 544) SpanInfo: {"start":525,"length":18} + >return multiRobots + >:=> (line 16, col 4) to (line 16, col 22) +-------------------------------- +17 >} + + ~~ => Pos: (545 to 546) SpanInfo: {"start":545,"length":1} + >} + >:=> (line 17, col 0) to (line 17, col 1) +-------------------------------- +18 >let nameA: string, primarySkillA: string, secondarySkillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (547 to 613) SpanInfo: undefined +-------------------------------- +19 >let numberB: number, nameB: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (614 to 649) SpanInfo: undefined +-------------------------------- +20 >let numberA2: number, nameA2: string, skillA2: string, nameMA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (650 to 720) SpanInfo: undefined +-------------------------------- +21 >let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (721 to 823) SpanInfo: undefined +-------------------------------- +22 >for ([, nameA = "noName"] of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (824 to 848) SpanInfo: {"start":832,"length":16} + >nameA = "noName" + >:=> (line 22, col 8) to (line 22, col 24) +22 >for ([, nameA = "noName"] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (849 to 862) SpanInfo: {"start":853,"length":6} + >robots + >:=> (line 22, col 29) to (line 22, col 35) +-------------------------------- +23 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (863 to 886) SpanInfo: {"start":867,"length":18} + >console.log(nameA) + >:=> (line 23, col 4) to (line 23, col 22) +-------------------------------- +24 >} + + ~~ => Pos: (887 to 888) SpanInfo: {"start":867,"length":18} + >console.log(nameA) + >:=> (line 23, col 4) to (line 23, col 22) +-------------------------------- +25 >for ([, nameA = "noName"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (889 to 913) SpanInfo: {"start":897,"length":16} + >nameA = "noName" + >:=> (line 25, col 8) to (line 25, col 24) +25 >for ([, nameA = "noName"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (914 to 932) SpanInfo: {"start":918,"length":11} + >getRobots() + >:=> (line 25, col 29) to (line 25, col 40) +-------------------------------- +26 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (933 to 956) SpanInfo: {"start":937,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +27 >} + + ~~ => Pos: (957 to 958) SpanInfo: {"start":937,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +28 >for ([, nameA = "noName"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (959 to 983) SpanInfo: {"start":967,"length":16} + >nameA = "noName" + >:=> (line 28, col 8) to (line 28, col 24) +28 >for ([, nameA = "noName"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (984 to 1007) SpanInfo: {"start":988,"length":16} + >[robotA, robotB] + >:=> (line 28, col 29) to (line 28, col 45) +-------------------------------- +29 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1008 to 1031) SpanInfo: {"start":1012,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +30 >} + + ~~ => Pos: (1032 to 1033) SpanInfo: {"start":1012,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +31 >for ([, [ + + ~~~~~~~~~~ => Pos: (1034 to 1043) SpanInfo: {"start":1048,"length":25} + >primarySkillA = "primary" + >:=> (line 32, col 4) to (line 32, col 29) +-------------------------------- +32 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1044 to 1074) SpanInfo: {"start":1048,"length":25} + >primarySkillA = "primary" + >:=> (line 32, col 4) to (line 32, col 29) +-------------------------------- +33 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1075 to 1108) SpanInfo: {"start":1079,"length":29} + >secondarySkillA = "secondary" + >:=> (line 33, col 4) to (line 33, col 33) +-------------------------------- +34 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1109 to 1132) SpanInfo: {"start":1079,"length":29} + >secondarySkillA = "secondary" + >:=> (line 33, col 4) to (line 33, col 33) +34 >] = ["skill1", "skill2"]] of multiRobots) { + + ~ => Pos: (1133 to 1133) SpanInfo: {"start":1042,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 31, col 8) to (line 34, col 24) +34 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1134 to 1152) SpanInfo: {"start":1138,"length":11} + >multiRobots + >:=> (line 34, col 29) to (line 34, col 40) +-------------------------------- +35 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1153 to 1184) SpanInfo: {"start":1157,"length":26} + >console.log(primarySkillA) + >:=> (line 35, col 4) to (line 35, col 30) +-------------------------------- +36 >} + + ~~ => Pos: (1185 to 1186) SpanInfo: {"start":1157,"length":26} + >console.log(primarySkillA) + >:=> (line 35, col 4) to (line 35, col 30) +-------------------------------- +37 >for ([, [ + + ~~~~~~~~~~ => Pos: (1187 to 1196) SpanInfo: {"start":1201,"length":25} + >primarySkillA = "primary" + >:=> (line 38, col 4) to (line 38, col 29) +-------------------------------- +38 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1197 to 1227) SpanInfo: {"start":1201,"length":25} + >primarySkillA = "primary" + >:=> (line 38, col 4) to (line 38, col 29) +-------------------------------- +39 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1228 to 1261) SpanInfo: {"start":1232,"length":29} + >secondarySkillA = "secondary" + >:=> (line 39, col 4) to (line 39, col 33) +-------------------------------- +40 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1262 to 1285) SpanInfo: {"start":1232,"length":29} + >secondarySkillA = "secondary" + >:=> (line 39, col 4) to (line 39, col 33) +40 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~ => Pos: (1286 to 1286) SpanInfo: {"start":1195,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 37, col 8) to (line 40, col 24) +40 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1287 to 1310) SpanInfo: {"start":1291,"length":16} + >getMultiRobots() + >:=> (line 40, col 29) to (line 40, col 45) +-------------------------------- +41 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1311 to 1342) SpanInfo: {"start":1315,"length":26} + >console.log(primarySkillA) + >:=> (line 41, col 4) to (line 41, col 30) +-------------------------------- +42 >} + + ~~ => Pos: (1343 to 1344) SpanInfo: {"start":1315,"length":26} + >console.log(primarySkillA) + >:=> (line 41, col 4) to (line 41, col 30) +-------------------------------- +43 >for ([, [ + + ~~~~~~~~~~ => Pos: (1345 to 1354) SpanInfo: {"start":1359,"length":25} + >primarySkillA = "primary" + >:=> (line 44, col 4) to (line 44, col 29) +-------------------------------- +44 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1355 to 1385) SpanInfo: {"start":1359,"length":25} + >primarySkillA = "primary" + >:=> (line 44, col 4) to (line 44, col 29) +-------------------------------- +45 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1386 to 1419) SpanInfo: {"start":1390,"length":29} + >secondarySkillA = "secondary" + >:=> (line 45, col 4) to (line 45, col 33) +-------------------------------- +46 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1420 to 1443) SpanInfo: {"start":1390,"length":29} + >secondarySkillA = "secondary" + >:=> (line 45, col 4) to (line 45, col 33) +46 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~ => Pos: (1444 to 1444) SpanInfo: {"start":1353,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 43, col 8) to (line 46, col 24) +46 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1445 to 1478) SpanInfo: {"start":1449,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 46, col 29) to (line 46, col 55) +-------------------------------- +47 > console.log(primarySkillA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1479 to 1510) SpanInfo: {"start":1483,"length":26} + >console.log(primarySkillA) + >:=> (line 47, col 4) to (line 47, col 30) +-------------------------------- +48 >} + + ~~ => Pos: (1511 to 1512) SpanInfo: {"start":1483,"length":26} + >console.log(primarySkillA) + >:=> (line 47, col 4) to (line 47, col 30) +-------------------------------- +49 >for ([numberB = -1] of robots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1513 to 1531) SpanInfo: {"start":1519,"length":12} + >numberB = -1 + >:=> (line 49, col 6) to (line 49, col 18) +49 >for ([numberB = -1] of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1532 to 1545) SpanInfo: {"start":1536,"length":6} + >robots + >:=> (line 49, col 23) to (line 49, col 29) +-------------------------------- +50 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1546 to 1571) SpanInfo: {"start":1550,"length":20} + >console.log(numberB) + >:=> (line 50, col 4) to (line 50, col 24) +-------------------------------- +51 >} + + ~~ => Pos: (1572 to 1573) SpanInfo: {"start":1550,"length":20} + >console.log(numberB) + >:=> (line 50, col 4) to (line 50, col 24) +-------------------------------- +52 >for ([numberB = -1] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1574 to 1592) SpanInfo: {"start":1580,"length":12} + >numberB = -1 + >:=> (line 52, col 6) to (line 52, col 18) +52 >for ([numberB = -1] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1593 to 1611) SpanInfo: {"start":1597,"length":11} + >getRobots() + >:=> (line 52, col 23) to (line 52, col 34) +-------------------------------- +53 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1612 to 1637) SpanInfo: {"start":1616,"length":20} + >console.log(numberB) + >:=> (line 53, col 4) to (line 53, col 24) +-------------------------------- +54 >} + + ~~ => Pos: (1638 to 1639) SpanInfo: {"start":1616,"length":20} + >console.log(numberB) + >:=> (line 53, col 4) to (line 53, col 24) +-------------------------------- +55 >for ([numberB = -1] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1640 to 1658) SpanInfo: {"start":1646,"length":12} + >numberB = -1 + >:=> (line 55, col 6) to (line 55, col 18) +55 >for ([numberB = -1] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1659 to 1682) SpanInfo: {"start":1663,"length":16} + >[robotA, robotB] + >:=> (line 55, col 23) to (line 55, col 39) +-------------------------------- +56 > console.log(numberB); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1683 to 1708) SpanInfo: {"start":1687,"length":20} + >console.log(numberB) + >:=> (line 56, col 4) to (line 56, col 24) +-------------------------------- +57 >} + + ~~ => Pos: (1709 to 1710) SpanInfo: {"start":1687,"length":20} + >console.log(numberB) + >:=> (line 56, col 4) to (line 56, col 24) +-------------------------------- +58 >for ([nameB = "noName"] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1711 to 1733) SpanInfo: {"start":1717,"length":16} + >nameB = "noName" + >:=> (line 58, col 6) to (line 58, col 22) +58 >for ([nameB = "noName"] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1734 to 1752) SpanInfo: {"start":1738,"length":11} + >multiRobots + >:=> (line 58, col 27) to (line 58, col 38) +-------------------------------- +59 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1753 to 1776) SpanInfo: {"start":1757,"length":18} + >console.log(nameB) + >:=> (line 59, col 4) to (line 59, col 22) +-------------------------------- +60 >} + + ~~ => Pos: (1777 to 1778) SpanInfo: {"start":1757,"length":18} + >console.log(nameB) + >:=> (line 59, col 4) to (line 59, col 22) +-------------------------------- +61 >for ([nameB = "noName"] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1779 to 1801) SpanInfo: {"start":1785,"length":16} + >nameB = "noName" + >:=> (line 61, col 6) to (line 61, col 22) +61 >for ([nameB = "noName"] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1802 to 1825) SpanInfo: {"start":1806,"length":16} + >getMultiRobots() + >:=> (line 61, col 27) to (line 61, col 43) +-------------------------------- +62 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1826 to 1849) SpanInfo: {"start":1830,"length":18} + >console.log(nameB) + >:=> (line 62, col 4) to (line 62, col 22) +-------------------------------- +63 >} + + ~~ => Pos: (1850 to 1851) SpanInfo: {"start":1830,"length":18} + >console.log(nameB) + >:=> (line 62, col 4) to (line 62, col 22) +-------------------------------- +64 >for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1852 to 1874) SpanInfo: {"start":1858,"length":16} + >nameB = "noName" + >:=> (line 64, col 6) to (line 64, col 22) +64 >for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1875 to 1908) SpanInfo: {"start":1879,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 64, col 27) to (line 64, col 53) +-------------------------------- +65 > console.log(nameB); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1909 to 1932) SpanInfo: {"start":1913,"length":18} + >console.log(nameB) + >:=> (line 65, col 4) to (line 65, col 22) +-------------------------------- +66 >} + + ~~ => Pos: (1933 to 1934) SpanInfo: {"start":1913,"length":18} + >console.log(nameB) + >:=> (line 65, col 4) to (line 65, col 22) +-------------------------------- +67 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1935 to 1954) SpanInfo: {"start":1941,"length":13} + >numberA2 = -1 + >:=> (line 67, col 6) to (line 67, col 19) +67 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1955 to 1973) SpanInfo: {"start":1956,"length":17} + >nameA2 = "noName" + >:=> (line 67, col 21) to (line 67, col 38) +67 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1974 to 1992) SpanInfo: {"start":1975,"length":17} + >skillA2 = "skill" + >:=> (line 67, col 40) to (line 67, col 57) +67 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (1993 to 2006) SpanInfo: {"start":1997,"length":6} + >robots + >:=> (line 67, col 62) to (line 67, col 68) +-------------------------------- +68 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2007 to 2031) SpanInfo: {"start":2011,"length":19} + >console.log(nameA2) + >:=> (line 68, col 4) to (line 68, col 23) +-------------------------------- +69 >} + + ~~ => Pos: (2032 to 2033) SpanInfo: {"start":2011,"length":19} + >console.log(nameA2) + >:=> (line 68, col 4) to (line 68, col 23) +-------------------------------- +70 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2034 to 2053) SpanInfo: {"start":2040,"length":13} + >numberA2 = -1 + >:=> (line 70, col 6) to (line 70, col 19) +70 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2054 to 2072) SpanInfo: {"start":2055,"length":17} + >nameA2 = "noName" + >:=> (line 70, col 21) to (line 70, col 38) +70 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2073 to 2091) SpanInfo: {"start":2074,"length":17} + >skillA2 = "skill" + >:=> (line 70, col 40) to (line 70, col 57) +70 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2092 to 2110) SpanInfo: {"start":2096,"length":11} + >getRobots() + >:=> (line 70, col 62) to (line 70, col 73) +-------------------------------- +71 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2111 to 2135) SpanInfo: {"start":2115,"length":19} + >console.log(nameA2) + >:=> (line 71, col 4) to (line 71, col 23) +-------------------------------- +72 >} + + ~~ => Pos: (2136 to 2137) SpanInfo: {"start":2115,"length":19} + >console.log(nameA2) + >:=> (line 71, col 4) to (line 71, col 23) +-------------------------------- +73 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2138 to 2157) SpanInfo: {"start":2144,"length":13} + >numberA2 = -1 + >:=> (line 73, col 6) to (line 73, col 19) +73 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2158 to 2176) SpanInfo: {"start":2159,"length":17} + >nameA2 = "noName" + >:=> (line 73, col 21) to (line 73, col 38) +73 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2177 to 2195) SpanInfo: {"start":2178,"length":17} + >skillA2 = "skill" + >:=> (line 73, col 40) to (line 73, col 57) +73 >for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2196 to 2219) SpanInfo: {"start":2200,"length":16} + >[robotA, robotB] + >:=> (line 73, col 62) to (line 73, col 78) +-------------------------------- +74 > console.log(nameA2); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2220 to 2244) SpanInfo: {"start":2224,"length":19} + >console.log(nameA2) + >:=> (line 74, col 4) to (line 74, col 23) +-------------------------------- +75 >} + + ~~ => Pos: (2245 to 2246) SpanInfo: {"start":2224,"length":19} + >console.log(nameA2) + >:=> (line 74, col 4) to (line 74, col 23) +-------------------------------- +76 >for ([nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2247 to 2270) SpanInfo: {"start":2253,"length":17} + >nameMA = "noName" + >:=> (line 76, col 6) to (line 76, col 23) +76 >for ([nameMA = "noName", [ + + ~~~ => Pos: (2271 to 2273) SpanInfo: {"start":2278,"length":25} + >primarySkillA = "primary" + >:=> (line 77, col 4) to (line 77, col 29) +-------------------------------- +77 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2274 to 2304) SpanInfo: {"start":2278,"length":25} + >primarySkillA = "primary" + >:=> (line 77, col 4) to (line 77, col 29) +-------------------------------- +78 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2305 to 2338) SpanInfo: {"start":2309,"length":29} + >secondarySkillA = "secondary" + >:=> (line 78, col 4) to (line 78, col 33) +-------------------------------- +79 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2339 to 2362) SpanInfo: {"start":2309,"length":29} + >secondarySkillA = "secondary" + >:=> (line 78, col 4) to (line 78, col 33) +79 >] = ["skill1", "skill2"]] of multiRobots) { + + ~ => Pos: (2363 to 2363) SpanInfo: {"start":2272,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 76, col 25) to (line 79, col 24) +79 >] = ["skill1", "skill2"]] of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2364 to 2382) SpanInfo: {"start":2368,"length":11} + >multiRobots + >:=> (line 79, col 29) to (line 79, col 40) +-------------------------------- +80 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2383 to 2407) SpanInfo: {"start":2387,"length":19} + >console.log(nameMA) + >:=> (line 80, col 4) to (line 80, col 23) +-------------------------------- +81 >} + + ~~ => Pos: (2408 to 2409) SpanInfo: {"start":2387,"length":19} + >console.log(nameMA) + >:=> (line 80, col 4) to (line 80, col 23) +-------------------------------- +82 >for ([nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2410 to 2433) SpanInfo: {"start":2416,"length":17} + >nameMA = "noName" + >:=> (line 82, col 6) to (line 82, col 23) +82 >for ([nameMA = "noName", [ + + ~~~ => Pos: (2434 to 2436) SpanInfo: {"start":2441,"length":25} + >primarySkillA = "primary" + >:=> (line 83, col 4) to (line 83, col 29) +-------------------------------- +83 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2437 to 2467) SpanInfo: {"start":2441,"length":25} + >primarySkillA = "primary" + >:=> (line 83, col 4) to (line 83, col 29) +-------------------------------- +84 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2468 to 2501) SpanInfo: {"start":2472,"length":29} + >secondarySkillA = "secondary" + >:=> (line 84, col 4) to (line 84, col 33) +-------------------------------- +85 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2502 to 2525) SpanInfo: {"start":2472,"length":29} + >secondarySkillA = "secondary" + >:=> (line 84, col 4) to (line 84, col 33) +85 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~ => Pos: (2526 to 2526) SpanInfo: {"start":2435,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 82, col 25) to (line 85, col 24) +85 >] = ["skill1", "skill2"]] of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2527 to 2550) SpanInfo: {"start":2531,"length":16} + >getMultiRobots() + >:=> (line 85, col 29) to (line 85, col 45) +-------------------------------- +86 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2551 to 2575) SpanInfo: {"start":2555,"length":19} + >console.log(nameMA) + >:=> (line 86, col 4) to (line 86, col 23) +-------------------------------- +87 >} + + ~~ => Pos: (2576 to 2577) SpanInfo: {"start":2555,"length":19} + >console.log(nameMA) + >:=> (line 86, col 4) to (line 86, col 23) +-------------------------------- +88 >for ([nameMA = "noName", [ + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2578 to 2601) SpanInfo: {"start":2584,"length":17} + >nameMA = "noName" + >:=> (line 88, col 6) to (line 88, col 23) +88 >for ([nameMA = "noName", [ + + ~~~ => Pos: (2602 to 2604) SpanInfo: {"start":2609,"length":25} + >primarySkillA = "primary" + >:=> (line 89, col 4) to (line 89, col 29) +-------------------------------- +89 > primarySkillA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2605 to 2635) SpanInfo: {"start":2609,"length":25} + >primarySkillA = "primary" + >:=> (line 89, col 4) to (line 89, col 29) +-------------------------------- +90 > secondarySkillA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2636 to 2669) SpanInfo: {"start":2640,"length":29} + >secondarySkillA = "secondary" + >:=> (line 90, col 4) to (line 90, col 33) +-------------------------------- +91 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2670 to 2693) SpanInfo: {"start":2640,"length":29} + >secondarySkillA = "secondary" + >:=> (line 90, col 4) to (line 90, col 33) +91 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~ => Pos: (2694 to 2694) SpanInfo: {"start":2603,"length":91} + >[ + > primarySkillA = "primary", + > secondarySkillA = "secondary" + >] = ["skill1", "skill2"] + >:=> (line 88, col 25) to (line 91, col 24) +91 >] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2695 to 2728) SpanInfo: {"start":2699,"length":26} + >[multiRobotA, multiRobotB] + >:=> (line 91, col 29) to (line 91, col 55) +-------------------------------- +92 > console.log(nameMA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2729 to 2753) SpanInfo: {"start":2733,"length":19} + >console.log(nameMA) + >:=> (line 92, col 4) to (line 92, col 23) +-------------------------------- +93 >} + + ~~ => Pos: (2754 to 2755) SpanInfo: {"start":2733,"length":19} + >console.log(nameMA) + >:=> (line 92, col 4) to (line 92, col 23) +-------------------------------- +94 >for ([numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2756 to 2775) SpanInfo: {"start":2762,"length":13} + >numberA3 = -1 + >:=> (line 94, col 6) to (line 94, col 19) +94 >for ([numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~~ => Pos: (2776 to 2790) SpanInfo: {"start":2777,"length":13} + >...robotAInfo + >:=> (line 94, col 21) to (line 94, col 34) +94 >for ([numberA3 = -1, ...robotAInfo] of robots) { + + ~~~~~~~~~~~~~~=> Pos: (2791 to 2804) SpanInfo: {"start":2795,"length":6} + >robots + >:=> (line 94, col 39) to (line 94, col 45) +-------------------------------- +95 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2805 to 2831) SpanInfo: {"start":2809,"length":21} + >console.log(numberA3) + >:=> (line 95, col 4) to (line 95, col 25) +-------------------------------- +96 >} + + ~~ => Pos: (2832 to 2833) SpanInfo: {"start":2809,"length":21} + >console.log(numberA3) + >:=> (line 95, col 4) to (line 95, col 25) +-------------------------------- +97 >for ([numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2834 to 2853) SpanInfo: {"start":2840,"length":13} + >numberA3 = -1 + >:=> (line 97, col 6) to (line 97, col 19) +97 >for ([numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~ => Pos: (2854 to 2868) SpanInfo: {"start":2855,"length":13} + >...robotAInfo + >:=> (line 97, col 21) to (line 97, col 34) +97 >for ([numberA3 = -1, ...robotAInfo] of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2869 to 2887) SpanInfo: {"start":2873,"length":11} + >getRobots() + >:=> (line 97, col 39) to (line 97, col 50) +-------------------------------- +98 > console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2888 to 2914) SpanInfo: {"start":2892,"length":21} + >console.log(numberA3) + >:=> (line 98, col 4) to (line 98, col 25) +-------------------------------- +99 >} + + ~~ => Pos: (2915 to 2916) SpanInfo: {"start":2892,"length":21} + >console.log(numberA3) + >:=> (line 98, col 4) to (line 98, col 25) +-------------------------------- +100>for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2917 to 2936) SpanInfo: {"start":2923,"length":13} + >numberA3 = -1 + >:=> (line 100, col 6) to (line 100, col 19) +100>for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~ => Pos: (2937 to 2951) SpanInfo: {"start":2938,"length":13} + >...robotAInfo + >:=> (line 100, col 21) to (line 100, col 34) +100>for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2952 to 2975) SpanInfo: {"start":2956,"length":16} + >[robotA, robotB] + >:=> (line 100, col 39) to (line 100, col 55) +-------------------------------- +101> console.log(numberA3); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2976 to 3002) SpanInfo: {"start":2980,"length":21} + >console.log(numberA3) + >:=> (line 101, col 4) to (line 101, col 25) +-------------------------------- +102>} + ~ => Pos: (3003 to 3003) SpanInfo: {"start":2980,"length":21} + >console.log(numberA3) + >:=> (line 101, col 4) to (line 101, col 25) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPattern.ts new file mode 100644 index 00000000000..5c30799813b --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPattern.ts @@ -0,0 +1,95 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////let robotB: Robot = [2, "trimmer", "trimming"]; +////let robots = [robotA, robotB]; +////function getRobots() { +//// return robots; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////let multiRobots = [multiRobotA, multiRobotB]; +////function getMultiRobots() { +//// return multiRobots; +////} +////let nameA: string, primarySkillA: string, secondarySkillA: string; +////let numberB: number, nameB: string; +////let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +////let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +////for ([, nameA] of robots) { +//// console.log(nameA); +////} +////for ([, nameA] of getRobots()) { +//// console.log(nameA); +////} +////for ([, nameA] of [robotA, robotB]) { +//// console.log(nameA); +////} +////for ([, [primarySkillA, secondarySkillA]] of multiRobots) { +//// console.log(primarySkillA); +////} +////for ([, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +//// console.log(primarySkillA); +////} +////for ([, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +//// console.log(primarySkillA); +////} +////for ([numberB] of robots) { +//// console.log(numberB); +////} +////for ([numberB] of getRobots()) { +//// console.log(numberB); +////} +////for ([numberB] of [robotA, robotB]) { +//// console.log(numberB); +////} +////for ([nameB] of multiRobots) { +//// console.log(nameB); +////} +////for ([nameB] of getMultiRobots()) { +//// console.log(nameB); +////} +////for ([nameB] of [multiRobotA, multiRobotB]) { +//// console.log(nameB); +////} +////for ([numberA2, nameA2, skillA2] of robots) { +//// console.log(nameA2); +////} +////for ([numberA2, nameA2, skillA2] of getRobots()) { +//// console.log(nameA2); +////} +////for ([numberA2, nameA2, skillA2] of [robotA, robotB]) { +//// console.log(nameA2); +////} +////for ([nameMA, [primarySkillA, secondarySkillA]] of multiRobots) { +//// console.log(nameMA); +////} +////for ([nameMA, [primarySkillA, secondarySkillA]] of getMultiRobots()) { +//// console.log(nameMA); +////} +////for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) { +//// console.log(nameMA); +////} +////for ([numberA3, ...robotAInfo] of robots) { +//// console.log(numberA3); +////} +////for ([numberA3, ...robotAInfo] of getRobots()) { +//// console.log(numberA3); +////} +////for ([numberA3, ...robotAInfo] of [robotA, robotB]) { +//// console.log(numberA3); +////} +////for ([...multiRobotAInfo] of multiRobots) { +//// console.log(multiRobotAInfo); +////} +////for ([...multiRobotAInfo] of getMultiRobots()) { +//// console.log(multiRobotAInfo); +////} +////for ([...multiRobotAInfo] of [multiRobotA, multiRobotB]) { +//// console.log(multiRobotAInfo); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..8942987c468 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfArrayBindingPatternDefaultValues.ts @@ -0,0 +1,104 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////type Robot = [number, string, string]; +////type MultiSkilledRobot = [string, [string, string]]; +////let robotA: Robot = [1, "mower", "mowing"]; +////let robotB: Robot = [2, "trimmer", "trimming"]; +////let robots = [robotA, robotB]; +////function getRobots() { +//// return robots; +////} +////let multiRobotA: MultiSkilledRobot = ["mower", ["mowing", ""]]; +////let multiRobotB: MultiSkilledRobot = ["trimmer", ["trimming", "edging"]]; +////let multiRobots = [multiRobotA, multiRobotB]; +////function getMultiRobots() { +//// return multiRobots; +////} +////let nameA: string, primarySkillA: string, secondarySkillA: string; +////let numberB: number, nameB: string; +////let numberA2: number, nameA2: string, skillA2: string, nameMA: string; +////let numberA3: number, robotAInfo: (number | string)[], multiRobotAInfo: (string | [string, string])[]; +////for ([, nameA = "noName"] of robots) { +//// console.log(nameA); +////} +////for ([, nameA = "noName"] of getRobots()) { +//// console.log(nameA); +////} +////for ([, nameA = "noName"] of [robotA, robotB]) { +//// console.log(nameA); +////} +////for ([, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of multiRobots) { +//// console.log(primarySkillA); +////} +////for ([, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of getMultiRobots()) { +//// console.log(primarySkillA); +////} +////for ([, [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +//// console.log(primarySkillA); +////} +////for ([numberB = -1] of robots) { +//// console.log(numberB); +////} +////for ([numberB = -1] of getRobots()) { +//// console.log(numberB); +////} +////for ([numberB = -1] of [robotA, robotB]) { +//// console.log(numberB); +////} +////for ([nameB = "noName"] of multiRobots) { +//// console.log(nameB); +////} +////for ([nameB = "noName"] of getMultiRobots()) { +//// console.log(nameB); +////} +////for ([nameB = "noName"] of [multiRobotA, multiRobotB]) { +//// console.log(nameB); +////} +////for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of robots) { +//// console.log(nameA2); +////} +////for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of getRobots()) { +//// console.log(nameA2); +////} +////for ([numberA2 = -1, nameA2 = "noName", skillA2 = "skill"] of [robotA, robotB]) { +//// console.log(nameA2); +////} +////for ([nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of multiRobots) { +//// console.log(nameMA); +////} +////for ([nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of getMultiRobots()) { +//// console.log(nameMA); +////} +////for ([nameMA = "noName", [ +//// primarySkillA = "primary", +//// secondarySkillA = "secondary" +////] = ["skill1", "skill2"]] of [multiRobotA, multiRobotB]) { +//// console.log(nameMA); +////} +////for ([numberA3 = -1, ...robotAInfo] of robots) { +//// console.log(numberA3); +////} +////for ([numberA3 = -1, ...robotAInfo] of getRobots()) { +//// console.log(numberA3); +////} +////for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) { +//// console.log(numberA3); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file From db0ab402802ea84846281d5c17fc5248f3da7138 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 15:31:02 -0800 Subject: [PATCH 092/164] Test cases for object binding pattern destructuring assignment --- ...turingAssignmentForObjectBindingPattern.ts | 107 +++++++++++ ...entForObjectBindingPatternDefaultValues.ts | 168 ++++++++++++++++++ 2 files changed, 275 insertions(+) create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPatternDefaultValues.ts diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPattern.ts new file mode 100644 index 00000000000..298fb2f9580 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPattern.ts @@ -0,0 +1,107 @@ +/// + +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let robot: Robot = { name: "mower", skill: "mowing" }; +////let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////function getRobot() { +//// return robot; +////} +////function getMultiRobot() { +//// return multiRobot; +////} +////let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +////let name: string, primary: string, secondary: string, skill: string; +////for ({ name: nameA } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ skills: { primary: primaryA, secondary: secondaryA } } = +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ skills: { primary, secondary } } = +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name, skill } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name, skills: { primary, secondary } } = +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +verify.baselineCurrentFileBreakpointLocations(); \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..161b58c91c2 --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForObjectBindingPatternDefaultValues.ts @@ -0,0 +1,168 @@ +/// +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary?: string; +//// secondary?: string; +//// }; +////} +////let robot: Robot = { name: "mower", skill: "mowing" }; +////let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; +////function getRobot() { +//// return robot; +////} +////function getMultiRobot() { +//// return multiRobot; +////} +////let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +////let name: string, primary: string, secondary: string, skill: string; +////for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name = "noName" } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { +//// console.log(nameA); +////} +////for ({ +//// name = "noName", +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = multiRobot, i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// name = "noName", +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = getMultiRobot(), i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +////for ({ +//// name = "noName", +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "none", secondary: "none" } +////} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, +//// i = 0; i < 1; i++) { +//// console.log(primaryA); +////} +verify.baselineCurrentFileBreakpointLocations(); From 189357db1aa0c584444445b4066ddf5caf9535e9 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 22 Dec 2015 15:37:24 -0800 Subject: [PATCH 093/164] Tighten no ++/-- rule --- scripts/tslint/noIncrementDecrementRule.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/tslint/noIncrementDecrementRule.ts b/scripts/tslint/noIncrementDecrementRule.ts index c8655f0933d..742ca520c53 100644 --- a/scripts/tslint/noIncrementDecrementRule.ts +++ b/scripts/tslint/noIncrementDecrementRule.ts @@ -28,7 +28,8 @@ class IncrementDecrementWalker extends Lint.RuleWalker { } visitIncrementDecrement(node: ts.UnaryExpression) { - if (node.parent && (node.parent.kind === ts.SyntaxKind.ExpressionStatement || node.parent.kind === ts.SyntaxKind.ForStatement || node.parent.kind === ts.SyntaxKind.ElementAccessExpression)) { + if (node.parent && (node.parent.kind === ts.SyntaxKind.ExpressionStatement || + node.parent.kind === ts.SyntaxKind.ForStatement)) { return; } this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.POSTFIX_FAILURE_STRING)); From 401a39351976f89eeaf59b5d0853ad8b5b0f6548 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 22 Dec 2015 15:45:00 -0800 Subject: [PATCH 094/164] Fix ++/-- lint --- src/compiler/checker.ts | 29 ++++++--- src/compiler/commandLineParser.ts | 12 ++-- src/compiler/core.ts | 12 ++-- src/compiler/declarationEmitter.ts | 3 +- src/compiler/emitter.ts | 18 +++--- src/compiler/program.ts | 6 +- src/compiler/scanner.ts | 96 ++++++++++++++++++++---------- src/compiler/utilities.ts | 6 +- src/harness/fourslash.ts | 8 +-- src/harness/projectsRunner.ts | 3 +- src/server/editorServices.ts | 25 +++++--- src/server/session.ts | 3 +- 12 files changed, 142 insertions(+), 79 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e737cd58bd5..104b81d7b6c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7,7 +7,10 @@ namespace ts { let nextMergeId = 1; export function getNodeId(node: Node): number { - if (!node.id) node.id = nextNodeId++; + if (!node.id) { + node.id = nextNodeId; + nextNodeId++; + } return node.id; } @@ -15,7 +18,8 @@ namespace ts { export function getSymbolId(symbol: Symbol): number { if (!symbol.id) { - symbol.id = nextSymbolId++; + symbol.id = nextSymbolId; + nextSymbolId++; } return symbol.id; @@ -279,7 +283,10 @@ namespace ts { } function recordMergedSymbol(target: Symbol, source: Symbol) { - if (!source.mergeId) source.mergeId = nextMergeId++; + if (!source.mergeId) { + source.mergeId = nextMergeId; + nextMergeId++; + } mergedSymbols[source.mergeId] = target; } @@ -1181,7 +1188,8 @@ namespace ts { function createType(flags: TypeFlags): Type { const result = new Type(checker, flags); - result.id = typeCount++; + result.id = typeCount; + typeCount++; return result; } @@ -1731,11 +1739,13 @@ namespace ts { } if (pos < end) { writePunctuation(writer, SyntaxKind.LessThanToken); - writeType(typeArguments[pos++], TypeFormatFlags.None); + writeType(typeArguments[pos], TypeFormatFlags.None); + pos++; while (pos < end) { writePunctuation(writer, SyntaxKind.CommaToken); writeSpace(writer); - writeType(typeArguments[pos++], TypeFormatFlags.None); + writeType(typeArguments[pos], TypeFormatFlags.None); + pos++; } writePunctuation(writer, SyntaxKind.GreaterThanToken); } @@ -5598,7 +5608,7 @@ namespace ts { return Ternary.False; } let result = Ternary.True; - for (let i = 0, len = sourceSignatures.length; i < len; ++i) { + for (let i = 0, len = sourceSignatures.length; i < len; i++) { const related = compareSignatures(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); if (!related) { return Ternary.False; @@ -5770,7 +5780,7 @@ namespace ts { if (source.typeParameters.length !== target.typeParameters.length) { return Ternary.False; } - for (let i = 0, len = source.typeParameters.length; i < len; ++i) { + 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; @@ -13596,7 +13606,8 @@ namespace ts { } if (autoValue !== undefined) { - getNodeLinks(member).enumMemberValue = autoValue++; + getNodeLinks(member).enumMemberValue = autoValue; + autoValue++; } } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 034b7022e82..367fcf48c0d 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -334,7 +334,8 @@ namespace ts { function parseStrings(args: string[]) { let i = 0; while (i < args.length) { - let s = args[i++]; + let s = args[i]; + i++; if (s.charCodeAt(0) === CharacterCodes.at) { parseResponseFile(s.slice(1)); } @@ -356,18 +357,21 @@ namespace ts { switch (opt.type) { case "number": - options[opt.name] = parseInt(args[i++]); + options[opt.name] = parseInt(args[i]); + i++; break; case "boolean": options[opt.name] = true; break; case "string": - options[opt.name] = args[i++] || ""; + options[opt.name] = args[i] || ""; + i++; break; // If not a primitive, the possible types are specified in what is effectively a map of options. default: let map = >opt.type; - let key = (args[i++] || "").toLowerCase(); + let key = (args[i] || "").toLowerCase(); + i++; if (hasProperty(map, key)) { options[opt.name] = map[key]; } diff --git a/src/compiler/core.ts b/src/compiler/core.ts index cae7bd82103..bb387c32a0e 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -244,9 +244,11 @@ namespace ts { const count = array.length; if (count > 0) { let pos = 0; - let result = arguments.length <= 2 ? array[pos++] : initial; + let result = arguments.length <= 2 ? array[pos] : initial; + pos++; while (pos < count) { - result = f(result, array[pos++]); + result = f(result, array[pos]); + pos++; } return result; } @@ -260,9 +262,11 @@ namespace ts { if (array) { let pos = array.length - 1; if (pos >= 0) { - let result = arguments.length <= 2 ? array[pos--] : initial; + let result = arguments.length <= 2 ? array[pos] : initial; + pos--; while (pos >= 0) { - result = f(result, array[pos--]); + result = f(result, array[pos]); + pos--; } return result; } diff --git a/src/compiler/declarationEmitter.ts b/src/compiler/declarationEmitter.ts index 6e09a398ea6..3731134b846 100644 --- a/src/compiler/declarationEmitter.ts +++ b/src/compiler/declarationEmitter.ts @@ -501,7 +501,8 @@ namespace ts { } let count = 0; while (true) { - const name = baseName + "_" + (++count); + count++; + const name = baseName + "_" + count; if (!hasProperty(currentIdentifiers, name)) { return name; } diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 4e14564a1fc..9eccce345ab 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -5470,7 +5470,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi }); leadingComma = true; } - ++parameterIndex; + parameterIndex++; } } return argumentsWritten; @@ -6481,7 +6481,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let started = false; if (exportedDeclarations) { - for (let i = 0; i < exportedDeclarations.length; ++i) { + for (let i = 0; i < exportedDeclarations.length; i++) { // write name of exported declaration, i.e 'export var x...' writeExportedName(exportedDeclarations[i]); } @@ -6597,7 +6597,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi writeLine(); write("var "); const seen: Map = {}; - for (let i = 0; i < hoistedVars.length; ++i) { + for (let i = 0; i < hoistedVars.length; i++) { const local = hoistedVars[i]; const name = local.kind === SyntaxKind.Identifier ? local @@ -6809,7 +6809,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitSetters(exportStarFunction: string, dependencyGroups: DependencyGroup[]) { write("setters:["); - for (let i = 0; i < dependencyGroups.length; ++i) { + for (let i = 0; i < dependencyGroups.length; i++) { if (i !== 0) { write(","); } @@ -6857,7 +6857,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(`${exportFunctionForFile}({`); writeLine(); increaseIndent(); - for (let i = 0, len = (entry).exportClause.elements.length; i < len; ++i) { + for (let i = 0, len = (entry).exportClause.elements.length; i < len; i++) { if (i !== 0) { write(","); writeLine(); @@ -6900,7 +6900,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("execute: function() {"); increaseIndent(); writeLine(); - for (let i = startIndex; i < node.statements.length; ++i) { + for (let i = startIndex; i < node.statements.length; i++) { const statement = node.statements[i]; switch (statement.kind) { // - function declarations are not emitted because they were already hoisted @@ -6962,7 +6962,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const groupIndices: Map = {}; const dependencyGroups: DependencyGroup[] = []; - for (let i = 0; i < externalImports.length; ++i) { + for (let i = 0; i < externalImports.length; i++) { const text = getExternalModuleNameText(externalImports[i], emitRelativePathAsModuleName); if (hasProperty(groupIndices, text)) { // deduplicate/group entries in dependency list by the dependency name @@ -7285,7 +7285,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitDirectivePrologues(statements: Node[], startWithNewLine: boolean, ensureUseStrict?: boolean): number { let foundUseStrict = false; - for (let i = 0; i < statements.length; ++i) { + for (let i = 0; i < statements.length; i++) { if (isPrologueDirective(statements[i])) { if (isUseStrictPrologue(statements[i] as ExpressionStatement)) { foundUseStrict = true; @@ -7307,7 +7307,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function writeLines(text: string): void { const lines = text.split(/\r\n|\r|\n/g); - for (let i = 0; i < lines.length; ++i) { + for (let i = 0; i < lines.length; i++) { const line = lines[i]; if (line.length) { writeLine(); diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 6139dda0013..7c2a7f26dae 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -495,7 +495,7 @@ namespace ts { const moduleNames = map(newSourceFile.imports, name => name.text); const resolutions = resolveModuleNamesWorker(moduleNames, getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); // ensure that module resolution results are still correct - for (let i = 0; i < moduleNames.length; ++i) { + for (let i = 0; i < moduleNames.length; i++) { const newResolution = resolutions[i]; const oldResolution = getResolvedModule(oldSourceFile, moduleNames[i]); const resolutionChanged = oldResolution @@ -523,7 +523,7 @@ namespace ts { } // update fileName -> file mapping - for (let i = 0, len = newSourceFiles.length; i < len; ++i) { + for (let i = 0, len = newSourceFiles.length; i < len; i++) { filesByName.set(filePaths[i], newSourceFiles[i]); } @@ -1072,7 +1072,7 @@ namespace ts { file.resolvedModules = {}; const moduleNames = map(file.imports, name => name.text); const resolutions = resolveModuleNamesWorker(moduleNames, getNormalizedAbsolutePath(file.fileName, currentDirectory)); - for (let i = 0; i < file.imports.length; ++i) { + for (let i = 0; i < file.imports.length; i++) { const resolution = resolutions[i]; setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 022d63fbe9d..6c0489ff1dc 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -288,7 +288,8 @@ namespace ts { let pos = 0; let lineStart = 0; while (pos < text.length) { - const ch = text.charCodeAt(pos++); + const ch = text.charCodeAt(pos); + pos++; switch (ch) { case CharacterCodes.carriageReturn: if (text.charCodeAt(pos) === CharacterCodes.lineFeed) { @@ -823,7 +824,8 @@ namespace ts { } function scanString(): string { - const quote = text.charCodeAt(pos++); + const quote = text.charCodeAt(pos); + pos++; let result = ""; let start = pos; while (true) { @@ -933,7 +935,8 @@ namespace ts { error(Diagnostics.Unexpected_end_of_text); return ""; } - const ch = text.charCodeAt(pos++); + const ch = text.charCodeAt(pos); + pos++; switch (ch) { case CharacterCodes._0: return "\0"; @@ -1182,7 +1185,8 @@ namespace ts { } return pos += 2, token = SyntaxKind.ExclamationEqualsToken; } - return pos++, token = SyntaxKind.ExclamationToken; + pos++; + return token = SyntaxKind.ExclamationToken; case CharacterCodes.doubleQuote: case CharacterCodes.singleQuote: tokenValue = scanString(); @@ -1193,7 +1197,8 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.PercentEqualsToken; } - return pos++, token = SyntaxKind.PercentToken; + pos++; + return token = SyntaxKind.PercentToken; case CharacterCodes.ampersand: if (text.charCodeAt(pos + 1) === CharacterCodes.ampersand) { return pos += 2, token = SyntaxKind.AmpersandAmpersandToken; @@ -1201,11 +1206,14 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.AmpersandEqualsToken; } - return pos++, token = SyntaxKind.AmpersandToken; + pos++; + return token = SyntaxKind.AmpersandToken; case CharacterCodes.openParen: - return pos++, token = SyntaxKind.OpenParenToken; + pos++; + return token = SyntaxKind.OpenParenToken; case CharacterCodes.closeParen: - return pos++, token = SyntaxKind.CloseParenToken; + pos++; + return token = SyntaxKind.CloseParenToken; case CharacterCodes.asterisk: if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.AsteriskEqualsToken; @@ -1216,7 +1224,8 @@ namespace ts { } return pos += 2, token = SyntaxKind.AsteriskAsteriskToken; } - return pos++, token = SyntaxKind.AsteriskToken; + pos++; + return token = SyntaxKind.AsteriskToken; case CharacterCodes.plus: if (text.charCodeAt(pos + 1) === CharacterCodes.plus) { return pos += 2, token = SyntaxKind.PlusPlusToken; @@ -1224,9 +1233,11 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.PlusEqualsToken; } - return pos++, token = SyntaxKind.PlusToken; + pos++; + return token = SyntaxKind.PlusToken; case CharacterCodes.comma: - return pos++, token = SyntaxKind.CommaToken; + pos++; + return token = SyntaxKind.CommaToken; case CharacterCodes.minus: if (text.charCodeAt(pos + 1) === CharacterCodes.minus) { return pos += 2, token = SyntaxKind.MinusMinusToken; @@ -1234,7 +1245,8 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.MinusEqualsToken; } - return pos++, token = SyntaxKind.MinusToken; + pos++; + return token = SyntaxKind.MinusToken; case CharacterCodes.dot: if (isDigit(text.charCodeAt(pos + 1))) { tokenValue = scanNumber(); @@ -1243,7 +1255,8 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.dot && text.charCodeAt(pos + 2) === CharacterCodes.dot) { return pos += 3, token = SyntaxKind.DotDotDotToken; } - return pos++, token = SyntaxKind.DotToken; + pos++; + return token = SyntaxKind.DotToken; case CharacterCodes.slash: // Single-line comment if (text.charCodeAt(pos + 1) === CharacterCodes.slash) { @@ -1301,7 +1314,8 @@ namespace ts { return pos += 2, token = SyntaxKind.SlashEqualsToken; } - return pos++, token = SyntaxKind.SlashToken; + pos++; + return token = SyntaxKind.SlashToken; case CharacterCodes._0: if (pos + 2 < end && (text.charCodeAt(pos + 1) === CharacterCodes.X || text.charCodeAt(pos + 1) === CharacterCodes.x)) { @@ -1354,9 +1368,11 @@ namespace ts { tokenValue = scanNumber(); return token = SyntaxKind.NumericLiteral; case CharacterCodes.colon: - return pos++, token = SyntaxKind.ColonToken; + pos++; + return token = SyntaxKind.ColonToken; case CharacterCodes.semicolon: - return pos++, token = SyntaxKind.SemicolonToken; + pos++; + return token = SyntaxKind.SemicolonToken; case CharacterCodes.lessThan: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -1382,7 +1398,8 @@ namespace ts { text.charCodeAt(pos + 2) !== CharacterCodes.asterisk) { return pos += 2, token = SyntaxKind.LessThanSlashToken; } - return pos++, token = SyntaxKind.LessThanToken; + pos++; + return token = SyntaxKind.LessThanToken; case CharacterCodes.equals: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -1403,7 +1420,8 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.greaterThan) { return pos += 2, token = SyntaxKind.EqualsGreaterThanToken; } - return pos++, token = SyntaxKind.EqualsToken; + pos++; + return token = SyntaxKind.EqualsToken; case CharacterCodes.greaterThan: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -1415,20 +1433,26 @@ namespace ts { } } - return pos++, token = SyntaxKind.GreaterThanToken; + pos++; + return token = SyntaxKind.GreaterThanToken; case CharacterCodes.question: - return pos++, token = SyntaxKind.QuestionToken; + pos++; + return token = SyntaxKind.QuestionToken; case CharacterCodes.openBracket: - return pos++, token = SyntaxKind.OpenBracketToken; + pos++; + return token = SyntaxKind.OpenBracketToken; case CharacterCodes.closeBracket: - return pos++, token = SyntaxKind.CloseBracketToken; + pos++; + return token = SyntaxKind.CloseBracketToken; case CharacterCodes.caret: if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.CaretEqualsToken; } - return pos++, token = SyntaxKind.CaretToken; + pos++; + return token = SyntaxKind.CaretToken; case CharacterCodes.openBrace: - return pos++, token = SyntaxKind.OpenBraceToken; + pos++; + return token = SyntaxKind.OpenBraceToken; case CharacterCodes.bar: if (text.charCodeAt(pos + 1) === CharacterCodes.bar) { return pos += 2, token = SyntaxKind.BarBarToken; @@ -1436,13 +1460,17 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.BarEqualsToken; } - return pos++, token = SyntaxKind.BarToken; + pos++; + return token = SyntaxKind.BarToken; case CharacterCodes.closeBrace: - return pos++, token = SyntaxKind.CloseBraceToken; + pos++; + return token = SyntaxKind.CloseBraceToken; case CharacterCodes.tilde: - return pos++, token = SyntaxKind.TildeToken; + pos++; + return token = SyntaxKind.TildeToken; case CharacterCodes.at: - return pos++, token = SyntaxKind.AtToken; + pos++; + return token = SyntaxKind.AtToken; case CharacterCodes.backslash: let cookedChar = peekUnicodeEscape(); if (cookedChar >= 0 && isIdentifierStart(cookedChar, languageVersion)) { @@ -1451,7 +1479,8 @@ namespace ts { return token = getIdentifierToken(); } error(Diagnostics.Invalid_character); - return pos++, token = SyntaxKind.Unknown; + pos++; + return token = SyntaxKind.Unknown; default: if (isIdentifierStart(ch, languageVersion)) { pos++; @@ -1472,7 +1501,8 @@ namespace ts { continue; } error(Diagnostics.Invalid_character); - return pos++, token = SyntaxKind.Unknown; + pos++; + return token = SyntaxKind.Unknown; } } } @@ -1489,10 +1519,12 @@ namespace ts { if (text.charCodeAt(pos + 1) === CharacterCodes.equals) { return pos += 2, token = SyntaxKind.GreaterThanGreaterThanEqualsToken; } - return pos++, token = SyntaxKind.GreaterThanGreaterThanToken; + pos++; + return token = SyntaxKind.GreaterThanGreaterThanToken; } if (text.charCodeAt(pos) === CharacterCodes.equals) { - return pos++, token = SyntaxKind.GreaterThanEqualsToken; + pos++; + return token = SyntaxKind.GreaterThanEqualsToken; } } return token; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 60118604c50..3cc938d95bb 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -92,7 +92,7 @@ namespace ts { return false; } - for (let i = 0; i < array1.length; ++i) { + for (let i = 0; i < array1.length; i++) { const equals = equaler ? equaler(array1[i], array2[i]) : array1[i] === array2[i]; if (!equals) { return false; @@ -1874,8 +1874,8 @@ namespace ts { writeTextOfNode, writeLiteral, writeLine, - increaseIndent: () => indent++, - decreaseIndent: () => indent--, + increaseIndent: () => { indent++; }, + decreaseIndent: () => { indent--; }, getIndent: () => indent, getTextPos: () => output.length, getLine: () => lineCount + 1, diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 9d729345781..3aa1ee51775 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -732,7 +732,7 @@ namespace FourSlash { // Count only the references in local files. Filter the ones in lib and other files. ts.forEach(references, entry => { if (localFiles.some((fileName) => fileName === entry.fileName)) { - ++referencesCount; + referencesCount++; } }); } @@ -1103,7 +1103,7 @@ namespace FourSlash { const emitFiles: FourSlashFile[] = []; // List of FourSlashFile that has emitThisFile flag on const allFourSlashFiles = this.testData.files; - for (let idx = 0; idx < allFourSlashFiles.length; ++idx) { + for (let idx = 0; idx < allFourSlashFiles.length; idx++) { const file = allFourSlashFiles[idx]; if (file.fileOptions[metadataOptionNames.emitThisFile] === "true") { // Find a file with the flag emitThisFile turned on @@ -1849,7 +1849,7 @@ namespace FourSlash { let item: ts.NavigateToItem = null; // Count only the match that match the same MatchKind - for (let i = 0; i < items.length; ++i) { + for (let i = 0; i < items.length; i++) { item = items[i]; if (!matchKind || item.matchKind === matchKind) { actual++; @@ -3287,4 +3287,4 @@ namespace FourSlashInterface { }; } } -} +} diff --git a/src/harness/projectsRunner.ts b/src/harness/projectsRunner.ts index 52102663457..96fcfedc6b4 100644 --- a/src/harness/projectsRunner.ts +++ b/src/harness/projectsRunner.ts @@ -307,9 +307,10 @@ class ProjectRunner extends RunnerBase { // If the generated output file resides in the parent folder or is rooted path, // we need to instead create files that can live in the project reference folder // but make sure extension of these files matches with the fileName the compiler asked to write - diskRelativeName = "diskFile" + nonSubfolderDiskFiles++ + + diskRelativeName = "diskFile" + nonSubfolderDiskFiles + (Harness.Compiler.isDTS(fileName) ? ".d.ts" : Harness.Compiler.isJS(fileName) ? ".js" : ".js.map"); + nonSubfolderDiskFiles++; } if (Harness.Compiler.isJS(fileName)) { diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 0305b7595c2..1724aa4c8a5 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -744,7 +744,8 @@ namespace ts.server { else { for (const directory of project.directoriesWatchedForTsconfig) { // if the ref count for this directory watcher drops to 0, it's time to close it - if (!(--project.projectService.directoryWatchersRefCount[directory])) { + project.projectService.directoryWatchersRefCount[directory]--; + if (!project.projectService.directoryWatchersRefCount[directory]) { this.log("Close directory watcher for: " + directory); project.projectService.directoryWatchersForTsconfig[directory].close(); delete project.projectService.directoryWatchersForTsconfig[directory]; @@ -1757,7 +1758,8 @@ namespace ts.server { let count = 1; let pos = 0; this.index.every((ll, s, len) => { - starts[count++] = pos; + starts[count] = pos; + count++; pos += ll.text.length; return true; }, 0); @@ -2023,7 +2025,8 @@ namespace ts.server { while (adjustedStart >= childCharCount) { this.skipChild(adjustedStart, rangeLength, childIndex, walkFns, CharRangeSection.PreStart); adjustedStart -= childCharCount; - child = this.children[++childIndex]; + childIndex++; + child = this.children[childIndex]; childCharCount = child.charCount(); } // Case I: both start and end of range in same subtree @@ -2038,14 +2041,16 @@ namespace ts.server { return; } let adjustedLength = rangeLength - (childCharCount - adjustedStart); - child = this.children[++childIndex]; + childIndex++; + child = this.children[childIndex]; childCharCount = child.charCount(); while (adjustedLength > childCharCount) { if (this.execWalk(0, childCharCount, walkFns, childIndex, CharRangeSection.Mid)) { return; } adjustedLength -= childCharCount; - child = this.children[++childIndex]; + childIndex++; + child = this.children[childIndex]; childCharCount = child.charCount(); } if (adjustedLength > 0) { @@ -2169,7 +2174,8 @@ namespace ts.server { if (childIndex < clen) { splitNode = new LineNode(); while (childIndex < clen) { - splitNode.add(this.children[childIndex++]); + splitNode.add(this.children[childIndex]); + childIndex++; } splitNode.updateCounts(); } @@ -2210,7 +2216,9 @@ namespace ts.server { let nodeIndex = 0; childIndex++; while ((childIndex < lineCollectionCapacity) && (nodeIndex < nodeCount)) { - this.children[childIndex++] = nodes[nodeIndex++]; + this.children[childIndex] = nodes[nodeIndex]; + childIndex++; + nodeIndex++; } let splitNodes: LineNode[] = []; let splitNodeCount = 0; @@ -2223,7 +2231,8 @@ namespace ts.server { } let splitNode = splitNodes[0]; while (nodeIndex < nodeCount) { - splitNode.add(nodes[nodeIndex++]); + splitNode.add(nodes[nodeIndex]); + nodeIndex++; if (splitNode.children.length === lineCollectionCapacity) { splitNodeIndex++; splitNode = splitNodes[splitNodeIndex]; diff --git a/src/server/session.ts b/src/server/session.ts index dae2384ce54..a02d90142e4 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -271,7 +271,8 @@ namespace ts.server { let index = 0; const checkOne = () => { if (matchSeq(seq)) { - const checkSpec = checkList[index++]; + const checkSpec = checkList[index]; + index++; if (checkSpec.project.getSourceFileFromName(checkSpec.fileName, requireOpen)) { this.syntacticCheck(checkSpec.fileName, checkSpec.project); this.immediateId = setImmediate(() => { From ff00a0c779cf57b44d418196f50189e2acb07f62 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 16:14:24 -0800 Subject: [PATCH 095/164] Fix breakpoints in object literal pattern destructuring assignment --- src/services/breakpoints.ts | 22 +- src/services/utilities.ts | 4 +- ...AssignmentForObjectBindingPattern.baseline | 1171 +++++++++++++ ...ObjectBindingPatternDefaultValues.baseline | 1483 +++++++++++++++++ 4 files changed, 2673 insertions(+), 7 deletions(-) create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPatternDefaultValues.baseline diff --git a/src/services/breakpoints.ts b/src/services/breakpoints.ts index bc3d7a75674..b7e909f69d8 100644 --- a/src/services/breakpoints.ts +++ b/src/services/breakpoints.ts @@ -261,9 +261,12 @@ namespace ts.BreakpointResolver { } // Set breakpoint on identifier element of destructuring pattern - // a or ...c from - // [a, b, ...c] or { a, b } from destructuring pattern - if ((node.kind === SyntaxKind.Identifier || node.kind == SyntaxKind.SpreadElementExpression) && + // a or ...c or d: x from + // [a, b, ...c] or { a, b } or { d: x } from destructuring pattern + if ((node.kind === SyntaxKind.Identifier || + node.kind == SyntaxKind.SpreadElementExpression || + node.kind === SyntaxKind.PropertyAssignment || + node.kind === SyntaxKind.ShorthandPropertyAssignment) && isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { return textSpan(node); } @@ -322,12 +325,14 @@ namespace ts.BreakpointResolver { break; } } - + // If this is name of property assignment, set breakpoint in the initializer - if (node.parent.kind === SyntaxKind.PropertyAssignment && (node.parent).name === node) { + if (node.parent.kind === SyntaxKind.PropertyAssignment && + (node.parent).name === node && + !isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.parent)) { return spanInNode((node.parent).initializer); } - + // Breakpoint in type assertion goes to its operand if (node.parent.kind === SyntaxKind.TypeAssertionExpression && (node.parent).type === node) { return spanInNextNode((node.parent).type); @@ -609,6 +614,11 @@ namespace ts.BreakpointResolver { // Default to parent node default: + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { + // Breakpoint in last binding element or binding pattern if it contains no elements + let objectLiteral = node.parent; + return textSpan(lastOrUndefined(objectLiteral.properties) || objectLiteral); + } return spanInNode(node.parent); } } diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 63b1757efd7..afdc85fffd8 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -629,7 +629,9 @@ namespace ts { // [a, b, c] of // [x, [a, b, c] ] = someExpression - if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent)) { + // or + // {x, a: {a, b, c} } = someExpression + if (isArrayLiteralOrObjectLiteralDestructuringPattern(node.parent.kind === SyntaxKind.PropertyAssignment ? node.parent.parent : node.parent)) { return true; } } diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPattern.baseline new file mode 100644 index 00000000000..c318d875ddf --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPattern.baseline @@ -0,0 +1,1171 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 186) SpanInfo: undefined +-------------------------------- +12 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (187 to 213) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (214 to 220) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (221 to 222) SpanInfo: undefined +-------------------------------- +15 >let robot: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (223 to 277) SpanInfo: {"start":223,"length":53} + >let robot: Robot = { name: "mower", skill: "mowing" } + >:=> (line 15, col 0) to (line 15, col 53) +-------------------------------- +16 >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (278 to 375) SpanInfo: {"start":278,"length":96} + >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 16, col 0) to (line 16, col 96) +-------------------------------- +17 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (376 to 397) SpanInfo: {"start":402,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +18 > return robot; + + ~~~~~~~~~~~~~~~~~~ => Pos: (398 to 415) SpanInfo: {"start":402,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +19 >} + + ~~ => Pos: (416 to 417) SpanInfo: {"start":416,"length":1} + >} + >:=> (line 19, col 0) to (line 19, col 1) +-------------------------------- +20 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (418 to 444) SpanInfo: {"start":449,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +21 > return multiRobot; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (445 to 467) SpanInfo: {"start":449,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +22 >} + + ~~ => Pos: (468 to 469) SpanInfo: {"start":468,"length":1} + >} + >:=> (line 22, col 0) to (line 22, col 1) +-------------------------------- +23 >let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (470 to 553) SpanInfo: undefined +-------------------------------- +24 >let name: string, primary: string, secondary: string, skill: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (554 to 622) SpanInfo: undefined +-------------------------------- +25 >for ({ name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (623 to 651) SpanInfo: {"start":630,"length":11} + >name: nameA + >:=> (line 25, col 7) to (line 25, col 18) +25 >for ({ name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (652 to 658) SpanInfo: {"start":653,"length":5} + >i = 0 + >:=> (line 25, col 30) to (line 25, col 35) +25 >for ({ name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (659 to 665) SpanInfo: {"start":660,"length":5} + >i < 1 + >:=> (line 25, col 37) to (line 25, col 42) +25 >for ({ name: nameA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (666 to 673) SpanInfo: {"start":667,"length":3} + >i++ + >:=> (line 25, col 44) to (line 25, col 47) +-------------------------------- +26 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (674 to 697) SpanInfo: {"start":678,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +27 >} + + ~~ => Pos: (698 to 699) SpanInfo: {"start":678,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +28 >for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (700 to 733) SpanInfo: {"start":707,"length":11} + >name: nameA + >:=> (line 28, col 7) to (line 28, col 18) +28 >for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (734 to 740) SpanInfo: {"start":735,"length":5} + >i = 0 + >:=> (line 28, col 35) to (line 28, col 40) +28 >for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (741 to 747) SpanInfo: {"start":742,"length":5} + >i < 1 + >:=> (line 28, col 42) to (line 28, col 47) +28 >for ({ name: nameA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (748 to 755) SpanInfo: {"start":749,"length":3} + >i++ + >:=> (line 28, col 49) to (line 28, col 52) +-------------------------------- +29 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (756 to 779) SpanInfo: {"start":760,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +30 >} + + ~~ => Pos: (780 to 781) SpanInfo: {"start":760,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +31 >for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (782 to 850) SpanInfo: {"start":789,"length":11} + >name: nameA + >:=> (line 31, col 7) to (line 31, col 18) +31 >for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (851 to 857) SpanInfo: {"start":852,"length":5} + >i = 0 + >:=> (line 31, col 70) to (line 31, col 75) +31 >for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (858 to 864) SpanInfo: {"start":859,"length":5} + >i < 1 + >:=> (line 31, col 77) to (line 31, col 82) +31 >for ({ name: nameA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (865 to 872) SpanInfo: {"start":866,"length":3} + >i++ + >:=> (line 31, col 84) to (line 31, col 87) +-------------------------------- +32 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (873 to 896) SpanInfo: {"start":877,"length":18} + >console.log(nameA) + >:=> (line 32, col 4) to (line 32, col 22) +-------------------------------- +33 >} + + ~~ => Pos: (897 to 898) SpanInfo: {"start":877,"length":18} + >console.log(nameA) + >:=> (line 32, col 4) to (line 32, col 22) +-------------------------------- +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~ => Pos: (899 to 912) SpanInfo: {"start":906,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 34, col 7) to (line 34, col 59) +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (913 to 933) SpanInfo: {"start":916,"length":17} + >primary: primaryA + >:=> (line 34, col 17) to (line 34, col 34) +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (934 to 957) SpanInfo: {"start":935,"length":21} + >secondary: secondaryA + >:=> (line 34, col 36) to (line 34, col 57) +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (958 to 973) SpanInfo: {"start":906,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 34, col 7) to (line 34, col 59) +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (974 to 980) SpanInfo: {"start":975,"length":5} + >i = 0 + >:=> (line 34, col 76) to (line 34, col 81) +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (981 to 987) SpanInfo: {"start":982,"length":5} + >i < 1 + >:=> (line 34, col 83) to (line 34, col 88) +34 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (988 to 995) SpanInfo: {"start":989,"length":3} + >i++ + >:=> (line 34, col 90) to (line 34, col 93) +-------------------------------- +35 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (996 to 1022) SpanInfo: {"start":1000,"length":21} + >console.log(primaryA) + >:=> (line 35, col 4) to (line 35, col 25) +-------------------------------- +36 >} + + ~~ => Pos: (1023 to 1024) SpanInfo: {"start":1000,"length":21} + >console.log(primaryA) + >:=> (line 35, col 4) to (line 35, col 25) +-------------------------------- +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~ => Pos: (1025 to 1038) SpanInfo: {"start":1032,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 37, col 7) to (line 37, col 59) +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1039 to 1059) SpanInfo: {"start":1042,"length":17} + >primary: primaryA + >:=> (line 37, col 17) to (line 37, col 34) +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1060 to 1083) SpanInfo: {"start":1061,"length":21} + >secondary: secondaryA + >:=> (line 37, col 36) to (line 37, col 57) +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1084 to 1104) SpanInfo: {"start":1032,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 37, col 7) to (line 37, col 59) +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1105 to 1111) SpanInfo: {"start":1106,"length":5} + >i = 0 + >:=> (line 37, col 81) to (line 37, col 86) +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1112 to 1118) SpanInfo: {"start":1113,"length":5} + >i < 1 + >:=> (line 37, col 88) to (line 37, col 93) +37 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1119 to 1126) SpanInfo: {"start":1120,"length":3} + >i++ + >:=> (line 37, col 95) to (line 37, col 98) +-------------------------------- +38 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1127 to 1153) SpanInfo: {"start":1131,"length":21} + >console.log(primaryA) + >:=> (line 38, col 4) to (line 38, col 25) +-------------------------------- +39 >} + + ~~ => Pos: (1154 to 1155) SpanInfo: {"start":1131,"length":21} + >console.log(primaryA) + >:=> (line 38, col 4) to (line 38, col 25) +-------------------------------- +40 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~ => Pos: (1156 to 1169) SpanInfo: {"start":1163,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 40, col 7) to (line 40, col 59) +40 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1170 to 1190) SpanInfo: {"start":1173,"length":17} + >primary: primaryA + >:=> (line 40, col 17) to (line 40, col 34) +40 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1191 to 1214) SpanInfo: {"start":1192,"length":21} + >secondary: secondaryA + >:=> (line 40, col 36) to (line 40, col 57) +40 >for ({ skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~=> Pos: (1215 to 1219) SpanInfo: {"start":1163,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 40, col 7) to (line 40, col 59) +-------------------------------- +41 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1220 to 1310) SpanInfo: {"start":1163,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 40, col 7) to (line 40, col 59) +-------------------------------- +42 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1311 to 1320) SpanInfo: {"start":1315,"length":5} + >i = 0 + >:=> (line 42, col 4) to (line 42, col 9) +42 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1321 to 1327) SpanInfo: {"start":1322,"length":5} + >i < 1 + >:=> (line 42, col 11) to (line 42, col 16) +42 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1328 to 1335) SpanInfo: {"start":1329,"length":3} + >i++ + >:=> (line 42, col 18) to (line 42, col 21) +-------------------------------- +43 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1336 to 1362) SpanInfo: {"start":1340,"length":21} + >console.log(primaryA) + >:=> (line 43, col 4) to (line 43, col 25) +-------------------------------- +44 >} + + ~~ => Pos: (1363 to 1364) SpanInfo: {"start":1340,"length":21} + >console.log(primaryA) + >:=> (line 43, col 4) to (line 43, col 25) +-------------------------------- +45 >for ({ name } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1365 to 1386) SpanInfo: {"start":1372,"length":4} + >name + >:=> (line 45, col 7) to (line 45, col 11) +45 >for ({ name } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1387 to 1393) SpanInfo: {"start":1388,"length":5} + >i = 0 + >:=> (line 45, col 23) to (line 45, col 28) +45 >for ({ name } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1394 to 1400) SpanInfo: {"start":1395,"length":5} + >i < 1 + >:=> (line 45, col 30) to (line 45, col 35) +45 >for ({ name } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1401 to 1408) SpanInfo: {"start":1402,"length":3} + >i++ + >:=> (line 45, col 37) to (line 45, col 40) +-------------------------------- +46 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1409 to 1432) SpanInfo: {"start":1413,"length":18} + >console.log(nameA) + >:=> (line 46, col 4) to (line 46, col 22) +-------------------------------- +47 >} + + ~~ => Pos: (1433 to 1434) SpanInfo: {"start":1413,"length":18} + >console.log(nameA) + >:=> (line 46, col 4) to (line 46, col 22) +-------------------------------- +48 >for ({ name } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1435 to 1461) SpanInfo: {"start":1442,"length":4} + >name + >:=> (line 48, col 7) to (line 48, col 11) +48 >for ({ name } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1462 to 1468) SpanInfo: {"start":1463,"length":5} + >i = 0 + >:=> (line 48, col 28) to (line 48, col 33) +48 >for ({ name } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1469 to 1475) SpanInfo: {"start":1470,"length":5} + >i < 1 + >:=> (line 48, col 35) to (line 48, col 40) +48 >for ({ name } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1476 to 1483) SpanInfo: {"start":1477,"length":3} + >i++ + >:=> (line 48, col 42) to (line 48, col 45) +-------------------------------- +49 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1484 to 1507) SpanInfo: {"start":1488,"length":18} + >console.log(nameA) + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +50 >} + + ~~ => Pos: (1508 to 1509) SpanInfo: {"start":1488,"length":18} + >console.log(nameA) + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +51 >for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1510 to 1571) SpanInfo: {"start":1517,"length":4} + >name + >:=> (line 51, col 7) to (line 51, col 11) +51 >for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1572 to 1578) SpanInfo: {"start":1573,"length":5} + >i = 0 + >:=> (line 51, col 63) to (line 51, col 68) +51 >for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1579 to 1585) SpanInfo: {"start":1580,"length":5} + >i < 1 + >:=> (line 51, col 70) to (line 51, col 75) +51 >for ({ name } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1586 to 1593) SpanInfo: {"start":1587,"length":3} + >i++ + >:=> (line 51, col 77) to (line 51, col 80) +-------------------------------- +52 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1594 to 1617) SpanInfo: {"start":1598,"length":18} + >console.log(nameA) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +53 >} + + ~~ => Pos: (1618 to 1619) SpanInfo: {"start":1598,"length":18} + >console.log(nameA) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~ => Pos: (1620 to 1633) SpanInfo: {"start":1627,"length":30} + >skills: { primary, secondary } + >:=> (line 54, col 7) to (line 54, col 37) +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (1634 to 1644) SpanInfo: {"start":1637,"length":7} + >primary + >:=> (line 54, col 17) to (line 54, col 24) +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (1645 to 1656) SpanInfo: {"start":1646,"length":9} + >secondary + >:=> (line 54, col 26) to (line 54, col 35) +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (1657 to 1672) SpanInfo: {"start":1627,"length":30} + >skills: { primary, secondary } + >:=> (line 54, col 7) to (line 54, col 37) +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1673 to 1679) SpanInfo: {"start":1674,"length":5} + >i = 0 + >:=> (line 54, col 54) to (line 54, col 59) +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1680 to 1686) SpanInfo: {"start":1681,"length":5} + >i < 1 + >:=> (line 54, col 61) to (line 54, col 66) +54 >for ({ skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1687 to 1694) SpanInfo: {"start":1688,"length":3} + >i++ + >:=> (line 54, col 68) to (line 54, col 71) +-------------------------------- +55 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1695 to 1721) SpanInfo: {"start":1699,"length":21} + >console.log(primaryA) + >:=> (line 55, col 4) to (line 55, col 25) +-------------------------------- +56 >} + + ~~ => Pos: (1722 to 1723) SpanInfo: {"start":1699,"length":21} + >console.log(primaryA) + >:=> (line 55, col 4) to (line 55, col 25) +-------------------------------- +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~ => Pos: (1724 to 1737) SpanInfo: {"start":1731,"length":30} + >skills: { primary, secondary } + >:=> (line 57, col 7) to (line 57, col 37) +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (1738 to 1748) SpanInfo: {"start":1741,"length":7} + >primary + >:=> (line 57, col 17) to (line 57, col 24) +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (1749 to 1760) SpanInfo: {"start":1750,"length":9} + >secondary + >:=> (line 57, col 26) to (line 57, col 35) +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (1761 to 1781) SpanInfo: {"start":1731,"length":30} + >skills: { primary, secondary } + >:=> (line 57, col 7) to (line 57, col 37) +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1782 to 1788) SpanInfo: {"start":1783,"length":5} + >i = 0 + >:=> (line 57, col 59) to (line 57, col 64) +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1789 to 1795) SpanInfo: {"start":1790,"length":5} + >i < 1 + >:=> (line 57, col 66) to (line 57, col 71) +57 >for ({ skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1796 to 1803) SpanInfo: {"start":1797,"length":3} + >i++ + >:=> (line 57, col 73) to (line 57, col 76) +-------------------------------- +58 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1804 to 1830) SpanInfo: {"start":1808,"length":21} + >console.log(primaryA) + >:=> (line 58, col 4) to (line 58, col 25) +-------------------------------- +59 >} + + ~~ => Pos: (1831 to 1832) SpanInfo: {"start":1808,"length":21} + >console.log(primaryA) + >:=> (line 58, col 4) to (line 58, col 25) +-------------------------------- +60 >for ({ skills: { primary, secondary } } = + + ~~~~~~~~~~~~~~ => Pos: (1833 to 1846) SpanInfo: {"start":1840,"length":30} + >skills: { primary, secondary } + >:=> (line 60, col 7) to (line 60, col 37) +60 >for ({ skills: { primary, secondary } } = + + ~~~~~~~~~~~ => Pos: (1847 to 1857) SpanInfo: {"start":1850,"length":7} + >primary + >:=> (line 60, col 17) to (line 60, col 24) +60 >for ({ skills: { primary, secondary } } = + + ~~~~~~~~~~~~ => Pos: (1858 to 1869) SpanInfo: {"start":1859,"length":9} + >secondary + >:=> (line 60, col 26) to (line 60, col 35) +60 >for ({ skills: { primary, secondary } } = + + ~~~~~ => Pos: (1870 to 1874) SpanInfo: {"start":1840,"length":30} + >skills: { primary, secondary } + >:=> (line 60, col 7) to (line 60, col 37) +-------------------------------- +61 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1875 to 1965) SpanInfo: {"start":1840,"length":30} + >skills: { primary, secondary } + >:=> (line 60, col 7) to (line 60, col 37) +-------------------------------- +62 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1966 to 1975) SpanInfo: {"start":1970,"length":5} + >i = 0 + >:=> (line 62, col 4) to (line 62, col 9) +62 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1976 to 1982) SpanInfo: {"start":1977,"length":5} + >i < 1 + >:=> (line 62, col 11) to (line 62, col 16) +62 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1983 to 1990) SpanInfo: {"start":1984,"length":3} + >i++ + >:=> (line 62, col 18) to (line 62, col 21) +-------------------------------- +63 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1991 to 2017) SpanInfo: {"start":1995,"length":21} + >console.log(primaryA) + >:=> (line 63, col 4) to (line 63, col 25) +-------------------------------- +64 >} + + ~~ => Pos: (2018 to 2019) SpanInfo: {"start":1995,"length":21} + >console.log(primaryA) + >:=> (line 63, col 4) to (line 63, col 25) +-------------------------------- +65 >for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2020 to 2038) SpanInfo: {"start":2027,"length":11} + >name: nameA + >:=> (line 65, col 7) to (line 65, col 18) +65 >for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2039 to 2063) SpanInfo: {"start":2040,"length":13} + >skill: skillA + >:=> (line 65, col 20) to (line 65, col 33) +65 >for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2064 to 2070) SpanInfo: {"start":2065,"length":5} + >i = 0 + >:=> (line 65, col 45) to (line 65, col 50) +65 >for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2071 to 2077) SpanInfo: {"start":2072,"length":5} + >i < 1 + >:=> (line 65, col 52) to (line 65, col 57) +65 >for ({ name: nameA, skill: skillA } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2078 to 2085) SpanInfo: {"start":2079,"length":3} + >i++ + >:=> (line 65, col 59) to (line 65, col 62) +-------------------------------- +66 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2086 to 2109) SpanInfo: {"start":2090,"length":18} + >console.log(nameA) + >:=> (line 66, col 4) to (line 66, col 22) +-------------------------------- +67 >} + + ~~ => Pos: (2110 to 2111) SpanInfo: {"start":2090,"length":18} + >console.log(nameA) + >:=> (line 66, col 4) to (line 66, col 22) +-------------------------------- +68 >for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2112 to 2130) SpanInfo: {"start":2119,"length":11} + >name: nameA + >:=> (line 68, col 7) to (line 68, col 18) +68 >for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2131 to 2160) SpanInfo: {"start":2132,"length":13} + >skill: skillA + >:=> (line 68, col 20) to (line 68, col 33) +68 >for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2161 to 2167) SpanInfo: {"start":2162,"length":5} + >i = 0 + >:=> (line 68, col 50) to (line 68, col 55) +68 >for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2168 to 2174) SpanInfo: {"start":2169,"length":5} + >i < 1 + >:=> (line 68, col 57) to (line 68, col 62) +68 >for ({ name: nameA, skill: skillA } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2175 to 2182) SpanInfo: {"start":2176,"length":3} + >i++ + >:=> (line 68, col 64) to (line 68, col 67) +-------------------------------- +69 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2183 to 2206) SpanInfo: {"start":2187,"length":18} + >console.log(nameA) + >:=> (line 69, col 4) to (line 69, col 22) +-------------------------------- +70 >} + + ~~ => Pos: (2207 to 2208) SpanInfo: {"start":2187,"length":18} + >console.log(nameA) + >:=> (line 69, col 4) to (line 69, col 22) +-------------------------------- +71 >for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2209 to 2227) SpanInfo: {"start":2216,"length":11} + >name: nameA + >:=> (line 71, col 7) to (line 71, col 18) +71 >for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2228 to 2292) SpanInfo: {"start":2229,"length":13} + >skill: skillA + >:=> (line 71, col 20) to (line 71, col 33) +71 >for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2293 to 2299) SpanInfo: {"start":2294,"length":5} + >i = 0 + >:=> (line 71, col 85) to (line 71, col 90) +71 >for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2300 to 2306) SpanInfo: {"start":2301,"length":5} + >i < 1 + >:=> (line 71, col 92) to (line 71, col 97) +71 >for ({ name: nameA, skill: skillA } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2307 to 2314) SpanInfo: {"start":2308,"length":3} + >i++ + >:=> (line 71, col 99) to (line 71, col 102) +-------------------------------- +72 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2315 to 2338) SpanInfo: {"start":2319,"length":18} + >console.log(nameA) + >:=> (line 72, col 4) to (line 72, col 22) +-------------------------------- +73 >} + + ~~ => Pos: (2339 to 2340) SpanInfo: {"start":2319,"length":18} + >console.log(nameA) + >:=> (line 72, col 4) to (line 72, col 22) +-------------------------------- +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2341 to 2359) SpanInfo: {"start":2348,"length":11} + >name: nameA + >:=> (line 74, col 7) to (line 74, col 18) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2360 to 2367) SpanInfo: {"start":2361,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 74, col 20) to (line 74, col 72) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2368 to 2388) SpanInfo: {"start":2371,"length":17} + >primary: primaryA + >:=> (line 74, col 30) to (line 74, col 47) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2389 to 2412) SpanInfo: {"start":2390,"length":21} + >secondary: secondaryA + >:=> (line 74, col 49) to (line 74, col 70) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (2413 to 2428) SpanInfo: {"start":2361,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 74, col 20) to (line 74, col 72) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2429 to 2435) SpanInfo: {"start":2430,"length":5} + >i = 0 + >:=> (line 74, col 89) to (line 74, col 94) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2436 to 2442) SpanInfo: {"start":2437,"length":5} + >i < 1 + >:=> (line 74, col 96) to (line 74, col 101) +74 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2443 to 2450) SpanInfo: {"start":2444,"length":3} + >i++ + >:=> (line 74, col 103) to (line 74, col 106) +-------------------------------- +75 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2451 to 2477) SpanInfo: {"start":2455,"length":21} + >console.log(primaryA) + >:=> (line 75, col 4) to (line 75, col 25) +-------------------------------- +76 >} + + ~~ => Pos: (2478 to 2479) SpanInfo: {"start":2455,"length":21} + >console.log(primaryA) + >:=> (line 75, col 4) to (line 75, col 25) +-------------------------------- +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2480 to 2498) SpanInfo: {"start":2487,"length":11} + >name: nameA + >:=> (line 77, col 7) to (line 77, col 18) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2499 to 2506) SpanInfo: {"start":2500,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 77, col 20) to (line 77, col 72) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2507 to 2527) SpanInfo: {"start":2510,"length":17} + >primary: primaryA + >:=> (line 77, col 30) to (line 77, col 47) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2528 to 2551) SpanInfo: {"start":2529,"length":21} + >secondary: secondaryA + >:=> (line 77, col 49) to (line 77, col 70) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2552 to 2572) SpanInfo: {"start":2500,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 77, col 20) to (line 77, col 72) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2573 to 2579) SpanInfo: {"start":2574,"length":5} + >i = 0 + >:=> (line 77, col 94) to (line 77, col 99) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2580 to 2586) SpanInfo: {"start":2581,"length":5} + >i < 1 + >:=> (line 77, col 101) to (line 77, col 106) +77 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2587 to 2594) SpanInfo: {"start":2588,"length":3} + >i++ + >:=> (line 77, col 108) to (line 77, col 111) +-------------------------------- +78 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2595 to 2621) SpanInfo: {"start":2599,"length":21} + >console.log(primaryA) + >:=> (line 78, col 4) to (line 78, col 25) +-------------------------------- +79 >} + + ~~ => Pos: (2622 to 2623) SpanInfo: {"start":2599,"length":21} + >console.log(primaryA) + >:=> (line 78, col 4) to (line 78, col 25) +-------------------------------- +80 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2624 to 2642) SpanInfo: {"start":2631,"length":11} + >name: nameA + >:=> (line 80, col 7) to (line 80, col 18) +80 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~ => Pos: (2643 to 2650) SpanInfo: {"start":2644,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 80, col 20) to (line 80, col 72) +80 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2651 to 2671) SpanInfo: {"start":2654,"length":17} + >primary: primaryA + >:=> (line 80, col 30) to (line 80, col 47) +80 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2672 to 2695) SpanInfo: {"start":2673,"length":21} + >secondary: secondaryA + >:=> (line 80, col 49) to (line 80, col 70) +80 >for ({ name: nameA, skills: { primary: primaryA, secondary: secondaryA } } = + + ~~~~~=> Pos: (2696 to 2700) SpanInfo: {"start":2644,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 80, col 20) to (line 80, col 72) +-------------------------------- +81 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2701 to 2791) SpanInfo: {"start":2644,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 80, col 20) to (line 80, col 72) +-------------------------------- +82 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2792 to 2801) SpanInfo: {"start":2796,"length":5} + >i = 0 + >:=> (line 82, col 4) to (line 82, col 9) +82 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2802 to 2808) SpanInfo: {"start":2803,"length":5} + >i < 1 + >:=> (line 82, col 11) to (line 82, col 16) +82 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2809 to 2816) SpanInfo: {"start":2810,"length":3} + >i++ + >:=> (line 82, col 18) to (line 82, col 21) +-------------------------------- +83 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2817 to 2843) SpanInfo: {"start":2821,"length":21} + >console.log(primaryA) + >:=> (line 83, col 4) to (line 83, col 25) +-------------------------------- +84 >} + + ~~ => Pos: (2844 to 2845) SpanInfo: {"start":2821,"length":21} + >console.log(primaryA) + >:=> (line 83, col 4) to (line 83, col 25) +-------------------------------- +85 >for ({ name, skill } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (2846 to 2857) SpanInfo: {"start":2853,"length":4} + >name + >:=> (line 85, col 7) to (line 85, col 11) +85 >for ({ name, skill } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~ => Pos: (2858 to 2874) SpanInfo: {"start":2859,"length":5} + >skill + >:=> (line 85, col 13) to (line 85, col 18) +85 >for ({ name, skill } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2875 to 2881) SpanInfo: {"start":2876,"length":5} + >i = 0 + >:=> (line 85, col 30) to (line 85, col 35) +85 >for ({ name, skill } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2882 to 2888) SpanInfo: {"start":2883,"length":5} + >i < 1 + >:=> (line 85, col 37) to (line 85, col 42) +85 >for ({ name, skill } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2889 to 2896) SpanInfo: {"start":2890,"length":3} + >i++ + >:=> (line 85, col 44) to (line 85, col 47) +-------------------------------- +86 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2897 to 2920) SpanInfo: {"start":2901,"length":18} + >console.log(nameA) + >:=> (line 86, col 4) to (line 86, col 22) +-------------------------------- +87 >} + + ~~ => Pos: (2921 to 2922) SpanInfo: {"start":2901,"length":18} + >console.log(nameA) + >:=> (line 86, col 4) to (line 86, col 22) +-------------------------------- +88 >for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (2923 to 2934) SpanInfo: {"start":2930,"length":4} + >name + >:=> (line 88, col 7) to (line 88, col 11) +88 >for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2935 to 2956) SpanInfo: {"start":2936,"length":5} + >skill + >:=> (line 88, col 13) to (line 88, col 18) +88 >for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2957 to 2963) SpanInfo: {"start":2958,"length":5} + >i = 0 + >:=> (line 88, col 35) to (line 88, col 40) +88 >for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2964 to 2970) SpanInfo: {"start":2965,"length":5} + >i < 1 + >:=> (line 88, col 42) to (line 88, col 47) +88 >for ({ name, skill } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2971 to 2978) SpanInfo: {"start":2972,"length":3} + >i++ + >:=> (line 88, col 49) to (line 88, col 52) +-------------------------------- +89 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2979 to 3002) SpanInfo: {"start":2983,"length":18} + >console.log(nameA) + >:=> (line 89, col 4) to (line 89, col 22) +-------------------------------- +90 >} + + ~~ => Pos: (3003 to 3004) SpanInfo: {"start":2983,"length":18} + >console.log(nameA) + >:=> (line 89, col 4) to (line 89, col 22) +-------------------------------- +91 >for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (3005 to 3016) SpanInfo: {"start":3012,"length":4} + >name + >:=> (line 91, col 7) to (line 91, col 11) +91 >for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3017 to 3073) SpanInfo: {"start":3018,"length":5} + >skill + >:=> (line 91, col 13) to (line 91, col 18) +91 >for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3074 to 3080) SpanInfo: {"start":3075,"length":5} + >i = 0 + >:=> (line 91, col 70) to (line 91, col 75) +91 >for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3081 to 3087) SpanInfo: {"start":3082,"length":5} + >i < 1 + >:=> (line 91, col 77) to (line 91, col 82) +91 >for ({ name, skill } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3088 to 3095) SpanInfo: {"start":3089,"length":3} + >i++ + >:=> (line 91, col 84) to (line 91, col 87) +-------------------------------- +92 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3096 to 3119) SpanInfo: {"start":3100,"length":18} + >console.log(nameA) + >:=> (line 92, col 4) to (line 92, col 22) +-------------------------------- +93 >} + + ~~ => Pos: (3120 to 3121) SpanInfo: {"start":3100,"length":18} + >console.log(nameA) + >:=> (line 92, col 4) to (line 92, col 22) +-------------------------------- +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (3122 to 3133) SpanInfo: {"start":3129,"length":4} + >name + >:=> (line 94, col 7) to (line 94, col 11) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (3134 to 3141) SpanInfo: {"start":3135,"length":30} + >skills: { primary, secondary } + >:=> (line 94, col 13) to (line 94, col 43) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (3142 to 3152) SpanInfo: {"start":3145,"length":7} + >primary + >:=> (line 94, col 23) to (line 94, col 30) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (3153 to 3164) SpanInfo: {"start":3154,"length":9} + >secondary + >:=> (line 94, col 32) to (line 94, col 41) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~=> Pos: (3165 to 3180) SpanInfo: {"start":3135,"length":30} + >skills: { primary, secondary } + >:=> (line 94, col 13) to (line 94, col 43) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3181 to 3187) SpanInfo: {"start":3182,"length":5} + >i = 0 + >:=> (line 94, col 60) to (line 94, col 65) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3188 to 3194) SpanInfo: {"start":3189,"length":5} + >i < 1 + >:=> (line 94, col 67) to (line 94, col 72) +94 >for ({ name, skills: { primary, secondary } } = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3195 to 3202) SpanInfo: {"start":3196,"length":3} + >i++ + >:=> (line 94, col 74) to (line 94, col 77) +-------------------------------- +95 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3203 to 3229) SpanInfo: {"start":3207,"length":21} + >console.log(primaryA) + >:=> (line 95, col 4) to (line 95, col 25) +-------------------------------- +96 >} + + ~~ => Pos: (3230 to 3231) SpanInfo: {"start":3207,"length":21} + >console.log(primaryA) + >:=> (line 95, col 4) to (line 95, col 25) +-------------------------------- +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (3232 to 3243) SpanInfo: {"start":3239,"length":4} + >name + >:=> (line 97, col 7) to (line 97, col 11) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (3244 to 3251) SpanInfo: {"start":3245,"length":30} + >skills: { primary, secondary } + >:=> (line 97, col 13) to (line 97, col 43) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~ => Pos: (3252 to 3262) SpanInfo: {"start":3255,"length":7} + >primary + >:=> (line 97, col 23) to (line 97, col 30) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~ => Pos: (3263 to 3274) SpanInfo: {"start":3264,"length":9} + >secondary + >:=> (line 97, col 32) to (line 97, col 41) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (3275 to 3295) SpanInfo: {"start":3245,"length":30} + >skills: { primary, secondary } + >:=> (line 97, col 13) to (line 97, col 43) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3296 to 3302) SpanInfo: {"start":3297,"length":5} + >i = 0 + >:=> (line 97, col 65) to (line 97, col 70) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3303 to 3309) SpanInfo: {"start":3304,"length":5} + >i < 1 + >:=> (line 97, col 72) to (line 97, col 77) +97 >for ({ name, skills: { primary, secondary } } = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3310 to 3317) SpanInfo: {"start":3311,"length":3} + >i++ + >:=> (line 97, col 79) to (line 97, col 82) +-------------------------------- +98 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3318 to 3344) SpanInfo: {"start":3322,"length":21} + >console.log(primaryA) + >:=> (line 98, col 4) to (line 98, col 25) +-------------------------------- +99 >} + + ~~ => Pos: (3345 to 3346) SpanInfo: {"start":3322,"length":21} + >console.log(primaryA) + >:=> (line 98, col 4) to (line 98, col 25) +-------------------------------- +100>for ({ name, skills: { primary, secondary } } = + + ~~~~~~~~~~~~ => Pos: (3347 to 3358) SpanInfo: {"start":3354,"length":4} + >name + >:=> (line 100, col 7) to (line 100, col 11) +100>for ({ name, skills: { primary, secondary } } = + + ~~~~~~~~ => Pos: (3359 to 3366) SpanInfo: {"start":3360,"length":30} + >skills: { primary, secondary } + >:=> (line 100, col 13) to (line 100, col 43) +100>for ({ name, skills: { primary, secondary } } = + + ~~~~~~~~~~~ => Pos: (3367 to 3377) SpanInfo: {"start":3370,"length":7} + >primary + >:=> (line 100, col 23) to (line 100, col 30) +100>for ({ name, skills: { primary, secondary } } = + + ~~~~~~~~~~~~ => Pos: (3378 to 3389) SpanInfo: {"start":3379,"length":9} + >secondary + >:=> (line 100, col 32) to (line 100, col 41) +100>for ({ name, skills: { primary, secondary } } = + + ~~~~~=> Pos: (3390 to 3394) SpanInfo: {"start":3360,"length":30} + >skills: { primary, secondary } + >:=> (line 100, col 13) to (line 100, col 43) +-------------------------------- +101> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3395 to 3485) SpanInfo: {"start":3360,"length":30} + >skills: { primary, secondary } + >:=> (line 100, col 13) to (line 100, col 43) +-------------------------------- +102> i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (3486 to 3495) SpanInfo: {"start":3490,"length":5} + >i = 0 + >:=> (line 102, col 4) to (line 102, col 9) +102> i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (3496 to 3502) SpanInfo: {"start":3497,"length":5} + >i < 1 + >:=> (line 102, col 11) to (line 102, col 16) +102> i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (3503 to 3510) SpanInfo: {"start":3504,"length":3} + >i++ + >:=> (line 102, col 18) to (line 102, col 21) +-------------------------------- +103> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3511 to 3537) SpanInfo: {"start":3515,"length":21} + >console.log(primaryA) + >:=> (line 103, col 4) to (line 103, col 25) +-------------------------------- +104>} + ~ => Pos: (3538 to 3538) SpanInfo: {"start":3515,"length":21} + >console.log(primaryA) + >:=> (line 103, col 4) to (line 103, col 25) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..daf4f8a0d84 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForObjectBindingPatternDefaultValues.baseline @@ -0,0 +1,1483 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 187) SpanInfo: undefined +-------------------------------- +12 > secondary?: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (188 to 215) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (216 to 222) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (223 to 224) SpanInfo: undefined +-------------------------------- +15 >let robot: Robot = { name: "mower", skill: "mowing" }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (225 to 279) SpanInfo: {"start":225,"length":53} + >let robot: Robot = { name: "mower", skill: "mowing" } + >:=> (line 15, col 0) to (line 15, col 53) +-------------------------------- +16 >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } }; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (280 to 377) SpanInfo: {"start":280,"length":96} + >let multiRobot: MultiRobot = { name: "mower", skills: { primary: "mowing", secondary: "none" } } + >:=> (line 16, col 0) to (line 16, col 96) +-------------------------------- +17 >function getRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~ => Pos: (378 to 399) SpanInfo: {"start":404,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +18 > return robot; + + ~~~~~~~~~~~~~~~~~~ => Pos: (400 to 417) SpanInfo: {"start":404,"length":12} + >return robot + >:=> (line 18, col 4) to (line 18, col 16) +-------------------------------- +19 >} + + ~~ => Pos: (418 to 419) SpanInfo: {"start":418,"length":1} + >} + >:=> (line 19, col 0) to (line 19, col 1) +-------------------------------- +20 >function getMultiRobot() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (420 to 446) SpanInfo: {"start":451,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +21 > return multiRobot; + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (447 to 469) SpanInfo: {"start":451,"length":17} + >return multiRobot + >:=> (line 21, col 4) to (line 21, col 21) +-------------------------------- +22 >} + + ~~ => Pos: (470 to 471) SpanInfo: {"start":470,"length":1} + >} + >:=> (line 22, col 0) to (line 22, col 1) +-------------------------------- +23 >let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (472 to 555) SpanInfo: undefined +-------------------------------- +24 >let name: string, primary: string, secondary: string, skill: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (556 to 624) SpanInfo: undefined +-------------------------------- +25 >for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (625 to 663) SpanInfo: {"start":631,"length":22} + >name: nameA = "noName" + >:=> (line 25, col 6) to (line 25, col 28) +25 >for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (664 to 670) SpanInfo: {"start":665,"length":5} + >i = 0 + >:=> (line 25, col 40) to (line 25, col 45) +25 >for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (671 to 677) SpanInfo: {"start":672,"length":5} + >i < 1 + >:=> (line 25, col 47) to (line 25, col 52) +25 >for ({name: nameA = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (678 to 685) SpanInfo: {"start":679,"length":3} + >i++ + >:=> (line 25, col 54) to (line 25, col 57) +-------------------------------- +26 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (686 to 709) SpanInfo: {"start":690,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +27 >} + + ~~ => Pos: (710 to 711) SpanInfo: {"start":690,"length":18} + >console.log(nameA) + >:=> (line 26, col 4) to (line 26, col 22) +-------------------------------- +28 >for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (712 to 755) SpanInfo: {"start":718,"length":22} + >name: nameA = "noName" + >:=> (line 28, col 6) to (line 28, col 28) +28 >for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (756 to 762) SpanInfo: {"start":757,"length":5} + >i = 0 + >:=> (line 28, col 45) to (line 28, col 50) +28 >for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (763 to 769) SpanInfo: {"start":764,"length":5} + >i < 1 + >:=> (line 28, col 52) to (line 28, col 57) +28 >for ({name: nameA = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (770 to 777) SpanInfo: {"start":771,"length":3} + >i++ + >:=> (line 28, col 59) to (line 28, col 62) +-------------------------------- +29 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (778 to 801) SpanInfo: {"start":782,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +30 >} + + ~~ => Pos: (802 to 803) SpanInfo: {"start":782,"length":18} + >console.log(nameA) + >:=> (line 29, col 4) to (line 29, col 22) +-------------------------------- +31 >for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (804 to 882) SpanInfo: {"start":810,"length":22} + >name: nameA = "noName" + >:=> (line 31, col 6) to (line 31, col 28) +31 >for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (883 to 889) SpanInfo: {"start":884,"length":5} + >i = 0 + >:=> (line 31, col 80) to (line 31, col 85) +31 >for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (890 to 896) SpanInfo: {"start":891,"length":5} + >i < 1 + >:=> (line 31, col 87) to (line 31, col 92) +31 >for ({name: nameA = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (897 to 904) SpanInfo: {"start":898,"length":3} + >i++ + >:=> (line 31, col 94) to (line 31, col 97) +-------------------------------- +32 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (905 to 928) SpanInfo: {"start":909,"length":18} + >console.log(nameA) + >:=> (line 32, col 4) to (line 32, col 22) +-------------------------------- +33 >} + + ~~ => Pos: (929 to 930) SpanInfo: {"start":909,"length":18} + >console.log(nameA) + >:=> (line 32, col 4) to (line 32, col 22) +-------------------------------- +34 >for ({ + + ~~~~~~~ => Pos: (931 to 937) SpanInfo: {"start":942,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 35, col 4) to (line 38, col 46) +-------------------------------- +35 > skills: { + + ~~~~~~~~~~~ => Pos: (938 to 948) SpanInfo: {"start":942,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 35, col 4) to (line 38, col 46) +35 > skills: { + + ~~~ => Pos: (949 to 951) SpanInfo: {"start":960,"length":29} + >primary: primaryA = "primary" + >:=> (line 36, col 8) to (line 36, col 37) +-------------------------------- +36 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (952 to 990) SpanInfo: {"start":960,"length":29} + >primary: primaryA = "primary" + >:=> (line 36, col 8) to (line 36, col 37) +-------------------------------- +37 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (991 to 1034) SpanInfo: {"start":999,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 37, col 8) to (line 37, col 43) +-------------------------------- +38 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1035 to 1081) SpanInfo: {"start":999,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 37, col 8) to (line 37, col 43) +-------------------------------- +39 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (1082 to 1096) SpanInfo: {"start":942,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 35, col 4) to (line 38, col 46) +39 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1097 to 1103) SpanInfo: {"start":1098,"length":5} + >i = 0 + >:=> (line 39, col 16) to (line 39, col 21) +39 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1104 to 1110) SpanInfo: {"start":1105,"length":5} + >i < 1 + >:=> (line 39, col 23) to (line 39, col 28) +39 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1111 to 1118) SpanInfo: {"start":1112,"length":3} + >i++ + >:=> (line 39, col 30) to (line 39, col 33) +-------------------------------- +40 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1119 to 1145) SpanInfo: {"start":1123,"length":21} + >console.log(primaryA) + >:=> (line 40, col 4) to (line 40, col 25) +-------------------------------- +41 >} + + ~~ => Pos: (1146 to 1147) SpanInfo: {"start":1123,"length":21} + >console.log(primaryA) + >:=> (line 40, col 4) to (line 40, col 25) +-------------------------------- +42 >for ({ + + ~~~~~~~ => Pos: (1148 to 1154) SpanInfo: {"start":1159,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 43, col 4) to (line 46, col 46) +-------------------------------- +43 > skills: { + + ~~~~~~~~~~~ => Pos: (1155 to 1165) SpanInfo: {"start":1159,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 43, col 4) to (line 46, col 46) +43 > skills: { + + ~~~ => Pos: (1166 to 1168) SpanInfo: {"start":1177,"length":29} + >primary: primaryA = "primary" + >:=> (line 44, col 8) to (line 44, col 37) +-------------------------------- +44 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1169 to 1207) SpanInfo: {"start":1177,"length":29} + >primary: primaryA = "primary" + >:=> (line 44, col 8) to (line 44, col 37) +-------------------------------- +45 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1208 to 1251) SpanInfo: {"start":1216,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 45, col 8) to (line 45, col 43) +-------------------------------- +46 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1252 to 1298) SpanInfo: {"start":1216,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 45, col 8) to (line 45, col 43) +-------------------------------- +47 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (1299 to 1318) SpanInfo: {"start":1159,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 43, col 4) to (line 46, col 46) +47 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1319 to 1325) SpanInfo: {"start":1320,"length":5} + >i = 0 + >:=> (line 47, col 21) to (line 47, col 26) +47 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1326 to 1332) SpanInfo: {"start":1327,"length":5} + >i < 1 + >:=> (line 47, col 28) to (line 47, col 33) +47 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1333 to 1340) SpanInfo: {"start":1334,"length":3} + >i++ + >:=> (line 47, col 35) to (line 47, col 38) +-------------------------------- +48 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1341 to 1367) SpanInfo: {"start":1345,"length":21} + >console.log(primaryA) + >:=> (line 48, col 4) to (line 48, col 25) +-------------------------------- +49 >} + + ~~ => Pos: (1368 to 1369) SpanInfo: {"start":1345,"length":21} + >console.log(primaryA) + >:=> (line 48, col 4) to (line 48, col 25) +-------------------------------- +50 >for ({ + + ~~~~~~~ => Pos: (1370 to 1376) SpanInfo: {"start":1381,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 51, col 4) to (line 54, col 46) +-------------------------------- +51 > skills: { + + ~~~~~~~~~~~ => Pos: (1377 to 1387) SpanInfo: {"start":1381,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 51, col 4) to (line 54, col 46) +51 > skills: { + + ~~~ => Pos: (1388 to 1390) SpanInfo: {"start":1399,"length":29} + >primary: primaryA = "primary" + >:=> (line 52, col 8) to (line 52, col 37) +-------------------------------- +52 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1391 to 1429) SpanInfo: {"start":1399,"length":29} + >primary: primaryA = "primary" + >:=> (line 52, col 8) to (line 52, col 37) +-------------------------------- +53 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1430 to 1473) SpanInfo: {"start":1438,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 53, col 8) to (line 53, col 43) +-------------------------------- +54 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1474 to 1520) SpanInfo: {"start":1438,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 53, col 8) to (line 53, col 43) +-------------------------------- +55 >} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1521 to 1611) SpanInfo: {"start":1381,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 51, col 4) to (line 54, col 46) +-------------------------------- +56 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (1612 to 1621) SpanInfo: {"start":1616,"length":5} + >i = 0 + >:=> (line 56, col 4) to (line 56, col 9) +56 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1622 to 1628) SpanInfo: {"start":1623,"length":5} + >i < 1 + >:=> (line 56, col 11) to (line 56, col 16) +56 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (1629 to 1636) SpanInfo: {"start":1630,"length":3} + >i++ + >:=> (line 56, col 18) to (line 56, col 21) +-------------------------------- +57 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1637 to 1663) SpanInfo: {"start":1641,"length":21} + >console.log(primaryA) + >:=> (line 57, col 4) to (line 57, col 25) +-------------------------------- +58 >} + + ~~ => Pos: (1664 to 1665) SpanInfo: {"start":1641,"length":21} + >console.log(primaryA) + >:=> (line 57, col 4) to (line 57, col 25) +-------------------------------- +59 >for ({ name = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1666 to 1698) SpanInfo: {"start":1673,"length":15} + >name = "noName" + >:=> (line 59, col 7) to (line 59, col 22) +59 >for ({ name = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1699 to 1705) SpanInfo: {"start":1700,"length":5} + >i = 0 + >:=> (line 59, col 34) to (line 59, col 39) +59 >for ({ name = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1706 to 1712) SpanInfo: {"start":1707,"length":5} + >i < 1 + >:=> (line 59, col 41) to (line 59, col 46) +59 >for ({ name = "noName" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1713 to 1720) SpanInfo: {"start":1714,"length":3} + >i++ + >:=> (line 59, col 48) to (line 59, col 51) +-------------------------------- +60 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1721 to 1744) SpanInfo: {"start":1725,"length":18} + >console.log(nameA) + >:=> (line 60, col 4) to (line 60, col 22) +-------------------------------- +61 >} + + ~~ => Pos: (1745 to 1746) SpanInfo: {"start":1725,"length":18} + >console.log(nameA) + >:=> (line 60, col 4) to (line 60, col 22) +-------------------------------- +62 >for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1747 to 1784) SpanInfo: {"start":1754,"length":15} + >name = "noName" + >:=> (line 62, col 7) to (line 62, col 22) +62 >for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (1785 to 1791) SpanInfo: {"start":1786,"length":5} + >i = 0 + >:=> (line 62, col 39) to (line 62, col 44) +62 >for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1792 to 1798) SpanInfo: {"start":1793,"length":5} + >i < 1 + >:=> (line 62, col 46) to (line 62, col 51) +62 >for ({ name = "noName" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1799 to 1806) SpanInfo: {"start":1800,"length":3} + >i++ + >:=> (line 62, col 53) to (line 62, col 56) +-------------------------------- +63 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1807 to 1830) SpanInfo: {"start":1811,"length":18} + >console.log(nameA) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +64 >} + + ~~ => Pos: (1831 to 1832) SpanInfo: {"start":1811,"length":18} + >console.log(nameA) + >:=> (line 63, col 4) to (line 63, col 22) +-------------------------------- +65 >for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1833 to 1905) SpanInfo: {"start":1840,"length":15} + >name = "noName" + >:=> (line 65, col 7) to (line 65, col 22) +65 >for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1906 to 1912) SpanInfo: {"start":1907,"length":5} + >i = 0 + >:=> (line 65, col 74) to (line 65, col 79) +65 >for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (1913 to 1919) SpanInfo: {"start":1914,"length":5} + >i < 1 + >:=> (line 65, col 81) to (line 65, col 86) +65 >for ({ name = "noName" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (1920 to 1927) SpanInfo: {"start":1921,"length":3} + >i++ + >:=> (line 65, col 88) to (line 65, col 91) +-------------------------------- +66 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1928 to 1951) SpanInfo: {"start":1932,"length":18} + >console.log(nameA) + >:=> (line 66, col 4) to (line 66, col 22) +-------------------------------- +67 >} + + ~~ => Pos: (1952 to 1953) SpanInfo: {"start":1932,"length":18} + >console.log(nameA) + >:=> (line 66, col 4) to (line 66, col 22) +-------------------------------- +68 >for ({ + + ~~~~~~~ => Pos: (1954 to 1960) SpanInfo: {"start":1965,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 69, col 4) to (line 72, col 46) +-------------------------------- +69 > skills: { + + ~~~~~~~~~~~ => Pos: (1961 to 1971) SpanInfo: {"start":1965,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 69, col 4) to (line 72, col 46) +69 > skills: { + + ~~~ => Pos: (1972 to 1974) SpanInfo: {"start":1983,"length":19} + >primary = "primary" + >:=> (line 70, col 8) to (line 70, col 27) +-------------------------------- +70 > primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1975 to 2003) SpanInfo: {"start":1983,"length":19} + >primary = "primary" + >:=> (line 70, col 8) to (line 70, col 27) +-------------------------------- +71 > secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2004 to 2035) SpanInfo: {"start":2012,"length":23} + >secondary = "secondary" + >:=> (line 71, col 8) to (line 71, col 31) +-------------------------------- +72 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2036 to 2082) SpanInfo: {"start":2012,"length":23} + >secondary = "secondary" + >:=> (line 71, col 8) to (line 71, col 31) +-------------------------------- +73 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (2083 to 2097) SpanInfo: {"start":1965,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 69, col 4) to (line 72, col 46) +73 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2098 to 2104) SpanInfo: {"start":2099,"length":5} + >i = 0 + >:=> (line 73, col 16) to (line 73, col 21) +73 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2105 to 2111) SpanInfo: {"start":2106,"length":5} + >i < 1 + >:=> (line 73, col 23) to (line 73, col 28) +73 >} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2112 to 2119) SpanInfo: {"start":2113,"length":3} + >i++ + >:=> (line 73, col 30) to (line 73, col 33) +-------------------------------- +74 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2120 to 2146) SpanInfo: {"start":2124,"length":21} + >console.log(primaryA) + >:=> (line 74, col 4) to (line 74, col 25) +-------------------------------- +75 >} + + ~~ => Pos: (2147 to 2148) SpanInfo: {"start":2124,"length":21} + >console.log(primaryA) + >:=> (line 74, col 4) to (line 74, col 25) +-------------------------------- +76 >for ({ + + ~~~~~~~ => Pos: (2149 to 2155) SpanInfo: {"start":2160,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 77, col 4) to (line 80, col 46) +-------------------------------- +77 > skills: { + + ~~~~~~~~~~~ => Pos: (2156 to 2166) SpanInfo: {"start":2160,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 77, col 4) to (line 80, col 46) +77 > skills: { + + ~~~ => Pos: (2167 to 2169) SpanInfo: {"start":2178,"length":19} + >primary = "primary" + >:=> (line 78, col 8) to (line 78, col 27) +-------------------------------- +78 > primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2170 to 2198) SpanInfo: {"start":2178,"length":19} + >primary = "primary" + >:=> (line 78, col 8) to (line 78, col 27) +-------------------------------- +79 > secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2199 to 2230) SpanInfo: {"start":2207,"length":23} + >secondary = "secondary" + >:=> (line 79, col 8) to (line 79, col 31) +-------------------------------- +80 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2231 to 2277) SpanInfo: {"start":2207,"length":23} + >secondary = "secondary" + >:=> (line 79, col 8) to (line 79, col 31) +-------------------------------- +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (2278 to 2297) SpanInfo: {"start":2160,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 77, col 4) to (line 80, col 46) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2298 to 2304) SpanInfo: {"start":2299,"length":5} + >i = 0 + >:=> (line 81, col 21) to (line 81, col 26) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2305 to 2311) SpanInfo: {"start":2306,"length":5} + >i < 1 + >:=> (line 81, col 28) to (line 81, col 33) +81 >} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2312 to 2319) SpanInfo: {"start":2313,"length":3} + >i++ + >:=> (line 81, col 35) to (line 81, col 38) +-------------------------------- +82 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2320 to 2346) SpanInfo: {"start":2324,"length":21} + >console.log(primaryA) + >:=> (line 82, col 4) to (line 82, col 25) +-------------------------------- +83 >} + + ~~ => Pos: (2347 to 2348) SpanInfo: {"start":2324,"length":21} + >console.log(primaryA) + >:=> (line 82, col 4) to (line 82, col 25) +-------------------------------- +84 >for ({ + + ~~~~~~~ => Pos: (2349 to 2355) SpanInfo: {"start":2360,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 85, col 4) to (line 88, col 46) +-------------------------------- +85 > skills: { + + ~~~~~~~~~~~ => Pos: (2356 to 2366) SpanInfo: {"start":2360,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 85, col 4) to (line 88, col 46) +85 > skills: { + + ~~~ => Pos: (2367 to 2369) SpanInfo: {"start":2378,"length":19} + >primary = "primary" + >:=> (line 86, col 8) to (line 86, col 27) +-------------------------------- +86 > primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2370 to 2398) SpanInfo: {"start":2378,"length":19} + >primary = "primary" + >:=> (line 86, col 8) to (line 86, col 27) +-------------------------------- +87 > secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2399 to 2430) SpanInfo: {"start":2407,"length":23} + >secondary = "secondary" + >:=> (line 87, col 8) to (line 87, col 31) +-------------------------------- +88 > } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2431 to 2477) SpanInfo: {"start":2407,"length":23} + >secondary = "secondary" + >:=> (line 87, col 8) to (line 87, col 31) +-------------------------------- +89 >} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2478 to 2568) SpanInfo: {"start":2360,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 85, col 4) to (line 88, col 46) +-------------------------------- +90 > i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (2569 to 2578) SpanInfo: {"start":2573,"length":5} + >i = 0 + >:=> (line 90, col 4) to (line 90, col 9) +90 > i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (2579 to 2585) SpanInfo: {"start":2580,"length":5} + >i < 1 + >:=> (line 90, col 11) to (line 90, col 16) +90 > i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (2586 to 2593) SpanInfo: {"start":2587,"length":3} + >i++ + >:=> (line 90, col 18) to (line 90, col 21) +-------------------------------- +91 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2594 to 2620) SpanInfo: {"start":2598,"length":21} + >console.log(primaryA) + >:=> (line 91, col 4) to (line 91, col 25) +-------------------------------- +92 >} + + ~~ => Pos: (2621 to 2622) SpanInfo: {"start":2598,"length":21} + >console.log(primaryA) + >:=> (line 91, col 4) to (line 91, col 25) +-------------------------------- +93 >for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2623 to 2651) SpanInfo: {"start":2629,"length":22} + >name: nameA = "noName" + >:=> (line 93, col 6) to (line 93, col 28) +93 >for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2652 to 2686) SpanInfo: {"start":2653,"length":23} + >skill: skillA = "skill" + >:=> (line 93, col 30) to (line 93, col 53) +93 >for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2687 to 2693) SpanInfo: {"start":2688,"length":5} + >i = 0 + >:=> (line 93, col 65) to (line 93, col 70) +93 >for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2694 to 2700) SpanInfo: {"start":2695,"length":5} + >i < 1 + >:=> (line 93, col 72) to (line 93, col 77) +93 >for ({name: nameA = "noName", skill: skillA = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2701 to 2708) SpanInfo: {"start":2702,"length":3} + >i++ + >:=> (line 93, col 79) to (line 93, col 82) +-------------------------------- +94 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2709 to 2732) SpanInfo: {"start":2713,"length":18} + >console.log(nameA) + >:=> (line 94, col 4) to (line 94, col 22) +-------------------------------- +95 >} + + ~~ => Pos: (2733 to 2734) SpanInfo: {"start":2713,"length":18} + >console.log(nameA) + >:=> (line 94, col 4) to (line 94, col 22) +-------------------------------- +96 >for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2735 to 2763) SpanInfo: {"start":2741,"length":22} + >name: nameA = "noName" + >:=> (line 96, col 6) to (line 96, col 28) +96 >for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2764 to 2803) SpanInfo: {"start":2765,"length":23} + >skill: skillA = "skill" + >:=> (line 96, col 30) to (line 96, col 53) +96 >for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2804 to 2810) SpanInfo: {"start":2805,"length":5} + >i = 0 + >:=> (line 96, col 70) to (line 96, col 75) +96 >for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2811 to 2817) SpanInfo: {"start":2812,"length":5} + >i < 1 + >:=> (line 96, col 77) to (line 96, col 82) +96 >for ({name: nameA = "noName", skill: skillA = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2818 to 2825) SpanInfo: {"start":2819,"length":3} + >i++ + >:=> (line 96, col 84) to (line 96, col 87) +-------------------------------- +97 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2826 to 2849) SpanInfo: {"start":2830,"length":18} + >console.log(nameA) + >:=> (line 97, col 4) to (line 97, col 22) +-------------------------------- +98 >} + + ~~ => Pos: (2850 to 2851) SpanInfo: {"start":2830,"length":18} + >console.log(nameA) + >:=> (line 97, col 4) to (line 97, col 22) +-------------------------------- +99 >for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2852 to 2880) SpanInfo: {"start":2858,"length":22} + >name: nameA = "noName" + >:=> (line 99, col 6) to (line 99, col 28) +99 >for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2881 to 2955) SpanInfo: {"start":2882,"length":23} + >skill: skillA = "skill" + >:=> (line 99, col 30) to (line 99, col 53) +99 >for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2956 to 2962) SpanInfo: {"start":2957,"length":5} + >i = 0 + >:=> (line 99, col 105) to (line 99, col 110) +99 >for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (2963 to 2969) SpanInfo: {"start":2964,"length":5} + >i < 1 + >:=> (line 99, col 112) to (line 99, col 117) +99 >for ({name: nameA = "noName", skill: skillA = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (2970 to 2977) SpanInfo: {"start":2971,"length":3} + >i++ + >:=> (line 99, col 119) to (line 99, col 122) +-------------------------------- +100> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2978 to 3001) SpanInfo: {"start":2982,"length":18} + >console.log(nameA) + >:=> (line 100, col 4) to (line 100, col 22) +-------------------------------- +101>} + + ~~ => Pos: (3002 to 3003) SpanInfo: {"start":2982,"length":18} + >console.log(nameA) + >:=> (line 100, col 4) to (line 100, col 22) +-------------------------------- +102>for ({ + + ~~~~~~~ => Pos: (3004 to 3010) SpanInfo: {"start":3015,"length":22} + >name: nameA = "noName" + >:=> (line 103, col 4) to (line 103, col 26) +-------------------------------- +103> name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3011 to 3038) SpanInfo: {"start":3015,"length":22} + >name: nameA = "noName" + >:=> (line 103, col 4) to (line 103, col 26) +-------------------------------- +104> skills: { + + ~~~~~~~~~~~ => Pos: (3039 to 3049) SpanInfo: {"start":3043,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 104, col 4) to (line 107, col 46) +104> skills: { + + ~~~ => Pos: (3050 to 3052) SpanInfo: {"start":3061,"length":29} + >primary: primaryA = "primary" + >:=> (line 105, col 8) to (line 105, col 37) +-------------------------------- +105> primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3053 to 3091) SpanInfo: {"start":3061,"length":29} + >primary: primaryA = "primary" + >:=> (line 105, col 8) to (line 105, col 37) +-------------------------------- +106> secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3092 to 3135) SpanInfo: {"start":3100,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 106, col 8) to (line 106, col 43) +-------------------------------- +107> } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3136 to 3182) SpanInfo: {"start":3100,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 106, col 8) to (line 106, col 43) +-------------------------------- +108>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (3183 to 3197) SpanInfo: {"start":3043,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 104, col 4) to (line 107, col 46) +108>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (3198 to 3204) SpanInfo: {"start":3199,"length":5} + >i = 0 + >:=> (line 108, col 16) to (line 108, col 21) +108>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (3205 to 3211) SpanInfo: {"start":3206,"length":5} + >i < 1 + >:=> (line 108, col 23) to (line 108, col 28) +108>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (3212 to 3219) SpanInfo: {"start":3213,"length":3} + >i++ + >:=> (line 108, col 30) to (line 108, col 33) +-------------------------------- +109> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3220 to 3246) SpanInfo: {"start":3224,"length":21} + >console.log(primaryA) + >:=> (line 109, col 4) to (line 109, col 25) +-------------------------------- +110>} + + ~~ => Pos: (3247 to 3248) SpanInfo: {"start":3224,"length":21} + >console.log(primaryA) + >:=> (line 109, col 4) to (line 109, col 25) +-------------------------------- +111>for ({ + + ~~~~~~~ => Pos: (3249 to 3255) SpanInfo: {"start":3260,"length":22} + >name: nameA = "noName" + >:=> (line 112, col 4) to (line 112, col 26) +-------------------------------- +112> name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3256 to 3283) SpanInfo: {"start":3260,"length":22} + >name: nameA = "noName" + >:=> (line 112, col 4) to (line 112, col 26) +-------------------------------- +113> skills: { + + ~~~~~~~~~~~ => Pos: (3284 to 3294) SpanInfo: {"start":3288,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 113, col 4) to (line 116, col 46) +113> skills: { + + ~~~ => Pos: (3295 to 3297) SpanInfo: {"start":3306,"length":29} + >primary: primaryA = "primary" + >:=> (line 114, col 8) to (line 114, col 37) +-------------------------------- +114> primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3298 to 3336) SpanInfo: {"start":3306,"length":29} + >primary: primaryA = "primary" + >:=> (line 114, col 8) to (line 114, col 37) +-------------------------------- +115> secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3337 to 3380) SpanInfo: {"start":3345,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 115, col 8) to (line 115, col 43) +-------------------------------- +116> } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3381 to 3427) SpanInfo: {"start":3345,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 115, col 8) to (line 115, col 43) +-------------------------------- +117>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (3428 to 3447) SpanInfo: {"start":3288,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 113, col 4) to (line 116, col 46) +117>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (3448 to 3454) SpanInfo: {"start":3449,"length":5} + >i = 0 + >:=> (line 117, col 21) to (line 117, col 26) +117>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (3455 to 3461) SpanInfo: {"start":3456,"length":5} + >i < 1 + >:=> (line 117, col 28) to (line 117, col 33) +117>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (3462 to 3469) SpanInfo: {"start":3463,"length":3} + >i++ + >:=> (line 117, col 35) to (line 117, col 38) +-------------------------------- +118> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3470 to 3496) SpanInfo: {"start":3474,"length":21} + >console.log(primaryA) + >:=> (line 118, col 4) to (line 118, col 25) +-------------------------------- +119>} + + ~~ => Pos: (3497 to 3498) SpanInfo: {"start":3474,"length":21} + >console.log(primaryA) + >:=> (line 118, col 4) to (line 118, col 25) +-------------------------------- +120>for ({ + + ~~~~~~~ => Pos: (3499 to 3505) SpanInfo: {"start":3510,"length":22} + >name: nameA = "noName" + >:=> (line 121, col 4) to (line 121, col 26) +-------------------------------- +121> name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3506 to 3533) SpanInfo: {"start":3510,"length":22} + >name: nameA = "noName" + >:=> (line 121, col 4) to (line 121, col 26) +-------------------------------- +122> skills: { + + ~~~~~~~~~~~ => Pos: (3534 to 3544) SpanInfo: {"start":3538,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 122, col 4) to (line 125, col 46) +122> skills: { + + ~~~ => Pos: (3545 to 3547) SpanInfo: {"start":3556,"length":29} + >primary: primaryA = "primary" + >:=> (line 123, col 8) to (line 123, col 37) +-------------------------------- +123> primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3548 to 3586) SpanInfo: {"start":3556,"length":29} + >primary: primaryA = "primary" + >:=> (line 123, col 8) to (line 123, col 37) +-------------------------------- +124> secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3587 to 3630) SpanInfo: {"start":3595,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 124, col 8) to (line 124, col 43) +-------------------------------- +125> } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3631 to 3677) SpanInfo: {"start":3595,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 124, col 8) to (line 124, col 43) +-------------------------------- +126>} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3678 to 3768) SpanInfo: {"start":3538,"length":139} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 122, col 4) to (line 125, col 46) +-------------------------------- +127> i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (3769 to 3778) SpanInfo: {"start":3773,"length":5} + >i = 0 + >:=> (line 127, col 4) to (line 127, col 9) +127> i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (3779 to 3785) SpanInfo: {"start":3780,"length":5} + >i < 1 + >:=> (line 127, col 11) to (line 127, col 16) +127> i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (3786 to 3793) SpanInfo: {"start":3787,"length":3} + >i++ + >:=> (line 127, col 18) to (line 127, col 21) +-------------------------------- +128> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3794 to 3820) SpanInfo: {"start":3798,"length":21} + >console.log(primaryA) + >:=> (line 128, col 4) to (line 128, col 25) +-------------------------------- +129>} + + ~~ => Pos: (3821 to 3822) SpanInfo: {"start":3798,"length":21} + >console.log(primaryA) + >:=> (line 128, col 4) to (line 128, col 25) +-------------------------------- +130>for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3823 to 3845) SpanInfo: {"start":3830,"length":15} + >name = "noName" + >:=> (line 130, col 7) to (line 130, col 22) +130>for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3846 to 3872) SpanInfo: {"start":3847,"length":15} + >skill = "skill" + >:=> (line 130, col 24) to (line 130, col 39) +130>for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3873 to 3879) SpanInfo: {"start":3874,"length":5} + >i = 0 + >:=> (line 130, col 51) to (line 130, col 56) +130>for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3880 to 3886) SpanInfo: {"start":3881,"length":5} + >i < 1 + >:=> (line 130, col 58) to (line 130, col 63) +130>for ({ name = "noName", skill = "skill" } = robot, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3887 to 3894) SpanInfo: {"start":3888,"length":3} + >i++ + >:=> (line 130, col 65) to (line 130, col 68) +-------------------------------- +131> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3895 to 3918) SpanInfo: {"start":3899,"length":18} + >console.log(nameA) + >:=> (line 131, col 4) to (line 131, col 22) +-------------------------------- +132>} + + ~~ => Pos: (3919 to 3920) SpanInfo: {"start":3899,"length":18} + >console.log(nameA) + >:=> (line 131, col 4) to (line 131, col 22) +-------------------------------- +133>for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3921 to 3943) SpanInfo: {"start":3928,"length":15} + >name = "noName" + >:=> (line 133, col 7) to (line 133, col 22) +133>for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3944 to 3975) SpanInfo: {"start":3945,"length":15} + >skill = "skill" + >:=> (line 133, col 24) to (line 133, col 39) +133>for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3976 to 3982) SpanInfo: {"start":3977,"length":5} + >i = 0 + >:=> (line 133, col 56) to (line 133, col 61) +133>for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (3983 to 3989) SpanInfo: {"start":3984,"length":5} + >i < 1 + >:=> (line 133, col 63) to (line 133, col 68) +133>for ({ name = "noName", skill = "skill" } = getRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (3990 to 3997) SpanInfo: {"start":3991,"length":3} + >i++ + >:=> (line 133, col 70) to (line 133, col 73) +-------------------------------- +134> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3998 to 4021) SpanInfo: {"start":4002,"length":18} + >console.log(nameA) + >:=> (line 134, col 4) to (line 134, col 22) +-------------------------------- +135>} + + ~~ => Pos: (4022 to 4023) SpanInfo: {"start":4002,"length":18} + >console.log(nameA) + >:=> (line 134, col 4) to (line 134, col 22) +-------------------------------- +136>for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4024 to 4046) SpanInfo: {"start":4031,"length":15} + >name = "noName" + >:=> (line 136, col 7) to (line 136, col 22) +136>for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4047 to 4113) SpanInfo: {"start":4048,"length":15} + >skill = "skill" + >:=> (line 136, col 24) to (line 136, col 39) +136>for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (4114 to 4120) SpanInfo: {"start":4115,"length":5} + >i = 0 + >:=> (line 136, col 91) to (line 136, col 96) +136>for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~=> Pos: (4121 to 4127) SpanInfo: {"start":4122,"length":5} + >i < 1 + >:=> (line 136, col 98) to (line 136, col 103) +136>for ({ name = "noName", skill = "skill" } = { name: "trimmer", skill: "trimming" }, i = 0; i < 1; i++) { + + ~~~~~~~~=> Pos: (4128 to 4135) SpanInfo: {"start":4129,"length":3} + >i++ + >:=> (line 136, col 105) to (line 136, col 108) +-------------------------------- +137> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4136 to 4159) SpanInfo: {"start":4140,"length":18} + >console.log(nameA) + >:=> (line 137, col 4) to (line 137, col 22) +-------------------------------- +138>} + + ~~ => Pos: (4160 to 4161) SpanInfo: {"start":4140,"length":18} + >console.log(nameA) + >:=> (line 137, col 4) to (line 137, col 22) +-------------------------------- +139>for ({ + + ~~~~~~~ => Pos: (4162 to 4168) SpanInfo: {"start":4173,"length":15} + >name = "noName" + >:=> (line 140, col 4) to (line 140, col 19) +-------------------------------- +140> name = "noName", + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4169 to 4189) SpanInfo: {"start":4173,"length":15} + >name = "noName" + >:=> (line 140, col 4) to (line 140, col 19) +-------------------------------- +141> skills: { + + ~~~~~~~~~~~ => Pos: (4190 to 4200) SpanInfo: {"start":4194,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 141, col 4) to (line 144, col 46) +141> skills: { + + ~~~ => Pos: (4201 to 4203) SpanInfo: {"start":4212,"length":19} + >primary = "primary" + >:=> (line 142, col 8) to (line 142, col 27) +-------------------------------- +142> primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4204 to 4232) SpanInfo: {"start":4212,"length":19} + >primary = "primary" + >:=> (line 142, col 8) to (line 142, col 27) +-------------------------------- +143> secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4233 to 4264) SpanInfo: {"start":4241,"length":23} + >secondary = "secondary" + >:=> (line 143, col 8) to (line 143, col 31) +-------------------------------- +144> } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4265 to 4311) SpanInfo: {"start":4241,"length":23} + >secondary = "secondary" + >:=> (line 143, col 8) to (line 143, col 31) +-------------------------------- +145>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~ => Pos: (4312 to 4326) SpanInfo: {"start":4194,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 141, col 4) to (line 144, col 46) +145>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (4327 to 4333) SpanInfo: {"start":4328,"length":5} + >i = 0 + >:=> (line 145, col 16) to (line 145, col 21) +145>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (4334 to 4340) SpanInfo: {"start":4335,"length":5} + >i < 1 + >:=> (line 145, col 23) to (line 145, col 28) +145>} = multiRobot, i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (4341 to 4348) SpanInfo: {"start":4342,"length":3} + >i++ + >:=> (line 145, col 30) to (line 145, col 33) +-------------------------------- +146> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4349 to 4375) SpanInfo: {"start":4353,"length":21} + >console.log(primaryA) + >:=> (line 146, col 4) to (line 146, col 25) +-------------------------------- +147>} + + ~~ => Pos: (4376 to 4377) SpanInfo: {"start":4353,"length":21} + >console.log(primaryA) + >:=> (line 146, col 4) to (line 146, col 25) +-------------------------------- +148>for ({ + + ~~~~~~~ => Pos: (4378 to 4384) SpanInfo: {"start":4389,"length":15} + >name = "noName" + >:=> (line 149, col 4) to (line 149, col 19) +-------------------------------- +149> name = "noName", + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4385 to 4405) SpanInfo: {"start":4389,"length":15} + >name = "noName" + >:=> (line 149, col 4) to (line 149, col 19) +-------------------------------- +150> skills: { + + ~~~~~~~~~~~ => Pos: (4406 to 4416) SpanInfo: {"start":4410,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 150, col 4) to (line 153, col 46) +150> skills: { + + ~~~ => Pos: (4417 to 4419) SpanInfo: {"start":4428,"length":19} + >primary = "primary" + >:=> (line 151, col 8) to (line 151, col 27) +-------------------------------- +151> primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4420 to 4448) SpanInfo: {"start":4428,"length":19} + >primary = "primary" + >:=> (line 151, col 8) to (line 151, col 27) +-------------------------------- +152> secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4449 to 4480) SpanInfo: {"start":4457,"length":23} + >secondary = "secondary" + >:=> (line 152, col 8) to (line 152, col 31) +-------------------------------- +153> } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4481 to 4527) SpanInfo: {"start":4457,"length":23} + >secondary = "secondary" + >:=> (line 152, col 8) to (line 152, col 31) +-------------------------------- +154>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~~~~~~~~~~~~~ => Pos: (4528 to 4547) SpanInfo: {"start":4410,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 150, col 4) to (line 153, col 46) +154>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (4548 to 4554) SpanInfo: {"start":4549,"length":5} + >i = 0 + >:=> (line 154, col 21) to (line 154, col 26) +154>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (4555 to 4561) SpanInfo: {"start":4556,"length":5} + >i < 1 + >:=> (line 154, col 28) to (line 154, col 33) +154>} = getMultiRobot(), i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (4562 to 4569) SpanInfo: {"start":4563,"length":3} + >i++ + >:=> (line 154, col 35) to (line 154, col 38) +-------------------------------- +155> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4570 to 4596) SpanInfo: {"start":4574,"length":21} + >console.log(primaryA) + >:=> (line 155, col 4) to (line 155, col 25) +-------------------------------- +156>} + + ~~ => Pos: (4597 to 4598) SpanInfo: {"start":4574,"length":21} + >console.log(primaryA) + >:=> (line 155, col 4) to (line 155, col 25) +-------------------------------- +157>for ({ + + ~~~~~~~ => Pos: (4599 to 4605) SpanInfo: {"start":4610,"length":15} + >name = "noName" + >:=> (line 158, col 4) to (line 158, col 19) +-------------------------------- +158> name = "noName", + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4606 to 4626) SpanInfo: {"start":4610,"length":15} + >name = "noName" + >:=> (line 158, col 4) to (line 158, col 19) +-------------------------------- +159> skills: { + + ~~~~~~~~~~~ => Pos: (4627 to 4637) SpanInfo: {"start":4631,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 159, col 4) to (line 162, col 46) +159> skills: { + + ~~~ => Pos: (4638 to 4640) SpanInfo: {"start":4649,"length":19} + >primary = "primary" + >:=> (line 160, col 8) to (line 160, col 27) +-------------------------------- +160> primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4641 to 4669) SpanInfo: {"start":4649,"length":19} + >primary = "primary" + >:=> (line 160, col 8) to (line 160, col 27) +-------------------------------- +161> secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4670 to 4701) SpanInfo: {"start":4678,"length":23} + >secondary = "secondary" + >:=> (line 161, col 8) to (line 161, col 31) +-------------------------------- +162> } = { primary: "none", secondary: "none" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4702 to 4748) SpanInfo: {"start":4678,"length":23} + >secondary = "secondary" + >:=> (line 161, col 8) to (line 161, col 31) +-------------------------------- +163>} = { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4749 to 4839) SpanInfo: {"start":4631,"length":117} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "none", secondary: "none" } + >:=> (line 159, col 4) to (line 162, col 46) +-------------------------------- +164> i = 0; i < 1; i++) { + + ~~~~~~~~~~ => Pos: (4840 to 4849) SpanInfo: {"start":4844,"length":5} + >i = 0 + >:=> (line 164, col 4) to (line 164, col 9) +164> i = 0; i < 1; i++) { + + ~~~~~~~ => Pos: (4850 to 4856) SpanInfo: {"start":4851,"length":5} + >i < 1 + >:=> (line 164, col 11) to (line 164, col 16) +164> i = 0; i < 1; i++) { + + ~~~~~~~~ => Pos: (4857 to 4864) SpanInfo: {"start":4858,"length":3} + >i++ + >:=> (line 164, col 18) to (line 164, col 21) +-------------------------------- +165> console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4865 to 4891) SpanInfo: {"start":4869,"length":21} + >console.log(primaryA) + >:=> (line 165, col 4) to (line 165, col 25) +-------------------------------- +166>} + ~ => Pos: (4892 to 4892) SpanInfo: {"start":4869,"length":21} + >console.log(primaryA) + >:=> (line 165, col 4) to (line 165, col 25) \ No newline at end of file From 34ddaef44ce07c98870ed2cebd5b623449184356 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 22 Dec 2015 16:14:55 -0800 Subject: [PATCH 096/164] Remove new lint from services.ts --- src/services/services.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/services.ts b/src/services/services.ts index 0ffd1138cba..0fd4df19907 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -469,7 +469,8 @@ namespace ts { function pushDocCommentLineText(docComments: SymbolDisplayPart[], text: string, blankLineCount: number) { // Add the empty lines in between texts - while (blankLineCount--) { + while (blankLineCount) { + blankLineCount--; docComments.push(textPart("")); } From 05ef3d52629a02ab66f495951b64f8eaffba6343 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 22 Dec 2015 16:18:05 -0800 Subject: [PATCH 097/164] Add test cases for breakpoint validation in for of statement with object literal destructuring assignment --- ...signmentForOfObjectBindingPattern.baseline | 943 +++++++++++++ ...ObjectBindingPatternDefaultValues.baseline | 1223 +++++++++++++++++ ...ringAssignmentForOfObjectBindingPattern.ts | 104 ++ ...tForOfObjectBindingPatternDefaultValues.ts | 159 +++ 4 files changed, 2429 insertions(+) create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPattern.baseline create mode 100644 tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPatternDefaultValues.baseline create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPattern.ts create mode 100644 tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPatternDefaultValues.ts diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPattern.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPattern.baseline new file mode 100644 index 00000000000..b303f33026a --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPattern.baseline @@ -0,0 +1,943 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 186) SpanInfo: undefined +-------------------------------- +12 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (187 to 213) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (214 to 220) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (221 to 222) SpanInfo: undefined +-------------------------------- +15 >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (223 to 322) SpanInfo: {"start":223,"length":98} + >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 15, col 0) to (line 15, col 98) +-------------------------------- +16 >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (323 to 424) SpanInfo: {"start":323,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +17 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (425 to 504) SpanInfo: {"start":323,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +18 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (505 to 527) SpanInfo: {"start":532,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +19 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (528 to 546) SpanInfo: {"start":532,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +20 >} + + ~~ => Pos: (547 to 548) SpanInfo: {"start":547,"length":1} + >} + >:=> (line 20, col 0) to (line 20, col 1) +-------------------------------- +21 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (549 to 576) SpanInfo: {"start":581,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +22 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (577 to 600) SpanInfo: {"start":581,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (601 to 602) SpanInfo: {"start":601,"length":1} + >} + >:=> (line 23, col 0) to (line 23, col 1) +-------------------------------- +24 >let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (603 to 686) SpanInfo: undefined +-------------------------------- +25 >let name: string, primary: string, secondary: string, skill: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (687 to 755) SpanInfo: undefined +-------------------------------- +26 >for ({name: nameA } of robots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (756 to 774) SpanInfo: {"start":762,"length":11} + >name: nameA + >:=> (line 26, col 6) to (line 26, col 17) +26 >for ({name: nameA } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (775 to 788) SpanInfo: {"start":779,"length":6} + >robots + >:=> (line 26, col 23) to (line 26, col 29) +-------------------------------- +27 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (789 to 812) SpanInfo: {"start":793,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +28 >} + + ~~ => Pos: (813 to 814) SpanInfo: {"start":793,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +29 >for ({name: nameA } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (815 to 833) SpanInfo: {"start":821,"length":11} + >name: nameA + >:=> (line 29, col 6) to (line 29, col 17) +29 >for ({name: nameA } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (834 to 852) SpanInfo: {"start":838,"length":11} + >getRobots() + >:=> (line 29, col 23) to (line 29, col 34) +-------------------------------- +30 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (853 to 876) SpanInfo: {"start":857,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +31 >} + + ~~ => Pos: (877 to 878) SpanInfo: {"start":857,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +32 >for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (879 to 897) SpanInfo: {"start":885,"length":11} + >name: nameA + >:=> (line 32, col 6) to (line 32, col 17) +32 >for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (898 to 981) SpanInfo: {"start":902,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 32, col 23) to (line 32, col 99) +-------------------------------- +33 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (982 to 1005) SpanInfo: {"start":986,"length":18} + >console.log(nameA) + >:=> (line 33, col 4) to (line 33, col 22) +-------------------------------- +34 >} + + ~~ => Pos: (1006 to 1007) SpanInfo: {"start":986,"length":18} + >console.log(nameA) + >:=> (line 33, col 4) to (line 33, col 22) +-------------------------------- +35 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~ => Pos: (1008 to 1021) SpanInfo: {"start":1015,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 35, col 7) to (line 35, col 59) +35 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1022 to 1042) SpanInfo: {"start":1025,"length":17} + >primary: primaryA + >:=> (line 35, col 17) to (line 35, col 34) +35 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1043 to 1066) SpanInfo: {"start":1044,"length":21} + >secondary: secondaryA + >:=> (line 35, col 36) to (line 35, col 57) +35 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~=> Pos: (1067 to 1068) SpanInfo: {"start":1015,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 35, col 7) to (line 35, col 59) +35 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1069 to 1087) SpanInfo: {"start":1073,"length":11} + >multiRobots + >:=> (line 35, col 65) to (line 35, col 76) +-------------------------------- +36 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1088 to 1114) SpanInfo: {"start":1092,"length":21} + >console.log(primaryA) + >:=> (line 36, col 4) to (line 36, col 25) +-------------------------------- +37 >} + + ~~ => Pos: (1115 to 1116) SpanInfo: {"start":1092,"length":21} + >console.log(primaryA) + >:=> (line 36, col 4) to (line 36, col 25) +-------------------------------- +38 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~ => Pos: (1117 to 1130) SpanInfo: {"start":1124,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 38, col 7) to (line 38, col 59) +38 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1131 to 1151) SpanInfo: {"start":1134,"length":17} + >primary: primaryA + >:=> (line 38, col 17) to (line 38, col 34) +38 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1152 to 1175) SpanInfo: {"start":1153,"length":21} + >secondary: secondaryA + >:=> (line 38, col 36) to (line 38, col 57) +38 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~=> Pos: (1176 to 1177) SpanInfo: {"start":1124,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 38, col 7) to (line 38, col 59) +38 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1178 to 1201) SpanInfo: {"start":1182,"length":16} + >getMultiRobots() + >:=> (line 38, col 65) to (line 38, col 81) +-------------------------------- +39 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1202 to 1228) SpanInfo: {"start":1206,"length":21} + >console.log(primaryA) + >:=> (line 39, col 4) to (line 39, col 25) +-------------------------------- +40 >} + + ~~ => Pos: (1229 to 1230) SpanInfo: {"start":1206,"length":21} + >console.log(primaryA) + >:=> (line 39, col 4) to (line 39, col 25) +-------------------------------- +41 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~ => Pos: (1231 to 1244) SpanInfo: {"start":1238,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 41, col 7) to (line 41, col 59) +41 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (1245 to 1265) SpanInfo: {"start":1248,"length":17} + >primary: primaryA + >:=> (line 41, col 17) to (line 41, col 34) +41 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1266 to 1289) SpanInfo: {"start":1267,"length":21} + >secondary: secondaryA + >:=> (line 41, col 36) to (line 41, col 57) +41 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~=> Pos: (1290 to 1291) SpanInfo: {"start":1238,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 41, col 7) to (line 41, col 59) +41 >for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1292 to 1365) SpanInfo: {"start":1296,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 41, col 65) to (line 42, col 78) +-------------------------------- +42 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1366 to 1447) SpanInfo: {"start":1296,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 41, col 65) to (line 42, col 78) +-------------------------------- +43 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1448 to 1474) SpanInfo: {"start":1452,"length":21} + >console.log(primaryA) + >:=> (line 43, col 4) to (line 43, col 25) +-------------------------------- +44 >} + + ~~ => Pos: (1475 to 1476) SpanInfo: {"start":1452,"length":21} + >console.log(primaryA) + >:=> (line 43, col 4) to (line 43, col 25) +-------------------------------- +45 >for ({name } of robots) { + + ~~~~~~~~~~~~ => Pos: (1477 to 1488) SpanInfo: {"start":1483,"length":4} + >name + >:=> (line 45, col 6) to (line 45, col 10) +45 >for ({name } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1489 to 1502) SpanInfo: {"start":1493,"length":6} + >robots + >:=> (line 45, col 16) to (line 45, col 22) +-------------------------------- +46 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1503 to 1526) SpanInfo: {"start":1507,"length":18} + >console.log(nameA) + >:=> (line 46, col 4) to (line 46, col 22) +-------------------------------- +47 >} + + ~~ => Pos: (1527 to 1528) SpanInfo: {"start":1507,"length":18} + >console.log(nameA) + >:=> (line 46, col 4) to (line 46, col 22) +-------------------------------- +48 >for ({name } of getRobots()) { + + ~~~~~~~~~~~~ => Pos: (1529 to 1540) SpanInfo: {"start":1535,"length":4} + >name + >:=> (line 48, col 6) to (line 48, col 10) +48 >for ({name } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1541 to 1559) SpanInfo: {"start":1545,"length":11} + >getRobots() + >:=> (line 48, col 16) to (line 48, col 27) +-------------------------------- +49 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1560 to 1583) SpanInfo: {"start":1564,"length":18} + >console.log(nameA) + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +50 >} + + ~~ => Pos: (1584 to 1585) SpanInfo: {"start":1564,"length":18} + >console.log(nameA) + >:=> (line 49, col 4) to (line 49, col 22) +-------------------------------- +51 >for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~ => Pos: (1586 to 1597) SpanInfo: {"start":1592,"length":4} + >name + >:=> (line 51, col 6) to (line 51, col 10) +51 >for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1598 to 1681) SpanInfo: {"start":1602,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 51, col 16) to (line 51, col 92) +-------------------------------- +52 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1682 to 1705) SpanInfo: {"start":1686,"length":18} + >console.log(nameA) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +53 >} + + ~~ => Pos: (1706 to 1707) SpanInfo: {"start":1686,"length":18} + >console.log(nameA) + >:=> (line 52, col 4) to (line 52, col 22) +-------------------------------- +54 >for ({ skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~~~~ => Pos: (1708 to 1721) SpanInfo: {"start":1715,"length":30} + >skills: { primary, secondary } + >:=> (line 54, col 7) to (line 54, col 37) +54 >for ({ skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~ => Pos: (1722 to 1732) SpanInfo: {"start":1725,"length":7} + >primary + >:=> (line 54, col 17) to (line 54, col 24) +54 >for ({ skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~~ => Pos: (1733 to 1744) SpanInfo: {"start":1734,"length":9} + >secondary + >:=> (line 54, col 26) to (line 54, col 35) +54 >for ({ skills: { primary, secondary } } of multiRobots) { + + ~~ => Pos: (1745 to 1746) SpanInfo: {"start":1715,"length":30} + >skills: { primary, secondary } + >:=> (line 54, col 7) to (line 54, col 37) +54 >for ({ skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1747 to 1765) SpanInfo: {"start":1751,"length":11} + >multiRobots + >:=> (line 54, col 43) to (line 54, col 54) +-------------------------------- +55 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1766 to 1792) SpanInfo: {"start":1770,"length":21} + >console.log(primaryA) + >:=> (line 55, col 4) to (line 55, col 25) +-------------------------------- +56 >} + + ~~ => Pos: (1793 to 1794) SpanInfo: {"start":1770,"length":21} + >console.log(primaryA) + >:=> (line 55, col 4) to (line 55, col 25) +-------------------------------- +57 >for ({ skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~ => Pos: (1795 to 1808) SpanInfo: {"start":1802,"length":30} + >skills: { primary, secondary } + >:=> (line 57, col 7) to (line 57, col 37) +57 >for ({ skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~ => Pos: (1809 to 1819) SpanInfo: {"start":1812,"length":7} + >primary + >:=> (line 57, col 17) to (line 57, col 24) +57 >for ({ skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~~ => Pos: (1820 to 1831) SpanInfo: {"start":1821,"length":9} + >secondary + >:=> (line 57, col 26) to (line 57, col 35) +57 >for ({ skills: { primary, secondary } } of getMultiRobots()) { + + ~~ => Pos: (1832 to 1833) SpanInfo: {"start":1802,"length":30} + >skills: { primary, secondary } + >:=> (line 57, col 7) to (line 57, col 37) +57 >for ({ skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1834 to 1857) SpanInfo: {"start":1838,"length":16} + >getMultiRobots() + >:=> (line 57, col 43) to (line 57, col 59) +-------------------------------- +58 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1858 to 1884) SpanInfo: {"start":1862,"length":21} + >console.log(primaryA) + >:=> (line 58, col 4) to (line 58, col 25) +-------------------------------- +59 >} + + ~~ => Pos: (1885 to 1886) SpanInfo: {"start":1862,"length":21} + >console.log(primaryA) + >:=> (line 58, col 4) to (line 58, col 25) +-------------------------------- +60 >for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~ => Pos: (1887 to 1900) SpanInfo: {"start":1894,"length":30} + >skills: { primary, secondary } + >:=> (line 60, col 7) to (line 60, col 37) +60 >for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~ => Pos: (1901 to 1911) SpanInfo: {"start":1904,"length":7} + >primary + >:=> (line 60, col 17) to (line 60, col 24) +60 >for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~ => Pos: (1912 to 1923) SpanInfo: {"start":1913,"length":9} + >secondary + >:=> (line 60, col 26) to (line 60, col 35) +60 >for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~ => Pos: (1924 to 1925) SpanInfo: {"start":1894,"length":30} + >skills: { primary, secondary } + >:=> (line 60, col 7) to (line 60, col 37) +60 >for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1926 to 1999) SpanInfo: {"start":1930,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 60, col 43) to (line 61, col 78) +-------------------------------- +61 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2000 to 2081) SpanInfo: {"start":1930,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 60, col 43) to (line 61, col 78) +-------------------------------- +62 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2082 to 2108) SpanInfo: {"start":2086,"length":21} + >console.log(primaryA) + >:=> (line 62, col 4) to (line 62, col 25) +-------------------------------- +63 >} + + ~~ => Pos: (2109 to 2110) SpanInfo: {"start":2086,"length":21} + >console.log(primaryA) + >:=> (line 62, col 4) to (line 62, col 25) +-------------------------------- +64 >for ({name: nameA, skill: skillA } of robots) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (2111 to 2128) SpanInfo: {"start":2117,"length":11} + >name: nameA + >:=> (line 64, col 6) to (line 64, col 17) +64 >for ({name: nameA, skill: skillA } of robots) { + + ~~~~~~~~~~~~~~~~ => Pos: (2129 to 2144) SpanInfo: {"start":2130,"length":13} + >skill: skillA + >:=> (line 64, col 19) to (line 64, col 32) +64 >for ({name: nameA, skill: skillA } of robots) { + + ~~~~~~~~~~~~~~=> Pos: (2145 to 2158) SpanInfo: {"start":2149,"length":6} + >robots + >:=> (line 64, col 38) to (line 64, col 44) +-------------------------------- +65 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2159 to 2182) SpanInfo: {"start":2163,"length":18} + >console.log(nameA) + >:=> (line 65, col 4) to (line 65, col 22) +-------------------------------- +66 >} + + ~~ => Pos: (2183 to 2184) SpanInfo: {"start":2163,"length":18} + >console.log(nameA) + >:=> (line 65, col 4) to (line 65, col 22) +-------------------------------- +67 >for ({name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (2185 to 2202) SpanInfo: {"start":2191,"length":11} + >name: nameA + >:=> (line 67, col 6) to (line 67, col 17) +67 >for ({name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~~~~~~~~~ => Pos: (2203 to 2218) SpanInfo: {"start":2204,"length":13} + >skill: skillA + >:=> (line 67, col 19) to (line 67, col 32) +67 >for ({name: nameA, skill: skillA } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2219 to 2237) SpanInfo: {"start":2223,"length":11} + >getRobots() + >:=> (line 67, col 38) to (line 67, col 49) +-------------------------------- +68 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2238 to 2261) SpanInfo: {"start":2242,"length":18} + >console.log(nameA) + >:=> (line 68, col 4) to (line 68, col 22) +-------------------------------- +69 >} + + ~~ => Pos: (2262 to 2263) SpanInfo: {"start":2242,"length":18} + >console.log(nameA) + >:=> (line 68, col 4) to (line 68, col 22) +-------------------------------- +70 >for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (2264 to 2281) SpanInfo: {"start":2270,"length":11} + >name: nameA + >:=> (line 70, col 6) to (line 70, col 17) +70 >for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~ => Pos: (2282 to 2297) SpanInfo: {"start":2283,"length":13} + >skill: skillA + >:=> (line 70, col 19) to (line 70, col 32) +70 >for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2298 to 2381) SpanInfo: {"start":2302,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 70, col 38) to (line 70, col 114) +-------------------------------- +71 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2382 to 2405) SpanInfo: {"start":2386,"length":18} + >console.log(nameA) + >:=> (line 71, col 4) to (line 71, col 22) +-------------------------------- +72 >} + + ~~ => Pos: (2406 to 2407) SpanInfo: {"start":2386,"length":18} + >console.log(nameA) + >:=> (line 71, col 4) to (line 71, col 22) +-------------------------------- +73 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (2408 to 2425) SpanInfo: {"start":2414,"length":11} + >name: nameA + >:=> (line 73, col 6) to (line 73, col 17) +73 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~ => Pos: (2426 to 2433) SpanInfo: {"start":2427,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 73, col 19) to (line 73, col 71) +73 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2434 to 2454) SpanInfo: {"start":2437,"length":17} + >primary: primaryA + >:=> (line 73, col 29) to (line 73, col 46) +73 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2455 to 2478) SpanInfo: {"start":2456,"length":21} + >secondary: secondaryA + >:=> (line 73, col 48) to (line 73, col 69) +73 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~=> Pos: (2479 to 2480) SpanInfo: {"start":2427,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 73, col 19) to (line 73, col 71) +73 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2481 to 2499) SpanInfo: {"start":2485,"length":11} + >multiRobots + >:=> (line 73, col 77) to (line 73, col 88) +-------------------------------- +74 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2500 to 2523) SpanInfo: {"start":2504,"length":18} + >console.log(nameA) + >:=> (line 74, col 4) to (line 74, col 22) +-------------------------------- +75 >} + + ~~ => Pos: (2524 to 2525) SpanInfo: {"start":2504,"length":18} + >console.log(nameA) + >:=> (line 74, col 4) to (line 74, col 22) +-------------------------------- +76 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~ => Pos: (2526 to 2543) SpanInfo: {"start":2532,"length":11} + >name: nameA + >:=> (line 76, col 6) to (line 76, col 17) +76 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~ => Pos: (2544 to 2551) SpanInfo: {"start":2545,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 76, col 19) to (line 76, col 71) +76 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2552 to 2572) SpanInfo: {"start":2555,"length":17} + >primary: primaryA + >:=> (line 76, col 29) to (line 76, col 46) +76 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2573 to 2596) SpanInfo: {"start":2574,"length":21} + >secondary: secondaryA + >:=> (line 76, col 48) to (line 76, col 69) +76 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~=> Pos: (2597 to 2598) SpanInfo: {"start":2545,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 76, col 19) to (line 76, col 71) +76 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2599 to 2622) SpanInfo: {"start":2603,"length":16} + >getMultiRobots() + >:=> (line 76, col 77) to (line 76, col 93) +-------------------------------- +77 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2623 to 2646) SpanInfo: {"start":2627,"length":18} + >console.log(nameA) + >:=> (line 77, col 4) to (line 77, col 22) +-------------------------------- +78 >} + + ~~ => Pos: (2647 to 2648) SpanInfo: {"start":2627,"length":18} + >console.log(nameA) + >:=> (line 77, col 4) to (line 77, col 22) +-------------------------------- +79 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~ => Pos: (2649 to 2666) SpanInfo: {"start":2655,"length":11} + >name: nameA + >:=> (line 79, col 6) to (line 79, col 17) +79 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~ => Pos: (2667 to 2674) SpanInfo: {"start":2668,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 79, col 19) to (line 79, col 71) +79 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~=> Pos: (2675 to 2695) SpanInfo: {"start":2678,"length":17} + >primary: primaryA + >:=> (line 79, col 29) to (line 79, col 46) +79 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2696 to 2719) SpanInfo: {"start":2697,"length":21} + >secondary: secondaryA + >:=> (line 79, col 48) to (line 79, col 69) +79 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~=> Pos: (2720 to 2721) SpanInfo: {"start":2668,"length":52} + >skills: { primary: primaryA, secondary: secondaryA } + >:=> (line 79, col 19) to (line 79, col 71) +79 >for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2722 to 2795) SpanInfo: {"start":2726,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 79, col 77) to (line 80, col 78) +-------------------------------- +80 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2796 to 2877) SpanInfo: {"start":2726,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 79, col 77) to (line 80, col 78) +-------------------------------- +81 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2878 to 2901) SpanInfo: {"start":2882,"length":18} + >console.log(nameA) + >:=> (line 81, col 4) to (line 81, col 22) +-------------------------------- +82 >} + + ~~ => Pos: (2902 to 2903) SpanInfo: {"start":2882,"length":18} + >console.log(nameA) + >:=> (line 81, col 4) to (line 81, col 22) +-------------------------------- +83 >for ({name, skill } of robots) { + + ~~~~~~~~~~~ => Pos: (2904 to 2914) SpanInfo: {"start":2910,"length":4} + >name + >:=> (line 83, col 6) to (line 83, col 10) +83 >for ({name, skill } of robots) { + + ~~~~~~~~ => Pos: (2915 to 2922) SpanInfo: {"start":2916,"length":5} + >skill + >:=> (line 83, col 12) to (line 83, col 17) +83 >for ({name, skill } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (2923 to 2936) SpanInfo: {"start":2927,"length":6} + >robots + >:=> (line 83, col 23) to (line 83, col 29) +-------------------------------- +84 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2937 to 2960) SpanInfo: {"start":2941,"length":18} + >console.log(nameA) + >:=> (line 84, col 4) to (line 84, col 22) +-------------------------------- +85 >} + + ~~ => Pos: (2961 to 2962) SpanInfo: {"start":2941,"length":18} + >console.log(nameA) + >:=> (line 84, col 4) to (line 84, col 22) +-------------------------------- +86 >for ({name, skill } of getRobots()) { + + ~~~~~~~~~~~ => Pos: (2963 to 2973) SpanInfo: {"start":2969,"length":4} + >name + >:=> (line 86, col 6) to (line 86, col 10) +86 >for ({name, skill } of getRobots()) { + + ~~~~~~~~ => Pos: (2974 to 2981) SpanInfo: {"start":2975,"length":5} + >skill + >:=> (line 86, col 12) to (line 86, col 17) +86 >for ({name, skill } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2982 to 3000) SpanInfo: {"start":2986,"length":11} + >getRobots() + >:=> (line 86, col 23) to (line 86, col 34) +-------------------------------- +87 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3001 to 3024) SpanInfo: {"start":3005,"length":18} + >console.log(nameA) + >:=> (line 87, col 4) to (line 87, col 22) +-------------------------------- +88 >} + + ~~ => Pos: (3025 to 3026) SpanInfo: {"start":3005,"length":18} + >console.log(nameA) + >:=> (line 87, col 4) to (line 87, col 22) +-------------------------------- +89 >for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~ => Pos: (3027 to 3037) SpanInfo: {"start":3033,"length":4} + >name + >:=> (line 89, col 6) to (line 89, col 10) +89 >for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~ => Pos: (3038 to 3045) SpanInfo: {"start":3039,"length":5} + >skill + >:=> (line 89, col 12) to (line 89, col 17) +89 >for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3046 to 3129) SpanInfo: {"start":3050,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 89, col 23) to (line 89, col 99) +-------------------------------- +90 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3130 to 3153) SpanInfo: {"start":3134,"length":18} + >console.log(nameA) + >:=> (line 90, col 4) to (line 90, col 22) +-------------------------------- +91 >} + + ~~ => Pos: (3154 to 3155) SpanInfo: {"start":3134,"length":18} + >console.log(nameA) + >:=> (line 90, col 4) to (line 90, col 22) +-------------------------------- +92 >for ({name, skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~ => Pos: (3156 to 3166) SpanInfo: {"start":3162,"length":4} + >name + >:=> (line 92, col 6) to (line 92, col 10) +92 >for ({name, skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~ => Pos: (3167 to 3174) SpanInfo: {"start":3168,"length":30} + >skills: { primary, secondary } + >:=> (line 92, col 12) to (line 92, col 42) +92 >for ({name, skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~ => Pos: (3175 to 3185) SpanInfo: {"start":3178,"length":7} + >primary + >:=> (line 92, col 22) to (line 92, col 29) +92 >for ({name, skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~~ => Pos: (3186 to 3197) SpanInfo: {"start":3187,"length":9} + >secondary + >:=> (line 92, col 31) to (line 92, col 40) +92 >for ({name, skills: { primary, secondary } } of multiRobots) { + + ~~ => Pos: (3198 to 3199) SpanInfo: {"start":3168,"length":30} + >skills: { primary, secondary } + >:=> (line 92, col 12) to (line 92, col 42) +92 >for ({name, skills: { primary, secondary } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (3200 to 3218) SpanInfo: {"start":3204,"length":11} + >multiRobots + >:=> (line 92, col 48) to (line 92, col 59) +-------------------------------- +93 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3219 to 3242) SpanInfo: {"start":3223,"length":18} + >console.log(nameA) + >:=> (line 93, col 4) to (line 93, col 22) +-------------------------------- +94 >} + + ~~ => Pos: (3243 to 3244) SpanInfo: {"start":3223,"length":18} + >console.log(nameA) + >:=> (line 93, col 4) to (line 93, col 22) +-------------------------------- +95 >for ({name, skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~ => Pos: (3245 to 3255) SpanInfo: {"start":3251,"length":4} + >name + >:=> (line 95, col 6) to (line 95, col 10) +95 >for ({name, skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~ => Pos: (3256 to 3263) SpanInfo: {"start":3257,"length":30} + >skills: { primary, secondary } + >:=> (line 95, col 12) to (line 95, col 42) +95 >for ({name, skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~ => Pos: (3264 to 3274) SpanInfo: {"start":3267,"length":7} + >primary + >:=> (line 95, col 22) to (line 95, col 29) +95 >for ({name, skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~~ => Pos: (3275 to 3286) SpanInfo: {"start":3276,"length":9} + >secondary + >:=> (line 95, col 31) to (line 95, col 40) +95 >for ({name, skills: { primary, secondary } } of getMultiRobots()) { + + ~~ => Pos: (3287 to 3288) SpanInfo: {"start":3257,"length":30} + >skills: { primary, secondary } + >:=> (line 95, col 12) to (line 95, col 42) +95 >for ({name, skills: { primary, secondary } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3289 to 3312) SpanInfo: {"start":3293,"length":16} + >getMultiRobots() + >:=> (line 95, col 48) to (line 95, col 64) +-------------------------------- +96 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3313 to 3336) SpanInfo: {"start":3317,"length":18} + >console.log(nameA) + >:=> (line 96, col 4) to (line 96, col 22) +-------------------------------- +97 >} + + ~~ => Pos: (3337 to 3338) SpanInfo: {"start":3317,"length":18} + >console.log(nameA) + >:=> (line 96, col 4) to (line 96, col 22) +-------------------------------- +98 >for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~ => Pos: (3339 to 3349) SpanInfo: {"start":3345,"length":4} + >name + >:=> (line 98, col 6) to (line 98, col 10) +98 >for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~ => Pos: (3350 to 3357) SpanInfo: {"start":3351,"length":30} + >skills: { primary, secondary } + >:=> (line 98, col 12) to (line 98, col 42) +98 >for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~ => Pos: (3358 to 3368) SpanInfo: {"start":3361,"length":7} + >primary + >:=> (line 98, col 22) to (line 98, col 29) +98 >for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~ => Pos: (3369 to 3380) SpanInfo: {"start":3370,"length":9} + >secondary + >:=> (line 98, col 31) to (line 98, col 40) +98 >for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~ => Pos: (3381 to 3382) SpanInfo: {"start":3351,"length":30} + >skills: { primary, secondary } + >:=> (line 98, col 12) to (line 98, col 42) +98 >for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3383 to 3456) SpanInfo: {"start":3387,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 98, col 48) to (line 99, col 78) +-------------------------------- +99 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3457 to 3538) SpanInfo: {"start":3387,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 98, col 48) to (line 99, col 78) +-------------------------------- +100> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3539 to 3562) SpanInfo: {"start":3543,"length":18} + >console.log(nameA) + >:=> (line 100, col 4) to (line 100, col 22) +-------------------------------- +101>} + ~ => Pos: (3563 to 3563) SpanInfo: {"start":3543,"length":18} + >console.log(nameA) + >:=> (line 100, col 4) to (line 100, col 22) \ No newline at end of file diff --git a/tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPatternDefaultValues.baseline b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPatternDefaultValues.baseline new file mode 100644 index 00000000000..18a0ebdca34 --- /dev/null +++ b/tests/baselines/reference/bpSpanDestructuringAssignmentForOfObjectBindingPatternDefaultValues.baseline @@ -0,0 +1,1223 @@ + +1 >declare var console: { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (0 to 22) SpanInfo: undefined +-------------------------------- +2 > log(msg: any): void; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (23 to 47) SpanInfo: undefined +-------------------------------- +3 >} + + ~~ => Pos: (48 to 49) SpanInfo: undefined +-------------------------------- +4 >interface Robot { + + ~~~~~~~~~~~~~~~~~~ => Pos: (50 to 67) SpanInfo: undefined +-------------------------------- +5 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (68 to 85) SpanInfo: undefined +-------------------------------- +6 > skill: string; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (86 to 104) SpanInfo: undefined +-------------------------------- +7 >} + + ~~ => Pos: (105 to 106) SpanInfo: undefined +-------------------------------- +8 >interface MultiRobot { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (107 to 129) SpanInfo: undefined +-------------------------------- +9 > name: string; + + ~~~~~~~~~~~~~~~~~~ => Pos: (130 to 147) SpanInfo: undefined +-------------------------------- +10 > skills: { + + ~~~~~~~~~~~~~~ => Pos: (148 to 161) SpanInfo: undefined +-------------------------------- +11 > primary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (162 to 186) SpanInfo: undefined +-------------------------------- +12 > secondary: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (187 to 213) SpanInfo: undefined +-------------------------------- +13 > }; + + ~~~~~~~ => Pos: (214 to 220) SpanInfo: undefined +-------------------------------- +14 >} + + ~~ => Pos: (221 to 222) SpanInfo: undefined +-------------------------------- +15 >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (223 to 322) SpanInfo: {"start":223,"length":98} + >let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 15, col 0) to (line 15, col 98) +-------------------------------- +16 >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (323 to 424) SpanInfo: {"start":323,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +17 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (425 to 504) SpanInfo: {"start":323,"length":180} + >let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 16, col 0) to (line 17, col 78) +-------------------------------- +18 >function getRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (505 to 527) SpanInfo: {"start":532,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +19 > return robots; + + ~~~~~~~~~~~~~~~~~~~ => Pos: (528 to 546) SpanInfo: {"start":532,"length":13} + >return robots + >:=> (line 19, col 4) to (line 19, col 17) +-------------------------------- +20 >} + + ~~ => Pos: (547 to 548) SpanInfo: {"start":547,"length":1} + >} + >:=> (line 20, col 0) to (line 20, col 1) +-------------------------------- +21 >function getMultiRobots() { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (549 to 576) SpanInfo: {"start":581,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +22 > return multiRobots; + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (577 to 600) SpanInfo: {"start":581,"length":18} + >return multiRobots + >:=> (line 22, col 4) to (line 22, col 22) +-------------------------------- +23 >} + + ~~ => Pos: (601 to 602) SpanInfo: {"start":601,"length":1} + >} + >:=> (line 23, col 0) to (line 23, col 1) +-------------------------------- +24 >let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (603 to 686) SpanInfo: undefined +-------------------------------- +25 >let name: string, primary: string, secondary: string, skill: string; + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (687 to 755) SpanInfo: undefined +-------------------------------- +26 >for ({name: nameA = "noName" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (756 to 785) SpanInfo: {"start":762,"length":22} + >name: nameA = "noName" + >:=> (line 26, col 6) to (line 26, col 28) +26 >for ({name: nameA = "noName" } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (786 to 799) SpanInfo: {"start":790,"length":6} + >robots + >:=> (line 26, col 34) to (line 26, col 40) +-------------------------------- +27 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (800 to 823) SpanInfo: {"start":804,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +28 >} + + ~~ => Pos: (824 to 825) SpanInfo: {"start":804,"length":18} + >console.log(nameA) + >:=> (line 27, col 4) to (line 27, col 22) +-------------------------------- +29 >for ({name: nameA = "noName" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (826 to 855) SpanInfo: {"start":832,"length":22} + >name: nameA = "noName" + >:=> (line 29, col 6) to (line 29, col 28) +29 >for ({name: nameA = "noName" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (856 to 874) SpanInfo: {"start":860,"length":11} + >getRobots() + >:=> (line 29, col 34) to (line 29, col 45) +-------------------------------- +30 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (875 to 898) SpanInfo: {"start":879,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +31 >} + + ~~ => Pos: (899 to 900) SpanInfo: {"start":879,"length":18} + >console.log(nameA) + >:=> (line 30, col 4) to (line 30, col 22) +-------------------------------- +32 >for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (901 to 930) SpanInfo: {"start":907,"length":22} + >name: nameA = "noName" + >:=> (line 32, col 6) to (line 32, col 28) +32 >for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (931 to 1014) SpanInfo: {"start":935,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 32, col 34) to (line 32, col 110) +-------------------------------- +33 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1015 to 1038) SpanInfo: {"start":1019,"length":18} + >console.log(nameA) + >:=> (line 33, col 4) to (line 33, col 22) +-------------------------------- +34 >} + + ~~ => Pos: (1039 to 1040) SpanInfo: {"start":1019,"length":18} + >console.log(nameA) + >:=> (line 33, col 4) to (line 33, col 22) +-------------------------------- +35 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~ => Pos: (1041 to 1054) SpanInfo: {"start":1048,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 35, col 7) to (line 36, col 48) +35 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1055 to 1087) SpanInfo: {"start":1058,"length":29} + >primary: primaryA = "primary" + >:=> (line 35, col 17) to (line 35, col 46) +35 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1088 to 1128) SpanInfo: {"start":1089,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 35, col 48) to (line 35, col 83) +-------------------------------- +36 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1129 to 1176) SpanInfo: {"start":1089,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 35, col 48) to (line 35, col 83) +36 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + + ~~=> Pos: (1177 to 1178) SpanInfo: {"start":1048,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 35, col 7) to (line 36, col 48) +36 > { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (1179 to 1197) SpanInfo: {"start":1183,"length":11} + >multiRobots + >:=> (line 36, col 54) to (line 36, col 65) +-------------------------------- +37 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1198 to 1224) SpanInfo: {"start":1202,"length":21} + >console.log(primaryA) + >:=> (line 37, col 4) to (line 37, col 25) +-------------------------------- +38 >} + + ~~ => Pos: (1225 to 1226) SpanInfo: {"start":1202,"length":21} + >console.log(primaryA) + >:=> (line 37, col 4) to (line 37, col 25) +-------------------------------- +39 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~ => Pos: (1227 to 1240) SpanInfo: {"start":1234,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 39, col 7) to (line 40, col 48) +39 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1241 to 1273) SpanInfo: {"start":1244,"length":29} + >primary: primaryA = "primary" + >:=> (line 39, col 17) to (line 39, col 46) +39 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1274 to 1314) SpanInfo: {"start":1275,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 39, col 48) to (line 39, col 83) +-------------------------------- +40 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1315 to 1362) SpanInfo: {"start":1275,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 39, col 48) to (line 39, col 83) +40 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~=> Pos: (1363 to 1364) SpanInfo: {"start":1234,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 39, col 7) to (line 40, col 48) +40 > { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1365 to 1388) SpanInfo: {"start":1369,"length":16} + >getMultiRobots() + >:=> (line 40, col 54) to (line 40, col 70) +-------------------------------- +41 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1389 to 1415) SpanInfo: {"start":1393,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +42 >} + + ~~ => Pos: (1416 to 1417) SpanInfo: {"start":1393,"length":21} + >console.log(primaryA) + >:=> (line 41, col 4) to (line 41, col 25) +-------------------------------- +43 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~ => Pos: (1418 to 1431) SpanInfo: {"start":1425,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 43, col 7) to (line 44, col 48) +43 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1432 to 1464) SpanInfo: {"start":1435,"length":29} + >primary: primaryA = "primary" + >:=> (line 43, col 17) to (line 43, col 46) +43 >for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1465 to 1505) SpanInfo: {"start":1466,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 43, col 48) to (line 43, col 83) +-------------------------------- +44 > { primary: "nosKill", secondary: "noSkill" } } of + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1506 to 1553) SpanInfo: {"start":1466,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 43, col 48) to (line 43, col 83) +44 > { primary: "nosKill", secondary: "noSkill" } } of + + ~~=> Pos: (1554 to 1555) SpanInfo: {"start":1425,"length":129} + >skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = + > { primary: "nosKill", secondary: "noSkill" } + >:=> (line 43, col 7) to (line 44, col 48) +44 > { primary: "nosKill", secondary: "noSkill" } } of + + ~~~~=> Pos: (1556 to 1559) SpanInfo: {"start":1564,"length":166} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 45, col 4) to (line 46, col 82) +-------------------------------- +45 > [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1560 to 1647) SpanInfo: {"start":1564,"length":166} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 45, col 4) to (line 46, col 82) +-------------------------------- +46 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1648 to 1733) SpanInfo: {"start":1564,"length":166} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 45, col 4) to (line 46, col 82) +-------------------------------- +47 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1734 to 1760) SpanInfo: {"start":1738,"length":21} + >console.log(primaryA) + >:=> (line 47, col 4) to (line 47, col 25) +-------------------------------- +48 >} + + ~~ => Pos: (1761 to 1762) SpanInfo: {"start":1738,"length":21} + >console.log(primaryA) + >:=> (line 47, col 4) to (line 47, col 25) +-------------------------------- +49 >for ({ name = "noName" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1763 to 1786) SpanInfo: {"start":1770,"length":15} + >name = "noName" + >:=> (line 49, col 7) to (line 49, col 22) +49 >for ({ name = "noName" } of robots) { + + ~~~~~~~~~~~~~~ => Pos: (1787 to 1800) SpanInfo: {"start":1791,"length":6} + >robots + >:=> (line 49, col 28) to (line 49, col 34) +-------------------------------- +50 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1801 to 1824) SpanInfo: {"start":1805,"length":18} + >console.log(nameA) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +51 >} + + ~~ => Pos: (1825 to 1826) SpanInfo: {"start":1805,"length":18} + >console.log(nameA) + >:=> (line 50, col 4) to (line 50, col 22) +-------------------------------- +52 >for ({ name = "noName" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1827 to 1850) SpanInfo: {"start":1834,"length":15} + >name = "noName" + >:=> (line 52, col 7) to (line 52, col 22) +52 >for ({ name = "noName" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (1851 to 1869) SpanInfo: {"start":1855,"length":11} + >getRobots() + >:=> (line 52, col 28) to (line 52, col 39) +-------------------------------- +53 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1870 to 1893) SpanInfo: {"start":1874,"length":18} + >console.log(nameA) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +54 >} + + ~~ => Pos: (1894 to 1895) SpanInfo: {"start":1874,"length":18} + >console.log(nameA) + >:=> (line 53, col 4) to (line 53, col 22) +-------------------------------- +55 >for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (1896 to 1919) SpanInfo: {"start":1903,"length":15} + >name = "noName" + >:=> (line 55, col 7) to (line 55, col 22) +55 >for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (1920 to 2003) SpanInfo: {"start":1924,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 55, col 28) to (line 55, col 104) +-------------------------------- +56 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2004 to 2027) SpanInfo: {"start":2008,"length":18} + >console.log(nameA) + >:=> (line 56, col 4) to (line 56, col 22) +-------------------------------- +57 >} + + ~~ => Pos: (2028 to 2029) SpanInfo: {"start":2008,"length":18} + >console.log(nameA) + >:=> (line 56, col 4) to (line 56, col 22) +-------------------------------- +58 >for ({ + + ~~~~~~~ => Pos: (2030 to 2036) SpanInfo: {"start":2041,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 59, col 4) to (line 62, col 52) +-------------------------------- +59 > skills: { + + ~~~~~~~~~~~ => Pos: (2037 to 2047) SpanInfo: {"start":2041,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 59, col 4) to (line 62, col 52) +59 > skills: { + + ~~~ => Pos: (2048 to 2050) SpanInfo: {"start":2059,"length":19} + >primary = "primary" + >:=> (line 60, col 8) to (line 60, col 27) +-------------------------------- +60 > primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2051 to 2079) SpanInfo: {"start":2059,"length":19} + >primary = "primary" + >:=> (line 60, col 8) to (line 60, col 27) +-------------------------------- +61 > secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2080 to 2111) SpanInfo: {"start":2088,"length":23} + >secondary = "secondary" + >:=> (line 61, col 8) to (line 61, col 31) +-------------------------------- +62 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2112 to 2164) SpanInfo: {"start":2088,"length":23} + >secondary = "secondary" + >:=> (line 61, col 8) to (line 61, col 31) +-------------------------------- +63 >} of multiRobots) { + + ~ => Pos: (2165 to 2165) SpanInfo: {"start":2041,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 59, col 4) to (line 62, col 52) +63 >} of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (2166 to 2184) SpanInfo: {"start":2170,"length":11} + >multiRobots + >:=> (line 63, col 5) to (line 63, col 16) +-------------------------------- +64 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2185 to 2211) SpanInfo: {"start":2189,"length":21} + >console.log(primaryA) + >:=> (line 64, col 4) to (line 64, col 25) +-------------------------------- +65 >} + + ~~ => Pos: (2212 to 2213) SpanInfo: {"start":2189,"length":21} + >console.log(primaryA) + >:=> (line 64, col 4) to (line 64, col 25) +-------------------------------- +66 >for ({ + + ~~~~~~~ => Pos: (2214 to 2220) SpanInfo: {"start":2225,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 67, col 4) to (line 70, col 52) +-------------------------------- +67 > skills: { + + ~~~~~~~~~~~ => Pos: (2221 to 2231) SpanInfo: {"start":2225,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 67, col 4) to (line 70, col 52) +67 > skills: { + + ~~~ => Pos: (2232 to 2234) SpanInfo: {"start":2243,"length":19} + >primary = "primary" + >:=> (line 68, col 8) to (line 68, col 27) +-------------------------------- +68 > primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2235 to 2263) SpanInfo: {"start":2243,"length":19} + >primary = "primary" + >:=> (line 68, col 8) to (line 68, col 27) +-------------------------------- +69 > secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2264 to 2295) SpanInfo: {"start":2272,"length":23} + >secondary = "secondary" + >:=> (line 69, col 8) to (line 69, col 31) +-------------------------------- +70 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2296 to 2348) SpanInfo: {"start":2272,"length":23} + >secondary = "secondary" + >:=> (line 69, col 8) to (line 69, col 31) +-------------------------------- +71 >} of getMultiRobots()) { + + ~ => Pos: (2349 to 2349) SpanInfo: {"start":2225,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 67, col 4) to (line 70, col 52) +71 >} of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2350 to 2373) SpanInfo: {"start":2354,"length":16} + >getMultiRobots() + >:=> (line 71, col 5) to (line 71, col 21) +-------------------------------- +72 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2374 to 2400) SpanInfo: {"start":2378,"length":21} + >console.log(primaryA) + >:=> (line 72, col 4) to (line 72, col 25) +-------------------------------- +73 >} + + ~~ => Pos: (2401 to 2402) SpanInfo: {"start":2378,"length":21} + >console.log(primaryA) + >:=> (line 72, col 4) to (line 72, col 25) +-------------------------------- +74 >for ({ + + ~~~~~~~ => Pos: (2403 to 2409) SpanInfo: {"start":2414,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 75, col 4) to (line 78, col 52) +-------------------------------- +75 > skills: { + + ~~~~~~~~~~~ => Pos: (2410 to 2420) SpanInfo: {"start":2414,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 75, col 4) to (line 78, col 52) +75 > skills: { + + ~~~ => Pos: (2421 to 2423) SpanInfo: {"start":2432,"length":19} + >primary = "primary" + >:=> (line 76, col 8) to (line 76, col 27) +-------------------------------- +76 > primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2424 to 2452) SpanInfo: {"start":2432,"length":19} + >primary = "primary" + >:=> (line 76, col 8) to (line 76, col 27) +-------------------------------- +77 > secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2453 to 2484) SpanInfo: {"start":2461,"length":23} + >secondary = "secondary" + >:=> (line 77, col 8) to (line 77, col 31) +-------------------------------- +78 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2485 to 2537) SpanInfo: {"start":2461,"length":23} + >secondary = "secondary" + >:=> (line 77, col 8) to (line 77, col 31) +-------------------------------- +79 >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~ => Pos: (2538 to 2538) SpanInfo: {"start":2414,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 75, col 4) to (line 78, col 52) +79 >} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2539 to 2612) SpanInfo: {"start":2543,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 79, col 5) to (line 80, col 78) +-------------------------------- +80 > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2613 to 2694) SpanInfo: {"start":2543,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 79, col 5) to (line 80, col 78) +-------------------------------- +81 > console.log(primaryA); + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2695 to 2721) SpanInfo: {"start":2699,"length":21} + >console.log(primaryA) + >:=> (line 81, col 4) to (line 81, col 25) +-------------------------------- +82 >} + + ~~ => Pos: (2722 to 2723) SpanInfo: {"start":2699,"length":21} + >console.log(primaryA) + >:=> (line 81, col 4) to (line 81, col 25) +-------------------------------- +83 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2724 to 2752) SpanInfo: {"start":2730,"length":22} + >name: nameA = "noName" + >:=> (line 83, col 6) to (line 83, col 28) +83 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2753 to 2780) SpanInfo: {"start":2754,"length":25} + >skill: skillA = "noSkill" + >:=> (line 83, col 30) to (line 83, col 55) +83 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~=> Pos: (2781 to 2794) SpanInfo: {"start":2785,"length":6} + >robots + >:=> (line 83, col 61) to (line 83, col 67) +-------------------------------- +84 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2795 to 2818) SpanInfo: {"start":2799,"length":18} + >console.log(nameA) + >:=> (line 84, col 4) to (line 84, col 22) +-------------------------------- +85 >} + + ~~ => Pos: (2819 to 2820) SpanInfo: {"start":2799,"length":18} + >console.log(nameA) + >:=> (line 84, col 4) to (line 84, col 22) +-------------------------------- +86 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2821 to 2849) SpanInfo: {"start":2827,"length":22} + >name: nameA = "noName" + >:=> (line 86, col 6) to (line 86, col 28) +86 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2850 to 2878) SpanInfo: {"start":2851,"length":25} + >skill: skillA = "noSkill" + >:=> (line 86, col 30) to (line 86, col 55) +86 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (2879 to 2897) SpanInfo: {"start":2883,"length":11} + >getRobots() + >:=> (line 86, col 62) to (line 86, col 73) +-------------------------------- +87 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2898 to 2921) SpanInfo: {"start":2902,"length":18} + >console.log(nameA) + >:=> (line 87, col 4) to (line 87, col 22) +-------------------------------- +88 >} + + ~~ => Pos: (2922 to 2923) SpanInfo: {"start":2902,"length":18} + >console.log(nameA) + >:=> (line 87, col 4) to (line 87, col 22) +-------------------------------- +89 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (2924 to 2952) SpanInfo: {"start":2930,"length":22} + >name: nameA = "noName" + >:=> (line 89, col 6) to (line 89, col 28) +89 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2953 to 2981) SpanInfo: {"start":2954,"length":25} + >skill: skillA = "noSkill" + >:=> (line 89, col 30) to (line 89, col 55) +89 >for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (2982 to 3065) SpanInfo: {"start":2986,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 89, col 62) to (line 89, col 138) +-------------------------------- +90 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3066 to 3089) SpanInfo: {"start":3070,"length":18} + >console.log(nameA) + >:=> (line 90, col 4) to (line 90, col 22) +-------------------------------- +91 >} + + ~~ => Pos: (3090 to 3091) SpanInfo: {"start":3070,"length":18} + >console.log(nameA) + >:=> (line 90, col 4) to (line 90, col 22) +-------------------------------- +92 >for ({ + + ~~~~~~~ => Pos: (3092 to 3098) SpanInfo: {"start":3103,"length":22} + >name: nameA = "noName" + >:=> (line 93, col 4) to (line 93, col 26) +-------------------------------- +93 > name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3099 to 3126) SpanInfo: {"start":3103,"length":22} + >name: nameA = "noName" + >:=> (line 93, col 4) to (line 93, col 26) +-------------------------------- +94 > skills: { + + ~~~~~~~~~~~ => Pos: (3127 to 3137) SpanInfo: {"start":3131,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 94, col 4) to (line 97, col 52) +94 > skills: { + + ~~~ => Pos: (3138 to 3140) SpanInfo: {"start":3149,"length":29} + >primary: primaryA = "primary" + >:=> (line 95, col 8) to (line 95, col 37) +-------------------------------- +95 > primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3141 to 3179) SpanInfo: {"start":3149,"length":29} + >primary: primaryA = "primary" + >:=> (line 95, col 8) to (line 95, col 37) +-------------------------------- +96 > secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3180 to 3223) SpanInfo: {"start":3188,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 96, col 8) to (line 96, col 43) +-------------------------------- +97 > } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3224 to 3276) SpanInfo: {"start":3188,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 96, col 8) to (line 96, col 43) +-------------------------------- +98 >} of multiRobots) { + + ~ => Pos: (3277 to 3277) SpanInfo: {"start":3131,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 94, col 4) to (line 97, col 52) +98 >} of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (3278 to 3296) SpanInfo: {"start":3282,"length":11} + >multiRobots + >:=> (line 98, col 5) to (line 98, col 16) +-------------------------------- +99 > console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3297 to 3320) SpanInfo: {"start":3301,"length":18} + >console.log(nameA) + >:=> (line 99, col 4) to (line 99, col 22) +-------------------------------- +100>} + + ~~ => Pos: (3321 to 3322) SpanInfo: {"start":3301,"length":18} + >console.log(nameA) + >:=> (line 99, col 4) to (line 99, col 22) +-------------------------------- +101>for ({ + + ~~~~~~~ => Pos: (3323 to 3329) SpanInfo: {"start":3334,"length":22} + >name: nameA = "noName" + >:=> (line 102, col 4) to (line 102, col 26) +-------------------------------- +102> name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3330 to 3357) SpanInfo: {"start":3334,"length":22} + >name: nameA = "noName" + >:=> (line 102, col 4) to (line 102, col 26) +-------------------------------- +103> skills: { + + ~~~~~~~~~~~ => Pos: (3358 to 3368) SpanInfo: {"start":3362,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 103, col 4) to (line 106, col 52) +103> skills: { + + ~~~ => Pos: (3369 to 3371) SpanInfo: {"start":3380,"length":29} + >primary: primaryA = "primary" + >:=> (line 104, col 8) to (line 104, col 37) +-------------------------------- +104> primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3372 to 3410) SpanInfo: {"start":3380,"length":29} + >primary: primaryA = "primary" + >:=> (line 104, col 8) to (line 104, col 37) +-------------------------------- +105> secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3411 to 3454) SpanInfo: {"start":3419,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 105, col 8) to (line 105, col 43) +-------------------------------- +106> } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3455 to 3507) SpanInfo: {"start":3419,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 105, col 8) to (line 105, col 43) +-------------------------------- +107>} of getMultiRobots()) { + + ~ => Pos: (3508 to 3508) SpanInfo: {"start":3362,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 103, col 4) to (line 106, col 52) +107>} of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3509 to 3532) SpanInfo: {"start":3513,"length":16} + >getMultiRobots() + >:=> (line 107, col 5) to (line 107, col 21) +-------------------------------- +108> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3533 to 3556) SpanInfo: {"start":3537,"length":18} + >console.log(nameA) + >:=> (line 108, col 4) to (line 108, col 22) +-------------------------------- +109>} + + ~~ => Pos: (3557 to 3558) SpanInfo: {"start":3537,"length":18} + >console.log(nameA) + >:=> (line 108, col 4) to (line 108, col 22) +-------------------------------- +110>for ({ + + ~~~~~~~ => Pos: (3559 to 3565) SpanInfo: {"start":3570,"length":22} + >name: nameA = "noName" + >:=> (line 111, col 4) to (line 111, col 26) +-------------------------------- +111> name: nameA = "noName", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3566 to 3593) SpanInfo: {"start":3570,"length":22} + >name: nameA = "noName" + >:=> (line 111, col 4) to (line 111, col 26) +-------------------------------- +112> skills: { + + ~~~~~~~~~~~ => Pos: (3594 to 3604) SpanInfo: {"start":3598,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 112, col 4) to (line 115, col 52) +112> skills: { + + ~~~ => Pos: (3605 to 3607) SpanInfo: {"start":3616,"length":29} + >primary: primaryA = "primary" + >:=> (line 113, col 8) to (line 113, col 37) +-------------------------------- +113> primary: primaryA = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3608 to 3646) SpanInfo: {"start":3616,"length":29} + >primary: primaryA = "primary" + >:=> (line 113, col 8) to (line 113, col 37) +-------------------------------- +114> secondary: secondaryA = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3647 to 3690) SpanInfo: {"start":3655,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 114, col 8) to (line 114, col 43) +-------------------------------- +115> } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3691 to 3743) SpanInfo: {"start":3655,"length":35} + >secondary: secondaryA = "secondary" + >:=> (line 114, col 8) to (line 114, col 43) +-------------------------------- +116>} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~ => Pos: (3744 to 3744) SpanInfo: {"start":3598,"length":145} + >skills: { + > primary: primaryA = "primary", + > secondary: secondaryA = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 112, col 4) to (line 115, col 52) +116>} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3745 to 3832) SpanInfo: {"start":3749,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 116, col 5) to (line 117, col 78) +-------------------------------- +117> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (3833 to 3914) SpanInfo: {"start":3749,"length":162} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 116, col 5) to (line 117, col 78) +-------------------------------- +118> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3915 to 3938) SpanInfo: {"start":3919,"length":18} + >console.log(nameA) + >:=> (line 118, col 4) to (line 118, col 22) +-------------------------------- +119>} + + ~~ => Pos: (3939 to 3940) SpanInfo: {"start":3919,"length":18} + >console.log(nameA) + >:=> (line 118, col 4) to (line 118, col 22) +-------------------------------- +120>for ({ name = "noName", skill = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3941 to 3963) SpanInfo: {"start":3948,"length":15} + >name = "noName" + >:=> (line 120, col 7) to (line 120, col 22) +120>for ({ name = "noName", skill = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (3964 to 3984) SpanInfo: {"start":3965,"length":18} + >skill = "noSkill" + >:=> (line 120, col 24) to (line 120, col 42) +120>for ({ name = "noName", skill = "noSkill" } of robots) { + + ~~~~~~~~~~~~~~=> Pos: (3985 to 3998) SpanInfo: {"start":3989,"length":6} + >robots + >:=> (line 120, col 48) to (line 120, col 54) +-------------------------------- +121> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (3999 to 4022) SpanInfo: {"start":4003,"length":18} + >console.log(nameA) + >:=> (line 121, col 4) to (line 121, col 22) +-------------------------------- +122>} + + ~~ => Pos: (4023 to 4024) SpanInfo: {"start":4003,"length":18} + >console.log(nameA) + >:=> (line 121, col 4) to (line 121, col 22) +-------------------------------- +123>for ({ name = "noName", skill = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4025 to 4047) SpanInfo: {"start":4032,"length":15} + >name = "noName" + >:=> (line 123, col 7) to (line 123, col 22) +123>for ({ name = "noName", skill = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4048 to 4068) SpanInfo: {"start":4049,"length":17} + >skill = "noSkill" + >:=> (line 123, col 24) to (line 123, col 41) +123>for ({ name = "noName", skill = "noSkill" } of getRobots()) { + + ~~~~~~~~~~~~~~~~~~~=> Pos: (4069 to 4087) SpanInfo: {"start":4073,"length":11} + >getRobots() + >:=> (line 123, col 48) to (line 123, col 59) +-------------------------------- +124> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4088 to 4111) SpanInfo: {"start":4092,"length":18} + >console.log(nameA) + >:=> (line 124, col 4) to (line 124, col 22) +-------------------------------- +125>} + + ~~ => Pos: (4112 to 4113) SpanInfo: {"start":4092,"length":18} + >console.log(nameA) + >:=> (line 124, col 4) to (line 124, col 22) +-------------------------------- +126>for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4114 to 4136) SpanInfo: {"start":4121,"length":15} + >name = "noName" + >:=> (line 126, col 7) to (line 126, col 22) +126>for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4137 to 4157) SpanInfo: {"start":4138,"length":18} + >skill = "noSkill" + >:=> (line 126, col 24) to (line 126, col 42) +126>for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4158 to 4241) SpanInfo: {"start":4162,"length":76} + >[{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }] + >:=> (line 126, col 48) to (line 126, col 124) +-------------------------------- +127> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4242 to 4265) SpanInfo: {"start":4246,"length":18} + >console.log(nameA) + >:=> (line 127, col 4) to (line 127, col 22) +-------------------------------- +128>} + + ~~ => Pos: (4266 to 4267) SpanInfo: {"start":4246,"length":18} + >console.log(nameA) + >:=> (line 127, col 4) to (line 127, col 22) +-------------------------------- +129>for ({ + + ~~~~~~~ => Pos: (4268 to 4274) SpanInfo: {"start":4279,"length":15} + >name = "noName" + >:=> (line 130, col 4) to (line 130, col 19) +-------------------------------- +130> name = "noName", + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4275 to 4295) SpanInfo: {"start":4279,"length":15} + >name = "noName" + >:=> (line 130, col 4) to (line 130, col 19) +-------------------------------- +131> skills: { + + ~~~~~~~~~~~ => Pos: (4296 to 4306) SpanInfo: {"start":4300,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 131, col 4) to (line 134, col 52) +131> skills: { + + ~~~ => Pos: (4307 to 4309) SpanInfo: {"start":4318,"length":19} + >primary = "primary" + >:=> (line 132, col 8) to (line 132, col 27) +-------------------------------- +132> primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4310 to 4338) SpanInfo: {"start":4318,"length":19} + >primary = "primary" + >:=> (line 132, col 8) to (line 132, col 27) +-------------------------------- +133> secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4339 to 4370) SpanInfo: {"start":4347,"length":23} + >secondary = "secondary" + >:=> (line 133, col 8) to (line 133, col 31) +-------------------------------- +134> } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4371 to 4423) SpanInfo: {"start":4347,"length":23} + >secondary = "secondary" + >:=> (line 133, col 8) to (line 133, col 31) +-------------------------------- +135>} of multiRobots) { + + ~ => Pos: (4424 to 4424) SpanInfo: {"start":4300,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 131, col 4) to (line 134, col 52) +135>} of multiRobots) { + + ~~~~~~~~~~~~~~~~~~~ => Pos: (4425 to 4443) SpanInfo: {"start":4429,"length":11} + >multiRobots + >:=> (line 135, col 5) to (line 135, col 16) +-------------------------------- +136> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4444 to 4467) SpanInfo: {"start":4448,"length":18} + >console.log(nameA) + >:=> (line 136, col 4) to (line 136, col 22) +-------------------------------- +137>} + + ~~ => Pos: (4468 to 4469) SpanInfo: {"start":4448,"length":18} + >console.log(nameA) + >:=> (line 136, col 4) to (line 136, col 22) +-------------------------------- +138>for ({ + + ~~~~~~~ => Pos: (4470 to 4476) SpanInfo: {"start":4481,"length":15} + >name = "noName" + >:=> (line 139, col 4) to (line 139, col 19) +-------------------------------- +139> name = "noName", + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4477 to 4497) SpanInfo: {"start":4481,"length":15} + >name = "noName" + >:=> (line 139, col 4) to (line 139, col 19) +-------------------------------- +140> skills: { + + ~~~~~~~~~~~ => Pos: (4498 to 4508) SpanInfo: {"start":4502,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 140, col 4) to (line 143, col 52) +140> skills: { + + ~~~ => Pos: (4509 to 4511) SpanInfo: {"start":4520,"length":19} + >primary = "primary" + >:=> (line 141, col 8) to (line 141, col 27) +-------------------------------- +141> primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4512 to 4540) SpanInfo: {"start":4520,"length":19} + >primary = "primary" + >:=> (line 141, col 8) to (line 141, col 27) +-------------------------------- +142> secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4541 to 4572) SpanInfo: {"start":4549,"length":23} + >secondary = "secondary" + >:=> (line 142, col 8) to (line 142, col 31) +-------------------------------- +143> } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4573 to 4625) SpanInfo: {"start":4549,"length":23} + >secondary = "secondary" + >:=> (line 142, col 8) to (line 142, col 31) +-------------------------------- +144>} of getMultiRobots()) { + + ~ => Pos: (4626 to 4626) SpanInfo: {"start":4502,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 140, col 4) to (line 143, col 52) +144>} of getMultiRobots()) { + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4627 to 4650) SpanInfo: {"start":4631,"length":16} + >getMultiRobots() + >:=> (line 144, col 5) to (line 144, col 21) +-------------------------------- +145> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4651 to 4674) SpanInfo: {"start":4655,"length":18} + >console.log(nameA) + >:=> (line 145, col 4) to (line 145, col 22) +-------------------------------- +146>} + + ~~ => Pos: (4675 to 4676) SpanInfo: {"start":4655,"length":18} + >console.log(nameA) + >:=> (line 145, col 4) to (line 145, col 22) +-------------------------------- +147>for ({ + + ~~~~~~~ => Pos: (4677 to 4683) SpanInfo: {"start":4688,"length":15} + >name = "noName" + >:=> (line 148, col 4) to (line 148, col 19) +-------------------------------- +148> name = "noName", + + ~~~~~~~~~~~~~~~~~~~~~ => Pos: (4684 to 4704) SpanInfo: {"start":4688,"length":15} + >name = "noName" + >:=> (line 148, col 4) to (line 148, col 19) +-------------------------------- +149> skills: { + + ~~~~~~~~~~~ => Pos: (4705 to 4715) SpanInfo: {"start":4709,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 149, col 4) to (line 152, col 52) +149> skills: { + + ~~~ => Pos: (4716 to 4718) SpanInfo: {"start":4727,"length":19} + >primary = "primary" + >:=> (line 150, col 8) to (line 150, col 27) +-------------------------------- +150> primary = "primary", + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4719 to 4747) SpanInfo: {"start":4727,"length":19} + >primary = "primary" + >:=> (line 150, col 8) to (line 150, col 27) +-------------------------------- +151> secondary = "secondary" + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4748 to 4779) SpanInfo: {"start":4756,"length":23} + >secondary = "secondary" + >:=> (line 151, col 8) to (line 151, col 31) +-------------------------------- +152> } = { primary: "noSkill", secondary: "noSkill" } + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4780 to 4832) SpanInfo: {"start":4756,"length":23} + >secondary = "secondary" + >:=> (line 151, col 8) to (line 151, col 31) +-------------------------------- +153>} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~ => Pos: (4833 to 4833) SpanInfo: {"start":4709,"length":123} + >skills: { + > primary = "primary", + > secondary = "secondary" + > } = { primary: "noSkill", secondary: "noSkill" } + >:=> (line 149, col 4) to (line 152, col 52) +153>} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4834 to 4907) SpanInfo: {"start":4838,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 153, col 5) to (line 154, col 78) +-------------------------------- +154> { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=> Pos: (4908 to 4989) SpanInfo: {"start":4838,"length":148} + >[{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, + > { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }] + >:=> (line 153, col 5) to (line 154, col 78) +-------------------------------- +155> console.log(nameA); + + ~~~~~~~~~~~~~~~~~~~~~~~~ => Pos: (4990 to 5013) SpanInfo: {"start":4994,"length":18} + >console.log(nameA) + >:=> (line 155, col 4) to (line 155, col 22) +-------------------------------- +156>} + ~ => Pos: (5014 to 5014) SpanInfo: {"start":4994,"length":18} + >console.log(nameA) + >:=> (line 155, col 4) to (line 155, col 22) \ No newline at end of file diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPattern.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPattern.ts new file mode 100644 index 00000000000..38a4832f14d --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPattern.ts @@ -0,0 +1,104 @@ +/// + +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +////let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +////function getRobots() { +//// return robots; +////} +////function getMultiRobots() { +//// return multiRobots; +////} +////let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +////let name: string, primary: string, secondary: string, skill: string; +////for ({name: nameA } of robots) { +//// console.log(nameA); +////} +////for ({name: nameA } of getRobots()) { +//// console.log(nameA); +////} +////for ({name: nameA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({ skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(primaryA); +////} +////for ({ skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +//// console.log(primaryA); +////} +////for ({ skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(primaryA); +////} +////for ({name } of robots) { +//// console.log(nameA); +////} +////for ({name } of getRobots()) { +//// console.log(nameA); +////} +////for ({name } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({ skills: { primary, secondary } } of multiRobots) { +//// console.log(primaryA); +////} +////for ({ skills: { primary, secondary } } of getMultiRobots()) { +//// console.log(primaryA); +////} +////for ({ skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(primaryA); +////} +////for ({name: nameA, skill: skillA } of robots) { +//// console.log(nameA); +////} +////for ({name: nameA, skill: skillA } of getRobots()) { +//// console.log(nameA); +////} +////for ({name: nameA, skill: skillA } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of multiRobots) { +//// console.log(nameA); +////} +////for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of getMultiRobots()) { +//// console.log(nameA); +////} +////for ({name: nameA, skills: { primary: primaryA, secondary: secondaryA } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(nameA); +////} +////for ({name, skill } of robots) { +//// console.log(nameA); +////} +////for ({name, skill } of getRobots()) { +//// console.log(nameA); +////} +////for ({name, skill } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({name, skills: { primary, secondary } } of multiRobots) { +//// console.log(nameA); +////} +////for ({name, skills: { primary, secondary } } of getMultiRobots()) { +//// console.log(nameA); +////} +////for ({name, skills: { primary, secondary } } of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(nameA); +////} +verify.baselineCurrentFileBreakpointLocations(); diff --git a/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPatternDefaultValues.ts b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPatternDefaultValues.ts new file mode 100644 index 00000000000..2ec090d716d --- /dev/null +++ b/tests/cases/fourslash/breakpointValidationDestructuringAssignmentForOfObjectBindingPatternDefaultValues.ts @@ -0,0 +1,159 @@ +/// + +////declare var console: { +//// log(msg: any): void; +////} +////interface Robot { +//// name: string; +//// skill: string; +////} +////interface MultiRobot { +//// name: string; +//// skills: { +//// primary: string; +//// secondary: string; +//// }; +////} +////let robots: Robot[] = [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]; +////let multiRobots: MultiRobot[] = [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]; +////function getRobots() { +//// return robots; +////} +////function getMultiRobots() { +//// return multiRobots; +////} +////let nameA: string, primaryA: string, secondaryA: string, i: number, skillA: string; +////let name: string, primary: string, secondary: string, skill: string; +////for ({name: nameA = "noName" } of robots) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName" } of getRobots()) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +//// { primary: "nosKill", secondary: "noSkill" } } of multiRobots) { +//// console.log(primaryA); +////} +////for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +//// { primary: "nosKill", secondary: "noSkill" } } of getMultiRobots()) { +//// console.log(primaryA); +////} +////for ({ skills: { primary: primaryA = "primary", secondary: secondaryA = "secondary" } = +//// { primary: "nosKill", secondary: "noSkill" } } of +//// [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(primaryA); +////} +////for ({ name = "noName" } of robots) { +//// console.log(nameA); +////} +////for ({ name = "noName" } of getRobots()) { +//// console.log(nameA); +////} +////for ({ name = "noName" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({ +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of multiRobots) { +//// console.log(primaryA); +////} +////for ({ +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of getMultiRobots()) { +//// console.log(primaryA); +////} +////for ({ +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(primaryA); +////} +////for ({name: nameA = "noName", skill: skillA = "noSkill" } of robots) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName", skill: skillA = "noSkill" } of getRobots()) { +//// console.log(nameA); +////} +////for ({name: nameA = "noName", skill: skillA = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({ +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of multiRobots) { +//// console.log(nameA); +////} +////for ({ +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of getMultiRobots()) { +//// console.log(nameA); +////} +////for ({ +//// name: nameA = "noName", +//// skills: { +//// primary: primaryA = "primary", +//// secondary: secondaryA = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(nameA); +////} +////for ({ name = "noName", skill = "noSkill" } of robots) { +//// console.log(nameA); +////} +////for ({ name = "noName", skill = "noSkill" } of getRobots()) { +//// console.log(nameA); +////} +////for ({ name = "noName", skill = "noSkill" } of [{ name: "mower", skill: "mowing" }, { name: "trimmer", skill: "trimming" }]) { +//// console.log(nameA); +////} +////for ({ +//// name = "noName", +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of multiRobots) { +//// console.log(nameA); +////} +////for ({ +//// name = "noName", +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of getMultiRobots()) { +//// console.log(nameA); +////} +////for ({ +//// name = "noName", +//// skills: { +//// primary = "primary", +//// secondary = "secondary" +//// } = { primary: "noSkill", secondary: "noSkill" } +////} of [{ name: "mower", skills: { primary: "mowing", secondary: "none" } }, +//// { name: "trimmer", skills: { primary: "trimming", secondary: "edging" } }]) { +//// console.log(nameA); +////} +verify.baselineCurrentFileBreakpointLocations(); From 64c96323aaedbecf32953144942b3ef8ed2db37c Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 23 Dec 2015 16:38:07 -0800 Subject: [PATCH 098/164] Added test. --- ...uallyTypedStringLiteralsInJsxAttributes01.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx diff --git a/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx b/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx new file mode 100644 index 00000000000..ce6f4b7ac2f --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx @@ -0,0 +1,16 @@ +// @jsx: preserve +// @declaration: true + +namespace JSX { + interface IntrinsicElements { + span: {}; + } +} + +const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; + +; +; + +; +; \ No newline at end of file From 4dc85dcbd68f559a433a5b917c183569066e133d Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 23 Dec 2015 16:53:02 -0800 Subject: [PATCH 099/164] Accepted baselines. --- ...StringLiteralsInJsxAttributes01.errors.txt | 32 +++++++++++++++++++ ...llyTypedStringLiteralsInJsxAttributes01.js | 30 +++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt create mode 100644 tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt new file mode 100644 index 00000000000..99bb5d6daf5 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt @@ -0,0 +1,32 @@ +tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(11,15): error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. + Type 'string' is not assignable to type '"C"'. +tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(13,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. + Type '"f"' is not assignable to type '"C"'. +tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(14,15): error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. + Type 'string' is not assignable to type '"C"'. + + +==== tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx (3 errors) ==== + + namespace JSX { + interface IntrinsicElements { + span: {}; + } + } + + const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; + + ; + ; + ~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. +!!! error TS2322: Type 'string' is not assignable to type '"C"'. + + ; + ~~~~~~~~~ +!!! error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. +!!! error TS2322: Type '"f"' is not assignable to type '"C"'. + ; + ~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. +!!! error TS2322: Type 'string' is not assignable to type '"C"'. \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js new file mode 100644 index 00000000000..c21247c2835 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.js @@ -0,0 +1,30 @@ +//// [contextuallyTypedStringLiteralsInJsxAttributes01.tsx] + +namespace JSX { + interface IntrinsicElements { + span: {}; + } +} + +const FooComponent = (props: { foo: "A" | "B" | "C" }) => {props.foo}; + +; +; + +; +; + +//// [contextuallyTypedStringLiteralsInJsxAttributes01.jsx] +var FooComponent = function (props) { return {props.foo}; }; +; +; +; +; + + +//// [contextuallyTypedStringLiteralsInJsxAttributes01.d.ts] +declare namespace JSX { +} +declare const FooComponent: (props: { + foo: "A" | "B" | "C"; +}) => any; From a0ef319f5db91c36b7b9a6ad161ec713f754d3fc Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 23 Dec 2015 17:10:16 -0800 Subject: [PATCH 100/164] Simplified JSX contextual typing code and added support for contextually typing string literal attribute initializers. --- src/compiler/checker.ts | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5d57e9d2028..00bddd2f7b1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7464,24 +7464,22 @@ namespace ts { return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; } - function getContextualTypeForJsxExpression(expr: JsxExpression | JsxSpreadAttribute): Type { - // Contextual type only applies to JSX expressions that are in attribute assignments (not in 'Children' positions) - if (expr.parent.kind === SyntaxKind.JsxAttribute) { - const attrib = expr.parent; - const attrsType = getJsxElementAttributesType(attrib.parent); + function getContextualTypeForJsxAttribute(attribute: JsxAttribute | JsxSpreadAttribute) { + const kind = attribute.kind; + const jsxElement = attribute.parent as JsxOpeningLikeElement; + const attrsType = getJsxElementAttributesType(jsxElement); + + if (attribute.kind === SyntaxKind.JsxAttribute) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } - else { - return getTypeOfPropertyOfType(attrsType, attrib.name.text); - } + return getTypeOfPropertyOfType(attrsType, (attribute as JsxAttribute).name.text); + } + else if (attribute.kind === SyntaxKind.JsxSpreadAttribute) { + return attrsType; } - if (expr.kind === SyntaxKind.JsxSpreadAttribute) { - return getJsxElementAttributesType(expr.parent); - } - - return undefined; + Debug.fail(`Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[${kind}]`); } // Return the contextual type for a given expression node. During overload resolution, a contextual type may temporarily @@ -7549,8 +7547,10 @@ namespace ts { case SyntaxKind.ParenthesizedExpression: return getContextualType(parent); case SyntaxKind.JsxExpression: + return getContextualType(parent); + case SyntaxKind.JsxAttribute: case SyntaxKind.JsxSpreadAttribute: - return getContextualTypeForJsxExpression(parent); + return getContextualTypeForJsxAttribute(parent); } return undefined; } From 6c8bb639393266cc44141670baec4dfc040eefe2 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Wed, 23 Dec 2015 17:10:54 -0800 Subject: [PATCH 101/164] Accepted baselines. --- ...ypedStringLiteralsInJsxAttributes01.errors.txt | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt index 99bb5d6daf5..b5d4e01b677 100644 --- a/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt +++ b/tests/baselines/reference/contextuallyTypedStringLiteralsInJsxAttributes01.errors.txt @@ -1,12 +1,10 @@ -tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(11,15): error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. - Type 'string' is not assignable to type '"C"'. tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(13,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. Type '"f"' is not assignable to type '"C"'. -tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(14,15): error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. - Type 'string' is not assignable to type '"C"'. +tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx(14,15): error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. + Type '"f"' is not assignable to type '"C"'. -==== tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx (3 errors) ==== +==== tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStringLiteralsInJsxAttributes01.tsx (2 errors) ==== namespace JSX { interface IntrinsicElements { @@ -18,9 +16,6 @@ tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStr ; ; - ~~~~~~~ -!!! error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. -!!! error TS2322: Type 'string' is not assignable to type '"C"'. ; ~~~~~~~~~ @@ -28,5 +23,5 @@ tests/cases/conformance/types/contextualTypes/jsxAttributes/contextuallyTypedStr !!! error TS2322: Type '"f"' is not assignable to type '"C"'. ; ~~~~~~~ -!!! error TS2322: Type 'string' is not assignable to type '"A" | "B" | "C"'. -!!! error TS2322: Type 'string' is not assignable to type '"C"'. \ No newline at end of file +!!! error TS2322: Type '"f"' is not assignable to type '"A" | "B" | "C"'. +!!! error TS2322: Type '"f"' is not assignable to type '"C"'. \ No newline at end of file From 64958669e1a0b25a9c0f02dd246c0beb7a40b995 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Thu, 24 Dec 2015 17:18:10 +0900 Subject: [PATCH 102/164] remove "this should be removed ..." codes --- src/services/shims.ts | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index 6b656ea2738..c12c52fa201 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -333,11 +333,6 @@ namespace ts { } public getScriptSnapshot(fileName: string): IScriptSnapshot { - // Shim the API changes for 1.5 release. This should be removed once - // TypeScript 1.5 has shipped. - if (this.files && this.files.indexOf(fileName) < 0) { - return undefined; - } var scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); return scriptSnapshot && new ScriptSnapshotShimAdapter(scriptSnapshot); } @@ -371,14 +366,7 @@ namespace ts { } public getDefaultLibFileName(options: CompilerOptions): string { - // Wrap the API changes for 1.5 release. This try/catch - // should be removed once TypeScript 1.5 has shipped. - try { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); - } - catch (e) { - return ""; - } + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); } } @@ -411,17 +399,9 @@ namespace ts { } public readDirectory(rootDir: string, extension: string, exclude: string[]): string[] { - // Wrap the API changes for 1.5 release. This try/catch - // should be removed once TypeScript 1.5 has shipped. - // Also consider removing the optional designation for + // Consider removing the optional designation for // the exclude param at this time. - var encoded: string; - try { - encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); - } - catch (e) { - encoded = this.shimHost.readDirectory(rootDir, extension); - } + var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); } @@ -889,9 +869,6 @@ namespace ts { "getEmitOutput('" + fileName + "')", () => { var output = this.languageService.getEmitOutput(fileName); - // Shim the API changes for 1.5 release. This should be removed once - // TypeScript 1.5 has shipped. - (output).emitOutputStatus = output.emitSkipped ? 1 : 0; return output; }); } From 6373cfff64dda36dcf23906e5726790ba29b15dd Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Thu, 24 Dec 2015 17:21:03 +0900 Subject: [PATCH 103/164] lets and template strings --- src/services/shims.ts | 202 +++++++++++++++++++++--------------------- 1 file changed, 101 insertions(+), 101 deletions(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index c12c52fa201..86bf15539bf 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -60,7 +60,7 @@ namespace ts { getNewLine?(): string; getProjectVersion?(): string; useCaseSensitiveFileNames?(): boolean; - + getModuleResolutionsForFile?(fileName: string): string; } @@ -247,14 +247,14 @@ namespace ts { } public getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange { - var oldSnapshotShim = oldSnapshot; - var encoded = this.scriptSnapshotShim.getChangeRange(oldSnapshotShim.scriptSnapshotShim); + let oldSnapshotShim = oldSnapshot; + let encoded = this.scriptSnapshotShim.getChangeRange(oldSnapshotShim.scriptSnapshotShim); // TODO: should this be '==='? if (encoded == null) { return null; } - var decoded: { span: { start: number; length: number; }; newLength: number; } = JSON.parse(encoded); + let decoded: { span: { start: number; length: number; }; newLength: number; } = JSON.parse(encoded); return createTextChangeRange( createTextSpan(decoded.span.start, decoded.span.length), decoded.newLength); } @@ -272,9 +272,9 @@ namespace ts { private files: string[]; private loggingEnabled = false; private tracingEnabled = false; - + public resolveModuleNames: (moduleName: string[], containingFile: string) => ResolvedModule[]; - + constructor(private shimHost: LanguageServiceShimHost) { // if shimHost is a COM object then property check will become method call with no arguments. // 'in' does not have this effect. @@ -319,7 +319,7 @@ namespace ts { } public getCompilationSettings(): CompilerOptions { - var settingsJson = this.shimHost.getCompilationSettings(); + let settingsJson = this.shimHost.getCompilationSettings(); // TODO: should this be '==='? if (settingsJson == null || settingsJson == "") { throw Error("LanguageServiceShimHostAdapter.getCompilationSettings: empty compilationSettings"); @@ -328,12 +328,12 @@ namespace ts { } public getScriptFileNames(): string[] { - var encoded = this.shimHost.getScriptFileNames(); + let encoded = this.shimHost.getScriptFileNames(); return this.files = JSON.parse(encoded); } public getScriptSnapshot(fileName: string): IScriptSnapshot { - var scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); + let scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); return scriptSnapshot && new ScriptSnapshotShimAdapter(scriptSnapshot); } @@ -342,7 +342,7 @@ namespace ts { } public getLocalizedDiagnosticMessages(): any { - var diagnosticMessagesJson = this.shimHost.getLocalizedDiagnosticMessages(); + let diagnosticMessagesJson = this.shimHost.getLocalizedDiagnosticMessages(); if (diagnosticMessagesJson == null || diagnosticMessagesJson == "") { return null; } @@ -357,7 +357,7 @@ namespace ts { } public getCancellationToken(): HostCancellationToken { - var hostCancellationToken = this.shimHost.getCancellationToken(); + let hostCancellationToken = this.shimHost.getCancellationToken(); return new ThrottledCancellationToken(hostCancellationToken); } @@ -381,8 +381,8 @@ namespace ts { } public isCancellationRequested(): boolean { - var time = Date.now(); - var duration = Math.abs(time - this.lastCancellationCheckTime); + let time = Date.now(); + let duration = Math.abs(time - this.lastCancellationCheckTime); if (duration > 10) { // Check no more than once every 10 ms. this.lastCancellationCheckTime = time; @@ -401,36 +401,37 @@ namespace ts { public readDirectory(rootDir: string, extension: string, exclude: string[]): string[] { // Consider removing the optional designation for // the exclude param at this time. - var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + let encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); } - + public fileExists(fileName: string): boolean { return this.shimHost.fileExists(fileName); } - + public readFile(fileName: string): string { return this.shimHost.readFile(fileName); } } function simpleForwardCall(logger: Logger, actionDescription: string, action: () => any, logPerformance: boolean): any { + let start: number; if (logPerformance) { logger.log(actionDescription); - var start = Date.now(); + start = Date.now(); } - var result = action(); + let result = action(); if (logPerformance) { - var end = Date.now(); - logger.log(actionDescription + " completed in " + (end - start) + " msec"); - if (typeof (result) === "string") { - var str = result; + let end = Date.now(); + logger.log(`${actionDescription} completed in ${end - start} msec`); + if (typeof result === "string") { + let str = result; if (str.length > 128) { str = str.substring(0, 128) + "..."; } - logger.log(" result.length=" + str.length + ", result='" + JSON.stringify(str) + "'"); + logger.log(` result.length=${str.length}, result='${JSON.stringify(str)}'`); } } @@ -439,7 +440,7 @@ namespace ts { function forwardJSONCall(logger: Logger, actionDescription: string, action: () => any, logPerformance: boolean): string { try { - var result = simpleForwardCall(logger, actionDescription, action, logPerformance); + let result = simpleForwardCall(logger, actionDescription, action, logPerformance); return JSON.stringify({ result: result }); } catch (err) { @@ -461,7 +462,7 @@ namespace ts { } } - export function realizeDiagnostics(diagnostics: Diagnostic[], newLine: string): { message: string; start: number; length: number; category: string; code: number; } []{ + export function realizeDiagnostics(diagnostics: Diagnostic[], newLine: string): { message: string; start: number; length: number; category: string; code: number; }[] { return diagnostics.map(d => realizeDiagnostic(d, newLine)); } @@ -520,7 +521,7 @@ namespace ts { */ public refresh(throwOnError: boolean): void { this.forwardJSONCall( - "refresh(" + throwOnError + ")", + `refresh(${throwOnError})`, () => { return null; }); @@ -535,32 +536,32 @@ namespace ts { }); } - private realizeDiagnostics(diagnostics: Diagnostic[]): { message: string; start: number; length: number; category: string; }[]{ - var newLine = getNewLineOrDefaultFromHost(this.host); + private realizeDiagnostics(diagnostics: Diagnostic[]): { message: string; start: number; length: number; category: string; }[] { + let newLine = getNewLineOrDefaultFromHost(this.host); return ts.realizeDiagnostics(diagnostics, newLine); } public getSyntacticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( - "getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", + `getSyntacticClassifications('${fileName}', ${start}, ${length})`, () => { - var classifications = this.languageService.getSyntacticClassifications(fileName, createTextSpan(start, length)); + let classifications = this.languageService.getSyntacticClassifications(fileName, createTextSpan(start, length)); return classifications; }); } public getSemanticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( - "getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", + `getSemanticClassifications('${fileName}', ${start}, ${length})`, () => { - var classifications = this.languageService.getSemanticClassifications(fileName, createTextSpan(start, length)); + let classifications = this.languageService.getSemanticClassifications(fileName, createTextSpan(start, length)); return classifications; }); } public getEncodedSyntacticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( - "getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", + `getEncodedSyntacticClassifications('${fileName}', ${start}, ${length})`, () => { // directly serialize the spans out to a string. This is much faster to decode // on the managed side versus a full JSON array. @@ -570,7 +571,7 @@ namespace ts { public getEncodedSemanticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( - "getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", + `getEncodedSemanticClassifications('${fileName}', ${start}, ${length})`, () => { // directly serialize the spans out to a string. This is much faster to decode // on the managed side versus a full JSON array. @@ -580,18 +581,18 @@ namespace ts { public getSyntacticDiagnostics(fileName: string): string { return this.forwardJSONCall( - "getSyntacticDiagnostics('" + fileName + "')", + `getSyntacticDiagnostics('${fileName}')`, () => { - var diagnostics = this.languageService.getSyntacticDiagnostics(fileName); + let diagnostics = this.languageService.getSyntacticDiagnostics(fileName); return this.realizeDiagnostics(diagnostics); }); } public getSemanticDiagnostics(fileName: string): string { return this.forwardJSONCall( - "getSemanticDiagnostics('" + fileName + "')", + `getSemanticDiagnostics('${fileName}')`, () => { - var diagnostics = this.languageService.getSemanticDiagnostics(fileName); + let diagnostics = this.languageService.getSemanticDiagnostics(fileName); return this.realizeDiagnostics(diagnostics); }); } @@ -600,7 +601,7 @@ namespace ts { return this.forwardJSONCall( "getCompilerOptionsDiagnostics()", () => { - var diagnostics = this.languageService.getCompilerOptionsDiagnostics(); + let diagnostics = this.languageService.getCompilerOptionsDiagnostics(); return this.realizeDiagnostics(diagnostics); }); } @@ -613,9 +614,9 @@ namespace ts { */ public getQuickInfoAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getQuickInfoAtPosition('" + fileName + "', " + position + ")", + `getQuickInfoAtPosition('${fileName}', ${position})`, () => { - var quickInfo = this.languageService.getQuickInfoAtPosition(fileName, position); + let quickInfo = this.languageService.getQuickInfoAtPosition(fileName, position); return quickInfo; }); } @@ -629,9 +630,9 @@ namespace ts { */ public getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): string { return this.forwardJSONCall( - "getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", + `getNameOrDottedNameSpan('${fileName}', ${startPos}, ${endPos})`, () => { - var spanInfo = this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); + let spanInfo = this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); return spanInfo; }); } @@ -642,9 +643,9 @@ namespace ts { */ public getBreakpointStatementAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", + `getBreakpointStatementAtPosition('${fileName}', ${position})`, () => { - var spanInfo = this.languageService.getBreakpointStatementAtPosition(fileName, position); + let spanInfo = this.languageService.getBreakpointStatementAtPosition(fileName, position); return spanInfo; }); } @@ -653,9 +654,9 @@ namespace ts { public getSignatureHelpItems(fileName: string, position: number): string { return this.forwardJSONCall( - "getSignatureHelpItems('" + fileName + "', " + position + ")", + `getSignatureHelpItems('${fileName}', ${position})`, () => { - var signatureInfo = this.languageService.getSignatureHelpItems(fileName, position); + let signatureInfo = this.languageService.getSignatureHelpItems(fileName, position); return signatureInfo; }); } @@ -668,7 +669,7 @@ namespace ts { */ public getDefinitionAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getDefinitionAtPosition('" + fileName + "', " + position + ")", + `getDefinitionAtPosition('${fileName}', ${position})`, () => { return this.languageService.getDefinitionAtPosition(fileName, position); }); @@ -682,7 +683,7 @@ namespace ts { */ public getTypeDefinitionAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", + `getTypeDefinitionAtPosition('${fileName}', ${position})`, () => { return this.languageService.getTypeDefinitionAtPosition(fileName, position); }); @@ -690,7 +691,7 @@ namespace ts { public getRenameInfo(fileName: string, position: number): string { return this.forwardJSONCall( - "getRenameInfo('" + fileName + "', " + position + ")", + `getRenameInfo('${fileName}', ${position})`, () => { return this.languageService.getRenameInfo(fileName, position); }); @@ -698,7 +699,7 @@ namespace ts { public findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): string { return this.forwardJSONCall( - "findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", + `findRenameLocations('${fileName}', ${position}, ${findInStrings}, ${findInComments})`, () => { return this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); }); @@ -707,9 +708,9 @@ namespace ts { /// GET BRACE MATCHING public getBraceMatchingAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getBraceMatchingAtPosition('" + fileName + "', " + position + ")", + `getBraceMatchingAtPosition('${fileName}', ${position})`, () => { - var textRanges = this.languageService.getBraceMatchingAtPosition(fileName, position); + let textRanges = this.languageService.getBraceMatchingAtPosition(fileName, position); return textRanges; }); } @@ -717,9 +718,9 @@ namespace ts { /// GET SMART INDENT public getIndentationAtPosition(fileName: string, position: number, options: string /*Services.EditorOptions*/): string { return this.forwardJSONCall( - "getIndentationAtPosition('" + fileName + "', " + position + ")", + `getIndentationAtPosition('${fileName}', ${position})`, () => { - var localOptions: EditorOptions = JSON.parse(options); + let localOptions: EditorOptions = JSON.parse(options); return this.languageService.getIndentationAtPosition(fileName, position, localOptions); }); } @@ -728,7 +729,7 @@ namespace ts { public getReferencesAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getReferencesAtPosition('" + fileName + "', " + position + ")", + `getReferencesAtPosition('${fileName}', ${position})`, () => { return this.languageService.getReferencesAtPosition(fileName, position); }); @@ -736,7 +737,7 @@ namespace ts { public findReferences(fileName: string, position: number): string { return this.forwardJSONCall( - "findReferences('" + fileName + "', " + position + ")", + `findReferences('${fileName}', ${position})`, () => { return this.languageService.findReferences(fileName, position); }); @@ -744,7 +745,7 @@ namespace ts { public getOccurrencesAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getOccurrencesAtPosition('" + fileName + "', " + position + ")", + `getOccurrencesAtPosition('${fileName}', ${position})`, () => { return this.languageService.getOccurrencesAtPosition(fileName, position); }); @@ -752,9 +753,9 @@ namespace ts { public getDocumentHighlights(fileName: string, position: number, filesToSearch: string): string { return this.forwardJSONCall( - "getDocumentHighlights('" + fileName + "', " + position + ")", + `getDocumentHighlights('${fileName}', ${position})`, () => { - var results = this.languageService.getDocumentHighlights(fileName, position, JSON.parse(filesToSearch)); + let results = this.languageService.getDocumentHighlights(fileName, position, JSON.parse(filesToSearch)); // workaround for VS document higlighting issue - keep only items from the initial file let normalizedName = normalizeSlashes(fileName).toLowerCase(); return filter(results, r => normalizeSlashes(r.fileName).toLowerCase() === normalizedName); @@ -770,9 +771,9 @@ namespace ts { */ public getCompletionsAtPosition(fileName: string, position: number) { return this.forwardJSONCall( - "getCompletionsAtPosition('" + fileName + "', " + position + ")", + `getCompletionsAtPosition('${fileName}', ${position})`, () => { - var completion = this.languageService.getCompletionsAtPosition(fileName, position); + let completion = this.languageService.getCompletionsAtPosition(fileName, position); return completion; }); } @@ -780,46 +781,46 @@ namespace ts { /** Get a string based representation of a completion list entry details */ public getCompletionEntryDetails(fileName: string, position: number, entryName: string) { return this.forwardJSONCall( - "getCompletionEntryDetails('" + fileName + "', " + position + ", " + entryName + ")", + `getCompletionEntryDetails('${fileName}', ${position}, ${entryName})`, () => { - var details = this.languageService.getCompletionEntryDetails(fileName, position, entryName); + let details = this.languageService.getCompletionEntryDetails(fileName, position, entryName); return details; }); } public getFormattingEditsForRange(fileName: string, start: number, end: number, options: string/*Services.FormatCodeOptions*/): string { return this.forwardJSONCall( - "getFormattingEditsForRange('" + fileName + "', " + start + ", " + end + ")", + `getFormattingEditsForRange('${fileName}', ${start}, ${end})`, () => { - var localOptions: ts.FormatCodeOptions = JSON.parse(options); - var edits = this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); + let localOptions: ts.FormatCodeOptions = JSON.parse(options); + let edits = this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); return edits; }); } public getFormattingEditsForDocument(fileName: string, options: string/*Services.FormatCodeOptions*/): string { return this.forwardJSONCall( - "getFormattingEditsForDocument('" + fileName + "')", + `getFormattingEditsForDocument('${fileName}')`, () => { - var localOptions: ts.FormatCodeOptions = JSON.parse(options); - var edits = this.languageService.getFormattingEditsForDocument(fileName, localOptions); + let localOptions: ts.FormatCodeOptions = JSON.parse(options); + let edits = this.languageService.getFormattingEditsForDocument(fileName, localOptions); return edits; }); } public getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: string/*Services.FormatCodeOptions*/): string { return this.forwardJSONCall( - "getFormattingEditsAfterKeystroke('" + fileName + "', " + position + ", '" + key + "')", + `getFormattingEditsAfterKeystroke('${fileName}', ${position}, '${key}')`, () => { - var localOptions: ts.FormatCodeOptions = JSON.parse(options); - var edits = this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); + let localOptions: ts.FormatCodeOptions = JSON.parse(options); + let edits = this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); return edits; }); } public getDocCommentTemplateAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( - "getDocCommentTemplateAtPosition('" + fileName + "', " + position + ")", + `getDocCommentTemplateAtPosition('${fileName}', ${position})`, () => this.languageService.getDocCommentTemplateAtPosition(fileName, position) ); } @@ -829,36 +830,36 @@ namespace ts { /** Return a list of symbols that are interesting to navigate to */ public getNavigateToItems(searchValue: string, maxResultCount?: number): string { return this.forwardJSONCall( - "getNavigateToItems('" + searchValue + "', " + maxResultCount+ ")", + `getNavigateToItems('${searchValue}', ${maxResultCount})`, () => { - var items = this.languageService.getNavigateToItems(searchValue, maxResultCount); + let items = this.languageService.getNavigateToItems(searchValue, maxResultCount); return items; }); } public getNavigationBarItems(fileName: string): string { return this.forwardJSONCall( - "getNavigationBarItems('" + fileName + "')", + `getNavigationBarItems('${fileName}')`, () => { - var items = this.languageService.getNavigationBarItems(fileName); + let items = this.languageService.getNavigationBarItems(fileName); return items; }); } public getOutliningSpans(fileName: string): string { return this.forwardJSONCall( - "getOutliningSpans('" + fileName + "')", + `getOutliningSpans('${fileName}')`, () => { - var items = this.languageService.getOutliningSpans(fileName); + let items = this.languageService.getOutliningSpans(fileName); return items; }); } public getTodoComments(fileName: string, descriptors: string): string { return this.forwardJSONCall( - "getTodoComments('" + fileName + "')", + `getTodoComments('${fileName}')`, () => { - var items = this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); + let items = this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); return items; }); } @@ -866,9 +867,9 @@ namespace ts { /// Emit public getEmitOutput(fileName: string): string { return this.forwardJSONCall( - "getEmitOutput('" + fileName + "')", + `getEmitOutput('${fileName}')`, () => { - var output = this.languageService.getEmitOutput(fileName); + let output = this.languageService.getEmitOutput(fileName); return output; }); } @@ -895,12 +896,11 @@ namespace ts { /// COLORIZATION public getClassificationsForLine(text: string, lexState: EndOfLineState, classifyKeywordsInGenerics?: boolean): string { - var classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); - var items = classification.entries; - var result = ""; - for (var i = 0; i < items.length; i++) { - result += items[i].length + "\n"; - result += items[i].classification + "\n"; + let classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); + let result = ""; + for (let item of classification.entries) { + result += item.length + "\n"; + result += item.classification + "\n"; } result += classification.finalLexState; return result; @@ -917,16 +917,16 @@ namespace ts { private forwardJSONCall(actionDescription: string, action: () => any): any { return forwardJSONCall(this.logger, actionDescription, action, this.logPerformance); } - + public resolveModuleName(fileName: string, moduleName: string, compilerOptionsJson: string): string { return this.forwardJSONCall(`resolveModuleName('${fileName}')`, () => { let compilerOptions = JSON.parse(compilerOptionsJson); const result = resolveModuleName(moduleName, normalizeSlashes(fileName), compilerOptions, this.host); return { - resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName: undefined, + resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName : undefined, failedLookupLocations: result.failedLookupLocations }; - }); + }); } public getPreProcessedFileInfo(fileName: string, sourceTextSnapshot: IScriptSnapshot): string { @@ -934,8 +934,8 @@ namespace ts { "getPreProcessedFileInfo('" + fileName + "')", () => { // for now treat files as JavaScript - var result = preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); - var convertResult = { + let result = preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); + let convertResult = { referencedFiles: [], importedFiles: [], ambientExternalModules: result.ambientExternalModules, @@ -963,7 +963,7 @@ namespace ts { public getTSConfigFileInfo(fileName: string, sourceTextSnapshot: IScriptSnapshot): string { return this.forwardJSONCall( - "getTSConfigFileInfo('" + fileName + "')", + `getTSConfigFileInfo('${fileName}')`, () => { let text = sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()); @@ -977,7 +977,7 @@ namespace ts { }; } - var configFile = parseJsonConfigFileContent(result.config, this.host, getDirectoryPath(normalizeSlashes(fileName))); + let configFile = parseJsonConfigFileContent(result.config, this.host, getDirectoryPath(normalizeSlashes(fileName))); return { options: configFile.options, @@ -1012,8 +1012,8 @@ namespace ts { if (this.documentRegistry === undefined) { this.documentRegistry = createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames(), host.getCurrentDirectory()); } - var hostAdapter = new LanguageServiceShimHostAdapter(host); - var languageService = createLanguageService(hostAdapter, this.documentRegistry); + let hostAdapter = new LanguageServiceShimHostAdapter(host); + let languageService = createLanguageService(hostAdapter, this.documentRegistry); return new LanguageServiceShimObject(this, host, languageService); } catch (err) { @@ -1034,7 +1034,7 @@ namespace ts { public createCoreServicesShim(host: CoreServicesShimHost): CoreServicesShim { try { - var adapter = new CoreServicesShimHostAdapter(host); + let adapter = new CoreServicesShimHostAdapter(host); return new CoreServicesShimObject(this, host, adapter); } catch (err) { @@ -1054,7 +1054,7 @@ namespace ts { } public unregisterShim(shim: Shim): void { - for (var i = 0, n = this._shims.length; i < n; i++) { + for (let i = 0, n = this._shims.length; i < n; i++) { if (this._shims[i] === shim) { delete this._shims[i]; return; From 9b9abf8674d8d8a282a010aa96ad2ce6233e3731 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 28 Dec 2015 16:50:58 -0500 Subject: [PATCH 104/164] Lint 'outliningElementsCollector.ts'. --- Jakefile.js | 5 ++- src/services/outliningElementsCollector.ts | 47 +++++++++++----------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index 288472a697b..b81596cfbfb 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -921,11 +921,14 @@ function lintFileAsync(options, path, cb) { }); } +var servicesLintTargets = ["services.ts", "outliningElementsCollector.ts"].map(function (s) { + return path.join(servicesDirectory, s); +}); var lintTargets = compilerSources .concat(harnessCoreSources) .concat(serverCoreSources) .concat(scriptSources) - .concat([path.join(servicesDirectory, "services.ts")]); + .concat(servicesLintTargets); desc("Runs tslint on the compiler sources"); task("lint", ["build-rules"], function() { diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts index 08b089cd75e..fe0d94a2365 100644 --- a/src/services/outliningElementsCollector.ts +++ b/src/services/outliningElementsCollector.ts @@ -1,13 +1,13 @@ /* @internal */ namespace ts { - export module OutliningElementsCollector { + export namespace OutliningElementsCollector { export function collectElements(sourceFile: SourceFile): OutliningSpan[] { - let elements: OutliningSpan[] = []; - let collapseText = "..."; + const elements: OutliningSpan[] = []; + const collapseText = "..."; function addOutliningSpan(hintSpanNode: Node, startElement: Node, endElement: Node, autoCollapse: boolean) { if (hintSpanNode && startElement && endElement) { - let span: OutliningSpan = { + const span: OutliningSpan = { textSpan: createTextSpanFromBounds(startElement.pos, endElement.end), hintSpan: createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end), bannerText: collapseText, @@ -19,7 +19,7 @@ namespace ts { function addOutliningSpanComments(commentSpan: CommentRange, autoCollapse: boolean) { if (commentSpan) { - let span: OutliningSpan = { + const span: OutliningSpan = { textSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end), hintSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end), bannerText: collapseText, @@ -30,7 +30,7 @@ namespace ts { } function addOutliningForLeadingCommentsForNode(n: Node) { - let comments = ts.getLeadingCommentRangesOfNode(n, sourceFile); + const comments = ts.getLeadingCommentRangesOfNode(n, sourceFile); if (comments) { let firstSingleLineCommentStart = -1; @@ -38,7 +38,7 @@ namespace ts { let isFirstSingleLineComment = true; let singleLineCommentCount = 0; - for (let currentComment of comments) { + for (const currentComment of comments) { // For single line comments, combine consecutive ones (2 or more) into // a single span from the start of the first till the end of the last @@ -64,14 +64,15 @@ namespace ts { } } - function combineAndAddMultipleSingleLineComments(count: number, start: number, end: number) { + function combineAndAddMultipleSingleLineComments(count: number, start: number, end: number) { + // Only outline spans of two or more consecutive single line comments if (count > 1) { - let multipleSingleLineComments = { + const multipleSingleLineComments = { pos: start, end: end, kind: SyntaxKind.SingleLineCommentTrivia - } + }; addOutliningSpanComments(multipleSingleLineComments, /*autoCollapse*/ false); } @@ -82,7 +83,7 @@ namespace ts { } let depth = 0; - let maxDepth = 20; + const maxDepth = 20; function walk(n: Node): void { if (depth > maxDepth) { return; @@ -95,9 +96,9 @@ namespace ts { switch (n.kind) { case SyntaxKind.Block: if (!isFunctionBlock(n)) { - let parent = n.parent; - let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + const parent = n.parent; + const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); // Check if the block is standalone, or 'attached' to some parent statement. // If the latter, we want to collaps the block, but consider its hint span @@ -117,13 +118,13 @@ namespace ts { if (parent.kind === SyntaxKind.TryStatement) { // Could be the try-block, or the finally-block. - let tryStatement = parent; + const tryStatement = parent; if (tryStatement.tryBlock === n) { addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); break; } else if (tryStatement.finallyBlock === n) { - let finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); + const finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); if (finallyKeyword) { addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); break; @@ -135,7 +136,7 @@ namespace ts { // Block was a standalone block. In this case we want to only collapse // the span of the block, independent of any parent span. - let span = createTextSpanFromBounds(n.getStart(), n.end); + const span = createTextSpanFromBounds(n.getStart(), n.end); elements.push({ textSpan: span, hintSpan: span, @@ -147,8 +148,8 @@ namespace ts { // Fallthrough. case SyntaxKind.ModuleBlock: { - let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } @@ -157,14 +158,14 @@ namespace ts { case SyntaxKind.EnumDeclaration: case SyntaxKind.ObjectLiteralExpression: case SyntaxKind.CaseBlock: { - let openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - let closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } case SyntaxKind.ArrayLiteralExpression: - let openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile); - let closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); + const openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile); + const closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); break; } From f9eb330b198360e4134873b5cba58de67fde7df0 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 28 Dec 2015 16:58:20 -0500 Subject: [PATCH 105/164] Lint 'navigateTo.ts'. --- Jakefile.js | 6 ++++- src/services/navigateTo.ts | 48 +++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index b81596cfbfb..ad904fc3ea4 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -921,7 +921,11 @@ function lintFileAsync(options, path, cb) { }); } -var servicesLintTargets = ["services.ts", "outliningElementsCollector.ts"].map(function (s) { +var servicesLintTargets = [ + "services.ts", + "outliningElementsCollector.ts", + "navigateTo.ts", +].map(function (s) { return path.join(servicesDirectory, s); }); var lintTargets = compilerSources diff --git a/src/services/navigateTo.ts b/src/services/navigateTo.ts index 2a0abba8695..8022e2fad7a 100644 --- a/src/services/navigateTo.ts +++ b/src/services/navigateTo.ts @@ -3,19 +3,19 @@ namespace ts.NavigateTo { type RawNavigateToItem = { name: string; fileName: string; matchKind: PatternMatchKind; isCaseSensitive: boolean; declaration: Declaration }; export function getNavigateToItems(program: Program, cancellationToken: CancellationToken, searchValue: string, maxResultCount: number): NavigateToItem[] { - let patternMatcher = createPatternMatcher(searchValue); + const patternMatcher = createPatternMatcher(searchValue); let rawItems: RawNavigateToItem[] = []; // This means "compare in a case insensitive manner." - let baseSensitivity: Intl.CollatorOptions = { sensitivity: "base" }; + const baseSensitivity: Intl.CollatorOptions = { sensitivity: "base" }; // Search the declarations in all files and output matched NavigateToItem into array of NavigateToItem[] forEach(program.getSourceFiles(), sourceFile => { cancellationToken.throwIfCancellationRequested(); - let nameToDeclarations = sourceFile.getNamedDeclarations(); - for (let name in nameToDeclarations) { - let declarations = getProperty(nameToDeclarations, name); + const nameToDeclarations = sourceFile.getNamedDeclarations(); + for (const name in nameToDeclarations) { + const declarations = getProperty(nameToDeclarations, name); if (declarations) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. @@ -25,11 +25,11 @@ namespace ts.NavigateTo { continue; } - for (let declaration of declarations) { + for (const declaration of declarations) { // It was a match! If the pattern has dots in it, then also see if the // declaration container matches as well. if (patternMatcher.patternContainsDots) { - let containers = getContainers(declaration); + const containers = getContainers(declaration); if (!containers) { return undefined; } @@ -41,8 +41,8 @@ namespace ts.NavigateTo { } } - let fileName = sourceFile.fileName; - let matchKind = bestMatchKind(matches); + const fileName = sourceFile.fileName; + const matchKind = bestMatchKind(matches); rawItems.push({ name, fileName, matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration }); } } @@ -54,7 +54,7 @@ namespace ts.NavigateTo { rawItems = rawItems.slice(0, maxResultCount); } - let items = map(rawItems, createNavigateToItem); + const items = map(rawItems, createNavigateToItem); return items; @@ -62,7 +62,7 @@ namespace ts.NavigateTo { Debug.assert(matches.length > 0); // This is a case sensitive match, only if all the submatches were case sensitive. - for (let match of matches) { + for (const match of matches) { if (!match.isCaseSensitive) { return false; } @@ -86,16 +86,16 @@ namespace ts.NavigateTo { function tryAddSingleDeclarationName(declaration: Declaration, containers: string[]) { if (declaration && declaration.name) { - let text = getTextOfIdentifierOrLiteral(declaration.name); + const text = getTextOfIdentifierOrLiteral(declaration.name); if (text !== undefined) { containers.unshift(text); } else if (declaration.name.kind === SyntaxKind.ComputedPropertyName) { - return tryAddComputedPropertyName((declaration.name).expression, containers, /*includeLastPortion:*/ true); + return tryAddComputedPropertyName((declaration.name).expression, containers, /*includeLastPortion*/ true); } else { // Don't know how to add this. - return false + return false; } } @@ -106,7 +106,7 @@ namespace ts.NavigateTo { // // [X.Y.Z]() { } function tryAddComputedPropertyName(expression: Expression, containers: string[], includeLastPortion: boolean): boolean { - let text = getTextOfIdentifierOrLiteral(expression); + const text = getTextOfIdentifierOrLiteral(expression); if (text !== undefined) { if (includeLastPortion) { containers.unshift(text); @@ -115,24 +115,24 @@ namespace ts.NavigateTo { } if (expression.kind === SyntaxKind.PropertyAccessExpression) { - let propertyAccess = expression; + const propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); } - return tryAddComputedPropertyName(propertyAccess.expression, containers, /*includeLastPortion:*/ true); + return tryAddComputedPropertyName(propertyAccess.expression, containers, /*includeLastPortion*/ true); } return false; } function getContainers(declaration: Declaration) { - let containers: string[] = []; + const containers: string[] = []; // First, if we started with a computed property name, then add all but the last // portion into the container array. if (declaration.name.kind === SyntaxKind.ComputedPropertyName) { - if (!tryAddComputedPropertyName((declaration.name).expression, containers, /*includeLastPortion:*/ false)) { + if (!tryAddComputedPropertyName((declaration.name).expression, containers, /*includeLastPortion*/ false)) { return undefined; } } @@ -155,8 +155,8 @@ namespace ts.NavigateTo { Debug.assert(matches.length > 0); let bestMatchKind = PatternMatchKind.camelCase; - for (let match of matches) { - let kind = match.kind; + for (const match of matches) { + const kind = match.kind; if (kind < bestMatchKind) { bestMatchKind = kind; } @@ -171,13 +171,13 @@ namespace ts.NavigateTo { // We first sort case insensitively. So "Aaa" will come before "bar". // Then we sort case sensitively, so "aaa" will come before "Aaa". return i1.matchKind - i2.matchKind || - i1.name.localeCompare(i2.name, undefined, baseSensitivity) || + i1.name.localeCompare(i2.name, undefined, baseSensitivity) || i1.name.localeCompare(i2.name); } function createNavigateToItem(rawItem: RawNavigateToItem): NavigateToItem { - let declaration = rawItem.declaration; - let container = getContainerNode(declaration); + const declaration = rawItem.declaration; + const container = getContainerNode(declaration); return { name: rawItem.name, kind: getNodeKind(declaration), From 51933a231fedbc46a5e15ec0bc1e5c08d179f880 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 28 Dec 2015 17:00:36 -0500 Subject: [PATCH 106/164] Flattened 'ts.OutliningElementsCollector' to a single declaration. --- src/services/outliningElementsCollector.ts | 288 ++++++++++----------- 1 file changed, 143 insertions(+), 145 deletions(-) diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts index fe0d94a2365..fa4f46b5010 100644 --- a/src/services/outliningElementsCollector.ts +++ b/src/services/outliningElementsCollector.ts @@ -1,181 +1,179 @@ /* @internal */ -namespace ts { - export namespace OutliningElementsCollector { - export function collectElements(sourceFile: SourceFile): OutliningSpan[] { - const elements: OutliningSpan[] = []; - const collapseText = "..."; +namespace ts.OutliningElementsCollector { + export function collectElements(sourceFile: SourceFile): OutliningSpan[] { + const elements: OutliningSpan[] = []; + const collapseText = "..."; - function addOutliningSpan(hintSpanNode: Node, startElement: Node, endElement: Node, autoCollapse: boolean) { - if (hintSpanNode && startElement && endElement) { - const span: OutliningSpan = { - textSpan: createTextSpanFromBounds(startElement.pos, endElement.end), - hintSpan: createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end), - bannerText: collapseText, - autoCollapse: autoCollapse - }; - elements.push(span); - } + function addOutliningSpan(hintSpanNode: Node, startElement: Node, endElement: Node, autoCollapse: boolean) { + if (hintSpanNode && startElement && endElement) { + const span: OutliningSpan = { + textSpan: createTextSpanFromBounds(startElement.pos, endElement.end), + hintSpan: createTextSpanFromBounds(hintSpanNode.getStart(), hintSpanNode.end), + bannerText: collapseText, + autoCollapse: autoCollapse + }; + elements.push(span); } + } - function addOutliningSpanComments(commentSpan: CommentRange, autoCollapse: boolean) { - if (commentSpan) { - const span: OutliningSpan = { - textSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end), - hintSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end), - bannerText: collapseText, - autoCollapse: autoCollapse - }; - elements.push(span); - } + function addOutliningSpanComments(commentSpan: CommentRange, autoCollapse: boolean) { + if (commentSpan) { + const span: OutliningSpan = { + textSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end), + hintSpan: createTextSpanFromBounds(commentSpan.pos, commentSpan.end), + bannerText: collapseText, + autoCollapse: autoCollapse + }; + elements.push(span); } + } - function addOutliningForLeadingCommentsForNode(n: Node) { - const comments = ts.getLeadingCommentRangesOfNode(n, sourceFile); + function addOutliningForLeadingCommentsForNode(n: Node) { + const comments = ts.getLeadingCommentRangesOfNode(n, sourceFile); - if (comments) { - let firstSingleLineCommentStart = -1; - let lastSingleLineCommentEnd = -1; - let isFirstSingleLineComment = true; - let singleLineCommentCount = 0; + if (comments) { + let firstSingleLineCommentStart = -1; + let lastSingleLineCommentEnd = -1; + let isFirstSingleLineComment = true; + let singleLineCommentCount = 0; - for (const currentComment of comments) { + for (const currentComment of comments) { - // For single line comments, combine consecutive ones (2 or more) into - // a single span from the start of the first till the end of the last - if (currentComment.kind === SyntaxKind.SingleLineCommentTrivia) { - if (isFirstSingleLineComment) { - firstSingleLineCommentStart = currentComment.pos; - } - isFirstSingleLineComment = false; - lastSingleLineCommentEnd = currentComment.end; - singleLineCommentCount++; - } - else if (currentComment.kind === SyntaxKind.MultiLineCommentTrivia) { - combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd); - addOutliningSpanComments(currentComment, /*autoCollapse*/ false); - - singleLineCommentCount = 0; - lastSingleLineCommentEnd = -1; - isFirstSingleLineComment = true; + // For single line comments, combine consecutive ones (2 or more) into + // a single span from the start of the first till the end of the last + if (currentComment.kind === SyntaxKind.SingleLineCommentTrivia) { + if (isFirstSingleLineComment) { + firstSingleLineCommentStart = currentComment.pos; } + isFirstSingleLineComment = false; + lastSingleLineCommentEnd = currentComment.end; + singleLineCommentCount++; } + else if (currentComment.kind === SyntaxKind.MultiLineCommentTrivia) { + combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd); + addOutliningSpanComments(currentComment, /*autoCollapse*/ false); - combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd); + singleLineCommentCount = 0; + lastSingleLineCommentEnd = -1; + isFirstSingleLineComment = true; + } } + + combineAndAddMultipleSingleLineComments(singleLineCommentCount, firstSingleLineCommentStart, lastSingleLineCommentEnd); + } + } + + function combineAndAddMultipleSingleLineComments(count: number, start: number, end: number) { + + // Only outline spans of two or more consecutive single line comments + if (count > 1) { + const multipleSingleLineComments = { + pos: start, + end: end, + kind: SyntaxKind.SingleLineCommentTrivia + }; + + addOutliningSpanComments(multipleSingleLineComments, /*autoCollapse*/ false); + } + } + + function autoCollapse(node: Node) { + return isFunctionBlock(node) && node.parent.kind !== SyntaxKind.ArrowFunction; + } + + let depth = 0; + const maxDepth = 20; + function walk(n: Node): void { + if (depth > maxDepth) { + return; } - function combineAndAddMultipleSingleLineComments(count: number, start: number, end: number) { - - // Only outline spans of two or more consecutive single line comments - if (count > 1) { - const multipleSingleLineComments = { - pos: start, - end: end, - kind: SyntaxKind.SingleLineCommentTrivia - }; - - addOutliningSpanComments(multipleSingleLineComments, /*autoCollapse*/ false); - } + if (isDeclaration(n)) { + addOutliningForLeadingCommentsForNode(n); } - function autoCollapse(node: Node) { - return isFunctionBlock(node) && node.parent.kind !== SyntaxKind.ArrowFunction; - } + switch (n.kind) { + case SyntaxKind.Block: + if (!isFunctionBlock(n)) { + const parent = n.parent; + const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); - let depth = 0; - const maxDepth = 20; - function walk(n: Node): void { - if (depth > maxDepth) { - return; - } + // Check if the block is standalone, or 'attached' to some parent statement. + // If the latter, we want to collaps the block, but consider its hint span + // to be the entire span of the parent. + if (parent.kind === SyntaxKind.DoStatement || + parent.kind === SyntaxKind.ForInStatement || + parent.kind === SyntaxKind.ForOfStatement || + parent.kind === SyntaxKind.ForStatement || + parent.kind === SyntaxKind.IfStatement || + parent.kind === SyntaxKind.WhileStatement || + parent.kind === SyntaxKind.WithStatement || + parent.kind === SyntaxKind.CatchClause) { - if (isDeclaration(n)) { - addOutliningForLeadingCommentsForNode(n); - } - - switch (n.kind) { - case SyntaxKind.Block: - if (!isFunctionBlock(n)) { - const parent = n.parent; - const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); - - // Check if the block is standalone, or 'attached' to some parent statement. - // If the latter, we want to collaps the block, but consider its hint span - // to be the entire span of the parent. - if (parent.kind === SyntaxKind.DoStatement || - parent.kind === SyntaxKind.ForInStatement || - parent.kind === SyntaxKind.ForOfStatement || - parent.kind === SyntaxKind.ForStatement || - parent.kind === SyntaxKind.IfStatement || - parent.kind === SyntaxKind.WhileStatement || - parent.kind === SyntaxKind.WithStatement || - parent.kind === SyntaxKind.CatchClause) { + addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); + break; + } + if (parent.kind === SyntaxKind.TryStatement) { + // Could be the try-block, or the finally-block. + const tryStatement = parent; + if (tryStatement.tryBlock === n) { addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); break; } - - if (parent.kind === SyntaxKind.TryStatement) { - // Could be the try-block, or the finally-block. - const tryStatement = parent; - if (tryStatement.tryBlock === n) { - addOutliningSpan(parent, openBrace, closeBrace, autoCollapse(n)); + else if (tryStatement.finallyBlock === n) { + const finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); + if (finallyKeyword) { + addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); break; } - else if (tryStatement.finallyBlock === n) { - const finallyKeyword = findChildOfKind(tryStatement, SyntaxKind.FinallyKeyword, sourceFile); - if (finallyKeyword) { - addOutliningSpan(finallyKeyword, openBrace, closeBrace, autoCollapse(n)); - break; - } - } - - // fall through. } - // Block was a standalone block. In this case we want to only collapse - // the span of the block, independent of any parent span. - const span = createTextSpanFromBounds(n.getStart(), n.end); - elements.push({ - textSpan: span, - hintSpan: span, - bannerText: collapseText, - autoCollapse: autoCollapse(n) - }); - break; + // fall through. } - // Fallthrough. - case SyntaxKind.ModuleBlock: { - const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); - addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); + // Block was a standalone block. In this case we want to only collapse + // the span of the block, independent of any parent span. + const span = createTextSpanFromBounds(n.getStart(), n.end); + elements.push({ + textSpan: span, + hintSpan: span, + bannerText: collapseText, + autoCollapse: autoCollapse(n) + }); break; } - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InterfaceDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.ObjectLiteralExpression: - case SyntaxKind.CaseBlock: { - const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); - const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); - addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); - break; - } - case SyntaxKind.ArrayLiteralExpression: - const openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile); - const closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); - addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); - break; + // Fallthrough. + + case SyntaxKind.ModuleBlock: { + const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); + break; } - depth++; - forEachChild(n, walk); - depth--; + case SyntaxKind.ClassDeclaration: + case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.EnumDeclaration: + case SyntaxKind.ObjectLiteralExpression: + case SyntaxKind.CaseBlock: { + const openBrace = findChildOfKind(n, SyntaxKind.OpenBraceToken, sourceFile); + const closeBrace = findChildOfKind(n, SyntaxKind.CloseBraceToken, sourceFile); + addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); + break; + } + case SyntaxKind.ArrayLiteralExpression: + const openBracket = findChildOfKind(n, SyntaxKind.OpenBracketToken, sourceFile); + const closeBracket = findChildOfKind(n, SyntaxKind.CloseBracketToken, sourceFile); + addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); + break; } - - walk(sourceFile); - return elements; + depth++; + forEachChild(n, walk); + depth--; } + + walk(sourceFile); + return elements; } } \ No newline at end of file From 9c61e53a78afe0615fa82fb96e60e68b106f88d4 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 28 Dec 2015 17:11:55 -0500 Subject: [PATCH 107/164] Allow tagged boolean arguments to be followed with a colon. --- scripts/tslint/booleanTriviaRule.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/tslint/booleanTriviaRule.ts b/scripts/tslint/booleanTriviaRule.ts index 93c312ab870..756728a1a11 100644 --- a/scripts/tslint/booleanTriviaRule.ts +++ b/scripts/tslint/booleanTriviaRule.ts @@ -26,7 +26,9 @@ class BooleanTriviaWalker extends Lint.RuleWalker { for (let index = 0; index < targetParameters.length; index++) { const param = targetParameters[index]; const arg = node.arguments[index]; - if (!(arg && param)) continue; + if (!(arg && param)) { + continue; + } const argType = this.checker.getContextualType(arg); if (argType && (argType.getFlags() & ts.TypeFlags.Boolean)) { @@ -38,7 +40,9 @@ class BooleanTriviaWalker extends Lint.RuleWalker { if (ranges && ranges.length === 1 && ranges[0].kind === ts.SyntaxKind.MultiLineCommentTrivia) { triviaContent = arg.getFullText().slice(ranges[0].pos + 2, ranges[0].end - 2); // +/-2 to remove /**/ } - if (triviaContent !== param.getName()) { + + const paramName = param.getName(); + if (triviaContent !== paramName && triviaContent !== paramName + ":") { this.addFailure(this.createFailure(arg.getStart(source), arg.getWidth(source), Rule.FAILURE_STRING_FACTORY(param.getName(), triviaContent))); } } From 2032c6d18ae1e330edd9eae11cd3cda1d9f15a3f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 28 Dec 2015 17:21:03 -0500 Subject: [PATCH 108/164] Lint 'patternMatcher.ts'. --- Jakefile.js | 1 + src/services/patternMatcher.ts | 211 ++++++++++++--------------------- 2 files changed, 79 insertions(+), 133 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index ad904fc3ea4..bfb80982237 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -925,6 +925,7 @@ var servicesLintTargets = [ "services.ts", "outliningElementsCollector.ts", "navigateTo.ts", + "patternMatcher.ts", ].map(function (s) { return path.join(servicesDirectory, s); }); diff --git a/src/services/patternMatcher.ts b/src/services/patternMatcher.ts index ea433867c46..3663b1a1d09 100644 --- a/src/services/patternMatcher.ts +++ b/src/services/patternMatcher.ts @@ -8,10 +8,10 @@ namespace ts { camelCase } - // Information about a match made by the pattern matcher between a candidate and the + // Information about a match made by the pattern matcher between a candidate and the // search pattern. export interface PatternMatch { - // What kind of match this was. Exact matches are better than prefix matches which are + // What kind of match this was. Exact matches are better than prefix matches which are // better than substring matches which are better than CamelCase matches. kind: PatternMatchKind; @@ -19,7 +19,7 @@ namespace ts { // it was a better match. camelCaseWeight?: number; - // If this was a match where all constituent parts of the candidate and search pattern + // If this was a match where all constituent parts of the candidate and search pattern // matched case sensitively or case insensitively. Case sensitive matches of the kind // are better matches than insensitive matches. isCaseSensitive: boolean; @@ -35,7 +35,7 @@ namespace ts { // once you no longer need it. export interface PatternMatcher { // Used to match a candidate against the last segment of a possibly dotted pattern. This - // is useful as a quick check to prevent having to compute a container before calling + // is useful as a quick check to prevent having to compute a container before calling // "getMatches". // // For example, if the search pattern is "ts.c.SK" and the candidate is "SyntaxKind", then @@ -55,8 +55,8 @@ namespace ts { } // First we break up the pattern given by dots. Each portion of the pattern between the - // dots is a 'Segment'. The 'Segment' contains information about the entire section of - // text between the dots, as well as information about any individual 'Words' that we + // dots is a 'Segment'. The 'Segment' contains information about the entire section of + // text between the dots, as well as information about any individual 'Words' that we // can break the segment into. A 'Word' is simply a contiguous sequence of characters // that can appear in a typescript identifier. So "GetKeyword" would be one word, while // "Get Keyword" would be two words. Once we have the individual 'words', we break those @@ -64,20 +64,20 @@ namespace ts { // word, it make character spans corresponding to "U", "I" and "Element". These spans // are then used when doing camel cased matches against candidate patterns. interface Segment { - // Information about the entire piece of text between the dots. For example, if the - // text between the dots is 'GetKeyword', then TotalTextChunk.Text will be 'GetKeyword' and + // Information about the entire piece of text between the dots. For example, if the + // text between the dots is 'GetKeyword', then TotalTextChunk.Text will be 'GetKeyword' and // TotalTextChunk.CharacterSpans will correspond to 'Get', 'Keyword'. totalTextChunk: TextChunk; - // Information about the subwords compromising the total word. For example, if the - // text between the dots is 'GetFoo KeywordBar', then the subwords will be 'GetFoo' - // and 'KeywordBar'. Those individual words will have CharacterSpans of ('Get' and - // 'Foo') and('Keyword' and 'Bar') respectively. + // Information about the subwords compromising the total word. For example, if the + // text between the dots is 'GetFoo KeywordBar', then the subwords will be 'GetFoo' + // and 'KeywordBar'. Those individual words will have CharacterSpans of ('Get' and + // 'Foo') and('Keyword' and 'Bar') respectively. subWordTextChunks: TextChunk[]; } - // Information about a chunk of text from the pattern. The chunk is a piece of text, with - // cached information about the character spans within in. Character spans are used for + // Information about a chunk of text from the pattern. The chunk is a piece of text, with + // cached information about the character spans within in. Character spans are used for // camel case matching. interface TextChunk { // The text of the chunk. This should be a contiguous sequence of character that could @@ -92,7 +92,7 @@ namespace ts { // for something entirely lowercase or not. isLowerCase: boolean; - // The spans in this text chunk that we think are of interest and should be matched + // The spans in this text chunk that we think are of interest and should be matched // independently. For example, if the chunk is for "UIElement" the the spans of interest // correspond to "U", "I" and "Element". If "UIElement" isn't found as an exaxt, prefix. // or substring match, then the character spans will be used to attempt a camel case match. @@ -110,20 +110,19 @@ namespace ts { export function createPatternMatcher(pattern: string): PatternMatcher { // We'll often see the same candidate string many times when searching (For example, when - // we see the name of a module that is used everywhere, or the name of an overload). As - // such, we cache the information we compute about the candidate for the life of this + // we see the name of a module that is used everywhere, or the name of an overload). As + // such, we cache the information we compute about the candidate for the life of this // pattern matcher so we don't have to compute it multiple times. - let stringToWordSpans: Map = {}; + const stringToWordSpans: Map = {}; pattern = pattern.trim(); - let fullPatternSegment = createSegment(pattern); - let dotSeparatedSegments = pattern.split(".").map(p => createSegment(p.trim())); - let invalidPattern = dotSeparatedSegments.length === 0 || forEach(dotSeparatedSegments, segmentIsInvalid); + const dotSeparatedSegments = pattern.split(".").map(p => createSegment(p.trim())); + const invalidPattern = dotSeparatedSegments.length === 0 || forEach(dotSeparatedSegments, segmentIsInvalid); return { getMatches, - getMatchesForLastSegmentOfPattern, + getMatchesForLastSegmentOfPattern, patternContainsDots: dotSeparatedSegments.length > 1 }; @@ -131,7 +130,7 @@ namespace ts { function skipMatch(candidate: string) { return invalidPattern || !candidate; } - + function getMatchesForLastSegmentOfPattern(candidate: string): PatternMatch[] { if (skipMatch(candidate)) { return undefined; @@ -148,7 +147,7 @@ namespace ts { // First, check that the last part of the dot separated pattern matches the name of the // candidate. If not, then there's no point in proceeding and doing the more // expensive work. - let candidateMatch = matchSegment(candidate, lastOrUndefined(dotSeparatedSegments)); + const candidateMatch = matchSegment(candidate, lastOrUndefined(dotSeparatedSegments)); if (!candidateMatch) { return undefined; } @@ -165,16 +164,16 @@ namespace ts { // So far so good. Now break up the container for the candidate and check if all // the dotted parts match up correctly. - let totalMatch = candidateMatch; + const totalMatch = candidateMatch; for (let i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { - let segment = dotSeparatedSegments[i]; - let containerName = candidateContainers[j]; + const segment = dotSeparatedSegments[i]; + const containerName = candidateContainers[j]; - let containerMatch = matchSegment(containerName, segment); + const containerMatch = matchSegment(containerName, segment); if (!containerMatch) { // This container didn't match the pattern piece. So there's no match at all. return undefined; @@ -197,7 +196,7 @@ namespace ts { } function matchTextChunk(candidate: string, chunk: TextChunk, punctuationStripped: boolean): PatternMatch { - let index = indexOfIgnoringCase(candidate, chunk.textLowerCase); + const index = indexOfIgnoringCase(candidate, chunk.textLowerCase); if (index === 0) { if (chunk.text.length === candidate.length) { // a) Check if the part matches the candidate entirely, in an case insensitive or @@ -211,18 +210,18 @@ namespace ts { } } - let isLowercase = chunk.isLowerCase; + const isLowercase = chunk.isLowerCase; if (isLowercase) { if (index > 0) { // c) If the part is entirely lowercase, then check if it is contained anywhere in the // candidate in a case insensitive manner. If so, return that there was a substring - // match. + // match. // // Note: We only have a substring match if the lowercase part is prefix match of some // word part. That way we don't match something like 'Class' when the user types 'a'. // But we would match 'FooAttribute' (since 'Attribute' starts with 'a'). - let wordSpans = getWordSpans(candidate); - for (let span of wordSpans) { + const wordSpans = getWordSpans(candidate); + for (const span of wordSpans) { if (partStartsWith(candidate, span, chunk.text, /*ignoreCase:*/ true)) { return createPatternMatch(PatternMatchKind.substring, punctuationStripped, /*isCaseSensitive:*/ partStartsWith(candidate, span, chunk.text, /*ignoreCase:*/ false)); @@ -242,7 +241,7 @@ namespace ts { if (!isLowercase) { // e) If the part was not entirely lowercase, then attempt a camel cased match as well. if (chunk.characterSpans.length > 0) { - let candidateParts = getWordSpans(candidate); + const candidateParts = getWordSpans(candidate); let camelCaseWeight = tryCamelCaseMatch(candidate, candidateParts, chunk, /*ignoreCase:*/ false); if (camelCaseWeight !== undefined) { return createPatternMatch(PatternMatchKind.camelCase, punctuationStripped, /*isCaseSensitive:*/ true, /*camelCaseWeight:*/ camelCaseWeight); @@ -259,8 +258,8 @@ namespace ts { // f) Is the pattern a substring of the candidate starting on one of the candidate's word boundaries? // We could check every character boundary start of the candidate for the pattern. However, that's - // an m * n operation in the wost case. Instead, find the first instance of the pattern - // substring, and see if it starts on a capital letter. It seems unlikely that the user will try to + // an m * n operation in the wost case. Instead, find the first instance of the pattern + // substring, and see if it starts on a capital letter. It seems unlikely that the user will try to // filter the list based on a substring that starts on a capital letter and also with a lowercase one. // (Pattern: fogbar, Candidate: quuxfogbarFogBar). if (chunk.text.length < candidate.length) { @@ -275,7 +274,7 @@ namespace ts { function containsSpaceOrAsterisk(text: string): boolean { for (let i = 0; i < text.length; i++) { - let ch = text.charCodeAt(i); + const ch = text.charCodeAt(i); if (ch === CharacterCodes.space || ch === CharacterCodes.asterisk) { return true; } @@ -293,7 +292,7 @@ namespace ts { // Note: if the segment contains a space or an asterisk then we must assume that it's a // multi-word segment. if (!containsSpaceOrAsterisk(segment.totalTextChunk.text)) { - let match = matchTextChunk(candidate, segment.totalTextChunk, /*punctuationStripped:*/ false); + const match = matchTextChunk(candidate, segment.totalTextChunk, /*punctuationStripped:*/ false); if (match) { return [match]; } @@ -317,7 +316,7 @@ namespace ts { // // c) If the word is entirely lowercase, then check if it is contained anywhere in the // candidate in a case insensitive manner. If so, return that there was a substring - // match. + // match. // // Note: We only have a substring match if the lowercase part is prefix match of // some word part. That way we don't match something like 'Class' when the user @@ -331,17 +330,17 @@ namespace ts { // e) If the word was not entirely lowercase, then attempt a camel cased match as // well. // - // f) The word is all lower case. Is it a case insensitive substring of the candidate starting + // f) The word is all lower case. Is it a case insensitive substring of the candidate starting // on a part boundary of the candidate? // // Only if all words have some sort of match is the pattern considered matched. - let subWordTextChunks = segment.subWordTextChunks; + const subWordTextChunks = segment.subWordTextChunks; let matches: PatternMatch[] = undefined; - for (let subWordTextChunk of subWordTextChunks) { + for (const subWordTextChunk of subWordTextChunks) { // Try to match the candidate with this word - let result = matchTextChunk(candidate, subWordTextChunk, /*punctuationStripped:*/ true); + const result = matchTextChunk(candidate, subWordTextChunk, /*punctuationStripped:*/ true); if (!result) { return undefined; } @@ -354,18 +353,18 @@ namespace ts { } function partStartsWith(candidate: string, candidateSpan: TextSpan, pattern: string, ignoreCase: boolean, patternSpan?: TextSpan): boolean { - let patternPartStart = patternSpan ? patternSpan.start : 0; - let patternPartLength = patternSpan ? patternSpan.length : pattern.length; + const patternPartStart = patternSpan ? patternSpan.start : 0; + const patternPartLength = patternSpan ? patternSpan.length : pattern.length; if (patternPartLength > candidateSpan.length) { // Pattern part is longer than the candidate part. There can never be a match. return false; } - + if (ignoreCase) { for (let i = 0; i < patternPartLength; i++) { - let ch1 = pattern.charCodeAt(patternPartStart + i); - let ch2 = candidate.charCodeAt(candidateSpan.start + i); + const ch1 = pattern.charCodeAt(patternPartStart + i); + const ch2 = candidate.charCodeAt(candidateSpan.start + i); if (toLowerCase(ch1) !== toLowerCase(ch2)) { return false; } @@ -373,8 +372,8 @@ namespace ts { } else { for (let i = 0; i < patternPartLength; i++) { - let ch1 = pattern.charCodeAt(patternPartStart + i); - let ch2 = candidate.charCodeAt(candidateSpan.start + i); + const ch1 = pattern.charCodeAt(patternPartStart + i); + const ch2 = candidate.charCodeAt(candidateSpan.start + i); if (ch1 !== ch2) { return false; } @@ -385,12 +384,12 @@ namespace ts { } function tryCamelCaseMatch(candidate: string, candidateParts: TextSpan[], chunk: TextChunk, ignoreCase: boolean): number { - let chunkCharacterSpans = chunk.characterSpans; + const chunkCharacterSpans = chunk.characterSpans; // Note: we may have more pattern parts than candidate parts. This is because multiple // pattern parts may match a candidate part. For example "SiUI" against "SimpleUI". // We'll have 3 pattern parts Si/U/I against two candidate parts Simple/UI. However, U - // and I will both match in UI. + // and I will both match in UI. let currentCandidate = 0; let currentChunkSpan = 0; @@ -426,14 +425,14 @@ namespace ts { // Consider the case of matching SiUI against SimpleUIElement. The candidate parts // will be Simple/UI/Element, and the pattern parts will be Si/U/I. We'll match 'Si' // against 'Simple' first. Then we'll match 'U' against 'UI'. However, we want to - // still keep matching pattern parts against that candidate part. + // still keep matching pattern parts against that candidate part. for (; currentChunkSpan < chunkCharacterSpans.length; currentChunkSpan++) { - let chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; + const chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; if (gotOneMatchThisCandidate) { // We've already gotten one pattern part match in this candidate. We will // only continue trying to consumer pattern parts if the last part and this - // part are both upper case. + // part are both upper case. if (!isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan - 1].start)) || !isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan].start))) { break; @@ -470,55 +469,11 @@ namespace ts { } } - // Helper function to compare two matches to determine which is better. Matches are first - // ordered by kind (so all prefix matches always beat all substring matches). Then, if the - // match is a camel case match, the relative weights of the match are used to determine - // which is better (with a greater weight being better). Then if the match is of the same - // type, then a case sensitive match is considered better than an insensitive one. - function patternMatchCompareTo(match1: PatternMatch, match2: PatternMatch): number { - return compareType(match1, match2) || - compareCamelCase(match1, match2) || - compareCase(match1, match2) || - comparePunctuation(match1, match2); - } - - function comparePunctuation(result1: PatternMatch, result2: PatternMatch) { - // Consider a match to be better if it was successful without stripping punctuation - // versus a match that had to strip punctuation to succeed. - if (result1.punctuationStripped !== result2.punctuationStripped) { - return result1.punctuationStripped ? 1 : -1; - } - - return 0; - } - - function compareCase(result1: PatternMatch, result2: PatternMatch) { - if (result1.isCaseSensitive !== result2.isCaseSensitive) { - return result1.isCaseSensitive ? -1 : 1; - } - - return 0; - } - - function compareType(result1: PatternMatch, result2: PatternMatch) { - return result1.kind - result2.kind; - } - - function compareCamelCase(result1: PatternMatch, result2: PatternMatch) { - if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { - // Swap the values here. If result1 has a higher weight, then we want it to come - // first. - return result2.camelCaseWeight - result1.camelCaseWeight; - } - - return 0; - } - function createSegment(text: string): Segment { return { totalTextChunk: createTextChunk(text), subWordTextChunks: breakPatternIntoTextChunks(text) - } + }; } // A segment is considered invalid if we couldn't find any words in it. @@ -536,9 +491,9 @@ namespace ts { return false; } - // TODO: find a way to determine this for any unicode characters in a + // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. - let str = String.fromCharCode(ch); + const str = String.fromCharCode(ch); return str === str.toUpperCase(); } @@ -553,22 +508,12 @@ namespace ts { } - // TODO: find a way to determine this for any unicode characters in a + // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. - let str = String.fromCharCode(ch); + const str = String.fromCharCode(ch); return str === str.toLowerCase(); } - function containsUpperCaseLetter(string: string): boolean { - for (let i = 0, n = string.length; i < n; i++) { - if (isUpperCaseLetter(string.charCodeAt(i))) { - return true; - } - } - - return false; - } - function startsWith(string: string, search: string) { for (let i = 0, n = search.length; i < n; i++) { if (string.charCodeAt(i) !== search.charCodeAt(i)) { @@ -593,8 +538,8 @@ namespace ts { // Assumes 'value' is already lowercase. function startsWithIgnoringCase(string: string, value: string, start: number): boolean { for (let i = 0, n = value.length; i < n; i++) { - let ch1 = toLowerCase(string.charCodeAt(i + start)); - let ch2 = value.charCodeAt(i); + const ch1 = toLowerCase(string.charCodeAt(i + start)); + const ch2 = value.charCodeAt(i); if (ch1 !== ch2) { return false; @@ -614,7 +559,7 @@ namespace ts { return ch; } - // TODO: find a way to compute this for any unicode characters in a + // TODO: find a way to compute this for any unicode characters in a // non-allocating manner. return String.fromCharCode(ch).toLowerCase().charCodeAt(0); } @@ -629,12 +574,12 @@ namespace ts { } function breakPatternIntoTextChunks(pattern: string): TextChunk[] { - let result: TextChunk[] = []; + const result: TextChunk[] = []; let wordStart = 0; let wordLength = 0; for (let i = 0; i < pattern.length; i++) { - let ch = pattern.charCodeAt(i); + const ch = pattern.charCodeAt(i); if (isWordChar(ch)) { if (wordLength++ === 0) { wordStart = i; @@ -656,13 +601,13 @@ namespace ts { } function createTextChunk(text: string): TextChunk { - let textLowerCase = text.toLowerCase(); + const textLowerCase = text.toLowerCase(); return { text, textLowerCase, isLowerCase: text === textLowerCase, characterSpans: breakIntoCharacterSpans(text) - } + }; } /* @internal */ export function breakIntoCharacterSpans(identifier: string): TextSpan[] { @@ -674,15 +619,15 @@ namespace ts { } function breakIntoSpans(identifier: string, word: boolean): TextSpan[] { - let result: TextSpan[] = []; + const result: TextSpan[] = []; let wordStart = 0; for (let i = 1, n = identifier.length; i < n; i++) { - let lastIsDigit = isDigit(identifier.charCodeAt(i - 1)); - let currentIsDigit = isDigit(identifier.charCodeAt(i)); + const lastIsDigit = isDigit(identifier.charCodeAt(i - 1)); + const currentIsDigit = isDigit(identifier.charCodeAt(i)); - let hasTransitionFromLowerToUpper = transitionFromLowerToUpper(identifier, word, i); - let hasTransitionFromUpperToLower = transitionFromUpperToLower(identifier, word, i, wordStart); + const hasTransitionFromLowerToUpper = transitionFromLowerToUpper(identifier, word, i); + const hasTransitionFromUpperToLower = transitionFromUpperToLower(identifier, word, i, wordStart); if (charIsPunctuation(identifier.charCodeAt(i - 1)) || charIsPunctuation(identifier.charCodeAt(i)) || @@ -738,7 +683,7 @@ namespace ts { function isAllPunctuation(identifier: string, start: number, end: number): boolean { for (let i = start; i < end; i++) { - let ch = identifier.charCodeAt(i); + const ch = identifier.charCodeAt(i); // We don't consider _ or $ as punctuation as there may be things with that name. if (!charIsPunctuation(ch) || ch === CharacterCodes._ || ch === CharacterCodes.$) { @@ -759,8 +704,8 @@ namespace ts { // etc. if (index !== wordStart && index + 1 < identifier.length) { - let currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); - let nextIsLower = isLowerCaseLetter(identifier.charCodeAt(index + 1)); + const currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); + const nextIsLower = isLowerCaseLetter(identifier.charCodeAt(index + 1)); if (currentIsUpper && nextIsLower) { // We have a transition from an upper to a lower letter here. But we only @@ -786,12 +731,12 @@ namespace ts { } function transitionFromLowerToUpper(identifier: string, word: boolean, index: number): boolean { - let lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); - let currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); + const lastIsUpper = isUpperCaseLetter(identifier.charCodeAt(index - 1)); + const currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); // See if the casing indicates we're starting a new word. Note: if we're breaking on // words, then just seeing an upper case character isn't enough. Instead, it has to - // be uppercase and the previous character can't be uppercase. + // be uppercase and the previous character can't be uppercase. // // For example, breaking "AddMetadata" on words would make: Add Metadata // @@ -802,7 +747,7 @@ namespace ts { // on characters would be: A M // // We break the search string on characters. But we break the symbol name on words. - let transition = word + const transition = word ? (currentIsUpper && !lastIsUpper) : currentIsUpper; return transition; From e12855bca02541ed3815175e7ba80cd64ac86af8 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 29 Dec 2015 12:39:27 -0800 Subject: [PATCH 109/164] Escape quotes when they appear as HTML entities in JSX text Fixes #6241 --- src/compiler/emitter.ts | 4 +++- tests/baselines/reference/tsxReactEmitEntities.js | 2 ++ tests/baselines/reference/tsxReactEmitEntities.symbols | 4 ++++ tests/baselines/reference/tsxReactEmitEntities.types | 5 +++++ tests/cases/conformance/jsx/tsxReactEmitEntities.tsx | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 996dac118ef..77a9b658f74 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -7221,7 +7221,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // Replace entities like   result = result.replace(/&(\w+);/g, function(s: any, m: string) { if (entities[m] !== undefined) { - return String.fromCharCode(entities[m]); + let ch = String.fromCharCode(entities[m]); + // " needs to be escaped + return ch === '"' ? '\\"' : ch; } else { return s; diff --git a/tests/baselines/reference/tsxReactEmitEntities.js b/tests/baselines/reference/tsxReactEmitEntities.js index c1fba50fd8f..a20f3380bf7 100644 --- a/tests/baselines/reference/tsxReactEmitEntities.js +++ b/tests/baselines/reference/tsxReactEmitEntities.js @@ -8,7 +8,9 @@ declare module JSX { declare var React: any;
Dot goes here: · ¬AnEntity;
; +
Be careful of "-ed strings!
; //// [file.js] React.createElement("div", null, "Dot goes here: · ¬AnEntity; "); +React.createElement("div", null, "Be careful of \"-ed strings!"); diff --git a/tests/baselines/reference/tsxReactEmitEntities.symbols b/tests/baselines/reference/tsxReactEmitEntities.symbols index b633f57ec13..5a0274029e4 100644 --- a/tests/baselines/reference/tsxReactEmitEntities.symbols +++ b/tests/baselines/reference/tsxReactEmitEntities.symbols @@ -19,3 +19,7 @@ declare var React: any; >div : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22)) >div : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22)) +
Be careful of "-ed strings!
; +>div : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22)) +>div : Symbol(JSX.IntrinsicElements, Decl(file.tsx, 1, 22)) + diff --git a/tests/baselines/reference/tsxReactEmitEntities.types b/tests/baselines/reference/tsxReactEmitEntities.types index d6d6c285d79..111653ea140 100644 --- a/tests/baselines/reference/tsxReactEmitEntities.types +++ b/tests/baselines/reference/tsxReactEmitEntities.types @@ -20,3 +20,8 @@ declare var React: any; >div : any >div : any +
Be careful of "-ed strings!
; +>
Be careful of "-ed strings!
: JSX.Element +>div : any +>div : any + diff --git a/tests/cases/conformance/jsx/tsxReactEmitEntities.tsx b/tests/cases/conformance/jsx/tsxReactEmitEntities.tsx index 4b7dc5780f8..4726008d6be 100644 --- a/tests/cases/conformance/jsx/tsxReactEmitEntities.tsx +++ b/tests/cases/conformance/jsx/tsxReactEmitEntities.tsx @@ -9,3 +9,4 @@ declare module JSX { declare var React: any;
Dot goes here: · ¬AnEntity;
; +
Be careful of "-ed strings!
; From 3288f5bb6d42b17315ac2a35d4f447adb09836ed Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 29 Dec 2015 13:16:00 -0800 Subject: [PATCH 110/164] Make linter happy --- 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 77a9b658f74..c266a0fa77e 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -7221,9 +7221,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // Replace entities like   result = result.replace(/&(\w+);/g, function(s: any, m: string) { if (entities[m] !== undefined) { - let ch = String.fromCharCode(entities[m]); + const ch = String.fromCharCode(entities[m]); // " needs to be escaped - return ch === '"' ? '\\"' : ch; + return ch === "\"" ? "\\\"" : ch; } else { return s; From 80a16de570a25c6bd6bc69a668cdcf15d8f1b993 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 29 Dec 2015 14:43:57 -0800 Subject: [PATCH 111/164] Tag the 'react' import as used even under --jsx preserve Fixes #5865 --- src/compiler/checker.ts | 14 ++++++-------- tests/baselines/reference/tsxPreserveEmit1.js | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5d57e9d2028..145478693a1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8363,14 +8363,12 @@ namespace ts { checkGrammarJsxElement(node); checkJsxPreconditions(node); - // If we're compiling under --jsx react, the symbol 'React' should - // be marked as 'used' so we don't incorrectly elide its import. And if there - // is no 'React' symbol in scope, we should issue an error. - if (compilerOptions.jsx === JsxEmit.React) { - const reactSym = resolveName(node.tagName, "React", SymbolFlags.Value, Diagnostics.Cannot_find_name_0, "React"); - if (reactSym) { - getSymbolLinks(reactSym).referenced = true; - } + // The symbol 'React' should be marked as 'used' so we don't incorrectly elide its import. And if there + // is no 'React' symbol in scope when targeting React emit, we should issue an error. + const reactRefErr = compilerOptions.jsx === JsxEmit.React ? Diagnostics.Cannot_find_name_0 : undefined; + const reactSym = resolveName(node.tagName, "React", SymbolFlags.Value, reactRefErr, "React"); + if (reactSym) { + getSymbolLinks(reactSym).referenced = true; } const targetAttributesType = getJsxElementAttributesType(node); diff --git a/tests/baselines/reference/tsxPreserveEmit1.js b/tests/baselines/reference/tsxPreserveEmit1.js index 7ac6c18ebca..6d795c946c3 100644 --- a/tests/baselines/reference/tsxPreserveEmit1.js +++ b/tests/baselines/reference/tsxPreserveEmit1.js @@ -34,7 +34,7 @@ module M { //// [test.jsx] -define(["require", "exports", 'react-router'], function (require, exports, ReactRouter) { +define(["require", "exports", 'react', 'react-router'], function (require, exports, React, ReactRouter) { "use strict"; var Route = ReactRouter.Route; var routes1 = ; From 7b36432cf0ea587f9891ab95a8ac903f0271e22e Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 29 Dec 2015 14:57:22 -0800 Subject: [PATCH 112/164] Add test to verify no error when 'React' is not in scope --- tests/baselines/reference/tsxPreserveEmit2.js | 10 ++++++++++ tests/baselines/reference/tsxPreserveEmit2.symbols | 10 ++++++++++ tests/baselines/reference/tsxPreserveEmit2.types | 11 +++++++++++ tests/cases/conformance/jsx/tsxPreserveEmit2.tsx | 8 ++++++++ 4 files changed, 39 insertions(+) create mode 100644 tests/baselines/reference/tsxPreserveEmit2.js create mode 100644 tests/baselines/reference/tsxPreserveEmit2.symbols create mode 100644 tests/baselines/reference/tsxPreserveEmit2.types create mode 100644 tests/cases/conformance/jsx/tsxPreserveEmit2.tsx diff --git a/tests/baselines/reference/tsxPreserveEmit2.js b/tests/baselines/reference/tsxPreserveEmit2.js new file mode 100644 index 00000000000..6a87da7b285 --- /dev/null +++ b/tests/baselines/reference/tsxPreserveEmit2.js @@ -0,0 +1,10 @@ +//// [test.tsx] + + +var Route: any; +var routes1 = ; + + +//// [test.jsx] +var Route; +var routes1 = ; diff --git a/tests/baselines/reference/tsxPreserveEmit2.symbols b/tests/baselines/reference/tsxPreserveEmit2.symbols new file mode 100644 index 00000000000..4013b2e35ea --- /dev/null +++ b/tests/baselines/reference/tsxPreserveEmit2.symbols @@ -0,0 +1,10 @@ +=== tests/cases/conformance/jsx/test.tsx === + + +var Route: any; +>Route : Symbol(Route, Decl(test.tsx, 2, 3)) + +var routes1 = ; +>routes1 : Symbol(routes1, Decl(test.tsx, 3, 3)) +>Route : Symbol(Route, Decl(test.tsx, 2, 3)) + diff --git a/tests/baselines/reference/tsxPreserveEmit2.types b/tests/baselines/reference/tsxPreserveEmit2.types new file mode 100644 index 00000000000..c01f564ff53 --- /dev/null +++ b/tests/baselines/reference/tsxPreserveEmit2.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/jsx/test.tsx === + + +var Route: any; +>Route : any + +var routes1 = ; +>routes1 : any +> : any +>Route : any + diff --git a/tests/cases/conformance/jsx/tsxPreserveEmit2.tsx b/tests/cases/conformance/jsx/tsxPreserveEmit2.tsx new file mode 100644 index 00000000000..978c96a2019 --- /dev/null +++ b/tests/cases/conformance/jsx/tsxPreserveEmit2.tsx @@ -0,0 +1,8 @@ +//@module: amd +//@jsx: preserve +//@target: ES5 + +//@Filename: test.tsx + +var Route: any; +var routes1 = ; From 2c4856ae71eb53ac9a2ab060e05890e5d10a3266 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 29 Dec 2015 16:00:15 -0800 Subject: [PATCH 113/164] Issue correct errors for missing JSX closing tags Fixes #6280 --- src/compiler/checker.ts | 23 +------ src/compiler/diagnosticMessages.json | 4 ++ src/compiler/parser.ts | 24 ++++++- .../reference/jsxAndTypeAssertion.errors.txt | 30 +++++++-- .../jsxInvalidEsprimaTestSuite.errors.txt | 18 ++++- .../reference/jsxParsingError2.errors.txt | 66 +++++++++++++++++++ tests/baselines/reference/jsxParsingError2.js | 49 ++++++++++++++ .../reference/tsxErrorRecovery1.errors.txt | 9 ++- .../conformance/jsx/jsxParsingError2.tsx | 28 ++++++++ 9 files changed, 217 insertions(+), 34 deletions(-) create mode 100644 tests/baselines/reference/jsxParsingError2.errors.txt create mode 100644 tests/baselines/reference/jsxParsingError2.js create mode 100644 tests/cases/conformance/jsx/jsxParsingError2.tsx diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5d57e9d2028..fe28758494b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7938,31 +7938,12 @@ namespace ts { return jsxElementType || anyType; } - function tagNamesAreEquivalent(lhs: EntityName, rhs: EntityName): boolean { - if (lhs.kind !== rhs.kind) { - return false; - } - - if (lhs.kind === SyntaxKind.Identifier) { - return (lhs).text === (rhs).text; - } - - return (lhs).right.text === (rhs).right.text && - tagNamesAreEquivalent((lhs).left, (rhs).left); - } - function checkJsxElement(node: JsxElement) { // Check attributes checkJsxOpeningLikeElement(node.openingElement); - // Check that the closing tag matches - if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { - error(node.closingElement, Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, getTextOfNode(node.openingElement.tagName)); - } - else { - // Perform resolution on the closing tag so that rename/go to definition/etc work - getJsxElementTagSymbol(node.closingElement); - } + // Perform resolution on the closing tag so that rename/go to definition/etc work + getJsxElementTagSymbol(node.closingElement); // Check children for (const child of node.children) { diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index a43f3534df6..f7268d6d990 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2586,5 +2586,9 @@ "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.": { "category": "Error", "code": 17007 + }, + "JSX element '{0}' has no corresponding closing tag.": { + "category": "Error", + "code": 17008 } } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 7f5d052a7e7..390ab210543 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -3497,6 +3497,20 @@ namespace ts { return finishNode(node); } + function tagNamesAreEquivalent(lhs: EntityName, rhs: EntityName): boolean { + if (lhs.kind !== rhs.kind) { + return false; + } + + if (lhs.kind === SyntaxKind.Identifier) { + return (lhs).text === (rhs).text; + } + + return (lhs).right.text === (rhs).right.text && + tagNamesAreEquivalent((lhs).left, (rhs).left); + } + + function parseJsxElementOrSelfClosingElement(inExpressionContext: boolean): JsxElement | JsxSelfClosingElement { const opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); let result: JsxElement | JsxSelfClosingElement; @@ -3506,6 +3520,11 @@ namespace ts { node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); + + if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { + parseErrorAtPosition(node.closingElement.pos, node.closingElement.end - node.closingElement.pos, Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, getTextOfNodeFromSourceText(sourceText, node.openingElement.tagName)); + } + result = finishNode(node); } else { @@ -3565,10 +3584,13 @@ namespace ts { while (true) { token = scanner.reScanJsxToken(); if (token === SyntaxKind.LessThanSlashToken) { + // Closing tag break; } else if (token === SyntaxKind.EndOfFileToken) { - parseErrorAtCurrentToken(Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, getTextOfNodeFromSourceText(sourceText, openingTagName)); + // If we hit EOF, issue the error at the tag that lacks the closing element + // rather than at the end of the file (which is useless) + parseErrorAtPosition(openingTagName.pos, openingTagName.end - openingTagName.pos, Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, getTextOfNodeFromSourceText(sourceText, openingTagName)); break; } result.push(parseJsxChild()); diff --git a/tests/baselines/reference/jsxAndTypeAssertion.errors.txt b/tests/baselines/reference/jsxAndTypeAssertion.errors.txt index aebabf15133..d0e9bcf145b 100644 --- a/tests/baselines/reference/jsxAndTypeAssertion.errors.txt +++ b/tests/baselines/reference/jsxAndTypeAssertion.errors.txt @@ -1,14 +1,20 @@ +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(7,6): error TS17008: JSX element 'any' has no corresponding closing tag. tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(7,13): error TS2304: Cannot find name 'test'. tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(7,17): error TS1005: '}' expected. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(9,6): error TS17008: JSX element 'any' has no corresponding closing tag. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(11,6): error TS17008: JSX element 'foo' has no corresponding closing tag. tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(11,32): error TS1005: '}' expected. tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(13,36): error TS1005: '}' expected. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(15,17): error TS17008: JSX element 'foo' has no corresponding closing tag. tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(15,45): error TS1005: '}' expected. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(19,2): error TS17008: JSX element 'foo' has no corresponding closing tag. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(19,8): error TS17008: JSX element 'foo' has no corresponding closing tag. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(19,13): error TS17008: JSX element 'foo' has no corresponding closing tag. tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(22,1): error TS1005: ':' expected. -tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(22,1): error TS17002: Expected corresponding JSX closing tag for 'any'. -tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(22,1): error TS17002: Expected corresponding JSX closing tag for 'foo'. +tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(22,1): error TS1005: ' { test: }; + ~~~ +!!! error TS17008: JSX element 'any' has no corresponding closing tag. ~~~~ !!! error TS2304: Cannot find name 'test'. ~ !!! error TS1005: '}' expected. x = ; + ~~~ +!!! error TS17008: JSX element 'any' has no corresponding closing tag. x = hello {{}} ; + ~~~ +!!! error TS17008: JSX element 'foo' has no corresponding closing tag. ~ !!! error TS1005: '}' expected. @@ -32,18 +44,24 @@ tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(22,1): error TS17002: Expect !!! error TS1005: '}' expected. x = {}}>hello{{}}; + ~~~ +!!! error TS17008: JSX element 'foo' has no corresponding closing tag. ~ !!! error TS1005: '}' expected. x = x, x = ; {{/foo/.test(x) ? : }} + ~~~ +!!! error TS17008: JSX element 'foo' has no corresponding closing tag. + ~~~ +!!! error TS17008: JSX element 'foo' has no corresponding closing tag. + ~~~ +!!! error TS17008: JSX element 'foo' has no corresponding closing tag. !!! error TS1005: ':' expected. -!!! error TS17002: Expected corresponding JSX closing tag for 'any'. - -!!! error TS17002: Expected corresponding JSX closing tag for 'foo'. \ No newline at end of file +!!! error TS1005: '' expected. tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(28,10): error TS2304: Cannot find name 'props'. tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(28,28): error TS1005: '>' expected. +tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(32,2): error TS17008: JSX element 'a' has no corresponding closing tag. tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(32,6): error TS1005: '{' expected. +tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(33,2): error TS17008: JSX element 'a' has no corresponding closing tag. tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(33,6): error TS1005: '{' expected. tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(33,7): error TS1109: Expression expected. tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,4): error TS1003: Identifier expected. -tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002: Expected corresponding JSX closing tag for 'a'. +tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS1005: '; @@ -188,7 +192,11 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002 ~ !!! error TS1109: Expression expected.
; + ~ +!!! error TS17008: JSX element 'a' has no corresponding closing tag. ; + ~ +!!! error TS17008: JSX element 'a' has no corresponding closing tag. var x =
one
two
;; var x =
one
/* intervening comment */
two
;;
{"str";}; @@ -218,9 +226,13 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002 >; >; ; + ~ +!!! error TS17008: JSX element 'a' has no corresponding closing tag. ~ !!! error TS1005: '{' expected. ; + ~ +!!! error TS17008: JSX element 'a' has no corresponding closing tag. ~ !!! error TS1005: '{' expected. ~ @@ -230,4 +242,4 @@ tests/cases/conformance/jsx/jsxInvalidEsprimaTestSuite.tsx(35,21): error TS17002 ~~~ !!! error TS1003: Identifier expected. -!!! error TS17002: Expected corresponding JSX closing tag for 'a'. \ No newline at end of file +!!! error TS1005: '; + ~~~ +!!! error TS17008: JSX element 'div' has no corresponding closing tag. + ~~~~~~ +!!! error TS17002: Expected corresponding JSX closing tag for 'span'. + + +!!! error TS1005: '; + ~~~~~~~ +!!! error TS17002: Expected corresponding JSX closing tag for 'div'. + + +==== tests/cases/conformance/jsx/Error3.tsx (2 errors) ==== + let x3 =
; + ~~~ +!!! error TS17008: JSX element 'div' has no corresponding closing tag. + + + +!!! error TS1005: '
; + ~~~ +!!! error TS17008: JSX element 'div' has no corresponding closing tag. + ~~~~~~~ +!!! error TS17002: Expected corresponding JSX closing tag for 'div'. + + +!!! error TS1005: ' + ~~~ +!!! error TS17008: JSX element 'div' has no corresponding closing tag. + ~~~~ +!!! error TS17008: JSX element 'span' has no corresponding closing tag. + + + +!!! error TS1005: '
; + +//// [Error2.tsx] +let x2 =
; + + +//// [Error3.tsx] +let x3 =
; + + +//// [Error4.tsx] +let x4 =
; + +//// [Error5.tsx] +let x5 =
+ + + +//// [file.jsx] +//// [Error1.jsx] +// Issue error about missing span closing tag, not missing div closing tag +var x1 =
; +; +//// [Error2.jsx] +var x2 =
; +//// [Error3.jsx] +var x3 =
; + +; +//// [Error4.jsx] +var x4 =
; +; +//// [Error5.jsx] +var x5 =
+ +; diff --git a/tests/baselines/reference/tsxErrorRecovery1.errors.txt b/tests/baselines/reference/tsxErrorRecovery1.errors.txt index 0937b0d37ac..c368e48ddd1 100644 --- a/tests/baselines/reference/tsxErrorRecovery1.errors.txt +++ b/tests/baselines/reference/tsxErrorRecovery1.errors.txt @@ -1,15 +1,18 @@ +tests/cases/conformance/jsx/file.tsx(5,11): error TS17008: JSX element 'div' has no corresponding closing tag. tests/cases/conformance/jsx/file.tsx(5,19): error TS1109: Expression expected. tests/cases/conformance/jsx/file.tsx(8,11): error TS2304: Cannot find name 'a'. tests/cases/conformance/jsx/file.tsx(8,12): error TS1005: '}' expected. -tests/cases/conformance/jsx/file.tsx(9,1): error TS17002: Expected corresponding JSX closing tag for 'div'. +tests/cases/conformance/jsx/file.tsx(9,1): error TS1005: ' {
+ ~~~ +!!! error TS17008: JSX element 'div' has no corresponding closing tag. ~~ !!! error TS1109: Expression expected. } @@ -21,4 +24,4 @@ tests/cases/conformance/jsx/file.tsx(9,1): error TS17002: Expected corresponding !!! error TS1005: '}' expected. -!!! error TS17002: Expected corresponding JSX closing tag for 'div'. \ No newline at end of file +!!! error TS1005: '
; + +// @filename: Error2.tsx +let x2 =
; + + +// @filename: Error3.tsx +let x3 =
; + + +// @filename: Error4.tsx +let x4 =
; + +// @filename: Error5.tsx +let x5 =
+ From 55ae18b824a73da8e7b41597d6636b6c38c4a5e6 Mon Sep 17 00:00:00 2001 From: Zhengbo Li Date: Wed, 30 Dec 2015 14:23:47 -0800 Subject: [PATCH 114/164] update dom.generated.d.ts with latest version in TSJS repo --- src/lib/dom.generated.d.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/dom.generated.d.ts b/src/lib/dom.generated.d.ts index 0dff2cedc39..0144d752b99 100644 --- a/src/lib/dom.generated.d.ts +++ b/src/lib/dom.generated.d.ts @@ -321,6 +321,7 @@ interface AudioContext extends EventTarget { destination: AudioDestinationNode; listener: AudioListener; sampleRate: number; + state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; @@ -2774,6 +2775,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec tagName: string; id: string; className: string; + innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; getAttributeNode(name: string): Attr; @@ -2969,7 +2971,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec removeAttributeNode(oldAttr: Attr): Attr; requestFullscreen(): void; requestPointerLock(): void; - setAttribute(name?: string, value?: string): void; + setAttribute(name: string, value: string): void; setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void; setAttributeNode(newAttr: Attr): Attr; setAttributeNodeNS(newAttr: Attr): Attr; @@ -5512,7 +5514,7 @@ interface HTMLMediaElement extends HTMLElement { * Gets or sets the current playback position, in seconds. */ preload: string; - readyState: any; + readyState: number; /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ @@ -6169,6 +6171,7 @@ interface HTMLSelectElement extends HTMLElement { * Returns whether an element will successfully validate based on forms validation rules and constraints. */ willValidate: boolean; + selectedOptions: HTMLCollection; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. From 7aa8ba6ba7dabc79e59904d45a9923d188ec285b Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Fri, 1 Jan 2016 09:24:07 -0800 Subject: [PATCH 115/164] Add test for non-used React import --- tests/baselines/reference/tsxPreserveEmit3.js | 24 ++++++++++++++++++ .../reference/tsxPreserveEmit3.symbols | 25 +++++++++++++++++++ .../reference/tsxPreserveEmit3.types | 25 +++++++++++++++++++ .../conformance/jsx/tsxPreserveEmit3.tsx | 17 +++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 tests/baselines/reference/tsxPreserveEmit3.js create mode 100644 tests/baselines/reference/tsxPreserveEmit3.symbols create mode 100644 tests/baselines/reference/tsxPreserveEmit3.types create mode 100644 tests/cases/conformance/jsx/tsxPreserveEmit3.tsx diff --git a/tests/baselines/reference/tsxPreserveEmit3.js b/tests/baselines/reference/tsxPreserveEmit3.js new file mode 100644 index 00000000000..500b7d26c93 --- /dev/null +++ b/tests/baselines/reference/tsxPreserveEmit3.js @@ -0,0 +1,24 @@ +//// [tests/cases/conformance/jsx/tsxPreserveEmit3.tsx] //// + +//// [file.tsx] + +declare module JSX { + interface Element { } + interface IntrinsicElements { + [s: string]: any; + } +} + +//// [test.d.ts] +export var React; + +//// [react-consumer.tsx] +// This import should be elided +import {React} from "./test"; + + +//// [file.jsx] +//// [react-consumer.jsx] +define(["require", "exports"], function (require, exports) { + "use strict"; +}); diff --git a/tests/baselines/reference/tsxPreserveEmit3.symbols b/tests/baselines/reference/tsxPreserveEmit3.symbols new file mode 100644 index 00000000000..ab534241049 --- /dev/null +++ b/tests/baselines/reference/tsxPreserveEmit3.symbols @@ -0,0 +1,25 @@ +=== tests/cases/conformance/jsx/file.tsx === + +declare module JSX { +>JSX : Symbol(JSX, Decl(file.tsx, 0, 0)) + + interface Element { } +>Element : Symbol(Element, Decl(file.tsx, 1, 20)) + + interface IntrinsicElements { +>IntrinsicElements : Symbol(IntrinsicElements, Decl(file.tsx, 2, 22)) + + [s: string]: any; +>s : Symbol(s, Decl(file.tsx, 4, 3)) + } +} + +=== tests/cases/conformance/jsx/test.d.ts === +export var React; +>React : Symbol(React, Decl(test.d.ts, 0, 10)) + +=== tests/cases/conformance/jsx/react-consumer.tsx === +// This import should be elided +import {React} from "./test"; +>React : Symbol(React, Decl(react-consumer.tsx, 1, 8)) + diff --git a/tests/baselines/reference/tsxPreserveEmit3.types b/tests/baselines/reference/tsxPreserveEmit3.types new file mode 100644 index 00000000000..152f742a240 --- /dev/null +++ b/tests/baselines/reference/tsxPreserveEmit3.types @@ -0,0 +1,25 @@ +=== tests/cases/conformance/jsx/file.tsx === + +declare module JSX { +>JSX : any + + interface Element { } +>Element : Element + + interface IntrinsicElements { +>IntrinsicElements : IntrinsicElements + + [s: string]: any; +>s : string + } +} + +=== tests/cases/conformance/jsx/test.d.ts === +export var React; +>React : any + +=== tests/cases/conformance/jsx/react-consumer.tsx === +// This import should be elided +import {React} from "./test"; +>React : any + diff --git a/tests/cases/conformance/jsx/tsxPreserveEmit3.tsx b/tests/cases/conformance/jsx/tsxPreserveEmit3.tsx new file mode 100644 index 00000000000..d7565cacbe2 --- /dev/null +++ b/tests/cases/conformance/jsx/tsxPreserveEmit3.tsx @@ -0,0 +1,17 @@ +//@jsx: preserve +//@module: amd + +//@filename: file.tsx +declare module JSX { + interface Element { } + interface IntrinsicElements { + [s: string]: any; + } +} + +//@filename: test.d.ts +export var React; + +//@filename: react-consumer.tsx +// This import should be elided +import {React} from "./test"; From 710b379cdc8e6de26c6b6dd404b98069ab3be47c Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Mon, 4 Jan 2016 08:44:16 -0800 Subject: [PATCH 116/164] Update lint message to not mention element access. --- scripts/tslint/noIncrementDecrementRule.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/tslint/noIncrementDecrementRule.ts b/scripts/tslint/noIncrementDecrementRule.ts index 742ca520c53..75f4d2f5c08 100644 --- a/scripts/tslint/noIncrementDecrementRule.ts +++ b/scripts/tslint/noIncrementDecrementRule.ts @@ -3,7 +3,7 @@ import * as ts from "typescript"; export class Rule extends Lint.Rules.AbstractRule { - public static POSTFIX_FAILURE_STRING = "Don't use '++' or '--' postfix operators outside statements, for loops, or element access expressions."; + public static POSTFIX_FAILURE_STRING = "Don't use '++' or '--' postfix operators outside statements or for loops."; public static PREFIX_FAILURE_STRING = "Don't use '++' or '--' prefix operators."; public apply(sourceFile: ts.SourceFile): Lint.RuleFailure[] { From b01de71d52355d4590433881ac4b7d50de334cfc Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Mon, 4 Jan 2016 09:04:53 -0800 Subject: [PATCH 117/164] Fix lint in services/patternMatcher.ts --- src/services/patternMatcher.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/services/patternMatcher.ts b/src/services/patternMatcher.ts index 3663b1a1d09..93cc5130d72 100644 --- a/src/services/patternMatcher.ts +++ b/src/services/patternMatcher.ts @@ -94,7 +94,7 @@ namespace ts { // The spans in this text chunk that we think are of interest and should be matched // independently. For example, if the chunk is for "UIElement" the the spans of interest - // correspond to "U", "I" and "Element". If "UIElement" isn't found as an exaxt, prefix. + // correspond to "U", "I" and "Element". If "UIElement" isn't found as an exact, prefix. // or substring match, then the character spans will be used to attempt a camel case match. characterSpans: TextSpan[]; } @@ -168,7 +168,7 @@ namespace ts { for (let i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; - i--, j--) { + i -= 1, j -= 1) { const segment = dotSeparatedSegments[i]; const containerName = candidateContainers[j]; @@ -581,9 +581,10 @@ namespace ts { for (let i = 0; i < pattern.length; i++) { const ch = pattern.charCodeAt(i); if (isWordChar(ch)) { - if (wordLength++ === 0) { + if (wordLength === 0) { wordStart = i; } + wordLength++; } else { if (wordLength > 0) { From 6fe710f31626386d7711cc7507536d394280cde7 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 4 Jan 2016 10:47:23 -0800 Subject: [PATCH 118/164] Updating language specification --- ...anguage Specification (Change Markup).docx | Bin 360249 -> 377158 bytes ...Language Specification (Change Markup).pdf | Bin 1690126 -> 1761060 bytes doc/TypeScript Language Specification.docx | Bin 311406 -> 316862 bytes doc/TypeScript Language Specification.pdf | Bin 1636609 -> 1695961 bytes doc/spec.md | 310 ++++++++++++------ 5 files changed, 204 insertions(+), 106 deletions(-) diff --git a/doc/TypeScript Language Specification (Change Markup).docx b/doc/TypeScript Language Specification (Change Markup).docx index 24e7d1b623abfecab3eca294411bbcffe5799a8e..1db9f4e59085cfd1a9598cf2213174796cd1b5ea 100644 GIT binary patch delta 329001 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≧`pvJ9iif65;==`tvX5l!YHT0d$|#}+hTwHSaxaP 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%0Ai`*MqW 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�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 z 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 delta 311786 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

KMo^*^H3-dRV~JrZFrEw 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≫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%0D8xL~I=uRLTH!T{GAhhQbU+K35qX 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�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 pNHOq2g%{CXT+Y7w@w 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

Kf70vV4R$We+A>zorU{eDQvm>1dMMpj5SsU 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

Ul>^ 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 z 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

}2I9Wi;?_KQxP>bK4tKPLKkLMw4HT`O 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

6jeDwl2DXY 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

bTV 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 z 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

y*8$NNjFPJ-;s10_bYS-X6T{BL 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

Lo)&+IIz1?SGVOwq z>dn;8EcxEnKgwJVQ4&GcTa|N&hz$QpQ=f+BHw5L+-QP+#^p1BD|Hd{6bz)o97AasN8Jy1P^Xo`hV4xg=R0TqZY%{zwRsI6I1fhB4Oo4(i6YTkz+8q5?g%=^8zkIDXu{WQg zd0@my9+^z5U9yX|dw!pBe9#r9G_uNoqt(RY+V48fr}u+*)d7TjH5-tVAQ+hjF_n z9b7dhnG&wqtr5*BXshzf$^wyiabYh_WqAZZIOUm3o*gVBLY293`_@64%o1KDvk9LZ zYgf)wN#&6CRECaWnhSQ|pm)6hFF8kU5q6En5t6`9AEL0QN%)+$KMC~;{fsohttWT0 z&(Mn^OYlo2;#1UQW4||Fq}s)k?~!QOhVt`yna(ntC7QAIu;z?pEmmS2P#ccOoXtL=>1%iTfCs@v4@45tFflTvkyZ|#cnyGYKTylkLq)%1Pl zce7c0bHU-A@ySP5QJ-QG@C1Lb(wt1}qjG#F_^Ah8qgU8h+()&7h#R(47`t}loZ2_~ z?@;nED7jPftCy`}Z%bMW337|hh#7n~#vI%xWvnd7%8k$5 z$U}(EK6sz6w&N~osq@-VV-qyWqw8TzdttsmSlJPrlu~`&tftp6Dx>C+@tr|-U#_eJ zE2$;-`dMYuYg9+xqlCtuaetwxqco8t@tR+GlYi7&!UGsNinrJ07TR8R#l7c9NFlhG zt>hu|*@WOJ1}V6^Y8(`Hd7d74KB-%m&|zl z&~*AKq64s;PfSqhryY11vhp3!K3+L=#*lUD5&9JIZ=AX)K79Um8U}WU-P(g5D0sJ^ z{#5Jz$tEXcI8FC`sp|eoL+`5zAfKE`MrAzq5B8xB+H(^h-MtpJ8#4=>nundUv|Z#? zMeVwo1mf)8WYQ35G|J@H1jjie@kCB>7~Ah1UI0bedpDmNEAN#%hbfjJ^7Q}#Gy{>F zg`1_LowhTHS(M$n5FmcF|f2 zdIyvJp1R7x0hZ~%B$gL^3cb#x$CTPW)WxxItFIsZ-)-d9SVc~B8?%;{lh_*Df?XZc zXE1-ZyQcedlpU>753ylIU+}*IQhfKq3B7h0P@fpvT>lg2DPHihvX`=eB z%{B|`i02WJUuK>G#aXdYa0Xp6c3o>mNEu3OjrB{o^K{FF_Ik!W|ASJ^DWm+QkCo!XCqD!t|~DL9|c|d{1uVeYEQox(`u<(SX}1S`isty zzaymf@ex}oL3y;3F= z*eR12`2|PqmMgW()e5Y6nYl=8_{cw9eE4XUnVZ^c$0>jb?z;w*>b6rndsw51-vWht zGaa;X+Fff~uXiH+AjQl*cppWCw8)s&S-hZHw36UMQF$?AJL}oEKpBnJqvWH~V1Qg_ z6>?1mL)F;pD`CHYUjW)*)~ZMpx{LR=yOgNTaW1Y)@K~X$MP6oeBBaj9H`OA9FVYlB zkl0iUKXpcO8xL`2)1yOjJH-zXY^=6Ml#YG};hO?DnCR~~F1!|@rI_X_sAV)irJZ@< za3!q-a3T2N%6D>FX&BzM=6&(A%K_Iii=y(M-w7?PQo=u2o8Woo7U&s8R~G1-0z6ls z6KG0*GQ!Hp?)l}Cf~J0TlB!Z02qzXgfzSOZl($SBqA-{K4Vi+Pg!Ka}i!XJ(=>OvC z8-Oc|nm=Qk6HT0nJuxS?Z9AFRdBMcCZCfw4ZQHh!&G-GcwsyDb)O}s`?mOpn*Xizh zw{QP`Wk-K|*(OhYN3=B;y4c2bcJ!FSXAnQieHG7oGZK*yr~?!&p5-DnzS5egxjY$* zcL0;CcTIvR)BW7tzNW>sRx=6%Jk^0yB2MM12tO$s@|yC>=T#r7V`kz%8*Od29;$Ja zXSyCMXZ%=9f0a}LY_!4~y!&~eACL7y|3m@?cUeK6%Q2=mUzXs<4^bxYMD@bIi^D;Eq>J`LWOFkwBG| zZ;6dxW(7_ee7bNTP&H_WD5CbwVfMlBbo5#Xp>cUZ#s{Shz&{yHDtsQSg-w`F^&+k*YJc&HuW;E)_?<1(<0}iar)Iw zJuG~6kS$;tGm1dLSs&PICN&RDGBOA)xo9rb6F6&Gy#2>H4QOnjf0{Q{$ApN0It@~? z#MJ)|Wm|?+!!G_?d11LQN*Sj;?-c-d4Lais%HF%in6ArfOV&7)XnZ*eWg#!OLRncB zB5IK+kAsJ2RVI|b{gaheNmGq5@C1~Ui}S~I;0_iUF8V-4NEMN|uuX2fvRNMhMK%P@ zTrr<+1qh|<{6igUMrf#|ej^!OnN1ZYE*A7BlhF697VO*$7S#Ssy1JxO-GJy8zn}0m zpkx;U*upS*b7=Ph4*P*U{4?Lg4YdWN4AMw()2Df<0%$f7CxUqkf%g1Vl!KFI@I)XQ zV1+8c4n_j;##$XycnNf{Je+pQ)B5>b$GRQ|aVD2M`atq zcStwCWl=R#Yr(&Jv?3W4BLEBP*wmCs&roYx#|X$Ep=l*&63DZ8Yzp>P)dBpbX&6tK z2WfW~ay$uH)KKYv^Sn5gf|hL{IOBnNWb;%Bu!`cdt|>3XT(hpi%j$}#{b>KNA5+x* zpL?N0$YB^?K?+p}h$kmz^Z3%m%LqakMRv49$ep9lc@*+5E%p3mOaMTTI;+k>vrzIx zN2o65aHS^O~4ssZpHG2@EByxB&kk($yf)z+j-VUeOF*t8`^bj?+Y8Y71C2AT-3wiqWXK6cEW+ zHkXFct%0I8#LD*x51>uyIMF867sk_5c(@u;Mn!V-Y3puDe{MqTgcpk47CL694$7u|m=LbvFA-zY-k@)wow$ ze3;9L9oat?T~@i`Y1^l7{08={JD zK{(O`4}Jo1w*6jc5;09jbjcKyz^!9G&tC;7MgoPve2MsHb&dJ7<|E6m(>q& zL8JYw^Ng z`m@eY$t8k@0!5Ybm}lRC*O=~$8KeC{W*%lOtrOLTD6*6fTLM}~iRUD6C}hzeoG0;j zcb+D&d#VP>X}S|tHLU6jEq52wepxN1UxGdy1#q0QNDcxT;4e!}=F^Ao*`OkgT003`WdgEinju4+6JHwFUl8DE?NmWYO32Zrqj zN1O`ag2phsT>thV? zHP!WbaP{^4&8dAe1{lo$s{42bJajR|-L`hUq<4MN9L#x7VDEi{N44>L8}VxRygQ(~ z-<>FZ*GvHK6VZAfpZsi4*nEt(e7bggk@K&`fUh|~lt)2ZliPly75wg3e!$B%H{$DA z=)L}IKB{}wpo7<_@`s1c2Nw>Z{a~@4U1#KcTD08OR?tZgK{g)2Ir|`>c%{ZkiBuOS z+rUvk5(ND{qYbzoveDwF#cq4-5bra`8xg4mfIz9F*6%bVc|x3qxCW)hbSLu!IEtjY zE92J&Vy?-nYs2BSU6C4Cj2Egz21>Q7Z=<>Qvn8lDaV27JM(}@ZOsA@QC=ePR9Ngz# zUF?r}G^4J`+g)PXu4jH@{!U;%gqP~+Jgk{K1VlUsy*h5egzwyHzdb>io{Y}${X1J- zLfumLq~Bzx2#<$#&IKpdgzmo(0IvJ}5cAr@nHX3Z)P8t@`DaZ)X$zes?&FdZ^*l(R z&)jBVapex3=A6@pz72#QIf6M)GJL;J4~0*MJ~titn5O&@8&UGzWDflNSshR?9Aal~ zlOz?}PGXUnXQHjajjJh&O_vYvIh!@++QF*(G#l-;7hsn~%(JxIP7M5{YAf$$6`(zk z`a7We)IdhsSqmJ`&$6=Sqo|4=c?iiE4Y8}>V(B_6(_+P9#~nJ;Pk1F@41*G#>88Zp z9k%_)OZphWDz^e?&^FG*S>xNqGrPH}@ZbV^8=M+%r{$G*XfN?aJ`b)s5?pIL!$VWG zl_j5*{l^f_RoYqQwwDQB*&6h`$O~iNKP`UIw&GRgU4s~=CpkO|Q8(^qSLL-a2@A1W zKt!z%4|(AtN&4o?E!S;k7U^$14GLKi5pLaKY(`;P0hIizH(-v8qvNY1He?eXuX0WP zp5O^}YkKmx^>161CN3SGqr}E=KSO)LT5afov~QCm>Er0Kcf$Q1NOp!szzv6wJm6w& z^6qCp7l7AF-yPF*4jA0!j)u3l!9_{FEpIC*SyGBh67@22zFRD^|65r*(RNCob@nje zSWemrs6F+nyl6cQ!dTFW**~jUeB!QAMOX~$(PUDmfwEfY&RH!eqla3;8x2C;a*L+1 z)nW4{^`LH{tJtV$oWAPK1Ad6n;U6p!vW4}tt_TE368omyN1W&X!uh`*M0 zrR_kI>3MQDao<_vzP?3?%gBXNYODs)#s_Dse!J8Aoe#%IENeURO zee`N$m5uLed>m+a;-TE6>J!Fcl5IFDpPqXLE`IWAk> z{Z2Vv)ZdN7l@9Ul=UB|T!ks$9wz{adxFRv>QtEC~={{zARviiXzlIw&P_1$28%ges z|IKY)1|yfl-1ArFnfSfl4Bc4vUJVsv5mif{w*E!50r@Uob-k-M2m z*Qa(C@#FYQ9^%mwaJ1QF(K&ICHwtylt=M}kJMirdnC|F9SMlCXpkcR|a%t0lh9^XG_6 zcH1;tx;8-9mLsU#2wLPN`M9n*!OTjn@Y(WI{Ec{MEpRnJ88kU*aT|vAUp+O0kA+s) zcJZ{{KEirliuPT5>gt*T`}e_298j+!gr5%DbWf9ICOKTRtT%aUS7gp68Qt_M&d66p z*i&Uo8<+RPzLEJXQlRP@)wc?(hJ2@*IhN3u%VK6MJ!arYuKakVy`6mKNK3OKtNIR( z;D7weehWKPKBXRN+L%?>uAu#tLY!M^OJb;6J}XI{{q}fzJ!9{x+DKRX%zAA(1SNu- zNR^}V<|&ot_L>%Vg9kmiWx}!Qs_2EY8;;;_U*4Dks8L;7S=YC}g0$%R|12x!7B@cY zc!J>3e*2qX)Pf{r?NPB_f9E_k?%vPdboX-mr2JPyW9_{j_}R+0_Sb3q4l^v??h|f6 z)h%;y4{7-(WOh!6vOo{&F3nE8`Y2F(p4H5!m98WIkx4Ig?_x#HXtf_swUAz*oBdd)cQF1pr9mt8rRIUy_V54(hx}_aJ{pEyHC;E~i;pIVEd{rA`0~yWE$>(-@8(}# zNqVw_5)5wcKkbsz|Lg*xp_oS^H%>gxk2b z_1M`)#6yZkXvUT6l&ZE~a`}CD(V)E6bte<>mgTZ9BuT_5ZOW_j%V z9a{|&H=%h5P8LKX7M%Ml&&0cKc8$VG2S>sKUJ(&=|Gc+Dv#D-~jQfByX?@3c zkM6aEVyn+az++I-#uEwQ{UP@P4Wyg>jkYcDuhf)5;}m%OuRV2x&CAVVj%L+YUf6go zpv2pQq3AL5cV?AF|8o?`ajyF(wZm!H>-Y{b~f*#XkFxIgwBqn(kfGS0Cp zDBcL1!k`3QfQJ|R!Cm-8{J^dgKrw02sxB3Ncq858Zr8j~@vis^5=N_XQC7ykw0-q* ze~S!)Lk+n3YRhX!-1jJ`uC$&h6KkHleijuT*#RZVij=z$2)WPeX}S4m!)s66cS;C; zp`I(b>o&C40azbPf5N0~GqUFo7#|M*?9lBe;^*HmK2ZLI-rK)^7EOAR0?hHBTu+P$ zpZvP;?bkme>#ei3^otGW;CteAs*>u$&zphERZ*or$NLx0hZ&owd5Lx!#8;Sw^vS!; zEuoo~8>>SHli9!M*?lC>c)D6{$}x^Cx+57^_~a^V-q%gIkd9JkDTU*<(=nMsp@*qci`#GsLiQp4D_`;q zJzL(lO+S+aPHuTouRA=sDR6e=hGvw9Le+bnH}ZGy|+oXHAkk8$IG@lq*yn=GA1DE-QYT`BOhlds#6TI+lHH4b)4m0~vywZ$fIp3+vg z6T<$|omQ_UsgJxVg-Q>irWV5uU-g4l^(`rFr}8~1^Kl^CyFrB^bLLq68} zipLq7=A)0xhRbv5wv99?JF?BPVXAjygq;&m2gL|T@I z_>cAz?$rB!U|H#h+t_eVIQ~@!q71BNU+a_Zv%7xU*l$?P5f}9c$Nt*b?~BE!NYIF$ zKtJdeS-^k^&9U+K;1)`}n3iecQjXfh<*BCOCR{y4&3DzJMXtM+A60%eOy|-v`6Y(E z@IE@}esksx*{ST(Ii{mc%$2ER)k+T&_T?{@ zsabWVcE&Z#$=#cY>Cwa`{=Y}taa|&yr4Ccr!6DYgo9jqu?K`xkG_TsU@X-BE{E1c6 zgwDm;`rOK4j$Z6&S?PnG1aaS7oJ~hn8uvk;+};?skgQ9t^jKYe0M)T zNmiH_hpH=6VoF&o>oK7m`?`HixC{yeb{FYBg_KWsnVa8PeUD>^zg~ELx>2)LQkk|P zQe(3>ZJipnTPl5AK5MnN8rmO@9cYDgrT={y90>lj=;vq)N-@JJR*Z&a0fk&Hvb4st;eQ{`cBU8K0al)g2)J@<#>@xPnq8L zIp2Yqwt1nRi9ugz zqbq+}YcmuwdwkNrSf6hhebgtNl7@*M?~L0&n}EWK81CW{&B{zkEva;ayUofkTkR|Q zf@CO-z9pu2Y;iT|Q&Cg%bi*tQb~7Gm=99)sdr9pL5P<9Wr1k?!Itv>EWH4$et@Vlk|D0Jw+5c zu{LhYreYTQb}Xz=kQU@ziZKe64StRjvq|h`?G5DeDyyT1*2d{K>5fS@leUxGr@Qzi zapI{HkO23|zzGqt3mpiR65jd0p^FmF(8-xR&^WCyUBFhf0>s%egY@8tv}LF<_q~FN z0P5L8Mm53JZ?1RLOqvoh8}~atCH@~n&~hKw!O^$cAYCb?*<#4d0(j4bqfOl-(X&vK z1Cn_ANwhZGiX9Ci|JewZbV5@*q*WnemXRwCz#d-Kxcj_EY!Vd#)qe+nr&B@YIpP`9Nc@H z8>~NUkg;ArwQ)V-CF12Q6n&tO42*X}eRY51vA^4-s8=#^rx>I^6)B8FB3+vfKfL6< z(6$)|SZ=Rx9w&=G`n9|Sr~G|JM9L(E}_!58@^L58dDYYt1orZ#7{X;h-}ZU9 zt$@T#p?_Yzsk9s-vn~XIw)iWByi;$4c$I%IPP{hfO-?swxDHWCn4GDw!$8b3c1HOz z0?UHt3e;26pfH@Myp|E21Vh0$5r+opa2&VpbCi?LgyIzAI(nuG$pcg=yE<4C)TtNr@>DI7_{z-Xc}RI<9;88kthMZ5ond~* zG2eBg!QBo#z0K;wqKsO z5#>fPh>G9RNpQ$#p8hiiG;0RpjA4^{rM^8iD5czjMv$eR#JVv{NGTekV$}=>2UTu| z|H~AwYl=x_pv43u=45_Y=?)1MCXQ(!lMh@7jzCnhj5X>-dL|NK5eSTI62}FpKR$+l zl=Cxg0Etv@3_10M=g2MzNNHAd6*jEnMGO7KGDs~RmUAH(rx9xl$ReR8ZE|BSk5C`P z7$pv(^2U(0DItphjSH=XSd@w?E!X!Ya`k@kHM>sgW~Qz|q7*<@RuVeI3XITm^OgB0c{l)FH;hM5Ck2TMfwNlOP5H72BJX~`3xeD!5nMMfw>EwBO{&y z!PwV>P7Q+A3wmk{D1u%NB>C}TNRrM;8?&zkgQ*;SkmD54`Bz$!Gzp`$3hpLXTtONe z0)~Q5>YrciNV12}o2_mxM|KQ_e2kf77^MQTZ9))4dqhKt-*4cF z1>-0R;No-z31#C%fjRO7;gx?tN;j1lZ*o1bS^}Tt3z6vh0nia~`9yp~W-zb>mS{^v z%F0CoG1?I4NU|l%^^lb&n4-xa=M30bTb>`G!isn2L+r(mr8>0Ln>mOYgrHoV@irE$F%~jxb@q4P$aN+ zKu|$o#1yIB0Kbrx<02~H=KngO$Dx3h$KiaNex+11>8(hdMtB=A3x`T+7AXDAkK+sT z3pOSfCZPabnI1Mn*!3W+hkPbk3hLJZ89d#Qx|Xmcw8T=0_HT|LZt<|~bH9FH?ZSo7 zK%(-7KWWK<7})AaH4~~SKMPt?o z9;Ehh=LR-RQ@!fPznjGC@Wrd}VZpWqCJN#z{;CBx(iIvk6UAQ#BB@WtF|1>fEzuyz zV_4=Pfoq%#&Ct1_9`-0g=7U^0;cHL{u_mo0^n1OU-c_sLs@o zV`$ms9?50W#5cqe78;?*8j@1L^0BtkZ>fw8Ygii*9-2P*V={T8K%lxmcpQ^9NhXQx zlMa=Zz*3Z$n8T3(X*QOYnJ7$O#ZNWvpM{27?oWR_zXDc1sJL=F^p>Bb$~jp?5@eKs z^(YY7p5cQ(P;uG}_J2^M6~y}<+6v>=|4`B{2*fd{CJ==}467=~$t$$bi_yHG0cO&~ zDVop>;Og;z=D_@s-F+oA#$vXQ);}UzgVZjwFAXo73~!K*3+ES-2MH6Wc_tB9k*pC6 zsZW$wfE^$r2HPPg%Z}uR<{Nw95x?C4Jdh_TtBw=3D)fYr)+&lsgmkVOGm2Ud>OiR{ z;kU&4g4W@=;_HJ}1-D9o7IMN}a{jP=_KhH;2_Dgbe%ApWM7oKQgSXXwLQ0@&cmFcX zO(u&~C-C1_#KnO!#w2Gl(p7{W7Esg%FWFH@Q^GaGEGPk=_Z16s_QhSd&qa~|u#Fl= zfntJartS%wO5Dp}^aLV^GaI?X#F3=*pf53{z~WH&PjYivkYM>s_a=LCQVI*2Hjy;O zHIT)}tUuoDj)w5Z?2f|VG=$Rhsqoy!!~_+zI21K_v-y#4nxJM-MV^Hk!)2R1K*!Cd zGzlsOQ25xTOR?(ye>dp%sCkU{IowtZVo8DMLSlFwev#j{8SM zrbqD!-v;t~LSTKP9Qf}01eYcZ(q&}7?~l2@i59JNe%+2SYz;CF_0O0KTr8 z0q;XwAJQ_tz)FjGsE4USnwQtwxq`UVthPZ4))3HBr_?2U}pO=(Fg4YE#Xrv(1La zkYjrNplqGyHnRa`2PIpz4adTyC@6m#b^H?MwNk4AeRIWF=Bv7lW2>{y<-C?<>gYt@ z_Uyr8sCE{r^uel1D-R_g<@T5ZUHEvGCEs`cr`Y-jwG zWGRO#pqTx*r52N;HL3U<>V7LpK1XMcKqvr-r~U|%Js~Le{q5vIBFEpx!^P)vs})$*@f`ahk|ov zF%@sMs6Gn(&S5NU&7e-=cSe3$$|`{~!jg5p!g`H+qZz@JSWl$w%J^=UhBl!{ItKfL zI{VWy7lfLQU+ECgeX>eOdf`CUu_?Pvo?t-~sLe0(hhMCht1Oa!IFoee0pDL_lfd{d z9VEwA2-as+B1|WMcMnhXnXyq3m|Mwv=4Pq;3$H%Q6S&?(AQ_!jiU;*d)%jxaIsoRO z;iqrv5Rf@WFqlB^8urfs&U_NVNHUrGAqnNkA(*LfEORlyKogmZTbdWR-m2GliJjNC zsnJKcGpE!1rkK5Md%^cE<0Hf}!?udI3jB|fx5j~D)BqkSoFGNkuu>zT0*-+xj!Lr3 z?-i=LSs8{nb5;zbPaKNfIc4wa>ibe=4`e&YW$x-6`%)ASiY#mJ9)*VCfgd=@z#B7aJOD{QfRND|S=y7`z18+MO5%#oWQb3t>Mh~U z%reruEYrV$`Jt2>93cP{I0Et@lr+h=iLWoTpa`e{E$RXJaPxhDdh@dLwHe~<$g=U8 z02$NwHDDI#=)XKan*eR1efLPY!34iQz0AzbDE)muX^mtzY^L&jc~ks8J}dl9gB)RN zOuIJmS^xFY%%Ay4FpqrO_LYCdpP4=m2wLG;DGB?TK%^$DN1fusckHz-*HkZ^`PO;x z7sNa6%yTL4_)1rm@M|&#D|*GJZ=NH&ykqHI^v__kR{QS)`o92WTXj91kUym zpWtmZ5-)&+-hqd1wR-YOv0vUumolL=XWpJ4bvk&vowRDrP-yBxbFtP$!Yma5{_cZ1 zFK(1~CI{=}ldQ;jPw6%9lqAp^VZ$!z6l78Tc8Q(VCX?3LAH1$`zjW;p`*RoDB$x4B znz&C*dli?TOC|8Hqvn#f7X~kBa`s87r16}TlZ%d&;uhk*Us}#&c!z%3y{#JTu=P4Q za;!IqSBqhHKXHp!3#(<;LfbwCD6)5ES<5A(s-tBjJ>hMk)8hdm?ASV4b60P?(tlOq z+$yAPU|=ux7sg%+gJToV6dPR6vklV}{Uo*YO>79sk zoh~_D$Tza2ickw7p?8@M0CUC}x9lS_u=coxepODSJe}}k=qG$$v3xnG@*4KkMZ~VW z3kQa?$QppnVarul7MV|^9L6MgTRkxozmtRyOD6(JLC9%dM2=W8v)c&0G$r*3JD(&| z3u?vClwK(!%*htVI6ReDhlzT&)g*?_G{|Y7Wb-shuxYupS#v=Puz_OiJcDkh;tFEO zu#b1%uyh>tnx72L%lV|dg02QVfF#B{3e0zHK9ij;F2FN4=fkY@EO>sZ(yiZwSAWx5 zq+u8$>6<)y!3r{58yf^Gb?oR_3){S6iJ<%kDfmscYeB6+N7M`4XHKkGM7Gzs9V^GO+gPBT zXSf)zCW)?(aaa{3k0+ zb%rj&ObnA35ZD|%1Jx1jU;WSGUf4N%XYa?pA=s81vBajE);Q@FU7J9|oWgMyA4F$K zSeA#LGBG{&65vdR&$5jhLy1o!M!MyH;f6?!I!U1n+J1;^ke-m#Wk}JGHRx#@uMEQ|wca zUEX?QT$XnvULbACz0T!?A0<$U{{CaS!Mz+Ez^~{i`S!aHRF{C?1K&yQeDHj4MtE|| zsC8wc()rG60}F86RDGQ!9Hka0bv~Ph6|ium=hf^i;a*s@Xu0+~)pla~*TB4q_0+Z_xquBufi>C)LplP^@lYt7#ykWq6>L>L}x?nR^nu$ODuhF#{y_ zOq>0Jhp{mm68F00_TOOU6gxWG6CYP}yaiu4*j})@UGL+IvwRXh+|DlJJ3P921H8GE zte(ryS2s6HtBdXRSi0ZW<#hN)ju?~({)$A8}kAwFEO4^8C4|-bwxklO5 z$CjRuw>6qe&KzhD&96hmGtFz;6d6X%k2l9Gt`CWklN;ZO=&^PB=*4|&SIO_J&oP;} zE68^3(1js5>SnQ8;9ar0W}b%r;q|OSesMf*3HV|DtI=DfzCcVD@4-!`v;Wf0ko>;0 zY(|usQfxgA>?d*5To40IDk-ku^QbLTH^p;F!#HiAwB;Ym{$7J0$f zB_T;uuM@&&n_T^3I`@EnEfp{8YKR4wSB+fHQWGcqkh3;@M2E z{me4`rAx1u)vn0^?8!3p(YAOU(fvqS{O>7IMj3nh{R9dGNccJ1`M$JfYo-h@@gd_i zKf5@x&f#y!!ePC@lpNZC<98CR%53!O=eX@l zGt{}~d7_dBc%8Sf-#M8iQ%5HqcuroF76hmUhh1iSM+m`dccQQsJyqSULGEjH%f)TA zL3i|OC7%z)sj$2y>FLU91!+%8H5Tgnl&YzpHeR3Q{g$dIeLDKWRN89On`J=EP&#Wm z{I0kLlDoLeg!4byeIzB+nNIZ3XNgqY_?!#9%X~cos;M~NQ>RXPBmf$w%UAeC>+b9? z*1$Mef5OMiFA6=rsZWSq!i@#Pt}f#?A}$$`vn$sj=NS`PO&Q;z5y^VlC1;z}Idc>Z zolgEJYyMYDtK)OirYYc1qVtSW^cZkx;XAuWD;4uLM+U4PejQK`c+UM)`HSO4yZtAx zbAZXPGFJsRXTc$F697`v&x%YW{zh)VzTEK^lpY)5 zI$x4qnzv&0o;_19K(GJCDc?&!O-}%{8NM}Ag@XlP&b5y zFqWV~FQqG8iEkJGT~W7huI>yNvE)Bdlq8)_!W{wIw>pSN!K(D)>@Otm#5cCkgiV07 zM$3g0C(T8ei9?$u@7JF~%Q5_Bevd<84RMvO>&$lUP^3F znOG+xUln_g29-xm?rSWVKLd_jxgRUgYLc(U#6#mw23k;%F^U#&z4Q;D7Z3*xMLTGG zb%GWjY2Q0dfww=OMEOTsBRNIwlN$dj5ltK-fhy5g3^75uJAXAr=%j=O8UrFP%@*t@ z-3rUK`9xNaX1N7yj}jxDBbc$~VS9mjemJPqOv5;bQKu$s+nz8)k zV19)Z^`A~R@`c28IL0!7gkHDIge?lQ1u=3-wk8?xdurMXI0Cg5i3ufTd7NZqIK*5D zg+SuHr8*gfByuCfC~7k(^}fPRf}tvi0%|<6r3BlHfI!#?^qn}>J`{UAE+uG?uq6dl zhWb1Yv|&h^_fE%b1oP*3`Abai-IC=G7;+$74%Dz{b0rJ|u}MEbYLdoYOWT2onhw-5 zp>rgz9MZ5Jgv3PHe9`jCPgm-Z#w|sKl)(GoSX7B(x!#NAClOiCUal zk7PbA;C)RI*?qUCLt;w40&wP{hY@eWJXb`;Zz&nV-nq`w2&1{uB5=_II zx?scNk6hHAe|0E`#+tg3BtfW{e)I%8q#%)|2H&wKA%scbqD5f>V!|(sv6iKdWcNp4 zpLYIj;P^TKgGK}6RinadDGYiJRWdBKMKNRb+(O?*-T@*x`vh9%k?Wd#$2Sj{qZ@ z^5BCcQ05$R)W}|MZB3c~iC}Fv~;Q`hm zL=F|8$5O86k0KjfjNrdP$%?(0SPeu9NbzjxiW9{jMWNr1QbQ+S=@*2}{ID^R2+x45 zP|A|uwA>{%E3ob|j}0iwo@M7$)+K`YS%Ov+2+W!P)?+9^($a=ON*Wik{?yUVWYy7( zlq(R0TZ5B(N8!P##p$ z4CBfnC_$|01ik~uae<}6zBj3 z%+@<|E0n$>g&#fskvety`r~Q_DRqyzGWsbLrickYsQa}Y%9%o8A#|{^nfd1}_qrhz z7kWcqa?2vY`?}chpo`$I~e^27dPx} zm{p}P?Vv^5wShoFntQ%%VU zOwG|i7j6a{hM+_EQkB7{2rQb(iVLjM!7`0pT*iT65v&3A!?D09obehP>ep0HtH@o;`=0)GEWpRTnNd zjvL8Kt-ZD3652os1G%8O1z)B6{*N_GRGM-C|BL6o=Z_9(odN1TG^?g5aS7P;JHiVn z9Y($goCZdGZj6Y@?7=^D@8lEJ5t&rjg1EJba++2RFa!6HW-7>44}Sm_LWm0zcq_3= zj*Jl$HUyUdUdgCM>I0*H0Z5Gf_`Kg^3l5={!hO&=^=` z5d{4@BB3&nVIJ5x5I`mRo)fwbsTI5#1;`0<$`VKe6q_R=5%!?H?nq@_XYF6mg4R1p zTgj_FG8p}QPi6&BG&_x1&1hiJAXP#D|AeJ}|2Ga(RD|8sGc z3Ou@7_zsFR5jbuMr!?yqMN8k}NvHGusTQj_V0O>*|i!vDju*Lup;2D3Yf{y36ymyK*3 z*|O5xv`*pd0>GjKxk@mqF9o$2>)?+ttqp!a%a%@QS`;?u4l1y73q~Vk>SKP64dPJh zmk6RyT=JOUL`TnjCp2d2P7$Lj&5Yz+KS{yD^xF!Vxn8t>AYxp3rlNkQ7g4}8a(v+5 z!mZsQZm*4IFB0`e5qatvtQBiAxQH*CS713&1h7{F7m#Kgk6<4;x%}Q7cR3*y^LrYJ zC4-UbmwBF=gB60(r1(w-7Q!{I?_t;IL83lAG=#6I`(H6+>m;=*Aej=($TtvN@wSUr zmEl%cg%O4DqJWq_c;UY3058pq?Ps}h#dv85moNL3kfH##P5xXXn3m^VQWuMMfs5<^QnmY9f9u_6?KzR!`6 zxNg0xrHWP`OY4V$>%6B8M>Lcxz~gjeEyRf^?AnQ|Qzc>#S^8IoHkLqdxam*f*p$!X z#arO>+3lJgzt`L68vpxCbl2NsU-swI*XM&=7vQ~m>*J|e?`v=N)8ggvql<<7rZW5M z-R|oUe6f1>r>6STjrGS}&~qQ**9&sCJmEJ7eI(U3!PMsK1jFZN^OnyY!$8d7Ilo6A*rz21A+~9B2ilW!(8qDJ`xSk?U>zubD=4*wH-0 z0zkXiOJ6}}U5J&0zBmwQW0IMN=Zs`?Jl|#>Is$_le5`>oUP4jAUBVtBvJXnex-)y~ zzfS3xPt!NE!CsUQ#Zb4zc^0nt6d<$YQ$rk|K~e2#_z*ys(3TwRfnuGEVSN-p7veaD zbnI2*PEY%yI2}>*m^wgZY7vzx%`~Q@4lp4cbBTxI`zz#!eDB3$%lDc3%9v?4?<`l+ z8UAbPn2P6Rk^5BV`ntsRkp07U%@JC$z#zv)@n0j$Xes}wMT*4F{k|-9=)Ut*vW03z z#w^04{Zuk{3W-&0qXe`d17P$ZbQDoe4RDnV}*?3DM#jgCO~$Q zTPKdU_Eq-RrIW+4lN!eOQKszrNq?s7Vdi9JZq*XkxHsz>0^zZjkl$pj(OliiJ&QA^ z4DSW(0=vay?fCZ-p)CcuNiEi2W|u`1jSK_BZ0`SD)O{J4%az8R;K~t25Q6FHSr9d` z&sqfA25DssM);C4pMSWQu6MAy`UB(%1)pO*2xNQNPfg@Xd{9)g1D1|BpSe#L?gZ64 z49fW+t7nsUD+2U-EgiGCoUUb&u3B0$4>`HJbCUOU^R4L;Ko5Zhao+re(H=-VfobIC|}~CCF3=gJ@r|L&3>X z=HCdvr*aLJ-N>x`*n1tfS*~@T>AXbm{Mp2r%78?1tH6dD)+|_^G+H`_O5fL6#$$Zv ztoxlF!Ypt}$49;3vZo~fBR~SO)yhykLA7Vf*Dm1mV(M+UG5lQT%N5W}n14}N|N5`W zXp?KIjo>h}V^KGpSDl6WCjd(ISGXbrO+ZZb5{7ivywWQ*W@a;D$gwFl@;W_a6VvnPm7 zkLb@8kJkbR&Fu9R$Cd{Nf?JO)uVwVJZv7`2%q$B&#$`;%sVmO@hLsU;q231fD!G)R z<@whAR#~;c6V9SBoWr_@-wiLV=NMgaqULXo?Idq*E;6S3yMUd`-NO3W|Hao^0L2w_ z-J&?bLXZH#-91Qv;O_43?k>Xs!QBUUcXxMpcS&$}=gs%s|J{1`)vH&vYHCjPnXaBb zyXExSd#@EjB+=|qRP9>$=Q=7i{$Ri;?*VAzAv)l7eY&j*9x+;ZKunK`_Q;a-RGr4d z7dq|H>|&#{ivdVaDK|S6g@T#!%uBxmn zysbXgGPpKU3?6G;N*(cu&Fz7Y`kCrxF9;*CB@0n_g%O|8xb*-mrBtphF=7CDbhRhZO zlCB*cd`wG%=LD5g8`7)E{LMQX^xaX9MSChND5pBhcuTDucjCtj6~{b)ED`4=Y{t#1DC0^fnI~9k$?$p>J7#U3#y}I&8fj z1lj9d9+=u~?Hy#=>Mb2G*lvv;n4WQ^da$H%=AD21wC7n@wbrXRh_c$sKCrdiiXxo7 zJiGW8{kW$3tT-$6nD_nW!!D^xo-RE52-Uru@NT?~N~4*PYP(X3sU4_lU#iiknZG)W zaB-FZUC1K%Qj|B=ztwegS}97pyfI91neU3xmN^pEOhf3;7H z?;>pR(PjHqipg8gp2p)tP5EZC>TkR5v1#*ZJ7P;8;H3%(61^)IJ|Y! zu(11HTYSFK6AU2-Fp`YzY5O%mnV9%#CG^`Ej!zZA3Q?J0U&=hm=1=f5$~(c~QG< zHaZG-p4S;lJscmb!D2Fw@t1oAAl-~G1bl3yPd0i@z5cNvC z7sa=ljpoMfW(L|bRtQhe%Ye<9mnqr{9>+VhY?Q?5#mW_ zIlxptN_IO-Q|+n2Ot;TJ_=NCBE zF^jwN{vbIQy|wj!Rerm)zKiy@1ax=z@`zqMov4A-4w3M@^|9Ur`n!JcO4)YJWAW54 zJ~ga7hP|~!+W%e8(sSZZ3^&QRcSGMJl9wfZOA?%g8(Y` zB}I=%%?zblgY>eJ;B z+}lFs6|)_0X~gUUhXyMhxt%+_j2xqvTa}}o8|@DbKc`V268!O-et7NdCBQe{ZF~(G(vqAh8ZsvxLGOp8C$7`PcCUE{h0LG zE4yAZ+paYitdIbhotk^I+jkm^1Q(aWeDT?GQk}l~m@k0#)z0i;bK=Z#WP5v}t2xId*>zS$vvC%f<&=(lin5 zu+sC8II{UqGwR*)kbMLKz$s6tRJTro;E2i_^4hDZSvt=8LZ_7vO!2|l3Uwh2*+49cvz6enPJYEAU<8O0cb!Mt>{jFqo1$x0dl8%xb zPV(vIz%AvgH`U9tZO`!!!_G78kUD+*v1#lOJ|s29FH5Nr1uI0)PQ8sc;2{Exdkp3W z2`{(h?L4PSJRtlBjKxaIhh)gk7Qjw|Bb~X7^443~_If(?l|i_A@AD zn>UPNK!bka`_=kzJ-m0U>dOqca4~ryd zW1i+>7KYFJ9`uR9y%qvu3jOym$KZp$)8TdP)BX!wqDHQ{Rl0m zKEfEm5Oc2omHO0+x$U3hW107>L#8J z8&7uf^w|!dL^>gg!T)7Bpg34Seh*)%ApeKsU}0hTe{&q;Rd+3pTks=1M<~A6dayWp zILtc(aKEoiuuagY#J*8EM)qhvo!8D#P^#KzqHZBUfBReNYm1R$({1qEdLOWE_JmDsXUl(WL1+N;RuLv zb%`wl7JnFiDAbw*VPkRaw2WAfuR~JuuWkJXvJAT-qB{JxY&qy!HjC;5w8sn7dxh1e z;FjpZqoDW1P=X=Htdtg;3S9qLmwB9$Zq}*NX@cL9{WJaHd_6=FFwRqC-CwYE^9&p7VN%uM}##17_1uph|mGEg)fp z*uP8|lcVNQoB;mR_92c$m1RT-eydEm)5+@NvL)GwM3{b>mhmDt9a=9Tj*ld43BzUl zC|%6@2kYE#&V1vRfG7sl`mB!Jm>SHkq1Qk64JvpQX!@tO$;$YTE9VDBEWK=*;n7^; z9*2gzGIu&$c~a8DY>h`1!Ef%JZ5%ZTUDy0yMU-5N`pk;%2C7VJd z-9#K1LN*(Lomm@I!_hh1L)38wBf2liPU$EsY!H8TmejO4>GRV#tu1`XdV6P#Pc^@=YcrXAB|;liByT zOhI`h*6ad)Ia+{cWH2OYa0*Lrn{de;r|f8ekYKaqavr*_)fXu`KPR+`2dE=4Bv~k7 zcnOrmMN%bJHj(7wTRJ= zBLNkmM>V*N5Rl!ho7{V$rha2gz}R031!Ky(Oc+Yg;C-kPt|eor$4I0>w~E{Jjp z=m$pAoir$NPD>7tywXZaXaGVJ)+#IfNr9gcb(kKsZve4s>d$XdO{szW5EeJ!Q^kF7 zzOWRjROdo|)Sxg_fw{^efCA!Eg-lx#eMu_B=w4Am61^R_=I9Y$95eT<(^bV6h+apS*rc2$Kh@J5&h?8v(F@$niXXN(j7!-6WP@ zRi9e5(^tqcG&0V@pXl7*MC9^j{fWoWqV%BSf-M?6VOa8Jt%=cpXpv9{!`V%CG|l)6 zprWAAr-`!U0{w&!nUAG+lDK5r!iRvE-}hqeY#$OM87hrWe(WgxGQUHeMCZ}c^5Yq4 z-hqpiOf=Ao#WM3o^c;-m$%RH64@;s%VQ8-4{D$d0=FY&P#Qm+drqYF&6pQ^>AaEb< z%a9dK;T&j(U+5eC0*>=@YH$?{hM*NuJ+EH|dLgv`3uSqd+VtMqUDX$AU6*Dk9{X5+V9m+6sQ)*APc-;B$qP+SpUTwU?y?_8|bAq z(M80xeh;pYW+G*&VPW=W#i!3fB@RN6LhBo_$M#vt(+LXyQ4Xcqnn^SO)?yP2OVRxh z-h~Y34FdCHXO=a2L6~WaObr@o$VRvfYIvG8YY-Ac$vReKn`T;2fgTaqGjx7BcVjYN zi96xQv?u5Y2%U8%^q8433jP!!=IPXF4tJ9Uzyt*<4QNN@^cAbU(5OM?R0hST6jCFW z!&nUE{5AWRjTpg1xslWcgqayoWW`FCG|enB^OC|!-Y$*D(J!y~VWgRh=-_G)*Xk?ac8hwI|tE=!!Asm^2Nw;LYNfQuN0CTH-X>JAo4F08hJ!G4de)VoNq^MO+=7d z$e2Izn)fw4M5Vr%KQ7=y-udFn5MKnl*KcM1Pzp}*}e z)eyZXuBE&bx@s~}z0_J-8#s^o|Af@gL?U#emj0kKttcaxY=X_B=PiLnH)s&TFD~a> zR2D=d^r8P(7z!ww85&}^D;fYoMlde}%pkR&wz2E>QN4lCgI!%zWD?Vib1ecM%(I+B8F{9Hz zEQGt^vB+wrxG_$AH9+T}t8@ue8!{3Sx2mRFy}&zPLyS(2 z(b&O?&=Eq!*KW*=qzFP1x6W=r(z>H*RI(65VJhu>^x)b62R4ZPlva?!z+AzGlLQCi z1+oBzWV53*X}X#-2m)hR@*hX9mJMW}ON3=M`Fg`nh9Cw6t}zK`vPTq!tk&S)?^2YM z)v>Uh4#xOF*gB(7EfBUTSI9Mj=>#(P0_g-6o&o1da1%%Z3CNUF$m=uV=NUM-aF}(K zK~C6(DUx)+)+8&7ze5ZxDt&*4qGH8>$P`A65jVla%P8zv0+jh`>{Mn@FcIfdIAFeQ zjX{7!f~;QyBJUSz3CyHcpgb9p=?Bf~5V`-%{AYTy0b zZvT0;%>TK&{s?@|{(J{@zuoYEUg>Z9zQ=4V)BEgZC);no<1L1KK0Qx=KG-8?UY|yH zM(6-*hMssz1X_4vFZ^sv4p&Zx%*22K0;cIA%G2=Ps?6~}Vn+AFbQy}_$ z*?zjO+nPNq-2T|R1U{ZOcYl&S&YoSysArd+TAmonmu$biW`7uO+su14*JEa#o$31B z_D7gg&8Pj~Jg8mgKRXu)Pn466gG<04O2`ZDvSZ_q~Qyob<1!3)p)s5TC8t=Ht4pxjM*%w2Q3aV1kPq0x_M0r z;~%Nuo~m^1fabC^j0xz=V--~ybx0| zg7-R6J&7~;7ho_MMkV+Aes^#&3>%o?F&oAiZf9CCdhg>B;VEBHOSw$AbzO7;)yqLL>KQ&iDI%grw!S z1T%}-pr+9jra@V3EU7+N*tGyB%eWxkjlq`~q*sJ9I)<}vHIQ`<^D#UpNSwgO7OJ)t z%B?=x_DtGanZYCUXOX1mr0@IeyG`Map&Zoj@iDqv;`Q@PKjD)uzeB!F&ii2V{^^5_09K9q0N+6JzpIX_&=2ql2T3QYoH5o6ICFPW~smY{jF=013?~vpLxFS>vB=$ zZDO}_wYLz;a&Ym6jhe@ZZ3l;X@G@LK5`2HUxnX9T4nCN-AfSIK+j+-Ircxn1yI z^KX}I(3WC}ryJnw(|>#H{iJZf6pDcr`Pr^KCJf3; z*yyy~u_0@?%c-$3HgBw_IA1m8zu&}xCEx)$vGs0~n<^ZGn+q1&3$}YrhRE=qB;Qat zrpD)s4)LCE{W*eoYlkkX?DcM$FR@Xs-j=xJzi+obrp6Qto%_xv`B)SqCRa1?=>$Y0 zVPO)Lki}LAM#Z|4or?mY!cClJU1w{k<yWJEo@QDL0kxfx)XUcO;th?%{4qeq>( z893`Ja>U`PueZD_w9|UpQ(B`KFwWl7+P|(OisEN+E8iurfi{`?aB{n)YLo=dC1-YJ{!?LgI%W28Xgt3D z7lp|&mC2hP)C@yFiJ57cndgqwR1Kd(y(KQl`+tFTc3rr#c~{FGwQ;MtZTgr)2*fi1 z?fy#`&jZ+}nZo_U>0)5Nk@Czp#c4KtFvQKxd{y*a$LWw%Hy+hCOQh{6YwO-k5#$=o z@hj|`&zX-jX%|JDf8Tm%lO%}?lSc?u!G+x0^~ulsW68iMuN4d{okPh-zZ-n@ZP;J@ z9Z05nr=n)_jH18eg^JQa>6m{AohQ!*a%xJ$TftwIq{nX61YK@~B$eS8C8sdL5_iZ|xK5@mldFvwiKkx;u zU`+dl$-HE8Nb=Ij{1<1-!3Fww@xI`w_u>sEbjfZB^7o?ocfwVr!pq$4>QS5VT9wi4 z&@NjAuFT5sJZ|lYV^cK`j}+w*n&5}Xmkcm6FY-UH@;?zqD#u{@b)AR7#C2VV0j&OY zU4~K3bv+PvxBxo(FV0zKhi9&T5#F1z+v-Kx|8-xq!spU@j6FB)f5C8jbz!i?{pDqU z)0Nq|!r6Zz;C}F)7JFwcG*^uv*-c6QKNn0qlIMxm#X3CymS~z?*d91gH`Z4oFsiw) z(=g;SJWl$h|Jw}U|FmPelxeh-$`6^QPU3-HmUKK~bOMfzQzI_)XKr zcmLAvV^jT(gRuL;9lkBFvy*zRGuDNPd=u#&F6j;o-_*Nw{>N3Fvj{*xi9F9+e(IcO zz_vM99j<@jw;C)j5vCuUiF@~vfdcNbM zc+vgEU+$|t&n1B4Zp^0PMEG^V(imI%JJDKURnOx5(9bxy*A|x6p_>J?mQYTGudg46 z6Z}V;{DBO|FGrBsQ`H@_G1y1VyuHDU3jMs%N8`;6e4HX&=g{ndQ+#eYk^fQ{<6f?s z_JO<0SKLdsbjNJXxrcXgud^MM(i@epPH5*5O!>eMyJ7Q=9UDYALZ(o8;eeMbu%^j5 zQXhu9gD{Ib^VqY=t;gkEG1WuX(J*iC5MlKt#Ob*DBp>I%t!DNEgXOvQT-u&S^nC9b z?p9OHF?utA{&nrvrfLpQ1&612KHKk64CGS}mIFHsu&V`inN~9qQN2!FP1y@uUJ_ee z5+98hk5n;C%2S~{hJF6=ar|qY*)eTWRXohccgT1J`2EMpC2{{qBUpauTJdYv*bV|x zR?Lnfe3sS@Buo~?PAvpcw^es%j~?&(#aT}MkEt#W?S(UrddCUEniyYc#ttUxEFjOe z^)_YM&xTP@31b}wQQAfR>hhDhT?=Qt_;T-h{`R$;Z`;2oVxoru+~L$MwV9WWe@~^5 zS>04Qos+p>utyI5@)o}*)q2Q9VcYcO+`ZF5k-A788dEqV0g{2~R$MyaO*O%o#N9Cn zCd`da(LylJ1*nR#Ged^fih$l&=}(>}6`mb@x0}!K&oxv_9)OpxolRa1eClu>y&Brv zF_x{+=L(To_%ZgeU+I^8clV>)fpaSVW^^S}>IgO7e=J?cx~A0;dPQ@c{x;*~(J$|G z&+jyK2Dw`4w-1{)aaRH|{91u)Q`E>6r?tCJasWL?+sRe%CSa(r6S(JfECMj|z?Qn) zf}7uh`pdL{T$ti2r=wxYw&w}5#=EA@XuJ+Md49I>79yax$essPxBln;0L{zo&0+Uf zOXACbG9)@=85gtFb@6t_x(H>rSMQL~;foSXN5waU$B!yI;-?0iHb1aV@oEzhh}&9| zyXE^*mYdP`$n-ogBg$tL!}>4x8C8Rw*z26v%L0V_He&tuO`CHJ0ktuU+(q#L(+Nzc zJ@gY!2@=Cg@P13RcU12~V|IkaWXM7K?cemgqlvs2d0XGP;=q?s z#?5A?#gGT%CN>@P^0t}2Hty>tw+IaW=_@h*vVG-1Bme>Sdv^G-%P!OTnwe|vd&%fq z3EmOz=--skgd%$uw+83z==ZH-dQ4l+dolhL@)+5B_m_EDKdKi~`5MQDPW_V_eOCaY zb2jc?kQLaiW4E1eX#H~J>%SBZ=j|!Umm?c+Mle|_r5 zBqDgsC%TdYv>`Mo+ItH{Z8qKU=75UE&4b;&URQv=(63V+AS

g((k*oHPp|4=yoJ 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

#k~W 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 }nULUTiJoj&zst$O z0uBlO(x_l^5t9D|mGv!+ZNM`wOM8#`0`241C>1X1g%qpev6wiwam?&3g>1yI?E+)l zRv@x&!nFnWP@PXC=unkU-0aYdH#7H_x_JBnS-unIIQOk5%J}`IXWqV(pz!o{m|*+R zHP&zM`u+8rm#^dLcQ4~*inmJf+LPC7w|R9}p5Sq;JI}iPe0T4deNFc@exL~aHiMWZ ztpCK~yr{=_tmi7;!z$U6FWavt%T`X(4lGAb9XE?xub=)pY=G`fUHZJ=BWvKM64Gj7 z!w~Rq$SMfIQAV`L>SQ;^*_|>@OlQrZ(iXL{V7JLmtqIc4d%Y1N&5m{MJ3Z|XOaoT0 zg9L%0YkWQ7f#xRBwN*m3^=taH^UX)!wEMHMjKlw@ansgM9#hkR*=tFGbKuslV*L8V zt(*(9Oo#8-A5@j3kL}QM&;?~-<&kLu*EyGK=X?Bb~#S6W+LoX7bzq;|I65Kl|g2-of)xl$B|UOkTC$V`U6Zl_0!XxsJ4h0$Bm(9cqc` zyyNaw1INos=O3_c*#u^~*J1mg0HNr3zsK6PFUI*2dyCch!R})x5AEXogddWyohbd-fVYxJWNJ{P0mOfMbFdhO7b?rEWB+i{Fo^A@Om(&kkWUQNg8cWNQ&c7rxv3wrGXX0WJH#It=o<1d3k9;KQk z^C2bmrS-YA=ReMs;%>`sS&&LUC73H8%O1;Cm7JH7OX&z}}apgY&qW!p>w)odNJ_>e4Y;6Rpccs|%6K zl>ZHd%_;>?H-^ns^y;BmMn2J>y8;QXLZ}kA+er6Kh4vsY?pQUrYgQje!+^VB$ z?#puA(}zBZ7N%4Dc@sEOqU_5fncz_Y_VhJ&^wH59U#(vWQ<8fc)!{;1;D5U}A&tW; z;^~Qix+yLx_x(SQ11A_nR`w@T|3wjlf1{@CsT?{Zcu!LThGZG4dz9Dzd70ED+Bh#+ zb4N|hn+7dPuP5b?vhWd;eo7VD=ZPt1?3GT*dC^U_Du$ciZDI&LcJjjAp;?g&XyE16 z4AgOy#T|uQ?=l3IZ!oG6+78>`I(eLBSf7mmg$$9+4q)89v=!O-?c&C$qKf5?w>X1vZw1SU~KD32L0`d7pNdl?)#h=p#+0~g@cD|`6n_XM0 z2kl?!szdg#J=LS|ufD0L+wH~|!Iy8T7g3jQau(s1@75kU>h~Y3S?P}-&*HX(kgI6| zS6pj(d{@~o1xGzm*V{$x!kvl*YTkd-)$|@LytQ3+%^nD6Bhq)x)WP17>8hHS*Dozc zovc@3MYQcbtcCh7Xzf|<*H$kHGTZf!K1~VhyI^%;7}T}u>*IT%4EaJ@s4(!F`z2y% zhuu>mVx!tq!{m}zC|}~rO{iSrQt<_dB^njJ9%o2qy%OgP1h&^_ek5DB6PZaaO2}6j zoe*#inkLU0^Up=9tDaQ3YH`j+)^E>pG`Hx9%GZB78M4gN8*P)rUE(~^wye{ex6RpG zmOnMMtX%D~ElgM{J&i0HP^fJ#h<61)Gt>^9ncQnwoyd8lXj_%na2GM(nLYy!w|`#$ zwCc3JcP$PZckOwv${C-uD62LoR+zvq7C@5W#IVt#9`%bS){`%>KbYAW@?MrtR^n&K z1!Gj~9FyIuR0*-(uVdvOfAv~iKGc0sE*YUNk{We=Yo0@R=IpGKcX*NDvHKoW98j5B z`?y(75@rL}W;_ek1ZS_ha!f^^0x90?6S$_?6DKbRpZ}KJ=BxHg&5j+(0PPX4dzyZRogK^y?YfC)&1`5(+ z6#85`PPj0rz*~RfSL5)!Mx4WEx<$ zB8w>dPj50ZN@3$@#aFeF|9(rz6{)$(D^YK{%w)crcp>7%)K&HwtvOx=~Zf! zAuQ+(>FBmcupJWW*#fjj> zbx6_qTGRP{RYEYzeAg$6x+8)b9`tb_;Nw3y>Mz(b8_0CN0(8EfbiN35zS2qvv6=7k zLO(W0O^cxdVw29F*eH`|-6@jxlG*YwnEx;|pcWa%6!Q~6T4cy?q(|TMQSh@n zMGRR&(pp-bwEVeTl$89r#By%leU4;qo`HOn^ew$&l-29U#S1aFI+r5+Q}pL9A$NL`_b3Ou6}WW=@%C~&f%=&Jfkub5_MSXx`dFG6 znmOEE>RsvwqxQdeV%E@T17gjA2G<6zR?;%!GFg-@#7lU0TK#@2J_6Pn(Q_Hf+QVoP z3c2%MNEoZ+IXaYjvefgRl>=#6KV}0Z_f}sDFv8q`TffJZ^2^IMwWh7AZS$>35NoGX zATH?Ael>9alKF+;eDjllyxEa1j95*;-)=`sAPE0Lz9rahueaq7#1VUawD^&%4RXF6 z@r1jo(4KjJ48EcC{#SqfVQo8|04&(608Y^A{9@D#W~j6cjm z{hW=Tz`JBAeO{+BuIkNAdi}P)xa(Q#`IlEu((Yz|;(iE_|JQBOz1xktX}L*s+4;bB z>CnZkD%ch>`L&C?M5{=zBq2115fxDj=n`?E*Or=m+X3%R@txkwAS)C;?g6~nlO5XMdxn+_J6PL|V77SawD82%MY zY6nYdCrhCrgvAh2W(cu0gq#^diaS^YVX2d)wS%R#lSR{C@5x8A?CWF~qgN;6yq{(n zV)+d$p_F65K``DyFc2UZ$dDX=*+3uJKtEZw4(fT>v#)Gma&mwyTPHQBgIa6jZ_LJD z<&D3S8-K0s2MO#4f7lNKJoeHb8jJ-RKI7}M!RxY3p5U-F!ZZCv!5c&g!|@TP@fD}> z7tiw%&+`+{^A*qY7dG`_H}zw;eP@Q_M{Md#Z0b+E=R>^bN4)1tyys7h=R=I=M{JA0 z&4j?cf?@jumJn!upnYgSB2oI>P%c0GfOw35jCm}7%xu-}(!mFqlUA)&uhk1}Gd8BW ztUPt`nRwZFS*2FCRgXFH8Q7)nqc&wL%&y+3H$lj&PMAL+T*uVvpK;s5sc)~cT^Kd!%le`OKwi8|BAj~Bv(59tUmib!wy@X%>rC}9W85>#TN z{l5nQW^Ek#4c6Jo7wXml_1pm9FJSfUs1FA3Ue+;QSdrf#a8OxasE!YmY6Gfqe$6=c z$>lz^9F$__<#)r*Hn)6y$2QkKxjyhiIC~tXipPgMFH(dgl~t12>FFBWSKNrCDDMwb zM=bUR@UCwJU^~B~2xv#iH}W_ia{+@WCgo>LW3Geyu^+w3g}mcr@vSp$=;^5s29Y_& zk!J!Ca$O`fC2gX0Hs!G{ZMXh4uT8DDh;u#3*f=#~FO3RWKA#4)_fhuY6cmHX>Cx5J3ZNk;?5gHT7wV++Edrb=5mZSLvO0V(kl zsYw;wW~FeoUi}`v?`F}=vtLy$yKw}?B@UPb!@AgFbww`Of?5)XWP4lU8DwT#&SAk8k)235jozfkHx^+wUsub%!=8lw{M2(gF5;8iL`aPXs!cU+Rct!Y!LRD!O#ER9a$G8 zAH`W(CMC@vfod5gEV)(JIWo@jq7J_c8cT5dxFRzFT6-NWmh~RR7)**<~Hgyc+_fvN?IqaKenw|)}g5io0H+> ztxhV&3N_3Zw+7 zQo>;IlXeBPfJ|OC{KlBQK~H16QOM$ufTJlj_vAM-jc?q8C%M74dnTUz%$vI{DWN{~ zI==NL9m_Ty%cpGYi}K)s5o2;@$l~CzbN-0z-85QaB1u-W@!1V!=}xw%pT?!MkUX)^ z2(!qZMq<9FBG!QJE{eO-9;5J(^)-S)^x_`tOV|jE|7_R5q|Qyc@4z*&I4-6!_hoRU zDoam#FG2mJh^@GU(g+MWh^JwTm8(l0CaH>Fl`xG;JsG>HN;NT?EOxC+l`mgpJRN0Y zwtLqFk=GdOw+HvUeGTKjm~U=Z!t!AGI%Ho+&QY}lPqvALfk zE}WJ_Fd1!t9Tq7dTPdRIHks0{g7gBV5!IZZHL2l;Ru>j6AGl^kq#UUt{wt#YCxa_E z1LJNIbdGP6xrz2K=gSfZ3MO;BP*;qaZ}bZQbZ(ga5KvSjd<$u^B+mcCbk1*6{cm%F zQ7i6{p|e-;iL5igzc!&mn^Cza83|wKRs&Y9V)UtE^sV9&(bDnOkhiLkYSdA!#1^tG2Yxl%GDe_I)4;O$TUB{tpVOQ=ra+$cx$6MuOm3)hmZmPY;on^-ZT4qH(=hL ze|WJo<&AFhvvOb-jrG58ZX}!kB*(eYS3|^kr9U&^QV?^WDNzPVlpz+?h2SQM|bABIb8PP|V0TVF6+#n}4$@ zX08fErDOVu0f^DRARoRsUY=bM7g;rCbi zPk#(H@DEfgCd>>ow_h0AWzqrvFog?#&*(Ndkk_FAYo@BFUwej~@tt$hm`}`@Z;Uq_ zC=~_t`d;D*HQX6K{Dz(25dSTe73K#Jx^6@Na)YvP__tdj^n{0Bfu7$wD1LmBWa#`N z9*xH{*Dvx-DPg4Ih;F+gA=KfAY-PpVF2meUX7xE`T81@c+M0wcm;B;D{%&f{W;^svSyeGlmrs|~K^~2* zx}0^I3yf-?e%7Qwi|zpal^o@B%m+H;+cu1cVC8co<@0T&^Wm(ue*fel|6~TACF;TZ5NV3gX^K#2im>i1;O;Em-B}=bTOcb)BjYhUO4RAcV?@89)k+2|S*&=)6Aqva-q~vytFc)lz7i3Ym`* znJ*K=8R0u^k0@MaRrA&7{nv zoT0kWJK(ppxUF(mWjwY#wzRYnVoMLz5VVctx5Er4l2yhjwtUcjXhudJYS}s$+E%-& zj;9v>3HAfpGOurv(F*=;a9yFyqj0|?_gyDg`Or@PK=-n@VYJ09b?oqf*-3gq?625i zhj#X7oy7C6=T`b(^K9!^j+ejUXitZg-K=HAbKhi-Nn+$)-+RpM@v(Dw*o~D{7}jfWcmRnNB z*gHHRZoH$(3Tk&Fd|VwKAlH{*X(U9Qght1B-O!L`W&e$tc8+9WNN1zmHT}Hf#QyQB znGh9eCHzkoEc+=)e4~WLKTr;jN=d=$3AsU;=CDja3(91(mH2jI`q{V{M1yl|N`td+ zN~1PM_%*X4IbEp*mU+2_Gp}s*zp1A%VyfF;e=IuKqgERnm8I((l`W`BhCq2i>o{gP zMUWUv*f(9X{XHHMp(fY9xL(PwE#Z$44Yo zuM(8c0`gDrxWnU4QCV4ECidZ`)8{|PZHJA=>3HU$_L?RA@XRBA z6Nu&1(_Zvt(&Fld88*%0lu1}UsC_Gxbn6uyVm(t9b%>(Dy*GDsh|0scH@Ae{aPJE$ z8YHVjJvf>hB%MM%J|C#cr>r+Am(%Za$6x_P{$u+(Iq7{%#x`|l^>sgVN>NHsN`p#* zN^Qnk<1F=&##f34Q(kPXa%;PqhP6#f>*jvk|FA0cDCM8sEr2nZth#kbE9bnnr=2aP zE*_R0b~I5?AW%^uP&vMTAN;?oipe5`%E8yfms-*n@w2}ViI!smMks~W=a8Mxzk!te zv>-Y%(=+Idox52+@40}%`uOT|zVLJQ-lInTQGOAlv!>+s>@GD^+J3L0mCj`b3CJME zXqSgqUm-4b7l&89jUj*V&@s?cek=}%uHLccl^lz|-tlY{X=A}35_hcBrGgBZI5z51 zY7VJ8*6M=hhq!n68ue|XiFaul0WI5@PdlGeCfzubL+>i?D(G@;X1GG8*3y7uvbV*U z{<{*STE~|CD{Z&6Yf~HaJ6#=|7{aRRkvPO%C0;ogMe{JWW6n$K2_63+OI7g+P4h6! zQT{Hj)wu42`FWtND*c2NWkA%if`m$PaI%PuHsO-00H=`GX@B}7c819fz%^AHNjIc3 zyirv%sMa$j7R?zT)ebGKc0Myg0&i+>k%)dC@{k^MYH#z)(=1X==R1y9g@4jif< zZU2{^3~-hw8vL6dWgRUaA>NzcTOUc@4Axj>hn|g5wPX?!um&Bgno20sqd85OwIqc=>G8Ka=xpj-G4i`%Riz~i zVZ)?X;Hq#>rG$9?UBs%E5(@GdToY<7Eg^>D!Tz1?E9u9$66SOu!DZK}DpM{t!q{k0 zE^k<)D%F~me_*dFz?yz}0GuOp>i$pho4tM+!~0xM_^;A(c;dYbWw^MX?56EQTW$<;0lnyIaiO8eYT=jutll4$)STos860wVF)R&%qZ*aSze|NLq;K@?UB&{$wH>-FIUp%_D{;B^r|} zFRHLAG43O2L2()r)w%-(uY#z7Ebke`n+$jkk((S*4yl_gN)9pOX;|#L`}BJv%BP9* z!}~1Oh`h-xfIK3%GD|oj|MC}{d``$O3i&;cNs7`U4Rs8zPy+D>vQp(Nf-Cm7*Woqh z#bnUQcEbLy+d{VLLh^N2I(mgLzHt=G$eVr~Y@sj)k9-B^(eAd*g%$M#wixe*ZoiGL zy{7E1a`v*Hta_F{YD#{MJ4elSbNhGvb}jC9iOh-%^l<5uZ7!YB-(5!iF6`k zDurKn&S6Y<&Os!1H?ZAX!PgH>{(^$6yC#b5v1i7LtRhGY)8|>uFqPN5I31>heRtz= zKnB3{q5j>?^MMdd9eUs0pd7&8-3+NE3bx|S{!%QLuU(uzRwBK-X;Om-wvx>nDV8hV zE>0U{;4e(8(#H!5MocYC6RR5C-Q>;02@0l8El%qwq2JwT%!CT+)mkpA>R1k^twkV+;BWXf^C93kHvXoB_jm$ATo_L7*(}a9!D)JSxq)!f2&CxvEIZKlW zNW8GRTYT?%jwFCVhBa1BzrwV-*~f7_dPn}CG`#UaZr-(NM`D5Ry`Ds+zX8rUt@lRR z*pGO>=Hhi8>z5RKm?xvPuSXBOdvty*M?~!4-b%pnW%ga-v39lm@(!$Zv?45`VN=k> zHwZ1S3DwS>_+46cXKvng>M*jpN9I)CIKE;>_GO(DE9pEj=#6qr!zuYO?=hiq)pL2} z=NZTPS8yTE-p^|_rm>&b!EV5efN7f@8Mp8k#ecMkt97Jyfnhi?nmeDsRk?80%k|ge zceTk;$B?>D`1|Rp_;$cND`_=;P>&pE-6(HOUcq=_Y6Rm*t(^xW42aZ$MWL?VEtCI* zyY;`m%I_Y$XXk(1C7BG1i%Wu=_Uc{{`&FyS1g)VxnL+=-4nn)b(M^C>ubq0pSX-+X z{q(1fi85aeaYB$1H`)cM%BaF+hSGRAG!g;_!Br1%2bl*KSV9NaY};+lD}?Ky*1#{o z5-^4KzOB3!w@!Qazm36g;p^@f=1*8pj_)9Mns=DbRvzWA+|PNf<7;;073;NFOX~~g zi$N#dci7JbUL)S?fRHUx+DDVb**3YzvtG_h^Q2u!mp2zgdr0r&A}E zc%qVaK?of=5it=XLttG{U6{;f-DX`@mGabYAK4!fI@r|SXHQT(;w#Wgs^9@m+Sm_@ zqs07C_C2lZ6t}e&Lwyd`MDirauI5#s;Pjh+>wvzIU6tli@yX~No=4(q;A>Lrg8r}a z3e9ENQ;R!3;Mv8)S8zDZXuNKJ(dqQ@?wf~y>!iL_dA-@f^y#i}{VgzW+8$brJDQpM z8}<6NP{1Jh`xc!+^7-#d<$MPvkb^R4(4R<}&GIvN;+r;|iaBQ~o|^@~4gTW+n;st6 z(!aKos+~)Xm;udR_E$Dtfld?k*%aw2cEFAL6S4ys*r*i2bTHUx?f`H3{!u|~f&O7b zH4!`Pp$ZWfBh13P*vk@;4fD`v zm-GjsUGQH`_ibhovxW(h+g?=1ndKy-i%3h|VU~QIcMY4ex-Bnmo;a_Gri_;mSMn66a*k>5W16K_uPts^ zJ9F_SWA9hpS}={VnAKPJFCL#b-SMNOfK&a)Jc6%lZ&jJbDEBLzdU%gWoYugR{Ny~e zKuT<|)9{DBtrSNEezTP7G2ZcA9?ddz^b5dt7_$e4Knl zbqHO?>f2gzd^>ZTbLG?oBii~UA0T4``6YVvw2{P)u`3l;4S9^K!B&lR#}o=C&mliZ z=0~?_n!ye9w)))Z9{I`Z%sxDvr)EYDXieb8fR*OeE?eyS0*@%2kyd<%qs53{4x!EW zjnpg8tAEcBZRzW4bo#vhb0AtSHF6kg!fM=I30l26J6}ON1KEn#f8466UG5#~1E1e*885W{ayDb@}f1RnP8c?!(r0rk4ok$}Hi99Ia-c?l&J3i4W zy3m+ykZzHm#cRG2{JfShQkVA&C^A!BKFL3dlR(T){7=HkUx!peHk(>!iTE_&r!{9C z+VsNDlmDg`j83qzxAnI5eiHVF$98dz5tu0%QG)aY;e$Dm=02BX|0E?nepjJ@F!!}$ z%UR6`$7?xg0utq>O)b#3<_i3@f?RBTxa0zitgNR)f13W(vnqB`*<2tx zDi)yqlJ8Mg%C+YxnDJqb?mWD}c9JqiF8y7|&l( zlLETJa=fummT$)-e<}1g<}BFO3upPGkDjfKw&#i{g!U7zm@`eqXk!TLHAM9zjhsWi z=(r~J$IWy5%-3^iJCRxRw~>pMRq~?f;zT<1Hc$;U9onML)D8|0KF^ZUzli;l70LGh z>c^ZNuGzcV=WLWmX9JAv=|ZEIr))mij1n^cUgm9N8q_H^vM&AhqZp^W_D39N0?~0p zT9a@6MUKN_15;X`>rsyk9$S-$jtHyh^0y!fE0R9K7ZvvAoF19X%9XwaBWLa;KNtKX zFL}S=yicl2& zOATGS4DLL2!^OF5H@0;;@a7s2PNc)85yoRj8Uv+<3_QA6#bFye+RgrNtu>5Q> zvqzuhF(xq;v?lo}_>06ua7a^SyXxL+?ml9>q(1`dhcNI(p(1UAO^aQDXyxgP0%5+E z;`Qx(L!8jC`y5Zdd!(%8D36`4VQYs_DIxx1KIeAm@cwYx=>9R68FWtf0msAa%n9W& zT5-dHj^10(HpD}5al>7q;_uW1*@GduXpHsO6e=~pa#KE&>v$ankAsh1#f{qZr3rH~ z$NBQRe;)y#yO_J|v@FQ%@qx{)=o5xls<#yMALGp<;x6JX0x3c_LN!7%LO((}^}CN~ z)M|3SDJelejk{X@*r3vWETazm7)GNZEhjr7N0Qz5_G$dHH!g>Num7ySyuYCTw!f@@ zvmd@6_jlI<;{wwH@d8D2M{^T%g9FEd=bW7!HtAX*cIh*wR8m3>*P-FmY>v*R=ceOk z)28btm&Ua?1xd_zR>jKDSsZ{YC}1Kq^*#q%3Pf&!F-4G58N~r_fiTr0ndHZTWN`!<6-n~txQ=m-h6%aF zhbfYr#;6)N3;3xnNo~KHcNT}BQc-RHn!6ZRic^uLM=6i!JBm}U97HLU=nq0u*f}66 zNf_?l6lzXvlr!=n#?+!Dn+QxifgE%x{Ad=TDcl@JDNXW2SYW!02d7}#P**t#efJo;XAhX#?et2$b=XG+k#}E4+cEp7U;WZ zpdZF<%ukALk-*1+VG36NmJ?97XrMpFeGE1QNJQdcfG%2@BHPoLW57ImQiu)N7-N8d z+zn|5H(Jxvm}%fgbfpm62V;@}9&$n~HZtRuC^@)9IJQnn8b7&ri3gxq5gK2)tC&HG zSW%ki0i0-h3RO?Qm|;LIx=`qfVW60z{As{B`jBGU%NTh8Bbrd?ifF)!qWp0{E;^Bd z-OHG3z&d(Shz-T~!vG0+B03wsaaq&|Vj>FLxa6My2uk8P2weovhv_0_UQ{2&ZB-J_ zkLjJ(0Vqra&zI>crk5g26z_T9V>C5|tfw*kfJ$_(P!$GXOgO+suJxgc#JDl41WpUS zs!LMCujHN9A*fhH!?)xrW|pE@RO5MoD4LVP%F~#6Ks<=n8p&n8NO1fG^sG;@Hzz zaKJtKR;UWz7;ylZeDQr1wsCfpHNxV%szFIEe{1B$6OfK*ouBn>3@HV_i0i|ELUbwx zzt;|FG*|>!yNuDJXclpO9I%aErD*mt#u^}t78I(&H)b8sCtpOV!ZJ>eIzd^)s#=%) z;6nn(y8$})YeBy%iz0c)``&Rvat+Z9Ye$fr_nqVWo#-eMWL^x%1<6Ps5_sM%kfdm& zAIWWu5k z9GqG3Wha?nV%xTD+qRud>@WCY+qP}nwrx%@v9t5rt*x!vs;+u{-|gx@ZuhHq>-On$ zN(JR#$E@NO2}^yBV8^iHSoodLk7&oV2)H1f;E%Fmvmm(;oOUGW{d9k{?~z~#(Ff>0 z#M2OJ2-XatU^Kh_YpWVM?n?jNeE!@1|F2rnBx&N*`2zr5kpN)VW#wq6t>A`V6Ucnf z{$pQR3T-|a&VI_DUq<;HCqfS+s$v8)hnAZqg|?fxwwoYZEw&^OPB3o%aRqghR1=Zb z1uY&zMUif4jlbJ48O-x$!F>>aelq<%S$=8)8S<9g#*l7DZE1XhPQ7nWsmj876lW#KpiE z8a?QE$&r=LA5cxOHi>LhGYDIa$qn?4hpUhnYMfF-cda%~@vLi#Xq*ZK|D;?y0R62L ztREYUJ|Y}xoImX7r60g&A7yJ|MZ40VY3WJZM2xPD)e4MOTN^1^V^<$Ft_}}gAx3@7 zLv;;3WYa%f@{a$`9sh2Pwzb8ZsgRrT#Kvp0C5w`^8wQL1ZI_xRPGF}XSt!u@lhy=r zwGD4a1dA73d2SP8bEi#3Ya=Ry)R8hG)9=BvU8F;tm*cZf_HU8TsB1N3DlZ$a z3rV`N!_?I)_Zn+UW|H~HV@5WR)ycUDr`ie+fdD`vH0 z7lLYXK=MfVy}&C*-tmIW5@S(|jH^hj{AV*Hk$@|*8MyXp_kQ;)G|DOyPwUIH``o87 z*h?!G8qQ&mOPI{3I0hGouaAChs9!*h7i{IBM-$V4qQ9 z-9Y`{aNUjd4NxoVbB}Z2_54o;n>;|FGtS-s%w2|kKAL5?DiD{r)zR{SXuHco+~7m( ztK>#g)AH(hqBk%S9&1!8Zo4?BcL?s0CzY&K<->n!xo-3IcpW9lVU4j%7xmeTnl$(p z(@Pabzam!2Wv+WP7*f@K|C4g?^i}{>hQZu#IrlDtsS#0UC>1Ci!vst>G zFG_fg*t7Xsjw`WN1me!B*W*!*1o_KK-}yC;D|BlIT#qg+%VCYPBy8k`J+20PGu#kd zVUtFVF$sr%w2Gv+$^&?3W3?BVh>K2^bk99Kmh=-<&kIK4YeuvtL@wQ6t_yu2Crv`*LYI+K;`T6-T#JP@z9{d%wkDjQ-g=%^3#c{-Suji3w zvEa`cjRDJw3rbCc!8h&|Si@0fv3RLBG#bwl=S9)8E zqJ6g4pSkcgHVPFCRgfEy+_zsFSXVDy1%+rF?SHBZa@?MzKWJxt!>@*ySb!x>a~8X! zW^LoImPNB2Dc`+PKf90xMkm~T9MhT0%4fN=z6B($R7Wk;%>F=Bh?#k>j0i^uq&$i% zIajg0d@FfVP+d2s9DFxY%2M&u?3TAreP63&KI3)(OmgssDBBgWn;c7 zk(cLa?Mst;is-Aqs3U}SxQt1;gD9GpqLj8eUdhj~knqY?*r9ykj>MH|KHh$n`^{TU z4TwrTlX!zZiGS}e)dNMb-(7H`pereUFUCt}4`Ip|y5#pnFipx}OlA(YahD3a%4a%d zaYu74MW~cyjom62t@g^t-$u3;3(@L*RhAD`YS?gBTHzh`q4=6DvMbqT6NPqP-f8=(N6O~AYii_LfbOvG;Bm#(nD zhsG>1c)KlP>Yd3g`UNdR(cK^GncDW=7AUpSt@CV?2zNH;8Z#Y+r28Y0>sq57_luyu zPwof&uG*~AK!Ma)=Nbm58Y5zF+8P&|1J5TQd+}YKOGJr!Zrg)4;a{>h9MCqqUt^&riv3**{y_6*tMg zTlmtxgf7?s2mm?&9)J%30U-TjOd)z`SSW&+Q?(Rve3!lSI9dbF0uz_DJ~}+X*m`z?t6?iE*`~1V z%(S)C6>N&wCMH@&G<~Xk)iEkF9~;;PF6qhR8}poU|-tWR5$l&n@-p1H@fMtR10V}R;{n#+SIVkX4um; zxoOH&1I<>PE?sTvA48gFv>CqMouBqISysqxBAcg`Z)iR%J(X3bqF2mqDj!c6Mo~+V zHMmVsmRYt01V+OF7N-%f@vjp16|WTcCik-^6ep!87Q|nCB+EGL@<+TFmA?7xemy~o z@|^~vz2Sv`eN`{YJn_u#uO*ExMR}m4U9FBhkipgk=jygP!ni)e67EKSRkdjV#YCtn zFu;SKHjLdAan=j`FRcdRtkeI0e5l`Q2*hX75p(UtPmXyricbKN0g`6#k=t`TL!gmH#swB?9vI{34n0(|7=36TmlwfRHQVP(PBCN@p zn6*8t8`Sk4HLV#eqnpt^xH(iNNA5cdoBnR7+Lo{@=u}lNtyt+awKnr@2wkPQNq6S? z6!{eBE%vPRoRS003+ygxaugVfFcxJl%pRcuXx$1LQ;G{pEvuptIq#L44r2QMhrqA-OTQ5x5CDe!OwJ5V;_^Fu6dvP`O~a zaJhiHkhuWST-aRTT<9L)&bZG2XAo!NXXIz*XDe;EohWbcE*LKEy7D_P+mPD`e2A%o z2*SI8_yPDK`2P5xtup>9bBpa{0gnIoIf|9T#JcX+)AOzbk9Jh&-RiVPFMJozcdRAO zdG;XsOP)&}js@1^2N)5ber_`pv(35!_sRK2p4IuJ0M2Na`LPN3kxlCPMeiaMoLiLG zFz(y`fPR~d0w^>q=F?Gl5>QH+tIY+Y{cKygyDezjPrb9tU*ATx$D;Dz?mfH)PT87# z%RWKRUAZ>F9Coc9-M=cT)yZ4*p+}*`O@e)IS0di=TIG+|)LtTNdOd!s_=&5{7Tl`!AlsHFN8V~#i3IjPrcfw2IVu+m zDZ;Y<;ghAPFrjLrrjF@tY9QRa5T(>tTz&u4SmbnwwCx6odc|!oC$U!&)U0aqb4|qMn~1V-y}Y zIBJYl*7D0AC_hBtL2oTCN|$FO`77U1^IULR!pn16HcvQnmc)kZdj0D zru0za+yg#EO2Ze;cZbwcs{48(K_cw4neEg~9+22hW@*KJ$rZBo4K@!Sz3~L!3x8zK z%2sw;iGSc_(7${jdGD~>ZvELX0#^`-z8`!Qb~d?cay(S%7J%9-ya9OtnwZPlXV9hg z>mJo6wd69{Y(;e#shI!taOjyL&1*QpD0cDu9(y!-{G1JxhfDf$>G{q*dyMu(aO?E` zM_iH08hEQ-*i;&%@wnm#W+>U_y{eF)-=T~`Jorl+`5mnaBNAKoE>VMn7Zhcz zaCLh#OdQ1Y7015XLKbkCT{t(&D%=q!FC*#zlqow)IA=;!A+BEN6oW~&Oc=4TK`AFp z+^V0~!|xS9m@WBY^u(K{ z@RwG;nRU=D^GwhO*EwxfnzHo@mn2(+550o$;SV_w)gKix7co&#i2j7S$%@{qP`j~tD4&<&Up878I3{wmu zei%g>8HSbRm-S3@`m*#TM$J!UszX8rKGcSP{W*?3AreN4_%{qS|2ul1yk>{cbU&3o6pDQ>{n?xkHh0THB!V}GwNHe78!*WST=@i6Cpz~r@HqssumBiq ztfjnovN=C=rOG^bmoOznGDt#fV?+}{1_KB_Ohhcw_rB8X(O2p75Wat3)S)z@Z-Kjy=FDP8&P~;ZvaQ&=;fP7j{i3?+}Qh zUm8qsnB7n<(2x+7=%k-;$eU7}*02ALi!z8POiVF=^H&Hl`XJ-03??iIVyGaMF;o%} zyx0e5h!EF-Lzy5hNOD*)BXm8i_++jKmnu;V7=kgl$MI|)as`q^KjzT9VxVSm9^}YG zZUBZgQY9Mh&&N9oho7v3D}9_p^^E%bF#KtLnlOooz)RGs(D5)hMzJrpzjI-n zASER7L0ESZj8Nvp@*!GbDtS~Cq(R2oH%x3 zT}UUBH-orsaE|n>Bs)Pb_*<~8Bs&Frylp6d)ir}S39b`n`)nOJ4nQ@d)?j6h7V8kT z5$!|GfMM=^PD4EV_^*1JK_1xG0cdHxIO@doA@7K(ebldbmj26OGW)(mW_9AeI4Ofa z!=C%JhtTTa9mx)K92lx3x)9h2YXYLfDvc69$hQzOkyiWAhae4U4gzoMyrEYH*oR!} z@ErO62yXp|9s3Rn-BTKhzQsHs_rP^zIS?>}0sax*g6>2j2oWH%3sir-snhGnn+tjQ z#T))F36S!DeImXNDn%j)bsM5U{D$Z>Bsj41fcUF$TjdSGnmfPwTpAQPrANHpX >I#74-s(E98wHL(C6ZJ61b*e@lG;1O0^+Lvk(Q4F}(6 z0}NvrxC~>U@<7~)`vwi&13Q?!qvdLysR`VxJ(awod@bAXp`AbWiRT6F0OK z>APUh<`(|o^0wxKx(mbt@f-SvD97&^=^KJzthP_;1@Z6AEz*I&p2-k!K74MS)0{WC0>WyyeiOD8o(Y4<15k}%*R)f`Vh<|x{AN!(Pqpeg0*VP(X+tBy} z$Ew)jy%nYo)4{%T^Mtc)FTgIuw#8QHj7vS``2G&E_oIwoH9Mu%nL~PN72INPs)U6D z#5)20_L}6zU`69>^82dwM~EVHJP=U*=9^HsQ?rxrEBaaX#`Gxvcz8jv)Vb6NvK3g- zol`Lp5r1q}OcH{Cqs?sU@HekuAmF3R|9T5#_4&p+;5j z$Ns|bfpM{9)#Ii&JCIx7x|Ztcb$iX}gF(9^kZxN;8#%CA;Gt9`jQ#sxU{~b3%+%5h z^a%mKzZjA~7|CXfX*lLROj-|7pf!?obn<&GXNFRQ3GO7dT{pa$fLSdP?v~3JjFp2~ zy^)-S$u3xeNwAB>w;k#bz@>Q?%`7V;+rZwYs*1Wk>sBv-3&EdQB$y=XF^!G~m{;HA zg<@M|GrW`y?amu}tra^zZUb@Ez%@mll8M=sgGRdFMlzGzz9u2Pm704ufXPrO&U?qN zYh$5&fxstiWnZ(bgh~-)fn0M$Te?$_QWD?S;aM4L5i;S7ecrh$VD9*H;vF>)nGMoJ zM{%)a6I%0&w)N)m3HQ7?qKD#zxYYK3krqA}6I$XLf{t>rLFDQ@?MA(yFhM?@IYye&yTAR{sm)2J7eEp`aMktKhDJyr^$>tnsSBf z=P=$lEQ~?j3`K-6EWqIM3np&p`=UD8i|PkfWFh&LE=7XnfYgdf=k8%FACAWQbwZ$b z!77U8NJ*P}A>l6c?0*2v(5Ta!Gy|`q$tMy{G1=~ffx0~e-jDf8 zA2Gti2)4m=OU&PT%N&Il81(nDUGT4{lNC??D*THZo8~?X;hRDVAXl9H1azF;b;T7% zT>`@vwt~6%K>NyujZZrSw|%6_5zjKI!iUbBdg_oWVKr?pCn%gkVVrL1};jW%!-i`Uc>0u5H#Bb zRj(#hfs;a>au_%wK5k7*bJ=i0JYADB(-INkY2c^e_TcuarP={(GbYj@H@&%-P^6WW zYiD^gQ1P&?IV=!IdnjJ*GkFEG@B+yuSg=GJ&K0`Q+D#uVAXU!6LU5%g=q&`6qEc)j!Le>>!s3EVM{SK5*u z3PowX%@l0|yDWd}B7N=PUeO}(CGQ(W00}ZLV+dp{4Don1;_&W+n<+Nsbm4Bxuw8Hx zsAgF}nzMH}UG}alkdLmYXC{%_M26Sgg4t7)ac9_P&E&mg@=tDUSSleef%Je4WLEWE zs+3))w7@3~Y4gv%tgf&UPq+;YoqYcDlS6PfU5&}SAPKzXP@oAklV9dpeIw={TI^VZ z#&GP|Ro?xL1!afnlP#FreuDZ`0tmEH;KxyiqGyh`#%uR|=Y)OzpG;$}<4Yl@iO{rF zpg2DXfrhX4hg9(w${m#XEILs4btZ2yxxF-epVf2q)vfsJYO7VDcRFY2M1lz~f68bh z(h9-tX7rL?mWN3y@Mm%=q(O!5Ev}IfIC)6jHN|-GL@g+odo;+@Im59&w@NrYE!lW@x^}pZGH2pum4sR$P1eV!`+{Uh$tI?j} zRDmueJRqOyMPEeewl%L~H6&4%CmP4u001n+*6w7SzX6$=S$ac_nSMND!CFA;j{=U= zyxz$pOysBHd3B97*%AJ1!SN&!SM5+PTSGh_FWDDFhI?nSH_J2*Y?^(Bj|oI^ zNfc}XNIp+OJcu+B-Jp$%N*ONI*S_gJTX~Muk1JBP zda2z|+tYeoHT$;O2=P)Od7k00z=M*Ww)qp*UwX291 zKx(7|Oh^x5@E6op@h^A;6{V@>j(p_my)46jdEB7-UFyVQ$7Jg9&0Is|?P1Eh@eTh` z38o`5Y@n_Yi#u*qQ?uxCH(L7+@%i8J(0PI~IN6|b%@seA-$N*?5M}$JCW_nsx?AJ3 z{fpVq$XnPcr+!NFy9HNcPMml_#k@SEwA?l;hu-D*pBEMXmS`S%=k?_~^@x9D~l0?}u)= zNc5Sk=DPOs9K1`Mo~Q9o8_WHwPV|}I+G|r;0JF(leSqV02uE76O)9N7&|wg7QbRXu z^rn;ZAepY30e>s_c#?gq`?mklo!%fE*?>Ox`1G&s90*wgl+3o+c7ln?vUTQ)IptG^ zl(KSa5Is7MZxH;(gK@1o&9CjqZee8%;VJXFGLueMnU=lK=ooYvzWJ)crNNQFbZziF z)H1WYAGqSBhOxQoQ1+^|mO@)NsqEUPa&|ucFQ@lwves?JdwTPv zCW~;FyV+Rphplmy*o3x!%6tZZz5UG;T*^&SpVuky^N)228_m@^pexG7=@w5p7oq}0 zP0#0cr~7_Sd6;Ktdl)YP9A z8CknYTB-MG(D0Z|w08=hAA6Np=jBCAtO^IS!D`w!G5>3n1eZ!VTRJ6lTQE)a{>#g$xXf=kI*}L2vN`#|1~tjUdTeVgwgsu*_Jq zaoz4|_<8JkYKnlfv0zo?`DKH8(jbk|TFZw(V;e8f=B7f@B~rHa5r83&CEyy@1KMsUY`Ybu>mDFwrx9xEgKRC5S+z=GbI6GZ zrcsKsn=`md!?R@z1r@M=d7a@VW7-tK$;J!QKaaJkKcAd_3O zPNL^)+vu!pdl@0ONsZqF+^@*!Sa^agb{BVe`&pUuj+qRj)s{d`)ngw5>Q226-ZO85 z2*y^p!U34SS_Zf#N{B=;0lE=Merc%UyG$~UvNi-4^v+wMqdosw99^OaU5jR-_1aDc zvY3FP^`zzk=CC-&j^KPPub6$ekEh}nkeOF`u8{p<66q}(w(Z{!-~^;SS)@Jd8)RHM zRhq{jEDH~VI8kemJc+~$#VmvzwUJ$!$rd(W+xlIygc8-)Xr6S}lMwXk$6N%GUGI&phavh5;IfvHr>z0vOn$`W8 zcxuxs(>4;vuWbvSCQC*Pl_W;e*?vRm&q2NPGP9DEWD^3zaL zml|G`ogZIVuQiTzW@s{(&Xz|s!uG#4stBiThd#j=%D|)ZkTZBO{ZW!^6%|(}5<)ID za!JV{f7WTu9rV!9ncX$unSg2o-BviiBgXNb%^@8kZ($IHwtDayHh zB-LfqrWfQ8!kvglZ}BpOf)q8X>Wc56rX#Dz)g5m3N$rS&6t*_=+S1D*l1d2ZNH2|@h;Z2Zr zc=0pG>mPs6%#O?8nyX4Jj`ysAPKmb;tGjARp|QN{X^NXc93)~JYyT@CuwmHGw0c2Lc<&F8MgkE?=5mB2{xEAdr9)e%Fg10 z9I_gB0ZF5^ot!!M?y~Z-|0LYf{O;`}Qm;mlRM`_V33wVTuRj&M-4p@eVe=nbE(!X7}F&gcMRS5pJ`zL0mB9b#Q)OlWhrn-+I@zHhWrtT!AB)&`LULo+_ zhCNg_WgZ!Lyb?(;X-PxG;fy`~kpge~>!}Bj*h$$*4!g_@r}ln^d&7KP17DUDr^f)oJVh z#Kw)+C@gr<_2r(u(9DrAbA*P;*i~IY6Wc!@$agSp303B4WO4{&0-s?rd2wC#|GCqL zZ|`xW#MuDx3^d5rR99R~-n~RS;{=!jxcmK~_T#B?C5G=xDlPVNqsw3=llmQ|IZ$Zu zDs$Gu-h4K2Ec=)SGx&lse2b!s{#~s~O>v1n1o$~Gh%Xz{AZe=4Cn90)4!>QTyp~SEjX&f%* zBxvA1uY0Uc#i<6>wHA$+n83Uw1B|r(sxD4`PUue=>$A>!JGeB(dQSLgRgbxnH)rh4 z%koSWV2tdYmT)%@GN`SazrlMEgg z#*5TVq}L&yn}vt3)mo;1PTK>7oQo_hCaci4M5QJXYxOM?`wMbF2xXL90W$-I-36m+ z{Us;@mYS{)9|qbWDlIIn89QUAi3w=8Lx#x|kZEe5Z%@!^ZJ~>k7y)maDT`T&d$%$~ zR#*bE)G5oR*22m0;(c&qulHXiX3xo8merN@91c*sI)~I3vQ65c^jl(Otm2V;L!*X; zW7X;L2R;-!Rp(@f!JV^6!=#T1L-ygSUPdh&cC-{bj>hyfjCJ_Lqt_8Dd`IV@T>V(K zROw1tw>}(3;Yx<4B1!1XmW=@tCrf~FcLd zp6W^&F2+X!kXt}ogC1&DX7HD1zV^%uND!rI4hP|*ZV+8MNSP}kh$BWd`t|05`G5v4 zRe?;O%u8cP>+Q!H?@yX68>cP}?4{&WXfQ1x^C{v$9=CqTm_H&amjZwcu8aDXG(mL# z$z4F_6?-B|FJi_NSy!Qiq_Za7-0sh-c)~9DCDNr25l4ZFHhJNVpF*}OnpC+DBqeca zDW!o8`)z4Ov;sKrIb}ItI0bS&9ndT|k#jis8MuGUAxW7NDR$p5B_KqwI=!wcVv9?L z?ATSJ6&smNQ^IuBYROmLtnL>MO(Z^%d{jVI9pNj1E{BlB93 zRzmD-BiV+}9*A3{^lu#G)U2$>TlIQ%j_4?ep_(GA=vggl(C=r zI#6`Jx23uE`WV58rGGn%CW6djxlEa{?=m?F7`5PiX^jf6S#HF(&t#szRE>CbgmvHr(%X5j-37dd-sY=$=9-$<)FxhN>UPoN?>Sdi)|cY7Innj! z6x5e$;)xsJl@81lc%;nh!u8M4kOvv9nTry@>$j01lW1LzVK)@TwDZ>`IyTCsuFA|G zk+g*0g>T|tLzy*8IbDK@hjz--p_tA|wf4e`#k<&q)%!!xnD@s4`<@raOGxob<%r(N z7d2J?xW$~H8{5nO*oXWx4Xw9z;z1v>tliA?7gr`hGcjg4Ey@Jn0_tnh>Bs7n>~`He%I5n7MqCI2fI6^iuL1mEOYi<~m0v)Jhk7hh}nlEN(PTDF(O>q@<_9uCfro*11oZ^$7w`Kitp)9(yD21+d zm)G^N|1j}{z&=x<;Ej7MZg|nF4S^pAQ-O3cXnomvXG84!jQ;m~D(oB*AzG5Ku*{(G zze=fg-fw!ph@S-wWwZgQLUTx*K#e&an)jb;10JduEg47nxl%NFmK70IY89l^BGDRV zaYHK}WYi85K|8-PF*C}A0<%mPAwT&Q%jPQy|3MLu+4_&!rx@YjWc$a>fL}pgmzS@# z0$qpEBsw{shwZ0p1fU`(bcgibgO3it67j8;M;6-eqh$sl==3d!!lYj*5Mb(V6Cb4J z>0R~fg+f_r1DnC@?5082yDHW1&Pi!ZQjr$~+~w~_sKPVh@7IRzYTM=bnZ)SNein`L{3^)m zzNRAOq?UvY*E*Xs=3`(30I?3eP1fsy#!uU|r9Vt^e9q#ZV{CmdmNCd@M>}9r>n|~b z{J5=WLQqn_p87cm>=9Jlf3@ZNzj!3^=v6}4{m_wBP8_9R%g3%=FlAR#-Y``TLnY)0 zjz9~y+)K&d?Ktxr<9)Mj`0BrxQuw8QnxJObjbBBlMe4IZ3kiR{4tyQ?8_8$id)H!c zdrNT5XWqAc^X)O2QTphI2UmoTZNnrJ<0zm2X4!I5I)Bk`6ytFpr%IPB~i` zL*sC{9F;w9STNGM%jLIZ`r9N+nI=rapm zs!-q3y8(NkU+(V9TDi&QQx8)B&!isi@$&V=K2o+0$`~Nu|)SaWVta&qMWwP8y@swrAwu$@OCQJuR+bL z*Kb%Jlc6?_1ghY)%Rqi+$ILnnrQ>Ol;Am2l^k-xw7>;)gFqPrFof&aDmm!cu(UPx) z_WxL!&ts=VW6VXXkH-sENwIM)Q41E!cMIlGbJF1*v=KKXFSy?|;hZ>e-wQp9B$}cB zF*EVYB3_mpEsPBGR!5B=LMFHga|8+^hQkpF3UtlP7sxOkA>s+=$g&ih<)6ml4Pe5M z8~=+Y-}g0l)o0*X(WgMUhC#jz+dl=@L73ceG|$B{Z`RNobVGEq6@F8L29brKhUiWB z%@~jm0fcCH=TUdXwchK{_!9^+&CBL)@%xE|#Q|>lZsW<_9qdWP+2Qlt$A1u(`}TCx zd`fHN^{0D5UC!OguQn>Qh#Mh9K6tW%$kyF?Z6 zv+o`nd%ptpJ-!@HGRIfh(9GC*@|F)TL2;^q#N+Y8 zRKP)G@q$CD$eO>*5U9>Sd%=ln`ml|*YMgZL+jBH}M-vha!^@q)_J~N}+;+i#3TBp@J1g z^kmcFHhgry_3M1{G)nV43Ch}fIcOV^cLOH@$2K!ldA+T>HU9i358gkKvY@o)4O_J! z4iQdqa|~yU{IN`#C|!qq3o6M_;%)jk?UQV##W^%h$93)zC%^{0>(adP0@bncs~;z*e4`9R5` z21Ly|XxC_sYjsL7S`TZo;@B{oz237#q)Im=p_q&|5m#R!Uy$CCkxu)HIhCj9LJ2q} zC5Wm$U#eOv+zQD)>I+4@lrT|YB=-{fxw(xbQPTzx<8VI218c<;9%;gwJE*ZOHR7qV zAZhWDN-55+eHB;@OYZo#k&#mR4&WSdLdFv#%dAr-&Z^zkt;-VQzI$sa|$B zC7W`wSR8GZ5hH{woaZaQ^8xKF_DZ_&62Y{+c%}TSQ0ji8E`iOjQBB_ zJfr>yN2a6p2l$QV-68aO*0uWq^f-qiXg!}EXp*JWPJm@`P`q)qW`)uM^6e5TQOH5~ zd=Lso4mN)>;@uM1_z&t^3=dVFXP89FByTQ^Rp(Ii>`6qH8Ul-bdiekZw27oGeDC-K z$7i+jOU7K33&N3h1OP{#DX>+%A|6W<%hVo_&di(vRYTH_>&*rw1FGzMRZE!G6P!>I z3c1b3vY3+AT~!gT!;g0=g*oO|czbJAdeb8^pT~LY{^s;N$pl^Pgn328hcVEmAvkNC zgy5TGCW;ve1{(4kY{f&!tM42H{H-!&Z$CGKqUeVzJ3^x98=kfEGca`Nt4~{7N5i6U zbtQca8%q>g+&_IugE#i<=aB1w18&#pQUcp7`3$XaDpGzi3~($-sZ?k*%PtXO3VLDu zc!0uCJlqVQ>#BrJ!DE;e^pUKShhmY0ol*#yS7eO8J(`2b^csWFY`|2Z&<$dRjL1xc(}B_Pq4^ z2e(Rn&O1FsCYt6UFhrG%{C&jhVLmDJO&z8yF*e~89bv)6o>-webcOp#%2Zrr``lcl zRP%TAWs=H5TUy&e+eKTr^rGEss)o4ucI+3U+EX`7w#KuayA2xLPRch{UIEu zLzcVnth#bdJTMh!2JmXD1zL2U_o};^=JLk*0+727zh_^y%TQeyUE!!mNS`Z@<0H- zj$G*UCnqJJ<+7AbuIrT`nal#eqJyiHipKqSyyqe(L-xOFV9uZ0R5|SC-jlrz-rRXa z14d#Scl<&<$(ODGZYex-gn&l~dkN!Od1NnF;XlQQ{ho>*$bs4S)chDgZ0(@~s*`D3 z1H_Q!c3=yL5T;tM`@%v9!1^VIjHW!%WAY}`+}XK2vDJQ~#lJE{k_3-*YvzX8(r83X zimXkArhu|LMC^eJs&d}2{YB+NYpzM;z-1>KufNdm-Zrj$C&glVa@CK${h`k|KN)$+ zDbk{cKi_x8#&LM?!pRZY_WdX^0{%CE)WIC}8t5cvWk*9|@)Y<$op(x_z$aQLpG?ig zUZPUOY+QJfwLBr78~LURh>;9mB^&kpW9gFZ9-K@?iz4EXnDKiPQif03iWs$GfXS`K zYea56@y`rX@Lz+DpNKk>i~t&$t4ssN9-E zU*I6>$jO3uo+G82@brmBGs?EL6a}5&t;UEnKgzC8B%I8Jh&CQ}k z1G&WthGxjmbQC&g*pl}WkUcNB?$;}vO@a83T=O0|oc<&C^rN0^v+$7VHgi69zP%Zc z{XoS#MMh&))e<>-2KzAr*7AYtaT$8qg%a4@eR|s(`E1O?DoL4Im*El4N@nE{E|Y2{ zt6+5-$B^+P{j506H0!+k5Zacq1iavttqx-6fxY^5v}p6>!Z}+iE9?wI$M?v@ZD2aN zN(s-pdI}!KmBXRf-{AB4d91*L=~uTvCN2ac{z6f2U8GC(Fr*`yC{ZaWBEN{}t-sO{ zlITnq)5wQ!$|4O62ph}LEkvpUrRF?7)}+B$#f3ATuDLX#jOjD_$vTE=_LjPR45BEN zHu+*9{>`m+Yu*Sc^T6G`Cldw&&bNd4*`BY5rPkeee44yb^fM(GC%gms zIL-sS?4B1>yal0J`lqbbW9IeWR;OJpvvL#8`YOQtMPM};CDb^XZiv#H4w-0?jUVI6 zOs*TaEn+dVX_7^WdYf_cxmryVbf}eZgT=)j(IVedR!Q^WRZd!)w9M<&1yFT@xs`kO zv}JyfrSg7yWh){mC|-o63ViT>t5Mvdtz>7H_2!H^R+m{Qf2#LYfA=<1nfIf^m?)|S zM7&h|)v}FeI4Pa#{K1SI2`8CUf$LPxB_K4#>&U5a5z55X*N!#!9vd=>N%eb9rvi;j z))yZ~q>(%4#5K{t@v>4rAE+qn<|%D0CNJybb0RmB24S(NcPNoUW&1>GCRRBrpMKi6 z7P6*XL5`6kUn_62foC#_JRMw!i(;;&cimLXu&ZwO0A*&(?moe{W0YK;lL?8C&Bwew z@4^t}0Pl+YDRPV8J59Plhcs!~E=&~HALX7!O2tV9=?Jgc@yf8 zD#S*6oUPz7KgFf3M9(1$SvgRc&bO^3z@7@WSyfO52Dr+XpOXIoYt0UnQz|R=%YjvZ z0F)gl$`EZW_w63hiVYOG4hA+1hyJ{;u0ca<@%%l%T&duqLe=|sFR|9AdN2*5@l>pfktgT_zbD#QY) zrzOiB6H2<0BxXghlsJ4^uvr;&wD_SCil@R)?I=5-Q1(jq#2E?HFe9O7}Xx7`-BcE?hiW(<9Fg7q`vH(%NM8hA2G)n~Y}UQk z{jW2G2509+j`&!a8e9!|Vy*+|tlLv44f&YJ3bI^(%LT#ei*EK?Q@5JM^e|^9XXjfe zrvw|q+|;q<%rT^HaQ=pU4EK@a2`(6c+n)|VMTMLeSpHk4QWAze|HA3@_4Xt(7bJ?H zK>Kl9f>ZNT^M0YWmJBALDqIQgz;N69bVMqS=wfsa6E*H}(Aw*Z4eKce2RPQzqK%9v zXNGIO45i+N7IQJ5lcR&zckR;aG&ND_n!jitEAG29YdozUw;w)NmEShDX0KPZHGKde z?oWJQZp;<15dXEwlNDIX26cGKhHC?(>^U8yX~tgnMHph5s#T$h`cVJh*v3+kq%o@0 z|3%a{26y%ZYyUSJW3#cHY&N#-jcwaDPi)(^ZCk(C&c?R&?!6!GTh$+C>ddL>Gkt2* z{X8wHC%B^T#R(&_UXY&%*C|hFgovgVa^6r^Yui*u&!eVE11$!H^sR&6cCluHfUm`S z>-l|<2q7STII5<>{ZYES%h}6hE3ggjNCp@!$gaYjW6n3ao@rkla1=cpDyLpOOcpfN zaF#r2)%=A>ho!{G9a2+%XmR`_ml;mlteIa&wlo2~M9lfV+ubZ+uOQg)u>7IFefdeqK z$F|I^rriNz^07{6xZC7V)b(`SYj1ku@fd0Cc&EL5%Sc`_rFvgCK_e$?*=NUfzEI|R zTDsWsS}!gxW8v637-*9fW6JLjKJdz7iM)}FWhiTyau%yVmC*Q&&S=e>r%@^wUMEqi zv11$vh8acz?G{Q22lddm7_`-H@e}Z>Enj;ar$X>c`%KAcokn{Ol&IP8`pSZz*H#=^ z+!5+t<@iog-yhLBfAUG0mbdhxeV(4vXc`*x|T23l5za<#*a zb6$Lhbt;9Id&^N)ajdAOt-7qJT*}vCp3E{!IcD5rTKBqvHWOMs2eU1v-~!f7>Wiqa z*8+ddsLuDcpLVy?gC(`gcMhs5yBCmQSZ?v0m*Km#v$k zt8Cw0o{FGonoN0l)n%ApJZ>#>Lla=N*huh}fw3AGQqudzPic8#(-$-fLy$%7eaUB zW4ZF@Idx7-1dYwu=P8s6tZS>Y%*dQ!%~YD}SJwugDeF9tHd}udmW-RS-DY<@`}nxc zGRx44Ci~&CIT@cp|M zL-1D@KJ|iVZ9ka3HNgD0paT1qt5t{)pNh0c=<$1X&0Y;6Nc)*5`fC&X)d%ceo3NTK zZkwno@NVzrjtGC?3I;l;^Qt1ZiRcPPsO80A|CBXn zZNJ^c-F5?w&gZB4mkZk4)UUMa9F9K6DUfZ35rzH!zery}4~n|nC$J$+-@j4|`%^4_ zB+|1(^S=`0iop1akc*G+JvPB=LZezJAB;UDB+ecx7qL5fEz#-~t`&-bbx8!R#n$eG zHAbtKzQe4HfBYxXYFuM4LtKMmn?0Y^Z?07cucfC&d$?}a^GmA%Vv}~9^&?HHmmZBa zPs!_7Im{4V3-uOYkjQ8(v?O~7hJL?8v&OEv=(iruRWJe6h)*_6OUw#HqYqZTM>9OS zH$t7D{d9o~gnYUkSF4)GV0-r;Eny=ECy`DB%(8B1%mCf*?XQUA&M5vn?{jg|Uo0hw zKmUqK1Y)M!!vzXP+L7APz8Vn;h+y1GPPwbFWTX@}pCalZK0*5+r7YK(i3}`JxyGAS zqGz|`i<$_FT(Sp*EBhVI>4ze#al{WSB*N96gwu_xizvN-PoBQ^BLw>TPwi{lS0$(j(FeR}X zzXKv3dB_GnMJL!(Z26tP11k#zjTt$^aZ#-J`RF}H?$rt2hbMP_WWBr$^<)l-t2I8C zAkg7=KV9-&kY97y{CJu>=&gHdgL7l19hkU2^D`#c?EXqYeByqj-6g8Sp!*LI;&)$_ zAZi4|03-a&XyAX2UGiBG+uz9;@N`(C#^C`>Gd@jqQ!qXzuE66t5+(^T#f>(F0EojH zb_sZSF(nJiKfjWKTce7dIdN7nuo%_gUHq^aStTRaNJG_sf}JEN`5lS&P_F;!j_pNw zj!(hVX)t(*)WD$Rmx3PvsS6MUTqkVE=HPDJU|dpHzkJ$;Oznu(p7=$J#2CyHT=4;o zFMR=?WmhZ8y4Jim8^IB-jFN2xpU+#G9ksVb90W8vj<#oFSIXz=ZC1-9l1tp^ep)2R z_@~Y4%(-Uh>ddoTX_(-Ya^XWBWORB7bC|o2B%7k822@=H1_;Duxi`W~;MRdo1N==w zIiIg{6{c+s8!=UUHNfR{@FE=_N-$8Y?Q!va(t*x_&fZ!Jq2swrTlVvziR<$oukK-p zXIr7_UTLz%3*s|ya9XeMzoLl=5>pI9Dd}8OLmxEwDOkjW%<@P+HrT1f*?EQ@eAb-} za5sw|?v(0SaM>hC-vC;?OUsfG1D`1B1rqW10G`*~DcDb|U1e95-Zu2?B~QTPiuqxV zv#}&19ki|PgvJBG!`J`YPo+K^@~BYkcjV-I)%%N}o5T07eS|JqR>&N9#wLMELVYdn zEt-KU)iPxZ(b3XUNgav`1%`8oL9JiDAzMiiI>%;oOHo#vD3v%}XVv^qYv}JPJiJpy z;l}?cN-?^_w)+R#jxd+6$WMTx*TCP3@!=669FD0w$+@~b;UQk8`Rhb+!_XaGbC~Av z5>iUeFUV2oMklvKVY61uy0_R-(1rtKbltwxDV@g-fFbLD2crJ*TY_l*j&PUR$3p4| zo0>cXyzG&16^Ai089dh43;Hgqd#4Ph1f9+U8=BGG4K@$o0V6G#%V8j2+|tloK%_)zT_RZf%uxo)VwYIfF5_6O~L5O0ZN%%XL#}iOG@W$gwr`0 z-N(A`c=FFv8Uy*vn8bd2rEed>o=3+;UrqLrPrEU;>KzUTn~vFCRrQ^F{CC~!RtyXU zOJBw}<%k5O(l$=YTONRs%$XnAC2{PrzCsm3CYcWGUwgFm14SY%J7h`s$1&m+w*NlR z52MMDxcl@ogB9(zTD7;WxL?6dYJ-I$Bi@=!Pc)yF=X9N>KTfFLiLu!3#XcZE#Ah*G z(MK~yxu2^de79-clPc5jK&*8*YOL_Sdu2a$$p*jKG3$&GBiR8VW$?5Z1UsiUY>^eo zmemK?!+~#KxUb}kKN$4EwJ-#F1;j7~e>;s)brQCE(WH*^FJuIBZ_66{dXY!%GSA5V zsgJ}YwInNLYf#5536#s7z#wOKdI?0AlPQ`s$TMPmAgehiMspmK{BYTH<3N6J!7IBP zWxJW>bM17$I&KFpa<Y5VdBXoxQnSf(epV&er_V z)X3AepzS}h9Q-Wsbbb5VksN7X6GNce`DV05QYWNVie1bt;+lep3YGEi){FF`zHOjy zfh#2X^T&b*-w!+HV*&Wj)2D>KE&6K;H8ejzs?>I0x{wNhxDxzF(aqZ~SgXpaBfhQw zz)!I12*Mp&xqe_#LN$nNc>f!ZXyWlwX`jr=0r}MdK^kPI2Evd z+yhno2Z0jO@XO7jVxds)_qeQV;z$OmeE8*C?m9UttF}{dGHsAeA8nj^BZ^5J`Z>=E zSw{VYsiCwsuS$N$ev+2(O)qG>x?a+XkGaDi`>Td4FdxdlXf3pp;V}UL8*ORsu&pRTjL?TP5UmOQ!{1%uMe*YQ zNO4D4AyK!(-Yvz*(<24`^O;`Lttcm{hmvV-Kge`5%$MWATwO+WK<@c_WlUHmKuFt} znmcpaXUd~N{otM=MUH6qGRPAD4SpLZM;3T4^BYx?RGuE&?px<>8?6eSSXuO)tsyZ` zCyI{e-y6j3&Iga%F`pQx9P1WBfJpE!=YruLp7Mb#luJ+jV|P-^-rr2*ibP3MEsBAR z33O|wnb{Wm7(e$KE#4Y?+OmZc4%rWQFV{SQOZF;+U(KwnikUD@>x1$#O(g#OldwM6=GnrkR1NXfWcc(}`VbCkXR(iI2>~1?%iVAot^Ia~dxn>DiG9_zBK^a`p=QqUJ;6`D*OAn__|>9Nt92uhcSw3?Exnod@z{iql)(7;XA{}X z=LS;I1`S((=|`44Rk%b? ztJX-XXoWzaeEy3z^>X1XC|lS}M5p}N$s>U)SR>~OK}J=21Boec2z=U2ga|JGmS+W& zmMSzjG|}Kis#+gTpU{kGg4||DSjFyse1vX<0x-8vyxmrb|9IhH%+ir(jkW`Xl?o$K z;r||dGcMevxg4dO+goVZ1nA`HAXH|884Tl(Q!G#j>4+f0Rx4BLBbNK){_~DULSzU; zW$IaDKpv;ygef^9dd3i>@g8y!0#80&N*5tc*9TX@W2C4}L!)$G$e0juniF3dhF;;} zBFF5y&MnMUW4Jw(HX@b&WbT0EV*E4QvA@F%4!nKnqZ5hC=@f04Er6zgo~6Z1$z+%A!QQ+ z%mh+P<+5UUTj4Opv(wkAC8KCN+|}l4dcdqXqAXAU;+;@HJ|c0h0NUXC^j$T_{tNUj zxxb*IoYv#`cO(|gfPL5?;i2N9p$M|X@9X)s%rw#@2I@tSW(oIm#fK*(sO^91{De^U zGtvyMv+xLxb9%43!E87Pc`0%uv@WBW4^fqEV76}IYJl?^jtRVp|| zgmH(>IBngKYPM0!3KhFay57_X`7SP!39|(=vL8^TDbf{24@esM{eG6MS*)h#)m&3E_DSrIGv65p-cul-*=WdOz-b(!@fCfp$2t_==vJ)^L z)+iscUO;_$3k;dI8e?g9}yq5Z1<8-mnmbR7}H26QG^{l`3rkJS5H)wD)7?& zF1a;0_#Ej*73GAHmO<;Dwmoz3lNSsgxhEG-9TkaoU{}|5LN)u&))Ah}_yq!72f2>G zg3zoI3?tQ!y?-CUxy#vRuo=z+PW+fE!$LQUZP%vf4!GnRr(_fbIbq0Rr<>8(mf^my z2&P124{k8Kt-LSrM|m3POH~$-5>?HiX@*~^e|UX%ii~BOv^dVKj4v*d%!xH8gVuDE z?9XyH!q6TA|1$hg%^I<$*<$rxi4MEV#!@_#EkqwaL`z<+f}j{)!F4roVItRXqUZA* zO0Ap~0aUtZsE)~Qbnxd>PM0Fga%6?Y3z2(NCFXw;zIK6u{yUTQf)IcSfNbSwx!!U< zYh^iGs?+rD5qtBRT<+eXJ#%=p_7UMjL~tfI>qQ&k%(@NZCC^};9npyNsS(NCe+tJ+ zJb1DgwZzUO>Xhnv>WLLz5g}Iftk%wvxc~4^o>G{WDyp+%7t9sO!S}w5q#>yi#H~y=6LP=Et)gS)qvC5t? zNTvl{^cl|6XK0WrK}rfEV|(d>g|9nNnN}oU8iVxbVXEUUh7z3`7{)B5S;k(&QGp0|zb8jduMfLfoHgV|K z|Go*Ld=rYpZ_WFo8W+th6jwYaD4$N`yCO1F|5#5P4i}0yv9{E0sd=`hs?Al|bynZ3 zd<=$?&y6fJCyW8V)9M57hHJRGbA{^|t{g5*^N%qk3aWOIR`Qu=s1NcZO z*tl$S>$sRmDX`L2vHzj~5$gN8@&Bo3XBNnepX2*QA;OhRzC^%6#oXqw&>tUvLNsP5 zIZPWV9v_9rm0w?O;U%Sz^cdR4AWi~beD;KJbAEAkuy=Ao5D%{)6`v!!y~Ry1ok~iO z?I|Y}-{I#HlW1h!KN@YF5Yd`L ztzFpm`Tt{Pr3G%YKZNeTdX+!%6pq@R%#3q<$_npKyBjc`{_*LoZ9Ns;7t{IEwuSTk zE%{8{j6Jr>9@qUM`DP$~k^b<=K&H+U-I+ilWF1%+P#70)5eBE))4}=S!&>-p)Ako+HR)r) z{k0+Sg@~hGy2?Q@BlFZX3|##({uufa$n6Ga9x5n9Me;I0lWxKC3jSU|N0KE!zA|oR z^7?P>%cNOrl-CxD|d zFY+~UQr%tR6a3jgdz$}$^0gi6p(umlERXRKQ}jEaD_BM%(Ja-5eW7;Hu5s6BKs`7D z{tSK@6R=Uq-wY0c2k1M^+~%*lci{$HMWslhfUI_PmpJ4Dr;O!`Z2NfosGEz+zn6+q zR?>&*)U4+8>X!AZMk!<8683%_NmZvdrmkhQr@y9FGi@5QuTM@%866rQ+Op1C1*}fs zfA{oS+^g=@jiqQcy0qF_=kDiTD=rDPgc!0O*RdJ79UeX3#LJnG!R8b%-4fa#Zymey!F`y^F{Fr z(*@hdp3@=`cImjjX2SE>uab(~C*Z z--}{SSj7Q7SI!0+lX@Bqz7I2;0k;6t5H}ZXF7fTZTRGO;rg!9A9#NungkyhW#5Rsx z^5m|4dEYGu3n#)$@%XFnQo|1A@0j(FJkq|8m=p+0qXS+e`eH7n7-qFX_(X<&m&vH$T7k>%ouBD&+|mb`NVga<;V*SjwK;~`VI9B}klx*4#ZPJWw7VE+{J z=b)|aNb$vQ9f5j03wI-E`sPfpF-FlC!ck2>4>f}$e@tQv4i65huANWwCBhV92sT7D zj11Up>uZnl<-E1`Rk`K*pSQ()&^kp#X1=R$fUOy#_T%&DEdzj$Dok;E2vdf+!J79!Hzz_ zeBtW-hB?$q{=*P#A<(Us28$jh>YLPXs=uc~9XIqnd|=bxpGp$f0P>?3@|Gdv=z*^i zf_M-tCHTI+y4V%~^+nT!zUG@6s#g|}8TFG!kzg-YdICOGQG7zG$R|0z(m!$rSHpzF zurWPZISv&s*Oxd0 zpF0ueH9`)?%ajD`9>SMYWC(LUj~ua3u+$iAKjzjC{AUTkofzPtUkTnq+Dk^?0Z$J% z9SITkTGNmGj&Z2(i*&IZdZR{RCJ|zZe4RvgPYG5#4%4lj$Sk)EmsG8~lodkrC&U)3 znf2eUu69d*M(iRKdu+&&Yu)mPO-jGbx``tQ` z^>kSG8rD7ld)|j@rOaSf>bqstDK>5?H*wPrW@Qa=t#B?B)D*7W1S)6;l_qPnoCf zr#bQqbv4Bw_u}@2#w)jzkC|6qPvMJzZAwf$VrkazN8*9ArmSBQJq9)E&w!007hS*m z`il%&w#?OzGEB4;QdGD$#lAvjQPH!+_!?s;j(7*Yg$eJ}17AekuLYP>uINV$V`<*z zhR#hu_oeYrFtaIoW#mL{Dxaj>>$0DJ`Dj^=_tdSLv~^t05H{E6OVG7cd zLv0yCBkeR)a5oP_P7tb2OX2BfKFqCZ?2#hJNVGjsj>BRL{9T zw>Ph5EmMw6TPSB-@%5zNrss1~UUh(I%|p043=oShOgm|Uqgy>Nc9rYb*O80h^U7n1 z1<7(jbssi)wVeOXd8z7iybXpt@`J!kTC^JsFU89RYh%_$bld$?*Q%X*>7P*YNzH&~F1V=$ z(NZ%4xR1q$9<^B0I+m2?X^gk9d9f4ZOpVY`D@OM4e+BwJKfB)e*VcY_hUlH1 zAYPF{Yw}l}3tuTS#N5h)@dyru*3*F<&sV?KAqv*9)g?(0?Ft2WtY>w80(LO&u|BnGnmubEe-3S(|$hM}59v9BY|~bNQ|E(7zQW zzn?k|%Utlm?)epnb5EPgkI%PCBh3Ayp+zd4a?po%XoP5yImY(NjGv-Ph%`Jt2Nw>( z@a?lOEw6Yq%gLEY1phzUv6*v`M+@6{l;(GmWb=3}i_8gA5z&!Q5mqBvk@-q`!Wwo} zVl?n!NEm;Eg3f?VZSJ6Ie0+RCSs+FyKfAEVK$m}X)kF*YeMs6GS+ZLpHm z4f>TMQo^5q;=#wmL_syLK~-&_yveCTYj%3!TNcl0q8uw!n6A; zq$Y!5-J2$`U0Lyi_5f-lI~){DZ7{Jg!ei_9v9}Sj%ve3F5`;QMsG#8yjeWBv%Q6G!zmP{sqOx84i7W66eFKG(=@wHCIyZt28I z8+dYu0w*=+L)>QhcZJ3J#Tfu|Wadtm_XA&^NV>16ScCd|vQFQLu8Y*#^{dh97G6R6 zJ9?39EXT?YE@P7sRvhHs1NG+CJLwPFL++C|%~e}XTvj}%?S7KIQWze!I3s|ulD3ex zl#&oo{YCZY;xd(Z$c5H8G)B=-+S}%)hQD~GMNKnK2}(?2ZwZMDC;mZfRD>c$gtBU3 zN3X1;1mlk;5S)-_Z5=OvAW0{uqqDUNhJ2D^mK^6bzLial5IPpj70b2;q?3%b~-VvY@wK z`TLu@U|zvcHj}K%@l+LE1|2vdv@Q;RC}n$*Y7YMiu9=+ovx?Ae!|sW?G}Z zrVcmf!br>b@&^UOUvBJ%=MbWEO+{VV96(LA5|RXP zWeU|>Rm4c$yE9C(eju1y7{|J81%xf>mu+X>R$;Z&+4Q~-c)Dbc= zTq_7Hmu$Db8J{yG*1<^_pSyj={KFqyhNSP=WAT2vV^uthg$I$DSF_&_kMF4?3s~vM z5Sdxi8QCn9m<5N@p#?=|PrV160P3mTxV*D%Nz&j~65<@8^#O2e5a2FcEhsw$l|yh4}1%^m!#w84^(V6op0u z%CY7(SzeEM$FyG)yh_XpqcS@Av_#*~u*E}@?E_8Ph3kXTzJnTA#-JMKfu>dJim-l`XHv zrk&;Bc}exqQ+Ax~s@Z1y2XL%Agqz?^(r@DPNkbiwWu%OQGOKiLrH?+(m{&=i>m@16 z!c!_%XgXzRHI|#43@rEF?JiM&Qk7nH`MVyr|DT0g2*g7^Ln{0`H!o0K7-~^|eW5LK zsdM=Q%Z8SC+A6N1R@KF%eFhXUiSA+C?hdWpz_hu^Q(w=txiR_!;yQ5ZWACULn-qD3 zJ5vh*-bHl5&Lb8k91K%h5T-H!Sq<%;4vl}*c+}|6Un0_tGhxBjxA<1@UsOrGzmdap z6=2Rko+Ne%j+32LuEqgH0`2s(r-3bb6d=9RM3LWm%xu80lf0`MfAw(1``Xr?atkHo zDJysD8f16YhcRL`{lwAiGD=t+*Hs2mTZ9TB<7v)XdjEA9T4j2>;92nKx}LpLUvaP> z_M*y$ehUfl>7hU0aLFfnv0eHgRl9F|Czc`bgg7y;>&#_3Q3sTEy$IPKFp``YPb84w zea{{z@Nqq>K3Ox4(28sQ<2>?G_QHm}dRg&fP(|Ene9^Rn{GwB<3ESI?1bc6VQ>f^% zM)6UvB|gx63D?DwqT|NsbW2DBm(^D=Dv`t^cZH4i5S?&oVI8Sk6~;^FC}j7r zQ###{&H7bjh&~JQg^9*+CPCnGDsLGPAtl8_b?!S=)c%QqCSdQ&e_(uMTs%Pv_NDMI zw>h({ieChlxJP?ONX&FriGh>v)H5aCHEKK zQK&XT1xoU#R;TC45*ylje_@R$-#vkAC!jt+e>E6h1h&g%Gnp4i5Xcvjv##i6+hp?H zQKY{LZ~hI@tF3l>4x@+L^VLxqk!>3fhGp82hJ2k(C4JIXJ=fy3p6nD9`MUS?LUkyL zcj05x?3DL$?N2srE0sN>Gs$62B+K%Vr$4Nd0YXcI@k99T^@31K)3N1t=6K6r5R*0nsfosXjpg>J z1q~;f*KX%-K)6t4)e+#>xoY@Y|7*(DE2I0&w#QnBiPo*fLL-#4%66gHC#E3VilU-* z(q55{9*gdDHXqIPL*~QQRj_f{RC&S>K2sE^FyO5>&g+rh>U(Lxz|U|8+{0cVK?_CG zIIKzsG7FfL8``Y!X+CYAMSZ2JkSJ9yGCVv^&Y`1ihilUVAGCROSVX3>(mc%r$63iv zho1*NI9T2x<9EqktNC3To)uz|YeNA(Mr4|3r%w&duhy|=!DlUFK)z1`ejyGF+WKbF zeg0_+G@G_~`Ad%H##aS!`l0Ooxy)7*Jk>zJGg+p2x0RfONQbY7)$qCCT=1J}Yrdgk zO0+U14lGNooNt(B0a0_NYr7L+v8?a`jrshuv@52h>{iFJt~^JUYjrQMVliAki`^2op~#Xto~+mJ|v=fnL&sBc8L3h(PV1?H>eqK=!F*EFI4YrbzZMZ z*Y2IoL)5u@QK-yG(b$baw_k)udScl2N~pN$64LaO3Z_uGl*3C8_wV^l*J8+{p8=q*Ap#7T6E8 z5V^^s56Pr&xVzQNSxx3T4BauMXRDO|(|6)-7vgK(HsAJN06nM*{R`bvRydGlfiJpF+l~4&M`;Xk;ryNsJnUVZ6|s+ zaZoI!(xt=7i#JJheC!YF5N{fdx2>YbXVda%rVSrz#A-5J-?k?6_@cJ~*FMSSJEOyZ zwnr88p`I=ez;n=m9JE|cGvpbWZ()kC_Xp#$^y!}~lbf6WOkdQ3AmEe^+*?B_N_#6C zH7F(Q9TzCvC_s$(*iYbi&wye-X~@=H(|`Vb8et!@i3dsd^*Ec&u;EicJ17Cli63!| zi7hPt8H~$Q<*0gJ4m@n8WwnYNdtF`ZmnVEjzFbD98@0U+Z@n)6yWS*9!gQX^LS5%* zn1W-9d&fj|EdP?}IcWcM;!ESY#f#r?aWuTh_ypj|hlFUJYNXhE4>1LkLqQ#1tkxSV z8cogCypD~irpD+N%bILom2j;*A2Y(;F?~bC#Xq+};5l*It)F;?wtSPTAR0qN$*$_G zYkh2Wo!x?AWo(|BXS}mbQMzmiTmO8J>oI>YKGB3bd!g#l#<|sMIUaCIc?S{L{$S@E zxCPW6w>0J{+STFtc83dBxok4FSDR1V4wsPZDKXx&4ARl9G#CsvliTSeqkwd_AYF^y z^LmY{T3Tb#Y1^}GX-*rTn>h9Ry7UtL79EuMeDe(kvAgIk8n0H1S&FzUtus4`(}U5= zhm>s&y0bl0Tl#ZM-~~#a%#ufaOk;o$8bFR-2QD8Rj`&z#?uGW-VYU_NmXF_+O~aWJ z0YL;vFAIASjl$bf-Uox)3&CXQaAdZNqidAS!>&=-v%34#ugPPv9*g1FRf!a{P~@>d z&XJo(;OlDOv}#22W7j@O85QH;&wPX<6?o33idqu*sY>T3e~w6*k7i>rJ0}4p(2D(V zsqT1@8XA*LhaG%zl~U+ZSGXqZy=BK-6Cz|T!?wJ(8RhchZkW2`$&z4s4qcPn=~N-| zW{=IZ#3ZnuRCm)EXNp}O#J8k<`DC|~#=w@L5bQxJ<<=pg%rw=0q`D>>!bxr8)%`4Y z5qC=%Q7IrZ`C%^m{YiUHJK5zQxtU4$zWL+?O2yL#sj>{qBv12$e8p?UO0Hy(4n_g4 z400FUXlT}UWh<)p-=soU1BdR9!~du%BAk1ovzmEn7q7Yx+D8jgifA<9#x-rQ5^KmD zrnt8}ie)d8Yv{bc*f-SeWJ@YJ+gVSdC}QNN4sEq*urC+Z874NqGPmnq0f}H5^|9Jl zRI-0SxjaN|PIfxej}aXxr%x`JqDow0YzlI+r}--tXthpnVUfWBK2t{w_rCAt6@L=n zJ2EqKeSVHvWOPUijd2Aj*SM^L;?I0k>dLgnpt;iQYmZz?YG|`_9G#bk)^zqJTd1W; zk0M(et1o?q-}cDS*<=E2oIu2zZ1~ORY&-UU`g@qRC2@tM%SA>hy^D!CLkFat=zeV zuN&Qeg^n>Dr1@J7GktG^s(~5>%jOtG=Z1@=aaSRH+8^VmJxKD`8peUS{jKv)H#bRv z>Vrl9PN|dtXzl81R)f>iV;zW>^h>H(-8=oBcd~cq&@tP;wqP%opDKepwtKpeFXW%H zGeFQ6>K82_zpD*d4+cOILz09d1*%2rUDJH;)BsZ($M#dJgjInUEl}IzuQrkf%j{2w zYYkQY-WsS3SKwR;*?UlVFf%`D0qzcAi8flHZYiKMVj)N!`lB*PAlaQK?)Ng(@W66)-B`{5yJx@qieprHY{$bDya6MN0q{bIkeK#{CiBWj#@JVld$Hz7NGdVwx1RpLPfNJ zBGF2Wkux9)h*bvFcp@?ngbA8hWcdNu2CdNE_j}@Raj7}9RHTfsw{TjaSaQw|p>%MR zdNP1^Tw{OG3Z>*U9of=2=?m?kyt<7CzP(Ix3K2>57;LU7frB9BrvdP-J~Z+VGU3&z zS>1mSBcc$nvFtkV?3lnXJxUo7?}K@rnu?gmXk;?SGm{`1BL-G)mpG9np^%ZxMEWSS z`p&3=^#W~~o;aMdP;yozqkblTr;I4CI6P1o75U`^`HY2R|MwFtwL~oeLG>i}ax~ng zqF419Cw8FNoE(v~qoGJIAH7KSCV9aB13yf7$`MU*_Ui~eyK zGm-(!5O>%p(j2pa;Si%xG6YE>vVcKFKQo{X(vV~r0kg%>ONdCQKu@iYKKQ=^8c_hb zfPA?7pX+j1PiinV_)eomv5?o6AE)zE75V!i(`O*CB`C3S(SUzCKleaH@`V@nt#0r8 z)i?EdJcj|)+b*d6W{&+jG9wvTqbRFbntGwf(Qh2YM42R}?-(DnqiAhJt_yINu-Ul+ z2#xi2$z?*n9LhRGOS~7zGjKj6wNL<=sUvPkmR!&=X?uhYl2yNN?Jp0cK4Gvp=|m*u z!IVJ>1Fjn$`?yxgPJ>#kM|fLNc9JxPM22{VEct8Oru14Out7fYHmQEmEkQn61=Iu`77Xb2bucVCM3{; zKxQ`E@*#>0HVuRo2s`)cRHB*Q=J-;M450aID-w3sE_wQJK^VKEaZwG+L z++=Pe;K-I9GRN(AxXMgd@S>DHf0lq_)*W#uc2i9w$BtZJ^xjggz>KV%e`1DT?x#_U zUfxIR^dH{897$*k{`f$C$}wIaA$uULzLeU}#|5#0pC6%i{*NT?0f&g@pQ3#tPNX7` z%q4q7w}tM6AakC4_;if<%*RqQe9)O$ci176nT)4`Q^X-1+D4FoBTxGJTqg$T#LG^+ z@I@{?rsxGMoo&vG3luZ|4htfnV&`^p9u-~2!DCvJ#A#u%GXXfA)E}}lYGv@+9rKS4 zomNSoe>rlDKD-xy%)6UT5pm@F^8P~fJo>I`?EVRSy$SGhJclqy4&4Iji7Le`f{nJ4 zL!1muOh+3!-f_lx`3ATWWFkibl%&=pZNoJ=x~@x=@@Xq^ku#k1Vj81FT;`4$G|k=( zTJ?g0T+>h9n@79g(CW=gIVm@ZN8OiauN%uBM_L+d_?9=bE2xqhE__S%zIBKi z^`k(1a`1@8B*T)&_DYX>J;mft~CaJCcE@s&@cMe1|)nWSet;!B?YQ&qnbuir|z zZziMZ!CzjCM`wy^NHxzqkli!UU>u0&YbaDs*$byJ?=syuOKzk#-YCn(wM{bZG)CE@ z>5A&2_vg=hyoVk(eI*bfZD=`?i+O7D8$Cc^{;TNi8uOcLQpuWxY_qD6{gtKd%+BI2phUX4 z(!1UmFM-A~^Ih*uBek<nklk*HvFHL4sz9FvnpY*CCy8Z)=!PAK-0r#BvI8>&g`K(-yoMy zvr4}F-lmMLvjf46b=b^K6@)dJE{7ndI19zTcGJI#exV!u)A(D`2gb!(B;C!Yr?<}M}BpE=A2y=_7_)E9O zPHnuBzI!v!qQiKnz;at2MY!z$taP+S$q#R8PsOG@SNA_xd_1O z`P$`S(#4N`DYz#1*cWsCVlTqt^ZDxeO4Q)wvUx0Ouub)LT>~Z?*XMr}v3xeZol629 zH?q1t13m>G(P^&dIVhe-jUAV*6~sIak3}ci^BIsv#h^^jz72WDk*TcmmWV@MR@d!L z`Zt8T;7Q4}7Au{X&hW;xyJ*lAOm#Y+q0i|%+THThHv3o63y^x1@fGuefQ2!wo58?n zs4!CnqP-(kwBa zv^H$(xc2@=MquzcyWVVG!H-TVs4ufuI~Q_N*6+P^06cHe=T%P|JEg5`2}_1-d?IR6dMYc;GlsXG?g_t^$ko;6WBfXawfR}oy>Hx7WlHlzy^YWHX)vMmo~@I@CsdZ0?9$BfDXpL%j7;?Kp3}VeBJa|3ALoGOUiJYZDF-B)A24 z4eq{y-~<8$2=2k%T^g6*1lQp1?(XjH?i+XbIOloh{buIJT-WNm?pnKAs=9lZbk$l| z%%j{X@H8_*W=7b3|bO-g9L1B!b ztIwu{{oLyMxoqPmoB$lq^Tp^(u%1YI5e~i^pK_$Aj@X%XT}jQvizbGe{?5jmv?>1a zpv#Fpv4istN7LG-m4$GG(;c^%CmoiEE3R_(r+Rxke9KbitNIa*>Y0j&Vf>|n_`RF^ zUj=>ykS^?jfu^Z4ZtY%YMe%6SgloIwS~;R8Xk@|sHLa9uwiMu%j@rRLgr#^7;9?Mk zVpb)ppuSm=44RR<`t&7N(uR0t8`MRwe2u}CyoCJxH}v%2WU(V<$Zy4G#neh++}@LL zzTFQrU!NpGRi~bsumT z{+N3h>?Rr>=0^0uyB}fqtOX|Gh7s6FhOvQU_l;~Q`;_`Izu{aT^{?|huFPloM=~Y7 zy<#aaa(XR#$^JrZkFg%_pO_tabbe{%Ty|zygY1`^0f72@q#Iu2=h*62Vl^m_jgQ>W zkVchr+Y~#a8(21UiMir9f)Mq7My;7B&x=8VPhdmhwv+4=fgw%b_lPmEz;U;+=Y0uE z#?5B6fX7^rfD~AXxb3K0#q+)hMdxO-Sioa8sQeMENbGggE$4YK8nou|A1M6DANMyO zK=+t8ez*1rVu+!Wx+MCRUO*w0H1ujwfox8<_x#5~5IUXfc+wEQ>ASr9LOG;k9_)E> z-&0X#4*mA8+wIPew<><1YCI-B^c%YAkOacc;fM`G32+s;%OYCK37odmM7oEUoHn06_y*`--a zT%I2wY9B~dIp(a~2`bXv(_u6^0k)I#9ktIkj+6`I zm3SLajw?W{J@tas3@AkgpHeeLhHp3D^Kx3?A>1n2y*gZApwoyZH3e>;s*7~7M#HNc zS)l`Sv~#gWzpHz(#;~h*vBvmyF23+`GtoldXD`XZ&#rSk*XBamg&SdQkn?O`72+vC zm(XQl1l~6KevaA$*a-|>wW-9{wgX_a?J}Yhz{{K~JAo-HHh=J~?79!FxL1+#n>QV} zG}Q43K3PSL6>upU`-aXp9&jEJ*u+4{UbcU`t=FYH^m)S2sEIMs5Jal;J>9dpp}%vF;%fk?=LN?(GG?v;7&A90j#i;ryEpTV4{+~O zeXgKqJkV;jMZ>Xi(@ez3zgpWvt#FT;8Je3Knv0a4d|aKvk{=eEu|ccV5Vf>=w;Ax` zy}x6cuf|}>@c&C`&{EtjeKZ~;v+`9cC~BM^#jecT-aI;BASmkCp*caa6uX1|TT>qZ zAfs4*80Bb9+HQxj0^@^m?ir%+7)9DX4EfCL$)CAnx4=gD$Q24De)+bKF*5aVOR=23 zvxHE`tu!+uR6KjpE!D-VRuMrwcLA$GfYX95zSQmY`ERe#GOQkn9x;%jEP+!%RBD)+ z^9Ru+LxP1F|+m6PYt(i6UM6LElv7ce^{Ko@`IhC_} z`IguIvn&JYY%AG;8G8ikN(e@^!x5pAEb0@MpL-{I1tvWdkFJ(3jHYJJ?}tEY*EPir z+z6Elod??wr9FS+a8AmI`e?i@;dPTCYcQY$u`@Gq?i=CuXuMtFb<-hL^FPS+0v+>W z6*3SOiXWCSJ2;^i^!P0ly&2}Z->LpTR2f4r0WvYSLlt7XWY3HGZl83XmJz2HI$KhvM-k&CigF84oAqd?PO<6?1P?e z(8a^%z?4JkRTQ~kjsOt)Y&*Fbar&XR8*~YLtfW__TLzuhQ-%qN0X*8 z9Nnf$39eh!aDL_NU0#dHa0br5mAo}dK@0$AY8*r0p^3M$b}y$y4X@M62d_+h$<3|l z?KTu4C~gQmM}mWHHcywl@dgqcs4YG0|%F= zG&RGXSN=#u8SjBJl36mI*tpxgkFm%mb1M_|k<$StJDLHA13>!8jq$D|2fG@+ zG5K!Shr`2J;BIZab?Xi~6=R)AbnC5#YdY*^<*I^*!6J1LAyh6x{gZOiq`aU=8H{XH z|0|w>0BX9+hX;}`AIxupB^+k{Z9NPGjpC|$ev1v|c89vyVLDK;V8^I<<&ls4a5#!> zd-}G$BoX~a-1zAkh>RHib5Uo|!hmZn-M1X`PVcFBk8F1^Hk>^~SX^RG^E=pd@%N=W zoWS&8Z$eNxCJ5Haci+(?BW#{(yLJ$)$o`CpBq-J`Hz}_jq2w)<{^I^#OA30^j%rQX zsIaemMsgODXdSvR`+=Yh1?vq?B7T73hC}w@>Ll*e0|V4xV}1n;q}%lKEAlJED|QQ1L{`6Zr~3xZJ@u{&F#+t&hRy~Qn3UJ*1NB$(``{{0pFbOz_c$ND zO{tF2(7VIxWH|Phtsth~n_IjMqp`I{F*Htu^2*RGwv@J})YGBVE|msMbGyAwEvli| zUa2DCu0SCR6USa|U&~Bl0^U`YDO2+8J6PXzMcU7V@;;U9q{od^$2cojjY*BE4RX^x z82P>Qh^Cn;Uyew{s|~Wy;Tlo4pNuxW$j&4gQkIt(#KlGP4t_})Vl(z*uZHpB6@N;T zd`g2m5A$}uWDwwi%pk~aB`V-dA-_HlVp+ceDDL>7)Av@C!H9Q*Cc@CRMwH9$+$zww z_GK{l-q+HG{@{=6GH*Y{;Wtq?Q8ptm+2e(q1)`kzC%Gf*>ahmVvmO>i_ z=&ars;{%S{3=w+}@NUP)K(odRHZm$>cO zzgR6W$f}h=#4QlWz9JhkUkiu~J#$8o0?s%Y_D2nSR%rkicafrrnmgb#=1jjBK{;P(z#9+h zpLQ703Rc2K&&5LhKSg(!sANSX_J~yK1~u2MB;JX9vM9)8R;1>LRQ(3E)D3*hUef;I zczkN^jc<*ZK!~;n3ck`KvhG=npnSu{hN2Mln2Eye2DQ~KSldvvFzTT810B;0IV+&W zjfK?YBS2!Z86a8#Em}cDriy}A5(GCVa(zTUpnHWEH)*sTZhwM89QKKBk(Y=~)>~?f;w>tJ43Ekjf zz589}7CRgP9>ffSKrZC$NxF^DZg8*O{T8!_Ezarg-&TT}1d$8}LQPwoGHxIYrra9? z86$Fxk|?eCwzGw}qs41g8qX~LBEZnC#uU?z9gfBNZ(#7nyGvIVvOay$Ft2y4IJa4F z=5|U#enO`H1%i1(4)W~pXzLbfEo8UH&!s1a2L-<5>H~)hI=r_D5ihyj9o7nutYl4i zwYYmotQCSY_HN1c8l7w_@9W<+#YiII7@1~5m&P04TcBMX)KNmWgno5H6Us?vYKPiN ze**_jaiW)5*i{3y^6GWhaca~8Ifo~VaF^)KyW7OxuZ3MbP<&W-eUo9qx#3LfF#YrS z0M{`6Euns8`GP6I$+5R5VMRGqO1R&@;jLp=8}hFs8fNo-Pi6VZe9l5CowZ-Pg zx*Uv?-maIy9}4b%L9qj1SqENSh`5JZ&)+>Y=sMQ2K=CL>J|-yKDhz3x8Q6ocJxhG; z;d1~|PXsXYUBEXZ4-vbQ;W?bTzAqxi1Lv9c+sobt{n#>=`Tfr&Nq<2VQ^-435v?Xf zqW10+D@5$|u%o9!_U=E~RjhZ-_*9k~mtG51hMPlOoTDFo###X4Z1)+Ts9W_28RH3Jrx@#Y*Hm@ZQ|WZi!73)6TgvXXo%w{5$J217dMcxc0!@BJ$R;pEh#l`fU9z{S4w48ga_7V7KZTkc zaZ`?)(#>GXXpe6cI_QH5qL-A>Zk%}LtbGTI2cg&BOGbb$nEv>yYs3>iqmp!7hfN%9)~a97OmIEx#M8&ka>|$0ZUA!K ze36Q2(golU^~3?ri8p6>>QB`*VjLx&^tbM=Cw&G}RabzX0;yP1WM0;R=Ea@*(IyLp z`ffc(VB#2eY6jMARXC@#8qf6Dw8>&0E%%mlweEF5C=W_tvNZXX>!;mM^u%0)Q;5=J z^yX_E>~4q)-sBuHeIQ`((+Nf+7AS{@Z0?JAJUVcEGa)A(MSaAR#{M#TN#V&AWu5SV zoOB%JiabQ>j5j`+PuPDm08|T4KZ}7Y=uL zAlpFx`Akwt1adjpK;K1JHiZQ$MD}X7DYDf@n%48iL)DQx`jKC(Z`)Aupr0#Vh0o1T{di%?b+N8iBqeTLp_>Nr$xSG96iz4Y%_hNM2Ax@BRxkxa*N(y-zpPHlkVR##%oNbu!*M z`(bxVZx~i!pFou#@R;N3B>NGMc1G@@QpN%A+y97Y(zTe9E~giJ|NlOk_%b7~AWiV} zvOwH%`(uaMLrxh^E3gHU2j-*7r_o9+*s}fmj|QxE@J>7xy(3Oc#ZI>hd@M7vh_x6Z z%XlJ4gYe!Ss{$>fPUQWvWP*F@(<}IR0jIvV*+PJs*gSyRAHy@wR*;EfCTT{^qRQ8a z_QQ-S`d;cpWRF||)!gG3IZLK3C9d3*QU{IKi8V! z3*X6fVh6AX-TXT(E%#De9dwzxH5Q~@2C~ch?Wtj&^A|_i&Fpzkk9Z#gfAR4ZG{T?m z(!?X>7DNJ#@^Hu9GH6!c#zUS^K1Sk9PAK)!b z{6{RC?g&o8=ML5mXbd_^KHZ4ASFg&IcSdO&Bb}Q6?-G8d#d$}2HHv3GI@GwfQ=iF& zyPUNu^Bi_+l{I@7Xk?MQ3Mj2Q02kM{oHBQ~d?wb1r9It7{Tw8ePttjd3+q(f$$ zxdC3PCT(4K8F=r*iy0YD*0l%Z1#neOI(XsB7$1KYt4jV-aOlCFw(gUsNG~%C-}lac znez5dIsDEweXEz69@Hs_tQ`VHP(>WKDU;d}MhPS!EY__n^;Al9VpaV26@cLTO5=ij z@^So_Wp~?ThZ~P4LOdcn`hV!L7qFreCDEbr*D~WQgTVcNx;VH`ZYBo}kB5zpYC2s_ zB|1YEB0=VrE%~LrkHPvf8#&i7lUDN+2U#3NE`4adq3zeT9i0Lfi{-Fo&v&CN6)$T0 zIBi1@{=l7PSEH-HwayM#-fHDo$o(Eg6e3lzq#MW0wb{|(>`XDR{1dzOLnA6ZWRfmR z1NOvTajv(M&h7_XHcyzvUn`i!rTOFPk-Kx##-&_cLKFvxSzn1s^ouc~JYeHB{IXQ0YTd~Ca@73E`N+=0%X)U~WzYe?-}&%s0ZMx6B!lQ!>G z0^7^dF8&zH{{1dNyZ?QzyM#GtoEy)*8lIZ*OsEG~jEU?4GME)F7A=>IGbqJZA%=MB zLiIoUNPtHr!qBd-#C?Y$4f}SD(ruybFdNYE3By;iobV#2gXoo4!%GKFH8qN2!uKm4 zSbrU8X;$O61PiwG@W<^@>7y(wz5nN<{IvHHtb#cdncK=JCq=1v%}If~%{>g@jq@+}x1QC+V|`zC^1`~`Y& zTC=3sHO%)8l$6l=;>;4|3$2*7<)_2dIp|N!IKuFn!j2hXv%NK0@EWDhl)h=Y*2<6G zdbI`fg+W=gLm*$Yu(hgPPB+}7xO-$iBUU{+Rz&B)(210D5nb2fULCD)`URKV0`R3^ zUZxr%(LGe(V+qH=P^O%4{9qdRo0f;4gA@>RQ}9x^!N0h5^W$i?yw6A<56yRrF{I|+ z41(s+o%HzFAG7Bj?!!|G_ZKB`AFRECCd4!_JQhKpOP zB+0n(n`D*L|I$(JlR^GC!*DXbaS$1e&~g49_;TJo{UI+;;CUt};}J~PzL?W$z}?Vu z8Kx_X0W5IGEu1A^PB~?}h3qYdZl#c)$4@#A7c?67tPl`7W8z{U1!b*q1E0gRm&J1l z#Zu5s(=(~v8HYgFhDTqfC)yKnupTLUL@gR!&(2}$@*$J%G`vBcW99M;5YnBjQBXOQ z9x#i~=D)@31Yz|pL02%gY_1^1`JkOJFzy;5ud2FYbzoXmAz=B{(em%_=<{NkSSS(K&ta8)2!6M@L=VmakXZWxma zx3h#^m$!NTsQOt;Nwk^G8F}r_JMPm^cFw$KYa`)Xao=0fMZ1{?P>#1=+;>O878?}b zm;HZ?baVV?q#FtrD?WU8efai2qn>U=&uFzFPn;=Jyh{3q-6bW8MCxBq+B9T_e}?Cx zbWbH@`@x!|fof!lo*VE4%laaVk)U}e@!`1Yr}13FBn_}5#Qd!OqTu`ulqc^ti3UJ@ zqGO7j&n3W$#i z2wQT>ry$K3LDkY!7s>n+&Wc)c{Lny}QGTai893ynWo8sGYG*{>DS6}%j7$8e)0qw@ z_I3ZglnD=vWNYB-G?GaZgbdf;Ln`)VeeXrQ+LV7N?{6eHVX-Rmm~U=?|(6!r1bJJoyf9zrG8Pfs(&}ANkm@^3ByvP z<%^#DMV6f_Djr%n|MP?+Zs6cES+@EKCq%PMhZRP}@-DD&O1NMNnOu?miSNIlU(Ghl z58BqQOYqLs#T|gSd!Mj26eaYnpAh4 z_)<0N4i_%i(MBsX{4Ys!d$&-~=|n!yRSCqrD4qZ#ULQ=8o!G7W_Y^B1b{7B-TF#8G zG7E*D_&D^q#@Mj&TfbVn&3G=H58np-%}_JG=1K^B-Xx1ag2Hg=6HVs`Ii6(UFv*8G zo%u^hRF;c%YGcd5VHy-^UMR!o#fl-A6p}IGpE4A(gVjA*J5xoNUY478D(Vm#a&Qzz zzeXeA!1N?7g#0z={wJ+KEkOn#)tiqVd}&sR%onXq7`--SAH7yjG1dHA@?4mVUybqx zPCG+7hnhh~Bshht*rufk!rE%$*#UoY26E?+VAflLb0Zqb#Q=(E(Ytm~O@lGlhi$)6$Hj!=by2r0N0{zvBIw3zbXkR~*u*xJN7C`25qG7I9d-Lxhb8&tzL6jYq6R*P35qC5Ak@43f}I36kGqjpX)>c2S4F!9rwzDa0|HM zH%FbXLR=Q_a@UMZ9oz)212lh!vruZ&x5ew=_OM&7$Z2Qxp^U#>GEB8Bh-)$Hm&n^G z!}oiv+pKPO2`N_F@K>^cKIXEDLd4`i|7aPgk#3h}TRJ98i(q+_!@Z$?=o*iS{LaVh zeJ#%%iKh|XZZWI22$Aj^lFb*J_c~yRAn?>7D|M5^_f*orxUB|(72dsyG+Rhz%u&P% zmVX3Y1988t+ll_3@rhq1AWmQLZQK;e3+B)YuB;e;+Ej*dimh+EBY32ow5 z-jtjlUm*QO1l>?l;d5-ZLhjY*qQ@2DHfy>Y4-Ryh=zMmx#td0@VspLyD6%8pcw2J) zFlb0&ZrPzl>6+W)@~YKiJ~^@g#`AQ?||5Vh3zE0BDvYlCh~|~lu24WSkE0^ zjnsdM_5(j5v`0C+gt+icaOzA}_VJmPp8hRap-i=ZOg5{Di>$kxR2E1cLQ%VwE%CyB za*v)Jc-e!j*~q)L+D2j{4h`>D*rsVkC=Qc=Vw5`TJ8A(`wLrPfdXCzkMLwY@2p5J5 zA30;)@C|?2OsN|l!R3dfLG#MAyaT+d{lV+0eq|=|0LO= zqnz)uZHlj@Oo=}z>&y~}xUkcdmVb^_j!!c_MC*tFX%6z}aXK*XEr|}3A4p~$5N;pP zM%k9!Zr#cwu#t3UsFtFJ^?oFgzd z^X80cOL3I*XZ0IeO_hS<8>Af}*FRSFzea+TFvkbCwcCXEj$Pa3#`6)VRcz%x&#M$# zwJZX|DXlGw!y2tElf%x~TiCx~wc9Fxa}jOIXs>PcVzm@WH#-l`!j{mDu~!4k?A64c zeHb& zC>xm4sR(95wR$wj9a+EV&K9LU&+K>G8ZL0sj}$L6$%>F8liO_HBwgi7?j>M|U-wDd z#VZgWdPQ?|Lw6l|CK>thO)uJnz6!`)Yb=r~i>W4z-620qum%|_2jCLaAF7*`&%z0q zBU0`B~%Z-8FYkgYN^nYmk{d^5MhPa zJFuB|J%V?9G*?4Pd3pM^(~gXGD|LFE%i)j1_9apR^t2i|v0RC&xDG^Uo`9j3fy^xw zy~-lN@dC0TF2eeK0-K_~j)*`77&#zkAwK$b9a#rvi=@#)9A--@bpeRzwn9W~|q7kNva zMc&#G_9Jc2aP}iEc6sz{XVi7-o{}(Vgpie|ed2TYvn*mmmk0veq$iuvI7dKKEpB_~ z`%9BPZhBd7`sW%O*|cM~#DU5ai)FG{17tq9Ms31I^K*0kU398ikxF6dDDo zXay-W(;Q4Rw5Tql^ShJX6Apx5IbWm6$i$NshBAb6g3-vy!~}A7-bR}7;p&T8>xp^V z?|8PRi|zZ9>B!XdPFO}lP|TLP=@w+k;g)DQ1+@W*53ROoup z@4C3OsL%a=$iCSw-PD6=UrqAJli+-}i>B0l`QHD1x$ztdK6uI z^w^uff;dGRVK zoTT&v;#?L~Lz_u=mTczj_TXa4rpMUv+phM{0iPdSTkB6d^#R z?t!)yDRX;6=-2l7DI#$Es=`p_I?2yG2S}~F{qmbc$UO*92n(XYfz5pvcH|y=U+i>r z!ub=L$x9>s%)m96MFV^l_du{2r~SkIm-Yj-?s2ashZRb>1nuYH>Eg&Z>Ft3BF16qL zp9cl3I|yv3_Pn>2@4oE$$X&%5K<_%B7;5RGmHZ`8{((&QCFpZ(H~f$u^wydf!1J$C z_6`s4@UCC%l02NalIc%?Ak>qK@&bl~2hkHY37veo&eyOFs$f`jA5l^kNrD*fmM~EH zul7%u(gQ{V$OFewX;EDMrlV(ADkl^x;VYj054#iDK`B+cL|yF20&Fn$viRA7LPw@?pi#2L*!3+ zWpgmU{p$f`L|gcV%5a7`lJ|z{$u`BiVNbebc5ldmN%>nnYbJEh{_WK3#QyqY_`bys z$Uik`qOJGvwp6H0WTq@j#(sQ!Albs2?!Nrs%^C35ew4KOb|=zXi!7f}m+PKQoOZrE za&_0(1H6<%UVGg>eEALMHp#VMc~~#EyOrXDK;D|fPaw7IS8(q6Ma~0T^G{uXNQGar z(T&VQhh6NCh_=YA^K9(ZcFXYb!pGm}$XY+wf2QOt`?lSsOyvj;+5AO>9kST~!A5Xu zRUXoEO}sSY#l}B=RzZuvnhYaNe;gA!3$|;6#09=uCuva%dRNWXjA1(O$WELhA2?$7 zb*qqic07@meq@DHA^HR)ersgRvC<>R4RMYtwqQI)N$S`es;?$5*`?%B8T6ZMAE1lO zac-;aa%n`~vL2DsafL4fVX6?(-ieM0+wiU-NId`*N0o-6j+;=b*~ADX6Xg{XnOuR{r3y9n;R2;&r&rkNo0ll0vC%pK7uP|Mt`N%Vg4`J%EkL< zOpWn${UBA!i2U^5TIpW2POguI3j&94WfW`sli{8nOII3;{4JPIl~J}9{K~7xmB5kq zc!u!fbO{O&=(zpAY9Vg9U%OrNY=LMbUZ#KbFxuyukmuCAODWB?;p8TwSI6vBv7M+R z9Q8dXv-~Pv4>|&?^tfM1@H^W^+Q!;Ct+Kfi9ef0~nMLp;PZ>GUnw<3&RdJ6yy@H$W zelb;it}v#nuJju5IrZ8z1bFFu;+4Lf8(NU7ayWPdTN<_tHK zYWJ-?H+x_qfESBlm5r5DQY6|Vcs8{?K2G*&vbPAtzhy_ARjG>zN$<%#rRU3}Yz zkS}#E=T-T!o$~~MEo<=V2}Swl(}HPR#+#45SMVF!Qrqxx<4EKMjMWCQUUS6TCk>)E z|F8~s|nB>e;ZSHy-D4- zfA(;YrPxOjVB6>7Y2P2VL*8o{XW5U|uqj?quo~nV;ITsn)RYb4tYhtWHMJS`2VI|) z8f#O>xdz|O@WH+&YktALB(#%w;CyZJX!hU(6x&4F{+!33$FvUt|7oL}`m#rS{ zD{^Q3Zy6r#Ab;Yhpg|O{;1J3X%7yc8`LNFZ&83MeJCJcv#%~fkvahy)xUi&q99*j5 zcARlKe3;xEKZSHys*llJ*6m0*w%;>%t#*=Py&nl+>tC&?#-27;ID+@fa<7dvj4eh5 zr)SGsa2YMK*rS^ZcO29z9dKnF+e+Ab7>L7RP8RhnVlKHgy5~%cKThRuT5tYV(;IVusUM?yt9*s}|!3+0m>T-=3|jwExGT}Yp_?8JjJn)sF7$EgXLLOu6S`fj zt$K8?B!%C>&ZP8IEq^NTH&^}n;oQ-0sag_%u~X?5f13}Rx?QBge1J-^JvMRPW>5a7eyqM^P^^IcsF6X!u@As0gO%Lt~CE2n1?39~I&S#2QAmxwiujbG2 z$xt|8f@DdP5?}Eu_)mDDWpF)Zy4*9>7Icp_mA0fLXPy&TOL!E$Osn5JP)aKfHvOz( zj4P2O6qbz7j@d0hLHh?VVu0O(NYt2@f=Kj#0PP>ZkR_uhehfXW1|eseH;4UqMrY=G8h+?dzfzI9vfWsAsdufTpJl)D17BUDqMj4o62WjsNI@trJka{%aMF+^e_;c$?*W$Td znNR=8_+TG<6-#)DbaQw_jH9VDD)sTy8HKFZ_hVVf_`Dl3&F?pwF~52Coidh7`6WDX zNo&)^E58ESbJMrzQ;D;;81I1m4@3TkMf|><`GRHA4@dJ3pG-&0sQ-cdPc*D%#?V|* zPB3_Ufn)wT**+e%J`U^-pA)6^sqcuo+&`U@pGdd}l7^S8_`HABF^#R{JZwn*EsL2j zg+{X5t0=&?TdGLJyPKk@?aFuKIs|CsJc|yA)fbLbds@fK`J zZJY~j5?8$*cb_+g3vHK#pifK@cVxR#7uq?1atpR=8Rogz<2v6Og2nHDFRFvC*WE`Y z@^0&kYxUKIw#}sxK)QyIqx$Y4P=Q9d5VQD|e5>`#+d08G4U7)KIrMw6nv9sS8*$)O z2j4-Oj*z`423SJhuWbp;w%s})!cZtLZ8j5ASX(a65aPlF=Ik2t7xUMG3;om#KSDVk z_O8of4v%67sAvDmt+C+V>FL zk@pb1v9r!hjJCi|jMic*K;|;-AqxISD|3a`nX*R?N%JcsBNA@y{paT;j~)9Fi88Sb z!1N>5L%G<7IoiGY$2KgVHz+dZ&04tU@~{rW`8N0V+tsI9I1dI$ozRZATeOA~!9yb8 z`E3>MS?*0%!0FXJ%xHa3hZE(?Q@zKYED1k8<+ME(>pwxY{C|VXpi%YfB{t``((#oS z{ym7S5nxWy1#)ohXBAi6i40|XNla^@fi>;oa{DRh>qc!p_?1U)^Ccq%_E{vo7ekU9 z`|5)ayB!M(>izi@eR_`-5aVf=$kHhON;s^%M0=`QW*0gYy-Sl8D_at-kmC_htE4$} zz94hdeAIkGdc%Li&#B<49_44(_J6u8Vr=S5!F>xVr<>XQSQU3}4QO1m5CCd@@ z5%me$4KVv=n0u6elz)CHdIH;cw-;Zr_S=EUtb@>PWCd36|boJ8{wZ*=-?=~%n4 zM7liTHG6Sg=l-c=J66I)ai`gVsqCAk1(-HV+rW^FKP_@9`9ALTRiU-q?j-cplaWv# z+j{iaS$p5;k$pBCxToaRo{^Q&P;}2sD_hV`hy~QtWR~NW+74UxEZ1AKeWg!~!k(qV zo=N)J{V(3|<0;>iUm5=Fu6JU8*+KYu2?-PSrlLk?Sbd4tto6X*(V4b`@c4(RA;UxH z(}OR>4gyRJ6OL$`F7tyg=?+3*4AVW{gRkBW0uhN0bE-!t;J0)PhDI^9?!pf9Wg0MA zXC45{FKJOINF|18S< z#%US@CF2zi;)|`1Qpj!@H84bR7^YgKn35s;e*ptRQ!6m09#cQ;8))r|kdcs^HjSqi z;e*RP%qba&wV^fvN?{)l+^esS-$AREe6yI+c?QYqB`t6_Bd1Wf8#1xq4SUT&GN6mf z9jS8F#**88JVlSo9wDLL`M5+!L+yjV8&0oL7GK<{6Q|QVIeKXXX1K%x&+p9t=sLbU z?%>+x@&P#Pkd_=GTVPe`=C^*k@3u;=Q@;_-^OL+ms8Y8>E%T7IBa|ep!*UJ~L(1vO zhZxXulc z3dkX)K$`9j;vYm`AK?r?-ixS0?9yh(%5R|PL&p|}$@h6jD)m7U_riZs!7UGi1rX`} zY66B?tY{upthn6J=EO2dMc<(TVOK~)fkIHo+o z*<@Ftsh0jEf1@(Qu&J&}(#p3`tb=g=!UsfEDK36m$vuHQQ+9$fkHy;{GDN9RE`&Z) z(xn~}fOg6v_@PTJm3D~?4!&fp&~_zW`0D`&%Je`4<$6GZvOVBI`RuG}aWjaz@k{7m zis2``9e-!lDQK{i?dhdu70egU`_*^yipeh*S$1Ak%F55A%%r@R`9EYfr4s>|)$mE1 zS@sq?BJB8eBdd#2OKs!L`+-}O5YpqT=Lc?K&)~wNFE@Jeg%R?^5X8k1hA=nsH}c?% zBmIt$BhegCnJi>KEflv*8cb^D*w;t;8`ur|8J-T;BT&w>>I=&~Lk-G$_Ls-c(Y$(sdpZy@*kS!sxQ;Ix-xGU1m zc~TNI&xM)!P&1)K2r3Ee)KS*yn`EFBZ+gU2MooTfdgQ%NIZElkyRqCUR00rI^3VLZ zK!1ro5dB1fJf7j*(7Ry<2fKX~I4f|&R4t#YKAzD(VgbX{Lbz!1Bfs09O#hJnQw~zD zFyA|WcDjS@2zNv6h8~>ihO8Z98fIuhPz)n8Jj2>qT|@u3WbiBWdz8%t2CS^gv18_{ zPIP~x%3-38Uy9_SQG&ml-3)vupDFlt$@1NMfqJy^M=w}q_+;gh&wlG6 zalUzu(@mA2(&jnB1wiB&;w1M5l5q|z+e*5IvSYu-umi6&(9q1ihQC9-6stjH`8`jk zP-pYEP$(v_-mtZP9lWK;E~9b?3ewlwV*(wHpd_4Je07=jJ{$}Adv5Hs$GgPCm*KlNk%<;p&RaKO`#H(0J5IqbYuQZLm0eg6JV+Bu` zB@sPRhEzLGiDCvDiYL$1(R6{Dk>r+mJIzsxv8>QM$r%aRp0NE?BI#d;{w$1pdqfWX z4k5ss+xhYWg#7e+q^QJN+FsfYGhLtDpsQs)Z63JDx#f?&^|a(vjLwd|R_oX(uh8Pn zr)%~e-S;uIkfS;6&1a9yjrZLlHO}3&(G;GDRG1%W z;zL5Vv_BA;?P*~|u-g{Nsg zi9CgCX*y=|>T}IcPRQ#ssfZMGF3dZ!I!tj-0FG1+ecU6X4n_orV^h^(`YSf)eYR&H z{&DWfcS9M*^!C^X(0zwz5pELO^v==R2C2tqMa~?IHg^;5IK!)+*8+XHXXvdx4PE>{ ziOn>(i83RZlUK5DCdGr?O9bW)?Byn?aUAaq!2a&Z0*eik{E8VyD<|pM@ZQF{=gyoD1eq@7X6B-TC28;8LdR(~%{ic4GrB)#n zyzxe^!^+>^?>Ie00#4R&mvo|!%O<&$YHZJE>y>Jpi6@+uF`H0=$Udh*|8|--r~SQp zlS%k_b+!Md^>gcL{&mUk*R$$JpWm+OZNOu2sEr<*<_RtwVSrOUZMfu`X5bk4^D@;U~l}C88vV3F^*R}cV^gh5pxa(1o1eN1;k!P6e)leRpR7w^#S|ER`r|lH&4-&p(<&|u z_3u|h!sOPB_us8kz{xdE_ARH~RMQ^TnQikmlGi1sA@$5B%nY!1Ny_egik`p(A60fe zcS(xH+S#W6pa@73G`_6C#N6BRqBn?RxEbD+-u=E3yT$J&B2Q**bMy2wTTAvt(eeOH zAchV_gK56;{|9|Qg1>WUhp7fFxy!WITMB-F_+jt(@E%jWcT#wt>9}`l_@L<&wF6nN zXr=HGXeV0itanCuj9Eg99W!Tp^25W-e+KVtq)#AAKnsLVm|J`2g-@IFsWpnc3q#fB z4xT;XbLLK>U(8)ZzhE@gMl#Layo>c|=3d^yh-~ibT^7kT5A?2#v@s9!u8p)$S&@09 z7zO4r#K+NyAiFY86eGph#cPQankTyFM>?C!yspqu^K`Eto&jDfQY`#Kq`P^Re>W28 zE!scQA32vq2Ak))S!6go!0N~-^8#-&Qc8Thxt#2u#*}F_aq0`<*&>sK4~a|_mZ=w* zmx}f`ukcpu9nEXJTlHW?fA0?1v){X0kC{yuIQn9TXn(VIxDMw_XS@+J4EH)>+b&+MMf1|b&UU=i?+;*DyIl;wQ@zRP0@9c1E^JeeS$XfGu zZ$rdlS?Svu9cx+ZtBFn!HXI*s&vcK7PfCwj@=kWywIe>YV!wNGe1<*OT^~N3vR-?e zKu7c)^=ZZUK#^$YKv&VuuDbYa(a!OC!t=)$3LhI^TroA!L$9~Dr&fY?fAM8PyZFkA z8G$}R>p)3-t#N5!Xxw5iB)>W;Fe2^}bp|gDjE=kPojnWmZNieP<_b%$T43JgJsELX z8Y=UnHZjVo$|)9{B3=AqJjNsT;=tH=(%xM}4SR1_GF~lsd@J!C#CKP84oryGrlN_x zziVrJKcdWpc%6MP_)+_CfA9t|mg6Typ7+MS5b6aXR>X;*0D%0;>~C?7IWT#BzIWz;>SR zcb!SBw%56rCye%^?&ArYy+L>(`$;!Tc41ALqDbY=itbj+y;x7=? zjgGuPES_|<3j`C}e;fsY4T+tOj>1!kQIn_65<7cO^LIV|F~ml;DFxIF(PodN)k4cm`pa4 zP4;6T-kNwm@eV1Qbc_}@NqoHERh+p79H zrUgz_4Rp-(?ynl=nB(qIHPSKPy|ZeJV^QF&-p8>dDCwJ;b8~AkiXF?vc&sQ6W(!Xn zH0V1WtAnkp#)%n4)kNZD4kP$<(fd`i9JXM7m6RIYsj*x!FW5mJ;qU}I!4K^5o(boh z_xV`FZ$9YDe~LsZPWseH(tO017w&65=4%(JHlOenM7Ekw`#MH;n9uo&BD*b_zOJFI z7TMP$QftZe^@;4qStXIArHyZBq|VabHzIP>Qs^5UX|Qzmjg6eN6#FJb&RDwpCP$g2 zw{KcB%hKOBGpbq!`{sn|EW>^Cqj{E5zD3b?mQvr6e`tYayl;85qh*qBb+pJb)n|-$ zwaoC@qCG6LeV%9^%RFB&T4Gt~i$#Z87W+0tM_88mHibLkTHB(d)AK``iCHYZz0t`Q zm+wGyn#J!s9Gz*2`068mOVT+mI>%D&J06{H+3GtLU1ZteI~!eM*R9#4ezqlxl6+PEJrI_M~#kPuuIiaM=aQ_YK3)luvgU@$A)0vDwAVVaA1|g zu`M{P%IDY_99gA1YJy{`5{|vWaa9`~2Z9r;HaiXn%c{0J>Vwm(cBQ6P}nr+si%8}8X)~=OfqBYhYz`fQ!mE)oZtR>8$D&6T)7~6);g`SeARM+;4>?i>T|4fDp%+>>-@?!G0D29(iF?K zE~#|H4A$k9zF2GP>PkJ9Z#7mXVjTn~7g}xZ<*`myPvyo~7i+L`bGVZ=R=GXa&AOp- zSFD$HQ{|pmU+cEYeX)Voos|b;f5WUbl}BPDt$Qnv0S{E3h>fuxt~?zZM>x@1UwJN8 zWMs^2@PV)>Ho6NN?*|f1B7`o8)gFTVTuf7skqM27l++Qd?_(acqSx-`_p9 z#@4~#J7%(V^7jvC+q(D%#~juY|L|~`t($*T%xCN6FU6dsuYY{3lWm}Xe^N{reH2UB zhWV$)Hrht|XT&z!#`tH)w%f+}=f!pb7smG3Ci)l0M%v2!%VPU%)BP)B2W_+bYhy=j zbN!asG1~&aD|W(G?)QgI+Lrnw`h438e=>I3w#Hu_J7+Wbw?;SF9R3~gOyF*Plg;O^ zjmtLOzdxR9OZe;JZEPF;e@El(ZJYfK@j}~n|H*h~+b;i^c(H9yfW^Dp_64%yy=?~r zYP`SgNFXmh*tsXv9%E`>s4zL(xiOTP9Piv5l9Q91+e5j@sm@)YHpv;bV}W+@;Z_zX zh>vo~q3+4WuG~=XlSjpMlMSw^f1$;(VPb}yJSpZ0$upuR>zVU}d-eJ(S7uX9)~lip>+@VQEQRaa zxn{e!tuJuRbJwizDC)DmD78KktL*h%T?<3Y*7r!wlw6BLE7$jNEeow(U*bF%>Kxgh znx(r|hAiugTx&zF^+R12F%x#VLjLt5#2PTtnMq8Q21-L1f6JVh`9qeO`J>FAu=be? zGZ(R2GM~+SfpyG$DYJsznQ6)NvmPz}oW}l4W{S4b^ddKEBn1xx{Bbe5>**95$h1poPfxV0~Ut_iG z+w2fK!oJ6jf3gqQQ|uGY*pGPzzk@wXZ@JX@Aiju2>AjR6OZ}w*>{ICxX)J4$o|IUc*WQ;K$ zFeWS_3IRnWGNCGr8A1UK6F@Nc&M%hAL{TUjhGFJ146GhKtR9w1RLd$nL{YUeONdM; z(W*RD)uRXR_ndoY7$JF`?bG&;`aGZWzUSO?&yV-K=bSs&!>Ew^?vCOer#P+Brd;H# z%4Owmf4Dj2N6L@58_G51CijZ~Ed($*oTmSu>V?T8TcthO)UU16HfWoh&THGXomzv|qCM9%q`jcEX`Nb+_HvU$JFT77-e_`bZ#J3y zLcbi&%VEeD98%EUX}Y9c#(k?z?&b*XeeDD7X0x(6q&c!Vx;eHvvpK#wsp(4de}Sf} z&8f}l^et|n5!Q@+Y~36qRaiIGSOux%J*=U_Y~8$!^)gIe!HRK{9ITgl@+$c)LN2q> zYw*DWk{3`IP)J@6PzR_an21HMm+0_p;O zMBWb21$2<&fS&~X1nZ9@CNjXRe;iA{fz#-e@qo)H_kWSYFuo* z+ql-a-uO^MG=Z8>jY_jevsbfElc3qJIjA|LIjlLN$&-n)8|=jYH$sT+&?8T-D5J7BsgtOPZDUqu$^Be(?L@ntPfJf6b%!6|fPf z>{Rx!_wyl-S?fK71LQiwSJ|(C9>gxPOuj}wLP!aCKj3}xLO@GE3rP*=4d^8=5-zkm z^a5LZ3Gifc@d4N*oHmO|rn?+Sm+pwVxa=}rTy^zdyze@H@qugT;-<@CQ@Y%?5Z5JJ zgzJhe(sk7q?V7X2x)yBlf3DlMB-fJdfNRB;>bhr3cWu}*U5{+pqQaIZ2HOh6aGP4( zZ7UO_Y?We+ty+w;)ryI>dNJ9i5mRg}Vwz1SW!Kn zHYlF7*~L1WC^oSBXt_zT*)}D%+h)X0Tr=3Nix%6wc+Pf9ykJ`te{HtAqSLnKGEvxg z=vdZWD<1^9?tO3={i1z%8njQeKmPQIH^5DB2Q2&gvK`tFKZaG}s_miZq4pWxBi=`u z2gB#by1o6PeHq?2rW{Tf3t@ex_CfwIL0@Ib2ox`aX)rq+=(@_r;00sx!fb_k8Qwn@ zF?$JTd&SM+P_#kYqVok?p3`A&sXgi3=1KQZdr>B{`Pl z?K|_KnXv=IC&cjKQ)8)YjIgU$ddKFIr^nKVo5nJSTgS3}fBiiC_*kCkt1P{C@Yy3o zlEZq}71*rE7BQAL+%r~SiyTwi`o_v2DuhcA6fT-6}T_=ocFt=l$f6 zr{J-)S33OC?lHk}X{_%P7$%2FIKv2lCxHf3{lp(NB|(1+zu!Qo3|_TejIBHibQuZ~S(Uz{4A8=C>whZn}?*_m*A z>=w!_qD=Vk(%9XLn`3LkD`V@!_gwDbjj@NrkKDwra0l9h-J$kyw@TXA+Y9$=z#;|%e1+Z){d&Ipg-jP&$5 zqdf!mM9-iz)?;_ZdqiiFXVQ7VGv!S6f6O@3J=f{JGtxbN&Y9_%cV>HT`TWE?AA8;B zoq3|iS>Rc8sy%m|Wu7(fTJZYx6MGEyDpqHuxa_R^AobyH4+QimP^y`=0%>d&55Meq^5>S1@Mb8#jJ#vfmu5wBH#k zvoDVa+xo`C?W^Ov=^FQ9zds&je}6C@W8WN)vsaBLjwr{IM?%I^Mk2=3Mk2>E7}4Wd zBeCPTjQH{Vk))xkBL~Kd7^&l>BkAK6Bbnn>BiZ98+4a2fx{(5RIkmw^*?99v<#_u@ zwfhoXA0zeSog)JQrp!K;DCfu(5 z6PH{EC$6{-Oj}&qAJ%}QKe%4gHNZ)`c4zV{NKV)w}-eYe-e#G8@ zEU-5qH`yDIJM0a}e-EYQ>} zgX(~OI#wK(Xm5=A6`FZ{pAItagi+mD)mtW)8 z`E-<=MYw@h?x5D2s9`Ha;vOl)$|2sD6OB5gaKNx?SmsmtXrYJIwah;h2x<<2ev^R_ z7#@I4f3!dY&AEx%>MwbP`i*I>_>bM<&!9^H6R=k4hu(Uz1~)6jb3OUC_)Zo zC2Fo@){K=9jtYfB33@-n*9zsrap8n;3T+Pxf2V~e+P>5W;V2s&?CouvBD4y6%-0$l zZ7kEgAV)B<_LB^=#yHxyCwW@FG0s?Ftn%-_KlB>x8f!dhtTQ$ko4q~s$JlP{q;30S zG#D+$bFjT%@4Xl=@RLTH(aA;utQu_(6AvT@otYrJ8+N$1UY ze}^A5E*n>k_aPq`H@*EcDNP}!2vejf+7!!Y!*k2LHaEq4ZEs3y&oUh_rBeID*RS)n zrgT%LDVt9+<$(f|+Eiw$G*$B&_&UQ>D|^JCsotb9wU~6<$ING&x*5z{Fk8SRnEL3f znFdUQZ1$*bH;Hr>jULmaY05NXx^9{`f88=In(ms`OzWnHUYlSY-Zc|*pfsQ6Q1o-1 zL2U$&Gpo#d%zMrII+L*i*N_*1cI`sHa31jxa0qVU61@A0a8;NS7KGcvlCZ*;3HO8z z;Spw#jyo0}j2*zJFf1E`jp4@K#wcTqHQE{iA4oJN*903=jA_OUW0o=3m`__Ze-;@_ zt+Cd4!?ZQYdcc}$O}A!Rv#oj70;}3u#{7r+^s?l4mQHJ>CB^Igv_;FRK+EPdN3EWLf!cOJ{^M3O| ze%*Y?eAs-1pR5iv=a`Qgrp<-se-d-K`8YpiK4Cs(K5cH|>_+}2^A%Y8syVc6$vkIXFyA&WnODsB%p2xM7KJ6)5^mXTiL%64;w*{6ocW+7 z*%)U@0cn;De%+E~$+hHLiY%p;3QLtS*K*QQXKAoBTiPw176YzWEaxm2e~iJfmCfR` zcr2IsLCZAa8N;Tv&pKcov_@EFEjO%otB8@&y`>&LG-#bPOk>28*a_)wJkQ6%s{-bW!buJeb`6(0{QvA&^}e)p1!?(`}z|4_FFcs z%D#hrhx!g%I{S|F<@6oxe=D@qvGa}o`+uMRkN3=ku~m?2_RcyIF*(*uxMQ1S_c0AZ z3xe+0!(-hDLM1uYhcJLJh>(e3M-Y)Wi7qW^=(4`{-!0gll5pX{T6cPPz`E9J zcN=nFo?!nrj)QWkf6X%|!+xWNJVf*;Ek9)gZlziViw`VT-zR zE&JoA$=}zWf7sXQp8Hfk|9{Et^C0{A6ViVVc#721eKz4q`NSUaNqfd8N$N2)$sLKaMpcGWdlIB%O{-rw!>Og}uHeIuX9{#C^&+6JGd+6b}dW>67{RqCM zr~U)m>M{R%%&Gpcw663=p0Z!a^T5t^oXvW)qd%&De9!m#@HXF~ed(x|{kL$d58nIq zu)n_Cf6rIFeelZv&pnOx)8ALO`H~*b7y1)hYg2zp?q`FapLpB$)-C&!t`iu5MZV`8 zxFG8`sed{r@W@;S(_mJxkiCC z$C~UnSa*6n@9D9g^mu;K+Aga=nGJf33^+ z9+Z4WkMmQHy+^+w)j{p4zb*Ugl9Wfk7Zj8l^mX>Vp#Q*c%eiuHioGGdPhKFTI1d!a zsQoD0mZnt7vRbCr?^-?3fEJ*W^Sb4Fe*`(L+g4v6A@AgaB2X%mB0J{}p^@jRUv7$J*IJ|f_pdm`VQ5;hohY(eqSe#s( zQk+(tf&8rE+~WM=q7qF>ONkDl071>-f|4=>Dl2JRTv}X#dn-!%N`w+Yy#Wu}f2qh& zWWbf^cOW@ssqzP8hw?q;d*m}pqtZ+wm3_*7@>%6MY!KF7Wh8^gX4yD#YV zpf|`@f{KEQ$bq2W1^teEH8?x?6>>26)!FHLR{q z187^FIiitWHg9ndGYEb^#OINI$fQKJf%7tsXTR=I+~SNstZ`m!rPnd+srR1 zULr*K=gL#CG5t1k0Q)v`2>Uj3n6g(XkUh%3R{k|?{DJbPB< zAA;6MTyRcs4vGI)t&1ZeBmle95%z07zfxdY70)Z4Cy9?;QIek_5H68R!hHT0?x#e_ z{fwI=&puWvTi)eLNdzd(y0B7BYfZ-f-`YlIiDv)v`B zWCh_xvWjqs{1d|0$v=~aeZ*t$_zC{YT zm${e8Tih$$E2M~fm3x)E&ArCGM%3K5xo?wV?se{UQo_B#y+PjL-sIjSrQBQGTjX8t zZSHMS#uanLO?hd_>Tm0TsMd!Qxs&Ake_SnBORBk3+$mDS)p2#?1Xs`1lOJ%Wxzpq%*T6N9Kj$=@hSYLe zPD_5s{h0ePImP`I_gCaSoEPn+j?-~E@*_^q=}A4;$#s&ycqZzZC~_Ke8Ao>o(vDEY zVg#;->p^NO(EtDVEY>ys<&FrX(hzoFuF~NzYJ>n%f)Gghe-VPnIfP(xf&832gPmXm zcTST3O2Xhld&u6c|Ht-bG*NUN={n5bnwHV`eu}?STqj)EdN}iZ^tgnOt|V{(q=Iyi z39@By26f^5=~B!2WqxTdID5LV;=5{P>iu;8wB`voeo)2^L@)`aWM)tXXI2-^kuIE9 zT{x?{a4vP>f9&YOnbL*xq)P;oU<%Ok*TFov1s1_wuqMlO@Q@Hx#m3wnh&EsiejeOn z{UBEK%i2OXE9$YLU2C_jqirkNwhkaY18|QOZCL3&=(}~1-6xe1*>&k2K`uWdUz?Qg zL4Plv2SYnP+u3R;>C_v_J9`Yr!HG^2q{(oiJJqBbS@Z%x}pp#6sq@JFp?gdF|hNt!O<0i@__1{OGw8d4VYfXr*v8P37ZyYM@4)T;{WS zrj4qeSz};ttZ_f14098OvY@xpco^v;(C<-@f6nPVkGVR(HMf|zCeZ4e!y$tn^!Vfg z=0~oN>YXb{CnF80-gyt{6r=&wQO1q38x*R8OVA%tsNT7O@@Xg!sE)iVT~WM(LiNr^ zxSoOQfa=J*ifh3Xs)IS`;j)j-bt&L;aqu|`bg6xQH-)u-8|fIN0n>vG3tfqP6azZS zf80jd7z)$F(S8=%r%=5a{&oR=N1=KE1%lI1%s%P`l*b8oAFSyBciW<7wm-cj5Vqd8IguQ~+p+;S5 zUwxkLYFw-KD_;w})-PQTz23LigkWFUWKf;%FN4@;27P=)EMF+zP$oS4P+5z2-yi2G@fxQ-Z(`T>vbNh8+;;z>ZrRX80CZIcII$@IMRUXkEIuozK!&5q`}!Gdfl+l6V69b&Mp`h zP`{F7rKed~>}kijL+Qj>l#jg;P#xv&VlR!Opxj!I z0eJ?NzwSMEkpHm9g8PbaAE0{AIiyRG22}64;dh?hH16rSgY+_gr)L%E`$#`9lCCJ@ z-kwe4zFwsA;s@n~Khe#0Kvn6g(!^*H7-bEUc3Tx+gBnqt=Qmd*tWo|!EU3e_!cK810K&tO~;A}m*B zs6Hnguq+7a4Cvj_mfMyk=qo}x)9(o_mJQ1z%Z61!b!)I7e_F$Z83xsNTcfNo);N%8 zO}3_3(~!E))4|h(g#7H;IKn*}ANm9Gm!b8cm$|?`E6s#(=6iBkO! z)g1Xxf2v=oenCDb_lDyxaqC;3s^4D#x4{xv0r$X$%p*dY6d+j2ZwlW^``8UI@}?M> zI6vJ#o%jS?YraeoCiyi7>r4R90O0n1<&+?RO( ze>MrxD5ZQ&$X41%1c(IDGO>QTe>(mtB!L4U6{LeqkPToTO#x7YGEfPsK`p2U8h{n0 z(SdGR3ZM@RNMq6r5~4#JI<%of8#=V1LmN7@p+g%ww4p1IuhTrWeBE27OfG}AEji#Q zdAW6=^>*u0>q_gr){WLjZHl(ww(z#ye{E51F>P^ei3rJUDXmLwX>A#;8*N$8vf6Un z^4p5qO4};hs@hJr)wMOWHMh05b+#GWEN$o7F0|R&oNb=A%Wczbvu!upZnoWNTW(uz zyWjSpZSxz+zhA%%hr=u0l)d5)nOE#%Ua=ouF-)F^SNuKsn(BY4?vNK$i>f8~f5~0d zMud(ttI_Cw)uxU<367Kcy{L(So}p6{|Wu;k)4T5|I)_`A200O&*Eg3^E`{c%Ho48 zKZWTpFg=y*CcAh3Da(0<#W^fLm+7yuIFH3eELOAl9aiRDrk63joaq%zKgRS*rhkv= z-={J840^rz@gjOn$MYwwf8|7`C$so@7Jrq+DJ=H(j_R+lIG4q*u{e*#MXXLW)8A!r zIg5|6_y!IxOP z{}V=Y&~HpHu-Jc0|ChP10gLLo*52nAM8ZLWlo&z`HO5*)2og()e<6k%YKSq!P6!So zGYo{E5v_2o*Q+@EM9B;_KrAKJQcJ0|UQ3PTK|`(OT1&mw8bkQ3HC}5CrG^qOF_s$3 zwfL>|&HyvU#SLO?RT%e&faV9eSUD!O|&e>r+s-ott|9utK(xWmZ%T1 z-Li-43l9Nk%q-sN?YUNuv)6(!ZpcNOR5 zldSmFe4eq5yUG3l&pOwbWzg!$h&L$i8wo}Nwc-n8xk{EN3C&0|77JZS@)5aDs8kDo zDJABX3E3y{Z|S-ud(VnbN_Vd=JXsrGd&ynvx=^3;Vy3&nb*X;AE7ROtA6@xMeeD%@ zv+GKoT07$2f8iQ&chsq*q1G>|3v#!*L+j0T5qTDOM7?cOs=Lh{<=$EsHJ0Duj@gvA zsoCA>o>8A)7vtLQj;$}Qo8eyRPMEjK9qaCLCl%Q?)w++m=hc_i#k#v+KK#mpx&-%0 zcWV8bSJt@CxEJPLtxIzEx)*QiedUKgJ?vgtSmoMYnCf0#-&mJjqr0o>o9b592zS}0g>{b6-(&W9&!hH@ zo@;{LuKJd`)nj&y`sX@-d}8~&_KeywYS$;8Z_@vHtK32Lrn=Bk|Bw28O#VrJANBY3 ze!kAXe>dybvFki)ueZKY9M{N;z3!O0yiaP!C=Ne~HbRX^>h)8MDPn^0HREd{C~RWb z9bzK?g(&ZcxSz(UWIRbd|6UrEFNg;XGmW^1!zP7=i-okx7Gpa)-hs{K{oKb7IexOULXrAtQx@YVJwg~^ev*BpcS<@S z9rBYl3spKq#}290Pwo<$vF zApA5sVkyn{%L$>JI2_^9Oy3+aBy@fkLy8c?L__`ZPSJT-oRy;dq=)F5^@$^*e^1i= zk_az(7+I}^DY1T1vry&JvQ56KMEc27geD)N zV}abK2)`U^zZ@$cl`r^7sr|Hrij>>slfH6km~ht8A><~x(=X>7jg0eDfAe%d=~2Q- zle*G)zK~`QSxgwjUP>Fq9caV3BMfbZBn3AC2g0ENj<(fqMvFn6oXQs zR3o)X9e#PoM1ZtVS}1ymf3A=kr6#{z{(pPgDF&oV#eVWesw+Y?(I`)pOny0KG}`!$ zt}1a=ik6c6@@#~bFV0D_G|f-GfX40-itR%ukxoLX&E(+G4KE?Vt>-S|4qzMGBBwC4Y&(MYR+e{a!foQTmFjL~=p zm7n09tEP|5RneHMX3<=gE8>h7jjxI%qlD(ICygefNj!zwEA1vn`iTJm&akSGvP+ii ziiOTd*CuDAxwtaUe|ffIu`}AW*%@7RzC6R(SGI562G=%985M)hixqj!IM;S(T(zq* z#d+1az&Y2o$2oV&!pcSEffcKr3(5~U7gSAM-(4PF;c}W?hn(ij?Um;8sm=xK9WSq0 z@2HwpxyW*|qSk419ie1jzqow*b>$jfIOaP3!m+AVmA3L(e-&Gu#jX?1;;Q8JW##b| zJDh7==PLJaw5)3^+efuKUtZ&MdNJFa8(ilpt*9(5pMM=@hqK0Y!C6zauX0U!8r5F! zy5y{{N=NOTm$NY|&DrQ$Rk@)&qvEKu$u;6^smgZ?GAG8u3lW(R9;xoyVU6pUFxh_QQ1X*vm@?`&Cgn7!H?OKKKN<9?$i3&Kc#0?RBb%s zI^Z<9ES0A6DHWN{X|65KX>oHZ=Qsx{nw_Pt)07G;^UD(}x}7a<)!9O|*O%L=MaSH+ zmHS;4f83(XRh0){K2>?JI(z*>vO3#2^JS-VW@bg@T<7HqhjWf=mvc^Lc;$j}xniX= z#kJ3wvSi`U+=i#af=f(00j<-fMML1!UQPh?wYQIErw3;GyAVunLh!8~T zP-6>4(=bHSa75F|K6ghxVOL>%+xWIvi0J$bf6W&%?Z~EJz2})Rp18%`3GX1wj55;u z2H7Q%MO#<~w2PEH>w^@pm!YzM7uLu}o;1jN5?cLudJ;eJRir?1nhsurjZ0NpuUrycg1?@*;3JnsE9;6Az6jzl?P>V0 zb073W*h5DZCEgMFA~>MC*$-iZ$PjJxf7|JY!0&O-6TGS`^h1~-cz>AgCkv<58~2S- z+09;O_Ein;ZiM1$^O(NF_$*!X5cn+=SAG(%d>mc*Q1S2$ue?H6(IFf@EqfAeSR_p3 z1rt`6<8n>RAzN9Wdvl&oj!u0d279=4^s%(DyjvUfx6>~2qn@ZI3rWwXv;*~~e{$RO z82zYDy8=C(QvH}*)`N7~cj$@4?bp}%=(lK>G>R+wR7$onxvJObHQH&7Vu2n=X@O6P zmD)j#`h_+~SS$5dpE4PGhPFd%rMwfAm!XG`m(ptVc#Z7QIw&VeyW&%7sp3)OzDUZpXoMNrOu?cjI`^|(rVAoVJ>!l^ZDKHk>y)OK}0<@HjT zYM)wEElo>Px2m+_RgX|!u~zC+Dpqx>)E>2!c`aSb@F^Fjg{gM6kaFuOe>Y4^(2{&? zoUdL`DQc*t#1Cl^TGV(+^^`h8?N;e}s2ODQuqMVmq8^|lm~0KB+$739tM>Vn+@=hw zjS9^MY82saQxB?#eacp-6-u|dMxp($GD7(kYKuDVZCTl)?4ul-jnpc2i;sMZLf2C{ zOmc@>J>CYTLY<+|Z)G>-e=O#fj^*U5AqwpPl?KX5R82lu3zfwrUrRby)o3-rr%bOB zuOw2QjmoI%l<`(6N9c%DXlJ9O62gEgd`h*-R~6a`D>Io_jw?RiQ0kR>`J7DisuDuE z^-7y^WZV+@kj(egE>cdZ(xB||!OWC*%DXA=B-OT7Y4kx%R+8mff4PD34p5#=Df1~6 zBbUlF9_41{mHCR#7*upcmosGQ{qhFN)s-2_{PB`Q&N{Qq!GSjC{g=mU7o@19koVEl#+4JLy~9tSP~;0l_>s66#wK1AMGH%Qz%jV zllDs^KKd;*dr~x#$a~WH@w%lNsfOlHihnfgO44zk5-Vx;f8_B&@lRSQwfmIGkTS#$ z(TZ7Dre9mfONkmOUT{37_$MVvPM=a!#Y!ns@c(#A<3-9F_l~5~sx3o|2=>Va+`}0w zB?d&2=*1d_|1aSIX*>>V;y4}AWFz1I;PugQDa@ODtLxGKtvemOvbvk*!GGkAhwr@( zGvCXW4&d)Of8p8Xy$5eAr7zDYSzOXvk{P|IB)fRc)1@W-%hO8+7t}A`RFYR5S3I|5 zsAT2S`@ejKe=mqDDO<6yq^e}N#I^iT$;#s0CAFnu`R3yK<>||}mo${>D~>+nDA`&X zT+&<`R%x}>diT1iLg%#zO1xRS1?wv?P)e-TmA{nVD_Qy7mE<8fLMRdR+g z*q%{4eCq=aVF1e~-O&EcB@VV9wr?(3?Q1*RJ!Jc9?*h@2?IJ^4ZuHjXF!Zt|uUZ`z5oTxcn@f5LOaam(99Kc2a# z@C%&x1R_b^r1;drxeB)&M(aHoS%&KoYSUz9`62d+kCq}_Q%%#yVG6M_fFUCsqR~+&pE#{ zPX1KQn3fqylF2C+NInWDuG|zMnb8=Sh>)A_0nxKX0@Va0s>zvb8o{0a(8tOAm281tHu1c>xrp`rK-hgE`_zk@4xL}QQ zj8p5;!G|3)KbXW*n%y;P*j6#77B|YD-%cE|j9(OK47h+C2Wt-^jFEZB8=K9Iemz#T zh@>#u^32olw6)2|F}%r=p|SWR?@hv3XG+f&11e##Sh~oOa12lfoaRuL?IuRn?aVG*?$iXJ=2PQi9Z9@ABq?3eAIM*=@Wh+ShWg< zy8U+WaRfM#Y;#S^BBZJuIIA3xUl5g??G{5G=mYW*aiYLpcc|jQ} zz^0V3&SwC$5G@lcZ{rJH{;b(eOhh!W531IhjH-^OXQuw7N#6<6{Wj5H@@isTxfKyk zMkngQlMx(Fvu)FDL^bS_cL~mX$K)DG_#o!2&H`v3jt)>ej+bw!q98^fenYE(dHr^{ zlb{g$LJOMH+7_Ef-AOl#{#3zhv`r4zo&edHPJiv_i?Q{V2WG}uGicZ6dUq5)Jkh?g z8YO){7hL;M?b%{hx2TJ>Jc&HQbFvDI7;28ZSy!p{my@2g@RP%&$J;2Br3yKfd<4`5VyAj!_< zv>aXsMGj@IJF5!PJ=xUv)diIXB^SjE)e^6tAT4*>r|Y3R2#nqR0ZmhklB~>j$4!Salid!WuvAMNn>d~ew0>1mSkSg#>p_W zKE6C@Tf35VSY`C}pZnPQxOoRPvHPCerXaBs$%!EZuIOP^6V}`G_!a97)5;-= z_FaN;DOyVVuYZu#(!L$np=%t~p<{2T`*he3x?7-mfiL|p-+h?i5mS!^bZHXhl);xs zW6uOVQZ?aoRiA4cNZqGdI8dxSI2rA5D&c9vw0_sIo$m$xg;mUncQ|KkwG-F&ob#(! z7VL|1<6mHRcSQcINmPKK7=ZYT`5rH??-Z>Az9+4 z>oArkYuVe?@ErW6#2oD=;5Mi3GjoD{valcEnd4gcIVro(8db1~gNAjjIet zE5LM$rJhn~^l1^JMc$sG?hc`T@8_cX($jAk7fbxH2~~Eco$A|w9IU6^9LC#H*%{(H z+zhLAi(V9DIi-oCA)y2}_o3&qFg+dCfJ8<;ZdOg!fGE4_(P~haX+*Ds^wTPNW~fd?J(>;)`QTcodq{|G0oJ1{`=gH>!WmHs zok-~fj^kegK6CW%M)iYPWRr zVg`O9{zKnu*+H4L9{0Yh#aQ}GGDirH_gI@AW9L`2c$)O&yx<m8TJW+$MDB=$N0y;SO*Dg!m1*5F_&`eIO~b)bq&C* zLwpm7k5VP}+4h{T1ZEjyUk$98Ys%{r^e|&A!dWc<@JOPK=mgQavsd2c#lMx!mvBL2 zS3)S77!x4;(}sLVOvMYeCby05%WLi_+GE1$1L3_RRhynfn;obF72Tp>2j)xBLpxDgR` zbiY2aSc&$c*yKPMj!|Q`-Xt0@S(dyfR~8ll4(i$DEDR}UzZle%$I-qRhk+a)GM4Pe zWFHCgAo2z5?Twz0?U0GK3WJunEfZxCjf<_vzMD%;-zdb8AW||Y$Z=MDlkO(*~=G5hD}c5X4m+SFCn!UIoyA)Fkn?=AhH+-*?D=l6qh*a3heba9L;L?wf=) zACj`{-&;#*fL#$UB_F@#I7&KH$#~&j34cBUFRMbCGzC*O(n9SSk|7$ zwf=U4L9>c{CywSSMEm>d12E;+ni-4s8t)!z_4A6p?f^c0D9*H zU#2BHMXlUE(Kl{-deX6NSuevQ;kisfRkCz&O-2u>9m-ue=HwmbImv&R?))oqjhPv1 zk~``{&M8Oee9qOyyicWl5c^|iMwK}sfia|*uUOYgSUl(E#*goOXaVQa&qs*sh6ULf ztJr?ZTdI;eO3T4d;XRX?a63z7G;B38Ot9Sml}^C3(dwojt}8CESs-(L7kuT{4wTG> zA>Sv4t>AM>JqemK@MMzwz?}d{^rkDQJ?LziemuX#UR@!HpErZ`as1ucU5x|KVIcsj z@5{3M4jtl==sT}j0I6JS7O@l2^Xz8iZgagnMBXr(8~K_px$=-aD``g@`vv`a8tWi6 znqRs-$?Fn($LLD9x1+pO-RGS$UR-SV24?`~&sUpqZLOxH`~5#j;;;{JrtSSm)v%A~ z(W9^tG51DUfMvk6KlUW+S z=0FJ&M7vYA?ogt*^n4PW8p5^6;voO2Z1vfT6SC2;lY_#uw6hG(5g>8Z#6f>)Jl1GM;XRX@M_7hPFab1SzD zwmL^l#mg71E21v z>v97S!R*HG-a7NqYm&?a0s4eLs9MKo_^f@otZs9p?$m$4$Gx5D7 zEtR=MGaOhjd+dM_UDJqx1<_aiFp+H)JjP*iLkDTa?W^^$DSk-H6WkTA-IT*~h9w&Dtb9nW7Q8_eY|_(;FC5N-aj z|HgB;A^NyXY#39S)8^U13gP*70O#K;X?yyz}yZ9y|@Fv5!_=P$Z)fR{wTfmXz8JO zp&e{fki|cWS>anzJ?TZlY#^q$K}-NdUsNb&bVsjP5Ap=#r`vlRzz$QA-%jF?C{ z)FyqY8u-I-G_?WiTaanS)E4#n++NWwPVYc&_3_|)Vwg#eTgT2{dU;6~K4(jAb!Npq z*tU2&LMTC`a+MFC{tuXZ`a|^Rg|#f=QpcRdt)Msdnn=%7oluzdIEK!8qe*}#@D26) zH`>TPr#frSA1X{KF6<`kNwRm{LKo=}O9=)7KTqN4bI(^Y)<-tyr)bjP=H@Pj_pDgY zqMiQ^aFhrg*c7GU@6;UP{+4Hfw3xZun8qW_rh=8o8-2fg2oLNJ{Sy~q}G`IW#5yY&v^0Lf{~sc)kTV=K(Z zclWz4FR?4kPH40`%p3m;ZG(PpBLjdbK9}PsG$P=Tr6%UfNzEte!=h@n&Lb3OP zwONwRrq`udTS@1 zf9msfX9ALK8**gcDJ}_xQ;CR@xRR6-Mp2z{#7twtSENPx1Ogo}dzGDU7(QXcj;;({ z<7QQ-qJziSlxH$4fnQfJJ0}p|Eaehmuo%vzBlzNv5ISI=#emr>>5I4bwKkJCS#Jon zShXKX2ojH06sKX~;A6)Q0{&j~Z+HbMwfMW^3H=~qA0d{1BHXKEnbf*xklnsJrIa$U z`D&a1dHXsE$S-|`CccM8Gko4Q4nIH$KWO`v3Z*6vdEw_`kr zK#nI({!umaAOKepkbSTp#vm?MSbLwxyN|#7KY%#Yc;qy(lum=cqi+ovD&SyUz9PmZ zAGEz8vOcyIx~m5vXZhle5t2z$eD&S+s%69FR-@mU==tdYVaUcuG+l8W#Pr^?trbGJ zv?SqCo%A6}B=qk<^x^iI{#EUP;7UW{D9^LE+Ufss3l@ku_TM4*yeCimXb`X({HGQD z<}74S#HzhQeS1B)c|NPHBVfOWNb|~b55sUwbTqtaN`}vA%!1Gpxix8rrU6MY;m9kzSa+ zkWEpSr`rHOIP#aef`|idfM8Eg^v7c=OxW~DkcqTIaiMxQMVaTWBQ(Y@~3jy5rJz%F!;{6t8>!5(O`c0SBS8nEpjqmr;yRouF0igq1Zqj)Zre8rhpEqIk5$`D6c-SU(ny%lU@&dkJ?^Vjdi!Ws;Pfa6mb5hVvKkHCar+b6%sJfQ&yWf zP+d*lw)?&})4Gw`WwT-IVrXqL6Djo##!o2P%>Tk*9ViCCdwjapaK~|W8JBYkwLm_q zpEn^=h(G1|CEr;D8V8u5hgm|qiZTz=RK0FM${zmEw0;h!O*F3KLO)-$_XT(GC7kR+ zq+*uOFvg8c-E|`21>tdsE5d^MMmfB)|H{`4|IS)F$vwa-OU~tY3V4;Ws^C`jh3;Tg z{kg5IQZ!Tp=fw50S;se{qg>Ok7r-(9v#>bK{%2twQoT%=yudt_lWFSv#5U~ElfIJv z3mK#TGfA!N(Ft3`_mH_FKiCNzaiH61J8akv3&KC7=ha6jk(%C zSH*VrzR?f&i`={ySwb0l83w+_`XDm1!QQ;WXu&LRbY%tw3olyG5kGfy>#w$a;sc9e zs9;vdoody0F{pRGXWEp>z z@Bx)UZcZGJY<@o^KgMr|n1bC!gj7qzH0k{qA3B8VyiZ5Xz7hU4dYWM1-?Xgd!)sgEAR9fr0 znbBfM?5j@#csdUsWLoQV&CAV7S_AP1Db{_JF-B|X4g@CxjDem5+pUaBeo2jY>WPOn zzx*V9Q>_@UhuzQOoFgn>yYFq}BGk?r9??eEI=U4e)F&%xxB!ZLw!d{(8>TMAa$EW* zKTxLjO}c9`NWa zk@Wt;mBRWV4MvddBBJeu$9I#-MJfs+l9iw>vZ_E5pmsSo*f&TQxNBEe$q=U$qxADV zf);D86l)eX+dftVW(19L2^e+#gmCP1NEI-9)@Q{5?Ps0923Ix` zKZz?44L2Lqe52c$M@+(o< zr^Gxwxrpm#aO6*~S{aGQakFvmhaKREXiPx50gdHL6~VnU2MXBzJI$m{_JfhYyr0xn z{CZu=c|PJ}k7JaI%TaXJX-IbI!Q9_)KlbnAG4+j{0?bp_#-DJ75i9vUQHB2fVxux# ziiTu0nq9cBl0M^Nf<&!uJaRVbKLA92Cbl1}S_sSX;=c^0fv*J{DSe1mf0c_x*24e- z_=6pe_7Yawifd9-^IJhNfPcoJbj4kfHtzktv`6k~;MBGJ1qF|XL_226U7&nd(o`#! z$h$-{o$DsyxYi`i72ZkTJ_NEA%-qSLaQFFuOy@i1!}t4YJ5$?+U2BA8Ce-J4S6lYA z%A!f#UN{d8F&!!#S_l|~epW2LPfS1)o5dM_f?-DBcQv!?FbZxU$eV6>U`=fl2vNLdhC`+?RT`Y2yi-bX<*hBpTpZ=7KmtZ+1&S^ zfi%FMn~Tx^iR#F&x9^ICz?(`R=UN$&*|X>D3!d!-OoZN$Ji1@*j~*D;-T?-*-imtT z4ez4qKo(e6>>7_42VWoYyg;oQ0 zJ{>uUH!=}qNH4R5rv%XnfhKl+#P8jmn#}55Db;k7pT1qjy}&%K7DWZZwH)4m6#kCP4HbS z<)jghBtqBeMe1*A-I@%(=VG%6zVGj%ycD5CZq_ktXmZkxQDu~>%*zmllp&bNR&y@G zjUzZAUyVdJ)G&(MxhEYdW^ic9t_()L6QL(cp+3lfGYNKq)nz(3!JX}pYNzC~h3gTH z@q%wg@Td&Iklw(^Kmg>TPmonB6qpa-seJAPpwtIXS%iUZAKPG|SVuL;$s3>NZSDg* zTVi~IT28YIrNw0qxwAt8qT=ovc7$*r?`CZ%bY+Y~3}+29F{uyv7#4gEz8#D~+y*-o z(BBY33^$i2JNC{{CzU0akHui$_?;*MuW4Kz@3*u69pC-VDu7@=ibpCB<)Uk{9p=qZ z1jit5G7uS2K7PHpW!9#F4bc{x*{L6fFSmk$;nDdktQ!11S6WCH!)Dn#j~-$aU(Ugg z0tVSFE_ZCv>n?nsa94V6y6zz2AtKwmM)0?Y=h?Ci{xuR&hO;s=am`pS;kgE=_LTt! zjVth@a-;-jUx8Bx%M0)5`j+?#>$-J}f%+WuMc6z?a+XgFT@yrM2#`6d+<)nGCUG=s z1zL5(41lIumQRhd2n(~x?qheAi6hGqR}NwhF0OYbt_n9QXUZSEar}!I{RJ*|W>Q*} zI*CyU73#ik) zVW%NaE*jYU_AH!*@t&3wP|8>PD2SZf3ldz@8T#F+DDH@3c?+s~T&zT)fWd_f40aTZ z$7xcOmz*#HXn}u-b0m3Gx@!Q+0HLKBtD^A9>8?VR|%l z0V^3mgUkfm*%d0tAvA5`(#E+V8dvO`%7xw|sk8E3QWqoG&(J2dBpz4Hp)Cs|B5w{n zt}-9bJ9sYZ7h?M79PZ}C;xx%7b~?&vA!+d#A?tg^E3t6x9lG5IuZ293j#KqDwSDDBcKTgF z_^mYVD($Fc2Rm>qR-9xN)0a=3qg|1LFbdIVcx_!u*o0P`-)lo9GU+}u-GZ$pltzXn zDFE?Mow5}tdH%vyPlYXiBL63EC%vgJ$G~u)VE7GVe^RB{L7fchlOSfj;$(W@je9om z%kH1F4O{k?LP)C=^j_5av=B~u6t4!jj(yw#PiTPbzY~P6rM!4+KI%D{MCxm`ivr=Okx zih>G#ZS z$u6@`5EaEUZjTVU-Ei}k9ipDU6E?q#_mjT`jH4ZK#3gHl7{Us&`}#839gGb*$RxDw z8sd6{{3ETUP<2ciCYyRGW1Vsb&I;O-T0!76)>(4MzNTfn3(4MyK=zNJ`f5^~mv!#i zhSUSs2b6MSg$mLo`C8;#f0}=&a`Alxb+_KsxxSuNX1+b^zm`#r`trr68+1BFSm^VG zm&(Ozg4>N+_n%v>@G`NiWmW4n9~~ZTl1%T_j-E-gRYhg@ZEEei*zFU5ln_Dj^KgX< zjua2n6!MVX9Yq`S%;gt?bU=2(=%8t?f@L)3r|#j%IC5*qJ*VBGwWMAjgv1@CZ*-O4 z`Ve-K8BUtHX@wHQQb08d**9Moybf1LCjd7j+=;j-xXj?^vI8xyNjH@5`r;Yh5Qv+- z(#cv-Ht*~(--20&hn4_HFA%uibtfZ>u@$MqVp6$aaycT)Q4c;Fai|!d^BoXD>8k`6 z@rN!a#bZ54pw|!p#U#|CXArxxvX_B23juTDn9er9#s?^lZY zfk_dtp~v#8WHs~iIYjG26E3Lc6!=ac0m!ZEub#@5kNan%&)kec{>K$+D* zm5I6^1>v~gL75847OG`dVuY3GSK}UDKU@_>1z|%or@WB8i0h)syUb#5nDc( zzz&IbHX-@obtlZ=5px>#qhjSK-zOUo53CgWm8PQ8DIAYr5R2wu>12YnMrb zMEJHjAJ0sRS9nb^o_TfCPol0C9v z4)9G$v6L@Fth|#rr)xiJR``*K&F`+gGeTPS3dk3fhX7VeKZdlsK7In_5nDaQH66D9 zq~-p|gV&BZ?e0ON@FIO5G)TP2Anbc5NsIYG^SgBm1Nb^}m!@g?Y&@DcRE1FZY|`?R z%h9%}vKp$=_g4_1KFJW*$k*4su4KvME6B>Dh?Omps`r{>_UYNrmjZ9B^ih_D$B3a( zr55&j?;*hcqM>X59D_`F=E>=fQ<>(P$WxeWUpK`!&Ud_1#kH!Iv_%sFm4DU0AIZKHPs#9z z1M8g_Sc9-2&hJ5|gCzjB^-+ z0+@S9&05k^k6r4ud1b{$`fOW7kTwVTe!tSC+RH@R`Qr4r*anOJnfwX_;l9wEbfgg^ z9G`)_7r+F|^u=&z$p?^kzA6w%@&~q~d_UiIpt~hSX^VKQ_4h+-roSmhFN8rSq<*u# z;I2aTuovA7LCI#Rx1rA&K_vb9iQeoY^o8T0U9pb zEMnd})t#QnbE*z_j6_H}sxizyfz=AP)qHyAxTGP|FW;X;xmbyZODQ}Ei2n6$(1e1J zwFrpx#Y8~8(8y+*L~58weL3LoIIxAgd?f%St3rE*y(hS0_qVzw@*o_!#E@Pw>XeOl zMjymjt7((btEh|4&tgsba*!keJj(OKtOOohE(hessQWW_@|ogWodSGK?J!G+R>GFa z@DyK83BZ({#P97zd$6rkE7T=fI8;KhEq?6KJ4eW0@h%UxVsIvjW>|aHPUY8U&p-@O zzUdgF4@(8gW7>Y_sXx7lAI%OSKam$l!$au|`9*tEjUBOvH~^{j83D z#(o{Eg%?IzgvYQT;)M7}nNP0{4o|l%|3)Q% z{Zc#CMuvWGlZ4YF(sp_9^&EThky6;Qd^~t^EPEo*;+(8NolO5obYks1>#we(7}vax z>D)N3(|p%gjAnPEPPJA9z-d`S+D>kp*_Hi_3uSzRMV#6MVKAYi-Blbis!gcIJhy!g zXCzpYcNX0-%me-Cl(ne^NA_UvuiH536zSr}g7LF^1`Px0`_5r9X$j)+27X3-O*<1l z1?>bYeELkcC8-^C(d!2KX~Hy7Ia!~gaXWJ8nyy}c)T|L_AL9<5s)5VLlOD*ckI{Bom$Aq=nTui{- z4XF*M|KsD~7D8PcfNvY0TtlySW`B>^qZjtwL{hE10cohAUwwE3PZ-|n4ZcdP%oVyBJeePG~-)BodHaO5fOOi?yJ## zA~%6OQL2vsyPXx|ovv=i%EC?aM?o`ofYKdvf&9q!ERq8FS9fb_`B@I* z*6S#a%w&?UFbht3n9MuuEGnVkf1OYLzfaa)2G2trkk+F0I#86)CemU%aK){yAC#TU z8csJyxGQE_Yl`emc=-D=WYs0L^mV9W5q5=zY4e{uZ|p9bbCzw zQ@}Dl^4kh&*a1{~=D_YOze>l{DhpTXtfW_~usu?$D|*Rz2Tq^=T= z-s`}TQum&i4hmnX?`Xp*i_~*cRW=MCeGUHLbQs0hpozjZhmJPRre_hGB&b9L^!F5Q zaXm76<*ZXP)}5jdXbrXG#VHD=Yv{YdjH?OYZvIMQtGd$mEZoumu7+g9+gW=I;BS)p zguD#OcyTf2A6(N`juR@j>AI5Oje8BXn~Hz050HzhiL5VEUPo05J^tuxG#4_PY`Ls` z4)*LQS?JvVPMO4H%HLoZjdN{%_yv^ZFD8gkC;{q$2HxioZpNby%r2SU(@fzWvVfrc zwcj{(*>d+u~Ayf`6nl9?^&9)eTDv8IH%gZk$~pP zJoUG~7?KG{nBee3O)7&paA{@vomPK)HEc7i@>iG+zXvHX8P-7>Y^1~rzbU3b>~Wq# zid)bZd7VJ!PC*-NaVe7iy++IZTVWq(9tDmP4&Y zK6+x3#{5b=%w(FNd{2t25{35OwAh8uQ-#qn?l1lsb5ojw`@acu09m#TsFPO49!m^$X&zA zGQwxO&r81jKHKG=Y!Ka#n7z=n*I)ZuOV6ir%vCsLV;co)4jl>vKH4f5B1`N7so9oS z=zpCL9JB5u_p8qwfrJjMDaz~*A)QA$#ucnV#(j! z-YSR(jiza|d>`ZbQCW6nze}D!L&^d%5M7CNBn5#ZOhu=fwA-EcJnut%w}NAzH58nK zMW4D>h7htu1G`o(@GSW>(&iK|*?8+h4CS+Xs2us?S}E19*m(OEdS;z@?y4AgJo%Rq zh{MJt*Vh;Xfi|<&Ka*+uiq1?lUPNLfCC-xT^g2Ia3V+|NX}2a+Y>m0$cl0{!`Nul| z;_>HsjO%#J>){N74ADEiYO&mcit9HFCjUT=Ky0gI#a5aIJ_AZ@>qx~`P*l&*`w)+f zN0DXkcQ38D>Ps8CZ5R)ZU42xJbLy9B8>8PhopOdA0CWM8owZss^}b2*uJfct=R>a$ z{`({83(@F?^>G6#d-YfRN7QIsr14MDe#)N__cf2+kUV*HQN?zJ2m{w33&HD{&LuM3 zXDQqwYU&4!lYyPKo0G7Nk29}IyQ)9fzb<=$_RIo>J9h6(g2ho}_%w*Nl+X)!Dqcc8s0McbreHJC`7^S)zI#a{koY5+?7~ z=??UosU?aN>TLGXA4z;LcJRI(eQ;tTV_`A}41UFE$5)&Mnqc@64_YzV6y4K*MN!;7 z23VCGUBpy5!|>bHro>T>l{N?BMJ)vgdl&L8rj%=yUATI)0W#so!2=dr+?{5u@AXWr znK_kY{R*4N`1_Yy_*SewT)I&vNDX2GevC1C)~(I68?XA@mOE+3lI_I@h8S-cR(@-P zUAaPOIXuR)SK|^B=f$jkLz~coZWG3NARa;(CmOv}_y_g(Qb~pctV{2!nCtNJ1Z#L1 z=Cm=PfkqmV+r=&0Yu8sdCqR+>0`t*VAdT^+sA<5^DVewV!>`~*0Q`!|<>?mH!p0!T zYgUpRNK!g^?-fxwGoO*nK0Y&>h8vYaT>clU50ouU<$jRpf6JWy6unvc2-I!w zj@3-tP>z86`!PgJMepfBt!mi$PZP>pnFEf>wBztNNJ*;Q^9vzXum&M!LJ%l#p8Dr}ut=QzHj&cs+BfHyROo>4RuQ23^! zD57%Z#sZ*h99M&yb^LWJ2M!I55d2^eCm>7s5jV@`?cSq|n5fV{hyNrQbW_42n)qFk zHstOOr0*7}9*ulblt<&fsfE_?|4KNzg;LbWod)%UyZm~W-tKggti2azHu3u5a4Uk` zwg>w28tp1PX^*tNBEsNgxVvnjo>Cv2wAEtH{jZR!YvC!eqs=Z3KC?~E>5|*9^W|xU=*%xV+oycPEtIIa zr5^FddL8?wfz4<16O`q+IZeqN!-+)m^6sO*mqe^L2b_d&C!97E6f3#)8TP^y>vTDj zy#c^7=xOcZ^w7|?IXs=dViMXEi0Dr2VgD3Fe8jcQW1C<9na(|*QMsnu<{RxmM#Mm> zAhf1uQIHR&>)7U%K;qiyTS!}I{SQVr7j|%c23G1Fk>m@pNBM3QTZrzlkuZ(!hzK=Z zlEPfBqtOv$3lI@$l{cP{^PNmd-degb#|IS9MSUtqSZ@D3Ex#tbf9<9DeNogDvfH>J z&F%id#}5wm@)ZNI<8(J~hq=1V|no?kStU-Z_qV%WZ3^XgP?~O8shud&0fI zV5O(j>Kn4XnOn=%R-5W<3{{B=mN)G$QJh{16rKRXm3fs*k1aO`hf$=Sj5RItt0uS54D zg>!$F^83^V{%%|B3CeCWBmjGYn33${9=V!Aem}Dp)QEI+kL+51bnj?b4n)wIU8gOC z$*WuM_!x?SK%p+4&X+qPYra?Uv6syoJ4Q}NFC6AgfsUMB0pNx ztJ=CG>8AZM%J!J%PpNHLL{bvmZ0M%BP%>ZgqjN$-kRH@DSmw7jw%!n7BUQ$5N2~F| zU^LUqry6nIB4s373rua4b-|Z>!cP{+mPtry+$}V$DcLQl9M`s2jh|LV=k!1*+N1{& z=k}M9&f#fWP)BDvj}^;Jybzw2)PyGlaYRV_^wdH-Rw}GC{9SE09d3?zQK1Ud9MYJokQpD--^`D~M!aN1i^oO%$oDl@{ znKBBX8opZ>vKZYdKBIPGyr*hJ@IhHcYDc1YuO7~tA+WA#N;HaK8z^WhUB$RaW(Qvn zFHES)LVSAj4)6|K2ng)LHvRhf@PKn2t_m*=ab585_bt~-GD8e8qzZ%u@G(Q8D&s9* zN{*cOL||p$O4k}h?852CQ25aL=Zid3g}}dCjAp;3>$=FQJ}kOkHU7nw9_#vIYEVV9 zNPfaA%L9c)41_nG((1x-qHlcHS~IIfR}1%Va5OQD3ILHmz+iZ^DA*XWA<(-M);w-N z1)cmoGkgz)ZcSO)9Nng273U(Fo!%GsA@fZ>Q_e<&=S9;N1#%8TJCu5kMX_mwlXvd$ z-iZmjb-$tS5y3Q_f6cj3MyUU1RzC5W+34-KJ8|k_uw^A)B=N!VL0Cm|cyEHZ zf#3o7x4`F;ga`0;f&O=L=pLOT#Dz8I-lF24m(SmVj!fch_sn%=r$5>kWwy+7zuL!N zQUv#pMDU8`4c<2+_s6MlQB*G8$Kh<>6_8YF*tBlA@?<)+J`r2T=UO}yE*6nQ<{?C! zXa@Qx-B3>P+DhQgLB%y9uij9B@K}Zlwe5#a_4rp}wFuxxN-2T3iyQd!rdQY&vDQV{ z*x$Eb%ViS#FDExXZe0_`HQMEGeRHozjkaHA6OXpu6uc~aM|hb(^}K;C5LGJPD34Q- zs3yve>_TT(RH8OBW9p8}NVc|Kp9F<83~3BM~f5 zs~C41|7clKGs)49R5vlouWK&k7wn8!-|M|+K9 ztL_f${2S?zac9CN=GD403y;*60nw8$pwH|BwtIEgAg_mYILE|>L4(cm8$R!qR?+pZ zm0Wn}yFn?z%fX=FD`{M*8mTZTW+_|gROuBdZ>bRJgiR{}hEFvcRrJtpTM_Mm6#W{P#{bgFI2F=wcZL=U}2-@;!qKrkc>aa?m)nP0-umHshpcDdEyegkha!oo$^tgEA8<6W;{S z1lxpkgKUFf16SM*c&-iX=+69pKBxdB$Bf5U`fc>uFAYImeXQj`yw>(UF|A)QNyj%K zpwZQ#62C&ZZOAf9+o(S3%#0xG^h^`;aCf!X=h=FE} zi)M|6ri~w<@nsQR%eR(mmX>>L4tM=52Qroe{rh%%Igqm4V_-Nm>F}_EiN=VXW{sL= zO_V0xgw>wjcp(RRdCVt3Bg#nAMn%)cL-XP(_xKPFy$y#3ghNB2u6N-NOKo4}g#Nw8 zO(V)elg??dCxmE{BuM!X*|xCnK9Jqw2xLlfMKt|=& zYBZ%`CVBJ!c8aa_DJ1E)kXmd!I;ybza`_Jvy% zgr}#(unj3xDyl~vr)97W)9gJnin7zRwd%Jr9$HRYf~JlSxf`thX{>qt%U9@Uw&4pN z*^rqPgLnn?sLYIvj86=rz-3;ztDK7QvnmL5)foUmq_+vH)&$SGPspm&yN|JWnR7Js6K;oi(Ohfy4VU_?QNXX zyGFKO(Acmif)$p~Rn-r}OG;Twf} zr;QKdxW?pkK-=`QiHQAGIA>G*;Rcr%kexQOaZlM~GDGrkGh3|mdI=q2MdMlfezl70 z&2?L*@pu1Qs`i(Y;6(!bs5X+75}UsDU)n`8W{!RT#nf8>#qoUM+5v*QyL)hVcXxMp zcirGFi@Uo9cSz91-7UBV0tC0azyDWX-CIv@_4M|c>8;(Ft?JXK-?O9bWpO>)Udv%F zU_n~VVNp2zP(#!7-UM~NwRX}3kT`!^!);<&hHh%K*sVge*d0x*i8CLwpj{eiA~mO7 zrf#ayRd0JBHmOy3PbSsQeAWwAYatkU$r}Z-4OYz^CGk?`)NPW(f#WhaPg>7`hM~L zVIMC7BCQ*JmUuU_?-f~KQN?_p4=(PWCq2Qf9{-R8q~z?YJSZ%20&+}hCf@Kr6uE{9 z|IDiKJm0-T+qVPa0JS+6yL-FU$FDxmam&*mLLV4jai0u;>h9^!gaO0tz1{0Z&4It9 zx1`!W&q*(}%iA9oA2R0vl21%PqyO~oHL0r0Q{ijWQtk)tN9H-xr^6@Vz0Ie=XO;h| z$W@{0^|Qzm?XvQ~gi6h0OTJ^h@EhPV$R`VHWaY7XXFL0>Mq^V$XcBU=xs3WGPYjqR zmGb?NO3z(6g*qm>Dq0=`9W9wEMUu*9oQ#5k!W|u0`#t*ljAICZcG&+IQ1}?ofAV_Z zEVQ|;5meKCzV!S)Q+<_fA1^_gCrU`2C!TQQ3WMDJm#gBJTJ{xrZ5Mvg0 z|JY>~RPfKOEZE@TH{CD6gM+$XKSD;DzP`nmHzB=+9yLL}#j03PKhbLc0&ikm`I+NN zcwuVv1XVZ!^Ou$zFgW@bS2$@p{3q^@^5|dOYs$lBGM9{yYuG*T5kgIwb8E1#2(Ylf zMa^8{P_W5~LMWvO0`bS9TX{)nqyIf2DC6L}5-8*1-*Dy8v+oh|8d(17a7zS5UhfA` z2+WK@Q_u!~kCSqKgUgKVePU}sd%nRmWJ1{I-y%aepxI)K1st4oDy0pxxJA(=^tdI_ z#l7Bqr%Q^u0e@#>e>;5%RQBv{kb>*QH0RkiXpNWJGfH|^_>KQ9N%!ni=S$PZ3iJ0V zW4wDx=TpF(GV<5rm9<y=ECD7(-YBvdRAK1-=Ze! zZ)@JdqxQqYz#3p$psS1IJ{}4IK*(he)Vh~Xv(0QGAPV@NNZpe!{_w)TekNd9h`0=U zE^!akuMpN|Sf;g4(61EMDy&wrk9#o;D(=@5SaxpH`J)57Y<8c{U!h#3VL7>*g8V7l z{))JM>2y!KZb!6UNzS|;zYmwfmKxvnO2DT%X` z%4qWipf?5AoOWYLz6fI9A&c|PWZZ*l{+?uaxVl%#d0e=tdtJdMtY{H{Ffi)!*We9h zV2t#y%p3e?h{yrU6T=54U~KaV_9F%`A3Zkj>p*bA$=Q!@XV|jndtB+pSQB@V(%srK zYINf4F5)xb>C^MNJ#@wP7#=VogtV?&Fgf9ciU5!Q%f{t&J3g0 z0b!$2>Y&SvPPDl*4UgXsrwMndIe#74QVhgT-i&5(>I!>OpAZ_(lqVtUm-Le)A?FtQ zmL%RQ$ea{LsWOp@mR1=flOQM~cs_wRTuSa2#OirRi*@&J*GeJ09YIo!^TzYm0 zAl{$7}zky&+zzTJFd7}za&ExxlNNPBFDZ{}ZE;k;_u zo@+_VVOhVba;5fO)x=4a@V8!@no~H8eanU-iFNG;0`f9yof-1xgjz?}Ab-F(*!}CIk8;(vm4I=Wj?%#pSP77I*N3M%wY!|!gd!^ ziOdnl1Qx+|AHw>ZQ#^+lXGsSCrdA{unImjTAw3P_1EKyK5j=!_F@v~;dT)Yz4uQ}O zefufOC=qOmrcEZoipKyX#S7IMM@1URIfRWgGrENuYJzwUL0`*y`zZ@>jGQ*bY9G#E zCD>H&ePs6@ongi4G2_9D>idBkKi0p7OY>Wl2oBSY4kbd47ei){ffr`%r)A!EOj88q z(Q#Jn$^*}=NDem|#j$l>LgNuWURdkj0Z$~ok%+DkQ^O;jc*bMpomkd;2!;?YzwHf? zTik>iqIle(oWFOtayUlalYs{d(^#ONq<}QBE{Vx7>A(Vd^3)q_C;>|CF4unIHcYi z!effRGo1T_2r#t!+oCt3!xVbwm%tB<>wP2Lh{wMqfhB#7CXFji`~aL4+ro!m`b=%% zUi`*mL;ip4afO#-_|dsfsq()To?+!f5_)OpV{@Mo@xwZ<_<547l^~u%{?Njmm-_8t zq=*~l)E&+YVREY8jpgX0(^dOh!Kc0l$Geko3;D<5_N8;A(G|B3;ib1vr+{ga0{lZa z>=x9IS)qNBkoPOMM_vGtt4cTRUQxh?5OS2bfVjYKS6dfb79#jRsDGjw!4uV}J=;^= zQ#>NXe7OAY2ZufCW;upTJfM2_o-OLfaf#bHK^B&Y$=jMjeFzWcPAx|-UJntuDLoEn^(Hv2~YTIZU~^IDjiVtYUtK`BkuxP5m{wRJ7u zxlo&EzShaIl$V~7*6Om7m%_HxPhBK3b2Lm=Vj2r;#Sz0SR75j2#)zZ8^mXyeP24ME zk!x56rVf{))rb#2ch*Q@4_t{74qP#mNAP(OcL%$8QE~S$3=?ZznVg5~JBfYvgayN8 zZm0^DGf-@o#PR_}i)WVkdX?vf{DsVi4c;PNJlzJ{f3BE)3c<HSc zf9{C>ApNn1I{bq)+DZg%EcoYG;I&OZD(mj%)MLuCG21TXU7vM-l1;x))^*s_W90LW zRX-}*E-mYBrCEiFWrfNlV?m;xpiql1MvE_u^^K+VP5cyKpMGjTJ8Oi4BhJPQXLf?I zAVE(sT~AP;#TUi;CU0uLD{I7qBkly;2R=PXPf(=A7sC1`bZS2$YXp%a4%ZBaWrEQ- zUayyz!wTMdB4sMAJd0j|LnFhif^kw&FEP7Wki!bvdLnizO@&QEcv?{}Ci@oOdSYTK zO)HDO7Qn8dZBbD-qo@~_-Auz_#biCPF_q?(MSsDru>$UxReWaTu!6FlILV?XWY^#} zuW+1FTo2D~rsuHYu%0-cN@L2RH!-bn99LYA&2Hx6up+dcXrD^^lSRMDq2X;>aS2jf zkI8Q4;5dq#N;Ar$?_t;Qwy3zAAzBaPYo_%8Sh5_0GP5WHIAk8o5-%r-)|2>}MOs$B z9M^|T8H8nZz;L)Ao9z%x^m4`fIq=@Cz#Z2ErwmH7I;1&7`ljAEBcJUU?-qHFD{rP$ zFtZA2*hQ4ggZ(4cZQ1YUu#StXhlTh|yWb>(zjc6E4wbufNYZQ$d2R)s!`|dR7y;>k zfk}}=lW)?`>FSB{s&e0?ur;N$qYcgso3pA88J(lI$H1aidmNo9xpq9|M z#QW+-Yju`5?{oYm`s#PI?w0ZI6JC_xi-OffYE71}&r$DjM~g_o_s(Ez76gYG_f(8u z6B*7(iY^YrK8G%{gPBkuO0KDgW5gc-eP8tU4fSPIm@8i5U=uHT;o$ zBEwdl7^}Z+I-v)C=6B+v?(6tM&e|5g>)XjhdFtnj*(|JkD(CCqE_rOLY~5ekT;V(- z`c(F;3Y`XHZ{YKz@rz$_{1LglBYk*AeGOlinO*jX2@*sh7$V}#;Ik$2nDadb6v0o4 zVP=QXu)+2X5^-kp*&=w%X&x8Z0bQc~cI)Yee8yq?A0c8~AisnkgL5BB&PM2p-wXal zZ^jk-KG!$gLnvSMA{#8(X-Jca&a5+$9zN;iPCPuvD9kXtpeT&JZ_8a6W&IH9g`(g1PSj2yd({Tu9fV2#UQIu9g(O7(FS=xhkBL)A>6C*S({E zw7sWvl+$a2)%2*azxozq^~}roS~T$9H4p~&{OLY2-X9S96_oX-;>KtMCudd**(~YV zU-O&`%I;6ceIL%xBrkZn`*t%jd(O``(s)keHhg`K(=*l9c2`Nv}VsB$^nNVcfDQQ!FKjip z?&U3eTwrxrQ0_X*{$6h*(P_i;uW+m7GoR~j+tFCd%(LvFc&}$2u!CUdCRE~wGew>> zkkfEiy(Ox%M$wVd7DV2Wdc8sK16UPY8$09b2kc>rZ zkl>HSa2CgqLg)aEekA*lM^M0!xnP!>kI(wbDwm%^jCb&UlQpImD<=n}l(8q%%Bf|8 zqOde0Kmk}OD!J{#VN-aQ-n54}HF|Av@8l-#+3&Kkng%+lM! z^1;;d!QAq}+Va85^1;Ru#nKYR+7iXe62-qsr$0&7o->jQxeU5!YpHnIl zmTu>5j9d#??Cr%_slfLWs#Ec}Ir%|8J(z2%kptiv!{NMhj;Obr*(MQ~b9|M$6u-N? zT7%Noa9k!_Q4d@uUD1f=!sAxW<09f#uj3-%*68IzX;+`(f^S#b;=*p%xa5NJR(<0_ z^k#FoHe1;ls|)(B_lnl?fF3)UF{Bndt^La_c6J3YC>J}=J!luZ*gmKiyWBp+7rW~H z%P)5Q;TLr5Cdx0V*zLqY>eyZ7K`X&9n>~aPHyp!qUFI*VbOjQf%4|kx&Z>r)UwG)- z6<`O{0yB|1=td`zeCTErB6_ecjzR;lu8%N9*-XgI&e*%-qwfQAqA3&kC<0%qgulJL zbP6*AAYaOa=^cag3vtv7mu(^zPX6(Qyz~mQwDuRVMEeG*nP4UMm$AeY_1Cc=mNuR; z3@+>3YoRZ!{^J4`HC|j$Ad|mG$}aKTD*?4XD*%{h|CoXl%2s{;5d+Jv&wD7KcDI#} zdp1cNbPiri$aK&M;iMgrN;#EDXpisih-F6rbmHmxS>y#kOv}U0`0TIJ3KXT(#HG|R z^C?rda%QcT)~%LSj%DoJ?yTS3*}mPfe!FEOL0~08U?YiT#fYsQvBx*_iqMyP+7hkP z3u&59X`0Vzn$NhIE2tl!+zhg5zhrh?++M2)_`&sPE^syNy_M10b}F#A{5QhVwWzU2){f{-9!4yV&R=FeFT;|O0GvJ9gl3fq`cI=7#ZTy z8naX@gqAB@EbQ5Ib>pW)^~pDed=Hor0`Gqcz6eI#c;9)4*xzQj!e+hVdL-z)V!1+w z+kV8^^FlZU;4Q14h&=rL1Pb|5b^~QR1vZD6+oQG}Q3HJARc`PKkJ*HWECLh9o(M?} z?mp|M1*5S%Zk|vd3kvUe7R6ezoqok$kgVoAO*VZCxcH){Rc}vbzB&33lC>t*1PCKj zy4-BK7B#;NXu2Z{x(r=|PA2N%^@g{Me_fOz*;t)lB~*V;cvC9+F%U5Tjdk~V`H3G3 zYyaO~J<&cTHCk$K=< z;9U^uU2upC^fm5__H8iG1^dqlU~!(dxA59v`W3pLtJmbzVDeR}-^+A9SSUzebfFNe zvg87Fjr$~g@Gib9y~A?r1pcGxpZ;e@F6XlM9=NN$!}2$1<~5?gGJJHq;QUJ~tk&W)}*wYhNNfsFj|L1QdnWg9nL~*ua&{?$fj3lQ!cL}hOl7J6) z9>h}zyhBe2B%B9DL`(OB&CMmj(zk>Of@irts1Aqfl9VD~d%hANDJ4M{#ym)+4p>M* z&_&Rc1(4+QU;>n67gFYQ&EVWANQ&@KygYN2Wagsxy>XNPcPR*-g-U=1=m}eiwudMV zhe^@WSJIrfHj19?mgou zDZ<5AA=*lkh?1_z$M6s1w{c^Yce^3~n@YrskwW1*T!6YR%LkHK-&+!wJ68=b9zCH< zk~4+A1UQABU>Rde#o$0?AW2ybZY0@K$$%HrC<(?#2*!!$WecLEZ>2d?SW19z=m`KU z(*&$|+cH&2$_PpVdW?2Fuq(wn)(_`^g=AhaCfZtFnp5Lj9li_mX8CDuUm-vMbK%@3;xjA-H2i@!W4%P&Qa&gJwCmoD=k^ zcbuko%QP-g`j;2XGu+1-pOwGrARtwg&NTg@caa5O+LVsetE|@ySo+x@)dwhLI>&TU z+qI2*kuq2k*(iaS$3c#7w^ePG8Y*QXKzEu4*~Upr8Au*bA^6w+irF^r=oroUd&Ofg zM}jcn$gX9b$!DpYZ2%UnwhY!2#Yu~>G}DvBNguIv(-Y4~E4Q@MlLoJiTl(pVX{V`- zS6Wd&$Ja5|f@+#`>X;osIe_MjI;IOycXL4OE(+llosM#{`yqxxWayff$ZO9kFf}SNLk0=4hVOEVIe7X>r-~0N@Si75Y_RtI}-J zM7ybRS^dBn(EVN`G!#5tU^n1A+r0b3X47TEWj*c^^>X9^BcQx*Wyf^DX}0ZT9q|v> z1JP?@-_H+FfeTBUNNeUM=_bRa)dTH=eL#BO&c~9m&49(H?QY9%i%83E+vA$dpUDTD zfZD$C9Y=tfONY;T58zMggWYR<(2B5)$&Z1Sfew~+k@e3XE^7lDK7U01SUgC-dIaRY zm-h|r*j=|hZoXbZJ&3&~2dxR41FT3pRMsjl8~?am-aT|YNWH?o=DfEAZGVjP+kGzf zJAG1%A-wXu`n+bmM+J=p7kX-D>Ue)?9={EDNP_10S<4F5JP2TqB~ahvknb|3B?{a6 z%T%uZm$-c4uTVL=Yqq-HEtXCZQPY7|&4G_R_HXX3kXYBug+Ud6O+PKNq9nEoayHJsgn$#1 zOA^_Z**->pPJ9X7>o>HT%2HUyzTOREE5>ZhNl}|E6@eJxyd-Bx`@Y|eU@PXdl!q;g zF&c{~?7VzyXktl%EmXdwz&r|n97+jPFCBl}%$$^JXak@m_Y`JZ5_KM`JI=TS_r}O& zp3pzGzl7x<#=8{2R}Kjas<;D>5k`WPO%o}i-@FqK<$YL|4dW$l-kcK&&0<6sk8U*X zhE-M(3)AdJ79-6N8k^Q!orEIpqFGj!SRVh@H<$D%bnldWNnytLolhqDPwbb{)3!Hl zba5B9T0B6pPkvj$ya8r2hVlViB?$#78E+)oAM({;q#hD?(m|)MXQM+bH|lJI*Emhc zf#yBD$P3@>(!&|UO-SPdA%j1K{7*3TanT}irB&a^$-U`|z3>mbsQ0|E$-SBO{DjCK zG{m1?QWje{^YJQnqY0-N?ta1e>m0 z^;gFt&6JYugYZ4XGMT)Ht>WIpk0VP$iMvb8Cns;|a?()oU@O6oPfK!$yCcqrCU2>? zQc-o_)WeVOD7L5CvTR_c2*f6aTgrzYf`5Mo@~)m!W!Wowe~c6p3>Ng1*J$DJ!{8E9 za=-6*qOv4ZFz6{!(d6NWX6AV0e&KjxvLw{f=qV;RESM={F>c|9@aB-@ekoa!vIP_s zXepI3cHxIQBemg&tHTcAhX~rxc<3KjeL}#29utAvGuy+|$JVh|VSl7|SaLP)3P34= zstPw%7r`xGJCaH>%xRn zK-$&v2M}Wo>Jn&pF2;E(6~Dv(ec&f@ZJHK8>+&~?bY#TGNE@S8f5}3{By%@wM|HgXI=F9b z+1w<)O!TJhX?ZW%9=Vb~A#s@<=)`Gj`7=;^f}RanZuIwF1Z*C^vM1Q}7Es*{j3ch@ z7G5-drN71I(^Cd&fRhRt^?$PgtsW{qcjr;>CSOmk-zq(41RBf$uR&e6Mu6u6Lpt1X zX!n9V7Lnw*>PWN^tsQXq~3kARK7 z%goCiZ_=K|?b$09T2RbPAiyT1WlQhc(QSp-A-{g+WagVq7{~1Mn%-WW_X;0FzEA#a zUipm7jQ9zZ4e+kGWle9N(Sw^WH(w<`VdixvV1`zu=KYg%Hd}#d3azO+Fpa9onJt#% z@t0WalZys|JC!+aqAOn_oEs7Fr<)`}lPKeN$tFWaS|&$~Tv^1E5rE&qAe_TjJF_${ z1a{THUYHb%JUm$T(JVYDdbUY(ZHbDt*rs$co6A3Io5?)PCPYRe4Wfn+pzF!~Nl0kh z!yYw8R$UaDPc&(cPYgO;#JZx#TxRrtx)dIq0}Ri}G>2*g^D8of8llHFB!p?ck~KpX z>Jenum}LYa6zTbg2mleWnsE#Dt^&H{8}w=-&%S+?Wc%l6O_E!$=R&gOee~*HPIJ@- zypJ~ZZ+@fJjGGw~f-==?a>q&k$hg-E+#N6{wEEVoY~@Q_a@h2ynPKtT?Pk$;-TzR|UlSm5C^kR=0h@3W1#e zNHhPKof?R(`BXI#tll^5p4^qkwXs$SQgoOVq0ot*!3_*`HhIcjN*%3!rc{rxn~D<_ zt68R0H}1I=602FKRHv4csRm>sEC(unTg5ckJwvZHG~C=RHx87n5gbno4AndtkW2R! z?5Hwjk=!}k>HC&{M!4!@AfE(g^a`H|KzYzNWX2nP1ANik9a(zrT5V%p4%bXT}qea6DlM)dSNf+k8 zjxDxZx$-(0K#$G0D2Y?8 z(~bJ73hwYAQlm!9uT@tK-!*y2^Ui|^_N!MWeyi4Nk;`(eKuX*%QwLj#xDaHIR>auZ z7w}9gdMpA4drkHIgL!!wp03_?fA-pTXEjvho;mwx6;x#UjsLUGrv9Z;!d|cFusGVv z^+z#a@s}rOzM@TrAIp=OW<}DO!%Oyu^>=(*nCxHH(fAYWwPCp>>_bzo9E0(krBk+d z&G;6hIc|(Ce4QNMICd0SF{i2SVzV79vZ}3fvS-)Jvpr>6A)pD9X?#PJV4^L}=jX*Q2Mt9_-7swsGn zg*^7kX?%~BK&P2(mnpvtIh$rlt9~xrDWBt#=N&_Kk*vvM8IK67=A2%&?7}InJ5-P9 zH^+utlPTo8+OBc-XT_VUDUoTHV;_&nEpDGF0O@hV^Wv68Hb%vM5Pl{k{HnXfmM+iC zeOE9KIMVK}wHiOj8CTlQnsKWLdx}P){e3~B zP~OS(H~*i#GPf9XjrddXhkjoEJ|X3po(pQ7S%*|1f2ah;(^AjNLfv2Z-oNCN&!ElC z0Ay{bh6OD0n||}A=IfB3PI+33Q>>;G*xz`_{Z0v;)HS4uoE&z~=4CGJoFeQcJ`l=n z<@Ud(ZfUsVUohU3_EX`mmrAo0w#q-o-XJ|xX=^ax{A_BU|7@@gu3Ii#kaK`&Y+5*i*A-rkam+??}F>q4e_j4C_kN&+oXk4#P|ah)i+uFYcW0 z6U!+0x(x75T-W<1>*U|It2@X?kE0%`$Bkgrkhi2u@ z1^-q~jb2rq$@ls`e+Uuh<3x~5sGPKgTHmsn=dMvpi||4{4#OCu^GY*TJo(;BSmDH! zzj-5(tCPeRW-*V#T^qUMG%|gV4dmjT_JKdyGI4_lD5|TZ?eET!=hxmxe91Aw(O!61Nd@eEZpSh-aK6ySx$%NN1LnMNs zhnao496uO-#K~Lxd{a}#u7t33C*W5i8(552HCf|w7WZAbwsci5p=+Tm2e?Zrl)F|3 zYSs{Ax%2Z1702IUEUS)WA54W17^+OuwZPG$x^Vn`VA`?XtM3R_GEeid7iGLrhM;9C zyfa@GeAA?3BdY9<-AJF3!4p~tlq@~Ri_+<-^c`kMO)M2^j32XlR1o4_0Ukujrw|7) z(Mwa#Bfbo&T6a_r8@kL#1DHe0e;};fr49(W!X*yrb$-d*BiITT0P7iv?xplqL~8=0 zF1y0%XutVoP!Pmg7cc?K?;ji!E?qJ74j9?S;MF(75{v8I=)_$O?W2yuiOdygf5}N~ zaw=0eVaicvq-H!VxG(ro?w8T7v_=bX{FS8+;4ivq22nK6ue89$0eG88onF~!QQSa} z0uscrrFmv3;QUsuQRcKZU){>bvMja0@xq)=G6CNEy^2J3d=}9XOy=sb@Of@1QYJIL zHjqxVyjb~snE7(8`G>vYn>u;pt@)RV#ecADzByI$FWL%B7wi7YR%UeMYvkv!6&UhM zXm3QPG#H+2Tzv4d0pK{eWu%$XP!Z%e)*EV0ya3cEBs8Vl3~^b(UY|FdlOFnxc?Wo4T3O zb6=Hw=#wgPC-YYNUj9Mw3G)f@>GsL;p83uL83xH00t=-8nG4kyf*Ilwf(peGM*pkV zRO$zFCzmhPll$L<-|4?~id$8KZJn#wS~>m&o@$V0s1Q$shj9#q&ubSwM8@PQ$!>R z6Vuj*w9JVlU>a4P!J#aC!O%r69-`AWidK@k{nkkYsWU87BTXEEpS03=mbaTs+oyFs$tOmh2!)X#_Da_}P%` z(3S|4Qe5NKN*a)_V>CkdcS0a{(};k3`{&{C>ZvIuV98{IsSu^K}kM4l`W zPXxn<ZPI~kaGLD*X& zkVky)ms>~>BEYz$Pxe#uzo!SnJZz1O8!S&&0xnaTF@ygr>?Sk_|0@%L*>wM3x%;05 z*eH?3B08DSW4@p+oYnzIYe3^TY%)su!M@#4Tsy4j+ZMOC>`dLrE#*kLd!MCh9u7i> zHjk`ALzJwy#d6w*pQlHO1_VnQpaqE{pu?4+MTjB*!Bqmd1z(1i4sL;~d~ge)46R%g zp$V?6pfc@>n6=vROjG<%cGRDfaU8eN?6si3eF5QVTohV|aTsd!88O~G*JH!*Zu-5< z{|o?)u^0Ol@gPk;@naBzkD^TwSffy;?fYPuB-BCMKA)^x!v?gMFU!HKPA_n(8{}T0ZExal(o~>mgQ2ga zDL)q=u2)kU^ZpvdTs9kkXjyI}$qd!Bn3ndiv zdgX&8L;!A)J;?sN9}f6iahH*n7SGB!Z~}{XMbXpYggF8|VCwMh&fnXj$gG z87)H9K$o;fc6+7u+pG)miqbEKYCuVYMS#h6J0NM=op#6nvTa#`U*tBtcd#x!WhPEg z9DtkEr#e&g?mV_@C(TaveATQ#VzFW=x5~0k6VRtEB*5#`C%Xbtnrb*f;i>jY8~3+f z<%oOz=SyVIb9s7ziz4i%WSAO8B>+_-^Dl<#2Ia#UL}&4$gCVz%^uZis5P#N{P~JJ= z2q^c|TIdSM)w{nOzTpkr%7|@}q`fhAaawM3q-d+`Nl+%FIBVabB=%a;nGZmB>77k5 zA&g$2Y0&&(4x`(H+|7w@G_cqiIKZmbj})Ii;VrZ16-quKXWWi?v2>QUX`bGa-01#T z!|>e7zxTgFIK(cw*fC08___UL zc0LolC?K*AgIcM*C3|Gu~31c|-iCev;aT&Bscih`Kg121S;$jI7k9& zmN)_~@Bu14+7i2&UIXDm;WLdf;OG~7OzXTAw@!ic_cCwuq^9b`bw2)f>yvfAR>>wK zMTNAr#j{{l1)st1eQ8&2$?c9-oOYsILB>pL)iGqjgZ8@N0E`1)BqY zkT=MaFI3OttVQbOkj%PV0MJ%dArS3a@AE2nv9!bH{3pGtk7l`d+>_b9I+(h2=S9sW z%o}sL0?p_MwsdFrT{i5g3Syxube|b5;b#Fvf;g;%1uuedcdk-Vjz*{jt)W3+hQ|r$ zbRLsEzCL1xGQlbG-&80B7xKX5wZ^-7Jbz6vqx-VT61-ZOa*YViA^^P1$TN&;E|T!B z$r#gz8=%5CLQ?Y7rd+!TSXT^Kqe7WKL3c}29~*X)zi>FD=aEtK8Fjaj)JD&Lb@yLk zE@99?EdK|pqv+P=>l&%Ln`=x~nbIJgQLS+G-{#~)4t>;$(4fpTeI;rSDB{gA`*#(& zBcmU5;=Z9dV1FZU4d8wmh*{|Ft(D|SZ_kit7*Xp8ZwJTl(5JJLQqIa(rzNC0yG^dV zPg}J}?`r2r!Vgs5e*HVT?Y{5?;thI4W1hs))68Yxe$hNW_9K0Gvsv?SC2Ir?Aick} zx7-+c9Q!=#$*MS}<3VX&98X@a93ctWh#YN=Yt62nOc1;Z0gh;wiCNZSJnApnQWv~l zsg^H7TpAICnh&^mI;yYGN$~tm%l7-;p?3Lg=_?su)o`YciMuZg_8M!iuh@L-I}1Kz z{!NEG5RqK2Kh35vq@kwyBqz;a063MVy&-hVhrCV{-l2T{skaE-ksXd3FXU1TTyuh(*z{W5_ zU|y~-QP1g+mF|q((fWD&>G!}9pR3teE2864#k1^pk9!{aqHv$_!r<27QMji>r(MA{ z*gXqa;J67|6cqFy52y>M2d-4@_LX&J1)8fW+|CZW{lCFAYEtKc%N8j`EhaR&?(AOKoK$55Ft#_3}x|gyhlvzLfNA98?;4zX_>Q5wt#a zELD@-63~77INFl44^OPL`s&5WjMxp`joA$#+<@9f75X9sC-hYa>Cd8nl!X`%Ji|wO z_HHN3X)V?BO4#w)8Vx5@4)iwUHvBg7pOC94lJ6wpB%vgc4|eZYB+)LM(&Xi*CoX*Y z#}k2iR5l>kBO?Eb#*8-4hg_@LEwaL70V`ZTguZ5ze!5T556ON;l}QuRw?pXX#9k_} zsEW=}3QxkWP2-V*N-e_gsj%@m8UoZsAMQrN%Km#o01N$&CugmYFI&X1nY3TM)GBx9_(u;F!&I$-T}Y&C;1t znYuVezRQ^X3murjGLm^kNFM+5g12G@p8zRA++q&v6wS8ggt0;_N^G%sNXUi;!N-+g+{B1Eu z5vr&{F-Ni0oZg)KsiQ6QKk`$e)1kSpIlnpiQ_8vLIhkU_BCWZxqUE`WIf7FPTP9C7 zPk2vyPkc|lR+Mf?eN?CK+~T=K({um-(?Vd&;K|gA+>NqHi2f3H=9`||H6_ODFRb-}?tHx-8gE z>hNFkgs zK3y)kOok~N?V3bNUISETU2svtgO&M|`?mLA`Zr)F6zVE7Zv_oz$TdxL9jFcE;cT9ZWcu=XB$sjHZnFgc3wVqVPRwh4^MY1GbdyO-@MB} zcwbGajeCQR$C(v9kT~W-lhPLnII6GFjA!9g;X)9h#Bj;U5oE}cgA|Y$u;{jis#p-X z$zqaHXP#d$RmGqU-S7>^+^EPx5fKvE6O(5E=h`}7m$IMVY(}2}1xfOS0m{quHLoiM z7fJ-t=xV&o`sW24{(p;9gnI*EnqV8L>_0z>^0s<+Ukg|}0$Pc~;Uo1}*oCMz?S9k*O( znIvOYG0!k3PiEQy#M41`c=J^=lHEUQa_ARjycymSt1hHVifSv;mRD36*Kgi}=v=b* zb4;x8SP5Qof+Z(|meZ}UE5Xtx;_uNKjrLSox5zGJ!h|;rwUx8|A2E5zlhIgf9!HX^ zQ@71C#F62c#9|+y=rgO;RY{xSH6VcLcGEgdsWI?#9f1chzYbY42jt>#uzCHE_St_X ze16Z-OXq^wSj(h4;3_#a-|t^c_v~^oTNp|ee+iPIp}hHVl6C)W#^q|Q_vmdRBfxVp zUM-qHjvQT8*{9+NDYvSge_%nUDz{?AQ;e1BHth>$Ixx|{G*28yzL?n6zU#$Mn!pL$ zAfiWl+usO4P!o??=NDIl#h#P)rB6<+l|X7!QNA{8rlUk3voYYwHaCGt@&wB)tXNV_ zKE~i z7N0uhzTAHA|9QMy%kTmFe9I@9SN^HqZz5ah zEBAJ!u%F5jbLT~WK)QZ^4d;8M^Apwfz~8hw3wG*stey0(DGe}xXRoGnCo(hE4Y`5X ziTC3j0BVKj4Tkun@pyFaB>EtP9Q}M#*bhVzf~6bKJWhFgQ*1pg1fBGLnf$&Scm*N% z9as0~qcvbB)&y8sc#;TVVTFg^#9rQmhu?50u6WENws}$ z1N-^@-NYeSKLh2vz(rW!v0kHzNqr*T7MCQsBN?`nP0MS?>&`!zTDqJ%3N`c%mQP@S z2@PdP6D9DPfQpr4r`qXS!H5l*;&xz_)1``iu2ZgyfvtgA&pnZZQ{86 zz+Cr?PtwW=K$zkAOyw^6ct>V35$1-pq%=eZ%1i0v8gNuP-Eu0u)^efqbazH7G%24h zZq<8B*P~Bw8mC8WP%StUyDq6ccubcr-^Q-hrJY>?=uA7CKq`++usQfGlhhoRo{A&9 zni>*sNx=dA^HU5?zB}Eybn^^FU&?2}s5R%RBES}TTfxDOxW4lBG`Kx}+G;W#JJvw2`mA=VW~*YW zVXL?fpnj!!rLLV?kgsLn`LN&uB5!yaPP&Zo^>O@JgWalfeSx}` z9-H67Fg*3a7`8y%XgrCQE~~rb&|fo&D5M!uKw4%l2dls&kgo_Z(63|j?`)evsNBGP zbtVR0X9Fximi)yWH|S!KMHk?l~z1*rt|byzvL=_3up&@ z|4MirR$ZEJj}Bl{85TuN&v;evQ+N01G-@~Wu}fr4UbSNJ)D-}?@5vSG#=X%1E96)>NCC^!>`p&TA(71bqb+5TIcrdg6Es^&E1Vg>Iz4zuL zJVt!}qBA?(&Sr73!(jCQRumC%#XOp~PD?;@SN1I!JC5PGWAXZJb~Y}55c6*cx4PzO z{BioE!}m~A+`6VTCy5<%!dHVaM>?j~v+Ah15wq`Q$^nf3`E|>^&T2F#9<=|vIX!65 zpT?)nLt*agjU!Xp4pwnN=OnRp{?I8aA7nZiH1m<1aoMG`F=lC`D9&)*eU(RA&KBtWTnWV? zRezBVFvEX%Xy@ewu=|l`(^EttsKVKMI);Ol;K6N5Xrujq0GB{$zx9e7**sueMpt80 zVTZ}JRqzqHu(;Y?TFloIip1!}hk2NN0C^Pq09dRK^qB3H*`5G6s#3&(jT< z3oMeMv-vXYF12H6#vF2zm5JG>;Z@oiTU*CC;}2O+6~|+Cl>pYQ4v&R~m&^6gh+@QXTiiTpt+#qKbBs=6Fu_L~!yaWcU+8toJ*Rz&fzV&No1 zAS^Gp<5qd8O^lJznB9M3`!HKYN+osyZDOSgv(bL9@oH?DKLeg^@dUu4#0y;MF97f0)?jW6KFeS#&-xs%rm&Gl*{{c9%8gcQGT^o+ zC}D6J_B&BN04er9vapdaivj*R_KQ>lZ+Rg6jwPY7^%490_zQmm)(*ZO^6^L3CQMW+ zc3+y{8K0Eg)p%)Ykecjv8-sqnfbf?wsEyS`C83<}6JS2z)bVD^<(sE{NWC&5NoA(8 zdx#x-iju&AqmKsDC*D?3%yYry0(C9>#Z2siOnl>3D|cJ^${6#iDFoE4Mi( zW3Z#byi#|bn;%-s%lvNhKglyA>7ptzFBk?7D&o!Y)D_rDi*2Pitg=F9e7qI25p1i% z$<m@*+!@UlSDl0E- z^C)AS{_auB59UR!vcp6%q^Ns{e}2^`u;m38?oB10n4zP_TjAJbq9(E_njNNSHUy4Q zq+n8zU$9mwd{VSXaZZXKr1+Z@-%IgVDb7mqofLoHO7RydzLDaL6sM*5T8givI3>lG zQhXuB=Tdwo#YrhnNb#u@$EEm0iepk7m7-aSBT{@U#h<14NQys6@u3udl;Q&^-k0J% zDc+Uh9Vy;@v0QBNb#~1FG=yD6bGd^AjN(uUXbE> zDV~3mVxJUyrFd3~XQX&qiak>7mZC|DMk$_>VwV&ZR~Vv0aKMq}V3K z<5D~(#iLSemEsX8wn*`?6q}{kB*jBgY?NYy6c0#ozZCaLv0jRGQmmEYUMbc{agP*t zOR-vtyQH{Nid9nFA;s-d+$M!viWO2UmtudJ6t_sRREnFWSR%zuQY@C@Mky9au~3Qy zQp}g)dMV~fF;|M&Qq)Q@ONyCN%#dQb6fP;INpYCbuVu}=1QdCM&Aw{_qlcgw= zqEw1WQcRR$f)piEjF+NV3a1p;NHJE5A}Pj5F-nR;DGH<*Da8mWhD$L-iosIkNs)go zMV1r}DKe$#FGXJ|GNkAuMQwR$^vDfw<3QoB&(~kkTQXpfClv~q>lk!b|Gq>q}+h`4Tw)t z=0nYg`dYajcUGy_nd;TTugY9Je;%H1!PTbBbIeg@v8=e6nyk1PN><#|PVAr__u)GENzrTvU`<#Kt6#F3KFu_KkmL8`RIJ ziw+@hT1fkoNLSw)UUWro)jlGmiTlxg17 zIK-!^@z#AxRf8!o@6A0*ElhSO*ERI$orl}kc{{}CH7Xi!$1CD+Y7oS{v7JGr5^ELY z6VxK;yr6U54oRRN1pQ6W_kw@^D(I}B?*x78wWfgnBIp}IX9S%V^tGU`1f3G}rJyea zeJ;B5cH{_w*pmdQH%)f?g5yvY?j)y(s9QpaXw`_6vGJ(DQ>o)q+iplyO4 z7xb8*M+I#a^oXD>f*uyMSGg+PC=^#-64PIc0soZx>e9hL2hr*+f^HVHM9}X9-6W_^ z&|*P13R)y+p`ZnVZV)tI(Dj1m37RWtj-c6sY6Z;_be*6YK{Ex-5HwwoOVBhy*9w{{ zs9MkzK~;h(1yu+t7c^N=nV?cZlLSo^G(k{_pz(sn2`U!k^hSRcfvyoWR#1_kF@i=5 z8YQSuP=TP4f<_1$E@+sbp@N188Z0PZ&>%s1f^r4r2pT9TTTqrDhoDSB0|fOK)K5@f zL01dP5Y)%pZZfF1pk9K~1@#n^=51F1N)^;YBz6~+BB-07WN!qPbk;iTIJAekj3)BZq zj`IN9fhT`~CxC6h<3R;+kAWWrwgQg;TY!gw&A{)0O~6CIMqmT*An*WiKX4z=s4RC> z1;xj$51bjd4pMoEdz zj2;=SiHk~!%8b%%h}s^dIHIg^c}q3VF!g_IBF2AK(U_#6jfU1yLp{cV@gBC^lQ5cJ z9fjjO`sE%f8aLiq&)Dt7>M!^`q5N+)YJBN!w^3~NP*3b=r&qIaV{CTuP){A#4u`5+ zxh7;OPI5XzY9i_)-i$aBp{)yN8!fD{bzg&}Yxg{`;|fdM6?ruwY;Op=BX~pb_F&ES z;Jtsr%HH5NfMy~DXF%$)>_PxYUj+Zt({Ft|NVje)&~500$g9~ zm*|q&=naV3v*#qu2DROSsP%{0JT_a6^31hK;x9;9t%?Tk7z)4uq6*du_<$DR9Pk71 zH{g5VufSR0JK$U3FTgjz8Q?VVHSiU13iy8#_yYJG_zXA+oB%!rjsu?n$AF_iGjIg> z82B^r5%4GAL*S3V2f+Kld%(NEJHXq(Vc-wITfm#Z8^G(pA>cLORp1riW#A>?Mc^QC z0N4+_06Y&o2kZm(0?z`^08ayZfZae7&;iTIJAekj3)BN1U_0;xunl+|cnp7d z6xa$p0&D>u1~vnmfQNvMzy{y};C|pfU_G!7SPR?>tO4!;?gmx^cL8?-tAIOz+kx8v zH?RU&4lD!kF3gq!Hv@PRW;X$gfg6EEz``tkT>#7nt_S7;cd8DL^->_-$tHzbX{})&~6l zg=qClWd@g~x3A=q@0^XIDyk(nt)VUS4l}Ye41ii%N*n1(dX8S9(@f7|*|2|K@ol!B z1f7+_h+4n$Ep9#6+C}$`@3^l-AJwYYz1JF{`BL1|Eu}zTRqI*bV&4a?U9>OwN?J)@ z)!L=?wBjJ6tU36h*ZlUFf*CIvST}(G2bs4R=;G1(dA?H%{8+9xF zDJ#HtsCjuE;`??Nf7|X(T8$o&-?96}@7~b^YR-$(@Bh2`AEXWF+lOcqZAOo8rN_|E zBJIbN$7vgFr+TDsQd6F!ckt6pJ~~I|>1#TJabjj+tUX3ce>NP;MkRk$t6nOB*JjWh znhAf^s&*`SA6H9_&KOna90`{N?^9KC>)19XsHq}S*WJpLZkOY|zeMSq~f zYWxE_N?*|r^f8@4KYWBfIZmI_N&14mMEcisn$FN!^wD|r)p^WZ-cQNssTj=R1oT$M zzh)-?N5Yz)CMlEIYs&X6K116ohWWo*(_cZWT2Ev2mC)_JQY3!|>bvU$bU*06rT|?! znRQm>_13fOu>KP==_9o5TF=ro>i;6BB_}SySXVS;pg8J5>pV-7oK0kB>%7S!LHzgQ z7K^dH;aTiy3WYQNH6g~*92Tt-wANzj9J8*y{$5R1hz+mJJ34FEuz{4>^5>Sq)35se6xN78)O_A|hC^8|N2hT4_&QG&eq!mtS`64aBpD!%T799*HnBlP!c+3E`k$cM# zX4Ys;TAfj0CPp@c-efl7<=)Xj(P&JaP5L{O4GMzRpwH6jw2Wy{0o;_95~_YO)6l>P zVHthWQY?R`Qdvw&T3Y+)L#d0F?cdM*46k|3idtzq7b?~Nq_*gbs|(9WOG!$F)8g%# zc#WN_94TpH-fv4j`iRB)j_IuDA5!+TM_W#1s=b}TEbqSE9Lk@M zK0m-aJ0d6{rrCwehUjB1LzX`Am`ktrZl>C=8N6e8$Hj-n+d?DshK?GI+N+^ysRNX7 zDSK(YAG~bu9N%MXF56i-D}7S_RVSnSRgGx$_AejQDe0<$+WcKluUo^GO}w+Br_Sno z{@Q=F3Fhv@s##0tL1`U*Q`+|`Z22~|pm#^#fLZ+CQSuGTXXDz zZN4vj?~Pjf{w?G0&mXjQT**DveO`ZY%=$q+ve;0T^MJ3uG|slYQDve4XqV zkJB*#V$pMf6iGQ^_7Xd=!xF@TB6xq9jZxvpOj!{pjH08s>2FU^XJVi!{Fuv>WsH9~ z;WGL=Mf8VO?GKV&VbjLOI;!s8zsPrz6|z*8yr<{28(r&`vS*e1CvLlY{@4`w{D5!! z%6)Uw&$okrU&d(iz@`9lsv}8n=9WZYJ=PKn)E_gMnC_U8Wj@Y+96Ye=qy1qS{&5p- z(!(?pQ*_5%N)|I8_b&>Wayf{Hh3$X*(0E#6loKtlDse5%O1jRv#y4$^ZvgB#1UsID z9VQya?bx9)85DgZ+v*51n3bbCoq-)UW*J~Zn+azQSoUXd144AlQ5SL;*>RVeCpxq3 z*-Sjwjwe6a@{SVR^35)#S-ZsNyr*S1p2jG<^()P{x@63x1?u>Uh^NRscnN7FzeaI z)h!j_9V5(R9zMJ2q1O5daaZtJHPgR_1khNu*Ns~K*AJbE@y@r9E-)a=ctWGmVdWY~ z-07LTjhW1HFy+iaf4_$WWNC~iTtDWD7TJ;U0}mD*sxo*A)ni@lbHgvMs)cWM?io+;J9g^jxg}x6$g?!`H6Gb9c3VqnVE9 zwxi)<4l?$L!xR<~7#V+lqFq)1@94mglY0LW!aMfhyL=8l)h_&mt6f$g&+(KiP#<#A zrEgm>)LqZNt#wL|jKm_5j!x7}Ppw*C-KlVBcJzRIhfJUA3&Bc0d(6Ex*#Y5JOG9$c zrHhnr*7F{@A8SJttTNLKbsU-v3dYRlUD^N>_HlD#>uImqWN3eEJ%S0LXmvWHDGP?H zyHjXdW?C8+@{B&A8GTqvT1pz990yX>PC}uJvPWN#KQu$_DW-N5&Rp84BfcoFmwkM= z<-BrJ%VKoZL&~I<)!e?%&|4qCJ{|QCUej`~5z{MKTL0PrPaRSng;hY?whD*^00Tku zL5pRl(ia=}BGiA^1MN*$-;%bfJ9BJMpwSp$4haj@Xi%#zBqTgSr;Rp5D-M$*q_OpV zM@)!GF=#bLL!e$C5EdE~m}NExFh&8~2mTE;P2EzXGWzh478=Gf`eT!h-k+MmH|uDN zUvST~*Zp#R(Lbp$P3+JbgT}7uq|w;J)54>Aho@=NpKO00(Eqswjs3MzTOEfz8NHi6 z(4?@8T`k|UZ(s2>o&OliZN!!>>`U&$dGO(Bv^j_-t7{xH>dXOr1Jo$&7z3$Jw+cTVSBRWx8)7hT?hOJId3n7JE|$-c?hu4u(@Fa&YUOrU=!tj(lS> zcaHfiB-?&cm(#W}rHFkgB<3?$NVd*?(xuC}U|&-7da-zg_3Fh>eFnZiU9iGwQ%2wR z%+wqAEa*4twx_`h`#0G~EVyRO{1J&)4!>dSm>YjaCMs(@t@KFY_-%i^?@0zx^7z?D zYWKQ_6|USfb@tvB;N7rWo`!-ciVEbO`a(m9F~Y#tvLIu0#Bsge7~YJ{^OD^|oN+_+ z5yxG~VG3_{sd+BkJ@|~a^W8&jLZUq3^t*BY@=ab=Q|4V((Dd-#yS6;|xMpR+0}F@y zl5~I8q|&u>ZoH-CQ#bdjZ>_cpUcG{PiT$MsUcJ77$e!HDUf8K);W}#wlq1lt>ur6w zeblENBXT<9bh6W&o%#t0Z)c`pA>!vXzP)5v_^C~`Jh;8}VORT(QJ=a{$jnP&hru~0 z^%EEQ`yw+%9A$LfG;LkMPu~W0h3Xw8dWnBs(mCvK_4=w**)chDHPf_$5NX(Ni?PL+J05=v z$TAOP{tb!uWJZcO$@0!ror85oo!pU;Hp70GS}LI9F;`nTzD4ogMZqMo_-VRn+IraU znJA6Fr!h>eFTW7kEj_c-7%!VRYxC3|R}Pw*(|dU55liN6U6olms1w`NJu|_=&l0KQ z77y<~y*SGfK53+)pIYrJh|L(S?zMk7VI0R8NEavA`a~R5_hX(Vqm||ky%Kk`5bD&r z&k-0JncwNE6UpJa_-q`)B6kD?f3EZILa?~y-6TE;_T!YH?t*}~qtEr4ybXRZ;zh+N7oD=_`Avh z`hZ~L#>l9uvFXG5_2@aEXcjy$7JY3|-@|&T9w3G9@+O@I+k`$#qfSfg@CVNvG19ks5^=Vh*gWQYPF*vb=8WF z$_mH|J1SPKO!bJS&KxsO*M%LGYgXn3zDma!Qs)6S@HEX2{pUVD^M=Q!_3*}KPaSsq zGB114wSB=r$DGZTnwjS}44*xs^X7XrlXyS#*SpEE#3 zx0@|^T~TM3r5WwZ5Lfl((h~49^+dN-6v{VP#y3~K!-~z7U$hy{6PuD#{vT~$0v<(` z?O(U5tC#A%yE?sO>m}(V-AOv>&O$cQNg#wR=`4gDktKqbqN0Byiy{Kzh6p(7Afpb0 zjDtQffnbzzK{GgxqQfTNeD5(1^B%*@H^6{{EeYx3-KDzI1Rdx9eg9{mD@EU1_nv#s zJKq`w*al-ReO`W_>*1#a0QV1t=2*9}?4jM!FLl6JM z@{-idM%obz3;6;WgIuTPGvY_$p+ACs;@!uA9~2xBm(YgTC3-u(TI9j`*c0U3HM9oE z$Lk`tKo0)!HVY#y2GHC=@D;+1;Knd8j9Q~)flS7*XcvFfN&a^Qk(t0{7|_Dl$5`_Bf>SPysgAx4A)2dH&e zk}Vb$$V6pdT31dV_+419D$;xooRk~5-417~r4K+ykv9%FBKc8S8wt&j-b8o}3C{YV zFjfT6ifP@N&jsMb9eLbSC-4sAfZ&M8@}mOmE`@(*wHTnmF>FrUp(zW6N=uODRFsZp zust<0!^X3$oXM88{c3jSik9p%|MmNO@1OG8G*|14dBK@m7MATjT{ovX-INh&v7!>xxF!z)E= z>db$GU@z1&6xbIw@X8zwYmez8s&@BrB@0OpUBJc>BRmFTEQ}gfZ;uJ65$irKpk~lx z^kZ9?(0$$-4*3Ew@wG_8ji+0}XosQ#(mtpkvCNoH-Q;QHS zJ$lNDs{iB}x;~%^t5)lQ-ZY?&P<=r0_TA|q-7(0tQ8>&_pgAWnn4`xXI6<#A4G8K; zI_@E)Gmb%lX&Zs#K-N*EBY_<30Woim*)-{*czwcS@7~?~_~^O~O%2Otlyv`W-1>jf z*$z9PuP*!O$%!fUUGB`#+$X0V=yf^~j)SBVa)hT`WUq9ipzy68WhxY=ePJWzR%%(> zprK9O%C%>H%SN#I!46AY60rq`tqit7fwW^YzZGChY>u#t0%vZP<_!7bkp!@u%-e{K z_nnPvdY2TJP-r(Sau++a`a5?zf96bv{#E z#q@#huy$%z@zlKHsZ)#d7?<@R_#DOo)!?(R*LADGEH*YZwtc3|YRqSpWmF?*R5mJa zEvq_F*)r?1vPkXGv`!LjAd;a4pKZhlf#CwQg@}CQJHbFW5C|Z{4!vzFH17s%f$|KE zW>IKrRJMI4kjIl}S5|+W5Gq^BW_>1nYcx{>*pE=#4uDEUUwCphsAjFvG*0tX=He-LmZQ`KIZ{tdxl`Taj zt>x+QD>KJ4yR3Q5tWYYS7R>YpX^wV>=ZtQ6aAsM~*jp;b-xbni`HQS|LXkB;ROLl2 zIps4$#&LBS#kH=QN>-KP^ZS|1qR6OBPj#~oU9+m1kzRZivicLKQ*6Y0?AEK1j@Q7i z_J;L9V>hVTYnFeAu3gtff7x4m54;4{6Abp^uej>7$;f_nQdB7u4k zgTb2&N}Wyx;E!C9AyY*atuS=S4Rbs+OieuXEz<&p>W_c^3$<8;ju6+7IN>UpLKPJh ztvu-=@JyJYz7=2(luy*Mg{7E6!pTL24{;3#}&9WJ79FDKp$p6vz9FJ~?!d zRlS^kK;D0uf~V(11Ub#$QgMQaZb0bZX+qF`*o#vUqr}Pe1A@HMN%{)te}ZWKR-lqd z!`SaIYUs@=&0r+Z5R9OcX{x^a7hMxJR%DKwI4SGiM@60vjU@N{kazJf?ygL=?J_t_ zs%M{OBF}=?;xxzC0Lj?_s0nkRoN>fMeuq+m^ZS2PDvEm_{1FCd3=}#T$bidX1CXgz zEi|WKWNf=kk~+BQYbB}s&7VvX4xzoVnN4ap0$a@ahnT--5BT^mVjk^?{e@jWv>kjV z7E=-ud=$<}MUdckuv8f(sp7CyQ74&pte%p@2#+lZ5ks96U<<5XZj_p2DUn4tUDIsd zjK+VQ0oOqTwQ2$N0N!uuHguT4p#|ttkPYqm-mq1xEeyz`zKA*Mj-+QhQd=CY+W7v1 zx{D}FB~vTiyB=@~1fMtVkLwb7KdRo!a1ridU(M}A9O&k*u- zq=CY4O~6f%xkGJ`w-TSaF-hUP`jR5Q4JwzHUfDBkshc>=SDX{kEGN^$(DT3#mGUIpLN(TqTD*TumBJJY0W|R+VKR z)VFa{R1xQigojHs;;@GcTj}kC0%^xOPb7J`ME%7*+;T`zx#ZxII7;$xE0(>xCbVGG zw!Nxn`lmfQ)!$}1cb`UwaX4^+3 zyD3v*I!NS1n+}3*oZIUT8&rR0o`${~Wp346W8>nE+`StFUN5y_HP-|-A@R5wk$J?0 z6oscOF7cnf!cPB>Y1@A;e~W34c*afaD0+)I|IQtAfA`6{W%lyUn%GLLhoSd<5YDWW zdWh(}e6X)KH7hlXgHqGG&&ZW|&}&w*5HM)6H)Z8Sjrj^^1ag55bFY7>_o`{N?y4dl z8V%!vD5(#%BiZhE=RQqk2meZ?dfFqL-H6=vv6 z{Hu1ynA%i-jxUuDHO_wt`xbOoXbms%X5JG>P0i2CvpFgnr=c~eg|XqMYys3pb1}CJ zTBLdxt3<({<7U2X+M@yc$MWHo(CuqX3sg=4WSQ-B6 za6}k#9KrSh$AsQeoM$b^DPk!e{Iu%fy7%4{&jCBMRbtK3yNiGB9j()A-{___TL51m zey~NPg*)^H?6W~0e!`rmQmAGkT@=!#Jf(%R)^S#vvb1Pg^n-BGTa#4jnG*?3ioRFq z2L;?BNt3!fIVkz-#aJXs2#1(Yw#y4zBdrB5y}W0Sv!($mQmjS~^wH189zF-PXbp`s ziS?+;0M1HDO~rpWj-HhR%BfT^jEY;q0H*Ky@53rap=_1QStRtqV4yZsF={r!BS}fi z5u7~a7%I^Wr^ISQlA_1>9Prd1j+T~R`9OT&x6Jw2q8+>F=Z1JVgKRj1dR!;@5uQN~ zE0fDL8nuGs)M}Md28>1nBco}(-e53MIxWH;br^a?u;YK95bTH`$govy(CCevOrg~( zRLT~)qLl`%COl_^jpF*5!GFwu$*|5 zeb@gQ&hUSDXr~8IT1KW(ai|ulMWK+lFpR7f03K+clKNH)g?Z+sl9vVLU z3kN?vZNT8)pzAk0v_aWFof?H&VZal$!oR54k*!c0jEtf-_!kxY^t4eoJqd%Ts1^Q& zQ;%$g)#S+O+v1ale@23(dFRB-;*~RCy}0pfpag%+DRBc>Ev^Aq!4>gg@TiEOEvibK zi{;oxJx=gQ-fW|sCKZem?G8)d^*{B(c+u1fJ#Hqf=d{;BkqpQ?%{*_Dq&ievQ87x& zo{W;@!`2Tq01@v4xI2gY8==Rpy)MWAm3RUc_z+f<7ziYID&CgybV@lO;*c)xF1_cm zSLc5_eD;)*^rH3&W1QlW!(yoN?@%fpe&X=zYMOqTVbf|Cj6?fm`>XVGkiMPJ6FUOw zQ&BCLJ_FiqGz&O|Q^9=4w$PBo{j~Bb5``q7wLf^eA7=}63YPg!fbA&dRRJ$}9Ab45 zeANP6%#oo}bb0I)Js3MqH$Oz5-tu@XK=6MM=3^KEq4#QT!1$_yO|>z|ZDEaeXz33C z6`N|fW<=+JQjDohMn0-l*`jhz%P_3AgN?@n80WYUG{m!0CvbU)w9Onw=p`Dpd{j^| zwy1DJXIrATKS*FYsbs`c8bTmz-1^8Z7FRa&@m_J|o}Qkwe=dEjw)*kv$2QU>Lp6VN zG{(`<&C5Uitx^BHkzcWD?LsO++a^rgeb^&YsW=;=$*$39QWYFBD!f6HYHKwpqFN)* zaT?}0-=S%h(!-b{6z23}N}ywJBJh?4_TUszf%M^-;{xs_C5$mCweeyeIPZ|fa|1m_ z4`BF=O6L>nPM(Cs{LksS%`JO}&dYxWS?1wYYc^wImVNqLt#NP@b3PFlVF{7qA|??R zvGKU*Te{_6#YHrXsOgp;i;JXa8I6fz<0d$!h1fJy9n-zv#B(V)vQ^=TSc-ycNm`mz z$8?j>R~HX`hvQudh5epD_vXO%`{GzMtB8c(S*b^fH_9UP&Z9SJO&n*^G6sK2VK>-J z@~F~auxP9Z!n1VfxZ@hUcj7o6hVi~I{P8fsvEmLxn#lk|Hr$i4UK1z_9Ti}24R>77 z#J3eG)sld!1e}K#G6Cr&5Irz)=+D3%hxH^-uYco4x*EfJh@R`;$ciC7e(HIQf?ITI zgx_Uly4_AnTj0!hYoa>NldFHXJDs_9|22w@=60kESWHoSTfDRplVqxZnrWCW3{PS_ zDBJDSM1|pJP<}{RE*lkcJ1i*!g2ir%3ic$NeE4C6#zK;a=V&|BK zaB9`Ov0iXe^fyiRMV#5QOGXQkfcOWHQ?qo}qS7Zu%T6n`DmJrbcFliVo5c;c&)2D+ z({S#|E2o3!Ht$;S{DP2P5BKd8(EB@$G1?qz{V>MFQck#Ex%Bj$j9gcm(@G&o#mI$? zd=r=PowJ1>$jORY{Uok}n-_-VI6mw}y*S*>A&`E~uruR3!P%0-4+uHdtf*j3 ztOP=562aC;z$s}3q(y(B10#?a@LBdPB~1@bEf(LT>6z1gZEkk+NE~Kx86ls}-V$4Y zmIF!zrXKD)DN=cd(m<-sDwUbzwMvHjPSZjSm<>^87=D+CJVR=Cm5hdiUT=$;8W7Bk zA)1r~A;e_gJbC8y$hj&2LV|iBlW7o8qJ6( z`vA9JrMt#fbkQtajM%aImdKJ|yMTLxr3O(d)LB;A| zWZiiKpKqBn8)xoDm<)_`B(Yjb5F}t8rm1el-X*Osj&?V{{Pt!~5W>(no@?=eU=5|H~V4IO#Z^HIbgex|K z>;vYN%)0 zsX?oH$fy)a?Ub6sUU_pM4FGj>ddE5%-T z>+_3b@*&+58x&fzCccNTZn<#}>Gg0A4M=;a>iECjL$r9uyu=NpVGi`t z5CWJ=kmUV5&jAx6Lua#b4r`i?KMv$6C{9sB|4DmY9&!9W;XlE-Vb`r6Y4Uh|g4&kC z9~V$34)@ZL=tLf&9KTO;s$gGYs|oBHM{5+=EeS!#6C9UkP3&AyQ#3!f=&pj&_DK`+ zfj@uNeCiZ)euuxI(8eiu>&+>}lgncNgwDyyCn@PXz%v2is&fN#>4q9Pv z)${?)0j=q}A_7`SepJFVDsb&bFKVMjjl!IuRhX^|xFK?o@pOklVpM-dTnvJk<c@ec0*N&^z z@`5ZmT67Jc3V(`&S#qDg04<)Wkn%;+zDu=5Gb5S-wJNF~wn??8u@{BQYDm#iKVd;H z>RyQZrwN5r*cVAn`%XyBgi%apM6DSR)OzS%>ywOAt>g6Jgx`S4Lb7(Vs0A_Y)WV?!xR?RbCa++Esx;L3%z46G`1b z(g0Egfz^{UTsu&n+@Zu zxnrgmr;I8uoW8cBbwyiVsQr#nfX-)PFS~1JRy;aS{K#FAX9aI{H09R#EV=oq{z(-s zdiUC|rVQO#U0ZhRW37{x%^sJLIrf<`O)I7c3nPoGCf+l3j8lC7fnSQBl}@X5&jrs| zOGZziw@#emC>)(tHhYxER$PBIj>1*f-!NAopA1wbi3Ij}Sbb?9_+78Jz*~^Pqc>t1 z^)T4^ENsuH@=#`TLFHB6PEmPP`9lRoLwVc~3J5L)65+rFD8R-z2v4A3DH_kj-6^=j z?d#g)j^hhfn^=V;{#P~B{sDGFN(YAqo5vYsYT&NX`z}sV@b)9DUOx$Xf}WkTPouDHcc;8_&hi-0}J8 zS?LB>$m6LiPOn+s``{5e#UIY|mE;F~mO`&By?RDX`%fQeg!~(X^Ei#QWdT83e@$i5 z0B#;QpB{>X9+0os5g9S9T0Al0BsowMs4N|k@0(=p4^DGrXfl8JJ<|pinWKDmyKhvc zv)pI1`O1HQ4z?qyjT7~uXt3@2Mf!-8iyK2KX6)!?eR>a%Ug?z4#=%QB6(PAe7p~$Bmfr$ZS3x8Zlevh+*{mJ*4~Ip9{gHc+XUfcXIP!lpP4O#O^W*>0Wy^P&&CYzg z9bXIVKXMP(UJ1Tr=Fm&wx_B|J!2sqRphWM{gv)*e5eS$*pzIa^Ws}b5mAaTYvE6hh z_;M$8{W?(6ZSV1N(eFGnA|^_G!#)Dx5%=%VxgR z$mQnjHs}HKbdAvUHHqjx7KBflhcYkJntz=OD)Rc`K%)5 z(;dH5N5N`G(OCcZdz*8&d+VmnTRe2_X8HlO^m-nyRbr?Dj9haRU}%bI2lR9bE;}a31;88=K=KF#4rR1(gt6j5I7-*ka^KUCqUqx2Oru-}DO!su zbi#WrzF&tZq;|mZ*TC_;B(CmuXY_x8$HTnIYuB(Qr{<_yO*xL)1#g^Ia)>?9fA~bd zQ~}33)taLMY-e{I6YK)z9VR|;ejVpjWiWG~H4~3XD6At}4rF`aC zzkmF!5gA$lNXE|Tg|@S+jlNOfw+T^ z0A^gtunwI)3-vGL!{^Kz%$I)+h)+m#5Ed|bThM4Fc@oVwY%iykO=|kkt|$L~fMH}TK!tHf@QPw( z3Bn9nImz15yVBoGW7ms*a1z-rnt6*^fS;qFYKZNUfxqF(zrR66PAOHaqMbZ5{#2ab zIe`8-{^;8H!(H$%_&RN8Iz115kWt7;47CKkD~UY?o#7&?g8F|eIpv$@E6U8Urcf!g zimNE*Ex@wdrq#ReY8(?HqX%qOkrDUMn>^DD_>HP z$rTmIt$FYVq%?!c6fUa^pkum0!-b&Xs|$t;IGo4G+nIjpJr@;8VQ4%M?I+NdoINLy z!SYmRg;YG8Lx6wdS&PpJ-!q^sX+(d}aMyv?=6)w;E;_9ru|>K>jyy5z3c@8cg@ zddr;J4J#cblS|lBAF~GaHXYB39gdpzds{jloe^R$UX*`Zb-Pm1Sn!d(vh}V>qnF=W zD}P>n%Y?Dhvt!S43p%qZ3UhhLnTM{+nRA#kLFlvo8FR*w=L;q{Qx!_$j2^wfxeT%8 zUC5Sd_Ois5e;~FvFk3ju3{(*Voka!ZhAbihg|6h2LK_@dM zqhwJ@_0oT`(uQ@ng&UUt>NeMNu8EI@s-J4B3a^@19lB%Zy{2XNq!l;h)NQywvuuKo zJ@t2mMgJmiW5vaesIo+_;bDimV4gDl{?KAT4aPxp|ux z{;>Xw`uXV>*@co_AxhH#R~(mwg$!qqKi2KFqPOG-`r6{d_k4q5vNt z85{Bh|Myo?dUHSq_B^wp6icZ>nXY<8?~285uBfkBeqcGezQr=JQ~JWX_R=v+ntid| z&`E#H(-(%@Lg<#>`22U>x3=sQ_dI_UUSAXUyBnP1!jfsVp87`*J(W2+9sD%ZQRA*( zd+3IBNkmz_5k z^>$3XCz<-dzf(av($_{SKqybFKzifSDTsgCjIrb@o^%wt&1QEYj3M1T?=DDMhVQ!P zp=DU`!E-Yj9zC>r;rm->z?A?T?(* zEFkaxKw}a0($$z*`d!s zMEoQSUfl+=b};Yme(pc7twDBqD}F0O0p%R7i2rr3-Do#DGyA}Qhc&=u(Ed}Vr1<%? z6K@v%3B9in$XGJu-FEqKe$sl^qx8mD@q2?ZNreLPb;Sy%VaIHqR-U_ssN( zkF0*Y^&FyOCyYu@K|0E)7YH30U`tpV2wDSK)*}5PmF)%d#%7~ z^_6E|&T?Jy%~xJgX)YmwNh&TtM<)@K_|+L>;@}SfZi80aCxWpY0B1m$zxB_`zAR+< zT$cpje3kNwpkg(bB;iUfEbu26FAtwaPdMT?o~R^mmpaw>^ofnltI9?{*);E|X}LvH zmpA?7g{oV}W*Wj}(RZ9&cIl36!G3l4J)y&M651(JwW%$FToe|ukgLw&8i?5S~)M`jf5-FcP%F!n$9 z&gpq-3fOV$t4qTSE0?{j)p*A(tX;9>f7$!;_^66(|66zIeczMrB%O3RNhj%ar#ne! zPiFxl30p{juw-FNfJ=fRB8wu5ief}SFc`;e)WIJ*Ps0|((Q$@loDt`L=SP%redBNR z%{Xs@=r}r~=K4ET_jacP&i39P^Lg(BMbbBQPu)Iss_L9?)vY>*eqd18mC?2nx4|aR zVic)Yv2+R}IUmOxQkhID(pRk+s*?QC%v~W>Z za{efvoDxmRKFyOtCiAC%ylF94cqT!+=B{Df+x217oS~f0iTEb$(>^ z_o)d|!8q$`QQP>@M~5O247DV=MAd+`(sBYh|CYl5j`E0*3uNNCm;kvJ#W9z-;2t8R z667Kh@Lc?7A(!_u$aR?%T=i>Oajl*8Yud0Vg!e9ggo`GN#|h#}to{VVb!k=qA;k4}tMzwl5kp+;*1wOqmjAPe zYx#cxaU}!d`X)VwxIO?`ri2r50!D?8vNbWgSf~t!dk}q9UW|y0+74 zbk`tKMHjcW6z0#Y^wgJLJ*~BH(YDs=>#kiN-DeXKS2}YZ>QO}9F^;&@L5JUwnd$IL zcq_@MEcRXijFl4v)MdAGIX#L`G1giU+s^`jYPHNDZWD?jEmIk(Us|U30-u=!;3`M} z7b&e&d@7-=74iKopkm7|**f%BF;+|lBF1XG_y65ry1JxteI-BGnTIjf^DkhGb>q6L zc1)@HUemIn6~))~7A>Dy_*Unm>+0m(Ag9P`?5!aS)CdI-hS=jp9OK)_L*!u3-^5m1g#&2b{Y=+457Q%KjTFIF>C7*I)AShn2W)i& zV=JW@Ln|YtB+!ZjXti9a6I<yBH0dh;Y1Tlw(PaTqo2s(KgR7%&c_kQb#c zJ#*}P*Vf%PIfd zdr>dhvjQ;c>_ixKl$UOkEhpc9jiZ>izMjcGBjPCXJp;tEo9Nfe7{U^#lu9ax;HacX z=#V)H-*}SuTR|m=uIzdX^?}gmwX49s_v@yPMcbn?47)vj?8^>==PF-j(IzqZhX8w z%@?li-z&nYyFWx845vWyxmfbskMe%}-ry|V!|dnw(Q^7O(C*VA=Qs3vrk}eTat5TF zFCb?vp}AYkK_)2GL2`CVG_M2AAa^U|+#}I=fo3tu*(K3jfSmOtXSYN{L8&g1vqz%& zIR0IGrJN_|LFOf{2Xgj*#c~*md5OIMIfK%3=Are>1{r?N{@8axj*jHqk8_~q&wiW4 z?57(E5{Ua8+eeVVzNk`_G@|eJ9OF7;@5|yiV1(CqbDm>7+;aSt_xP9M0A_!2=l0gA zTRMu1y71?slHrt4ZDv+&p^JRh1zks%-oK*6-#xf$=@9w6W>#;1r9HKFStI^Tt6he5 z+;5<-_R~?&#-fj3i~{bBni(0AGqS_10vq-&CG#fgkXAOZLO_A=dofq9CQf#kkI^CK zO&%zvWev$c5{Gvj%CX%KGyP*j7v3pHr8{0ezYD$2-}1oNM$E+*z{OgSTWU~S8DXtOpr>LHP((Tf!ekG@j-N^M06=Mcl#(-$_jbUlGyKWb+HL8Ba6I#mk4o}4y z63w8!ID*Z7*5#`#)-T>FzbaQ>Ul(5Jol~;6wPy8<0#{jULa97o(N>T6Qn)0^SmsUf$ANSeIkexg$9xeSSwpO>OGE19cTyRrz*% zX-B=6W@YSuT?$26kt5rw-)cdWzWfkhE$7^qlrrd}4{j zRTE;_Igiy-ELnCY%nWXSL|BUEeY9P8=d;fy@7i^L4;mGc&_dxc+*V#_tHr=$8r4CN zuft)bPQW15Q^}}1YEW9ON0O7dq_=HdO3iVpg(NTdr$2ZzHo3JVTaWNSXG?mU2TD$J zJl-&uS@eWf!4}<0Ec)WIp1a$;-9?4n!Jfso!s(?yq-o*)$&)s;7p2!OuFp^@b}6-0 zB`Mi|4iy^NKWHkP5AwYLysrn|os>^H2W`v5L7Wvjor1yx*Wgm59knGTar)!BuI%HI zsv%|t?nyJ$on$xNm*L$8CUiQSg=zu-1CR?S{ zZ{8HF#s}5-1=#s81^uQA>LsHp#dFCq)BHBqMR#D`6SKW$Q?n1+3>*;m-u~q(9(lP0PgG6r(a=C-TQ8>x!#@?vGk$YU1Vm8Y%o=fSLpOAHb zBtRgntm6wCR&y@M3{$3LJjbVW%j73`Sw|x7iAgVJgcIF$r_x^HT65e6uf?e4hFw!S zD^oaHpW_c$%T~<}70z8hWy<~e|tI}pvd~o;E9ceqQxz#=er;st$ zNJnE;cSB}+%Z@d*g{i(IHTLc8n^Kg23VQX4Z>KUZ(MgnAv_`{f=u2o13`!ZRl&RkW zoJ|G7r^iB|dd{ANaYyEJFy7Q}@%WwtZsvuEijn+N5ogUW2|s&Eco{{WLZ!=v50PsS zIfaiv!cTlV%)EpiChw1n#L>@!Az{zUnDcm>7gp9M#XTZw8GD|W0Z>0LZugRZ-o?fC zh`jX8M~oByAnhK(va)73eyS!p>8ztB=`3;t zK7A9f4LVekM)CQq*~jr2u>MGj^(1GvM1#-Ic9EQaJrd2w@$cG; zb3jTKieg*HE`qRlHXG3tLo>7KS!fp7iHG+^1;jP+WASX_0Y@6bY|A&xAHzuRt4;76 zjou{N!3Sm4iB|N~!^VhbR_)J195mjJkB>D{F=$Q}DjZVWo4} z+&Y1Qn$dHk_(x;}1F;x?7;{HzhWUu!KV_Krws@9VOQ3aWz|(M!H#|IiI%1K(+uKodN4cj_F}kQ8^7%~h|&^%SKB`; zkk!=J80~K<$eP+WZC-0~L5-LE{^tGKKAhPv-fZe?PPhpz*Gg3lu_l%VZBZxsk_2V( zG?#096CQuK3km}}(Ks6%_sfel25S=5KP9Y3cRYpeKyL`WXmAki6;=^%o+y|3fJsW! z8FGe0+@IylpD)!Ja_-MOp4|WWJ9Wkf-#o@F#6R?Hdj#Via)Rh0vyW|o9whEKrC4qR zeR7CqPzzOaGPYlB82{<0If=C#Jl&3%eXGa1=!bt-kNtZ`A6-Zn_6t!w`d@>my*K`} z;}nN39DxZdV#KGNd=Gb^VZ_9qW{x0~jb7vFhsU~jI-U7V|JX0be%Xg!!YITDbC5PJ z2YR%0R!oJq4Qn*k5wtC8wA&p?Hu%GEP)-9&@+D%N8N(>{TtH+$8VZb(gZ`LIZaBzG zbYg!5nLJEK_BMQn*Ck{ekf)XuM^bxMJyaMrd9w1I4{?t9U^!HqZV;xReNB^84xd|? z1g-NWYi0Un&yXlNWXwe!BuWm;$(1Bfj!dcKa8Od38KG~F8WpOjQroCfaY~tt9l;j=Yfn1g~z{?%*BbLC7=HY+y z5#uj4vA1w*LQEX%cuX8C#!nT#rd4&P&i|>bCZ*VC->%Il%kS>UD9yGx?Ea{)YiV06 z`(AKr*hvpPS~A_tIkJmE*?5w4XEez8I-2p@;FDiuYK(6^Dm2-tr;18$K~xWv$A7>B!|Zx`d>(6=AqggnS!HQg^MSe9Y|!)M<1=rbUuZNgG+Q(3I;ys8 zwU{UxMWBVIK?~u?H^l}dkwWq?^6BU^bj-6kXbgnZ}Ou*dFnu4YDIh1%t>EyD}(czs`DN6&?8Sx?y5)@ z)F4G3xX}VPYN}gYn^Y*&EUQ*4IowIKv~oZuQ*i?{tr|dap2XP!?jR&Ig!r;oIlu!c z%?C#m1{4Z;tiKuwFPIZ(S)w91dO!?;19B4SNG~Atz)@&(oD&a(Dub&|ub+$%VWN=lNaZJJw9(s|RgP`gi7YPMxIbe30k)_G`_ zqhFaR98?-qTwd!9vs-^|UJx)Cq0T{&d4%+W1!9j>qrhQWrDEhKPyl8r41N1Cg@RMb zWHA*d>ZVvP!2R=C1yN>7K9SH7qs$ZE^^XU_iL4Y}S+N2Ytz@kzAiM@T>|>8q^`NJBl4rD^q_$C*)`f_eW*C7f1sd zX3tjO1RoAX!jtIvC!Z7=o|G+`JzG%E#*qrp3|2#*11=JLe}K+3nKTxQ2DiUPf0tSo zYx1zz1&z``)rw86k?HT^MIzF+(qR3L&^YutSJ|8jYeBA8>uJp`j|vxL&jwl|5?duXG#Oc%ViOt(>a1uz}dXc*|w(6?iTSL7~`FrcEUiA0WZDv3Qa z?!#s~QygZBcf1j0mf!Jh+!hj`ZjWX6IQwwvfkoy`J;HcoKW_xZ!{K+iSM-f-QXIRja0W0xhemu3FXT zS!2$hR2Znww_5TVf`Li-R&Lq+o9Fln=G{1>9Xc&Q4+ay*wE@eixYR6+#;k(OG9ZSwAvW|ft3Z$o7UzWMHWlep z`kH?itTvzyz!Jyb)g@J~AE2~z7+pe9wU^_J0+%3~*ZJHBQ3Ux#k0 zSTq@0t-ZLiYqHdOSZ6JU*2B?lmWv*XQn8{?gT^vqnHX%z$!eP$jJhgyK&^(6E{%WW z7!oB?iEA%|P2t9tU8PPP;A7-u_>SXHPqq}wCP4~fC>w%CnZ+CWG_F*yEwtineOGmg z#aEG)mS+n!H!N<=Ece-2>uX7AW`*!BJ(OG!%}I+Cq$^ax93&5iUemd9@c8z_i1I*- zhsE|jPUWKDk)$MLW+q12Q5AH`K&pSn!ewS-5b8-yRcbI^P{7n7W;5`YB({mtYPSRrGxE4DM zw>T4S0iN6?DlD9+!X|{eDfNHUFR7WlxXQKC;H}7=*|d@sBJDL9?#k9M`mxZIRi0&@ zITam-S@KsnKKvQe$_KN|OPv9fMUFHkp_6h7%-z(o&AZ zVj`Dd5#=JQ5s}~a!dvDiIa_ZFElp9Rw9i`2CO3RV^G+6o+PMum}&WW=$c!XgwkmPzVcIf2R%CnGCqR!=b^;DYHBzFH}Kb;G`V z{~kbpvoBmk2Zed5Yl7ZUf(10ilILIJvS8b+gG4MXCKdv-cGUfO|h2?i$-g(ujiAa z=T4p+B@0M7DJP(?h7?x`@=(xj7~<_OK$o3}6Ci&^$Z_+)-n}I&%W~J(RxEAwZQIn^ z6bKf#`{`F_hw@WG_1=YiMxWhwt={1XH5Uo@#pz*{eAQq=(9n}NV%zH;#=dS z6R3(rovAuzQfM45>yREZtfJRbE?}7x>stdB4C;Dr)G&tEdyWC2-a5qVYn2i$N2qy1 zPkettg9)1$gvKf#e+4CrN1$1jKYQI(<#$$Wc zns2c))fcX*4&C=i_liK7@UBK@Dx3p#(Lq~IhPs$2kElhS#XFv>hUHE(d>o}TP8Y-3 zYSqA&4wzCw%P4`-G*YR}G1u01ygqd9qaNqKqs$*%fzcU35r`P1}`t@#GT zeDmP7Tk>bEXB}3+hQM^s^e!k=4T~9`*#P1|aOAw?}_X zdM1sb@vi{$EyFU5!Tka->;QJ<@M%cswO5m=Zh*Aovy5ki-hPA!dWXAKMXHF)7)U9e zl$*GdQzlQhC4_j1duNfCkY;5%5iOK6o!zdQs)(gvbM+4%%AK)hay{Raa|btl&Q-JI zY=%8YH*2m;rIz(;^#}IWuALjsxoUq!sAcy2CW=8$be7r8RZ$VDk!qzr7ssd$RSak6 zUWI$AA84wg>KWPo88iIZOnSsVf@+4NnWgY?C_PsVczAm>wK=n4m$AQjOY_cVrWr46 z-eg3S(O`5NXBt`J{#5BqZEQ9+8!K8!4+&8bu&5~hnM*^a*e8ZeA^uq+S@C7OaAL@mY#cI0gip9Zm|T;^Teqk*cd|um z3}!tXY^%x4oN>dv*0od8@^gRETv;xMGkZ!`nLVieT(GpY6;JjVYU}Q|CTqEjhU)t2 zhN^~Y_I+zvdT@Gas!n5Yo9#|oM%!}AvwTw{>5klTk3X7hFHOm*OL3JK1gDjza?ISZ z`|?xt$(a_fjZx_ARy+EAWofjiGE|LmPn3R@*&)MoHS!k!7@`zPRt0~s2?i~TLrx$i zmXZuc9Rs5e!B34Cd;&qI4IADKohEJwzMIq`(OxqD-|=t4Z*RE;=?@6MrC&u;g`>>k zu|J?B;Uf|S7dYAsR>4O-Anvk*`A)^K)vY{%Du7KNsyNySWGbr<)ZG^Ns_mf7H&a+k zq|loWIouW-HV+n}E4F`7<6$IfKx3X;1UmB+{0E+Eb(9YXyyOu)c}NN+Dx2?mkYhZw z1bM+`EQ&{#7?1pt5Lm(n1_R}3Ew&`%CYw!daim%|t>g^uj4XRmRG*sRb5_lQ+W)Lt zpHY${+<{(pr)b=zdBPoZ&pJ?odpEEm9n{Axa5`^EZym9@Uz$5oJUe^|Q_`%-ZjPfSm3j7;eHS{{O3^=ub zhP-B+Q>!XftHgi3N~KLncMKVbty05}5(Zv+f^CzG+t{g-hI3@%0`vyQ5O1heCzRkw znFI@WnTbn`-jJ0TykS|e?b?R4O82(w<-ygpk=9Zd*g2~=$Df)ObayUgwJn=w#$lk9m{{Y)oaiITi9U9591%UmlGg+7 ztXa96?mTj28_E#g-<{UzqtB}pD^?@_>i^?BwOaV(7NrVCcPjLna;_NKLX0qhD6F+j zlooo7il%=o&w(^Gz@~nPdk(&sBI8ALq7R*CRD78fCp*mPq5H%L6MX5TxR)@|nSKfO zrC+{*_0O*e%_?_qTa!D-b1VJolCok~X=^FkE$p~^av9o&W%-{l+BX7+3USBE5gFxX z82R(?d>MQx!qA|mCX7fBPvYEW;!Qj#!@;<_e8zwCpZD%_r|;c4wwEgwRxDYD_Kxib zIb=hN<$={s6W_?<*akcP?g z_ZHs&n7{4%rtlJ9PN(137;(Fbn}hj_vgnVD`Um%4wZ64Lr{8EbCxvGemre^>%@*KL z4sw53D=URQwK(=xwCb=37 zoMMQ_q!xOJj}tq{0J+S&vgA9PpeAN*Yvnz7rgGcq(>Yi5Mx)cXY<+J$+jetW! zG$E{f%%6Js*dNgX;c4`#a1gDaU+qTwSN8~g@XdDk=IJsu$Vl9?h2wWskoa8{N07#D zptu)7Cz$CQC@p}#rXpIxJx&)T3%=C>_Wl4W| zfs)LP8@ck;H7l

QHQUhN8agj<-Zi;Kz&R;>mdSb)wmr7{yaV@`aQ4V#o{C(uij zoibo%EiU6u^9X(8uy&VhLnD9 zf`3-RdcQXm!zzGDn2g++Ya5G}_^p|br}ZTbrx&u zZ1n2VF9R9I6stCno)N%pYye5Ob6((I^b~_*x?pc#N>p)JVWv3~G~OZIJxWjpH-PAF zgueI+aZ`!sB%*c`iH>r*dw69uP6ypE`4!1cB^rg0G+BTKO|4NWof6YxC>nA>eR z%;0GAcm^r57>522O$^G!aWWJ-8G<~7p zdHDXl2d8WcK5*TW`5@3kXr6y?fSxAk(M`fl=u@oQ-av0NyMRxJ^v216Y$k@Xn9WKD zWkV*$BK3ghpk+l4M{Dfjx}-5|BInx<$LPd95ThizSA{t* zN;T>;tr_LT0lV-YcMWIy9tTc8owc^fL$9V8O=?LlaJ+Fr2fBqK|Mq{239)Ds`hd=( z`{{#B7Sqc-#(cuous!StT!7oby)EmJy(?cN-y#3M3X@{D;sa$+dENh_^o?qX>XbT1 z{h<0A%_rJw?c+L+Znf?QdXN5U{Vxn9hWib_HC}Ce*<>-bncg#BZ~mPn>%WoiwfyC8 zC2JVcjsLRrAGS5NPcDB=_DcKDE=`VH$4`?oA+1bEuZ*YUu#|2SlhY=p-@9)6Z=|26 zL{jce`9*3=>e|%Jsi$yCoAeK)RcUu#mYz?$koHBI;10Mu-97Gp_iO3l^osQQ^e3*Q ze`)%)l)laIWX!ufdAy#_E=`#?dS%`&?^9WZtRG~JWv|G-nB#we^aEeW_hN2R?y}sM z^XB9o%-7}b$v=~S#y`V9&)@A|>0j&L?7!82xBos!5Br~lH0(d&KUt7c&{go`Kto_( z;PYTtaCdNbp{B4N($$5B3jb6ngybPZC@GW?$_o{Rsvu1c^@}O&fwU-|c91k2e(Opa zPeu9vYtle5UEF_B{CM$&l7f;0B^M%vkAFYR$F1wZ}>N!@oM! zRY__0e<}Skmg+MhZL5D>Obyu$Tdt%l=}NkiuB0pJO8S4Fn<$F%(;4`b6m_?o74+)?S8p|ZG>(lwhv!%+_I_tLd2Azw~iFQcVv1(i$bq-!PRmTi=-Ra{G) zUQNxB-7j5hs9f1a=~_z<%9EvQ9mOk$u{Ut?FQiJ9t`VhB&6KWbO0M~fbj?s^EhSyE z2{as~(VBmyYgt0RoT}8ON!JR>s`5(LO3I*JAYH5IC*$;LDo?vgy4Fxu?LO&Ri<-3u zrE48kqWcm!L99}evv@7aS-ckIEMALp7O&X^8d1*T_5Ww@Yv7x@t~~Gil8tZ(5XT|J z*s7Nhhq~rVUpRyiq!3H~mSsty3`MpDHrSFY%jSQh{3t^+l%0ixRkn-p_IA~A^Sh)J=uallT1IhorU{5|99Sb=bn4+x#ynu zJg&g*g3c|FcLug6*E^*HOi9%r4`haRI}@bOvM(NWuo-5b z>(Ga+Qy-GG^EkR^WF^eLlNXJ!LGl8eHQ{Uy%PC^@++#kEI2X1Wdu1J z(mZCNZ;bnrH!)t!4BFngVhTrIBwS)>THvIXiB=kpfsQQsRwnz!GW53PTu zzGCf0+=6VU9+J6isV|Q89LW~Wi1|D^#g6p!o?+IBuqU%P7v}Qp8hW!r&&Xsx>V7uy z%IT|~0B_;7jB}KlSQZiUc>DyfN0d2Qsd~2Fm=cdaoC&SBtrKN<8?OzGos3B`%ab!} zO^JUqA0tL|n+-YTW-YWSB6L;vOJ9Fm+K(2){|HAlV&q10PBETOEAQY4>yRfEyw*{8 zq~{R%5aFHNW~`~c+bDW%Y}I1KW>(7Babv#GURjj)Q-q_}1S?PR*!m7{VBZRO4QVGP zdRJA?vD;T=0b7X~Hj+AYP0#eGQFq#nT|?fr7@jBN8SeF{)>wZ%Udf!I{U3ieYD*I^ z(YuRMGq{O&&79ueeX*@GvZdD8!EL-h>U;C-z56M_<0V+XmRGc$tHS)=2qx>m-Tba) z-PDRU*Qg)lG1b^v=+(qp@2%QJMoy+y-GJd?qmd^z*cm76f1o<|?TrYpRs6Qd=)T|W zjxmeR+Ypnaww~iHJeNje4yAw4s1x}-=99*5w}|JtuU@@rjao35QD}3y74kjc_VEf0 z>!XY+nY>@Lz`}e;sRsA$+S{!rY^RYpkA0Ej-hx zk=ME{{SHcd;m&!}b-g0xqt}yMgY;~zzo%Ex_gMbmG3vA4SNrrjm0-W?Zmaq4oqMBE z)$jBxwYJbq^tmK>yyVjj+1KZ)-?O4z5yJPJsUGL>Z81&mVjcUQLMW<~d2Po1FTzhS zbw*CbxavkQUd#Ke(4T*5U-a#XQS1%vfi|wWg}hcRV&2P^v7^UWEoF^$@mOnYX2Rl% z#am+WaH265Ewnt_)MW8B&T2@sT6~e#NW48#U+9WOTVqY(R!d{6CEVB?skh9G#Vu{E z5lds#(h`r&iiew<8>6!4E+2{uOSV{=<|AL|=iTbjc2E#ao7*j!u; zTk0dNjkBWgDA7QnKp-iOu-Ozt^el;(B^rx2W5h&cUIH@+M=gnXxW19JAiX09t@@l? zv9@?)Bu<`C$Z4=v_P;rX(ACA7!6(ACP4g}B2y9`tv6+7s*pEc(VTebHMJ=s$@kj(q zTG0}T`Vk?^%t$!VhM8j7>YCc>BZz8r7Wa;0+$eF;w&qAY+|>G%r4AC%M07vHWT+PNhhG$_cwHFT(iBP166pbMipA#8 zW%jlXVX1$`0=GrU|5)ETCBm(Vh^2PEr9B*7B5GqB#bF=oYMZ7n25#9PAAMvPF}R+k@ceGZ6d7v@cp3=8u1>OYqVfs>II>*Tx&?klqWiHYDtP z-b@KvY)&)yh6pq_a^Nv}a_hO8(q}ogbb?H)Z>vkt{+rv-Sl5u!x3PD5Ig-5@iy*bc z8=+7KEo{(2OLFX36p57I_@pI*u-2!ViYArs>Jh7R_93Sd@y0qm^Ls}}_g-6iw&XWr zlth1|naWMP5u;*fMVn&b)Is5MSof5cIBt}XSX-i{4f`+BPFoo|4UwjnJ0|o&)`C}J zRDEP-xUDHs7;bHum;5=3xOGFU5~BBK6n+0BXqeF+5^3+gD;{JG`VH5qQY}9JJHSm4 zlJvCnv{0mp(nRpjNY8+uBuxVUtn@7S${yFJ6@KdBI;GdVC2VX1|gZD@t z@LtIazC=Xb zCGtV=-<4kne_HvDkd!@2k5H7imAAp)RBnQQM|lVQE!9kakg4_;lA580z`u|N|I>e- zO@sewlhb|=z9$WR)80-)-?W=)=$rOV8v3T)O1lOA-L!Xwlumytr=&~i5_ma%1o$V+ zvXIP*xxY}%8Ri1;A2UA%eu5cuHy4{rz?b%?|1MQE;xCI3{P(cu-vz!ZzY2U!ehv6N z`Fp^BmH!p^efj&qAILud{!soQ@JE00k9dxIfP0m_z{L2|my}Du%gSY7m(m5iqFe!9SFQtZC^vxJN;j|v@zf)U7%I0A zJw>IT#b~MqOjFZ1o*BRa>Hy$Cbs#WH%>oWlhXAwHY+$aM3;c-s5#VrjIBPLYeQ$GeArH%rQQO5wsspEh))dqB^4&ZooJn$*?Dd5xU)4*rcXMoSD&jMYl z3;3Lh3{*WTBCM9E$TYP~MUJTzY6Xz~19C~NR;z&lHDIi}zT)~?>#I!bit@JDbD zh-@)j6d=wMgd3li{9+oOQ0d8Zp|S59^y4Ep^y83|`f+GLKR#BhADO$Z^wqIA{2C zLidOIOdSfc;GFa?gRUA!IyZcnI-<9a@ZJ=nMAqk8l5Sit=p|7yfX9(4P%A6)ARBA= zV)QS;zAqV?a>UprBkm$ExQE`I$AWuY9}9B!9_6V{!{>=0H^>XB1O<%qX~uaisG;{L zPo1dyUJ}*kM{$2CNq`o7NLqXcEj4I`kvIEwqVrVZYbkVx9eFDGz8bVv&%u%nMx2c! z`@0#`0oq~MxtL-b>s_+TShwUDd*$xu6D2zXCxN>ICyPr<_65!q`$`T5&O>s9<;Pim zDsTq;S(aR2yu^5g@p=m1Ls%*pO$Ogt>?_S+elX(@#vFgf;fy00M>EKW0hHeJIh9JuOk?1V_5-g?k*e4_ML41RM3oG6QQ}U z%*__OjFo@A{F1UjuVh)-G`3vJmK%%+ccX8VbrMEwJHao25lD$z5<@ueZ1JS-rTkJR2A)oeZ2_S`4f&Eyo&7FZHv0DsXn`j6fIonSpDD&h*kI zU`uJ7CG$v9+`{^c7++*u&bSJ32$jCXxSl1OfbFGQQ#7|TzQVZ2kdXd<@Mp{O81wJo zFO+{5A_6PQt-X><26FD8He z;Ta+R70X%DhZibVG5-?#qkFXpc%fn|^V|9AE3}Rk$T!dAiv2+=)y80vr?}#fUb~p5 zD!QZsbrt++z48Q$sABU~R98=V#YKH5vgC4##2zd{->Z5~;;O&mhMqIb-y|O@W$61W z)AeUptpLC^;tb=9-H zaw+SqU|byxc~(`TLV8}R+`u+Bv%DiX{rN=Y4(4|ea+L!H>pkl$_d~ zy$n26%hJk|YzGz6v$gVkaJFZAWhd~J%C2CGXHVs|V7q63Wp{9)=TPOX;F9FM&$xH2 zPS#A%(JB@9IKD4?PE?tJr>h1UciZmbWmQ>JIjd0pJm;$NVEN{o2n5#@@2r|_6RhjqQJ&MX!ZbI}JXc zaX07x?&Q6!e2b22X^{1vD?%TtCd&nk@g{#LI zPX+iMN}dC0E@zFqXOUN~Lf!MGS6yPwvuyK;LU1J{R29$Cz0zy(p(;XN9_aLr@cEHrqkU8P9*4W3x1gdacnXpkwBLO* zgJ<=7pLeW}`Z|5_;05nQWd0>1=aY9szMJSZ+^FzVsapExF;9Q@>$AQ^foop3FL_7q z#?|FiGkvRqSG-=|OSoF;TOYj8dly@ma-YphxewN-+`m%BHE=>7_T6zj8NN-yD~RM) zj@$O&b)bHi-yiJp2;Ux~9_EAJ&z>KmYUVo{ypC9%00t15>&4T3r#Uj`5WQ)>i^zPs zr%YlyS)ReZ%b0&ft?w$wZE|p%x50QyDaOhY=6j=jf5%;(C4Q_XFeI4YO+JK7?8$C# z!gnLk1y63m=7K&u-o@3j!RIsX=8C#)!@e;}h5l5wojs{!{uSow3H(C!G`3kw>r&ldtX&afz7g9E z)$|;GsXD>90GgMoai{QZu3kzxU%i5HHRIYq@;Nh9ji+mGNA>2=5LoWO9c^^=4%XS# zi#w|K(r$mMKEM)GRPV0pV}bMNg(qt7-s&^KEboEp^T^v!btl%VqZ*agd${^q@Ravh zbvI>T^({niG>u3|yUeeWoSv_|C(93pay%J+dRji~ADD{4N!~O5tk7^=rF#TnC$Coz z$IU>t58von*L&Wd7dYeX^z+{I7a~`?{CGO`Uh{wB-T{76u*W;pKP5DhaWt@$`ucrr zKg2kl@9&$S+3l|n*$uqqpB(2SBI|Jl$?%>6>B33w?KFPY@O5}H>s#eY4t z2z*cI#gZvCA~er?t;Pg-X-!6GdGWp)RNWF^%@A6znw-!oLW*+@)!XwmBN5@DHKWP5 z8aqX=W&-n*Q?Qt^oY5c308V9o2IEY|CdPj_TbM_ARkH}Q2-ToYmQ1g~YL?X3tm3OL zu_pG2x3dPdx@30E*1oYQa~RJ+vYq8r-_)8tN%T&u+0S`+jjtYJ#1l(NVa*AQ*iv&k zI1rZ4vHYTu1H@lW!K;k)^fb+3o3WehsJ`4fd3*3HIFMAHT&i^ZTp*{N^fy-%~xH>`_h$i}GXTE%CH+Rr$T}^1CU&nxPI8Vf9HhBwG2+ z(%1N%(qVo}@B{Nx=BLD2ctbxWeq0Fggvb|pVx;(l7|y?wI#tXOn?;@2BEEkv{=0Zt zd`Emm>=i!~JH%V!SK_qzwUjR2ls_SVLcA@XmVYd6$`|EMaZB!!e=SM!Z{^=gn*6r> zj$~34#U%Ap1}P6o4=9f++0sBIPsx)qm3(ES^sq8o87B=4GTq&=u*O53z7?NMo`maPq!c4<#&1=9c4Mros^?`k&9CcUaTwP&Qm+Ot}* zbX+UZN~F_TxmGFtSo3Rs>8uvgW=KEL>a;qkQ;TTL($BTH7MHGS3$%X)(!Xhcue~T; z)0S$>r5oDkwUyG_+A3|8^p5sL?aR_FZN0W$*0hb<*JP8nMcX2qwU@P*<^I|>ZJV5- zeN+3k{D8Jc+bd^k`?dY@Bido@uslRNs=Y2hs-4k(AwRDD&h(&cGYvKkmdi~KJY8dO zAWheeZJQh0wl?0_wr$L2W82my+1T1}W81cEzInbMUrkNj=IPs2Q&V%NyU)oKq|-=4 z%CsMX9%IT#9sL~m1o$Rx4MT?VbN6)EM8tw|JitxS#0KSmALy47-<#jJrD{t3aABH_ zm0aD{mzMI54g5=u(aS%;FF9lm?JOR^uENWdEmhS?(GjfM@$DU~)mx&CO!b&+#v!iU zLDqp>V>5mO)2dFI6Sn>>?=A0$$zmjZXi{olsvq3BNp4d*6`(o{54b_UK{t-$mm#8n z8a3H-+97TI&WNT}C+i+AWogzI=bwA=Xmw3};GvzhtA+IY5xwfY;EUwnZOCoTt=A3j zy!15dwBWSv^v`L?>2DqPl6L5ytm|UySc^Q5FdhLu^xxh2*3sAPn-}$tky=Uus@=F+ z3NM0u0(@$HXn+;CN9#xJN2o`0k5C_I$5bDtm%B#rqq63ejVAVDLSf>LbJ23~*nc?t zX|F}EQLlg7(d)D|bx$sS4X{6Qj7iA+i@{#jY&Tl+$VD~46sw)(jJ#g5GQgJD(b)mQ zO8T0oDI>sl@;oI8L^J7Q@>=`wcS?Gr{hrvidlY{s{~3~ zo(#2>%Z5$(+=r%zrqbz+`3+1^`b4r{l;cI=*mCdk@BON?fxn^q2j#VX)3c1W9-To$`y*oTNPN5 zEeMYcP2_dN2dEu0eOq)L8-t@oGoB+Opb}A!-32ht_*)+{?#47*SCe-$uCVjBFU1~b zM!j-RA7{FBK9P6DCiM0^>fepdHmq)A(+{DuXFJ}WY>I^zCWRzEKQ(G!WTSnm-`ZV1 z9!JK7%=O7X32#4K`uFwSHyx_i859N2HvGDHJ(}HKNNzoaI*?g6h%;t8?l!7J{HJ() zmjHi2`o-nxdT{0Ms{c!k$%dEU4fxTU&*4i+%y#a-$ye9hk3bZ^ksmH|z8^_WpBB`B zkC50hJ@1Quo1u?1#;Sf@WwTwKU89}Us;LiT%V3k=nzrNXAcgH|xNYb_cEfoyVIyJx zbze*3F4`PPzWa*%N`?iWMLT!ZsynWQ24KfkF>A+lUU%Lgu%2N-{Ik5IGVv^ZA#UCx z+Z1uxerdMVOj%Z2M&^hL(wyqO|L-*}=TNRuNrBnzW(*Q~uK4J_Vk6cyl;9**xQiuv zpWC(0b;A?k3fm3l^P(|Y-O=x~3jW`w@LbLZ(kze*V#eMw5YFN`Zuty@oLOPqC;(w- zNke=~3Y&QwXzzO zegE^m=05Gd=sxP6zbJc4J#W%(oU>mY4u8#7a7m`7V>N>T;?%O~_^1oFaBac%{-`{5 zbX+}Xx^>z7UnC!%Qet~D{DK-JbAI2X;&;ikN?QL zxv=naVHs*>h`(tgD1 zeoU*L%4!zaL16dIN;7rk{h{nA_s)yM=3)n-n|9Trdqd7AQD9=x1L*N*V6BDO9WQ)q zB5Y>*6)XH2$&UZ(OuiT$;!*)pRVC^(+zHpZ+4J1>uMmF8JE9lo>brN^b_)yGw2(mGA}3}SPGvGVA~;7h$M z2K+OrX$2B4-uty_7a)2u<^}{;nDrHQ%E~9^ogfCAG}pAtw#&N9sEfxtzHyb5Z^jP% zJe6jZ5PVAo+v|L&2!}faFCEA_4PMtG^=#+%lAK zkRZ9q*D}{NtA}5PB{4DPwu$T&R*I_5xU6v0X}oQ8`n+XdwX!_h{7~2;gU8u6L_t3)1Zj;b_?(3v?%{J`>lrI>bBVJ(RS8 zmgq@2T-#YYSUX-jUpwSK;@{!F;NRzmKZZP{IK(`311u&zSvJ@O|JAP4dcSR5iwzt` z5nsSW5%UO|yjgB^dFxo}3_TVUyiQsGiIWzHo=9=ez^~L`ocizIO&-F=Sm39yVzu~B zUP@0PW#Lkyw0O;Fu1(aVw61HnE&bUEw3_hj7*?Pf#w`iG>00!KH-8EQdcLd@?z`=? ze~!;Y0>(7XrsI787>%8top3qg zv+`~WRs(3mGWU#^)W|(yp56erj|emZ{_tt2$e?lzm59X!nGk^7!54dY>C}Nf2P8Xx z1F8brM4E%XYlxV?^ZVsF!Qs$j!#boN*NU&_^>dui2Bt!?#$UV?pjTqD^u&M5oLf)m^Y->0WPywGe0l7w zaF7*n@tif0Rh4DKv(D4(Jg@6=(VbP?s@1yO>ec#8$m)OqeK^~*yxR%lmB+}4%G?%e@ z7+i=H5{k&~$Ks!>UeL%JB4x^Fx=e0NGw$hk%T4U*E648XvgwU>h<<7OHV=}~Q{I*B z<-n?RvyUej{b@ju^uzOBeA#0?NgTPC-hDCMc}W_$r^!B55vo!&SN*M0AVfR+*vGuj zdooMCpK?=GQx=iINKmQ_1oq8Zr@VwYmMxz!UuV4(@k;PlW0m`(DuG-7=u_$-!iKHV zw|Tx4?;HWB>dvb-grxE4j{)>rDPPqvk)`m!nsz8HL|Rr$WjMtkJ=W5>Ek7FPQ#}|y za}@WnycZ0<`e^cDZQ=8QXVKl3Z^0?Jb;)@gA-361McmJVJB+I6s60 z@@1;}ShL)G8}Cs;q3`1tK@+uSRcCBlRc0Pyj|-6e<-0>9FrhL5;hx{2*o4yVC+j{?2Po(PE8_;%2?)VS?ihxs!pmZC zbyQjh=W6w)PYI%UlY%OXH-6@U+Y^T|d+5{IFqVU^zBfgfVh1Zif?;BoItqO}IjKBX@^#p^Pt3uSLn{C}%RxNHLtYyxmLv691Y?ywnqu&0fvbi;UIgcDV`;mq)(0|@`3FI569=+I zG?Iz0C;ljx{ZUP~l<1Ub1Z#(Klh!Jf2*8G&4^981*o7Rpr6=y;PN2|>GB65{ekNwi z9i*-=%De_xJ4bGYqadUB3wT3oQ=Aw~1W$p_$Tozf{BiIclMgNouYKBUYuxJ-jFd-{ z=TUmEUw8B2^q&G>ko9el7n$R4i?{|R?{FzpIJxG}r$IMvBkpPkS)0~Z4y^9Xog&VE zXirL(ZwIw*Eh?UCj=MlYYfYhdIl%dF$}S;il0kLHo)z()C{3Wrqsu25CDj!4%q!MSwunuh(QTg@ z4xm|28Vf?7VWB#QmwKFUDnrR{Y0yt%c@y2TqMrE&f&2<}OmG8>H5unWr6=%zu|C5e zdoc%G@T{{_25#}j6Ux^-Dgvt6>;bbke!mi$(Gup|;ST;R*=prR@rkMV(4`43T!X{) z$Jn!f7Fsj0?!~-HVnNCKs?bRePE1tSCt|9@^Jco`91{ZT2h0y^W4<)2t$m)eTLu>2 zgfwbn!cV$Rb}RTqI?MD^Eb2e_qI7wZFInt=XMAaCWQ)E-#D3r{MrgEZ2mvu-U7w>H z9)oI574MU06FKz+G|HF|5~{*Q1Q}%R65`_G!nRA0{ZL@m?6nY>vg|AaOB@eXEDKA< z(q{u$9O0DKQ5q()EUn>60gvgIS{+4yAH6T%J90OLjD!yP>L+MX3GmtjW!x%Q~MO6HVC#W0(P@cG=HUXSHT!urb=^qoZ z#?hP^%E(6I{2)2vIgnF(&s#M}F?QgDI6+TzVX^&BeVepWif@HA3@?) zQ`?m5vpehe9JT*qaf5Wr!_2snq7|c4rBSlznV|0G;5I4C3g+-I%oBHm<8BRi@<4tP zxOpW9PP=9 z!xr6xN2kRr2xEN8$h5>u}|+{IzcupyCW9%n*PZ*J5F(>8jHKPb}*#AG`r9&;=&1zJ@1f#r_|Eh)S7wcGpZquSZ}1WGT{*Qtlu^& zGZtHl)Z3g(fbeRPBhn9bHk3kzbdtmRqhjhiQl^rYlYI#XSk{zzs{q zxeC9fR3zgBaI2RTQ0ZlkpnW?CYZF%Nl|v=rfY^T`v53)ak05CE#@HV4qQDv{=bTnM z;oMI}qXLou)Rw_1=+=vOd}TVYOizuHs;9A%~^=vVY<_pUc$a zSL*c}YgP(!o4}4VaGeQLwbn8GQ&U{#-s0SnB&kXrwFX}VcVf^AN%lRS3{!-#PZ**l z^T!TLc3DpCUhh_n8`RPFNLmjS*9SiUqXQwAJqPyZLmBj)anZciSq4+;UFoOvt0tr0 z;C|@aRC9eZ*}u<=x_u~qCAo&m*gIK|qf+K4eojqwE}DR3-JwFiQ4aspToH&D>gj-c zc&j7|dV->*4gQ4E=uKTM9+e>rMVqwc-Grf`Rw{TyeU5+CD_Z># zbmfcN&j75rQ3|&5hc;aes@4H@b&=y4rWb|~1QPOaAq<5OIE6AnaWema(tJ^LW39Hb zl8i;G+eyP3Ld;sgDMIA)MC|%yG(Q&xG06PBZKZ{we1a$SM^O%AWk z!gew@+bl{At+HRX6}%$fb3wd}em?C@Pnp>Cg2w~*ls~(br3Tv!$OK`>~jID zuq@8cU+V=@Z{U6K0S@5%??L;lRM$*SiRaXAl*&$HUUFHO`Nighk)(iaU}-UV!fX1COs}jCzMFHxyapFGaLf$# zZ;rFlMO69n&?ZKL1H~V{pM@mXQg2|6j8~+N;L0UCno@m_DKhfy5l@bW1dg>pB@!BB z=SH={Pg9hg2kQJecXum+xkbCO1Pkl>$_duk>;|P12+cojaa4st{6+4m&%xL-o)N04 zGm~c7Mn1B#`@HVB%H?^`)uXCrh~MykmNls}FEfe65&YzMMSTvY5BQ8IwBLzhv(?Ri zYcpf{=Ag_g(S*0O5<-1zws*$?EM19rdHy0E1}OKMDe7*wt`J6;29z{LS(WH;AF0p5 zCiV$OSIssH#$dv?Xpyg#SgXcF-*xiFn7)}5kxof3!|l_{;9Ks3TIA}}N|mcveUW6; zAqCZaypqP!3j_$d1va(hGu2IFqao)7F;KICN-;n=beQoNvwDwXI}-{32~-rul-6!o zW$9a_FxTaA&5VAC&nnF5dOrofpM^N56sSiQe-h2mQC-nY<9p(+5!D_iJ7H<%dU3mB zX|urbuQ8r8+#`C~2R@@)Dw)jHQ0)~vpZ&;9(Cu4tMIO{v(rL&zq1iuhbmg1iu3jYL(1%n{Bh3p0QOpz?!W4L_h95z_dB zJxR6Oz!T)D&rxJrXcld)QBJ}9$-3uRmkQ9gRAidAN_`s^5feH%`DkJ>!S@K{(?rPo z$##QSCk&tETZq4Sh6zh|KmOXU)u!4seP4@@VP6*|sE@*>6TW5YmKEmrW9AZ3s9=+i zB7shhfbWt z`1&Kq!>Vv|5tkQ2nH0hwe-K}~sxTxU$Np=Ns#m?KgwvcK&|u9Z{Y1E42B96&mFM;klFA&)QCTu#{v*MZH^NzMu;cuPG4HGW_c`AqqX z9Hd6S%utPIxjt(95#^clJnis?8~sbD5OMMyx4-)~4&Qf4)mSZEpuFFjjm~DoSc_lQ zxa_Ixu+tU<7&ZB~Oebk?%~3w~hXtB4S0bd|yaLpwf2EFnA^qM^%a#OxM6zaj@|~=8 z`!ii2oyo-%v;xV>*JUA&qQ*2uVYi5C)I3mA&?h|F>r2Oss56nb$74n{X?vmw*_G*F zNX87A20C^&YvGu)f}aLW0GtWA6TP!PIDxx%?(zY^UfZ4I0s?LO_+>3;1F?Uw4EIeXLh3j$dIU;nw$ozZP* zIG4937$`1g=<+lXGRUr4pW@{KF7&(KU~J3h@Z?4)O(E z(z2(U+EC1pfEhMT0jJCi>=g_e6h5FDgbGE{YW62vz}Kmj0J@*2Folid-Gtp8-D2G) z-LpY%jqu(7?|;yJgH*S2I3;KU2pyOJjEUTau#h1MGX@T16a&sed-og$4uC8N_8W{3 zv>h8^l#clx5((r0G!)zb6pQ6~qxwy|Co**H3h80;htCC%+$YdPRbvt9a=dx2IK2(2 z#PXK#-cA~-$OB2Vvq!{5-y%K=Z_JYN#1b{be#O}u4Ubr?eBpF}Uv!uiqW;>x)7q35*Ruo(z;}i@niWZAyg7)s)a<%Xcg(gQ8@j)V!%C5A_x_>g$ z3fQt29NKR9`+s5h6mh30)|Lm({8G~X{ycLg8jlu&L8lBc53B}Dmgipdt6Dph=}UyP z`KoAg2o?Jgo zz&*JUFk42$ZsCbLBC_^iSs6#8R zQcg{#9Zx=}kh3al_=YL_1C3h)Em^#ZS}KWLS1pESu;qsWHC4;+EM*0!L}zWD@$nI@ zefq`Z+YvAO65St+j*-sNt$lQ*K63(V`s*bZyGSSgZbBZa$bX<)6JPRQNUKYU)RA2* z?n}Lar1sLm`Q0@&fwG)E`xBmf0uK#`^5)i1Z>f%dbY+ioK7Z?8g#Ee&<}c?iTT)*< z?l1pFyhOghKdJ+2z`o!NHcK^a2gN$)qgHN_**Lyn+8$1RTFM8}=R zpnAuHkAj5KKJcKDtG$3;si&)zUX7<4lCSx{c@iqg&h7M&2}4|=pnm)1Sqg*I!!H*U z@xvao;o1?El*}_I3{8n&c@ERfD=7?>g*)At+Ite~`1omjx)Yr#Je8{u6i0Hdiq0SvN7TN+@N<&KIb96A2#33{1gfkUV9{9Z$?*?01!5cURzYcgoH`zQ6JAHyz(Gq&t0qU}jG@M9)V zXr6@0GLE<^^0$>2a6D|_t*oHf!ugY4R^p;WyzIIFU9YUa?x3N~FP<(J|BSK94~NUi z$3;h*i!x0oGZB?CW0lm_L;(;>U>;rz?-d_e#5J;U z!43*PsDfEdV?(7(Z&z6gxw#i!T3JIkDrm*-u`HXdZ$ywg=#i?cqitaNrDc;n1+- z;F>eDt{IvJ^$f{EkryIJ>T}|F^&6Tt^bFwy#ydfgSK~!t;6_Dp;iMZfCy1RZGGqUY zk2f?u1BSoX_6&Usj30&~S3!{cjTa@yhLdi8G;#{X=72Lc#+>FgYiRzvXG{l*ydFW) z96xG|1t;BxnH88cH0|se5)F)(fFh4Xl-yv!(K2RcMUDCkCGUkFMgPQvt7Xny_vKS? z&yY-Dyc!g_4T9tXUQ`7ej+O&+U5}w@V$V=J6nQ41p4X(Id1TL+dSJR86x%AIxjRnO z->)X4hNjIuLqvh`9Z=-5Jww*ab*LG2w_T=t;DPb)02Dbif+P}N6ag#F^N`_QP0tW& zV0D zVaIY5cM{8j=-%MUON(gB#+EOl)^S5VUrn*h8dxQ9%cE5E)gqFvMZzr&^JXW`ZozHJdc{@hi={U6ZYSPufo)3bMV;mL z>YFOfr8@I=C+=>cZ7O~S>t^1A4QqEp4ZRIBcXJI3XLeQA+72suoXmEtb}Slfb{uv9 z+d2Cp^CG*3@^9MecUJJ7NvHz#S0 ztOB%|m19Z=J46xm=>hn`E&0o!`+RwTFLIIru75Tyb-L?^s974TE^hwcq9|2K8YUHm z;FzO7t{fvvL zFQ!Eb>gD#V-8J9wxVo1?yX2-WEmA9aGdt&@E#~({7u9Ayo6{<#l;`Ub?(^mWx>SC7 zf@!TMt=^!w-8_G`2n1ii{7}oQx(b=7Hulp~@XJ@fy)0iyKy9sw9bwyK@pTWOe|I|? zX3ZVN;FZ}Jck#(l%y+5}spisV_#u@@^e0rgeDx%|G)Avf(*A{+7bxvi-t2B$z7R9E zr5+nuGtk{N1w=D(8l*!xwesYFm?=ss%f#|p`^9*J4~JUOMSmX{gF!DUba*aJG0qVA zygL1oLhJ-Jy?>mwc1e#Qe7y?sW*y>9_q^@>7m03u;-SZX$vk$GTe%+hIlM@a4^a6- zxDK57<4dkwH-aDc-iL{#ZP;Tfrq~4&C-)}}^Q!8Ks1 zkK*M@W3kZ6pCQWOZdQ{yJ}A77)=VCIMcHfNUk~k`>-MP=!H6M9|pC; z#y<-pqj3(tHe$yb!ms}tQCDP>PUY<=w|%44K~~7@ShnHpD7LNb5Vv{l1hyrk4@~TG z9|9!n)7^jY75RPNHaZWJtWR>+<;%}5(*076kz-L~=Rt4FSSxi066q7ms!z9Ks0wp( zCH+2l?P%F03=if?V}&Ryc}5v)BF;G5|E+n^$C@QSJL8e&_@V=;UP@hdMjO7^oBh6y z9(A;~!W>I925So3gb2D`|NvK#Ghrm@|rB(YIrY zOxT<;nqHAwk*cWrswgj6pTDTXSsN~8>MH(c%+Q}=ywL6bsh5phIr&pU{T>A`+bGS% zR2ElzBsvRzOXEW6{86dQB#IaK6zW0YdIp!+6L{bI_ z2WKU89EOOtwsb)0@HANhVA;~9re*jVW`3!w3)7vKB{9;6=~%8kO@FT~LEZUIUPu-V zgN+AkU-Zl&z56abOD^4B=mkErKvPsqT9htbWE1&)P(9J!?prjkxVEckyOj5?bvnfB zr<{&H8_*yjqNipV`7?(*Z-a3P-Q%tk+Pe$QyNlI(6aD=n*uVOh;Jsw-OP*qRfns^S zqTh7M{Is@ELlcy?4tix}u;9H^E>xZ(_;g8Q8T5`OhSsSsXO?=fiDeE`2xg`mYlD^l5kWDRl-O50~<{Xg|Q1=cp-4~5^U&` z7a(iz8Mbz;!^x_Eq>}B~_kbCabgV2X9r#N;;EQPKEpO?~a1<(ZM-K9W3iDoy_zv^Se=fiuLQF_Bk2rrSmiZ_Y z^92>@J?y8yIG*D63k{^RYGMbT_4m4Af8bNhIqF^+Et!0T<-Zktp2{q>2|DZ~*%KnS z+%^M&Qva_|A@l{+%uj!LA>reY8jcHE4vU&YTBqPP*vXc zJJXG?^39`yYyqKTvM>-VXfP(sD~sqI~Kxti7NRpTGa_X|Q*!>-Tfb+r-A=N&c` z4VZN#TE0-Z{T3z+Em_qIVwRtZ09VJY1J~C&_3D|Bz4!K4ax~W=5@=?Kum5ytng`bI zFuT@23gWj*E%c5S=9ow7-TUME9p0mnca(5_ex_DKf5^5&lYM*MBu=m%u_pk0H;4Nrt%#hR2 zqx&Qm5U_Am|E_IR-Q(3s!;qm>uI>yITPGZ@Ig(X;;-V1UCKqF6vBN0Pu(x!;!k`l*uAM0n zJO>{e0atBSX=D@rnA`M?fe!Fg$fdVIeWaVDUrf{P%f=aIkU>4PwQ=jR0iU=4lwY6v zMGAjcWM8y-EIjZP+F0ljy{a_cKal&Fl{{wHeSC;ca&E()Z4eT2Kb?)FQr+Wp-o3@I zNLdUrUMg9wT%7`Z7Ma;G4;PJggKfFH>(=G@ADMn=_oszI!wqc}+E=%XgOXN6JdqEk zknBQF^5PAwW zU_G1v_1Rt-Y{y9c+89D+FBN5}PFyfI7*7e?jQpa9toG-x&9Fz zAcweF`5?gEjHeVUs2Dw2&u{r+`jlAd#tGnb%nxTUvZkt8e$&Vg4!$?Xqwq|^mCVY7+N{={^_ZQ6V|=Xj zdmW`Vdd|5{@=nMAtYj3@X*fW zkVw)^r(=!DGka45JoUoEInA}{kMe$ds=M5^0RG=jQ6ssdKM`iBo4Ukn4f$QKZHOAk z+0uZo?7QbyG^Wmhmzxdd<3DVPd3y?5on*F4!=r3zj*F8+7yJ88&bv?_jt7m&7dMH) z*bTVWo$G|xwt-Q51z+vsK=AXm>WWwYar;AFe4@qh2b`J4ygBcO;g{wV-S?K~{WkfH zw|(yptK3X3PM9T?lncI{@8P$E)jB*nWZ=MpO(t(gt@ZhmJ>$gtd0=X&54Z0RzxUot zF0YQ6yPe`|qKjNe!DsyR>Q~cF#w0caDk!}u$MBD%awO(1Du0Jg$&cK$YP^M$CXq`u z!48KM2W^EeQdMgna4bwzRDGtp&UtG#!~2{|Z3DtjK)HDnmzBKzrOWg)HN@&+>MQ=1 zyN;#G(w%d&c$*$Kuyd)Zw)dUv$UE%yDfd9Qwq7ctKRqoaRGXu1=!o4W>8>3*o+;m3T{=H8K5VbyDl@&k3`~Sh@ zcvO1fNPYP_n@ z!T)g^Zo}2Asd^<-ysLnGqR-PN&?56lb*z2%lrL}4sMF+93OvdddH@L4j=p-a_SX9( zxj$JB_(JRd*a_{{u)SLv%B2oB8weh?l9L-hMypV5w%uHyl-N4~T{X|`wAhKrou^OP zm%l;{lA&B*4;;0sa|I@$wcoJxUb(9+o%Y`*t+Vhj*LGIx+M%m9Z?u{{6~4)ib98+U z?}=z=q!nlo%g{|Y69Gn#lCFn(xtP^P#j(9o(4Xw`I<8w={ix4@7Y*lULLZ@GI+Py1 zbQv89$`%fXCB++!CJ}?`lK}LEK9HhuHH8jk?t%vGgpNhZD7ngIvj!O zRZWQXSCm#zEk3EoC$O>%nDsR6c}(0jJgi@`b(K^*+Ju#3g2mW|1G0o1lh6m?3j-dT!9mT|E@@{+z0tK1bwz zanUPzF7act*4z2_#CDH2K)=CB=3-XdKdZ>w6+eBo1=UV;LN!UR>0w+HIWMgZr72mz3bLJ)HZb==WOQDu7=B zJE=GCcxgeZK6#kFhGAqd-#fF!+!kfklkq-~!edW;vdm6yII(HnDv0O~dvNE#bEFDQP9+COCg~2B$OYskbJW7S8H^4)eVn|V_I}y?U#s|;CW2n6(^IrI_ z%zdicb*=gNBnUJ`qL-INNl0uV_!ek2sr^S$alrqBzPv#L$o(_k^5d|WX);5 z-OdstrNL)8BP!V7@Z1YnEsS5)IsBY?vaheD>a43ya&g`l-HaQ=R2Ce0;@&&$yY;!X z2dbSke^-sQe0^~szBb^Y2dZOub-9_OEFW%1?@7(3 zcK!KhN{>1F<~?ZaxIhmAh2@KUK!lp*R{%o%mrh=|d=fh1EgC)r8;& z4L*@5ip!yV`*nsUAuPN=BKeI3hl~V91Tae#5aA>}qgK#_LM0}t3y+Y+ARCG)Mb#G{ zhp-^P9o6cT)4JVP&z_y1Z*Kd1KXp;i;6SeSjLlh#D5dh^(V9BHaI%Qd%hGI(>%e-s z$fBAj#|Yet)nGG3ckx%jbX{+Cs20cc_` zSrS|hSa!Y&w?3X}972{JQ*i1hPCb0jisBQZaXf7xmk@ z6I=egYX}Tx!e!oEYO+=^0CP-V=1irtUF_ZWLnr2vb3Ha*1va8yrNvk~G{cYS{@(`Z zbPqX4VB^6rS9>eNj7#!y3!K-Lrygl}1T-Z~p!+(nFX-pRpU+}h;j3qlD&ddNqfjlx z*{g~pp%9}>&b1n3-ldjD<$Q`ExKr}zsT-Qfj20#W6N$rt6loJKAY2*F1e@TWP@oHj z9ampK5y)6?^r1D*ft^5TFJAH0dg-iRE0f$r@iae)d<6cfVAbA2;Hz3Cp{H*CgbwYF z!Li z>AWlw_ki$)XYz--rjUZ+L0wau_0Y-9VE7f?P&6IcSsa!ZpzAO5Q`1tC&CVjHT0fQ0 zbpgFgmXS}|3|mLM=jUo@9h_Lcn`nQ#h1k?zZkDA;9b+OI+1L!O$?b#*cidwF8v9(E za5S!1f?DKYCa{h%M~A=op7l$VM^}mR%a`&FFD>jx$BIt7JFjP1zi-86z{}k)h_xsi z4H9Fo=Dg)6fq7O8!OE@WKy^6f-}K?1Rigw;v&_TUvDV&Rjaim+QK!85l!d62_TJ3T zeWYVK@(hTGjhvn9!3X@TunLTEkiNgi&0?rsu}gcQAIFZyn0ZqC+QqJ35ZsY?fn#dyDR8=vpaK|HkO)Ia2n497)$_ytQ6a`mUpgY}{xvQ5#g8fjCD5e4ml5_) z=uWL2YU-L!HFpM_w-qIn{!nH837<1-5smYz?aTzKVJc;BehHkPlWmM>)Y#o+-%~3P z>p-6a{tD-l^rr4KA&0>zZx4n-bW-h&E(Ts|0X~Q%X}?9(KT}tezr&F}g?I-MP?h<5 zRKO^AlSl+lA}$nXiAif<%fiSIt=hQ`lv>z%4oHRjORK5s^MyyQ4A!zYF?gHLvB&Ty z4XzntE4bn6z7)DhSA1C6!Xc$U){L(dnb$%9j!P)N>HQA{uh*Z}_seR3xo)7KYBjqo z0V1V%M3muW!vsGsX=7{C7%D_+%cZS&p%D1Njd;nKDtC8S)M)Y`(#uTw*wZ+}Vg!)~ z+w5>LYXNnXlClGB6=?B44BefTbDZslcUnFI(5jpF&g*>!yT657k46 zCxyrR&F=(ScLT3{Se7n7mPx2r)P87Y0=3E+t%kPdRUnM6nvw(N-?JXtO4=~}*N`_C zM1L!hWPm^xeAp!iDPe@sZ&JKVq|yj6AU$2{_3^3^LG3L@D!;8}!=(v5326uYNU$;E zN&+1j>h5-=>QklUQfxWup90r2+-+Ld;~7LQFJkw8^QzfA^`r{hhA;%-;mz9=~~*_tcRc0R4b#1v@iH?a_zC zg5cs|W^evDL&paDFUir2dx;(h`d^YWHSY=?50p8z;|d)gnVE!xjpzSvW|FTf_4Eq; z1B{C&wblfQ3SejF;^JbGGqbmFwPYb-;b389Wfv4ggmZCqHZ!tAg!9Zg(}VTJn1BE5 z;BmJwxA3sAxU`K~w*?D;1QSR51&Z|@1lIWHPgu)L;XV*D>abtVuoy6!(Qvfdjh1DN zs@RqsrE0X=*LnK)v}!ckm+jWi;KOf#gM0nPZ@iE&Yx69-0#vB92b& zl$Hos2-CrOH2|f&bo-g)M;;*?qA1Ahg&c?P08WA(P0eTV_Rr^F9ojSyq~@=6-xI8u zgWG039uB}T(BrrtTauBcldP8%nUZQHhOyD^)__Ks~kZPeJd(b%?a z>zBUoz4!b6I(v+B_8!lg-e=9Zo-fxWAY~Pf0|)nKFB>Q5M#~6Qi6vqE<{G1wnzzh? zPWT|5w#Q|_F_)T#!pRp>n&2%Uha1qdGaA1njBNwHGA?`$lWmnj>QlRcO5VeO*!Ks` zIUWdt^l0WdW9m0w=7P_l=P13y#lA*>JfBvUr#bhRc6yJ(Ft*`tmfu)16jiuCL?I+k zw-~>^YTqiNO)-A6aPQ_y z(PK2Pbeoe9bg1rZO7XpC6WHe88=<%cY#5#)z8*#`UN6M69NqL++;fFYSbGgB)4@YR zi1Gpa;QT>yQF0*3I`BE3m%j?ML2B@#efOlX2TMMC$%s&9n12b<%YqoRZ^Jkt88k~f z;9U}4;ym%5$szwzXiD@(Dr73@Vnom0!jv~zbnVU;Gu%kJa`-ZiPtb?-<%B32X#PQ4 z4U>Th!FTR<#zxKhD!#0|`FLKXRryzCF~c3OsPIdYMN#^V##n0z&7y;|bV?p$xw6Qs zDUT0sTT7rJPQUZF3ZVm3Vn6`BO|CU<1tjm0RkPPNK*zz=v~_5}o&tC21Ib+F1*^WKD2k!3!KIx^f(s&$Fv3AsRk z$pWG_;`RXZeuFWX3xU)o_nzDp>()@Uh&YFp&Ojh+Mb1{3zy=!C;j=B|j4D0Y9qxM3 z<`*N50gNk`tYOYT%Z0z#>DqGp>54X*XKTY*>+@ij0)Z-f^o?io>iYa%)tAT2yWZ`F z@dqamoZvk?T}V)fZ$@g#b{^r%a!5(`@ZXnP^~KY>D#;P*{C_G1G9V8 zmm-6=V2bS}EU>y0rkB&`VL?i9uJF0<3z!Ld{y>0$w1lt3?GKF5)?WHLVaGF55I+6+;Yf8QWcem!Eb+C~D+eT>|afZSr9beUWq?0`ria z;G`gk($B9*q$X14u$r-^vGw9r{&2t&gv%M@qL7e!m)|Lf8V?wCQ*0J@Ygfc6M2-t0 zFSloR%xM6si9o*P2P9Q&Fs`rDuIiAWe84XkkZGd8%r9v}LPOK=mG=BgxW)Lr~beu$&#crHk!#!0d_yJ*zKl83K zW&|(x6ACBJ08xye!>*&jR|hOWRumuhz>=Vsvq%shA!%rjQR)SXyvt-a%ntv$`I2Q9 zCW~h4U^#>lx+IR`#0y_`j^Fp@H^h^<-IwbL!}NQ8)$X97IYvD9@NpGG2nV>)+4TTe z1N3XwCd?<{)Tr;Uj&(qmZ%t9nkDV z8{b@i*mlv`aa@Z(!d;hFVLh=wmfv%~!ki0r;Q54jLB8TY$?q;~E?h$H%GnWI>)Hui zuT`meqWR?Am@Njs>MTZkAzag3^0A4|3Jxuzxfj?bbLN59NUIe^>UIM&j?cbQ( zP~A(%S2me;&#F+KVlFYx$R1I6qhCQzg?$jSMQsFqkX*X-;|ToMh7fvZhGM!{mSHc= z-O!(uvIqkBhIry~LOQ!{hGKeQhgzL{zUs}sLn!o&3;{u%Bm&@-gcrdY^?aACZNabK z+M-`++x%W}Uqw6t`1>w_xR1h{n@jR**vsU5+BT?{SbcwhsPo%P+z0%H#Y7j)CH-~j zrS0be`F0n!yw85Pf$|H!LwW_aVepH;Q(W7)q410O!19au=p1-o2Hm5+ejWn6j_@({ z4s&t%O79i*YWoQB#P^8)1CR`A4T#iZ$yN zYe92VUTFyZw-`k(!mMR9VqjkrwAmLmJRwmaYlt)~SBo`IrYg1AQZPXoiOJq95d($h z_gB+>H~2kpv;z1as9q`Zv*I4wA@!sGvIaLvq_HSPw>`Jg;G1*3ZWjkZlj!C*B3p*k zF|&vQwJGW7K_qS@OT{AaG_CQzh_Cn#a;g;ZvcpgUr~{lixmACQQ0$@WIg3%!#=?Nj zJSSo$6L&@}(qUR?@>0?p!L{?P%5|pgAwpWWoG+SppHYehL3G4Bwn^W8g znemkg$I5&vj8ufeQXqA#=iyj%IFHd=<8NO^P?P-Zbw%QDlq{R771G%-WMaVr(0c4y zzx2)^g~$v_>7wILcHXSfntoz!QJ|JEj6JRdLNymmHGMRb&@MBr76xj)57w*%&sj2$ z&|Ylzn0xu(+JAWd%WRWa_8y&rri9S*PNNVj_JFQ6M(U?3+(bFX|DJ&hp_b39i_vi5 z(@AXYdwz-L$e@jXuSoP^u$wmjZp_3Z_Ir`cAbKXOZ~udYlSzPVHVgopE#^W=Ew7>d zTSTct>ZweTTR8*G`xlnNjvdJ`x1}yJTsedl2Knp4F}LNR=syUTGXeIIhopy2+)6jY zI_yrl_W_jB>^djhag)dthDcyStQlfqJK(jnQvQLy(NCAbJ(8(4#{BVOP8lS;XGmgbuB>ro(sD+$w4R-kAhbH`brC_G30 zjJ%%lrpa1IwO}gv`ve5OZ$D(arDuz;E0L8!-n_C!FKy;dc;p-fJue>bcUfCHRlFu?cpm6E|?kD0#T)gYcr|3mBUu$ z!x~On3hx27fhW`;U?LC17=62ielAt1R0wY<9ZEhjW6jKUs7NIPtg1bYEc4epcqIO2BxGo_xmd@N`#F~8cDcj0r?0?b(8L&5z&iZ}vm~pV z%NzcgH{2T#UNq-CJI%fv`5Oi6vlbTQ`Hw;`la1LI*_Z1T)HJQ2BL*kKmJz~5?*7#M zk3K2Zla$AD- zS8q1!l!`y+*pV7OhGtD_4!*>V6PG;%Am&yTQVjGxw&SE#mlAWY&MEsB@VJ#qPl{IA zT{Z9u&;A3;yzl5uDa?;lmKnEQu5qfuyF^$W8J$3KK&!d^SIPM7th$(tO$VMO7Yt4K zcAb`53L%wxCC^nwVtg(sL%a{=f6!3|9E&C!I}xkNfl=)LSvk6=3I{Y6!oK=+&ctxX zEo5z3&W9aRh==EwV}=Xm{x2`>U`|Qd zWqxLde?6;xm;jenDr%O^*~773guI%y>7p93tM$tbA-;U?e`9+o9Mb9vlv>#_*#;lERu zZc#|)wjE@0slnIiKSzgC)-1bzb8FMp;r;4l{|u2H)2>+(dAJrW5iarJD()w0%EK{wy79A-VPSamr;^SJ#Q_T9N zn7OV$^cFZp6Azy`hu=Bz8@o1tdtm2*!XG6=QCnJjD1y7b%(qpBGZPu!&AYo!()XRf zSasz7Mb`(28OtHoX>(XW?cAs=x<^$QI^RZ>u|6d=!F|1Z{0sQ(hb z-==S#KGTmp-51rMV=2uZ0}j-Wdtqs5OZmqC_1ww@96K%*Wz&p>w6yGFsXK1nFSZQ} zXI%VG&|A0f!sir`9qs;ID~XTZ0Q}qc(e0in3PedT3ii((JjRiWk#9P9n`iR{GTJGu zfV7!-rIQDm$VWB`l-pN+Pr^Csm-4t-LBd}xiK_a^3kTMpQQ7yOU~SL2R`$=2O+L8) z`*JJ)b$}^1K~Od3DbE<^Z21p$W=CKFEM@TahMuIH%*9mRze)v=7*Sfhc=*%2_5(}3 z|6&}*?2-A^M!`cmdgFxWf8qXt`$~)5vSn9=lhaNZ%8nDQMeZb`p^piY_vze=ntmO zpFTP-aISzBN-YBa(DK5iP(%Bak7VTl*Y_nZ^B8(O=lLO|-ViuEWISGrPex); zm=}!Q2Og42+nn|0c8~i|r;Fs7dKnjWP8QTrNd+0W{6}xSn3X+Myzn)%B)WLYR5{*3 zW-t##{ZWpxTodt8fii0HkceJsM)H`a?bB7vB0oTJ5ovU!{4^~TZHI)(E_vX)DVh$^ zawoG{I4+KZQ*?CSCAV#+dTu zm#Bf45VXOrdbHg)Cc7C6{o4>s)P4tIO(bw@51UvVl8Q>BJ}i>++Uma&7(xkWCmYfP ziL;|nDYLSJ_~pfxM>7oDeAqDa;3orWoY#{j8ZE31o>u+p5v;Vlr(dD@1Rs3MV&=|&@hM~1&`9dqr=R<^DCS&a8 ztLT-YqpY-M(Hg{@eCXxT-OHQv_&g``Y?O=z)Wi#cKT9S`L#yX74QZ;D$m;j1XQykV z4uiyg7ni_IZ_&?(!RuA!vulRfU^l{WeV2uNqx?u;hAk;djV-Zb3J&X~Ru6K4Fro(d zWsIUFN5iMeU^n2ZoXI+lgpSKfbhcuS?Ga5Rgch_R}gfK_N^t6H)4IhnAIEzBwQd4LNQGOk1xjY(=)!kB$ zaVV$zhXZbpO_Mn<6+0cVfPmcKSPBgwtKW)G{`z_FnPF{=91cwXD^hw@MMa=`bqmB# zf=XtHy4jrZFu_0r@8JI2y=TzBcT8Q#d2{_q(3PTrQmj~T#ncsL-}(pf@&-niN+0#M z4DiOLGVvV65+_kG8*0sCrtQ(l`oFZ_F_~%hcPV)LDNN~UC*P9uN2;W}{2*KhBnozV z3ygP^6<1`{_O75uNhR>}$hS|L&#%Dme|fvPxvA-{UE0~X>8j~|&ZRp^a~1`jH2if~ z%ZxAi#eW0+EKtXeh|^KQT&Ox1|Ali%bv-zSCW>oNzOa{tS5pU1pB5rS(bTA9Ka1t&ylV_}2C77q5Uh_paqC-`#f&>mE$zU1ig(AEG(vMRXTW+dEJYV4X? zu0B4$U|MT?G0dGRRIgtnbkfjR#aLNvPj%1gD#mgv4onllocs z@rUq&yd4#jGAarFF+x-Fu?+XgS&X057IgBg8d?6ykQo`fZ~F55O0az*BRd0P%!Oia zUC_jljJ8q1IKKRWG9hXVz*NF)mUm)5dLJgQxzSY>PFTUusWW(-Y#>#Y4DUj#saD1S zn&d~)j#KBY*6*~`OFcvB7pO@x*m`fF#bXbxACBB%rE5wj?Ml0hr-OJJ(tliA&_+BZ z^9CBGB|5?#!M=BRX~Muh$kpL0GZN!~7gvctFTiy*LSxiRGWOI5tdS7=kz|p?K=YS! zVOHVbs`idly9q-2vs?oyG=D)yziZlifA6M(-ncO`}q4A*lZXREU zTYobQR)Z^FO%M8%k-r=Iv^UnV3|}#cB%Y!)W21HCuR(;<(66*}B3x@Ct_s$Kzh0on ze839X8SMoMmSThe0s3={xwl(mai`Ul7vA;R&Q5=)J+z=J+jb*@I%^O#NhxQDo2h6vomCX^5go873s52j9$>x1L&b{ zcAQdZhR^Jc73X(M?>wD{o~xbIp{6%kQp{RSSXad0SPS1UR{Uh*kn;l)eZ!#&iZsbv z0zF_$&&go>?8Wn8iskA;L53l+Afa%z zX@s8=21rh^mx+S%GuJRux~>q9rrs`h_(!!(3VOVTiRur+OiPC;n3!RR6AVgEm7L2$ zPaXvDpw-(=IMy-q5O`r{ypP(f;j49YsRMPXVOBtUPS|QE=XyuVSxNTegs$T)t;#~d zpHHs#9b#vi{2^^xhb3fWt-90*TD{*K4BQql^T1yiWUVMOwDcs4qWyRx`D@A-&Uq&cX+h>eKewq#ig zKDkuIdVeeMKkxRMu+mbRfFK$z4_IP}2#XS<%Q7G$&18gP%}kJf{Tl`T^zY~R;x|m` zA{Mfk#D?<7Wn#U^Do%K2vjwGee@fdu`{qfECcdrI^xWTm(_!r8|MSvu{tXq0j3%9p z;$)n5yn@q2sb+}0marC=0n~7pzHs&%$_X%1RU5F>sC5tThLZ{+Rr@?jrQWz*Uy?bJ zjzh>7-h#1*>P+>Q`Y$aEdI1J_xR=;Das7}UDSBG?A~7ZP2n_{OJ*xCb$Ur7o&Q8d{ zHE{u)mEHF;+k95?WVwn(=^+N1DUN}%fhTSJ9rYbly1~4y{9!b>K7{}c2p0oLp)#P( za*r)3PExxp*alx_hT7P>c(0{SdUgLLItsi;gk;dDLf$b$cdVhDOIO-xO{T<{Pr4-h z&et8TPnEgdPm*k=G_JQFPBgT&bP}Cjp465Qw8-`&{^)QmXJC5msf9-XpAMS&qGpHM zNp_AHNpiUZvhJKo--_{myIM#`Y#GQh-3d+}0OMtVHcc?5GITl>m*D5#y;KBwN4X@l z1=DA7bpO@kZC{>{_hCUP{356`(*q*6R%d(rIC-ncOI|DSlK8=a-z_t%I#RUB;FFEo8+LXP_)-{R&;}?mLJwSfKD8fed|CKi+{@m$>7Mn2 zrqXxBkVrL8D;Y|s@B!)2u=e)g?$DL5tUunCn4#Aq6_RbSgjCkh4cp9Mbt-kjX%Q}? zs;r+8WpJk3#4iB+%yD!}_!M|Z7_4VRWA7R-Op=qSy2VaK&|uog^#ajshFb=H;RYMy zne|xQ+!pd*()0S?>4uRpS7DhNf(sB}2(b*UjDdlZxGJ1y^S9sN5=poWAuW$~I6r>b z_Zv`peGPEta4=>ZlRjhF=PeU})vFTds&aco&0=i2vJH5-B{ww3KLKi(wnp`2J6Rx@ z+`VV8m_6@ibl^*lxbSTookB?3GZqpOD&lcCZ@LHDxn?N_GoZc%7oFLw9E9&QA8$JS;fbcg_D0~GmjkDUB^ux zX5TuEW!r?Ya`8=Vi~%t4)VrH)nL0lg)2%$>Z))|NJ=TSNjDpR8=kT7r{aaYm>f>ze zbojht!|(<=Op-nDBv=#O*=3F=EhWjm2-ENf8OV0Cs=)FQPqy&HJscAqTqRVE#@e9Iwk*sEyF?O$=+4nRE zgmp)sjUN7XkwAc9hI&bylP3moL&q(>;F+*2wy)DNW$61u3nR@4FWc zN0f$YGi1PMgJ9b201_~z7=UMA6NMU-u1T_O$?}pv&M>>dL6F~>m!?wButF092*oVh z@CuAkliA^9ZiLxygJ+APF7$HZev2RDS$eepJ&tlUNDI2cXKbC(;;?oP4Xm0nL)~T^ zFY5?M^`VWHTm36{;xL|s0+A&^X?*IeFm8=4<^T*YhtZJVg+D#ZVLlp-k)Wi=9r8av zXW(aDy-%oXh&QDhYRqRA*eQ2T2~6a?waQHFa@^B*=C{b$cSaWSbCLXnU?0!v_;qF1 zIK@(&UpBRVF!(#)L}a4qRN0??+hOU%TV8OC!*ba7JFdj$2@4lBNAtl$42yaP2F`fh zkt2|?K?V6@>=|3G8(ly(2&xD>{s z=ixN7*ZUZCVC8l;kh0EGx0NdaKjrglM?H8?laQt4`c6q4Iqg}}R;9ft-h)cd0L-hI z%KQW+r(a4K4%)sss&bAQ(bE5D^zc^PZ}@afgNPY=w|#qP?)4+A^u$@;b4A1&4d4E9dI*amrp#&bL=$Nx~AJ!($3%i1Cm>s z7OzTR>i01+LCO08$%AtrET==&HEd>+P4(CgTWDVG*a!lGT&l}c)g6I#I;Y7Nfmsqg zr?Jrtfyizb8_IjbZZLum-|vTsc{ZS})^axfXlJ@wB--jo!yic`al~F_CAk!jqsw441By3rExM8ARhQPZpMX%){Mq}CMFy~i(t_=T_Nt)~FL2QSGo z#F@8QB|q$%(r~UOtu)`o?PO7%d6kG2t+n@pzmvB=8s`nB?eU{KheoNl=Rs(3a%35< z`MZ08ST;ptY_G<}yI2_Xoj;FQh}F5ayER=a*A%x4ZgO|Pox*qTT=F_1qSYEjvf5Z3&^9xe$jM8bylR%z9nioLsV}+;$TTE2 zYU~YK;gHp@H)&Hh6Q=;5`O)28sa|KX)to<7;A;JL5}a`(T+`ux&X|vxYz&gSpZ^ig zPcs2emkXqJZ>y&#gmurGt`1|^nTgJy8`l^^Mc^v?^2@jCYonf(q3Uvn-g7M(gR`r( zznZRBUy~N}ax}ef+j}9tTuPXtoa04O7M=GY?@Es9xA=w}z48Gb&<8g7?!E6i@Ag!G z$~}-q6;`ZzNzp8Rsye6fI?2sHlEcPLy*LWDcb#(uno`r z*`VtVLnCYs!N=L6)YenugdV^D${YHk=!4`GWs_jH4*L(*mP0h;UZ&WDPu2tUL!&h2GHHjnVrLBktrr=9*0Y3E32btEUxl1 za8!MHOa|+jPpkh=+{I#v4P)|&z&^+PBKy7A6K>K?~4i5DWvG{1tDxySS?wqJxzHAt(cz+01Kw5|%nZC}UF96yBTp^JAJ!d1MB7A6?c+)$0ROb-{q z9yt1ec!5_2EKh0V z%XWNmy~GWKDp02}Q}2W@+#H^~HYgw?288?XVw-NrPyNPNiKP)}G}Ce-;Ccwa_++2L zyk0Am+fM9odTTRjWm)b+FwpTUj5xD*)Ue9~rB>MkOeJG1>r<85`}zYHM71r)HnIXb z^rOq5HN^TCS-%gvN{IXk{F$3qP7NhqrQJmzR|&}lBLuGr6ya);p@)RYk%A4n0Ri^e zi)p0M_J`hah&OlJvKk+!e$Q6WIM^4Gu6+S0Z6l$gxS(md%4Fy@<6*Tp<`X$9Ur&78 z{7KgEaeA_SLV{GGJ#{uwUfF*rJxueYxTgFyCF2{p(4JSJHO@6GXATwfNKj(FkIQfJ zeEQ1+L7jB`H#^Q0cIAfDI49yR7yxOqVU)%MU7VtB8~R)HVWHP`AV%w%-S}us)n^l5 zz^MP0a``tzs7JgF72#&yR!v3>02wofW?*LP;BjwC;EH*36^;kV;5F~#GE|uiY1-`- zY!h^|r}~(4Kt{7PfJkp5T-4``s}`hZrc_?lHcnhA`|YZ-0G?9opH=1~0FZ_SPmu;6 zA{K9Ztq*Z6L6TZFyD{wd8AZb~6dlph;+M!ljix_cmbxySmjnIFNDEH-uJ&c@gugk5 z*ICIXY?5|hRz~l&jRp62twbzU;^<8GgVUB`Y*yNuXcb#kbL|>v^*Tt&O6$9@HRjnF z2jQ>x1KN<^VNt)ODcku?1BIcE5mDR`Jc@autW<=}@eDbnQ(vYLk?uGUms+m{-HfBe ziJ2*&$4d7JH%D4a8qCNJG!xF-JyCxOh|li~gwFFV>0 zf2OlAL8l5Kj{U^nHF%sFO~V{a_lAY1yw(N!zF3xhP zi;bt9dWE+C2lKt}_cSKssq47i(T3cj$MEQ-n^S(kR6(h98Hjr$o%Yb9gGw%?uEQ=@ z?{7^=xK2pT&xcA{F^F`Ouz1a=bE#=DB}eS^)uKbk`uf^D=nPR9!QciJsBy2_Z?jd} zm|FFk9Y1Ye(wi0IO1sFWNh_yt;fqqI*3s2tLc#r#>7-%ikHh(NY?Q} zmEISRUL)W=YiyfQ!usK>(e^v$j_i~v*sJBWiuz0J>r-`3-=%CIagyu3!OT3EhqToJWy{nH&gTN7Xd!z?T&bZ5fxgFzbP~}c52>8o21n4gn>UjH}#m9d&=3=h-ufK;yv7wj;QNsYj2R? z@i^)@0HeiOI6T_-);eo(_(gj3O03Na6B8CRHDq!}#}{GXG=)8urN4Z>#f_LC;`p;M z=6v z&)_VsvYXE5l_x&=2}NDaVjIo1lfY^Zz1fvRj=oDlW_mys5i%ZJXw z4xG%IsH)kp&*FS9G}pe9Ox4*9fOfktur(5zHOf3@BB90W4gsm z5f{-Y#VS3#m3OM)maPxA!AaW1Ng2xFs0^WwG(e~kfwYDpY$+GdvE8e8(u==~ob4^m zIYdXi?~~Bm(<(c<=sv)EPw^f>v-Ze%36Q$LZ87-kqDhzznU9AxfYI+X;5HJ7w}Qt^ z`1|zQhjf-+V~x|4T7a1ek#S8;p>i!ry1G}8tI@$r`_eAPA^d0__Q^Z2<9OP3>iWB_ zqeIB5@&`F8bkD)&iIOuZm8Q6APL6IOEM;t|J>H9fCc=I$@u08!0S`G!dfT}YB8b;L#(k3b#Nw;6tDb&yx#`UaA{s#cN$QgRF!i0^DrlMYU!1=<|Yuy(RIDS$xG^YJJtyB``B~Bh>bI?jAjQ1hsg|bN2`kp zxq8C=qwjvATbZI%C}eUOfQZAlDndyGBM-{c4#PXmSo4O`Blp2l?sy;UNzPn+Z zo2hgDAF-KXWo19*7<3d-2;x`nCL?5+pVO)R^{ZQ^an6J0bpAvzRR0-EjZeWPLd(5! z9|EQe&4ZR&7aB3FR~mfu;$#cZ7?Mj^w9$o^#RIcdmzX96!up^f0a6~K+3`4uJ&5vU zPwKGPFq%mm8qRo|Y^kaQO)=93-JR&zdQanqFr+45VVV2WLSfy5L-Atyas$_DxM8!XG&Q!8``?)WL@ zq=dN`!UL&O(?Ot`DmtVX*lwb_#KV1&wfpd!u2eZfgIbxq$)D6b?2$1l=<32ANbK4W z>}gW$glA~AA|*8)eBK|*Mi%SK!ENAjKYoiFb=pj%j8;CG07IU%;MfJ?#fgH`X8lU@ z28~*9*W85Wmjq#Aj~Z!Vf0_|5KPib5q72|+dx+zRnbZs;J{!Vxbc|{(@yMG^hSx9o zj=p>NaA(9|xtN^pT*Bm$DCH_fu$RE?M;24<7o(HguQf($S9bSQwmWza>?KHiUtbGY zg)ky37MXLp0FGDqLd!S(P`qQWY)yV(%Xgf{m;B&V65jm1W#XWupcE)txSQ-@Y;L-j zzkj5bK$OfMP|kG6wg8dvl?<9k_IME=+oeP&myp**zGowLMm^MDJ^IyFb_vPKV6KCO zDf#r{+j|W zY%g!Zhb?e;b8dTdwLX_cAL6oSF#1fuTei+-EJ58{LmVa)%)uKEo?!q@k~Hkj+m^va zp;jy`LRw?s7-~iPW!E4Q{*$7}_sQj3+BB%i?iX;9*tK)L7?3LzB9bGAC816mf>KV|cs6 zo{Vv(HWQUE9N`;5u;ew8gio;5EEE4Es`i)PyA$Bjgl?z%-y~0yW1-`~0TjuBm|+!0 zhufYGp5WA)OPWD6TI?4YPMo3a_Ur2wrv`&8j*TvcuNvvLMYi#_vZHG@@s(?&aw3=) zo4~pO_f!3*=NE8?y`R0O;>k+2n5m78Gi>s#_F=}{EIW7e22tdTB?wi)7LTcqR@b!s z25`!y0cC`H8>uj67yu$O-5iq`?ZmJ(?&|2nq*?@*xA2%5vR6NgH-_TyV@B`|=B8NjNU_sq(HOA%=7&N+Wwh@ zXbnnqcGkt)lSWa9<-aI}!RK&KjxNFIIj}zSH%moF2PfRfktLZ9`of#GegI3I{pI|L zjTpk#jQabJnGr|FnutPDvclWeKdE?VSM{zB3up&{e~)T4_rK|YJZlaeQBI5769M#C z2Yfz_2Ol91ON|V-IA28<3aL|d+MVl@SWHvoWQtBurL;9%dlHS5@$RuqhmrTcIo^jA z`6o`U!;3Vi74=riL=}SAdwDF+?o$Rztw$pCxSdE%aO{q7NG01Q6K*YuHyl$H2xIA1ZNIT8}?WOxLg zk7hJ)^BGrbn`hK;vDWeCZx&0)CSW)Cb_M+O8NQp9`tZ02b6!T&ro?RDS8q963$^B7 z_wc|wtW>)Qbf5tBx{t4$D?raZK)8W}ulvDc>vl`$bJcVZ(!S-#cj3<1;y<2i@Y$1E zCN#|G+~-snc|h(o&Ajb)vfF1+&Ob|v5XqJxaT=CnO~r7sgNz(?45B7z5{mwQTt;Qs z?ClKhx1In~A=vku64SJP2`^NQ+ci+H+>lT%*pNJi>9ntJ>dR~)E1=1JhqR6YJI$1z z&iG2qL`rs=g+~?Fo%Zy`7i=n=@UctmzVi~paDwnti?OMhCcJn(mrJLzNn&9kcDCPS zh9q*PGYzGQKmWOUa3FJzKg{KkEWRnAO8Y_`tf(HHqeYxJTb{Z7tVIO%8u4!+QM`)# zlJ^^5ivY(#IS*RDJisZpHB)`GnhfeMAws5p#};_+Aa;!+k+iOY)+@k}(NS8$jw0oK z!1c-?RH$h}H(70i!`><&BwT&Eq9Iip<)xti+|i>`|6svL!|hc0C-ara^0@+l}IdEa-7e^ zUPIeVQoTi%O!wP{i5xz6!`*@x;!c`63uP~6`|@tsF20U4c#qC3@f4yX8=UcR0M|>` zwg$|#0I+s|yKva=iT3;@z&>gs)JP~#q2ex02Vpd-B5}5#Ye4s?Md_Mb-JW#{ z&*)_hilz9JFzO6vK%V%@@LJs1huilov60Mi>p&aZVi5vDqNP7;qig^Um_&W<oVy8Y ziDaJx(`k-<)g{#drcPjE5+qeRrXjrOvBM?+^;k+|7Lpez5+;)UzqmhhMujmu{4j?xO{9mw$$2`8$91MsEY$tk6OlV5cDqOif(Vvm*G?4<^5 z@b$x1kzG}&J;*MFQEVOYMB7KVh8*ygnW>dt9$(9D!ELqg7x%a@3)4@C-NR^v`zu}& z^<{SzNXRl5eB(#>5xHKFl4;OC*~IgX+l?JIJ>%3DxAc(Eg3kZAJ`Jj{TXtNx-u{x} z516A$5O|;KHIVRLjK?gTc~LDlm!jr5QrM5GI9Iv&;WafIKtk_U4CsmD|6@Q|03?H&#i#dIWXEW*x;*Cl~*l5R_EGr8WcVt9Ps zN+EA^EVYArS$rObby-vv0K|u`BH#f38=K(fy3gE?!d)RGE}rPu#nB-i5VWrt!x!U0 z&#dCBOgv^-ocL{#2;25|78SCK?>Z_r1WQdFGjT<}t0bM2Ty^?J z+kQg(8qWsIE;HLicoH%d`iseZhjM`7PZ?8}SZmVON3<=ufIuAl_RCS+c_6y;eWLo{ zDg^0^vA+N1w(9HrqJEoKn!s0m{Cwm5RW*TJc(CK%!ZQgBaUgi(09Pa38-G{;+!Zq} zk5D$B&C*)iCCnu%8Eew0JT;)*U$cz0C|{GyMlt@>67TE`wvFMP^T@tYQq*KF1J`6` zq`hV*uFGy}ac{Y^+Hz_}2ViJ(StkCZwlbe!k-%_?DK}IfjqGp$_n+)s?!Cc^Q-D7w zAPm7*umANh`&fkiP?}P-P_%TztA3-LB^zGggJjS;zkc4R1agLzz!5d%`E{89mc>}D z&2nNM*7Ir{6MQ5Uf8+1=U#GKMnjGKx4fPPyaYG*=X0`3Xi2wo`B>*bzOxw<&nKpLZ zW#@5;wl``JMKmYvi9`PFR-F$eOlSe|hf}_{<8A>e z^7psu;I|}5UEFelcEC65MQ=lZxu)<)3F^Ki!4^7#bMSs}`46A&~Wx zDx0mU)$CxI!p>bNUU7^IU&r%6g`C|4;@y6S)$on+s>no>=hh&|LiPKvSj@3D50EYK zrpx#P8n9jjBoX7J{=+N}@qCVBtafo*Qsc@(8W}UsR*dcyC#?=b2(#aic}^mGJm-E^ zU9AsKZbw+KNdbeNW&FH4@uwIq8i;Vd|xe|0w2 z+Z4-2zT2xi?5LKqA8khKuU-zCvyj71)I}E{i=kS$inBN zJ7ub!S>n@3U*bDyyXe>3b?Iq`$mhvLlSq)IV1%oK2h_3MKrWd6hH3u~zkF_tuL|a=RU$72 zZW%mO0)Ux+4RY~~Lgo7jA&(`)$T!*bHOPpVPNSW((6$$bh;f(tT&}$6boC4rpJQY>e)pA)ZcU z#PnidP-Iqj54mS7HIyyBXUZXbGcJbA0-cDTtUp(B(#<;2y-Sb~37?EGl_s;x>BXJG z!pDyf2)2YkPr*~H9^zNRn@mJq)j$D|r47;#gwTrn?vQ-qZ3ZK%kf9-zJrdH){EYYi(;&Z*G^{<#xGUZkOBTcDY?{ zm)qsvv1rika=Y9v|3<~8Nrsa7J*8aJc)R>RTNZ0xxVC8JP_nfHx6AGFZ&nU!ztv6C zy`;B)K}pjW{h-pRAHAVGuRnHO`6M7UU@%~7z&im~4EcsZ!wSQbhPMrWG}?@v#_h&m znAE0eroE=OOqT=AfxUs-178pP^#5@A`gXZpZkHcc=rbaWkW_^*UL`_E!jj)*H5Hvh zQAmwkfHu!@z<7#@XbPa+a~LpRJSPCNLGl=sb+C29F##2m0Re*L%r%`lzIsh|0y8yF1y@1)C`v6OT zTQb<>9AG)6D=1w>X&0sIDcuCtNJh+i#Eqsf7;!wZd7zD9;AKc+kZGcRc{;g!T?`0GN|1$z;2|z4Mx)m66yf8 z6wRKUfKi?&0B!VYJjF!M7C<|t( z$_Ww@x)!YMM0FHhv}QV`>nYuTKEZUw}78GL1sd?Qo0Si*NNIa+fXLR{~@53 zBC&8LNP8S4Q+q-HwH_6q8Dz@>y+#3Tp38vo6cd447M<@|pckphph&dK0$m;eEQ1J; z1-cNrg3?u#t_3?}fffW^w0=6J>*>`7N;iVFvp|azU?a6>IiS{43up#^IkQ2YKLI+y zdfCv|XMklC%PCe+tfJ_mSPz&39+Cy9rDy|B&H-HrCZZrfJEhYoI*|mh1mar`aDExE zoYEDPCf8bU(B=z>aETB#%D^Z0 z17-pLG8*5?Xk;q`{$Ij>oeH!7Pz`M=kp}ozf*lBLhDcrsQIT9FKR37%3W-70l%7Iy zDzvIZHI$x4v5C&QW=gj}e5*t==v}R}rVT{^w$q>2GZlpcuNIJ`no2u`YB3c`8E_$DnlKm>nQD_wgnr2_qr%g7hF9DI0NkFqIP!CmeZl743NyD>2wsP)2q|z)q1$M zA2oo52@;JOz`}$!gJl{(qf3Bg5Iq_|BZA~7Pc=|$H-JXuYBjByLUAg^T8ecPUG%Pc z+OiRB-T?ZNdzWx&dCYT!xAX#&pV9W?zPU#9tS5ewU>3T{NA7}wP+ykhkNbYT+y0_4KTcG!E z0jnswXnj4saQ+gooYEB(t0=lC z5~5`q))87v>xX?bsqdh)gw}8I(WL%fN=u=i zUbM?cV;G-*4j&EeaiEW8Q5Y8aXl??{qd*+xqeUnbPxjGbv=BG@XbG&t2Ys|0)#IQ0 zXeIMF6Xv5;7dxSm79zxGStsSMHRLH3;5FH0m z4{#U)9zzg!7gLFcpk|n27t{;_HJ|?0sX{atiUsE0AoMT`t}UY9`rxw-i=5?oI}JIknmV zm1-C`EQi{DswJ@$WcsvU3zc>`e2!4Nd8PGg&Bj1Oqt>)2@T}-WOLEZFTzlNoM zbfqiw-MetYm0>DpFZ9wwISx{5FQt9;0N%V`?|0I+2W&q=t=mi64gvPk>%(xxs{yfC zudlB`ABP?vuRe;zZ?4yyT%Sv+Shy<=KFJ7nkN0#lspj9n`G?!+D)(N>X#naL(s5o) z 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

SPRL4uvFMQSHIE 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μ} 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
8SP-xBrZ~n%sfUXD7I_d>OXX*uagz*$D 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

$Im1 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 KTrcnv&i@0zRnKey delta 257950 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 W&?)lK6)37UbFhxvg$AoqZ@~h^L5Rj~ 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:yW5n`<{5c1MPb4= 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 T;A1r*X%KdR=~x{Q5xV~epQG&X diff --git a/doc/TypeScript Language Specification.pdf b/doc/TypeScript Language Specification.pdf index 277fcecf2dedb969790923c290987ed9be389c4c..07069f6d3a057ffae076f5a66fdbd4ec6f676875 100644 GIT binary patch delta 1339665 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

O_(m6JqE%ZFI!mHM0o9dzmY% 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

~1%>@Crj!t>E^d(E|)L(G3pU!96g3 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 yfD(g~N<|U~3MpIoXe_o^#)OVw* z>v;()yw+7m&T*=kgH~M4;Wxdae^?wLe`pPq0%w!iK52uQ!A@%aIV}<9K?9+p+I%8_ zMfP||L*NW6$ta+GzDO^q8AT4qb>y-TW=m^&Hc@h8GQy37&EUAhjy9u^w9Vil&9gQ` zX-p=5o6X=s71TDvB^$CC0E=H?l(P;Nz<6X{#5^A^sH;ZHCev7BL3mJWjlNyufByh1 zUlhxYj(34~2s$;$GtaG_j~vu=1JU0ylc3Hkh;mOdhU=do)j??K9xncL4@>~t9?~6nioR`}ycvwv9 z-~5LqSq1l4vnjeGg&^Gy2fA?le_>T}5y&EF0aE4r%qF%5$0DfV8AH7o=|PQOrprFN zMbj;U8V;o;+@}{R2o2#!uR4LBaAO!hqLgv5*5?x;b7Al!RGeP^MxRdv%?8?UhwR7A ze;0`ay#b}s0uS#U=`PAbe+HfNT#3RX zwMrIx2AR*i5k;`=$8deIw8m#9BNfxy96B&BWjmVe;XK>y~6zV)AxhXyi=^-S!?sH-85S32H_9ytVQZ<$J)*s zA2-$o?ClfEJ2XwZ#kqy78drM~%V%p4*pvuBi4s5%$O42~a<_#@I0W7!8|+XTiNSA}0`8LL)WtW~KVjyh3Ee-*$az`HvNdD^Gc zsPwy%2VKhKvb9u8I8O2UlFY)<{6r>WvG*C0s%`y@DcIgCd_JI8g-0J)EG{Rt4pt3RRxGUyf(FPG^+QCeEAlQvYPsXg55dsrw- zE7#Ih9xl(C|pr4J6;i`s6#~ zcwp_(ppS|rQkwKJ)0TEGGx6nx@{1dfWTq5WV=CfBZ6@n~pagbUE1$3qCqX z614S$Q`I{u%fw8c273r)mNmnS3 zdL_HC@R{Ei?x_qiZa?ADxP|g{qYIi3R&T7%V43hU)}o02YMQ@BJg%gd%L ztw$)-F!8=a>f_3MOd3w5K$PcEn*`OLEgne+&s20qaKhpemEf6*QB7B7A;ZvFqtNOM zxiJ%uivtF2fzAX@7irBQP8PHUS%#Y#B?dxsG}yvfDx#5qEz|+Bby=z`WQHti1&>9( zI!l!Wf0GmjwIiujvd}XKW~st$L`0fp)Lxdz)!CP9Nwf9+#ov2~orN^MEDWpVwdBH_ z-h#@H-)*V*YXeypflx`&(>K3UrF z#yjF(U(%tMV%C=~+Ugy+gP|Myr5yl_!hyZQR6EM99lzTTL4 z_PM4aQnd_1OvazZ(Tc*u{t39Mo^|>}*FD<6mkKrusDbim|G%-ED08TcTqR1GByq~t ze=U(rIOL30ExkEeTSr%!Ca~*c-<6R$q>@T+5F44>@NW26io533c!3Tw6*_2h!f}lD zswTP&cQmg=-Ynx|UAI&6iSLhWKs|Byl(HKAw+RH2UnNvt(X7_AMJHh z!{=4BX+V&pa_Howy`7G@!cQ#><39|^e+?~>i~lKynoI|Zl0kaS6Uzsf@#`65!c`X} zOj(UbguZQ^KzXXa4zFsW=Y7=ZJBnky>v(DL%Bt#XD4N>*GZfBR4)>9EC+*`y8!iZb zIpCnpLJhO-KZ`IC<8$Sgr?<4VhZngW-=;e1)%dKc0ZcJ>;umQLu#C@7el=r*E( zpa|0Odrwp7`!LG=_lF)Xuk`hB2dxQsN$=0fMhts*$TjCs2|c0Cfty$?dPyPQoGYh` zmp&~rWvaaGB=!5c24c9I(GHnff0Q@Mx2jR<1Z5Q>$O+|61)xe!#6_Blfd z4vP^bQU7}iOTa1lm}>|}bETke9w|9zDSRzu6_Z>!zbeA>`u-IFQ9YwV`373q95DZ;*V1OQ zbT2LS(iHxIj6k=CVje;AKb-IrnwMcV1Qh}_Hj`mAAD3u613>{YmqEJ$6aqCfmpoSk z8ke2+1R8%bGBz_lJ`D2G2j;Pgpwr zmE8S!d2tI!h}HryMr8*8ZsQE%O!)WZ#i#DHjMIcmq8QCnGi~Gyky9nZGsx}ynvmH~ z=&XPF^$#~Bu^vcZ=LK#p%cumL3^vYkBGa5E8DWCvaPzpjyjcI;gTgv~RNzOMcl?-h z4Ui?0iro4U?;oF=tDnC|i(jYdWHG%;Cr8Kh!E)SLu34eTt=-NFO{BV>7{Cb+97_bv zTr_e8;Z{<|ZvKxLobPPzxSjwPb%j5y$Gth6rkXJ>VB9Qk5(Aa`W<{$U_hu?&R1r2Mz+S_-K$Y_k2G}bL%*An4PWU9D zVXqR{l!nH+oh4+i)nQp)*A^%Jpv9O|m%U#EV;s~SfA&an5B zKcgUCrATtj%MQv2_Zp`J($hZ}a4#2l#vAEgpGr0EIm(qIljG z!O+@;8^mmg}z^gaUyx>5)RAELsDcj8QjeYXJ z;Z<%@dtY)lFPkCLi{`b>4;865<%z)IBA+Zy<{+vj@8ItAiV6J%N)dGiRMg>pjuNZC0ic<8Hh${Kxj|l3^m|B zeRD!NRA^|&3;U|9chejJ8AXRO*0Xo^QF@jt07Q0{8hXiZBuhX6cz5R9Xc&f5;^`C8 zb#)5(jVTbK@WMmCWn<+Ry17CP4y|`UwJ(QOR6k?J9m|7GxjJMc%kjM8Aci@_fJ1Ox z>O2eC1oVG7?X`fPUJeKSlgF_>ky}mhYaE^|6>TU$H3^{uKHLW9?C*u zcR4B|vcSHoOPXpq%4AD-S%AzHb}s&`wmV>0{*uL*%h+_eP(hx9oQvMF%ktP(7Tq?~ z<*TkRCmMu-UKO0wf%%9@ph;s|9&DW2*5(W19#*C%uJt`Hbw@Ws;6LbAI|lSMLW3Za z-x7Zc0f(K0jdP&jjAmK)**05t!77u`Om!z6O4AV`-;Kkx?-v!(RcmM7WWx?>@`%`a zfqFx3ud$f^pR%J8{pxMhjvJ;z>m$@~$I$I=OH+DuRKLH?kpJ+5e7xD=$W@|`SZHkHtm1Ytv2!+ZVsJi=s^UAK|k#9SmF1sD(Y4S zw%zX78C!O_yl%QcJOp6Z%bTtjAA!7Z7hIovNPlLS{&}%1tLL}E1Ut`VmJzza#H;ZA9D(=WmWWqLtq5i$;Gs zk$I~Ku#r{EjT>zC*LLx;F56n8xA=gOktRkraNrftXX|OGtiM#{tF}X*tWFCwVvFl! zou34|oqMLaG&eAp;SmWZe=syYJ`Dcf6tud1Ja_TIj`_uf8UU)_BWUgl@9_xOB$CA*9dJmM4T1!9(Us(j;Yuw=(8~%5F z^>2Gy68b@?yh!+I%-bgJkf|Rj_YUvjqpfAUn+}-ExcR0O!{%y+xa%1-^$ss zSa|bzcE878%Ef9f#OzQX9d-&u>Sxj|!9a21Tdt$^7ArrFd#>|k_6VYFR`Up$+=jDi zek;P+e`&Jng zWTpb}*tgLP!Vk$lEbwRrGFG$NK|}?KFN96Rf5lJ*nV%;1+CzonlFaKW-ywU{Pf@Nt z{BBF<%**wOKde{t1Qh}j> zS-tmA(x;VItx);-(#wz9RAi2l%*DSi|9dJIxW4vkI;q1rjSoK@^0IZ~&~W267GmKi ze~BqGe@|gfpE$PPlMMGD{3qo827lN_b-IR#eQ9wplW7=;$hlL2Q$_Yp+VnBUm|36l zwe9W?2ht!p^>cyR#*cZ89$4&gMR_UA<%oWi3jJ8x`spIu>76R_WoCQA?=$D(bg=ly zVbebehA_MF`Nj_Rj&x_g*0zbCrJhIwf1mPo90UO@SY2N||6|;NrSbzKje+$I!;c># zOCdh2tzTxhj5UmsA5BkLBtaI?{CO77lD?|kxQ<~JgTX3*I$dH`n#$_ZC z$9`yu(YRMUs78>Ke3e=$UnGJLkw6jd*vdE|8ep6ukwM)M3G5z`z$r4=FpO=@f4yH8 zAl8jaK``mYN)U|RTA{8|*9Y+uAQf!qaa23jQu3R6cKrpjU;*=qc z{WP-ILI#DJc3glITu@n*r&U`kDLjHfc-RRBBBMw6c*fkq8qM{oYAB8glU-L_F)-0! zb)lo?ShdkfmrLZgq4&$}p ztn-IyeyM~cAY_Ww_YbPQ?DVmM!$&&R^#8(H{k7W#(vQ-H zEPLGc?Csb#sE%TX{%00AZ&@4(lAgeZplD?4Li8e`+G%ld=g<)PGkYx|vmSP?PVRK7 z$ZJdrF5kuciFwZAX8NvUe;bq)EZtKM6aq|&dg45-Hh84`E5n{aQ!xUSkKPe&ku|Yn zXVKi{VloxvHd6$Zsr1vHpc)@TN@Z_z!F@?k(A@fURke}SVCgo*7!Je7OStu0P8&gk z7@CNz3HgG0r3jT0jo?bl*}@n>mqp2UuFWv1T5B)1rK;D@gIkXGfAdikYPG$ppZCQ` zM?d6}CcaE9F5?~jaHj|Y%r@4}Un*+pce{KJ#;q6)X3*Q0Usok49B>Y}Oi7KbGkQWl zOWXntG#O27@Ua_=F824}$BZDjispzLD7zF39a3vNpaw}a0_e~~n}WUtAwmJp5*Y#+ z{q{uk5XO-o+9aIZf8rDYq`B19O=~0u>Eu8d&FEpegVmdglFwUae>)0<6d)Tyxc;w# zN?;8@!`V|sIH$07IxAq1;prcjwhzDn%1 zzm}*4jb|{ zqnDRndjP{lf4wzfjvRx}OmgfM6oJbVITrU;&9D(bWScs8CRWn;vR>iOrB4?8fZvn- z8PgDJ90w6X-L~TV(}_U>Z27FST`Uc;RT|=v9zLL6NMS3lgZ~}kj|HB8JExf{n5x20 z4E^?~L_9-Z%JCsV93UVt81Mj%Ck4YoJ0@dH*})>gf1Ur#`_zOf7^OhvKI6z#hvm}y zeLh7-gv5!ol`xbn9FYtF5^4{+4?GcW{3!_D-2Xg9F_3Phvi6QJ9aBfcRK@5EI$kNA zIQvx<5-)R0rPY-$bai{zW~0vf70uO6%TH3M#LFm)->c3h1*WeS8AzVQE69ow<|F{F zDBJN}e|z!p!vZHb=C$~~N?@qoN=M{-9Uv!)Y>)#Y3Jdpko?78V#R^X{T~36Y!e)0d z0VE?+VSNFY3137;R=zki$pVPM-lo4#(NHFR(cg%HyT^q413@d4z`^iEfx5K{5stOi zi3$|WYpk_-S?+5xT-!AXBIxSWXoR%NE@e{6!aQ zjLr$8iO9M*nozQudi8|4169voG=Q&K!P>(%H=F9^4fCP#()a-1p724r`j*R#q}3>t zIOH%lPEMMB1qd1Vl6uLvRpZ;vdyx>zYLMCT6wlnE8k3d7reaS%>PE^*Fr$=f z5&YYf#201?r(o8`FD17B-bV~zO#DfUf27Iv zgo4q|LW@1pDBgHYg95!PRu_Cy(Ug~D);zrkxVlZge*#zz=+2Va(h+pcIB(Q#vuo~= z_)6MTx@QM`l|}TR@_D;?b9Yta)mi_N(wuxiw>U}hIQx)kkA0Ia@<|9#yOGFnYR42l z&LbVZBAO82draolB-A4loLN}hf80nW!0y{x+ukpc3!Kczv|X$y4|F|(b4n1du1I)D z!I^$_GVUw1wYk(?wB|xDtp;J6tKhW2`*( zP;6wZoYC_(gUc(&%GS=$`EKRBK2mg-@8mRm5Ee`v7&kN4{=}HdbbF)7fB1w`rfXsc zaLyzKdE!(V&fsiYWrni@Yp2`UsU5J^>I~}G5z*r)YsZANCz1eBqqS}9v6%CI28Z8( z3oHT`?ke4*MS-J5i%gd|HP))Q3eo`Y&-Nc}gxMQra-15YvI5JC2DL>wEQcLFOU#E~ zOG+$X^KG&0s!NB4v7=PIV{j(T8#fx;wrv|5+xEsbH@ah6cWm3{MjP8UHp#}u$^Usz zom21EuIZkc>YkeJ>!*%uz^&|C{`fnG?Nspf-lS_+w@vtCS&?A=j63fIL5iv>_tdg7 z#u+B2u#%mKfO#3GQvAz@hE%79nxQHh^UCxJwW{)Vz2bF-4cAUhGT)d`^+I&AibFR| zQQB%lpOFJe+;kdGD&L9YEd$?3LYH~arS2lEZutQ6;84ZWX$nvq#sb;d_m|5n|ijN;PEu)jB0@M~2$uY+(v1h*5xk{b9hNHfq1*rFYteRZjPK(|Ben|a<^ zURmqidIB%~XH|bBeD@|!LsWI_pA_tRlW6(N8NH**LjD>LyFZM!*GvEIBN48qL=2jQ zxq8N)=)}bH;F339*~7%}`tnP>3X|e%W|;vP|ibtm=s)3&D(yIa^aAb-S!PlK!j45)A_HT2_6?`?Q~C z+Na>Q@zSRN$=8%qjgA@Nqv8CB(N8!MWiNXNz{GN&=@}Mv@Nn%h!B-3=ngb-_ zaF-KdXq`*wr%%1or9=n(pS@Y3)62@9VgIt57XPxd3v9|G0oOkCOd2F9*P1S5g`2gs z7ENw##3VlN)y_>rE7m3)mwbuB_-l!cLARe>A3haShlVtp(F3NR%L_pu_;WI&NzWcC zkBgTMfHbM5OayS@^P4OP0qSCU+>&PslXabZ*Ek=`252D14c+4rVjsQZr)q$t1-?Vw zx+FjIjM_{cT439C&s`gz8KrWSy?z82`rwR!Y*uzJxy;ji@_hj~OYvV8dp(C~c-ge0 z9p_iw7RWODwyHY3RcFuld5(=~twL*Y70X6E7_*o!@E~Pn@&B*`V4F5LQnH^gIuKa{ z92t^>gNf(c(H;^J7uaV8O$20sLL`DSH?=orWaDCE<^ukcL%{qdi*o(%1pWV!MY(~_ z>+qP#b?`XAe;VKn{M_vSSqZ8;YB*S%I+~f2aPzSK*Ytn)`d`z3Y*RfF4sMSBbul0T z4tRp&00m&7V1b^R;Hu=@oc|3a>FD4lZtiO8V(sMS=<jh2>gx3NW z0_6s>@*vOxUA4fgpm|vT8xlDC>l+18B!xu>s%nF41Eqg~BLkC!;i&=atpB~m|6d1a z`Oe`xXhr*94qv|1+pajOOkxUB6xiis5K*&4TUY-tnAhEwoa)&j4@~og_qV}4392Jf z1%6tOEGxm|NvCILhhpy!1!1?g=p$v{houMZ!Fp|f!@8)fzm9E#^?uI>uLlzjejgkA zwHpj!4uGzX&+B{ZfO!8^hj90=hn3;BogVt$|KS@S;I!+Fn8TwR6Y#3)=g73$8mU3p zLBQgQ=y+rxwuUpbuzzCZzGwQkJ7S;#h?cP7(AYZ<|N=r({u_2xn;YBqOM*0mZ6pTvZxp?(hRThFr zerbc5mkVb>%cjo>@9jy=yDH6_D$6hM{Z=DE$>nGcds=jF0-OYb-~`SBtIWn6l2eOE zfHRXtp2&)czl3F*-t3jXzeMHQ2bR#UD=yEdAq&8C9iCtX@WdXOxEvRi&xZl)!`t6{ zv}zR3f^n%DGvhBPy`XDYOCYYbgD`hL4JfThK8&K{BuHMH7I8{(=W9}(KSV^kW_`aI%Z~v zuh8qCplBWQeGXtB__|z~mTKb`$P(Jn_5GNuq5(CbL3*NV>*$A$;w>+N+bpKTfQt0! z$?%YGKSGQ`vjMw)Quu@TXbS$ohGej3hzpJ?N~?BdJRv-I%I9wf4thD~USqU*JaN35 zjYjJkHreO~bd9l9@t0=)Y8I~X8tIJ2%Y;K2mfYBYAHg$jFT7*%Chxi`tq5~B8n)s% zWKk6)jAJ^{;`KeFi-qX9nu5dVfDHrr#r41!`abpStKhBc^uuU-cBhyn3>D+dTkJ#h zX+*RGsMIf08`nzV=?_Yp`7-U54(hv1AOSu$C6CGocJwUbh6>GP&!^Asf-M+r*xlJU z?TT}mB1_&rK?mB_axZx}=KAm7cAIdBYggR9^>2qN=!eq0Ym;rl72zZ zQwI)6Uu*Gi$?gUnIR1ZwR+0y;*QA zN-q7w8kGd4fKCz_HfbdB2cQAuEa8WS4wWxWfX*jW(?xdMsXK%aKAd;Wr-y)KRo$j; zZnt+E)1S>O64$sQSYijinHDGMg$tvk{(e=+6N<;QDbX+;6;>U2c*Ja+0m)&KyQw=g zjENrvT%1I2e5cO|aBQWaZ)Rt{Gag`Fhl3-r-u{S^AK|QfY!390Pz*H<1$K_(1PrT~Lxh?k zI0Heij9L2OsnWJyVt{cjD}#G~zPrQL3Eu1aFK;&_+Y_vt`xK5kF0)A0wXD-vm9sTa zcc(ZGodY%o%Ac5ww6Ga{HFsv(-QVPH6#i4#Rp|rBgwTq`Kwnf-nO`=H4eBxyi>OKBlGkC#=F9_@1eddjN52MiilT*c>fRBB2-r zqwVowq`0-|j+B~dBh`h`-)V^5=o`eLrJ(8%nLMmu3W`6R3@32lv5+$K%ZiEE`r7|I zYmV(FYw_)QTsF%RK=BH;|^BkX%5o^TIjD{r7=CHiEasDJCvBB9HGIccm6>wz>9PGN>gvJSa-p!r4BNcERFl_HL_6E z1Mbde6Cjw5)5~z!d=@%P^Inq}4Jpq(?QZjo`Sd_c0pN~)#;N3&Us+dZ14XmVX+8I3>3lP}UiWA)MZq?@;T7*=G}s5{TYde8x3F$<5qn>o zq}?ulRcyFYzId$}=y>w?mRjJ)-(e3kHQUe<&Q|Vy9j*zZit$F{a&(dJPk88kX|J7T zAgU2X4Df-eI0)`kLt#vcN=T2q6`Lstu#*l5{qJ_JQ)Vzau^h z`^0j2TDUrCc_2whkJW3ksd|ud5_Ur#M&dQ)51?0KL;_YZg_WV#QAL+w#)|zeCKLA0 z9nx(Kd)@U=E!mjlN_sDgpU=s={(&{|{u@{r9_DUU8`sqA;C-3*&~+ij)$*_fr~vWq ze9SZiNkxRdpEZW8SNUVIf+opRg6Y+O`gs8&B!PnN&8Fb=mb}v=XB{ai(rR8(#Sj`M z2ml6gO)?qJYB}6UVaKq-L`FfPpep+ajb}{3hE64lq(Y~C^5`h`yj7{zVFQoav1o+m z#O!gKb}QBVYkYbGhtpdawo8r)eZ8wu#nf?;p|2c8^o9bw;CqGLMTh@yg^lOKKSk3Z zBI{RM|GfG|qma$jkd{hzdMMnPHW7>rs5JA*Dgw?(BQ6zFlUOFE&&%bf4Svs&I2J4} zHf2m9o|p(0Y?(w5_DRM-G^}dtWfo-JOf<780xRYDbZNpvwVH_7^i?!8w^u_T^=Q*Z z`TE-Hk^k(RXE?+H$JJJ zpf%}dSmO|!wWL&8Q8SBRRVus`c?}7T*{Jj5lkFFNcd@adxu&v}SX$b)+IZe=L`6rc zN#waoT3GmuKIfs-Q+@!Uht!J;HxtWR5iCBy^XlN}hPDtoT|5nu*D|W&NqyE;p{wLE z=^fsE|R37&NAa8;K_?z+}Co=^V_WaSJtWy;_>;#bYW#m$pGZl zP2qx(t50-cR=lHqNlYj&hv<6Ji>RXLEh`4MRjfm+1&M3-S{C5G0MUD}q{POViv9US zbr0%}%fl2(_LT3$T*#1E?nXQ(2G%_}l2D8#lq}fPnn3b<0+LwC4hln5Qhp7%2KjI! zP)cUvDxfdcG<*xafC)XhZ@O$#UW^$)drTOvR z0xRU%bm^Wnd4Pm|ycqm(uDSAZn#S$$VGPjWQUfj?dlEbI#&o$&uZzOTYpy5RXpiP# z;2ywc*h`r`V9OC0aXJQz4Z{0X#lO|e1|-W(1HUifv-e&wV7sjIhd;qb9wAruVHFkj zuhZ}^ySRb(J;Hy!0Y$=kbtpUG#qjLuRRC2h%p5Ib2JmfA{9WlXd|K92I*?m^yUX~n zot<@4o6IdTpjiI?quGQE0{I4?-V#e(l{MZ}$3Ny(x?BhdG6b<2>mq3kjQly>BgtZV zdMc)$>13feHAooYjYHs+lbaFMb1imfT<@TsSk~)^mx6weDT*;_d}Q&$UmbTrH^1Ae@42G4Pn>N zt>OmqQP(Ia6bySke<7aso36G+Jloxym(_xRD&flV$_Uc!AtJC}59*&S{SE6>ySuUk z;vm_QSat23*iS;?#RLW{x8CBe9ig4UF!y8^qQ7Nrqj?%9Z2^7nHdy(Giw(hjitL1w?(-ksr@2X!CJ@x~^}uM# z-ACT!@AtOi$>710ugKef03e{U(9stsW4-I$VqO?NxaBhq`mCF!5(y*NPA&nW^}=Lu(6njcHN8b&1;Yr zX=kVqGn0-=5Ma6pC{O6Z$K|L#-Y8(GB(=NFK6CfSwHg>sNI=SW0P27%qIYO7;(eV@ zMw}-Jw)hJ<^yhtLiokk#kiC2SN0uW)vSewP87LtmaYKv5KlP%ra9##oDKJTup9Qg*vegaOy>sjM>W&HaR?Ls1^{M8Zm<@B;GCM6HXU9& zKsbMu-?c{cXoq`Qei7=k(v;*+geb;{&HpabT=CND{rl_n3O%)gfn6^Qo<1zJrP?RI zB_)SYkE>m(Ct8rL#*~FuiIczTffp;t@>sJ-Ik`WMKM8>@iLKDOPTPm#_n#wZh4xEM zy@|KEs|s@tD?sQ*zQU40q-{lFmS?+UO|y0PwUKL~5J85C5(4gR0=kYfGK~@_|A3|v%K>aFU={q!h$f3^%BU))>a~>F2YyN7 z85%pT4n->gmJ0Pgvz`6WoVVH*!L=ev3VJrq(U}S)$pCeFixz584rs=oa`9W>bo~(x zJ7y#16U#j+c2%85m8}tQV+cDeFSBtK+ejN?9fd_};yQb?Ix;!;py_Z2x@B6E>jl|O_A zt^(*)7>QKC*FkL2D_G8(_{ZqhWouXG54jC$H1i${ zdN_sMw3;0JzU50?7i0S}wrS79OE=XZ(U5S`6wZ;ge0rEmX_sr`iY9XOh+maG%X_P# zBSD&nzj66_A|izsE2cRJ!sK}|Whj!P#Z53}#s|*Bzg=k6-G*Y}v8}x-4Vs)~=3(%H z=>cIvP-{C-l&=pUw*kiX{5*6Ap)KuBS8+AoZ;NY)r_{#~>)}v^hD?QI?%dk7KOS@9 zP7mvp<`YCCw%S| zXUq10d{oo&D94<>WxZwHnzGLs?@$|v&w4dq`lKAHY9b32t^_z`_=rJssz-20>jjiZ zoOTYH4H!7q^4;OxW>nyF+IrRYt0?mLBZP{>@S|MhaJm&$lCsEN(@bot>=f$2+6m^w z5M!6(@CCJ!o6N?IC4Gq!B}NDzjOTG79{TfDH;;DpBAw%mx%^cdcXe>j-07MSBsbGJ zJT1Pr`TCJXDk8jcKxUCie?+tkArAo0j$_|y;wmM)vcqmPPn4u{9u1X;8_2Nh+_x>* z!;XTT;bh7!xa`9Tkz~4hH&+uJdJmffpCZ9P(;nB+)N_os--W#10b|ZG;b%feL00GaDd4C%l1EVY zYJ*KxknMZ59j*vtQTI4b_e3V;pg19Gcug6XbVwemoCKw6cp~9)rds<~zY+tm zo&8H{7A$lRH`D4*8JRfMp8D^`5G-dtrq$WxakuCy4UhD;8{$v&jQ8JB`avI$ zFS|yze;{+Y)zhKC&E)d~*qLxh3f2!Dv~2&S`{M=!M5N@$YY;zW$<2#`hCp)gpsQLn z;%yR4xghUgGHoh-#sMEh*&G)8Ov{TH;*}5(o~$|oOsZme_T|!8yZOJ)k>Hb*Q!;q{ zRz9W?1q4z)DB&q}k>FM>`-{jL3WthfBk>i|897RIB+4AzX-` zP2CersdMEf!}8;4e#ogpROJJ4Iw5m@3JV|FnOs2Vtvngf9{{?Tc>RJyDaO2}akHT{ z^$s0&DlPbC2suiT=PXx=D$zIrk{nm=zohOqLvKz(z}ewFPu14ckG7^UA3cdnTkj35 zWNCC*8wixnvX5pnn`Jnmemh82MzFxF8nF{LG|DVBzy?Mqos^RzouRN$6j*8KXh%>x z)WPI^MGC~R2>~A6fE29~@|GvlyJI)^G!=w#rOZlpyy6pfqNE7YbP*7WE6M1k9w|2H zK`k|QojZo@XB2@bg9dz#v6Z5zUi~kh$>cuc&&(5#kQlw8T|rgo!SAiV)lE^pIftj7 zNzYs#97b_VPUkk$P*0YP{sr^W#mhMhI{zxD0aP~-O#mAv7&g~ZIIV(1o1ET|vUcl- zU0f@%p%g;?z=oTSP7gRCRxA}A-L@OQhC=V{5bXyds>X0kzt4`sz z%A9BWL~8Lh`!f$kEbEwDHFk3;m^tMGBY}ClK$CmY`MOvRvbn@Nx2;mpY4lf9m1ctrFO0Ae2)C>pz`Qw!|-vNs@rYu)6MMWQ_>n zr#}Z;pNeD$5|I>$>cq7XEj9|2ExK=Vg9xtn|J)1L{nyH!cc#%Kq&3#UkCU7Zw8Z;? zg9ec1Ly>2P368J;fvRN^$4L^EtWc=E5hS!&NER9x@iFFf=xEYr9JyjN$ks8T6H)x- zAZ#d2Ld(+ST#iiLclSQ#cXwvRor#>pJIQ)~dkPg}$dU^Gtyh=wZ4V94W9Yn@(OK^m zX9Ep4GGn^DyAF$>9fnJ-s_;Q=_4B{ zs}(^4reqlV>rBAOYcxJ_NOR?8!T(-Pd?^$r+SF`FyBuJS@6R!tyou zTa*1$&f`h0Mu@V0-{v~%A?I&gNl1_nls4U*VnC0y9=&?rTh)w-eo zsrHs>1aJ-P3oiJ&{S?4(XuZJ9ndGAS)xT4?IptE+s6gW4pA9vR1Dq-Cb@BA@uMiEz zF^XZ5DMFoXTHu3loeNh8@PKXdMcCv8ZWxylTCyZXqiSxkgmTd|{vIC$E;np)N#zO3 z*$_tujOXFlg{*Wj?p~|S$>3`+S2C~F;Vy-MSEB*74n#(-K+pkgA)7AUn)o<0 zw-bxSr+eQ>-vT>n6egJ8kD5FC-!=Jk$+f`-p-}*vp+9~%2mt>;q9K1dyK8>@rfSlR zA@XUX=8=7OvFltW52YI-epzGa?uNlI8uw?q0Nv*HA$!%Ue;YxsEUfWF{}*h{?uql^ z?r#x8lKr#Edu5@Ht9kz#jXrrpPvl^`FjHSwo(lGYOb6NUnS0l6vEzh)&OME_-qkO? zv8&7!zK$6Y=oM3?6OBlku%Mg>=G>0_K0a;K%;8cQ6RdGp|@#xF+a}aT-$BgZP~Du77wL z>#3E*QZbZw|LK5LS2c(97i{XjD^q|R{(iNujuPklsr6$m_3H-`*c|%f^`P;jYL9pD zemVhJ1;DX^>rvo{$pVP5z<6#19H5XVxC+=eGM?xOPL0LG`X5;Se_`)DtjVm1yg*&g z?_fW4FYt|veor#5=gpG}jiIaB;_{a0~n8VPb(pW_OPiS?9 zv5#fhJ^f(iEH#88gYHBIrI-?6L%caW=Ci6Fmi5+VYbF-_Imtj~8f}&O*CwRCJLG$( z!tpjiaz&uU>uLMh2!M%|YSoZz9WI${fte91SzBVArGvs#)K4*Oo(7p?CBd8s)fPPm z%=HCcW*GZWu|t0GDk}Lce^}C!iW$*PbZ1XS0Ni(D>nj?v*JL8McTRV-ois{Z=NzL0 zH>dvCV~P}DYG|;}Qh>uT`^E{0Zu5=IhW>Gf;VcE=3;2kL25i>FN%PSc7Bby6X4?5j zmb0g65)ySsCjAnXSdI)y?R5u2dfln13&$HZ< za8EXF0HGa~m|!c#yD8qg5w{E)Zs`y0>9Rhyh_YrK-R~5&xY2$WZfcLPW?c0&fXv6* z`_7sX5yu?z1~l&^&vGaJ8bfMJ5h;RWwX&3W^N-#@ktb#^s&+0c9=DAy)`AU&Mb!xr zYZ_9Xeb5gT^PIXomk-#dQPH?bzADujOJ?fQ&0&?v^YpA@e{STfIy)h?ZB*icbf`Z! zdjmO$GJaKXWl>1qyl4y)zjg9l+utn>7INJ&hbiz00hC;=RBT0owZ}nreK?6u5H7cu z$ZgVSm!pQ>z6mmHoAQ@7hl-nWfG}D7;w>$NOfY=?(a0X4dzzU%{A!#kfVWyv{YZ_6 z-?m0-k)Gc)fGYH;PI7Uza{UW@2gk1{kN-9D;3iqbu8UpydII?7hkO_?Wc?2%CBsAd zqR#9m5`e*kcC{-mZ&c+MiRNTLpD3|#)XY% z#*h>q9oJ*%b;QfnBzWH$9D!-d5rg1QBK4}yW}bvHr5UnEMaJkp->jwbK9^sn~1$Jf%Pb%$^t zMUy31=-@%!({L>DgKwMj5|yLvXCnM&AR=eh1)P6sKt0BnO$t7;tWB_0jRqagxf`?# z9iZ~WFj1UyHiXK9faaVWjF|nNXJIIG+XDjDR|4=-y*i4(i?l7s3?3j;agr1}`Z*Iq zM7_fDQqAGLS{`tW_9iHSa{A6b;ef2@68ITLDusUvaCqzTS}^Ahi|Q(x)L~KgNaI&C z)tDYN-KeVDRUn>aJx0L#;JcDn&TZ&k2JDIca;c_Zk|F##4rC4Qm#A`!oK6b7MHa_L zb+u$Y)1G!wKvN3Jhv*k-+fuOcqMdVv38NMP;=vHdNuYYMR4=zY#hnneJ(9*+tQ5Mt zC}7CmV2)GkYehc>-BxJxv`UDXR+z|I8yITwqLc0}RCmGtf-hN!Fj|RT12Tb!0p8`o zd=?CU1G5f8wI=lA6{9?5_YLVPyDcWJ$pU@$df`WidieYXhLh(`!aqnmU{*07BCLOW z8moq{k1+%^J9-LwB=r+KRe=$dfntuoBBEoBpRxHzyX+cFi-YJQ=%=q&1~CS`Pz_IE zj(7*VpGdUH4|&Vg&i>NI`Fmtz45)9zkeD8p4>(AMC%Cd~BaFTSji0zdgFg@uI2O)0 zO@T%l%yj*+Pg)Dd=?ij%kImp6AG@X<9Rb};1A^I4FbXV-?a(Ov46(pTf}`cax7VcF z-^^ohb*4L9jkUcu@)+^C4Vue{c3_Ntj4Tf{7af6bCm{->4edxOYe>|N2R!l%Jop=H)8m*be6Q_mNDUa{wen+Q3QcVv0L8zflDpFft_60po#iQy zr+Uizh^_fvMvzy@99N-A*?#huR)f+H_;XH6F7qMNK|SVrrS7xfWN?feDVa&fi3h`6(uXwMG=O2hKxabXYv6Isi&X68wO?k;m{bXeNA3&V7tEuM=Px*wn=4u?+u=B% zm5!RC1!uBTnWFBd1WFNH`1CrESq!u|0J+%KgGe0OJo7fT+}Yqr%nX-En{%C62=oHsz5V`h4S9~JA!vb9 zC?y+y1W1khM&?e)`xdQ{@2UBhlw;Dp|5UnjO9LKtx%@+bzO`3OOWH0N3WVL&pzJ!1uuW8%)6! z!Zha#=aCkajc|3{Z8m{IsuS5dje`oLL8s|*aHuyNDm$KQ{YlD3|J8~37Q%x{*#x5QM2r`;sD7^@+#?9k}h(UHE2oc zG*6v)%~*Um7K-is9NODIYw+RW=|srjVylsq1i-0`B-7}r%w+`{gUaz;XIIP3r8B{K z_$YjfJ(X?H-cc4P=Alka{A&as zW4F7JPhd2p%M=ybtTTrdi%bJ|9i5c<-^MP}2H~*jLW>_#8|H-VD0%&+^|C{R^Js6K zk#-Q6UtY7=-)@4yoY@g=ywj4bKdQl-+bY#I`hG7lbb`2yK_Pc=s17lEhH!N2#(*Yf zszMdZ+F2na5P$6)JPBx|m^ru66mhnuS{7|I5G6i!iC7PfcGS)-cN87`IcCw+ltPAu zBWX%YQu# zsvmkh@$VW=xPmgWK(tFOEHX=?VKNnyAe9<#W0TGlczF5x+1M$}bp6g^y@Ollri?wd zT*J~yr~2jJZtl2K9PClVKG#f&+mk&+`bm0BMIGi65`Lsh2{CzXbccz^PSK|g}27r6{$xXu=a%2Y%B z<6kwCpB+^?vV$DBP~+vi<8q8irBpgnzds|in&lfBaaL>@(jf1|V*<#yQLRFdM15j% zpWLPT(P`EmJVUVe47kp&wYku}UQBnV-u+?U~QyCzpf^mSO@)mMY`nr2>zQ#Cq((L%kAao^H9>`m-5!fvaF#rhN7170g^ubUfjrlkfKznHW`xClX1pg=h(3$9r&H}YE^ghinZDH%g4GzM zkpz9jC8cnHZU}rF10HKSIpO+WY3<_$or-@BxWDu9NM{tI9w`xG=-dn!N+PRiT(3}4 z7?jDv{RlJ^PbxWNuSqIVI1J2<)(35lQL|Ei0CYRwD@NK%2DJYrc2{H#7M6+8mG=ii z$(L!7r+i|Il~LFIAJxEd9XKiQDiU1lnee=7x?yg=h%Fbps*F5px@I5RLf8k`Ln4~a+)T&V*`0pn!> z4orbk0XR5#{#OL}|0()4`rlH0$^WGKfsU5oSW`z=NfTnm`7#TGgv$BhcX}JpYiZ;L z=3~?)Lht zeBV!$WJWyl3I6>^P26OwQqA${5H`~}yL$F^1aL`tDcBI6n7g928JHtU9>qMZ3@^Dj z+l%~W=zHznHk_GU8hnsHt9p4|e zrp`G-8KS4jVHe%JXY_o@k$EkCeeO{Q=?=9_mh6G3m}))ytz4i8{STE9r$rx$&q4?% zv-cVxEW&hYrVV4;A8&mxmCjT$iw;chTR4XT^Vv+yrIHw_ys!w3_T(u@{_7 z9I!Yo^@!$Zy-QyoycZSAL2>0UK{Dx}TV@M6bvqhFfjhq_tM+~Jg zL?pl;-#Q6Ok~T^P|5BPT#MmLNNH5rlEWB;j*?u~uC|=B<)N*{FK&DC* zE&Vg|TvYsAXGW|z;GbGF`@Tm3Tc+2QX}c0VoMSclcR{RhS_@ZR8ZZ6U+iW|yE!}jE z${HO(xGfQ&6uoWjmZ&@2TIfFMfNdq90k!>WD52I;Ba2je+Pa0ZK391~SuA0yo$P*E z0=WG0;djI1#nEI_=+>LXOd4Nr?{Ax=Q%pj*TsgCkNhrr%F zODxkFP9~EO&&~fk@P?$Ud=+I^T+=**)ssE^D`yKZ#qe&wN%(0F|J-*4u#f7}S^Ihw zi=-gO7TA{^$!u=+buO$~OR{4uCOpn^-P|3ao+Qx$R*#clNKEB((nF$K*Nhhxr^Kg( zEP{UcM|$*QKpa0Ty`3~FA!Tu>rs$_)_<@a~T})n#@rgzt*2+gm%@~r^ z4#5JXvjW6W*MoQ7<-!%V$I>>>9@SmlB{I_af5t4^RTCQL?d%^q!_$7k)tEMs)WC#6 zgJP=zBbIR0isRy?sia%-Za(`2JaKE*L@p-v&_8yJdkq861fOWOY;=-Ls+w`6VZ%nw zlqJ~1`}08=g_GM)a-bb!)MM$6r8S~oTOUY(FlKlmG4S)SF!Lm3 zRBv0&GI@EHz=d7FvjZG2Fx}PCymIl-KhyvbCX|%+u9iFfk1aRZ)T{fpojms07&L&| z(u}WzT`JpDSVt1hd@RU!JKwGrz)U?eY%9%kAi9 ziS~7ZCO}1=%1?vQ=P#;xzR6|WOQH!`_s-fwtCjnIJrf=^aUW>7zimF~e+>aD4XMnc zM5xxoej6%n*-VsH0;_9i7P=3s65fowXojr22qvk=`Q%fug;c=Z9GWIfUW-BQS_bqp zv*RttN-HwT*v#Q&Hk1WTeoT_;;in_!B+BdQI5>A+3NfrVrz8~${aKhHk)krM(VAH# zGna8$@k?x@3STNuLdMM@&x!#p3`e{Z;5ZA~xTVSb>oP z#;CZ4WG1Z`ej@2(XU`3IzD#^zU;Eu8wF@#hSeoLNdE(^ofg`0$NF*!V zaUl&}Rkp$bHcr0`{i_rgo8r@iq`%gk*75ZZ#JDy(3uY-AFyjZH-zOI~B*vKW!*?~I z(aDi@Q;~R(ot3>|UbEt;`0rAl6^)7CeiUgq0u1J3FwW)TnYEV_GjQ(Z=lu@poi9YT zE^)3V1T&1W3o`Mb)}QZO8tJVrE&%L&p@@cJSZ7~il|^(5Z1Og7h6+ZxC$#FeW{hwq z+*$c0XC~cQ#AOKp1jDOcTSN;^$qFp;T{o!RO%2lv1fA{mne51|3@mloYl?I>A-CB} z8hmzEl6q!*?S*XB~sC6q5Yyz0@nP3Hd`zzjXx|kFq)w`C?buxf|eV7`XtrmuqEYv}ehu zr(t%B68Y(X;_|bYr*7!Vs;4pfBYmRg!4Y}k3bn92>+UPOUl)N)eWeI04x?SoZ2A|c zL}d_(yttx&UWeOI#nD46i8u)w{~+y350ct1R6O>S6GaJ(OIFBB>cE5rXOJ4Axp>cg z##IeD!o#hS3Wo+HZU_BoRJhr}h#>u-YAiS_RH|hVA>R?WL7uh18AGTT|WJik`oMPw9Dw*nWso z*-_46!8xbR?H6|9m5d3{8ZN}u?&zjiF*ikUnb$K9mo>Fx^3fRkS2#imAwkY-1h9HBf+29`p2r78{s z@R|_|NnpJ=ORypO{LWj*sm}7#*Y8@!=v-k_rBL}afXBDKir0Oug8IlnZ1EioGrHi9 zTrpVD{pSiLJmwvWjwNCk%x_-O9eDuF(@=MEjhWwb4XgOaCs$EyWP$IY=U+bKUsic# zmm=P;gMV)O%cRpfWp?YSUJ;ZI3);4OfUXKn**jl0Pe`uo?v%I3oY5+l=D|+WehPOs z`ttoIP1y2dyRN$n)%(>Q zfb(;YM<8Qnz+{s{duW=;;033$&AS{qlOHi_J36a}!%SIkIbh|uspSBlU_1{`Ol^CI zaMBP{VSk!bhj;gG#wpd`8O5FqpGM(IVu;quXJ~Y&xhIf+-D!?Ensy0wL- z(997h#on%VtNuMh%IIdMN?T65kZb_~K;iqCmMXN=+>Lvxva)XUoLdR7cI=mtSM-q1 z=Ufox5Bx}SurO6K0_%$jQQQMB&Us)_LV>cKno%WUY91ovVkbC)m)AK_Dl`C8mAGI5 z#;E&$qC;2$U3Qb?<_ohC SuV~Q$TlgeT!kXhCUejy&wBV1jqSGp|->ECex&Ij=L z&WfG+Ru?4k-D3$hLSE=Bc`>ge!V(EbCVfaP&fpX81T7egwphf^#u2dd)q>M$p`xbd zFdkt}?l8KqpMccF=GgAnF=W`;7FnrEN^ptCg^iChgnFDZ9%UwhRKdyD2jdd)EnUi) zKVbPm07pQP&bN%H2`a_&$ES0^*EMM_jgK2WqiyBp3Kk~MRzcTIC(nTZU95RjpC&Q+ z=#2`EnaMV^Fk70>L_VyP1`EfwV6nLs28nf&df3$P7wvgOYSTw^CyXx3!emx)FZz5) z3$3NZ;<{wkK8?X*7_Qy~yaiUZ7WKmcx*-zOudc&III03!`m=oCR>&J5QACaxdT=4r ze@>R!?mqre{@wZl9IkU!*+9!7q|@@1#x&~j=df#hj^Z@%ordf)+mANq8Wf~KMak1; z(FE7QqOp$)2AX4eQ~!Kc+OUJ{s0yaesSCdZ{7NW!Aw2<>F{vXVyz+DvIx|$ zF&>H^xOy^Z_Ja~v+3y-4jjGox^z=$zRy=kaY{gx(E0yBNxsuu7d_a9FCc(0vEBB_T zBE6>Ts0{lfGBuKFK$0#>%kJ*)h!BM%?F)w?GK|DnjR!k=`@G4>7OM9y+BO88OI`;= z=kcrDDE1{YN#YKR%ugFPO2K40-4S!x93x{#F4m_b-!b&cl=N7Di%dcxi>9%vxY57C zOO5(p!^NuO=BWYxoAI$lLqJXW{$J~vor(_>{;9X{vaEFp<9YB0nfDm-o(nz*rMP`% zvjEy#8Pr6wY0PF%Zpu*2?~MU~++me9zHg|Gyd~~B_#XKPZHxeq2{U5$of96;>ZtbmK!xT>&{|M%Z|dDrr%Kk+lK=kRbeqRT!Tjs>nwzY)00*q&&T0-?n5A8d*r zo6q;OI5~@`_2J{MHA6;pS5&`Gzd`4UrTqRo{W7BFga7D{t}edT(KSX66g(pH5Lpc%1qcy7w=)7&qD%x6u1gPD&ZI zMmRI;_)k9jUHB|1%3aH_o=?DoVpv8_ytYu+`%PdN0b-Q2xf6=@Qo>uUE#gv9w^g|i zQ%zClie7r;C7q8GMQWm)wz&4yPwUn?St;knJ#a=6#+oIGPuJh}j5|bH+4@rlDw%KS z8o=sz5W zFy#>E#)lq#4sUMCWb;BRg=vYE;`bX)QwzC+OcAA?oA!fa<5Rv?{7x&O_;(TocuHL6 zW}jrE%jG-WoZQmYtQ?6Cf)|9he#3ZqN%uBkbN zm^=a=zc=O~YyzNZB9?Exi}pOiLMH=qiLiMN7$lCX{MfS^T&M2S` z9$)6qh3hII-;gBs^m?6b631d4LtS&_+}`}7no?{0ra`CLQ#*9A*C5z>J=3kpB|^qi zhY;c+W>!o`IoDb*1p7(1yDpP48~sLZ(RV}g>(lRhaz_CFR3Ves^G+Qb#Iknk8@~DG z&%DzgH}o)y)&x4J;mPZMKWg?+@_-vr?^EgB`$n8J&|P|x^<4UeVMALh&!3X#rXG;f zc^6lYSIT7XiOcvk-Um&;P%k|@sD3zX3*l8;^z>L58ANNQJ~Q<>CpVp#IL^n`k)8j2KfoD z9m7css*8{py{LjH`1QKFX($%+`{Ix%>JJFl^Bq3VuODIk-;@sb_%FV`+rDoju^K0; zoisPSvn)j3^9#XZB>qt@@D-g+?V00s&}3nN7gmu$#}gF!j3A@OP5wUQD>>+C{{*>N z(T5%jnc!K2aue5O84ai}L=U>lP0R>8?2pqc*CUxDLF+?fPdnj41uMe$T-|Y4t+NRY zKDw6+tT#TC#YJ)JHMsH!Rt~Z<612ZCRM=sYGW{e}W8U)XNG?FMdUw_k$4QF!^Pyva zHtD|=G7WNv6~C1DJ{()c!NG`rb=(wX>rghRpJ)#_WoJY376pWobJSA+KFt;Mk&F51F?2X+U(} zl%Bw{5DP!eqdzeyPW`(5s3vl!!GQ zzD~R{{K!|ZNPSSP&dn%xwkrH?q#Yn3jUo#~%&R0K z7(k>+^opffFPsYDUCg%qkT=};duXcZboLV@$DTYY+(52nEgTqX^Ej(PjaMlt@XY>% zF0RqC?v&kp)d20`+qYUwyAJy6E|peNA=ul>!14@aQ=vrL43^P4dKDqVqPvLrTb&(= zBBgt1`iP&NZNVSts{)AoDsUmdz5OA`tE}4EUeKkIu!2jMfkedimu5E_?L}`*o~~Tj zTgqgDIF&BxOAGZnd!X^5d)-!743!+lrC*#MUzN1u(Lnjp9SfP6>bBeV?MDutaat>% zyN6M&E7c*jRMs=d$zX2%G!XcZL!_So2yG4v#vnWT7U|{VHIVGF~+HS+twN z**`czko(o5v4(JcRZaJOqZV=i-Ph1B=jSd%3T#c1Rw2MIaHZuJ97~X@X1| zxGZoazq1tzS;Dbo3m8iSFBIlarUhhhyTTp(Rhy;4_b_8W6kT5)Uen$X&WfK0m+k(l zL^XRq`3wNGZuleS(g|6e-Fo4dj8<_$(sQAbnkTuDR9UNE1STMd(i&q>{tDpyGR z^?9sWrx~|7&v7>8!$)&9qyJ>vO~Px_$fqAa=$E+1{v^!dLKFu{qz{z6vo1XwqfXP1 z?k^au=y^P>gzBj$cd<#jk@hP6!?*u#uWLVMPTm1f4sbX%vr2`pFd;-BoHM28@H7oH zv4DHk_Z;#*kbN7p^Zs+0c)oNuqcHWD(;Pk^k)i20D;k^nNQp!N)uPL&t0uRj)tqV? zxG>XkOY?hzPy+sb$d2f5{g=JnZ@PZXJ@!`wsA~P9*vq3Lc8-%3?egZbD4d#7qQ7|G z6d5ysPK_ZHOA9@)K}QccA2z7?cA2dH@ z*4N*GuQsWHQ`TMffk@46nGVHdj9wY3sfZRflD?i>i)3f=Du=K|*@Qn6qP}nthpyBB zVvUt>fVOgPse%h{(m(`1pBk?1Dn!sIoGJ?pV1}}|1vyj~$)V3Wd__P*0$UUVbIy6R z+du0%7h4UqTLLCkDYv|c@nl*Br)}F=VpXWyQuidYm!-Xu!_6Xv-jA*F`+&*g?!U+l zm*fLgj=ezx-4i@|;b(O-Qx4ur#aMj+PRO1gtEbt(&@Kl33~RDFqC_jZ_J^6T?QqE$ z3guX%9~+u`n5!<_P=8^6{d_)?JnBIiwc+0EyPB@oY3a28xvVw``W@2(I&al@>2H0plOXEUTDI%KZwzkk$4B2I0O zB=sMxh}0uzulxm7Kq*_K;$-R_Qw3FYP3lztlhsxNQ_FX&umzfND#t8vJ%>aZk>*5b z7J%3#Wy(d%@A4~DobPA~{wVVV5Io!Wdxd8yVs~>Q7m;8}F~;-48)zc! z^_NUDT?h1RVB8(?qT*cxRb{JI`N-K+5S>M1Z_^&}Wk4jh@5cN|F|>|2=1X}*<~lP# zTdn`^>|5g);dXY{c5)CJ;76+9`bRynB1t!70LFwdob`i^JD!GK9&wpSj1J35$Iw~x zQb@YyQ|XST051a87XI00+_K2^gr4}`z$QCel=F0En+fV!IA|&EzZ@O;_w{`Wrz!K=gnD#XvD{!}zkj zDf9d=-vR$!5nMddHY`m-3rWtuyXN4Y@(ZbxC-%$5+Beq-8I{#pDlaM;2hK;^GllLK zp8T(kx(D}I+6xCKBczotRVa^a1s=qjM!1Z9cQ=D{CYTCjOw4(qBdy`89$9D;6pQF| z`)Bq?C?H5t{2Z_kFcvlphM&i3*n)rwE;Gfluk+|I$GM4Rnwf{7)kT;a_&7ptvAhxJ zbO=w6B6EtcsquX=FDUn^-tveMb;}Sgq3Qm0NgC&#)`Ox@ljv6G9$Ig(XEioVUmwF} zO)>w zJ}1`s+_D#v-3$%n1V-&$;4+TP(Y9?D7O_V63=D53MT;4PB!9wvUEbN8fLy53Bl_hS zp-WK^r5`T&R=S^>_6+u0vBzEEtl%1Z|ER;+dKas5UQo%C?u;#YH5^P*fL5}51b|du zxm*4(^(D}P69PHq?>~9we{h+%YH)Ti9+pIs6cXTg??3$I_c1sz(7y(p9msVLfdItw z0mVRO<@%o`>xnG;#K0f5|JH2BfFc5AYQZsqt9}124m$y-0{m|R=Kl=8Ea_=GY)GQ| z{fk$6Te7sJ(cgEHJrM?F@XbJvSD;sZ@E|3zCqTzin_G}eXGKIyo`n z@aEyis;jH_D+)4rUo9GJYtke2@6MLSxH|M*oEqBYrxmw0F5Nv^dU7%aH)|CAtg8X* z)vHY&n_~`0$9$a+PglQM);j&NI$y8W52j8hu&5j)R7>3AGYz_YND|<`!o|(Cbq-|W zOY-N(PA@00w4I}c{5)St$L8f>JiqqrNS5xN4<4?W41NAJR;&pNhpBl(?6Ag2XMzGc zeQqm+DwC`!-4Y@jX(wyb$kdXLc=-XOuV0%jGR}8!u;-gCLViHAY>07Rm_?j9h6Y~s z`B~p&bMwbF!|O5Ksi-AugI805>;MxiZODc#0W%(BPJyGa?=6t3Uwk`(T?9cn9(iPKSmshY4ovPdU4c=j1F8wC(~gqcG` zZCIT$LV=DNat`Z=gf=KI zPu&zT4ncPJ=jOnr5h^$s{sZZZ*Ukcz zFH@LaS1nxf*_O$g?!gXbia%OOieAXd^E7%u`HmAH5p5lNX*e?b)U%(|IC9FHBW5ghEN??7VE_dp0u1&A;F zLX@~bAH>|gK}Hf5)nZ6dJS%_rc75lV`Kx5`3*QqN$h)XG2PFV1bSi3Ce8qx%OR7#n zZ5B=NEqx~IfdnoDG*1CtY$+DaNMvyncy3`Sef&1#A1u>GI`m1-HVMuQsu@orO*~Vt zXQ{EJL7Ol3VW*BttY=%H$Bj)ptCxYt=tTZ~d)8k4b^Q#zciPl_i{I%>f)fkqKHd(D zTI)!Myu1ulLCpY}1$|0QazGS=;LER{`w`#bP-9bk%dp%n+wJkT&$o;O-p!fg{nvOzdXcpb5(gLd*?kT18!>Q2VL@rBX~KjkdG1Yp2-W5pBi! zoTErh$0jT>jw>l#c_nP6(xAKbjZTa>R$K~l%niWd{xJOnCcHp#nM&l=@f2YuW{o|z z0y2hKy#3VY_Q^d6btBz63m>y24%G2nb*#%tl}#(jcU=|K{SYOw2ZwJOeP{4T@+6=Z1@YRN*D(P7@Uj?;wxiZEg)b9 z1^S0i;4Y8amT8LesMXcLns(B`SdEmVmLqk-KM*g$S-k;~UhNzn!M0c6oA^QIHGf znAj=R4ud#TtSYm5FsVG|SA$mFMw;jV3`}wFb|jn_&}Jh88p*hS(C!^Cm>qO0}K z7y{zV*aZn=(wnkgTwQD2u~x9}oE=*;C!@hb9DhA0Q9@BR_*nf@*|*u6b1q`P7nb( zpUM_#pWO`pYrw^+9pd^qiLdW;wzYg1RAlM}nsMHy9<`<+h{k>W^6}ua^A!YHG+hrN z!_)U)q_1UsS;^driLYtrJ9dsYi4x8Luh}b29YOkPZclT z*l?uCuG*pcUFrJ;)bhQK%(oJ>jgXoZkpaED{5td+3j)q4PLo>x!x0cat3W?R#9XJl zJ{8S?V*`PayN8B$cgG^0Ej+mS}w|O zapi72dOrv7zpLcys?Gq^WFAcg7>Q8(%r+$Z8^@)j+1B-Q6cK1EzLFxZrCH1Mz38c4 z2_Y3=ZmwnRSTI+3=rN@leeW!$b{)5&{Y5ig)+jEy&=s*jHRl)wuSbUyK_$B~*A+zl zm~YhX_&xO4zxU9idC|yc1-*BH!AR-ykHkb&C4@ItoEb^}=ygCph%Q8n7~1m&U!;Xe z;wpVulQPfX0?3Tp;eGAqQz)dobREO)(blggfq$&HTj_P7qXT(~{Z75$V#*TfUUE^o zYhmV3Od#bb#WmI(hf8?tC^4oC@MCq4Nrl!f782HW7fq%>TniqgG05u#r?M8C7*-S& zIR0LADi!m%2L*A(&~;!-Cp~j(C;9e|e;&)-ehu2jr+}PKAt#a{8Sw-W?wexJN zGrAV9e#29)Cd?HtxwQ6ENaKazj39D6*(rQt_W{P1$=-4v`uJmpavDB^&L8Wf-}0zu zmLAZ-Rm6Vv?)h^N$NafiEq-~t1XajBc4YYEk6z9G*y)k|eimp{!yqS-i$5P|_XTD2 z?YjlPD0;z+f7mdZX`7Nz#5ZIph$ng(<_wBZCZtzuOcbb#1HZ|HY_DoCG=f6b_IuZGaq{) zQ*Jr=a6Qe$?rt!+SA#X~6Uf-cHj6s6W^&syR@dnpVW%F*q^U+2YMm|9E*F5^jbj{k z0&nM-!a+z3JGygDEij!NH2%+NL=`mV?ExU(?mC4o2*8z>CWrhuSDuP z<8pnaIrZUvstxK_w4x)%>=x& z@5d2sqE~5sL)oQ>bV-o(SbTP*oQPE;Tf7w9=9}yZFB83HfC7R@R3{%s(g9*gTSRWr z@wP%>}0Y*xcO%7BV01C90||BGJNV7hXNL;jp7rTzZXOGC%`WSeIP( zU8YFX9hf8D8e{rC_-HW^;{mj@qDS%R6z~l}!tDDFP(dU%ACZV`U7_H82G|J(H(vo` zvQzy<3K|=$mZDx$0R;#)WL<4z5u;j;jjIuI4k3Qg8eqfI+wdn`1vY-!b&>Q?v0wq4 zRQ&~`q%Yj_2>YfcD!$DxSUC$ek``M>gUZS)=j8u!690GF9}w zcYuzcOeThQA?-tP4oqW!Z}6a3shA_@e1x?A$y`RBX+fGvIeNuG@8+L>oAIhwYQCLu z;-)wLl~sEz#_-Jv0T8K@dS1w|4)A3Y71mPquAFIzmA;-JdC7E7N4ER?p|cb`V%FFi z(SuE~l8!uC8%M$;UP0H_jcaV9p#;x1nJypy!}-ggx6t@5KQ(gyVjZhX;n?lF1v%Sc z;X)33xmc?GyWmb%8ZpN1<~c<`=w$>URzTMw@LO%VA+Sf?O@nytmJ3|6;P$$4Y8@K+ z!uVs$g1r#`UaaT9sEl@@-C1TT0dlaod?$TyBWu13?L>-gKY;74EDC$oj~#HW`4zhs zKEMRCQl%56 z^0piLo-AsIS+L%C6#ByU zeR(x~*u8)Ec+QzGjX5WM>jZo=Mx(wM;)aulNAlC&aaWl=yuN;RkbCtL^>hNTD4a-D zv3ox2$L=zEBys@%2qgz&3O#!rVg=JN%s)c=QKRWMGtbvwlO@U8nP#lx3$3(^jmd1{ z7{{#qWPrCzB0#4L}OS<_7m7u&n!yc)N#a=R!|GTs~?q7A!5;~|Nhw!jnrGLVG zM{x+NHX6>Fv(Bb>3ZVy^9N zi5d6Mc;*?Heq)^aE}ikU$R94PZ577eFLP1C%8_bwKOVS@wx{&#aPm=(U>^IfZw;s9 zT*x?k`qRfO;B5OuhPlPHHGobDF5~#W;Pcu@!F^Gt%e)HhE&u5xj{c57TjMF+-0nCS6a?V61tl5?TM@tuu_*|hlkl(x+|X~kTSl` z?$!@2Ar1buV6NOYnjOJ1Nr#TmYcTSrYy#z)I-uw%>U{lG2GkIOfb>zfy)M zoT|C69_e6Qs?80erO|aUOFAlV9+C7gieeQR_TdhO;Gx-1uNyc0YU`2So6ieRx|@w^ zSdry7Pfz5|T;DHL{zT@;nhzZbmt*3~1dzvM=ZN^rbabdxaD8$ka`n%LTZkxzGXo@v zs%p2dl>@;RoSA=GH^nST#z2M#pN8Gu{*sg09ICHj`|ztqp}v=c)Re-h$SvNYBsrhtJsV8)Kwx;+ztawm7 zq}R(D$Be5OgI$xXV11=9^mGbLxgV5H`hDFeMNl9s%yZ)19EtI$83q+1Mm6(F>OzRE zqf<&(PPJ$oZj7|C0Ad9w20kEGvcHE`Zc~6J45TMa0U%llmU@QsZ5wua`em`$LGK6x zyc=%~zEmi~KQ8*gg#f|B8qo7~zL7{qNa;8j1P%anv7n#z^eqxrG5^t-LO_TL5vzzI zi1W5`JZ7RNTf;8|A~T0JK}`#y`NBewU8k&9t1vucTIkmu{`;2c>_{%vWcR!h;JFy5L? z(*S(xWCJ&GmE;rsRRAuD68#xOmk=JDj<8-+QrW4p7xe*!Za!!R>_GE@m5gB^ODRM; zNPWF8yYnwgVe=$Cx$~El+5y1%nRh4iuwGMxuyWE*VHX^tbCyo=x|l3#%UKkc6E<`B zfnUU9D7Mx4l;A5r7adf^GE;XgklKT>UaTxhJjE-!0$4oIw*aI{Oa=AU9J^C|`>+Q?$k%oX;XPIgvklB_6DML=7 zU8fkSB)eofYZ<|I3EU#fQ1$}Xpr!#YKG!CZtM%Mcl!rP5%rbhPNDwmB?vTV=6208| zmeO{eWDIPpd_W$g#6|Ye!Jj+Bl6&&`$u34^O|MckYY}(1M-;kiQj8aP-2;r-pyHG8mBNUj~aoFiNb#F9a(t9M0EONk>ADKKW1s@2$QhgYHQ-) zDPh<5)*L9cizb;}b!NWV@9RL=IXtv(kih>M^kk2=mjdWcsCd?9RvcCARCC;qjlx}| zIMik?as_v!&-o~WBZ$s!xZiM_KX6vsj zT(f8Q%QWKhR$WKxYO19gLu(eR2NoC$7vqTrGP0Gh>*sXw!f@(#%+XRTP8Ip?gZZhl z9J@Sv?8d2H4fNZOx|o!7G<=h-ZXJz8>tF-tztj$Nkq%QR7IYb zq0PgLk_tI?{%!B}kE#V@3%)9Wk^#0kC&`GxH_&eZLqoXv3;Z;A%-pg=G%SaJE?HEo zw`sI@`hZH1YRqi0gw0DJmd^s=flS1hFo5!^0H!A8@6&JNeIlc!{+Ah-0%fZ%>uisO zV0wvwFw27XK*pr?~WPLBfU1DWZidJ36ZPNaf_C`w@$Y^(wlCaeL^h=yjqS8{ld z9m`)CF?Gqj)Aa@Oun?zV;AK#z9yBY56fvR*KP%RC7mW&>V_rKG+uRRm@|Q$e9{?O0 zRz8?EW}TUQ=1TEA)!9xe|6FRNZyL_Tn-Ft>o)%GR@}E3F=METBpN?hpQ%=07@gf7s zB2u1p{&0Xl2ZDDcxinPS*(r9V4=lZL?QeF-XEp6=UEZM@(`|R9mOeE~Vu9{&EQDIa z9Eb9$0hm>1cqL800EKVBpeVWKC7>XGHx@{?wC^BRp@yMBu}a%VaE>nai_<-?kYNF0 zq;4005W~Qt-#bi8k#Vl)UFEKU6;qJfw?W(2scxBs;m_kYT-GV(M&Q_FxPEI?!%T5n zFP=bsgke!8fg6ZstlbX(hoP5@Io3nydbEw{M<8`SnN?JUi{H+W;KZBA6~Bt1=qPgh~*FjNCh0Rfx}YM}t8C zhTKK{o|oJia)-Whcq^}qMy+)BDeYyKMbAPtbjGD<)UUkJM=$FN6o#klj42gT4EKq; z&HA3$3-~SYTZgx16z@-r3g9+^zH5A-Et=AA6s8`=X$T;brUJ)gUUQ#p!`MD75cjhT z<*cS;@(QQSw}l%+WI0p1qK+Y#Da6m@cE4Oq*fSlbTYjY!gCNuD43{&7+?bG?>bflYtE-kG;CxNb8kLvH4|)RH?6fy)*82QV!1BRtb4~t ziv;w(@oKgvR8u7c4Vv36GmL*;VqdYZh#VM!JKMHr*DGe+3S3GDH3nw)zxkB?K!b1} ze^oWsz83$a-!Hn}n5987wAMEY2_WFJW1?&K^S-!7$5G+40*Fc`2lFM0mb*_Ylas-T zSZx?ww`Rc3xRXu2a)%}{xPhMXJ?5&~6)^Nw7OE}lz(6l-nB{U1lN($Sz)dkNGxVpP zn4X~_?tV8`qAW~#gJF7SRz7l(eZMQE{Q&h3f$rmcC6N&fBl??Lf=|fhy$dvj!dD8Jg2o zIK()rz>%q3IHS#BrEyu1K>8UuRN4F978>TPf{z7pD_z~Mo)NQtB6?o&_9?1cHZULO z0;FzP;(ap3){zA=!4YJ1m$%HB>8i-jI;+L^!It$w0bcX9q};P%F7ho+vq}N1>_^(z zz0&NaJ9rJYV*3Is>BQ0>Zqw76>TL2*uhX^;(~J-G5bH&oX-EJMUcrL+ zu4bKE05V7v66blnInBB={4~gW8efo|`V6i6sdCymW*k^k&Xe~NcDsbnAJ?Ec=9dt9 zH|SGuUWNO1ZnQL=`?UQ-{uY5PNpCNaVUmfevp}*IX!3Rn>m?+qK&3oQM&6!bcf{j8 z2q^zd*}tJ+*Lx@XC_iBXb(vgMWSiXg18^^S0H(W(RVJa|>082uq&0K#>m@5RK~_a^ z)`5fLb9_iIh-ctS=kKmz@&(11g=HPVVH7$l#jr$m%xCfGgGa9dk2i|G15X_+g>{YV zgf(k^8@%1aBDi!m=#27!YrGhj(|9nvcNDSI>vn3Pr`&0uc^BLVM-01Hx~9}_jLdo} zS{Zjf+Uznc&iU%u>R`7QkXpSFVjnGt+U)30FJO{f3VuE%4sOQE#O{C;dc50uFG!s0@w`q7y^A<@$}282hek9 zs~gA2uwl&HR)R6X_emzJa!o251UzLWQfBHJ+x_J8o~pm9Rp@HFbUl3LHN-3zFAmdL z!6cCxDKDygT``w=cH_i`!o(@QSfUlWrr!>~bXA)Ru`LpH&npTcCPh$QA*Fr>!3IIC zCkS!mY@Q4sdpg+}xCqvx4sNx>0C0_nvv%EZ>+zr_xhFr=rJt+Kmz`!al4mKcO`kIV z^<_qy3@^649I%#iz``xBYPG?v?P(fR4$6{@e^KXnj1{Rds>Z?#TYy25&+Ew9%eBV< z+pe!23V4RzMH`&6tEA$3tDHCV2$n_UBw(@Z^=Wb5fF<=U(*E(5A0C+B0SNaY=)HV! zbyiCMD}-mPLXA?>pwc$kw*rQG;O<4rh4fWE@5pP8L*o+w{9@-~wR(yV>BRNm($t*c z8~38vy)I|w3i`}@bz2anE>eMc%g5xjX9))fQ6RVL$HMy^P(e`Aa)ZUNxt1Q^@kqMoK&Twrs-E@zJ(|IrHY8BmuMM zmK{NX(uwUO8bVadr+|VGl3QBpF^3#640yGkhf-FHc8?rtD9a~Dy^nUxv_O4KpE<`t zrEQm;jllxOHR+K&fU1h+t8AUp6o&|CK`@S>GT4PN6KnT$Rkg8nxe$#o z9}t6~RLRgx#7bIsXgG-UiCXS&u-|0cPo#{r>I$Z&)oDXc(O|~)8TtpC-Dnn#6K?JM zucbj*sJ)Pdli%Z-u%Uix^T(P;{H@P)$OJktytFg*(nfDafC#;Z49-a$#PK(Nw{Zx= zN~*IfESyPA1&5-Q2uYMWXB*cz?&2{uao)Ak%={Rkrdn;#6E)C`cp=|%*+ggBJDnQ% zO_TIUX|YzhVvZ+|da~dJ5S-yhJNm9=*FENY)-&T0XKg6NqVi@x$k3FUn!+CgYo@sk z%(>|wgsY_U0EqE9(C*v^J)IZWoC;J9ZPna!i}z`Q1%-sSEfw1O>2rrFjsihvtnCoHg0{atsK5vpN zYXea=lgB=OVSg)b4@rHi8umWt<63!6Y&15|_7btkv&T1JC6*6FgtS{s4y z^{-gU&ppzccQ#wuPRg{mPp_Kn$OhNPw)4XeNE?QK@V;AGv!As!ViXdi@Ho-FWWIBP zsntF5Xw@XxC#L(Uiax_JJ6}zGTC(4dAcdH9L9d_`D?bVwgR}vDH_|D5BAvgyt^X%!#RO#rk|@Aa0!=d@ zP=QPsKVSgz-Qe4b?cvq|Am2q@)8zK^)|TnkGu_@YZ^G*dLlxp>sOBS=4;>yJpvoXH z!jlwq92H6PoYU+RH8a508I=HSN{i`V3e3&%l}%{g%xSuiu}Ix_V!F z+g$dW9P3YaXPyhY6)o%bEh~U~g@?Behl0OS2U_MMyloGgS z^7$jRY4Xpf?k#0pV}-f_U-YtjL2OolcfXXQd&7crq8uS_@c*!Rf9kZfAa*#O!lDp+ zgaA*Gn^n^L1}#I=3dsP=u#?++dL$~l*AB*!gEDDf=Y-*+4S5H%iIh-^2Fo?jf~D1 zP!`rOk87AoLE}q7^UxzBQ;QrpIhGp%2dDw*hK--lKk$TlGm|sQRqWX>ZCYlg@qgeezEEUU-Eh6Z_h_>93Vpu21N{0d zCq@Ge;1AT3Ia>fPYya}9h^423mMRe8RM{3`&~$~a0S3BWxef+}R12B=F6|fI68gvq z&;mpV;6%)|&!#wPL;sa~A;yaEUp&t}XNFE6k;w5$%G&k)KN(XWqLb;>X>h{BaFiC# zt3KHwBd329pCR-;wrE_K?~>N_0g7bZ!QCLkhZmm0IN54e>H|PV8>^ID6FN`nsO!N- zD$_C?w`=n^<(jhdItMBW53R|_RsA5}_9};)HPm`i#h)B6#rEwy(1;=Wlgm>?(j??; z!@XU{oCr09_3YJ9ADwSguYJN6;- zmW*a*TL@44lQqgYvt)&Az{Lreven!=rNC3lrn`X;SdkoEr0pgtJ->v|9`7O&N9qQ~ zt=Q-aS4WH%?((G=y)xY|#zOHSrM%QJ zx~g0kDCorHz7X#9uR5xi&@S|{xxUCMVz*koNKxNeVMD3;0{<9j@Nc~N)Rb(1xcejc zRB?BJg=|NuA=c7mmZo`d*l**8VVFQ~VNkmR#)8bMF2=S9wqMWBceG>tmCd1w9n*-U z4gCbackMI`x&r=-t#=B}ELzvLW81cE+qP}n>^HW}j&0kvI_cQ9o%ENr_Wn=)+9$I{ z)g1NA!#V02H@<)XO_4I`aKElNADyoF*D_N660Z}B!?335Ho7hn^o$z_LnEB>Af><& zTGzbvIs_H1D<;Jwai9AuB_j0pVmYUyzNuk%o-pUFv{u%4iqdIldm#4s6$SSb}@jwj{7N_8b4Ut>Swxav@l`g;Dkc*O1*Dd`(7ciic&Bx_b1BMBfG4CEJa|#sxKH zSYm+p5x}URL}wb>vJzNw82jplP=7IuxBbFC_E?nusXIZiwP$A!C0MDT8^cn4QAubc zc(qJABGw@QY-}Jcx*Z)g*GhmJZT93RNVDO+sE|U092SqKP;y(_oa$$7{${la$c8K?>sj zDEiED@d;~E(9X!jeAA@~HZSli&A_pjX)g<(hX(UdL@az||M|;EVr{hebh!dGo*DE! zmWq-KfEgV^rO~I0M)6+bLGSR`GHYCPM~Xqh5aUsMZP(@W|Fi8DA*0BWkTAPf&~cHB z08?xyM}XJ{vx=o`#6^pxG65|vu4MiIWtrHYBc6j4&OSh`py zq(j~>Rr+_)S;lgDIJMLQJn;93n267Onu=u{0H=_YIsYjLE&>s59I2%OlQ@i_Tu z7ABim{4u-;t|~QYXGD0BL2p+Y8S_&$ZQlG`W*O|dLSCJ>MDS`Rm6LpEU`AIhrd>aL z)19nMM+Q@Y$~`gO#bEL1K!gtI0)f%$g+v&H3jfp`G}>inMeN&xz5)0J-sL0?Kh0Mh zfSF)hWUR8p@kZ#^i^&<|Z9GR$XNh@g&3&>v-cjfx4jhe~PILGw^-#h2025G;iD@rp z_<*FBB+~{^ znXhB?nU)OK2V;s`PKqGsF20F}H?c?haq0`^|6~@RtP z%;I)XS{4mQv_)yeF{eEE>6~FYV&Jmyv{N(67ZlFiDvK0>nskU&+|)CKd5As%Sj{cW zeF!%tAth~`7Wi=YO%(MYqX{PrHWEYu$$(^|Uq^kgeHK$YR0-n#(rd^HBTOChCi2?@+z7kU35g~gr9vZc{=;7RcycItcl{9 zD6Nhfiz_}q0BPi_f7gw`@## zDT^+DD;gp$Gm?IYKCibe#pEtw3ahO73?&b6wf}}u zSUXdd$xvZ8ci(EwXX9#1)yxX|$SzY6eKk=);Q8$edK%4UM8<%oAu%`w;A0SxXar*> zXfc||^z<4JMBFfXOYlXF70w)Z;7@=@cD^a7n4G|Q6Wf@|Ni3tYX_ROge)G>bi#Q(A zqg~1~9M(2tSXBwLs2j&*XVa6-_#>|1Zox<|YumyZ*kQ0M`2;WQQf1n1r zTbK?VeZ)*&ar!1SmP+3N5cJuUF~Any$Xumz4Q%Gf3@SAvbAhZPOiFBmi|gMZismLJ zcW>?tX5&CtGd*WnX<%#V;7n7ewRJj4>=24iReLdpHywPJs_5M6Jt?yEZ=|b*amB@- zY_<&CO+BGgXzvgb#!TSeL$+O{Q%No+rpXB=9rX04o@V?#6H=51cnP*32hT(_FMs#$ z_2Ebj!*cy;$aa+zOaE{_^iKC@Lmm|Q^rVVC}R;?|FR z`t6TKK6SQytWCjuWR}zy-e{Exrs&5-=psz-E%LPjJr+yn%TrK_&Bi#^Zp^Lsx20YgD2%MW0K=lR_)UCyJ8wB;@;F}f@s}UOhx+I|)EBSKGRo>$#Jce24PmYI& z(Z(We^h?%B7`yyxMVBH;d8A}HzLQAN+iv#)`ZSxRs!aX;anO*Ch6xF~sT(Gx5sCxp zyVv^0KfDP#wdvRUxK~naNV!B<=WBCjdK2z_q^%%);^?vwp#I;;A!o^AHZMR@=rjc} z)hJe`HLb&g?3U0_B?sLr$>J$3Jjm03&}S_t4q6>Q)PMK5CK$y$%p3y4ottFToj#!K z9LRRGOj{U2bsQ4Im1g5+`-f9p6NG3ZVJIiBS}{=wcBBTzanPI3~5aM z*?e7z!Y7y`AX6jn`p+#Mqrz5b6-QB&YQ8bk{cDTc?jM2S&4S|jm|07b}V3CRxu;|1^fbp&L1sv(>FoZ65}YE^H{x^KfdJOU6nudxO$+WGg;il(eU}#Vbt& z(lS4t10J2XtuxF>t?T<->X9(&R^zUgeB>PGIIf?>-SgQ-#>36Xhaie=)vcWJnDie- zm#XsCTW3SJgjPz9+ua2_FrSGN$ODKzZF;Jf=OPN^nG=iZ6;bdQze%@LJ4)Id;0i%k z8+AzGf&;NiPt~|FbY!4E=$Y6naUX8XT{Rnp0oI^ZF4ZjGhm{R{ZA_Df>=sO3ifds- z3M5;ncA`u_=_Eb!r3@)rF@vU_S69pzn($%K;*-%$WB47mfH@+(wuuTPHfrj8KR60b zSW6dF5_hKw3Tf<|>l=l?Br(3OU~*R#K^!a#clrrE57m*F&f04rEY}hAgP~%f4{|@K z4~e8n`d8E(wyX0I|6Q1b`l{YzY6wmb@JItm4mCs0gk->D$cLCnG|^4t<~dJ>`_crD zaP^Yzl*<}?iB#U~?2P$HWyBWFz|5ep>#=fdnXZyBAVN2v4cd|LjBOD5ZraE3Vv<-t zZ>?V`rpGR!h1E9$Gvbos;`TL{y>PKfQJF|rAw+w9akB8kgogt^Wy>AA?4y~_O6lJB^ULhgOv5eu z+T^vhF8L+9Yk*+asvzC$ugo0=z~2Xp4(+^LK?9E0^Dm1fx>iF#ZuiHJscmayqN?eI zu41WEj=@2}pn)tHpheP1M;~2Gr=oE*G4eH0Mb|NsN2p*xuAK!9@l!=lYJH6y@OPEO8OM*$`>AS2?w;+yTcy64#=R+#UMv;EyIuSq@HMwXF|o!t zUY*zXb=O74iZ^a_%&s6m$p*=TLNQxO##qIc42^0H&e#^6tjYP0sGKQ29{iTMj!!^C z4>>{mchux9@{Xh9)smy&ZiJxx)P$dpjza6~JYwg8f@f=ZC(D6{Pd)9C>wZ8E(RhPg z@nQ)__9wKdZ>(uF$`rK;pju(%_VBONC$dk+Sh%d07F=UtekZNb(mfLG_V9QrSqDjt zzXqA=;h^;gs&|ANMdYlPMoINtRr5Gk3eK<0KDN2p`gGQft(V(dN&&w9AsE86TPJfu z96zmrp=|_}p0y2(sI9*Z#G1ni;t(XN@oV0M%YC`!%suAXzf*4G0jag~wrjl{Dr>3e z-ia8H^rvlU-59rxj2orO`Hz}Uj)ZiRGNpz17@*qmM&k1I^ZlaQtU`4~dx7RZ1f&xy z5-|oGc#xPg*dL8lBoHHb%OF)C^;Jo#+QfUZyMnyTiDQoykInG_OuBpDTStwcE@mE^ z*zVu^Rrs^eRN+63DOf6k!~_G$duUhiqkCF+%}Zdjjy{ucqe!La<5awq8m0`LdZ#Lrfh( z2vq#W_X_&MS=KqB706|qSo*WeV_Z?PCRMKR!?`6Vn9BktCL6j;4b)=(`J`d7`t7Rf zrK{>;{pXQU;9k(LlH#p1f$Ymcw5vlm^;--FxC|B)#K3|mueJm^%~7GCHr27dVV90y zr=Oau83b_c!K^VzEyaSeotW+Jdr;FQo$|_-8An1f=&tLDaPO+Y~sI4-K_c zPzQL=UVC-lj2gR~s%+wVP*!@r;`YI~yfc7MI0=AiZ}aJ5yEx}7Q=7*E3C}MW{7|rs zd@NEp;8Q9WG_OI50-0i66ehn2j{%U4REgY0NW7&ex{p+kd?-x4xoy~fzPShEPnHs( zQfy&Uyl3UfKyPfEIGt@D#wP~Q{5eW$Mg6;_ufwljHcX4GZG-@7kRnk~Fm;Qv<&mvN zwSGV=RldJ~H{?Hij;a99XmmbwgA4FDFND~Y0*ZQHByW;~%gSTOU|97U7IP48^%q3d zy(cN|B7}X=dL9_{-b_1qeY0d>R%fD%_b~{kZ(X9 zCRHNYcv301emt7X1O+uvhhq$&0t1ErY+%0$(A54~ni@)voNg zmtI|dR%&N^Y>D6ZOCbNsd^Lj&$sV5EK~l8~tS&rY?meO_#Lz;F*|-vsEUTwl7=QsF zY^EBxmwO)AR?6!6>L2t@w-2f3;5z3=N&vz02C^Caaw3;SvIqMyTR$BR&vCNYMQDcv zi;vZ7tR9r}r`W=_rBv8?q|<>r5u&*E;OHBts+VRbeap!=J)q+>@?E@lH(+F5e}w=) z77JRZRjm?3VoQ|0bqy+2Aga2-Jt_c|{X{LC5T`4i-EXxKzQ#<-t`N`l+2#wQQiY{h z{zT1ZF^%^Fo^@PY5tz}`w~Hr?JfI3t>eKs(&p?sD%T>U(nENK5S@{5sH(EEavw-9LuIDC&VWPj=9MnX@5W%I@ZBm zc~?0Kxm1=$==L*#FlZ99j*C^EPT&KSF8`e~PyY1L^874XOCxk%Ju9^{dW)Rwp6UWE z;fXmjRT+k&-ee6&S0jc;3iL?6*Kr4zk&EAEiq~s!}hgXTFH?Z+&{PfY`L7^=24l;kiQjl zwPXP~p?6;aj*pDE^Y~35k1EZzjo`7;Mrw%b5M!UJUC?)(SmItyfYy1f$p}>00 zKVHtDHrBrogg>dy8Ip$(u>%59H;p8m+F9cn<)cdKOAm<=vE$ z%jp|v+A&k;O%@EaNBlJeOo86~b*fOWBzMGIhc$0E+}aAKP@o)7WkPIrsgcuM?69Lz zFVR}3YQ5mQx!0XdqUCq4OqYGy)-kMG8fHEU<^e=nu)g-AWeiWI03h{nFA1?0F*MJ+ z#?3X}Yr7^sV$_k^QV}qaQpsfF4KqLIzZEFLk;8jIdNx{TMI3t^ z{^l#eDoi6NvPuhEP3M}cqNCxi?akQURhup-+)KBMHwU1%9(n*}JCD{D_I54Wx&Ex? zgv(YlSu5wmirfVPCSG2yv|IWidqm%swqe-$amBcgdtPgiQM%bt`z+Q0jn~x*JhnQP zHT`Ghf@pa$Ur`$BDOnqHjH|izc|@Qs`gesFJguQ3fyULh^2VOKlO=3w$3ap&V$ut} z;DOuJ16)f~W&IxL0rpmgqmZ)Rk{;XO%3H70xe!lXF6mn;?GsMK@Zy2*(Px}0oi zi3Zln={tSpbaT}%HB{ZXD9lni_ld`ovOmF#0?B%*#0cUc>tKYAOqn$;uZ5ifqFyr69iA@p1l$9BkR$~HwFqI>!qQ%kFF~@`` zFz#F~CJ}%c2vM1H;4B^#8UzxA5>(jy8KpazaV6GZfH+-r5pro1am>buR7eF0)KcP5 zw{a72u3aLQHqVjb(LTJ(e&ls44G1%vqydCUCDyQ)tDka&wdVd4(y%63r&`J4Px+;P zEsxg1Dam5>UtzxtvQDfRmx^X-8O2Q^cQ}(Ua|!?ubAC85lhP!-GRam_0)hJ~gO*X( z;;GtmzywEA{J7%#}87@LEym z@79GcK8!8IPB!mJ{@(IWRyQ|&<43aVdK7N0tHl`>RsCOncA4iA!ns0$KE9kgm0tf+ zG1*qhc@Np9Eut5|W*TOVUmW@Kj+Xy`QPcu-=i(X0uAT(YUeetsi+L~C4%yV&P`rqI z+*9K_hVu*vB4GT=zX|`!vZw2h%Tx3NrA?RNrgJX*(8YxAT{u(peB1lL=|CQoHWa)V z{SzYWY;Gk?QH2_h40}jc#(pQMBo(>yM#1Tyj!8TFK}s5oHs#J>XqkX77=lfO{U!h< zztDX5HT+Y21@dS?cW~BpC_R(t2&vT~g456zm9mmbQK9t(!+COhq+~dftR8Hk8@$1v z@@cQHcyYr**vUzzbg8eSEmFD+xM2OJWfVsfErWcoQ2!g0)P3%qwgw2oCBh9qqM0s< zF$+P*^jO4$UwEw}Ri`;rO`|dxIhTNv7N*<)a0bXYD<|pG4>=T8S^jmgPRPs)2{+*^ z-uCkz1|LgvHi;P)9;w^{#_qh1V7TRRRm+($@QkjW=somwg@o3%U)~a|}N~Zy`<_+0c z+IrEmYKyIZ_t&Hw>wkAk(&F6OBT|!`cUe946|V_4v%3###>12L2Ii(ZfBFRoCiPl4 zbfc7sGjVlavZ=B5G7B3kVTsk<=;qE$3^q;<@=f2;nEozm{?dDV+LaVjt?=(~V~rG)U?}d^LTDZ3Un=D^8PTt+tRn>qz>5Ob5VHg+o1ayC0Zn|Ud?E+>Pa z$N)%TJbDO2p*!}m@D4y^6S;AkP$9+bBQbW5<*kp6?^x|b8MaeNGo>smFX7j(mqypQ zG9+YS)^{1*Bb+E?4J0WOX`O%2%QZAkJC7kz>}q@ig+hGVFWY@$8#MiWhkuN?z&%2~ zaBtjpHKNxSejZ>woL9FPuH3Pj8~vXh1nCV-R-I1!lFzp%E0(u!f;vjBBJiw##{TV2 z%up_081MEu;a3T4nreoTfcsv}`h$SGGXYDG;khbiOz%{ApZlJ?QAquXivMa%eNn`J zel~I(h5GgV9wp8}9Bbo^LeJ0_`qOYFc}#K)`*R9{69CELycFty;Ee^mK3$dHfZd09(Fo!rM-d@7A^$+ zt=Tq|ln13yv~oti7YW#l7RPY3?{?5;?lHG8Cx{4-5Jo|FRJ$9aDxv)r7~hJF zThW(XNC19@PW)TFs5))KJnd7v!7o2OF`S0#e#9uRSh?9S1W!zg3o^G{Bs3$wC4P{B z*$_GLI>wLO2&H6^eafwF4jM3~op7CTl=xa_&?IyS)$Y!8iygj7tD*_*g@zy30<Hns(1CK$w;}YA zxc~pKl?Y-mqV%~cFvxW5cTn2@6R=Dmfgz^{S^yKK6PKS%ui&ptfTpMC!wQThQ&`@bWQS-Ad7XUrYU98GNCVc40{6Q98-z}T68 z8oL-jL2-av(q%qD2`FimJ@hnRcIvu-6M&Y%j%G9{Xk^H6W52H@+8Fy*J!ky=|B3_N zm(t@uLCN724ISIIeEy~Pi5Y%Br4M}mghzkA9)ERFMWRygzIA1b>o5S~YX3cdZ%GD( z%=-X|3{Qdr2_E1kJ`4)(^nDBf{v+~GSEkr!`CFI!7Djg;2adAp9jaS}qSGjK-wt+pz=nb%@O<%dbNw$Em&W_VAlWcp6<4 zF0ry5hxp?{g<&P);9|;y5G2DHsEKdZ&#TJHn;7%sNrnD89aDrZVf6N?P_NnZmbAt_ zf+yb}fwvvW#`!7AGg3>p8@E_(7LcEK%#wBwKTNGfcp<_5K_Hg{iq3hFkSIm$(l}*tB;RE3`FcTQR+cz-xDhMJB;ruu=6B?jr($G;w_fOopUgbM4$Um?!+GtEOvz-W;2M;%N&71c9p= z4j!t0rdPn?Q@+naLMigc-c6RGDLuW^pJMyTLXT9P@DkMB4PYl-7x9GTIov$pxKV#_ zAQzfiQy2qlOKiJ(kFO+kF;*HT{+t&o?u%-_5VZL%Vzu|xbtGOO43r?#vuR&l28kv9Yjbn=j z@{n?t@|F0OG`n9^-DpX&JL3R1qKzpYVPXv^yJ(I?G zNqNciL`(;e@V|={uUy{fw&#G;kgVsuVR?k!R@@X+Yq$D8D+s_+++B{ddsQ$Z>&Oqw z^*8lv2b(SwNv~!bdCDk77Vf0fO1XAMU(MASY-6bZ!~lCN+rFx{P+tiz)zUf<_2usG zmDy?>*y$CB1>Oe1r*RLc?*hZpJb1nagw;oF%;EW5;vYUtzWq}6FP(pL9a#*CN#z1+mfYVg={A(?#!iV%ILDjO|;*9@iK29S*mdxU$F|<>^a+GKROY` zJBIBgfB-B~prPp5s+`EXblpeYc=}|{Kh)cXgODP&49WSo&rPm|x55Qtpc7;8aC_sc zp?!G5sta!2FH)Fgs;#a8=|lm5Kq&Pq?`8q4Kuj@~W<(SSh;P4A>9|&EdWIGZ(&-sV zVh;UT3KAFcJYH-B1NPp{2c+-QizCusOCk_yYe2mnNylzA4gB^jN^2UYBv@;GvQ)$v zo>M23xCU161HXY$>-OFVU`@BK6D*nW+m5mJa!%39xodb49oo7V2oXY4kbdtzUKotq zGY3R9<(3&Q6>M*(U$fw>$Ym0CPjG6kKXmMxUzi>=r=mWjxaTGLq#}ZaDIaYGQhoO4U{cEsbR3@{`pSrkr(S~L1bNos~*A500FR=LDGY*+&n<{rT+rsb8mhK4!IB)uMU zND6C0hXP3El&UNY8brcS2M$gFhf4yfBdV+y?#$wP42oV&!US|IM%l$^1QXV%=h$Af z5$x{6dr%(OX-7>s?(GSfdcv9X05ni%h1sXMf-Qd%pqpL)FqztCXxKt-!!M9$mBHFh zH)Hsm%G>UBgCx;xZG133uUK4o_=HzMmt7E7E^TCUB@P_(Yl5CrAXLlQ?FKUnyV#7V)03IN}0b+u*J$kZ1 z%l9nw$wrlUbfru*G%83vT=cH5YN-o<7UFf7$ThG`p!y}>j*kA?bStHfsPEIe>8Kdr z2Akm`JsNiX8h#H}__e$*`3l(BWu*P|k$)1>AI_5Uk%dvEWach0W>@f8s2@mGA(>@~ zaM~xyvyK@@jYpL84Lk}d1Qe|`9RB`Go9L?1K6vF5;22;e0e&0k7WSq_2s>cPOIWdP1GJ*u*k0FsLm`yK<%TB!9 zTQ|3<>Rt73eS0k_tM=sFWQTT{`y|8Ai)1uK-KW7_>e1Zaj#D-meow1Goe1)WB)F5{SYjYlMeAhDX&9VO$snCW{?OQF*WMGVc91|r#s-Bq z4+`8@hq@wqFx{a~KzHYSNt&ku>(GKLwUe`K&J9J)QHVWGVT3&d**A+?T`y);qzr*r z=n~kXbX-5~QO>9w0Z_RRB0Xze8$?H)9+MTCc)+G%Ot>T^9@oQ{!HTg37D$5)G8amj znUC7T`4g5fqOF;j=GAKlmKir0=j)$vg+0ja(A1KnW-`&QJBVEA{8Mzo7`-G;CyiD_ z4~A{nIFdv%K^uT*Op>R+kBV7* z(^aBefKmdUaY!=SofRWJMq1>{?@t!xLyFU!?2oLKG0TaJRG8h9%89tgxq8ogG$zB( z=N%Ie67;#Z(($;CoG&fvZ>1_lYFJG^usDi%U2pz+={Tyy$~6!Lut!W&patJT_pJ>z}{!i14-XKY7BIpa*{C=D);Ly)woMY~q6 zHB}y~(fPx-*c;Yx0w=Tcu5SWzJvw6RFD07`ViSl34=5Y>NG>u)TfDhax-F!5z4@~)9k z5*T_Gju__I3M`}F{4QDOsacP59t1Z|JcFDU*6SLB0Ji73aLDAoi#!`ztQo}Jf-qWH z&{$Rh2VB`}O>lvxNRMxS%7=QNZRGf|Jf$WiYW8FV41aT)_{QqKLuG&Pz2^ywtYO0&+11svxgn!wW`~*$_3SL@FHl-*Z>6Pu+YQVR|7EKAg&kK@rqH z*8oUlKxXt$D+#)($&`|-rq$SXGo{)m&~G7gZur~FI@VgcxUz}iG zjnx#|7u5=X7lw3TE9cjH%N%6+3Zwh`4>nesls4>3kA6i#BEex~_Sw$xmHh3w@Il`| zVNf+mH|01P$i!GkGMn*FlPb|wP1ms0*#elQEWj5$L3(N+MqQojNXU>jv&=z9$=wOf zG`lY)VFA+O*on}7ZR+gT7V6KD`dhH$X>orkmYQy1;rf_Dwi2@*A6WO$!JqsMV+}_x zMI}!~fz;w_E_;ttNi{k>=I3RN*&j1kT{g}vJ{|jBK6m=%;l8SUO22G;!`{d9c?O8^ z+a#jE&Fx=9xij-_r!vu2C>m6{E2f5tCoGOyWEn9nay=g+kv+#S-?9#k>@JXl5qHA(Zz7y#83jzL}uMB(@ ziOlbnmCN;rzDm}cJ!4XSDf3!IAFVXXnu!nNlFhIr+<||UmDGn4VtBf_R0fdG%|8`T zKjh_+r{$PaxeCUd>R@3w~JFfluxPgJ$gS_Iv=$?Jh(qVk^|-d>?)>Ub>vFvV!bo?yWt>l|sC&gF^OZ z_AFbIFp-mB(Yzg~IRtf5-!0rXCFH1##d|T=K>j|RKSJ!klE`71BQbD{EdY|B$2bDK z=YC*V_pDTmW^-dIRDrEj8>RB72IQ48W05gxzrsZc$-pl`#B8R8HDmyv9d0qyG%%}6 zarmutp;7qlJkts3BNhGYl|$>7QvH&OHN$@MJ#iM-gz6!YQ7d^vA%+NIy(asTwLzD` z`oyxU;sUr}eo89ZWc$U4j-Heh{@ocam*uG28+1{Kj$gOC-J?x7aj=l3>|W0z4{i5A z%fwnCCql;*Cv=Bd*&CnL%ECvXfe!O(aK+}X(bzwh& zaU&owh;fuqV2<#dcn=H19hfC5PUtxaGG1=5Zyx4$8;sw=Q6#raGm!)@R?`B0u@Yys zwa|H**R{7yL7BR7d=R`$2|)Q1a#_O<7DaNS=vNOR9#}K8=`0O7)-eJq9ZFTt-m$|q z%k3CPOP|B#i~|UnY6~^b;Pr7ro+=>epDFBAT4SZs-gnA|d}3p}jz(&`;Mac%4P$iQ zXpW8IJf*zg7Slq^la6`g7dw_E8Zh?))G@i-zg$FZURJ~#Ng|Vp)to_H!}$bmqX)7Z zfgbG$&Yz0p4cw8bamx2tWdbj1gT|7`9-BZfjUraSTL23BJRRifubwTOrgaad2bc$1 z7cM54A%DjK1oEzYFzqn;55-R}kEMj<_axge{rn+>wU+-jsr|zdeidv@9Z7|a$HPEi z3l4vKfD>Bzcf$6-C5n15=rd?%;d=nSfyX!r!mCGlii{VHgq@A8Nqw40Npun`9uecd z?V~nbHVRmCMczR~rI+x);T2vy1y$SXUW_N%I@=>#8bR@1#8^8EVLi)zKn7uV&m{(Y zGJ%k}opxqG179obZD(Rh82!(IGAseV_vq%XNQp!`r@{#D1a5j8rZssBXF+UDkmR;2 zhHB@;A*Q@*w1Xqq(c`a#TYx8M+)Q>Sd{7SHoir#xb7pZ5eu8EP8BtE-4UPVr%gP6^ z2jK02D(shF9VPS9<=-IF(-!t}dFpHhRePLv43@m88Q46m9bY?ywj?W_JI|zdl|WY{ zP~8hY8*ADbRC%t;mX2hPWgYe%B(tWUm4vaI1_mUzL7FR!k)42R*$MVBL#6_mzj6XH zKwGnSGC&<;U1xwdR_kU0L2trxR2T#EBorVa?OLFUN&+4v{S0)L{RWhOHwcnjIFog74vj3%%X~`FY=ieiqx>ko$$ zp!U)nsw^c5DW2VieOvGWAW{j1d=;5V)Jaxs@4aqM@;@@c{a*MVt=D;WEB!U$->Ti` z^9}ut>)+q)o!)D8b-!o{CM&I`^xfV4+imYwKDKK0{~7}D{XV`t2iiCt0Xupft+wP!B&F$wtL^U^waK{_E{pdGstb$rqM}YO}TqXyj~tWg`J*oQ7%qy zetil=;K4)$IG=pt*x-~91Lpp`iH>sPXUap88H#_x_5!Xde(Z}BlOj+pes00-##m8Ydon1mW~di9Cr(0umm()t}8ga6P@ zWQ2Pv!~-|HCSd6`>Vicv`9`{FUl#CH#^jMAk?$l%0Xjx(UA2H-fY9S!XZ6Z0#4fz0 zb$a?6NQidN%;7!(LgNsndym7dl9OgR?{X#dI{xo$ptg9ZFb3QZ6#;tHV)$r`4G@hL z-SsQ-au~l)Fhy(?}ITI~w@Ek~}NmB8Eek`P!B z5e92OVwjR%Me2MofKxEsuMD90JNjdil+D7%saB}=B+@N-P8AFm>~XSb?|!lIV4tt& znd3Z(N0Z&6>25zc@bT-!#I|VA{F>poaR^LYamenPn`(%`t3AaBd?0u8qt7mU*9 zssVB=Dhy~A&J7ngZIsbj7W2Fa$?<~D)i6_AbBrkHM~KP+K#Psr@Ej?NQ)J9g%twSE z5Ha1=Ijcy4Df7Ms4E9-YN>Xks(H4$G&&P`&835JQ%7p&UYU zBhS0r-c)&a07T^;m1A>Az`l3`c)-T4QmUD3RU`d?z<@rH(3{{?e87w^!+FxQg>#$! zL6OCxqS$ZNNWCy^9|&Wt2NCHZv34bx`a1H=8)E*H@YCM?DqcRnmXa5PAWN2KsVGqV zdHs&e(FDcvY9!(%C>@3~(Gom(@2kf1);|t6C9d{f09LqPcGjsbZ1VYQgqL^bBK6k0 zJ@*b5`?cKNG#Bjegl@mDo=5m<;;|C)FY2fWUyqSx;?pemYHuB!Kf=f?x}Yho&sYH{ z!M&>mM{J^IJ8-Z{E-C3$2;MAHa7|u87072Lrr}rl$3~FsQP!#A#FSiIE-g@5L-@)o zsIXS_0P@cBF|j3U6N=xgPW5uoO><6BSproPsPo-_LS2FfpRERQBdmYNWHQo-a9B~k z+^s1C3nSFeubnhlrQd_izEQ_7ONW5JHt}P`D;(=;%M|iuzi&Ez7b7YCIjqfPpZf13D^ zC=i{;n)NHdV0z4ra$+ti^%TU081;s;K#y%L*i_h@eg&CZ7-#t)svv0aJU+lqS&gM244bxj?FWd(jJ+v>3naL3ayH=uP?Pm4K`L%0e9+|l=G1%d9=z&3pnOKlFs@O5LYF8K75lRVPxnk>O zpWdZ+t*u-b5fqU`Jv0Q7Of3UjNqyfS4cTGGOAezhY+hxvih&>!a6b&uaz9uaU?Y_m z*Th8vdQ>)=evXvF=|+f(soM2{mMf_}{yqk8I<8OZYW5|M{{hq1!SbPxOMEKQ)4ypw z&5J>cBFf&gkHE-8T{-gr$czrw?qs>KyDem6DwpE&*2(inwvGv0f}8k={w7q9rA`d} zLmU=^_l=F7?Ul5y*z7|g&r5ps1n!e9!n7hDQ zv!pY-vz+>M=_)Sqd_`|D`Rmf1UFJD{*I^>g1Le**ZGpVuADkeX;u~>zR+IU^+&f}+ zz02v5(1EkxQAlo4)ZKmr!DZ4|BMdX&%+Mp2l-{EvvwBqaC-b(tV=J?{lSX|Ul3z@+ ztWQ%{D5cDmpWn81LMS6KNYk?1%Ir_aem38kDEu6ULso zUoS672Y;Y{k7Z4u1jl?X&m7umuyV)e#Lik%@J?+jSG@)hDwflfYU1%$v~Hx1GkM`` z`AKnbo?tm*O>sR%u63Q?vYl2JYQje8RE%hafxj7=i1z4L|8&&?24D&mim4q5LV-ml ze3{hnrOCJ0TihzBn+9f|O04xcxxyOI^uGlceH8;R2Eli{eEZ)&`{p$Z$MiL|m84eD z^D5%pxI8o_3YCT#SZ>s)KZLliP%*q}7Dqd|IofUMBvhLyyQ%QQu;LsynD7WmzB-@ z7huC*Nv8DaT){9KCpbzOy>^kxEE`}i4p^vY$obWlHr-M&misEMB~mk-{tI~Eu6|_wG^c(<+hdCa`vS!to8&eC;Og*?L4CRkcEP>iGhT01)af7) zKAubFlgdYQaFi7k7a7(L>k%~jg1^;l94$SBc2>83^}Li;yHctl8pDC`+*EMSszbi+ z5O3=03O<-dyd$=@VY8!k^Oc&?djARo7K&O0lfkR2CzGKfj|p#x7!oymxx~YEBdNO+ zrZvhQu%uet?5a0NE{fh&bqLv>JhmZ%8m*%hz4?BD> zi)IMXLo!U~7WcAPXEzdSNo`T?e>z10^UV^*DB?uIMdZ^dFTp_AL5$DP2u3I)Cu6_` zx8gv-`i(gduQmD-K>-6Y7~*bDzDISQ<6VM(Uu2z7Oo5XFfSi3qyQpzr5`z1Q_2{2wuCudZ z-jkV~Ci53)ZmA}-&alILn~{A~N|e80SkUj)!f_6;ea706riuuqp3pkw-|}H#*(S{) z*)eJIoFI;AE9?AJvZ_T3MN+vCOe++oy|6Y8yOu%8FeyLTEU6^|dpb(4RGn?Tf_GNxNwe7Sf=&uO2sF6uWM$9olpja-Vp8>#(VIKA{;zg zZ7K-6l<($xBIo@;>9d@ZGR|tjIJNUr z(Y57{wVoT^`W2as%B1s3(76l_W_0j+Eb;do-ic^BGzZ*_muTo*-%tkuwi0F5mRSMo z+;|`l%xG{5!}P=@Fj(fG#e_cRj~P;@TAr30vD43sIF85o1rgT3@M>) zU$YUqC^O8MIqohK1N(=7>#m{1)`A8C&~%D|aXlwYA-JT{D`W76lT|C^C(R?S71517 zipH~f{G-IAE-XN>C{kZkA=`(~>0P+2IhN(DN_^kTSEp#n*K;RyTUq8tNwft=+#hMo zkToNfYcaKpnM82-e`{82Bl67BmX0oP2}EZCAUV1l!!`sG0b`*6R+(&Tj`U@cf$ND2 zFZ&w)__b#dndAQ9zH+)rCoOY>{{71vqlUJ5#CK5P_Fy@|_Lh-A))#$xm}K{)=?(M* zXQ~i*yIwjaDu=opVmRzSLTz3}?|$=PO%u=qTEI1IK~3!Y3( z2kuJx%JWs0v757wVm#50a{%dAo1+BW8~V+~yxPBh{>SB9k%9kE064)Q5X7Er*#Q|B zoIwqd4h_-*P{6D1FxX&LN&wgYK8~A~20{YdxgjK=ff4{j=OJe!SN@+?F?KF+HaZeE zxQGU_*fTeTF+@1P!eat?I9S+$rTnywwLaZvz zjxI*diUy7*w$6|kF0efh0Mhdd{6QFP*$btv#%?n`02Ld@* zAWN}xvv6}lB6(T3A(0&Haf%DXajmiFP`qFVODJsc5yT7*jL8R}08dZ@;IY`)SvVl! z+>krr_;)f`i3*AklN|{B&q8qU{5#u*2a=t{2O!4*a#gB{_t%A7SGRixuEPpXuU^1?tClqf>Y%99>-(S*G|lsO7gt}@RyGIF zS@m$#v=HI0D_G5PQb3|F4UEIwft0`O^=E7p+Rk} zIr&EJP6laLb*@UQ#*6*OqSFUnCGpYaLGH_ z@1jnAmv8NfNaqb<@(KuhnBCc3P^j7BoI5Y!6T?pgOCl;DQkXt1h5+(Z?ME-73xt$VdQnjPwhocH_JiT9mcKc?x)(tuWxW~d_VBoN9q%lf8 zcdIHN{~WtwDT~$VuaxnTV(TOQU4U+JQR}RHQAcb-&-A{-w9Y*mp~nJ>9CReq^6bfo zEBt$X&8rVccS1c%>P9}k=DNlduE)?dwuiqT4@xui15J2%MS$|nhT%zm4DKfDxUSL!juHX_~TiQn~@3{C3(oc@50SQ2kaW&3p5U*N4wbclJr%7z|P>~pI zYOHrYC>&Kblg@Ch8H8Oywl^#_l-StV$W06UhN1qe$F92NUImv`EBL^&hHgsyk{$Rf zw%WN`5)0OVEoI*u>C=9*s?CSHJpDou3pGm;-z5wLajafL*>%)JL=Hdiy;E%YnJO@~;S;icbBD~?NLlZ)sdRZ6A_5F?y|dcG-X>kvQ9arJExn{>W&mNK;5 zSMpWvDaBE~U&Y30;=o=a*vx8XSGO24&@4B3ivC=Wtjs8E)Edei zlD5*ZDAs;(Y8ilr{cXJtt-=&K$dK^^M0osl&dW`9Vw{W5?K0rZs^!Eep$`pwzn$@A zHBN%E%uZumkj=!WunEW9fD|1=o^m}#B#XyC-{eRU>y-i--6bZaq|+rxMM0JpVdS^J z8_{5&Xv?si3OFsOwvFnL*1SZwKk87NWqz`a=&r$;%xgpBNy#_aan5Gw7^4CgWFt+u z_#`sHBO5f0P`-OaLgAb>vBqWBELbMfsGU756NTVthqfHCO9LhLtA$`QV+D<1vfBRa z&EBNjFnmp873%)T5spld6Mu#~{(BBK>fXmD3hA|E&J7>LSs5(XFh4l*+YRgbDXvhd zZ!#&CBmL6sHXc@Yg!RNFdY8exAi`0pL2V`@w_k&(phrvVdpv&N?_57TYE{e79iJ&bAIPy3#j{g_Rd@Y2l`x#A4VsG z$Un@wM1``=hg~6?@3lZ^H<7A*WzUlA6mPKSPbr%zukjLm)%GBf^YWH5dR4^jG6?2o*udCMb%~AYpbz=N2t93 zg;8GmLL||}7o16|b@8utuq~^(x%FI`5@;!+!g+0OvjP3Fhc{Jx3;v;jjc;6h8b+J! zNmfk=p3Ae(3>M5K)ya)98_;n(`nLSpVh-5#GB%>{6$KMy;7!;u2Mw8YpN-^i$=Ftz7>NhBPHy= zs*tZFpiWWCQw&8e42qz%94yTZ{c(;ku4n;WNw(LQ2u(5lqEJF)ri*$Q_S#l-)@+U| zc7-ZW6G#g)O&6~Dew$MqldffRh6LPvhRNT(FU*r*D#efof{Gf0tMCL(KQNwe7}YTb zDUJ=x+-N1FtlmRhe-?dn<0S6CTu7;=#2O4A{#sR@3$YO02VL*;o0)F+_ljZsm62b` zv$_1ulaxAM+(i;<&(iptBDRCXWGr5TNUur=#aKeTG9M>Cz(#TA2e>p7NhzT&$(5FZ z_vg9(nf@@h8v_j0(Z`A)f0z5Brci@^Zd9^QhhY|+crpfqn4@3XzT*@~I=G8~NZh95 zmwg!SXjht-2|$E`CqI22kcc(kTFa4w<$ge&I@{kBvrStNQ!K(-q@kXED+r7q*)Ztp z%w_{NX`dmKz49;+mcr7CLw)necZ1zUqCCUvaVev4|81m(a{5~p)%090UcO4F-OJ&* zfgrk)`n&i8ODefnP-hKA7MHGi%IpVFp+sng++D4|xGm_SHl2y(WMeb28qU3udu1%0 z&Q)#1UFT@(Ox!TGP@#4fekTxR^jA;;yh9xV>jl(x)%=6KADNw;ev#?>SiMQ_k#Fgg zrWQ&)QQg^#-{T)6at;(@uHr0z;Yf#M%+n~%0`wlPJYE;;AC8?iCV5hU(8d~H27L10 z`={wsep`d05+tK(lkvV{9{;VvqSuaeqiI7Sr(re57D7C3T^M#IKeb}p{mc^bVAL{M6U^;Eo>{9sx1!RwzMD6S*$YwG`1%f z+WfuF#g%EX34hoFDzgMB!*LU$oCNxlX)xg;wKiiMuFV1l3a0>@?4J}66uj6d1VW9p zc@d)aEH-2KmUC;vv@@6mfJUBPl^AgTX2rw}r#wBEP76CLr*}^J;KXsy&B}wp+A?vH7l=&;A?rd>1e$OdOJcwGC4NodYmkD3e<@tC_;|#$hf*sTKaHr;C$Ip zT4=3{w^kdMk6gp}pn+&Ql?0UA-IvS>Ftb*7LW6T+8+yqA9`IhDpxf4x0?6l8KqZUF^Fg>8-wj; zak5zfIc|u=dLL~Ur$PJ_Nyq+$Ql}x#h%XN~*S8rcY(IQ6h^h9s4y1 zQpH6ZAXITjgiHEd!rl7l<6G=11)fL_(T>25`1#NIhsuJm4B{1Y4GvAMA+bh}lbo^9 z(yqi?`s7PNJQH0bj|BWAP4{4LcwA7b%wjiZmI-=RP8(3n(3^+6$IQveRN0a8QXbFt z1{Yn;Kw;DQs`y};q_`i9ytUJ3Drk@FeipTOpxK9m^_i|@3I2zK9(iaV)`A|6{IU_% z5}9-#*1&Nrj4RWcs(BV&q&bM%Pr~?zW7fJ%a?GS?qsdg41aI!n0=D$jmOKcjf@`hS zK_47TKx9&lpr#NWQtJNGj~-TXjb@@+^Ax$cPpfpp6GP_vVo9N<`3?m(oOw(b=)?dA z3J9K^$~~YIflYWYx|pgg`K!5tPM%?sEm8JSDt(Ru2L&SrqeErDSX3T?ukn=On|@Rn z-X^Wq&!a!Du~_2iABKMo4z}a_2@%W9@}P%Y?E@JOov8UZRf<607_B*N)6YRZ zbP2rtrp0l?%Ljbvs$JD#Fdu)P{%kCY^M-dTPc80(+opyd$op)eN^(gsz;e26YKg%d zR1Ew*YU~oXTtt2Ex4&GZi9Jq&r8t9cJ}oaNE`NV_Q&7Cc;n$5^`M3YOf4NYZZ6yy| zHpmxV@~060F`d~Wzlv;q8 zVGXXZ&JF4~G6f52$q}eXA7rV!It~(4$eeF-ui&`#!312H)Q&3Pbvi4{2Cgp;ErSa36 zou^KCxZY}c^vgpqe{n>z*B6@t>d*ozy8}5l?@)#wCbl^AyV2)HRi#MjFJ+&-mA;iY zv&_md4_Bomh|0e?o~?dXd$<^W4}|TAcY3iR(`}NO4s7bL1FZ|~eOvDBwwEo1s$=lr zQ=zVp5#ajgr6wUmtOX{v*YVp_u{;XC`>HHOT=CCKj)4PfI9LadL~dsnH8V-sXxY9` z{Fy;=k7M3tlvC0l3TJ*cPLm=$;Yx!#8`&uTrOAQlb9I8bs>YwgA(lHC13+xAKf)7e z!6JDILIc3Y+yHEFK0km0lZ~5&orj!u!GTQ0TeJCY(OyC zXNVdjLLMFmn~jYH0vfn^`B*sF$${)VEWEtnDjonSB%TL+#s{DRhw=f?!QW*8WH>+$ z9u{s$Fb^jSJ0zGJlF9?ltc4=OWas^_SwP&}aY|L#V03;6Z`t}MlY@tkg@gBhGCBCT zS$H}Al?emn<^xYSAX9)7{t32_gTSD49smM57cUDhken03UAQ9I z>{LkP`0S7qL0}UX9~TQRq)w1(K|XP_gB`G8i80yPx&9N=Kvptv2jBqMc!h+(w)z03 zj}SP;!pTj}$;$)bG~^tRDs%FXbFo2i57>YjGW+Nsh6L7>17JXL#3>z-5wLS}{!?bi zQCN8S$k}<>A!R1#;NSp@-T{cA|6OTH@P-_u(t!pLW+u!JK)~RH9F3fVmy3n%9}>jQ z0^SsZ{TQcMfdjug zio;N6;mc_gx|$Q_Y<1H&)U!akyp$gPBZ9W5q2=9sV$(#z5{+R|OMhx^GI)!^gJr!b z`sA>r+^#|c?0vV@cUaP{_hYTRqWXHq?)>TPtmk>ACg}P0aQUx1sO87)>FV7L`1MOv z#oEg1?eW>}$jS1#uGxBqAjtLUw~74P;K|9;BS#|c1^S4)(oXfTaYBu@u^Cy0FjFz>QQ>0?c1k8Sa2n6feM zh?Pb2*h$xME7m0`Xz^aSZM=G>0Wy_I_kFjew33)!e;1WSzUcc05?Ew27h2>qMMHRGADF24h4@>A`4896@p$yiyivo9v`kO&g`oDZk&@x|-13*E$ zY&FERK*aY(++N+19;=qC>@qAhU6R|Zb^fd0A&#TM%M8;`pqe+gPZ(MyX=DX`zL|&~ z_Mr}vfNFy*igtwR{DAjwdEQck;uywST~50yf_gY2`%GUiP{=OE<{5@@za(p9O;a3N zNb3jWOFr`6Q2#FB?Ln8Az&{CIw+>x*@n0w1B|PDl zi=}$gbe)O71i8v4mi#R6=RtIZnd82lc^C`j?SZe}4IV_Lb$ zMwj!~*(hKvX9$^3rGzk~GjRfUViDUfKHvo^=$b=jZ&zZ~#NelF%uk98YQJ z0rx6_0e`sg15W2NZJ#p|3dziu7^lqrcj+sC2^!eYeUM5@UugA^1=-g+`VN{csSuwj zIG*^;9AfrK*IXh{K@Vv`0i`gJ!Vokx<4A#m4Jh@tVFX+K)7%J>OWSuZ%?#BGWYue! zKYM-6Gh;0$wjPvt^G|VqxpiC~GMLrT%k|zXal$;^hv2m{ZCxr>ukr|Ww|e>`ExvYX z=*U-0kb{!`Dg>P`uf{G@yc9`xt57&*`>UNbFpv88e28JG9x_>=ks(Q<8=v43TSb=FlH!OHb+rUr@s@dXA_)cvT;>ZWRP?+L7 z+d>nnt37q!U9-A|Nu=VzPKfe}dz6xZQFwWp_$77}XwInW!I*aV5T#rMU zrbhtrHjs5B`a4#y?66idtdt00P;G@h{}1?Pg{T!(K2}L@Llnyoaytjh^2@*WHlU{l zJJ+}`oWN~52l?l7<|^MB3OEa>z3byW)PjB?l>vc6+M~HR&s}iZ6dIpwfhkt7_%g6x(?sV=UbmDtxr<8*?TZI82g=G7@x{y#!oa4 z1Y(sm(qN?A5nTkJ>H9{#n*A4>W})@mc+NnF=fWFu!q5+;iipiS@kPEcjh`f`8oLK@ z;Q##T0l2|%-2im0-7=`93PkfKx%s-F!tw9n&%@CX1}$8phm>GH$~aPeX1IdJo*lXF z16%YfvH+?A6{M%h?YlxElL(Xph7`f`tQW zy@DTPLg=hgsyMkAkqV)M&(g0Aps&)e6%ip-9*>4Etd5T5(X346abf}s(|pawip7F~ z_c2Cq=vU7V37V6xj-N^_9#k_oJ#11c&}KwL5-d7CkFy{sw5~5TVew+hvC5WsQ$mDY zM2f-2KpnOUrY0L`Gdy2q``Bs{yj%}L|0_}Gr-ryy^s=Ip7wV3K#c)&yrA;z zP;8K~rUXL1#lAI-B`EnZbBnD|RCEW5^o(vwELsio7}jejZ(hXko6_ExRJ$99t;mXJ ztjyEgh4-lO7BKNi*`BMc9Mha#l40P^yzKMzNA?RbgFJzX-wgD@&UdKZ5LwJK9!>!7 z^IcGq)w(gj=){xUO$foG-CKj&S@Zd>Af?tWk=RcH!)l$AgVbOhH-vPq9mYavvHg@2 zdV6WAKM=hQnO57(c1Wa(GM55m^?jxpi=D*?!+Di|S}HZs7bk{`<9H4i)@`m4@r244ILF}%Jsi$ne$BEIiF@e5D9ccCq1oKK^YMDii zIcmNka^`jE30Sd_c|sVC4@sgoo_@#S0D-=X7z)2Nc({LTltGH-r5^f%4Rrf0R)X|5 zT1xp3-fn|LHARkIZ5OJEwclE32&ZJdVIF#3Q5k_!$am7?oAplRSp%J3b?N*2X5MDV z-*C3;q8bvcU}85DkwLjeP&&40Xz%LBHxyVk@pCbJ9J1nUZ#pJ>eN!WRvuG@PWt=IA-oIuxddRl`;cu%vBB1*wwQ`=SG#V?;4LL6cD7 z--ZD8L7#tJE|t)yv`S?^WDCusv&`m9T86azP?1ihPPbeXp~Q+5!rzcCv=p{qWp=GIT1U<~P*{%-jZos&{PKy?tJvm-QBkwZGvRqXsn_ew#KKcy>_i4Zt zsQijmlT{J&M6!eUDsxUbbuMd+7dl7!p+8(0hO{F8kna?6e=v%Tix=Mgkh-D!@;3C3j0z+Dtv?V(%M2);+C0A-OLRc7H8c4T2^B*hNWF6nYMbZ)N9Mn z@sGiU3X3_q9d(K)O5CQblv)_CNoa6T;4nIF1`ao+2z#{Dao?Q|p_ZjU!$yAQRFjx6 zJvZmVA+Yblycd{WTw!J|w?5q@un76*p%qC#z_+m%2N8DC@YEmFBjoW|o8kp+N^t?i z>AJMyUFOb!-ZB<{yU#ZUNBa16B2-dmcy2F68gt9L9Yz;R_vss*YTY5Aa)-@Le!nh(HdHDq8T(S62!a1p9hza zHHIca;9g1z|2?3?HyrM(BTAo1W5u3L`6)m6*8oIdPk+5b9tCL{5%vX0d z{=?Q}%j5bMqugT;@xXGOY=(?ZuRc*jfZO0(S}y&Fz1ywGrEL%HTHOs^d^je9H13NXmj+WZpXxMWHJWsXc79)w;s~j=W-h6Qx zFT~voX7Os86Yfadvu+&Bq=|r>uzDyCA|SROPA`r1AQegZ-{~JTXpkA&b^32e-4rCr zzH&9|H`b7Od9q2tWxxO8vq!rs!ApHjFfBBy(2yH-J&ouOJVio3I&0Y+v@m^6;+R1* z$|{6Q{^gQ%UFs(_`L}PjdJERy#5rcbE1^a}fnj9gQs6Jj1k4{*0E}S&HDFaY*Av8m z-$MHJ{Lb&W2?kN!sTIu}86*7Leo~Cnxf;3p{Mh@{u{(Csu}g0}5286*&2si!E`Xpx zmc6ifnTQiX(bbuG!}C^Q^!sdZ#kbMYjE!+ObLljGhvG8}3^53iZKTB; z+r9d>8qKyu!fsdOZZ=#pxv^V&^vWbjarSDcU2go&WKAUM(nPc&Gf|S1jKyA|KCHQ< zc-X^B#9zay1W!&KLDIs{ep87z>9HJs6m@igC5ju<@w2=@sule zb#8ffzG#lo^|Bgp&RDFksgsPX%=MnKXn#88PLgYVe_TFag8ErPHEVL7^HmAPy^oq= z4z~h>M|7UR7-9UNkwK*)UR+C|`aIDYB9+I^l2y z;?8^^$AaDR`dyF_UOxz<>MjUtA##7kb(1~W-LVgugctTYl}%n~o-?d}RmY>&0__Kx zS&DAQJpI^TNivtog&;2S9n_-2qHCH#P z$t8Be=1dhaTLZK>8S@%Po?28%{TytR0=@gEj7yo^VY?)IzI50)@;!0$(+oZ}Q5HA{ zTz))0$>#oeVyKDc4?cDG;{Pc7hOEnI0RHzVqK`%p4&f;a&;Yv{K-4KY|9pg&18_q9 z3ky+#U;nwvU<|n$0=bI*zv^0k8A6zj7&8Jn7(*VC`ELaa7|95L0nNz z3PT803~*lBp|fiZcWBf8VU&aQ>UN;s>g;%#<>{#8IO>PSx-E~})WrNcar4>5!^H6f z>%iD;)U9|;MGI)Jvg6IU{qQ3994*Lp#^=@LW-PNkqW$sZZS~fTvUrOzN@%?UM3)12 z3z4FcPBT-==*yAIort?&=#c2(DY_@^H^~X z5zFoMKL#-b2CHz>c!g6@T6KcfI-ZHh)CYNEEaF2NM?trhotVYpHM7E$PuJ)W+p62B zKka1guOpc`0f%`>$9Xd5Ym`NXG`FpKG}1~wWA~n~KaL1e`?ZD!fXO$VjzWsmG^NAv zJ}vFaB|T3v<#!J=7U^ZpuIc6D56jFilOB;G#=vj8)i~QVTBQ%UjfyqxjOyt6D*LY9 zG`*HiDWKDCgKt132d?B(aR7E+$-a$KOZ%|KG6Iit1JvbtYFh@;T&_aPscHH#Srok2 zLv4GpdZB5VI?rc!)yOE)-7i>P!ltuF!`0P*YA7GgZN=hk8r%}VVoX$O@pwObLy!A4j|cuWM9U{F!b952 zOX|it_C}!%WK~+C0_ob^4$0Y2!w^Z!+8(xr&m9O7e?C3u>m8OrMBqs7vRX6wC_9u% za|$Bm(HF4~L@P7Pi?hcgD?8l zQP0RH8Hx{)CpXAjvxw(bFnS-p#Xfz|&Srql81^Y!zVU-L6 z#Dzqrv)wN78(c;e<$s-?WBUI5@ka`sLkx39O~h2Pew2>{ezlvfvaiSr^92KZvwRr{ z*7Tca+`!bW(9)d3iVbG0RnP+ht;BH*%fK$3kdjq%Hu^n!9@10mVjTJ_R{BjO?&s*XJ3{z3D2SJ$KN;2GrEnw zRH#ie3EeFg3O8Mz5jC27FNj?8E8FF?UJe& z<|(%+4!mGN05EKTQz#WH&Oug=eY;2Zm&m*)-zid**%c1Y=PM80l>95oa@ub5Z!-cG z8pq3UYmNX^&mDv!ZZ743P;UwSXp2zl?F2{pXSvix?iQ%S$o5Nn`(;1b-jkdVGoXRituHi~#{bUl8%QkW^tjLUp*4m+FZ-KS(S ziiQHogSkwL-6s=ctXxH7kzB#4!8NaFf*mH#%#uJ6dKCv;`pV&}#v}we`d+Hi8! zsqye$0ryA!X{!vyI^PO!L6WYlF>8CL&6D`aXF;E-IXwS z@iN7U{82e_aSh%!@dBwArnY`YrAGV8+r)kY{PgZdtoLcADO*EPogz3|yI6rbDL^n= z`CCX8{j_G3k9JiYFJW$09pC8l=@6v-h2^npl#7XX&9GkFkdO2iBgnCrg^!*X50@(4ABW5xs=mPO=q1&WJPs%&qfJnOLfNnrA z5jH$Z?Kx-ThbKefUcTpV!tCFjzwa)zAXcuW_8X(OfGL!z!WPi#FVE|)mU0+lHPyU? z?UngWBhPMVyCX2j=0QKb#t58(7V|K6#58*Xl#G8vzvIiAYBuhb(3=hIUH|sSgK@Gt7>*3;6MMq+ zguGC(>nt^Wifj&7h1P zrswd}P_%X{Lt6cSF3z_aKRcAdGQRE}3vPPqG}BoB5Jevl5q7Ue-zRY|lU6kC=B9b$ zsg_{Z!bRJf`M_b%F+SVN8k)1RP9KxL-A1Csc^0X-%x`8NHoGSXVWO;5fX1GZNRxU$ z4;nY69QVs2{B>mLIFdV;XT|$9D@lkgGWo2&Ho6qn(MratOO%~p>CPXNDRaVSUnE}5 zw~$iel>GBPs)036V z`+^s?_SDS$*V%>M8dr&UFQ-V*K_DIX!h;u6qt7@2^wGqNV1>uGb7ZP&qs^grN^`-E zo{naqK2V5!3Uk&SmdBi4%qh6w_^0aZ$By~mPk%gEq#XFubXI}-8BXA|sW$&qRDHjN zJ4MxZd_4MiFkH1-vQr<~%$K13(0+MSU-@IFD&;**IkO3t7EO&j+fa=n8TN_whD+n8 zpQm!ppiqY{(S2GMmvcD-G5qve4+PY`eb-I{C!$w266Hdu&JU)e61h^lyccY82hn9{ zUn<^n=#Wbm<7v2ADi2?|h>H2D%s^Te)x$l4;%B;b3>pt5#)SL+6*&>b)s*2TC60kz zv^oR%dPb(7VSg^4AU;jFc@L=%5Z7H!N2TnWfsA^mGII7M@lWbq`|!Uu|D7jF&RUAc z>!c+4nf)X4C~bC9!QsZ@MV{=l|6chcYr@gj_$q9AuJLgc#}pfZOm~F8Bsrwp?fSel zCzV9+95&xq$s3w5clvEua}$8jrHPO2O(dI9e+Q*E6>iV0Um8~9?fC^F7b{Fo4ViR6 ztstWYEuqh?6q%}-hm`f@diH+^%9_0-H|VQ}}nPR32kACtOB#ABw%BlB6f%jNEx$B=@+8 zbpKhb(%sp>i>eHifZ$SPI!=E|aV`Cc;JSV>>jEq}!5T9}1_ZO}%OwK;+kk2ea!>|* zuE1?_N;}opZwyJ}O0x=aKSRT|P$71(=|A^Pwl{cvAApw;4dmpx)XO)8rt4JQiJHK&6BVB%pZ6}yD3EmMGRo0V`7D6(wpGXZr;!i45?|z|jaY&eoC0>;8RXH1&%Pjl<}lQAEwRaSfbYiuO9R@A#bp9 zu}1h1p}yPYOotZLg1%;h)aU;U3c>3Ej(-p~T9 zU%CXpghBt zWn{^14q5=yKZwgQ12-MHYO)R#LR&m*Us(RM(dj`S-@lTI6E`T=rC+L*A??S`nL6mnN1gOwthC(P*3=9g zLPUi3^}Ul~S=zFO;=+eO#8?>d{i)k*J|l=Xv?k-jq_nIbH;`{3+O`W63zQaZ?*2}$ zx8s1t-z(BSGZpFt*Pz?f_os;3Vom=pOHRlq5sKXNJm*7f7d_=+*s|scIKvC# zt+)h0=I90G{x~b8$PgZT&tEGIHTFkJ! z#+~WNhQva`KvL~z9Y`Z?dJoB!%_mBNmhb%!nTejHj}z^z$(mfdu2O4Uo{Z1SZ=pl* zV##vZhbBV>y!re5$4fIzcZssb{(kFD+4PEal}7P#!RGi7_)mOqT9+y zPi{ED?QNx)_uNk~krq_-3KjxFwHLd~m$5wQ(vL>h_+|b&_)Ja)42eE9LU!SfDQ}80 zFPw#Lu4BEGqA{fawKyRo`3ZRTAR59OsRi1Iny4!5>1bY6Fc!L@F8IFv3B0zce`^#s z4~$RR>v)+}miCUd&g$rZSuedWF^eSDB6sx7m6ZF5?YLmXDu%{wFA*75DW;aRZNvdv z^dpb_rTSny7j~Nbt~C8~GIz4}T6Lr||L&M(Fom?*Mcpr3P%PB1EYy!|8$>7^o?7a> zdycQE_f_3HB}k*t0i?dzW%n?G$A9gPL<|~qjNPSKh2a7M4INR|mYG!m!WA-m4a;id zoTE~{n>TS@mZbB6m$uEg=J)=cZ%}0_&EYcz^8AV?*UOZ33>zZJ8S>eB8h_=iN;YGc zAf5j&2?g&YAbK1{fLfJ2i&Zf~pD2lcD=K_h6?ijC@WRbl(RxjmV0P;pElQ~1XSP4s zZIWFm`U8vg3@>+_mTfolT-3q&q4PK=0Tcd;{iFnN3N){3LF8WsW8aElGywKR&F56> z%_@`Niz1|=@!kCpL4-~j|9Zdk%HknPyx}Dc?fb$NQ22Q)EG?z7R-e}0@9j?7P)El| zpIBA$vFkGrG&B=>-Vd+E(>(saxbA@VmGE!evBne5h|=0v-ZHT#W~^1D{?M!B7es@~ zzrDZ9{bs9HRlc{Ll)S8`i~Axr6#ETU*9WaS2QQ!ev6AhVCZQLG6!?No*@pnnAO+6P z>bl)jAEc?;wkw6f7&;X5U?*Uo(Or@87~$52HH}?JO{5p{7;a~aLiBz+pFI*-YpRPw zsAA_iX~x#$z|PKXV;#8$;#%uJu)7LfLzIoj+CU4mJFe{jeJ@zvulK@ke|O!~Lz`icZ-m z9s64S2f7WLk{Btcr0=qqQ69^KJ}z1vTVJzBmVSm=S^qWVf@Zbsf?{GBI2nC|U;NGj z#$<=XgW`&_7bXWM>jNNKDmf^0uni?d@Izn>L1Ndg5F|!s06}8^C5if%JsJ);%NQcr zadm@)B5oWz=K8rW{m%CM}z2`D9Qjh;4?SKMq*@; z5#v(E04_9+|I|Wpfc^TRalp>*ki`%q0Vr{+g4o~*NEn0*{?nfZ%K?PQt-$Q500OZ0 z5h4y)!{q-l!{cxOIuzHx9qDgrkgz}y+6QS;!+Og|eu4kiq1jwz0S#D>ZI_#FI2^lK z(iLbCy49=$_PSMV$mEZop=EWcdVkUF9l6^3T(-LUF9@(Kd$(N=Uk z@_TsSzAWy#eX^J?kSmASj#g2}y;o6BRM&ort(MYajxB+IT)6L0A3EK9tbv%o>D9g6 zzCx_(6HWQzux!iCJcQl_o1UJp&DLcW$vg0eG#QCwuDDxcG+AFRUlv)#2(hA+Fvh^sX+u;ydU z+d&p;5v+ga3EF8$ZXGiV+J!i*+wK{{r8JbxCA>9T@p!j|{{c%gbJgio_=YN@f%=LD zv&qt8HNrT_ZnqnntocXG(5r<{Uve@8X^}D3+>YFn^f(``BVN)cnn7hRdhE-!&#!ns z9X*9hJHgEhrI&kfcCJy?*DWT~Hk)7{G_qey7hSK)LeTfUCzWwXOiBjFe?Ky|CF`kj z=qRVWR7$&M&AFnZJ0GWdaH(*uH(bTMHd#{P$Rrt&nG+weGZV#_=FbI^3P+Dgp_WG8 z4_P9Yt zN~9oXWa;J{SE+_QiwH^@Cxg`4)7P@5r~UiM@rGf28XR#{7DQ(5I@@c-uCjuQkTVUO zB4ZD2t?qKObCVHWkrDrDOBuYlQO?C{n8CBXNhgo0M0}#gM%2G^igmctoDV8Doqx3a zabwGvErtTq&_T$4am$$o4xEo*kvRjCgC^`}P<*JnZ&+Zf<~Pb;F&q*q`6h=-LnB$d z!@3^*GySjw=17U}a5{!a;GAzXN`vp=sE^2uB_cZOirT?q>Yh)D=j}ysHcifBnjPY} zum11f2>fI%OcW5O3j#B-lgQ)E+9tsoaH{0C!!QZ z#C}p#u`DFE1=}6KGAlbo;R&Z+t_Of+IdPk?<06ZI^gQ(<8G&x4g{`Wdon{`o0d^#>`)zF zWe+#7ikmoZU#VH&uuJ1|2v{D&dD_dril{&p6B|g2$FbyPYjLu9^jFao{uw1#Dc6K3 z(+KrzMJ+#o?*dreD;Z-q^MXdd{mjysqrWjhumfe{W#bTi4A4e>iT{v~F!LdPQW`}F zx7d6yZ$#jr)F~^NcWV@;S8G;nc;tgno!RktlEd~JW>30GT4~U-h2x7m$m->~&A_yg zm&ZmsiQ%W!0#Qrpz6G<9(eP)d!gTQPEBtC{!hFT*`<#?ow^&=gsb4FjzBfNLA&)OL4TiVVsEV+`Jwco$sm^wNhNRu@F6IqoL|ZB1e`LIPNB z2;7v!KIgcG0{T??>uDxKpDL)q_Y)aO$Y|Oeon%^nb3m$2O+aSj>)!Lw6<=E&% zf6umAw#{_=YWjD=^xkwBX-kr^CGLWNIBc51-H0g2C^Cv8d(KtqHMA^q*MnYyzxZGgb$O+c{tjpdo=Rc+aQ zPSP}Ch1SxJt32Z~mZj*MjJ%Na+5;RZ@XtW34oU`*#DejJFJLws}D<<UHDqN9d$ zG|Xb&*XH-_JTGG7nrtu}h+w!S2*Qq!-qVIW|KC$uGfXBuWrj;_6>boyKe-XeQi8MPU zy$kPQxkTT4hrfo+&lg=CgwXUyHH`Z!)%o+Qvf>cFLoVP4ojb+c&2cg$b8+d0tN?bm{rU5o#~T8`%vsfB0Zw?TQk zKo9nQ!qT{db25b6n(PsC*!>d1Ab~uyTIr%PqD!$e8a)t>-WHAR2vUQ7)GRDv`q#sZ z%(o?I=T}tx$5)j~ma(OGK6vK76}Et}?_@W4_SVWd+e}c)EJl_$MuUOF^n!$!$J8;A zW#g?kVe6fPD+#+b-q@Phwryu(+qP}&*tTtZVw)4&b|!XizH?61 zz30^Zue<8)^{(z+wX1urXFb0o%&U6TydApd`KbAxq$k{xB*^QcD=xcj(kc?OdfU+C zIoQ%Wq7o4*{q{f4)VQ616ke4hyP(;mnY5!cNhy=-1^3n_n6;2j-A?hMHJ9IRSn9vAAeMkDKa$7ySgbxyRybo9wxhK00(O%|(CloE;i zb@VE=0@Wh5f_SQnGshI6!(~6^8U{M`_QxI_4o1_BoB}8MG?WNHbzqaBF1WEdv-wSH zm;*vF%ooqi`#A^zF&p?@v)ja?6aTjajGT5HcWcnZ;IPcpvA zp#DQI2yCrfYaNCI!)l!Zc%^))EjdnKf!>$B1*vcS@rFvW|-MKd@OqE1$E zF3Hx+sKtqZUv!=;P3j|QANC5k?LhR6iuXocgE}+Z&68p&DsB;@OeEX)=;@WHauZCy zAG~vwxY;vd6U<~yQe|apFyST$TUOT8u#N_UA;PCNhD=+?p0MXQa}KxTBlgpeu37Jr zO4^gMK&X+pm!)LTtwrphcagW|#K5$ccIRK2a)l8AG6oAZ;Zt#zAg@gA%|?p6@Z|9A zYxxGu;i_k2zZi)mrTd5MNWqiJY?e6!bkZBt3Jrvtum^^g#lU11cjq(Ee`3fquG^SN zq&whGG+PLp5bM+BaQ1%(R_4DH)y|i?{T4kFe$02lsZ$k7^-S%eo#b8MwTIE+5>up~ zq;vz!S?$Y${#34KE@_LNDIBfbE93ZwMeGDC+qaNC_`LDh{xn6Cg0r>r+?9^%A;QU~ z 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�w@g>{h+YATNgRmhq?IJ>Wy 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\y#l?F;yPHTe=(aj+4yvjYJu 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⩔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

e7&HedUpCuEbOjnnVcL)51(kDwNO^;` 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

0e&SvK;Wm4<&SRHdqGpOQvcE0S7H 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 mpG8b=AMU @@ -58,8 +58,8 @@ TypeScript is a trademark of Microsoft Corporation. * [3.6 Type Parameters](#3.6) * [3.6.1 Type Parameter Lists](#3.6.1) * [3.6.2 Type Argument Lists](#3.6.2) + * [3.6.3 This-types](#3.6.3) * [3.7 Named Types](#3.7) - * [3.7.1 Instance Types](#3.7.1) * [3.8 Specifying Types](#3.8) * [3.8.1 Predefined Types](#3.8.1) * [3.8.2 Type References](#3.8.2) @@ -71,6 +71,7 @@ TypeScript is a trademark of Microsoft Corporation. * [3.8.8 Function Type Literals](#3.8.8) * [3.8.9 Constructor Type Literals](#3.8.9) * [3.8.10 Type Queries](#3.8.10) + * [3.8.11 This-Type References](#3.8.11) * [3.9 Specifying Members](#3.9) * [3.9.1 Property Signatures](#3.9.1) * [3.9.2 Call Signatures](#3.9.2) @@ -158,7 +159,8 @@ TypeScript is a trademark of Microsoft Corporation. * [6.5 Generic Functions](#6.5) * [6.6 Code Generation](#6.6) * [6.7 Generator Functions](#6.7) - * [6.8 Type Guard Functions](#6.8) + * [6.8 Asynchronous Functions](#6.8) + * [6.9 Type Guard Functions](#6.9) * [7 Interfaces](#7) * [7.1 Interface Declarations](#7.1) * [7.2 Declaration Merging](#7.2) @@ -184,9 +186,10 @@ TypeScript is a trademark of Microsoft Corporation. * [8.4.3 Member Accessor Declarations](#8.4.3) * [8.4.4 Dynamic Property Declarations](#8.4.4) * [8.5 Index Member Declarations](#8.5) - * [8.6 Code Generation](#8.6) - * [8.6.1 Classes Without Extends Clauses](#8.6.1) - * [8.6.2 Classes With Extends Clauses](#8.6.2) + * [8.6 Decorators](#8.6) + * [8.7 Code Generation](#8.7) + * [8.7.1 Classes Without Extends Clauses](#8.7.1) + * [8.7.2 Classes With Extends Clauses](#8.7.2) * [9 Enums](#9) * [9.1 Enum Declarations](#9.1) * [9.2 Enum Members](#9.2) @@ -238,9 +241,9 @@ TypeScript is a trademark of Microsoft Corporation. JavaScript applications such as web e-mail, maps, document editing, and collaboration tools are becoming an increasingly important part of the everyday computing. We designed TypeScript to meet the needs of the JavaScript programming teams that build and maintain large JavaScript programs. TypeScript helps programming teams to define interfaces between software components and to gain insight into the behavior of existing JavaScript libraries. TypeScript also enables teams to reduce naming conflicts by organizing their code into dynamically-loadable modules. TypeScript's optional type system enables JavaScript programmers to use highly-productive development tools and practices: static checking, symbol-based navigation, statement completion, and code re-factoring. -TypeScript is a syntactic sugar for JavaScript. TypeScript syntax is a superset of ECMAScript 6 (ES6) syntax. Every JavaScript program is also a TypeScript program. The TypeScript compiler performs only file-local transformations on TypeScript programs and does not re-order variables declared in TypeScript. This leads to JavaScript output that closely matches the TypeScript input. TypeScript does not transform variable names, making tractable the direct debugging of emitted JavaScript. TypeScript optionally provides source maps, enabling source-level debugging. TypeScript tools typically emit JavaScript upon file save, preserving the test, edit, refresh cycle commonly used in JavaScript development. +TypeScript is a syntactic sugar for JavaScript. TypeScript syntax is a superset of ECMAScript 2015 (ES2015) syntax. Every JavaScript program is also a TypeScript program. The TypeScript compiler performs only file-local transformations on TypeScript programs and does not re-order variables declared in TypeScript. This leads to JavaScript output that closely matches the TypeScript input. TypeScript does not transform variable names, making tractable the direct debugging of emitted JavaScript. TypeScript optionally provides source maps, enabling source-level debugging. TypeScript tools typically emit JavaScript upon file save, preserving the test, edit, refresh cycle commonly used in JavaScript development. -TypeScript syntax includes all features of ECMAScript 6 (ES6), including classes and modules, and provides the ability to translate these features into ECMAScript 3 or 5 compliant code. +TypeScript syntax includes all features of ECMAScript 2015, including classes and modules, and provides the ability to translate these features into ECMAScript 3 or 5 compliant code. Classes enable programmers to express common object-oriented patterns in a standard way, making features like inheritance more readable and interoperable. Modules enable programmers to organize their code into components while avoiding naming conflicts. The TypeScript compiler provides module code generation options that support either static or dynamic loading of module contents. @@ -474,7 +477,7 @@ Section [4.23](#4.23) provides additional information about contextually typed e ## 1.6 Classes -JavaScript practice has two very common design patterns: the module pattern and the class pattern. Roughly speaking, the module pattern uses closures to hide names and to encapsulate private data, while the class pattern uses prototype chains to implement many variations on object-oriented inheritance mechanisms. Libraries such as 'prototype.js' are typical of this practice. TypeScript's namespaces are a formalization of the module pattern. (The term "module pattern" is somewhat unfortunate now that ECMAScript 6 formally supports modules in a manner different from what the module pattern prescribes. For this reason, TypeScript uses the term "namespace" for its formalization of the module pattern.) +JavaScript practice has two very common design patterns: the module pattern and the class pattern. Roughly speaking, the module pattern uses closures to hide names and to encapsulate private data, while the class pattern uses prototype chains to implement many variations on object-oriented inheritance mechanisms. Libraries such as 'prototype.js' are typical of this practice. TypeScript's namespaces are a formalization of the module pattern. (The term "module pattern" is somewhat unfortunate now that ECMAScript 2015 formally supports modules in a manner different from what the module pattern prescribes. For this reason, TypeScript uses the term "namespace" for its formalization of the module pattern.) This section and the namespace section below will show how TypeScript emits consistent, idiomatic JavaScript when emitting ECMAScript 3 or 5 compliant code for classes and namespaces. The goal of TypeScript's translation is to emit exactly what a programmer would type when implementing a class or namespace unaided by a tool. This section will also describe how TypeScript infers a type for each class declaration. We'll start with a simple BankAccount class. @@ -773,13 +776,13 @@ In this case, the compiler assumes that the namespace object resides in global v ## 1.11 Modules -TypeScript also supports ECMAScript 6 modules, which are files that contain top-level *export* and *import* directives. For this type of module the TypeScript compiler can emit both ECMAScript 6 compliant code and down-level ECMAScript 3 or 5 compliant code for a variety of module loading systems, including CommonJS, Asynchronous Module Definition (AMD), and Universal Module Definition (UMD). +TypeScript also supports ECMAScript 2015 modules, which are files that contain top-level *export* and *import* directives. For this type of module the TypeScript compiler can emit both ECMAScript 2015 compliant code and down-level ECMAScript 3 or 5 compliant code for a variety of module loading systems, including CommonJS, Asynchronous Module Definition (AMD), and Universal Module Definition (UMD).
#
2 Basic Concepts -The remainder of this document is the formal specification of the TypeScript programming language and is intended to be read as an adjunct to the [ECMAScript Language Specification](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf) (specifically, the ECMA-262 Standard, 6th Edition). This document describes the syntactic grammar added by TypeScript along with the compile-time processing and type checking performed by the TypeScript compiler, but it only minimally discusses the run-time behavior of programs since that is covered by the ECMAScript specification. +The remainder of this document is the formal specification of the TypeScript programming language and is intended to be read as an adjunct to the [ECMAScript 2015 Language Specification](http://www.ecma-international.org/ecma-262/6.0/) (specifically, the ECMA-262 Standard, 6th Edition). This document describes the syntactic grammar added by TypeScript along with the compile-time processing and type checking performed by the TypeScript compiler, but it only minimally discusses the run-time behavior of programs since that is covered by the ECMAScript specification. ## 2.1 Grammar Conventions @@ -866,7 +869,7 @@ A property name can be any identifier (including a reserved word), a string lite ### 2.2.3 Computed Property Names -ECMAScript 6 permits object literals and classes to declare members with computed property names. A computed property name specifies an expression that computes the actual property name at run-time. Because the final property name isn't known at compile-time, TypeScript can only perform limited checks for entities declared with computed property names. However, a subset of computed property names known as ***well-known symbols*** can be used anywhere a *PropertyName* is expected, including property names within types. A computed property name is a well-known symbol if it is of the form +ECMAScript 2015 permits object literals and classes to declare members with computed property names. A computed property name specifies an expression that computes the actual property name at run-time. Because the final property name isn't known at compile-time, TypeScript can only perform limited checks for entities declared with computed property names. However, a subset of computed property names known as ***well-known symbols*** can be used anywhere a *PropertyName* is expected, including property names within types. A computed property name is a well-known symbol if it is of the form ```TypeScript [ Symbol . xxx ] @@ -884,6 +887,8 @@ interface Iterable { } ``` +*TODO: Update to reflect treatment of [computed property names with literal expressions](https://github.com/Microsoft/TypeScript/pull/5535)*. + ## 2.3 Declarations Declarations introduce names in their associated ***declaration spaces***. A name must be unique in its declaration space and can denote a ***value***, a ***type***, or a ***namespace***, or some combination thereof. Effectively, a single name can have as many as three distinct meanings. For example: @@ -913,7 +918,7 @@ Declarations introduce the following meanings for the name they declare: * A variable, parameter, function, generator, member variable, member function, member accessor, or enum member declaration introduces a value meaning. * An interface, type alias, or type parameter declaration introduces a type meaning. -* A class declaration introduces a value meaning (the constructor function) and a type meaning (the class instance type). +* A class declaration introduces a value meaning (the constructor function) and a type meaning (the class type). * An enum declaration introduces a value meaning (the enum instance) and a type meaning (the enum type). * A namespace declaration introduces a namespace meaning (the type and namespace container) and, if the namespace is instantiated (section [10.1](#10.1)), a value meaning (the namespace instance). * An import or export declaration introduces the meaning(s) of the imported or exported entity. @@ -996,7 +1001,9 @@ When an identifier is resolved as a *TypeName* (section [3.8.2](#3.8.2)), only n When an identifier is resolved as a *NamespaceName* (section [3.8.2](#3.8.2)), only names in scope with a namespace meaning are considered and other names are ignored. -Note that class members are never directly in scope—they can only be accessed by applying the dot ('.') operator to a class instance. This even includes members of the current instance in a constructor or member function, which are accessed by applying the dot operator to `this`. +*TODO: [Include specific rules for alias resolution](https://github.com/Microsoft/TypeScript/issues/3158)*. + +Note that class and interface members are never directly in scope—they can only be accessed by applying the dot ('.') operator to a class or interface instance. This even includes members of the current instance in a constructor or member function, which are accessed by applying the dot operator to `this`. As the rules above imply, locally declared entities in a namespace are closer in scope than exported entities declared in other namespace declarations for the same namespace. For example: @@ -1121,7 +1128,7 @@ var c = abc.charAt(2); // Property of String interface The Symbol primitive type corresponds to the similarly named JavaScript primitive type and represents unique tokens that may be used as keys for object properties. -The `symbol` keyword references the Symbol primitive type. Symbol values are obtained using the global object 'Symbol' which has a number of methods and properties and can be invoked as a function. In particular, the global object 'Symbol' defines a number of well-known symbols ([2.2.3](#2.2.3)) that can be used in a manner similar to identifiers. Note that the 'Symbol' object is available only in ECMAScript 6 environments. +The `symbol` keyword references the Symbol primitive type. Symbol values are obtained using the global object 'Symbol' which has a number of methods and properties and can be invoked as a function. In particular, the global object 'Symbol' defines a number of well-known symbols ([2.2.3](#2.2.3)) that can be used in a manner similar to identifiers. Note that the 'Symbol' object is available only in ECMAScript 2015 environments. For purposes of determining type relationships (section [3.11](#3.11)) and accessing properties (section [4.13](#4.13)), the Symbol primitive type behaves as an object type with the same properties as the global interface type 'Symbol'. @@ -1186,6 +1193,8 @@ Specialized signatures (section [3.9.2.4](#3.9.2.4)) permit string literals to b All string literal types are subtypes of the String primitive type. +*TODO: Update to reflect [expanded support for string literal types](https://github.com/Microsoft/TypeScript/pull/5185)*. + ## 3.3 Object Types Object types are composed from properties, call signatures, construct signatures, and index signatures, collectively called members. @@ -1352,7 +1361,7 @@ var b = x.b; // b has type number var c = x.c; // Error, no property c in union type ``` -Note that 'x.a' has a union type because the type of 'a' is different in 'A' and 'B', whereas 'x.b' simply has type number because that is the type of 'b' in both 'A' and 'B'. Also note that there is no property 'x.c' because only 'A' has a property 'c'. +Note that 'x.a' has a union type because the type of 'a' is different in 'A' and 'B', whereas 'x.b' simply has type number because that is the type of 'b' in both 'A' and 'B'. Also note that there is no property 'x.c' because only 'B' has a property 'c'. When used as a contextual type (section [4.23](#4.23)), a union type has those members that are present in any of its constituent types, with types that are unions of the respective members in the constituent types. Specifically, a union type used as a contextual type has the apparent members defined in section [3.11.1](#3.11.1), except that a particular member need only be present in one or more constituent types instead of all constituent types. @@ -1437,7 +1446,7 @@ Type parameter names must be unique. A compile-time error occurs if two or more The scope of a type parameter extends over the entire declaration with which the type parameter list is associated, with the exception of static member declarations in classes. -Each type parameter has an associated type parameter ***constraint*** that establishes an upper bound for type arguments. Omitting a constraint or specifying type `any` as the constraint corresponds to specifying the empty object type `{}`. Type parameters declared in a particular type parameter list may not be referenced in constraints in that type parameter list. +A type parameter may have an associated type parameter ***constraint*** that establishes an upper bound for type arguments. Type parameters may be referenced in type parameter constraints within the same type parameter list, including even constraint declarations that occur to the left of the type parameter. The ***base constraint*** of a type parameter *T* is defined as follows: @@ -1448,15 +1457,21 @@ The ***base constraint*** of a type parameter *T* is defined as follows: In the example ```TypeScript -interface G { - f(x: V): V; -} +interface G { } ``` -the base constraint of 'T' is the empty object type, and the base constraint of 'U' and 'V' is 'Function'. +the base constraint of 'T' is the empty object type and the base constraint of 'U' and 'V' is 'Function'. For purposes of determining type relationships (section [3.11](#3.11)), type parameters appear to be subtypes of their base constraint. Likewise, in property accesses (section [4.13](#4.13)), `new` operations (section [4.14](#4.14)), and function calls (section [4.15](#4.15)), type parameters appear to have the members of their base constraint, but no other members. +It is an error for a type parameter to directly or indirectly be a constraint for itself. For example, both of the following declarations are invalid: + +```TypeScript +interface A { } + +interface B { } +``` + ### 3.6.2 Type Argument Lists A type reference (section [3.8.2](#3.8.2)) to a generic type must include a list of type arguments enclosed in angle brackets and separated by commas. Similarly, a call (section [4.15](#4.15)) to a generic function may explicitly include a type argument list instead of relying on type inference. @@ -1471,7 +1486,7 @@ A type reference (section [3.8.2](#3.8.2)) to a generic type must include a list   *TypeArgument:*    *Type* -Type arguments correspond one-to-one with type parameters of the generic type or function being referenced. A type argument list is required to specify exactly one type argument for each corresponding type parameter, and each type argument is required to ***satisfy*** the constraint of its corresponding type parameter. A type argument satisfies a type parameter constraint if the type argument is assignable to (section [3.11.4](#3.11.4)) the constraint type once type arguments are substituted for type parameters. +Type arguments correspond one-to-one with type parameters of the generic type or function being referenced. A type argument list is required to specify exactly one type argument for each corresponding type parameter, and each type argument for a constrained type parameter is required to ***satisfy*** the constraint of that type parameter. A type argument satisfies a type parameter constraint if the type argument is assignable to (section [3.11.4](#3.11.4)) the constraint type once type arguments are substituted for type parameters. Given the declaration @@ -1483,6 +1498,33 @@ a type reference of the form 'G<A, B>' places no requirements on 'A' but requ The process of substituting type arguments for type parameters in a generic type or generic signature is known as ***instantiating*** the generic type or signature. Instantiation of a generic type or signature can fail if the supplied type arguments do not satisfy the constraints of their corresponding type parameters. +### 3.6.3 This-types + +Every class and interface has a ***this-type*** that represents the actual type of instances of the class or interface within the declaration of the class or interface. The this-type is referenced using the keyword `this` in a type position. Within instance methods and constructors of a class, the type of the expression `this` (section [4.2](#4.2)) is the this-type of the class. + +Classes and interfaces support inheritance and therefore the instance represented by `this` in a method isn't necessarily an instance of the containing class—it may in fact be an instance of a derived class or interface. To model this relationship, the this-type of a class or interface is classified as a type parameter. Unlike other type parameters, it is not possible to explicitly pass a type argument for a this-type. Instead, in a type reference to a class or interface type, the type reference *itself* is implicitly passed as a type argument for the this-type. For example: + +```TypeScript +class A { + foo() { + return this; + } +} + +class B extends A { + bar() { + return this; + } +} + +let b: B; +let x = b.foo().bar(); // Fluent pattern works, type of x is B +``` + +In the declaration of `b` above, the type reference `B` is itself passed as a type argument for B's this-type. Thus, the referenced type is an instantiation of class `B` where all occurrences of the type `this` are replaced with `B`, and for that reason the `foo` method of `B` actually returns `B` (as opposed to `A`). + +The this-type of a given class or interface type *C* implicitly has a constraint consisting of a type reference to *C* with *C*'s own type parameters passed as type arguments and with that type reference passed as the type argument for the this-type. + ## 3.7 Named Types Classes, interfaces, enums, and type aliases are ***named types*** that are introduced through class declarations (section [8.1](#8.1)), interface declarations (section [7.1](#7.1)), enum declarations ([9.1](#9.1)), and type alias declarations (section [3.10](#3.10)). Classes, interfaces, and type aliases may have type parameters and are then called ***generic types***. Conversely, named types without type parameters are called ***non-generic types***. @@ -1511,21 +1553,6 @@ is indistinguishable from the type { first: string; second: Entity; } ``` -### 3.7.1 Instance Types - -Each class and interface has an associated actual type known as the ***instance type***. For a non-generic class or interface, the instance type is simply a type reference to the class or interface. For a generic class or interface, the instance type is an instantiation of the generic type where each of the type arguments is the corresponding type parameter. Since the instance type uses the type parameters it can be used only where the type parameters are in scope—that is, inside the declaration of the class or interface. Within the constructor and instance member functions of a class, the type of `this` is the instance type of the class. - -The following example illustrates the concept of an instance type: - -```TypeScript -class G { // Introduce type parameter T - self: G; // Use T as type argument to form instance type - f() { - this.self = this; // self and this are both of type G - } -} -``` - ## 3.8 Specifying Types Types are specified either by referencing their keyword or name, or by writing object type literals, array type literals, tuple type literals, function type literals, constructor type literals, or type queries. @@ -1550,7 +1577,8 @@ Types are specified either by referencing their keyword or name, or by writing o    *ObjectType*    *ArrayType*    *TupleType* -   *TypeQuery* +   *TypeQuery* +   *ThisType*   *ParenthesizedType:*    `(` *Type* `)` @@ -1711,7 +1739,7 @@ A union type literal is written as a sequence of types separated by vertical bar   *UnionType:*    *UnionOrIntersectionOrPrimaryType* `|` *IntersectionOrPrimaryType* -A union typle literal references a union type (section [3.4](#3.4)). +A union type literal references a union type (section [3.4](#3.4)). ### 3.8.7 Intersection Type Literals @@ -1720,7 +1748,7 @@ An intersection type literal is written as a sequence of types separated by ampe   *IntersectionType:*    *IntersectionOrPrimaryType* `&` *PrimaryType* -An intersection typle literal references an intersection type (section [3.5](#3.5)). +An intersection type literal references an intersection type (section [3.5](#3.5)). ### 3.8.8 Function Type Literals @@ -1804,6 +1832,41 @@ var h: () => typeof h; Here, 'g' and 'g.x' have the same recursive type, and likewise 'h' and 'h()' have the same recursive type. +### 3.8.11 This-Type References + +The `this` keyword is used to reference the this-type (section [3.6.3](#3.6.3)) of a class or interface. + +  *ThisType:* +   `this + +`The meaning of a *ThisType* depends on the closest enclosing *FunctionDeclaration*, *FunctionExpression*, *PropertyDefinition*, *ClassElement*, or *TypeMember*, known as the root declaration of the *ThisType*, as follows: + +* When the root declaration is an instance member or constructor of a class, the *ThisType* references the this-type of that class. +* When the root declaration is a member of an interface type, the *ThisType* references the this-type of that interface. +* Otherwise, the *ThisType* is an error. + +Note that in order to avoid ambiguities it is not possible to reference the this-type of a class or interface in a nested object type literal. In the example + +```TypeScript +interface ListItem { + getHead(): this; + getTail(): this; + getHeadAndTail(): { head: this, tail: this }; // Error +} +``` + +the `this` references on the last line are in error because their root declarations are not members of a class or interface. The recommended way to reference the this-type of an outer class or interface in an object type literal is to declare an intermediate generic type and pass `this` as a type argument. For example: + +```TypeScript +type HeadAndTail = { head: T, tail: T }; + +interface ListItem { + getHead(): this; + getTail(): this; + getHeadAndTail(): HeadAndTail; +} +``` + ## 3.9 Specifying Members The members of an object type literal (section [3.8.3](#3.8.3)) are specified as a combination of property, call, construct, index, and method signatures. @@ -1931,6 +1994,8 @@ A parameter can be marked optional by following its name or binding pattern with *TODO: Update to reflect [binding parameter cannot be optional in implementation signature](https://github.com/Microsoft/TypeScript/issues/2797)*. +*TODO: Update to reflect [required parameters support initializers](https://github.com/Microsoft/TypeScript/pull/4022)*. + #### 3.9.2.3 Return Type If present, a call signature's return type annotation specifies the type of the value computed and returned by a call operation. A `void` return type annotation is used to indicate that a function has no return value. @@ -2122,8 +2187,9 @@ Types in TypeScript have identity, subtype, supertype, and assignment compatibil The ***apparent members*** of a type are the members observed in subtype, supertype, and assignment compatibility relationships, as well as in the type checking of property accesses (section [4.13](#4.13)), `new` operations (section [4.14](#4.14)), and function calls (section [4.15](#4.15)). The apparent members of a type are determined as follows: -* The apparent members of the primitive types Number, Boolean, and String are the apparent members of the global interface types 'Number', 'Boolean', and 'String' respectively. -* The apparent members of an enum type are the apparent members of the global interface type 'Number'. +* The apparent members of the primitive type Number and all enum types are the apparent members of the global interface type 'Number'. +* The apparent members of the primitive type Boolean are the apparent members of the global interface type 'Boolean'. +* The apparent members of the primitive type String and all string literal types are the apparent members of the global interface type 'String'. * The apparent members of a type parameter are the apparent members of the constraint (section [3.6.1](#3.6.1)) of that type parameter. * The apparent members of an object type *T* are the combination of the following: * The declared and/or inherited members of *T*. @@ -2258,8 +2324,8 @@ Types are required to be assignment compatible in certain circumstances, such as * *M* has a rest parameter or the number of non-optional parameters in *N* is less than or equal to the total number of parameters in *M*, * for parameter positions that are present in both signatures, each parameter type in *N* is assignable to or from the corresponding parameter type in *M*, and * the result type of *M* is Void, or the result type of *N* is assignable to that of *M*. - * *M* is a string index signature of type *U* and *S* has an apparent string index signature of a type that is assignable to *U*. - * *M* is a numeric index signature of type *U* and *S* has an apparent string or numeric index signature of a type that is assignable to *U*. + * *M* is a string index signature of type *U*, and *U* is the Any type or *S* has an apparent string index signature of a type that is assignable to *U*. + * *M* is a numeric index signature of type *U*, and *U* is the Any type or* S* has an apparent string or numeric index signature of a type that is assignable to *U*. When comparing call or construct signatures, parameter names are ignored and rest parameters correspond to an unbounded expansion of optional parameters of the rest parameter element type. @@ -2366,6 +2432,8 @@ In certain contexts, inferences for a given set of type parameters are made *fro When comparing call or construct signatures, signatures in *S* correspond to signatures of the same kind in *T* pairwise in declaration order. If *S* and *T* have different numbers of a given kind of signature, the excess *first* signatures in declaration order of the longer list are ignored. +*TODO: Update to reflect [improved union and intersection type inference](https://github.com/Microsoft/TypeScript/pull/5738)*. + ### 3.11.8 Recursive Types Classes and interfaces can reference themselves in their internal structure, in effect creating recursive types with infinite nesting. For example, the type @@ -2443,7 +2511,7 @@ Expressions are classified as ***values*** or ***references***. References are t The type of `this` in an expression depends on the location in which the reference takes place: -* In a constructor, instance member function, instance member accessor, or instance member variable initializer, `this` is of the class instance type of the containing class. +* In a constructor, instance member function, instance member accessor, or instance member variable initializer, `this` is of the this-type (section [3.6.3](#3.6.3)) of the containing class. * In a static member function or static member accessor, the type of `this` is the constructor function type of the containing class. * In a function declaration or a function expression, `this` is of type Any. * In the global namespace, `this` is of type Any. @@ -2569,6 +2637,8 @@ The resulting type an array literal expression is determined as follows: A spread element must specify an expression of an array-like type (section [3.3.2](#3.3.2)), or otherwise an error occurs. +*TODO: The compiler currently doesn't support applying the spread operator to a string (to spread the individual characters of a string into a string array). This will eventually be allowed, but only when the code generation target is ECMAScript 2015 or later*. + *TODO: Document spreading an [iterator](https://github.com/Microsoft/TypeScript/pull/2498) into an array literal*. The rules above mean that an array literal is always of an array type, unless it is contextually typed by a tuple-like type. For example @@ -2619,7 +2689,7 @@ A super call invokes the constructor of the base class on the instance reference The type of a super call expression is Void. -The JavaScript code generated for a super call is specified in section [8.6.2](#8.6.2). +The JavaScript code generated for a super call is specified in section [8.7.2](#8.7.2). ### 4.9.2 Super Property Access @@ -2632,7 +2702,7 @@ Super property accesses are not permitted in other contexts, and it is not possi Super property accesses are typically used to access overridden base class member functions from derived class member functions. For an example of this, see section [8.4.2](#8.4.2). -The JavaScript code generated for a super property access is specified in section [8.6.2](#8.6.2). +The JavaScript code generated for a super property access is specified in section [8.7.2](#8.7.2). *TODO: Update section to include [bracket notation in super property access](https://github.com/Microsoft/TypeScript/issues/3970)*. @@ -2777,7 +2847,7 @@ object . name where *object* is an expression and *name* is an identifier (including, possibly, a reserved word), is used to access the property with the given name on the given object. A dot notation property access is processed as follows at compile-time: * If *object* is of type Any, any *name* is permitted and the property access is of type Any. -* Otherwise, if *name* denotes an accessible apparent property (section [3.11.1](#3.11.1)) in the type of *object*, the property access is of the type of that property. Public members are always accessible, but private and protected members of a class have restricted accessibility, as described in [8.2.2](#8.2.2). +* Otherwise, if *name* denotes an accessible apparent property (section [3.11.1](#3.11.1)) in the widened type (section [3.12](#3.12)) of *object*, the property access is of the type of that property. Public members are always accessible, but private and protected members of a class have restricted accessibility, as described in [8.2.2](#8.2.2). * Otherwise, the property access is invalid and a compile-time error occurs. A bracket notation property access of the form @@ -2892,7 +2962,7 @@ Given a signature < *T1* , *T2* , … , *Tn* Type argument inference produces a set of candidate types for each type parameter. Given a type parameter *T* and set of candidate types, the actual inferred type argument is determined as follows: * If the set of candidate argument types is empty, the inferred type argument for *T* is *T*'s constraint. -* Otherwise, if at least one of the candidate types is a supertype of all of the other candidate types, let *C* denote the first such candidate type. If *C* satisfies *T*'s constraint, the inferred type argument for *T* is *C*. Otherwise, the inferred type argument for *T* is *T*'s constraint. +* Otherwise, if at least one of the candidate types is a supertype of all of the other candidate types, let *C* denote the widened form (section [3.12](#3.12)) of the first such candidate type. If *C* satisfies *T*'s constraint, the inferred type argument for *T* is *C*. Otherwise, the inferred type argument for *T* is *T*'s constraint. * Otherwise, if no candidate type is a supertype of all of the other candidate types, type inference has fails and no type argument is inferred for *T*. In order to compute candidate types, the argument list is processed as follows: @@ -3030,6 +3100,8 @@ if (shape instanceof Circle) { } ``` +*TODO: Document [as operator](https://github.com/Microsoft/TypeScript/pull/3564)*. + ## 4.17 JSX Expressions *TODO: Document [JSX expressions](https://github.com/Microsoft/TypeScript/issues/3203)*. @@ -3106,6 +3178,8 @@ These operators require their operands to be of type Any, the Number primitive t |String|||||| |Other|||||| +*TODO: Document the [exponentation operator](https://github.com/Microsoft/TypeScript/issues/4812)*. + ### 4.19.2 The + operator The binary + operator requires both operands to be of the Number primitive type or an enum type, or at least one of the operands to be of type Any or the String primitive type. Operands of an enum type are treated as having the primitive type Number. If one operand is the `null` or `undefined` value, it is treated as having the type of the other operand. If both operands are of the Number primitive type, the result is of the Number primitive type. If one or both operands are of the String primitive type, the result is of the String primitive type. Otherwise, the result is of type Any. @@ -3218,7 +3292,7 @@ is subject to the same requirements, and produces a value of the same type, as t ### 4.21.1 Destructuring Assignment -A ***destructuring assignment*** is an assignment operation in which the left hand operand is a destructuring assignment pattern as defined by the *AssignmentPattern* production in the ECMAScript 6 specification. +A ***destructuring assignment*** is an assignment operation in which the left hand operand is a destructuring assignment pattern as defined by the *AssignmentPattern* production in the ECMAScript 2015 specification. In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left. An expression of type *S* is considered assignable to an assignment target *V* if one of the following is true: @@ -3233,9 +3307,11 @@ In a destructuring assignment expression, the type of the expression on the righ * *S* is a tuple-like type (section [3.3.3](#3.3.3)) with a property named *N* of a type that is assignable to the target given in *E*, where *N* is the numeric index of *E* in the array assignment pattern, or * *S* is not a tuple-like type and the numeric index signature type of *S* is assignable to the target given in *E*. +*TODO: [Update to specify behavior when assignment element E is a rest element](https://github.com/Microsoft/TypeScript/issues/2713)*. + In an assignment property or element that includes a default value, the type of the default value must be assignable to the target given in the assignment property or element. -When the output target is ECMAScript 6 or higher, destructuring variable assignments remain unchanged in the emitted JavaScript code. When the output target is ECMAScript 3 or 5, destructuring variable assignments are rewritten to series of simple assignments. For example, the destructuring assignment +When the output target is ECMAScript 2015 or higher, destructuring variable assignments remain unchanged in the emitted JavaScript code. When the output target is ECMAScript 3 or 5, destructuring variable assignments are rewritten to series of simple assignments. For example, the destructuring assignment ```TypeScript var x = 1; @@ -3360,6 +3436,8 @@ In the rules above, when a narrowing operation would remove all constituent type Note that type guards affect types of variables and parameters only and have no effect on members of objects such as properties. Also note that it is possible to defeat a type guard by calling a function that changes the type of the guarded variable. +*TODO: Document [user defined type guard functions](https://github.com/Microsoft/TypeScript/issues/1007)*. + In the example ```TypeScript @@ -3432,7 +3510,7 @@ This chapter describes the static type checking TypeScript provides for JavaScri ## 5.1 Blocks -Blocks are extended to include local interface, type alias, and enum declarations (classes are already included by the ECMAScript 6 grammar). +Blocks are extended to include local interface, type alias, and enum declarations (classes are already included by the ECMAScript 2015 grammar).   *Declaration:* *( Modified )*    … @@ -3549,7 +3627,9 @@ The type *T* associated with a binding element is determined as follows: When a destructuring variable declaration, binding property, or binding element specifies an initializer expression, the type of the initializer expression is required to be assignable to the widened form of the type associated with the destructuring variable declaration, binding property, or binding element. -When the output target is ECMAScript 6 or higher, except for removing the optional type annotation, destructuring variable declarations remain unchanged in the emitted JavaScript code. +*TODO: Update rules to reflect [improved checking of destructuring with literal initializers](https://github.com/Microsoft/TypeScript/pull/4598)*. + +When the output target is ECMAScript 2015 or higher, except for removing the optional type annotation, destructuring variable declarations remain unchanged in the emitted JavaScript code. When the output target is ECMAScript 3 or 5, destructuring variable declarations are rewritten to simple variable declarations. For example, an object destructuring declaration of the form @@ -3855,7 +3935,7 @@ The type of local introduced in a destructuring parameter declaration is determi * Otherwise, if the parameter is a rest parameter, *T* is `any[]`. * Otherwise, *T* is `any`. -When the output target is ECMAScript 6 or higher, except for removing the optional type annotation, destructuring parameter declarations remain unchanged in the emitted JavaScript code. When the output target is ECMAScript 3 or 5, destructuring parameter declarations are rewritten to local variable declarations. +When the output target is ECMAScript 2015 or higher, except for removing the optional type annotation, destructuring parameter declarations remain unchanged in the emitted JavaScript code. When the output target is ECMAScript 3 or 5, destructuring parameter declarations are rewritten to local variable declarations. The example @@ -3965,9 +4045,13 @@ where *Parameter* is the parameter name and *Default* is the default value expre *TODO: Document [generator functions](https://github.com/Microsoft/TypeScript/issues/2873)*. -## 6.8 Type Guard Functions +## 6.8 Asynchronous Functions -*TODO: Document [type guard functions](https://github.com/Microsoft/TypeScript/issues/1007)*. +*TODO: Document [asynchronous functions](https://github.com/Microsoft/TypeScript/issues/1664)*. + +## 6.9 Type Guard Functions + +*TODO: Document [type guard functions](https://github.com/Microsoft/TypeScript/issues/1007), including [this type predicates](https://github.com/Microsoft/TypeScript/pull/5906)*.
@@ -4016,7 +4100,7 @@ The following constraints must be satisfied by an interface declaration or other * An interface cannot declare a property with the same name as an inherited private or protected property. * Inherited properties with the same name must be identical (section [3.11.2](#3.11.2)). * All properties of the interface must satisfy the constraints implied by the index signatures of the interface as specified in section [3.9.4](#3.9.4). -* The instance type (section [3.7.1](#3.7.1)) of the declared interface must be assignable (section [3.11.4](#3.11.4)) to each of the base type references. +* The this-type (section [3.6.3](#3.6.3)) of the declared interface must be assignable (section [3.11.4](#3.11.4)) to each of the base type references. An interface is permitted to inherit identical members from multiple base types and will in that case only contain one occurrence of each particular member. @@ -4090,6 +4174,8 @@ interface Document { Note that the members of the last interface declaration appear first in the merged declaration. Also note that the relative order of members declared in the same interface body is preserved. +*TODO: Document [class and interface declaration merging](https://github.com/Microsoft/TypeScript/pull/3333)*. + ##
7.3 Interfaces Extending Classes When an interface type extends a class type it inherits the members of the class but not their implementations. It is as if the interface had declared all of the members of the class without providing an implementation. Interfaces inherit even the private and protected members of a base class. When a class containing private or protected members is the base type of an interface type, that interface type can only be implemented by that class or a descendant class. For example: @@ -4193,13 +4279,13 @@ var Point: { }; ``` -The context in which a class is referenced distinguishes between the class instance type and the constructor function. For example, in the assignment statement +The context in which a class is referenced distinguishes between the class type and the constructor function. For example, in the assignment statement ```TypeScript var p: Point = new Point(10, 20); ``` -the identifier 'Point' in the type annotation refers to the class instance type, whereas the identifier 'Point' in the `new` expression refers to the constructor function object. +the identifier 'Point' in the type annotation refers to the class type, whereas the identifier 'Point' in the `new` expression refers to the constructor function object. ### 8.1.1 Class Heritage Specification @@ -4225,7 +4311,7 @@ The following constraints must be satisfied by the class heritage specification * If present, the type reference specified in the `extends` clause must denote a class type. Furthermore, the *TypeName* part of the type reference is required to be a reference to the class constructor function when evaluated as an expression. * A class declaration may not, directly or indirectly, specify a base class that originates in the same declaration. In other words a class cannot, directly or indirectly, be a base class of itself, regardless of type arguments. -* The instance type (section [3.7.1](#3.7.1)) of the declared class must be assignable (section [3.11.4](#3.11.4)) to the base type reference and each of the type references listed in the `implements` clause. +* The this-type (section [3.6.3](#3.6.3)) of the declared class must be assignable (section [3.11.4](#3.11.4)) to the base type reference and each of the type references listed in the `implements` clause. * The constructor function type created by the class declaration must be assignable to the base class constructor function type, ignoring construct signatures. The following example illustrates a situation in which the first rule above would be violated: @@ -4266,7 +4352,7 @@ The members of a class consist of the members introduced through member declarat Members are either ***instance members*** or ***static members***. -Instance members are members of the class type (section [8.2.4](#8.2.4)) and its associated instance type. Within constructors, instance member functions, and instance member accessors, the type of `this` is the instance type (section [3.7.1](#3.7.1)) of the class. +Instance members are members of the class type (section [8.2.4](#8.2.4)) and its associated this-type. Within constructors, instance member functions, and instance member accessors, the type of `this` is the this-type (section [3.6.3](#3.6.3)) of the class. Static members are declared using the `static` modifier and are members of the constructor function type (section [8.2.5](#8.2.5)). Within static member functions and static member accessors, the type of `this` is the constructor function type. @@ -4280,7 +4366,7 @@ Public property members can be accessed everywhere without restrictions. Private property members can be accessed only within their declaring class. Specifically, a private member *M* declared in a class *C* can be accessed only within the class body of *C*. -Protected property members can be accessed only within their declaring class and classes derived from their declaring class, and a protected instance property member must be accessed *through* an instance of the enclosing class. Specifically, a protected member *M* declared in a class *C* can be accessed only within the class body of *C* or the class body of a class derived from *C*. Furthermore, when a protected instance member *M* is accessed in a property access *E*`.`*M* within the body of a class *D*, the type of *E* is required to be *D* or a type that directly or indirectly has *D* as a base type, regardless of type arguments. +Protected property members can be accessed only within their declaring class and classes derived from their declaring class, and a protected instance property member must be accessed *through* an instance of the enclosing class or a subclass thereof. Specifically, a protected member *M* declared in a class *C* can be accessed only within the class body of *C* or the class body of a class derived from *C*. Furthermore, when a protected instance member *M* is accessed in a property access *E*`.`*M* within the body of a class *D*, the type of *E* is required to be *D* or a type that directly or indirectly has *D* as a base type, regardless of type arguments. Private and protected accessibility is enforced only at compile-time and serves as no more than an *indication of intent*. Since JavaScript provides no mechanism to create private and protected properties on an object, it is not possible to enforce the private and protected modifiers in dynamic code at run-time. For example, private and protected accessibility can be defeated by changing an object's static type to Any and accessing the member dynamically. @@ -4326,14 +4412,14 @@ An index member in a derived class is said to override an index member in a base ### 8.2.4 Class Types -A class declaration declares a new named type (section [3.7](#3.7)) called a class type. Within the constructor and member functions of a class, the type of `this` is the instance type (section [3.7.1](#3.7.1)) of this class type. The class type has the following members: +A class declaration declares a new named type (section [3.7](#3.7)) called a class type. Within the constructor and instance member functions of a class, the type of `this` is the this-type (section [3.6.3](#3.6.3)) of that class type. The class type has the following members: * A property for each instance member variable declaration in the class body. * A property of a function type for each instance member function declaration in the class body. * A property for each uniquely named instance member accessor declaration in the class body. * A property for each constructor parameter declared with a `public`, `private`, or `protected` modifier. * An index signature for each instance index member declaration in the class body. -* All base class instance type property or index members that are not overridden in the class. +* All base class instance property or index members that are not overridden in the class. All instance property members (including those that are private or protected) of a class must satisfy the constraints implied by the index members of the class as specified in section [3.9.4](#3.9.4). @@ -4353,7 +4439,7 @@ class B extends A { } ``` -the instance type of 'A' is +the class type of 'A' is equivalent to ```TypeScript interface A { @@ -4363,7 +4449,7 @@ interface A { } ``` -and the instance type of 'B' is +and the class type of 'B' is equivalent to ```TypeScript interface B { @@ -4374,16 +4460,16 @@ interface B { } ``` -Note that static declarations in a class do not contribute to the class type and its instance type—rather, static declarations introduce properties on the constructor function object. Also note that the declaration of 'g' in 'B' overrides the member inherited from 'A'. +Note that static declarations in a class do not contribute to the class type—rather, static declarations introduce properties on the constructor function object. Also note that the declaration of 'g' in 'B' overrides the member inherited from 'A'. ### 8.2.5 Constructor Function Types The type of the constructor function introduced by a class declaration is called the constructor function type. The constructor function type has the following members: -* If the class contains no constructor declaration and has no base class, a single construct signature with no parameters, having the same type parameters as the class and returning the instance type of the class. -* If the class contains no constructor declaration and has a base class, a set of construct signatures with the same parameters as those of the base class constructor function type following substitution of type parameters with the type arguments specified in the base class type reference, all having the same type parameters as the class and returning the instance type of the class. -* If the class contains a constructor declaration with no overloads, a construct signature with the parameter list of the constructor implementation, having the same type parameters as the class and returning the instance type of the class. -* If the class contains a constructor declaration with overloads, a set of construct signatures with the parameter lists of the overloads, all having the same type parameters as the class and returning the instance type of the class. +* If the class contains no constructor declaration and has no base class, a single construct signature with no parameters, having the same type parameters as the class (if any) and returning an instantiation of the class type with those type parameters passed as type arguments. +* If the class contains no constructor declaration and has a base class, a set of construct signatures with the same parameters as those of the base class constructor function type following substitution of type parameters with the type arguments specified in the base class type reference, all having the same type parameters as the class (if any) and returning an instantiation of the class type with those type parameters passed as type arguments. +* If the class contains a constructor declaration with no overloads, a construct signature with the parameter list of the constructor implementation, having the same type parameters as the class (if any) and returning an instantiation of the class type with those type parameters passed as type arguments. +* If the class contains a constructor declaration with overloads, a set of construct signatures with the parameter lists of the overloads, all having the same type parameters as the class (if any) and returning an instantiation of the class type with those type parameters passed as type arguments. * A property for each static member variable declaration in the class body. * A property of a function type for each static member function declaration in the class body. * A property for each uniquely named static member accessor declaration in the class body. @@ -4428,7 +4514,7 @@ var TwoArrays: { } ``` -Note that the construct signatures in the constructor function types have the same type parameters as their class and return the instance type of their class. Also note that when a derived class doesn't declare a constructor, type arguments from the base class reference are substituted before construct signatures are propagated from the base constructor function type to the derived constructor function type. +Note that each construct signature in the constructor function types has the same type parameters as its class and returns an instantiation of its class with those type parameters passed as type arguments. Also note that when a derived class doesn't declare a constructor, type arguments from the base class reference are substituted before construct signatures are propagated from the base constructor function type to the derived constructor function type. ## 8.3 Constructor Declarations @@ -4446,7 +4532,7 @@ When a class has constructor overloads, the overloads determine the construct si When a class has both constructor overloads and a constructor implementation, the overloads must precede the implementation and all of the declarations must be consecutive with no intervening grammatical elements. -The function body of a constructor is permitted to contain return statements. If return statements specify expressions, those expressions must be of types that are assignable to the instance type of the class. +The function body of a constructor is permitted to contain return statements. If return statements specify expressions, those expressions must be of types that are assignable to the this-type (section [3.6.3](#3.6.3)) of the class. The type parameters of a generic class are in scope and accessible in a constructor declaration. @@ -4478,6 +4564,8 @@ class Point { } ``` +A parameter property declaration may declare an optional parameter (by including a question mark or a default value), but the property introduced by such a declaration is always considered a required property (section [3.3.6](#3.3.6)). + ### 8.3.2 Super Calls Super calls (section [4.9.1](#4.9.1)) are used to call the constructor of the base class. A super call consists of the keyword `super` followed by an argument list enclosed in parentheses. For example: @@ -4524,7 +4612,7 @@ Property member declarations can be member variable declarations, member functio    *MemberFunctionDeclaration*    *MemberAccessorDeclaration* -Member declarations without a `static` modifier are called instance member declarations. Instance property member declarations declare properties in the class instance type (section [8.2.4](#8.2.4)), and must specify names that are unique among all instance property member and parameter property declarations in the containing class, with the exception that instance get and set accessor declarations may pairwise specify the same name. +Member declarations without a `static` modifier are called instance member declarations. Instance property member declarations declare properties in the class type (section [8.2.4](#8.2.4)), and must specify names that are unique among all instance property member and parameter property declarations in the containing class, with the exception that instance get and set accessor declarations may pairwise specify the same name. Member declarations with a `static` modifier are called static member declarations. Static property member declarations declare properties in the constructor function type (section [8.2.5](#8.2.5)), and must specify names that are unique among all static property member declarations in the containing class, with the exception that static get and set accessor declarations may pairwise specify the same name. @@ -4549,7 +4637,7 @@ class Point { } ``` -The class instance type 'Point' has the members: +The class type 'Point' has the members: ```TypeScript interface Point { @@ -4578,7 +4666,7 @@ A member variable declaration declares an instance member variable or a static m The type associated with a member variable declaration is determined in the same manner as an ordinary variable declaration (see section [5.2](#5.2)). -An instance member variable declaration introduces a member in the class instance type and optionally initializes a property on instances of the class. Initializers in instance member variable declarations are executed once for every new instance of the class and are equivalent to assignments to properties of `this` in the constructor. In an initializer expression for an instance member variable, `this` is of the class instance type. +An instance member variable declaration introduces a member in the class type and optionally initializes a property on instances of the class. Initializers in instance member variable declarations are executed once for every new instance of the class and are equivalent to assignments to properties of `this` in the constructor. In an initializer expression for an instance member variable, `this` is of the this-type (section [3.6.3](#3.6.3)) of the class. A static member variable declaration introduces a property in the constructor function type and optionally initializes a property on the constructor function object. Initializers in static member variable declarations are executed once when the containing script or module is loaded. @@ -4625,7 +4713,7 @@ A member function declaration is processed in the same manner as an ordinary fun All declarations for the same member function must specify the same accessibility (public, private, or protected) and kind (instance or static). -An instance member function declaration declares a property in the class instance type and assigns a function object to a property on the prototype object of the class. In the body of an instance member function declaration, `this` is of the class instance type. +An instance member function declaration declares a property in the class type and assigns a function object to a property on the prototype object of the class. In the body of an instance member function declaration, `this` is of the this-type (section [3.6.3](#3.6.3)) of the class. A static member function declaration declares a property in the constructor function type and assigns a function object to a property on the constructor function object. In the body of a static member function declaration, the type of `this` is the constructor function type. @@ -4691,23 +4779,23 @@ Get and set accessors are processed in the same manner as in an object literal ( Accessors for the same member name must specify the same accessibility. -An instance member accessor declaration declares a property in the class instance type and defines a property on the prototype object of the class with a get or set accessor. In the body of an instance member accessor declaration, `this` is of the class instance type. +An instance member accessor declaration declares a property in the class type and defines a property on the prototype object of the class with a get or set accessor. In the body of an instance member accessor declaration, `this` is of the this-type (section [3.6.3](#3.6.3)) of the class. A static member accessor declaration declares a property in the constructor function type and defines a property on the constructor function object of the class with a get or set accessor. In the body of a static member accessor declaration, the type of `this` is the constructor function type. -Get and set accessors are emitted as calls to 'Object.defineProperty' in the generated JavaScript, as described in section [8.6.1](#8.6.1). +Get and set accessors are emitted as calls to 'Object.defineProperty' in the generated JavaScript, as described in section [8.7.1](#8.7.1). ### 8.4.4 Dynamic Property Declarations If the *PropertyName* of a property member declaration is a computed property name that doesn't denote a well-known symbol ([2.2.3](#2.2.3)), the construct is considered a ***dynamic property declaration***. The following rules apply to dynamic property declarations: -* A dynamic property declaration does not introduce a property in the class instance type or constructor function type. +* A dynamic property declaration does not introduce a property in the class type or constructor function type. * The property name expression of a dynamic property assignment must be of type Any or the String, Number, or Symbol primitive type. * The name associated with a dynamic property declarations is considered to be a numeric property name if the property name expression is of type Any or the Number primitive type. ## 8.5 Index Member Declarations -An index member declaration introduces an index signature (section [3.9.4](#3.9.4)) in the class instance type. +An index member declaration introduces an index signature (section [3.9.4](#3.9.4)) in the class type.   *IndexMemberDeclaration:*    *IndexSignature* `;` @@ -4720,11 +4808,15 @@ It is not possible to declare index members for the static side of a class. Note that it is seldom meaningful to include a string index signature in a class because it constrains all instance properties of the class. However, numeric index signatures can be useful to control the element type when a class is used in an array-like manner. -## 8.6 Code Generation +## 8.6 Decorators -When the output target is ECMAScript 6 or higher, type parameters, implements clauses, accessibility modifiers, and member variable declarations are removed in the emitted code, but otherwise class declarations are emitted as written. When the output target is ECMAScript 3 or 5, more comprehensive rewrites are performed, as described in this section. +*TODO: Document [decorators](https://github.com/Microsoft/TypeScript/issues/2249)*. -### 8.6.1 Classes Without Extends Clauses +## 8.7 Code Generation + +When the output target is ECMAScript 2015 or higher, type parameters, implements clauses, accessibility modifiers, and member variable declarations are removed in the emitted code, but otherwise class declarations are emitted as written. When the output target is ECMAScript 3 or 5, more comprehensive rewrites are performed, as described in this section. + +### 8.7.1 Classes Without Extends Clauses A class with no `extends` clause generates JavaScript equivalent to the following: @@ -4828,7 +4920,7 @@ where *MemberName* is the name of the member accessor, *GetAccessorStatements* i where *MemberName* is the name of the static variable, and *InitializerExpression* is the code generated for the initializer expression. -### 8.6.2 Classes With Extends Clauses +### 8.7.2 Classes With Extends Clauses A class with an `extends` clause generates JavaScript equivalent to the following: @@ -5396,7 +5488,7 @@ This copies a reference to the entity into a property on the namespace instance. # 11 Scripts and Modules -TypeScript implements support for ECMAScript 6 modules and supports down-level code generation targeting CommonJS, AMD, and other module systems. +TypeScript implements support for ECMAScript 2015 modules and supports down-level code generation targeting CommonJS, AMD, and other module systems. ## 11.1 Programs and Source Files @@ -5424,7 +5516,7 @@ When a TypeScript program is compiled, all of the program's source files are pro The TypeScript compiler automatically determines a source file's dependencies and includes those dependencies in the program being compiled. The determination is made from "reference comments" and module import declarations as follows: -* A comment of the form /// <reference path="…"/> adds a dependency on the source file specified in the path argument. The path is resolved relative to the directory of the containing source file. +* A comment of the form /// <reference path="…"/> that occurs before the first token in a source file adds a dependency on the source file specified in the path argument. The path is resolved relative to the directory of the containing source file. * A module import declaration that specifies a relative module name (section [11.3.1](#11.3.1)) resolves the name relative to the directory of the containing source file. If a source file with the resulting path and file extension '.ts' exists, that file is added as a dependency. Otherwise, if a source file with the resulting path and file extension '.d.ts' exists, that file is added as a dependency. * A module import declaration that specifies a top-level module name (section [11.3.1](#11.3.1)) resolves the name in a host dependent manner (typically by resolving the name relative to a module name space root or searching for the name in a series of directories). If a source file with extension '.ts' or '.d.ts' corresponding to the reference is located, that file is added as a dependency. @@ -5539,7 +5631,7 @@ TypeScript supports multiple patterns of JavaScript code generation for modules: * CommonJS. This format is used by server frameworks such as node.js. * AMD (Asynchronous Module Definition). This format is used by asynchronous module loaders such as RequireJS. * UMD (Universal Module Definition). A variation of the AMD format that allows modules to also be loaded by CommonJS loaders. -* System. This format is used to represent ECMAScript 6 semantics with high fidelity in down-level environments. +* System. This format is used to represent ECMAScript 2015 semantics with high fidelity in down-level environments. The desired module code generation pattern is selected through a compiler option and does not affect the TypeScript source code. Indeed, it is possible to author modules that can be compiled for use both on the server side (e.g. using node.js) and on the client side (using an AMD compliant loader) with no changes to the TypeScript source code. @@ -5620,7 +5712,7 @@ An import require declaration of the form import m = require("mod"); ``` -is equivalent to the ECMAScript 6 import declaration +is equivalent to the ECMAScript 2015 import declaration ```TypeScript import * as m from "mod"; @@ -5828,16 +5920,17 @@ The 'main' and 'log' example from section [11.3](#11.3) above generates the foll File main.js: ```TypeScript -var log = require("./log"); -log.message("hello"); +var log_1 = require("./log"); +log_1.message("hello"); ``` File log.js: ```TypeScript -exports.message = function(s) { +function message(s) { console.log(s); -} +} +exports.message = message; ``` A module import declaration is represented in the generated JavaScript as a variable initialized by a call to the 'require' function provided by the module system host. A variable declaration and 'require' call is emitted for a particular imported module only if the imported module, or a local alias (section [10.3](#10.3)) that references the imported module, is referenced as a *PrimaryExpression* somewhere in the body of the importing module. If an imported module is referenced only as a *NamespaceName* or *TypeQueryExpression*, nothing is emitted. @@ -5850,15 +5943,15 @@ File geometry.ts: export interface Point { x: number; y: number }; export function point(x: number, y: number): Point { - return { x: x, y: y }; + return { x, y }; } ``` File game.ts: ```TypeScript -import g = require("./geometry"); -var p = g.point(10, 20); +import * as g from "./geometry"; +let p = g.point(10, 20); ``` The 'game' module references the imported 'geometry' module in an expression (through its alias 'g') and a 'require' call is therefore included in the emitted JavaScript: @@ -5871,8 +5964,8 @@ var p = g.point(10, 20); Had the 'game' module instead been written to only reference 'geometry' in a type position ```TypeScript -import g = require("./geometry"); -var p: g.Point = { x: 10, y: 20 }; +import * as g from "./geometry"; +let p: g.Point = { x: 10, y: 20 }; ``` the emitted JavaScript would have no dependency on the 'geometry' module and would simply be @@ -5890,8 +5983,8 @@ The "main" and "log" example from above generates the following JavaScript code File main.js: ```TypeScript -define(["require", "exports", "./log"], function(require, exports, log) { - log.message("hello"); +define(["require", "exports", "./log"], function(require, exports, log_1) { + log_1.message("hello"); } ``` @@ -5899,9 +5992,10 @@ File log.js: ```TypeScript define(["require", "exports"], function(require, exports) { - exports.message = function(s) { + function message(s) { console.log(s); } + exports.message = message; } ``` @@ -5957,7 +6051,7 @@ Ambient function declarations cannot specify a function bodies and do not permit ### 12.1.3 Ambient Class Declarations -An ambient class declaration declares a class instance type and a constructor function in the containing declaration space. +An ambient class declaration declares a class type and a constructor function in the containing declaration space.   *AmbientClassDeclaration:*    `class` *BindingIdentifier* *TypeParametersopt* *ClassHeritage* `{` *AmbientClassBody* `}` @@ -6057,7 +6151,7 @@ declare module "io" { # A Grammar -This appendix contains a summary of the grammar found in the main document. As described in section [2.1](#2.1), the TypeScript grammar is a superset of the grammar defined in the [ECMAScript Language Specification](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf) (specifically, the ECMA-262 Standard, 6th Edition) and this appendix lists only productions that are new or modified from the ECMAScript grammar. +This appendix contains a summary of the grammar found in the main document. As described in section [2.1](#2.1), the TypeScript grammar is a superset of the grammar defined in the [ECMAScript 2015 Language Specification](http://www.ecma-international.org/ecma-262/6.0/) (specifically, the ECMA-262 Standard, 6th Edition) and this appendix lists only productions that are new or modified from the ECMAScript grammar. ## A.1 Types @@ -6104,7 +6198,8 @@ This appendix contains a summary of the grammar found in the main document. As d    *ObjectType*    *ArrayType*    *TupleType* -   *TypeQuery* +   *TypeQuery* +   *ThisType*   *ParenthesizedType:*    `(` *Type* `)` @@ -6179,7 +6274,10 @@ This appendix contains a summary of the grammar found in the main document. As d    *IdentifierReference*    *TypeQueryExpression* `.` *IdentifierName* -  *PropertySignature:* +  *ThisType:* +   `this + +  `*PropertySignature:*    *PropertyName* `?`*opt* *TypeAnnotationopt*   *PropertyName:* From 669e733f3cf66f7edfadb0184b00787a20fda08d Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Mon, 4 Jan 2016 11:28:49 -0800 Subject: [PATCH 119/164] accept baseline --- .../reference/prefixUnaryOperatorsOnExportedVariables.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js b/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js index 5d414c97d05..a3b70bde6d5 100644 --- a/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js +++ b/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js @@ -31,7 +31,7 @@ if (++y) { } //// [prefixUnaryOperatorsOnExportedVariables.js] -System.register([], function(exports_1) { +System.register([], function(exports_1, __moduleName) { "use strict"; var x, y; return { From cca9f9d1e2d3d47a89a036530ee0636fc2fef8ce Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 4 Jan 2016 11:42:30 -0800 Subject: [PATCH 120/164] Minor formatting fixes --- doc/TypeScript Language Specification.docx | Bin 316862 -> 316896 bytes doc/spec.md | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/TypeScript Language Specification.docx b/doc/TypeScript Language Specification.docx index d95eb3e378bfee24baca1ade57a41f15e97d2b4d..78c869175512d02338a61741a2bbbe570aa97bcb 100644 GIT binary patch delta 234376 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%0A?^W29&CG`eC#h~C=@yOXN!n)cPMEgEDsoej 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 z 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 H!cqSNJ?sQv delta 234209 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 *TypeAnnotationopt*   *PropertyName:* From ad890522f6c5d8b880a95a33327a03f13677ec58 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Mon, 4 Jan 2016 13:59:27 -0800 Subject: [PATCH 121/164] added tests for tsx formatting --- .../fourslash/formattingInExpressionsInTsx.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 tests/cases/fourslash/formattingInExpressionsInTsx.ts diff --git a/tests/cases/fourslash/formattingInExpressionsInTsx.ts b/tests/cases/fourslash/formattingInExpressionsInTsx.ts new file mode 100644 index 00000000000..f02a5a5b291 --- /dev/null +++ b/tests/cases/fourslash/formattingInExpressionsInTsx.ts @@ -0,0 +1,14 @@ +/// + +// @Filename: test.tsx +////import * as React from "react"; +////
+////
+ +goTo.marker("1"); +edit.insert(";"); +verify.currentLineContentIs(" return true;"); \ No newline at end of file From 24a108936f4941156147f3283f996f9e2fed972d Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 22:27:57 -0500 Subject: [PATCH 122/164] Added tests. --- .../commaOperator/contextuallyTypeCommaOperator01.ts | 3 +++ .../commaOperator/contextuallyTypeCommaOperator02.ts | 6 ++++++ .../logicalAnd/contextuallyTypeLogicalAnd01.ts | 4 ++++ .../logicalAnd/contextuallyTypeLogicalAnd02.ts | 7 +++++++ 4 files changed, 20 insertions(+) create mode 100644 tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts create mode 100644 tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts create mode 100644 tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts create mode 100644 tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts diff --git a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts new file mode 100644 index 00000000000..f5d83266115 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts @@ -0,0 +1,3 @@ +let x: (a: string) => string; + +x = (100, a => a); \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts new file mode 100644 index 00000000000..bd38c616770 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts @@ -0,0 +1,6 @@ +let x: (a: string) => string; + +x = (100, a => { + const b: number = a; + return b; +}); \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts new file mode 100644 index 00000000000..2cc3d8fde25 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts @@ -0,0 +1,4 @@ +let x: (a: string) => string; +let y = true; + +x = y && (a => a); \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts new file mode 100644 index 00000000000..fbd196e7b66 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts @@ -0,0 +1,7 @@ +let x: (a: string) => string; +let y = true; + +x = y && (a => { + const b: number = a; + return b; +}); \ No newline at end of file From 4484ca062e6f8d7e05440dbafb59719ef3c7b31f Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 22:39:47 -0500 Subject: [PATCH 123/164] Accepted baselines. --- .../contextuallyTypeCommaOperator01.js | 8 ++++++++ .../contextuallyTypeCommaOperator01.symbols | 10 ++++++++++ .../contextuallyTypeCommaOperator01.types | 15 +++++++++++++++ ...contextuallyTypeCommaOperator02.errors.txt | 14 ++++++++++++++ .../contextuallyTypeCommaOperator02.js | 14 ++++++++++++++ .../reference/contextuallyTypeLogicalAnd01.js | 10 ++++++++++ .../contextuallyTypeLogicalAnd01.symbols | 14 ++++++++++++++ .../contextuallyTypeLogicalAnd01.types | 19 +++++++++++++++++++ .../contextuallyTypeLogicalAnd02.errors.txt | 15 +++++++++++++++ .../reference/contextuallyTypeLogicalAnd02.js | 16 ++++++++++++++++ 10 files changed, 135 insertions(+) create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator01.js create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator01.symbols create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator01.types create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator02.js create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd01.js create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd01.types create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd02.js diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator01.js b/tests/baselines/reference/contextuallyTypeCommaOperator01.js new file mode 100644 index 00000000000..f8a9dbe7f8b --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator01.js @@ -0,0 +1,8 @@ +//// [contextuallyTypeCommaOperator01.ts] +let x: (a: string) => string; + +x = (100, a => a); + +//// [contextuallyTypeCommaOperator01.js] +var x; +x = (100, function (a) { return a; }); diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols b/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols new file mode 100644 index 00000000000..b3b9326ea82 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols @@ -0,0 +1,10 @@ +=== tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts === +let x: (a: string) => string; +>x : Symbol(x, Decl(contextuallyTypeCommaOperator01.ts, 0, 3)) +>a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 0, 8)) + +x = (100, a => a); +>x : Symbol(x, Decl(contextuallyTypeCommaOperator01.ts, 0, 3)) +>a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 2, 9)) +>a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 2, 9)) + diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator01.types b/tests/baselines/reference/contextuallyTypeCommaOperator01.types new file mode 100644 index 00000000000..35d5ba5af0c --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator01.types @@ -0,0 +1,15 @@ +=== tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts === +let x: (a: string) => string; +>x : (a: string) => string +>a : string + +x = (100, a => a); +>x = (100, a => a) : (a: any) => any +>x : (a: string) => string +>(100, a => a) : (a: any) => any +>100, a => a : (a: any) => any +>100 : number +>a => a : (a: any) => any +>a : any +>a : any + diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt b/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt new file mode 100644 index 00000000000..e95eaedeaf6 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts(3,1): error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts (1 errors) ==== + let x: (a: string) => string; + + x = (100, a => { + ~ +!!! error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + const b: number = a; + return b; + }); \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator02.js b/tests/baselines/reference/contextuallyTypeCommaOperator02.js new file mode 100644 index 00000000000..1d97d7ccaae --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator02.js @@ -0,0 +1,14 @@ +//// [contextuallyTypeCommaOperator02.ts] +let x: (a: string) => string; + +x = (100, a => { + const b: number = a; + return b; +}); + +//// [contextuallyTypeCommaOperator02.js] +var x; +x = (100, function (a) { + var b = a; + return b; +}); diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd01.js b/tests/baselines/reference/contextuallyTypeLogicalAnd01.js new file mode 100644 index 00000000000..35b509f1192 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd01.js @@ -0,0 +1,10 @@ +//// [contextuallyTypeLogicalAnd01.ts] +let x: (a: string) => string; +let y = true; + +x = y && (a => a); + +//// [contextuallyTypeLogicalAnd01.js] +var x; +var y = true; +x = y && (function (a) { return a; }); diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols b/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols new file mode 100644 index 00000000000..a16ba5cc392 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols @@ -0,0 +1,14 @@ +=== tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts === +let x: (a: string) => string; +>x : Symbol(x, Decl(contextuallyTypeLogicalAnd01.ts, 0, 3)) +>a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 0, 8)) + +let y = true; +>y : Symbol(y, Decl(contextuallyTypeLogicalAnd01.ts, 1, 3)) + +x = y && (a => a); +>x : Symbol(x, Decl(contextuallyTypeLogicalAnd01.ts, 0, 3)) +>y : Symbol(y, Decl(contextuallyTypeLogicalAnd01.ts, 1, 3)) +>a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 3, 10)) +>a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 3, 10)) + diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd01.types b/tests/baselines/reference/contextuallyTypeLogicalAnd01.types new file mode 100644 index 00000000000..92f70dcc73b --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd01.types @@ -0,0 +1,19 @@ +=== tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts === +let x: (a: string) => string; +>x : (a: string) => string +>a : string + +let y = true; +>y : boolean +>true : boolean + +x = y && (a => a); +>x = y && (a => a) : (a: any) => any +>x : (a: string) => string +>y && (a => a) : (a: any) => any +>y : boolean +>(a => a) : (a: any) => any +>a => a : (a: any) => any +>a : any +>a : any + diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt b/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt new file mode 100644 index 00000000000..3d2cd6d0657 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt @@ -0,0 +1,15 @@ +tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts(4,1): error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. + Type 'number' is not assignable to type 'string'. + + +==== tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts (1 errors) ==== + let x: (a: string) => string; + let y = true; + + x = y && (a => { + ~ +!!! error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. + const b: number = a; + return b; + }); \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd02.js b/tests/baselines/reference/contextuallyTypeLogicalAnd02.js new file mode 100644 index 00000000000..11ec0aa03a8 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd02.js @@ -0,0 +1,16 @@ +//// [contextuallyTypeLogicalAnd02.ts] +let x: (a: string) => string; +let y = true; + +x = y && (a => { + const b: number = a; + return b; +}); + +//// [contextuallyTypeLogicalAnd02.js] +var x; +var y = true; +x = y && (function (a) { + var b = a; + return b; +}); From 06bff434ccc6c981b4a2c02f057e535d520a0636 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 22:48:53 -0500 Subject: [PATCH 124/164] Added 'noImplicitAny' to tests. --- .../commaOperator/contextuallyTypeCommaOperator01.ts | 2 ++ .../commaOperator/contextuallyTypeCommaOperator02.ts | 2 ++ .../contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts | 2 ++ .../contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts | 2 ++ 4 files changed, 8 insertions(+) diff --git a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts index f5d83266115..167369a020b 100644 --- a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts +++ b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts @@ -1,3 +1,5 @@ +// @noImplicitAny: true + let x: (a: string) => string; x = (100, a => a); \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts index bd38c616770..11e743b583e 100644 --- a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts +++ b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts @@ -1,3 +1,5 @@ +// @noImplicitAny: true + let x: (a: string) => string; x = (100, a => { diff --git a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts index 2cc3d8fde25..30e46429fa1 100644 --- a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts +++ b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts @@ -1,3 +1,5 @@ +// @noImplicitAny: true + let x: (a: string) => string; let y = true; diff --git a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts index fbd196e7b66..26e58ae49ec 100644 --- a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts +++ b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts @@ -1,3 +1,5 @@ +// @noImplicitAny: true + let x: (a: string) => string; let y = true; From 5ab5cfd2fd444cf42cc1c56f8b96519644191385 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 22:54:37 -0500 Subject: [PATCH 125/164] Contextually type the RHS of logical 'and' and comma expressions. --- src/compiler/checker.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c2e798659da..fb4af5d7298 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -7362,6 +7362,12 @@ namespace ts { } return type; } + else if (operator === SyntaxKind.AmpersandAmpersandToken || operator === SyntaxKind.CommaToken) { + if (node === binaryExpression.right) { + return getContextualType(binaryExpression); + } + } + return undefined; } From b0576cdf8e1875d87a499e4bdb36fef2a5659aef Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 22:55:05 -0500 Subject: [PATCH 126/164] Accepted baselines. --- .../reference/contextuallyTypeCommaOperator01.js | 1 + .../contextuallyTypeCommaOperator01.symbols | 11 ++++++----- .../contextuallyTypeCommaOperator01.types | 13 +++++++------ .../contextuallyTypeCommaOperator02.errors.txt | 10 +++++++--- .../reference/contextuallyTypeCommaOperator02.js | 1 + .../reference/contextuallyTypeLogicalAnd01.js | 1 + .../contextuallyTypeLogicalAnd01.symbols | 15 ++++++++------- .../reference/contextuallyTypeLogicalAnd01.types | 13 +++++++------ .../contextuallyTypeLogicalAnd02.errors.txt | 10 +++++++--- .../reference/contextuallyTypeLogicalAnd02.js | 1 + 10 files changed, 46 insertions(+), 30 deletions(-) diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator01.js b/tests/baselines/reference/contextuallyTypeCommaOperator01.js index f8a9dbe7f8b..0da3ac91000 100644 --- a/tests/baselines/reference/contextuallyTypeCommaOperator01.js +++ b/tests/baselines/reference/contextuallyTypeCommaOperator01.js @@ -1,4 +1,5 @@ //// [contextuallyTypeCommaOperator01.ts] + let x: (a: string) => string; x = (100, a => a); diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols b/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols index b3b9326ea82..c07fd28ae77 100644 --- a/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols +++ b/tests/baselines/reference/contextuallyTypeCommaOperator01.symbols @@ -1,10 +1,11 @@ === tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts === + let x: (a: string) => string; ->x : Symbol(x, Decl(contextuallyTypeCommaOperator01.ts, 0, 3)) ->a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 0, 8)) +>x : Symbol(x, Decl(contextuallyTypeCommaOperator01.ts, 1, 3)) +>a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 1, 8)) x = (100, a => a); ->x : Symbol(x, Decl(contextuallyTypeCommaOperator01.ts, 0, 3)) ->a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 2, 9)) ->a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 2, 9)) +>x : Symbol(x, Decl(contextuallyTypeCommaOperator01.ts, 1, 3)) +>a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 3, 9)) +>a : Symbol(a, Decl(contextuallyTypeCommaOperator01.ts, 3, 9)) diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator01.types b/tests/baselines/reference/contextuallyTypeCommaOperator01.types index 35d5ba5af0c..c3b7b700d64 100644 --- a/tests/baselines/reference/contextuallyTypeCommaOperator01.types +++ b/tests/baselines/reference/contextuallyTypeCommaOperator01.types @@ -1,15 +1,16 @@ === tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator01.ts === + let x: (a: string) => string; >x : (a: string) => string >a : string x = (100, a => a); ->x = (100, a => a) : (a: any) => any +>x = (100, a => a) : (a: string) => string >x : (a: string) => string ->(100, a => a) : (a: any) => any ->100, a => a : (a: any) => any +>(100, a => a) : (a: string) => string +>100, a => a : (a: string) => string >100 : number ->a => a : (a: any) => any ->a : any ->a : any +>a => a : (a: string) => string +>a : string +>a : string diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt b/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt index e95eaedeaf6..3214f7e5025 100644 --- a/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt +++ b/tests/baselines/reference/contextuallyTypeCommaOperator02.errors.txt @@ -1,14 +1,18 @@ -tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts(3,1): error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. +tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts(4,1): error TS2322: Type '(a: string) => number' is not assignable to type '(a: string) => string'. Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts(5,11): error TS2322: Type 'string' is not assignable to type 'number'. -==== tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts (1 errors) ==== +==== tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator02.ts (2 errors) ==== + let x: (a: string) => string; x = (100, a => { ~ -!!! error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. +!!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: string) => string'. !!! error TS2322: Type 'number' is not assignable to type 'string'. const b: number = a; + ~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. return b; }); \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator02.js b/tests/baselines/reference/contextuallyTypeCommaOperator02.js index 1d97d7ccaae..0f8d67dd0ef 100644 --- a/tests/baselines/reference/contextuallyTypeCommaOperator02.js +++ b/tests/baselines/reference/contextuallyTypeCommaOperator02.js @@ -1,4 +1,5 @@ //// [contextuallyTypeCommaOperator02.ts] + let x: (a: string) => string; x = (100, a => { diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd01.js b/tests/baselines/reference/contextuallyTypeLogicalAnd01.js index 35b509f1192..b8b1f0d1e00 100644 --- a/tests/baselines/reference/contextuallyTypeLogicalAnd01.js +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd01.js @@ -1,4 +1,5 @@ //// [contextuallyTypeLogicalAnd01.ts] + let x: (a: string) => string; let y = true; diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols b/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols index a16ba5cc392..4d69b43e669 100644 --- a/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd01.symbols @@ -1,14 +1,15 @@ === tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts === + let x: (a: string) => string; ->x : Symbol(x, Decl(contextuallyTypeLogicalAnd01.ts, 0, 3)) ->a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 0, 8)) +>x : Symbol(x, Decl(contextuallyTypeLogicalAnd01.ts, 1, 3)) +>a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 1, 8)) let y = true; ->y : Symbol(y, Decl(contextuallyTypeLogicalAnd01.ts, 1, 3)) +>y : Symbol(y, Decl(contextuallyTypeLogicalAnd01.ts, 2, 3)) x = y && (a => a); ->x : Symbol(x, Decl(contextuallyTypeLogicalAnd01.ts, 0, 3)) ->y : Symbol(y, Decl(contextuallyTypeLogicalAnd01.ts, 1, 3)) ->a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 3, 10)) ->a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 3, 10)) +>x : Symbol(x, Decl(contextuallyTypeLogicalAnd01.ts, 1, 3)) +>y : Symbol(y, Decl(contextuallyTypeLogicalAnd01.ts, 2, 3)) +>a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 4, 10)) +>a : Symbol(a, Decl(contextuallyTypeLogicalAnd01.ts, 4, 10)) diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd01.types b/tests/baselines/reference/contextuallyTypeLogicalAnd01.types index 92f70dcc73b..a405888c8a9 100644 --- a/tests/baselines/reference/contextuallyTypeLogicalAnd01.types +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd01.types @@ -1,4 +1,5 @@ === tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd01.ts === + let x: (a: string) => string; >x : (a: string) => string >a : string @@ -8,12 +9,12 @@ let y = true; >true : boolean x = y && (a => a); ->x = y && (a => a) : (a: any) => any +>x = y && (a => a) : (a: string) => string >x : (a: string) => string ->y && (a => a) : (a: any) => any +>y && (a => a) : (a: string) => string >y : boolean ->(a => a) : (a: any) => any ->a => a : (a: any) => any ->a : any ->a : any +>(a => a) : (a: string) => string +>a => a : (a: string) => string +>a : string +>a : string diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt b/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt index 3d2cd6d0657..7452d333d88 100644 --- a/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd02.errors.txt @@ -1,15 +1,19 @@ -tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts(4,1): error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. +tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts(5,1): error TS2322: Type '(a: string) => number' is not assignable to type '(a: string) => string'. Type 'number' is not assignable to type 'string'. +tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts(6,11): error TS2322: Type 'string' is not assignable to type 'number'. -==== tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts (1 errors) ==== +==== tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd02.ts (2 errors) ==== + let x: (a: string) => string; let y = true; x = y && (a => { ~ -!!! error TS2322: Type '(a: any) => number' is not assignable to type '(a: string) => string'. +!!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: string) => string'. !!! error TS2322: Type 'number' is not assignable to type 'string'. const b: number = a; + ~ +!!! error TS2322: Type 'string' is not assignable to type 'number'. return b; }); \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd02.js b/tests/baselines/reference/contextuallyTypeLogicalAnd02.js index 11ec0aa03a8..6dc1fa5b26a 100644 --- a/tests/baselines/reference/contextuallyTypeLogicalAnd02.js +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd02.js @@ -1,4 +1,5 @@ //// [contextuallyTypeLogicalAnd02.ts] + let x: (a: string) => string; let y = true; From 5323fa67830934ed3011a332e81761599be1e7f5 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 22:58:49 -0500 Subject: [PATCH 127/164] Added tests for LHS expressions. --- .../commaOperator/contextuallyTypeCommaOperator03.ts | 5 +++++ .../logicalAnd/contextuallyTypeLogicalAnd03.ts | 6 ++++++ 2 files changed, 11 insertions(+) create mode 100644 tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator03.ts create mode 100644 tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd03.ts diff --git a/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator03.ts b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator03.ts new file mode 100644 index 00000000000..321eb99d153 --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator03.ts @@ -0,0 +1,5 @@ +// @noImplicitAny: true + +let x: (a: string) => string; + +x = (a => a, b => b); \ No newline at end of file diff --git a/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd03.ts b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd03.ts new file mode 100644 index 00000000000..1fba96c048a --- /dev/null +++ b/tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd03.ts @@ -0,0 +1,6 @@ +// @noImplicitAny: true + +let x: (a: string) => string; +let y = true; + +x = (a => a) && (b => b); \ No newline at end of file From 7ce819f4c7d424fb0346fc56890d42a0261d5095 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 4 Jan 2016 23:02:11 -0500 Subject: [PATCH 128/164] Accepted baselines. --- .../contextuallyTypeCommaOperator03.errors.txt | 10 ++++++++++ .../reference/contextuallyTypeCommaOperator03.js | 9 +++++++++ .../reference/contextuallyTypeLogicalAnd03.errors.txt | 11 +++++++++++ .../reference/contextuallyTypeLogicalAnd03.js | 11 +++++++++++ 4 files changed, 41 insertions(+) create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator03.errors.txt create mode 100644 tests/baselines/reference/contextuallyTypeCommaOperator03.js create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd03.errors.txt create mode 100644 tests/baselines/reference/contextuallyTypeLogicalAnd03.js diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator03.errors.txt b/tests/baselines/reference/contextuallyTypeCommaOperator03.errors.txt new file mode 100644 index 00000000000..715b7cf70ea --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator03.errors.txt @@ -0,0 +1,10 @@ +tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator03.ts(4,6): error TS7006: Parameter 'a' implicitly has an 'any' type. + + +==== tests/cases/conformance/types/contextualTypes/commaOperator/contextuallyTypeCommaOperator03.ts (1 errors) ==== + + let x: (a: string) => string; + + x = (a => a, b => b); + ~ +!!! error TS7006: Parameter 'a' implicitly has an 'any' type. \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypeCommaOperator03.js b/tests/baselines/reference/contextuallyTypeCommaOperator03.js new file mode 100644 index 00000000000..c4754f28c41 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeCommaOperator03.js @@ -0,0 +1,9 @@ +//// [contextuallyTypeCommaOperator03.ts] + +let x: (a: string) => string; + +x = (a => a, b => b); + +//// [contextuallyTypeCommaOperator03.js] +var x; +x = (function (a) { return a; }, function (b) { return b; }); diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd03.errors.txt b/tests/baselines/reference/contextuallyTypeLogicalAnd03.errors.txt new file mode 100644 index 00000000000..1430be00427 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd03.errors.txt @@ -0,0 +1,11 @@ +tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd03.ts(5,6): error TS7006: Parameter 'a' implicitly has an 'any' type. + + +==== tests/cases/conformance/types/contextualTypes/logicalAnd/contextuallyTypeLogicalAnd03.ts (1 errors) ==== + + let x: (a: string) => string; + let y = true; + + x = (a => a) && (b => b); + ~ +!!! error TS7006: Parameter 'a' implicitly has an 'any' type. \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypeLogicalAnd03.js b/tests/baselines/reference/contextuallyTypeLogicalAnd03.js new file mode 100644 index 00000000000..cbf1b3a319a --- /dev/null +++ b/tests/baselines/reference/contextuallyTypeLogicalAnd03.js @@ -0,0 +1,11 @@ +//// [contextuallyTypeLogicalAnd03.ts] + +let x: (a: string) => string; +let y = true; + +x = (a => a) && (b => b); + +//// [contextuallyTypeLogicalAnd03.js] +var x; +var y = true; +x = (function (a) { return a; }) && (function (b) { return b; }); From 347359c18e9e17aa8e5ac35023308449018b4e64 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 5 Jan 2016 11:01:28 -0500 Subject: [PATCH 129/164] Added '[Symbol.toStringTag]' property to 'GeneratorFunction'. --- src/lib/es6.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/es6.d.ts b/src/lib/es6.d.ts index 531dbf9e5ea..c5dbeb65749 100644 --- a/src/lib/es6.d.ts +++ b/src/lib/es6.d.ts @@ -565,7 +565,7 @@ interface IterableIterator extends Iterator { } interface GeneratorFunction extends Function { - + [Symbol.toStringTag]: string; } interface GeneratorFunctionConstructor { From a4dc0f37dab3e6381aa2bb607942913ce22e10b9 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 5 Jan 2016 11:20:44 -0500 Subject: [PATCH 130/164] Added '[Symbol.toStringTag]' properties to type arrays. --- src/lib/es6.d.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib/es6.d.ts b/src/lib/es6.d.ts index c5dbeb65749..b86eccf4b58 100644 --- a/src/lib/es6.d.ts +++ b/src/lib/es6.d.ts @@ -909,6 +909,7 @@ interface Int8Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int8Array"; } interface Int8ArrayConstructor { @@ -941,6 +942,7 @@ interface Uint8Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "UInt8Array"; } interface Uint8ArrayConstructor { @@ -976,6 +978,7 @@ interface Uint8ClampedArray { values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint8ClampedArray"; } interface Uint8ClampedArrayConstructor { @@ -1013,6 +1016,7 @@ interface Int16Array { [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int16Array"; } interface Int16ArrayConstructor { @@ -1045,6 +1049,7 @@ interface Uint16Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint16Array"; } interface Uint16ArrayConstructor { @@ -1077,6 +1082,7 @@ interface Int32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int32Array"; } interface Int32ArrayConstructor { @@ -1109,6 +1115,7 @@ interface Uint32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint32Array"; } interface Uint32ArrayConstructor { @@ -1141,6 +1148,7 @@ interface Float32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Float32Array"; } interface Float32ArrayConstructor { @@ -1173,6 +1181,7 @@ interface Float64Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Float64Array"; } interface Float64ArrayConstructor { From 7d292c41d689252dee59b0c719c83521a097b0ea Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 5 Jan 2016 11:23:45 -0500 Subject: [PATCH 131/164] Use string literals for '[Symbol.toStringTag]' properties. --- src/lib/es6.d.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/es6.d.ts b/src/lib/es6.d.ts index b86eccf4b58..84128a01cf2 100644 --- a/src/lib/es6.d.ts +++ b/src/lib/es6.d.ts @@ -7,7 +7,7 @@ interface Symbol { /** Returns the primitive value of the specified object. */ valueOf(): Object; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Symbol"; } interface SymbolConstructor { @@ -565,7 +565,7 @@ interface IterableIterator extends Iterator { } interface GeneratorFunction extends Function { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "GeneratorFunction"; } interface GeneratorFunctionConstructor { @@ -690,7 +690,7 @@ interface Math { */ cbrt(x: number): number; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Math"; } interface Date { @@ -807,7 +807,7 @@ interface Map { size: number; values(): IterableIterator; [Symbol.iterator]():IterableIterator<[K,V]>; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Map"; } interface MapConstructor { @@ -824,7 +824,7 @@ interface WeakMap { get(key: K): V; has(key: K): boolean; set(key: K, value?: V): WeakMap; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "WeakMap"; } interface WeakMapConstructor { @@ -846,7 +846,7 @@ interface Set { size: number; values(): IterableIterator; [Symbol.iterator]():IterableIterator; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Set"; } interface SetConstructor { @@ -862,7 +862,7 @@ interface WeakSet { clear(): void; delete(value: T): boolean; has(value: T): boolean; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "WeakSet"; } interface WeakSetConstructor { @@ -874,7 +874,7 @@ interface WeakSetConstructor { declare var WeakSet: WeakSetConstructor; interface JSON { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "JSON"; } /** @@ -884,11 +884,11 @@ interface JSON { * buffer as needed. */ interface ArrayBuffer { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "ArrayBuffer"; } interface DataView { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "DataView"; } /** @@ -1258,7 +1258,7 @@ interface Promise { catch(onrejected?: (reason: any) => T | PromiseLike): Promise; catch(onrejected?: (reason: any) => void): Promise; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Promise"; } interface PromiseConstructor { From 3fd5fd6c59e66ebd6c3f62ceb3d396410aac62b6 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 5 Jan 2016 11:40:45 -0500 Subject: [PATCH 132/164] Updated a test and added a new test for assignability betewen typed arrays. --- tests/cases/compiler/typedArrays.ts | 2 - .../typedArraysCrossAssignability01.ts | 94 +++++++++++++++++++ 2 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 tests/cases/compiler/typedArraysCrossAssignability01.ts diff --git a/tests/cases/compiler/typedArrays.ts b/tests/cases/compiler/typedArrays.ts index 4508632f6d6..602e15dc2d7 100644 --- a/tests/cases/compiler/typedArrays.ts +++ b/tests/cases/compiler/typedArrays.ts @@ -75,7 +75,6 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { return typedArrays; } -/* function CreateTypedArraysOf(obj) { var typedArrays = []; typedArrays[0] = Int8Array.of(...obj); @@ -90,7 +89,6 @@ function CreateTypedArraysOf(obj) { return typedArrays; } -*/ function CreateTypedArraysOf2() { var typedArrays = []; diff --git a/tests/cases/compiler/typedArraysCrossAssignability01.ts b/tests/cases/compiler/typedArraysCrossAssignability01.ts new file mode 100644 index 00000000000..27607b64161 --- /dev/null +++ b/tests/cases/compiler/typedArraysCrossAssignability01.ts @@ -0,0 +1,94 @@ +// @target: ES6 + +function CheckAssignability() { + let arr_Int8Array = new Int8Array(1); + let arr_Uint8Array = new Uint8Array(1); + let arr_Int16Array = new Int16Array(1); + let arr_Uint16Array = new Uint16Array(1); + let arr_Int32Array = new Int32Array(1); + let arr_Uint32Array = new Uint32Array(1); + let arr_Float32Array = new Float32Array(1); + let arr_Float64Array = new Float64Array(1); + let arr_Uint8ClampedArray = new Uint8ClampedArray(1); + + arr_Int8Array = arr_Int8Array; + arr_Int8Array = arr_Uint8Array; + arr_Int8Array = arr_Int16Array; + arr_Int8Array = arr_Uint16Array; + arr_Int8Array = arr_Int32Array; + arr_Int8Array = arr_Uint32Array; + arr_Int8Array = arr_Float32Array; + arr_Int8Array = arr_Float64Array; + arr_Int8Array = arr_Uint8ClampedArray; + + arr_Uint8Array = arr_Int8Array; + arr_Uint8Array = arr_Uint8Array; + arr_Uint8Array = arr_Int16Array; + arr_Uint8Array = arr_Uint16Array; + arr_Uint8Array = arr_Int32Array; + arr_Uint8Array = arr_Uint32Array; + arr_Uint8Array = arr_Float32Array; + arr_Uint8Array = arr_Float64Array; + arr_Uint8Array = arr_Uint8ClampedArray; + + arr_Int16Array = arr_Int8Array; + arr_Int16Array = arr_Uint8Array; + arr_Int16Array = arr_Int16Array; + arr_Int16Array = arr_Uint16Array; + arr_Int16Array = arr_Int32Array; + arr_Int16Array = arr_Uint32Array; + arr_Int16Array = arr_Float32Array; + arr_Int16Array = arr_Float64Array; + arr_Int16Array = arr_Uint8ClampedArray; + + arr_Uint16Array = arr_Int8Array; + arr_Uint16Array = arr_Uint8Array; + arr_Uint16Array = arr_Int16Array; + arr_Uint16Array = arr_Uint16Array; + arr_Uint16Array = arr_Int32Array; + arr_Uint16Array = arr_Uint32Array; + arr_Uint16Array = arr_Float32Array; + arr_Uint16Array = arr_Float64Array; + arr_Uint16Array = arr_Uint8ClampedArray; + + arr_Int32Array = arr_Int8Array; + arr_Int32Array = arr_Uint8Array; + arr_Int32Array = arr_Int16Array; + arr_Int32Array = arr_Uint16Array; + arr_Int32Array = arr_Int32Array; + arr_Int32Array = arr_Uint32Array; + arr_Int32Array = arr_Float32Array; + arr_Int32Array = arr_Float64Array; + arr_Int32Array = arr_Uint8ClampedArray; + + arr_Float32Array = arr_Int8Array; + arr_Float32Array = arr_Uint8Array; + arr_Float32Array = arr_Int16Array; + arr_Float32Array = arr_Uint16Array; + arr_Float32Array = arr_Int32Array; + arr_Float32Array = arr_Uint32Array; + arr_Float32Array = arr_Float32Array; + arr_Float32Array = arr_Float64Array; + arr_Float32Array = arr_Uint8ClampedArray; + + arr_Float64Array = arr_Int8Array; + arr_Float64Array = arr_Uint8Array; + arr_Float64Array = arr_Int16Array; + arr_Float64Array = arr_Uint16Array; + arr_Float64Array = arr_Int32Array; + arr_Float64Array = arr_Uint32Array; + arr_Float64Array = arr_Float32Array; + arr_Float64Array = arr_Float64Array; + arr_Float64Array = arr_Uint8ClampedArray; + + arr_Uint8ClampedArray = arr_Int8Array; + arr_Uint8ClampedArray = arr_Uint8Array; + arr_Uint8ClampedArray = arr_Int16Array; + arr_Uint8ClampedArray = arr_Uint16Array; + arr_Uint8ClampedArray = arr_Int32Array; + arr_Uint8ClampedArray = arr_Uint32Array; + arr_Uint8ClampedArray = arr_Float32Array; + arr_Uint8ClampedArray = arr_Float64Array; + arr_Uint8ClampedArray = arr_Uint8ClampedArray; + +} From 5248b2ce033f2a7667620c86b70fc516486352f6 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Tue, 5 Jan 2016 11:41:59 -0500 Subject: [PATCH 133/164] Accepted baselines. --- tests/baselines/reference/typedArrays.js | 5 - tests/baselines/reference/typedArrays.symbols | 241 +++++--- tests/baselines/reference/typedArrays.types | 107 +++- ...typedArraysCrossAssignability01.errors.txt | 545 ++++++++++++++++++ .../typedArraysCrossAssignability01.js | 180 ++++++ 5 files changed, 979 insertions(+), 99 deletions(-) create mode 100644 tests/baselines/reference/typedArraysCrossAssignability01.errors.txt create mode 100644 tests/baselines/reference/typedArraysCrossAssignability01.js diff --git a/tests/baselines/reference/typedArrays.js b/tests/baselines/reference/typedArrays.js index 89e6f43ecae..6159edc1187 100644 --- a/tests/baselines/reference/typedArrays.js +++ b/tests/baselines/reference/typedArrays.js @@ -75,7 +75,6 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { return typedArrays; } -/* function CreateTypedArraysOf(obj) { var typedArrays = []; typedArrays[0] = Int8Array.of(...obj); @@ -90,7 +89,6 @@ function CreateTypedArraysOf(obj) { return typedArrays; } -*/ function CreateTypedArraysOf2() { var typedArrays = []; @@ -203,7 +201,6 @@ function CreateIntegerTypedArraysFromArrayLike(obj) { typedArrays[8] = Uint8ClampedArray.from(obj); return typedArrays; } -/* function CreateTypedArraysOf(obj) { var typedArrays = []; typedArrays[0] = Int8Array.of(...obj); @@ -215,10 +212,8 @@ function CreateTypedArraysOf(obj) { typedArrays[6] = Float32Array.of(...obj); typedArrays[7] = Float64Array.of(...obj); typedArrays[8] = Uint8ClampedArray.of(...obj); - return typedArrays; } -*/ function CreateTypedArraysOf2() { var typedArrays = []; typedArrays[0] = Int8Array.of(1, 2, 3, 4); diff --git a/tests/baselines/reference/typedArrays.symbols b/tests/baselines/reference/typedArrays.symbols index cf5e68b956a..7282e8b8879 100644 --- a/tests/baselines/reference/typedArrays.symbols +++ b/tests/baselines/reference/typedArrays.symbols @@ -307,267 +307,324 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 62, 7)) } -/* function CreateTypedArraysOf(obj) { +>CreateTypedArraysOf : Symbol(CreateTypedArraysOf, Decl(typedArrays.ts, 74, 1)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + var typedArrays = []; +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) + typedArrays[0] = Int8Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[1] = Uint8Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[2] = Int16Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[3] = Uint16Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[4] = Int32Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[5] = Uint32Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[6] = Float32Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[7] = Float64Array.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) + typedArrays[8] = Uint8ClampedArray.of(...obj); +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) +>Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) +>obj : Symbol(obj, Decl(typedArrays.ts, 76, 29)) return typedArrays; +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 77, 7)) } -*/ function CreateTypedArraysOf2() { ->CreateTypedArraysOf2 : Symbol(CreateTypedArraysOf2, Decl(typedArrays.ts, 74, 1)) +>CreateTypedArraysOf2 : Symbol(CreateTypedArraysOf2, Decl(typedArrays.ts, 89, 1)) var typedArrays = []; ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) typedArrays[0] = Int8Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Int8Array.of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Int8ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[1] = Uint8Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Uint8Array.of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Uint8ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[2] = Int16Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Int16Array.of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Int16ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[3] = Uint16Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Uint16Array.of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Uint16ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[4] = Int32Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Int32Array.of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Int32ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[5] = Uint32Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Uint32Array.of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Uint32ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[6] = Float32Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Float32Array.of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Float32ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[7] = Float64Array.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Float64Array.of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) >Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Float64ArrayConstructor.of, Decl(lib.d.ts, --, --)) typedArrays[8] = Uint8ClampedArray.of(1,2,3,4); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) >Uint8ClampedArray.of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) >Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >of : Symbol(Uint8ClampedArrayConstructor.of, Decl(lib.d.ts, --, --)) return typedArrays; ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 94, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 92, 7)) } function CreateTypedArraysFromMapFn(obj:ArrayLike, mapFn: (n:number, v:number)=> number) { ->CreateTypedArraysFromMapFn : Symbol(CreateTypedArraysFromMapFn, Decl(typedArrays.ts, 106, 1)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) +>CreateTypedArraysFromMapFn : Symbol(CreateTypedArraysFromMapFn, Decl(typedArrays.ts, 104, 1)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) >ArrayLike : Symbol(ArrayLike, Decl(lib.d.ts, --, --)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) ->n : Symbol(n, Decl(typedArrays.ts, 108, 67)) ->v : Symbol(v, Decl(typedArrays.ts, 108, 76)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) +>n : Symbol(n, Decl(typedArrays.ts, 106, 67)) +>v : Symbol(v, Decl(typedArrays.ts, 106, 76)) var typedArrays = []; ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) typedArrays[0] = Int8Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[1] = Uint8Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[2] = Int16Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[3] = Uint16Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[4] = Int32Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[5] = Uint32Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[6] = Float32Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[7] = Float64Array.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) typedArrays[8] = Uint8ClampedArray.from(obj, mapFn); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) >Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 108, 36)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 108, 58)) +>obj : Symbol(obj, Decl(typedArrays.ts, 106, 36)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 106, 58)) return typedArrays; ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 109, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 107, 7)) } function CreateTypedArraysFromThisObj(obj:ArrayLike, mapFn: (n:number, v:number)=> number, thisArg: {}) { ->CreateTypedArraysFromThisObj : Symbol(CreateTypedArraysFromThisObj, Decl(typedArrays.ts, 121, 1)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) +>CreateTypedArraysFromThisObj : Symbol(CreateTypedArraysFromThisObj, Decl(typedArrays.ts, 119, 1)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) >ArrayLike : Symbol(ArrayLike, Decl(lib.d.ts, --, --)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->n : Symbol(n, Decl(typedArrays.ts, 123, 69)) ->v : Symbol(v, Decl(typedArrays.ts, 123, 78)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>n : Symbol(n, Decl(typedArrays.ts, 121, 69)) +>v : Symbol(v, Decl(typedArrays.ts, 121, 78)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) var typedArrays = []; ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) typedArrays[0] = Int8Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Int8Array.from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Int8Array : Symbol(Int8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Int8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[1] = Uint8Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Uint8Array.from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint8Array : Symbol(Uint8Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint8ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[2] = Int16Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Int16Array.from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Int16Array : Symbol(Int16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Int16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[3] = Uint16Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Uint16Array.from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint16Array : Symbol(Uint16Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint16ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[4] = Int32Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Int32Array.from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Int32Array : Symbol(Int32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Int32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[5] = Uint32Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Uint32Array.from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint32Array : Symbol(Uint32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[6] = Float32Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Float32Array.from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Float32Array : Symbol(Float32Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Float32ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[7] = Float64Array.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Float64Array.from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Float64Array : Symbol(Float64Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Float64ArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) typedArrays[8] = Uint8ClampedArray.from(obj, mapFn, thisArg); ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) >Uint8ClampedArray.from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) >from : Symbol(Uint8ClampedArrayConstructor.from, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) ->obj : Symbol(obj, Decl(typedArrays.ts, 123, 38)) ->mapFn : Symbol(mapFn, Decl(typedArrays.ts, 123, 60)) ->thisArg : Symbol(thisArg, Decl(typedArrays.ts, 123, 98)) +>obj : Symbol(obj, Decl(typedArrays.ts, 121, 38)) +>mapFn : Symbol(mapFn, Decl(typedArrays.ts, 121, 60)) +>thisArg : Symbol(thisArg, Decl(typedArrays.ts, 121, 98)) return typedArrays; ->typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 124, 7)) +>typedArrays : Symbol(typedArrays, Decl(typedArrays.ts, 122, 7)) } diff --git a/tests/baselines/reference/typedArrays.types b/tests/baselines/reference/typedArrays.types index 9886982c0f2..f7d3cbdd19f 100644 --- a/tests/baselines/reference/typedArrays.types +++ b/tests/baselines/reference/typedArrays.types @@ -483,22 +483,125 @@ function CreateIntegerTypedArraysFromArrayLike(obj:ArrayLike) { >typedArrays : any[] } -/* function CreateTypedArraysOf(obj) { +>CreateTypedArraysOf : (obj: any) => any[] +>obj : any + var typedArrays = []; +>typedArrays : any[] +>[] : undefined[] + typedArrays[0] = Int8Array.of(...obj); +>typedArrays[0] = Int8Array.of(...obj) : Int8Array +>typedArrays[0] : any +>typedArrays : any[] +>0 : number +>Int8Array.of(...obj) : Int8Array +>Int8Array.of : (...items: number[]) => Int8Array +>Int8Array : Int8ArrayConstructor +>of : (...items: number[]) => Int8Array +>...obj : any +>obj : any + typedArrays[1] = Uint8Array.of(...obj); +>typedArrays[1] = Uint8Array.of(...obj) : Uint8Array +>typedArrays[1] : any +>typedArrays : any[] +>1 : number +>Uint8Array.of(...obj) : Uint8Array +>Uint8Array.of : (...items: number[]) => Uint8Array +>Uint8Array : Uint8ArrayConstructor +>of : (...items: number[]) => Uint8Array +>...obj : any +>obj : any + typedArrays[2] = Int16Array.of(...obj); +>typedArrays[2] = Int16Array.of(...obj) : Int16Array +>typedArrays[2] : any +>typedArrays : any[] +>2 : number +>Int16Array.of(...obj) : Int16Array +>Int16Array.of : (...items: number[]) => Int16Array +>Int16Array : Int16ArrayConstructor +>of : (...items: number[]) => Int16Array +>...obj : any +>obj : any + typedArrays[3] = Uint16Array.of(...obj); +>typedArrays[3] = Uint16Array.of(...obj) : Uint16Array +>typedArrays[3] : any +>typedArrays : any[] +>3 : number +>Uint16Array.of(...obj) : Uint16Array +>Uint16Array.of : (...items: number[]) => Uint16Array +>Uint16Array : Uint16ArrayConstructor +>of : (...items: number[]) => Uint16Array +>...obj : any +>obj : any + typedArrays[4] = Int32Array.of(...obj); +>typedArrays[4] = Int32Array.of(...obj) : Int32Array +>typedArrays[4] : any +>typedArrays : any[] +>4 : number +>Int32Array.of(...obj) : Int32Array +>Int32Array.of : (...items: number[]) => Int32Array +>Int32Array : Int32ArrayConstructor +>of : (...items: number[]) => Int32Array +>...obj : any +>obj : any + typedArrays[5] = Uint32Array.of(...obj); +>typedArrays[5] = Uint32Array.of(...obj) : Uint32Array +>typedArrays[5] : any +>typedArrays : any[] +>5 : number +>Uint32Array.of(...obj) : Uint32Array +>Uint32Array.of : (...items: number[]) => Uint32Array +>Uint32Array : Uint32ArrayConstructor +>of : (...items: number[]) => Uint32Array +>...obj : any +>obj : any + typedArrays[6] = Float32Array.of(...obj); +>typedArrays[6] = Float32Array.of(...obj) : Float32Array +>typedArrays[6] : any +>typedArrays : any[] +>6 : number +>Float32Array.of(...obj) : Float32Array +>Float32Array.of : (...items: number[]) => Float32Array +>Float32Array : Float32ArrayConstructor +>of : (...items: number[]) => Float32Array +>...obj : any +>obj : any + typedArrays[7] = Float64Array.of(...obj); +>typedArrays[7] = Float64Array.of(...obj) : Float64Array +>typedArrays[7] : any +>typedArrays : any[] +>7 : number +>Float64Array.of(...obj) : Float64Array +>Float64Array.of : (...items: number[]) => Float64Array +>Float64Array : Float64ArrayConstructor +>of : (...items: number[]) => Float64Array +>...obj : any +>obj : any + typedArrays[8] = Uint8ClampedArray.of(...obj); +>typedArrays[8] = Uint8ClampedArray.of(...obj) : Uint8ClampedArray +>typedArrays[8] : any +>typedArrays : any[] +>8 : number +>Uint8ClampedArray.of(...obj) : Uint8ClampedArray +>Uint8ClampedArray.of : (...items: number[]) => Uint8ClampedArray +>Uint8ClampedArray : Uint8ClampedArrayConstructor +>of : (...items: number[]) => Uint8ClampedArray +>...obj : any +>obj : any return typedArrays; +>typedArrays : any[] } -*/ function CreateTypedArraysOf2() { >CreateTypedArraysOf2 : () => any[] diff --git a/tests/baselines/reference/typedArraysCrossAssignability01.errors.txt b/tests/baselines/reference/typedArraysCrossAssignability01.errors.txt new file mode 100644 index 00000000000..bd3422b4826 --- /dev/null +++ b/tests/baselines/reference/typedArraysCrossAssignability01.errors.txt @@ -0,0 +1,545 @@ +tests/cases/compiler/typedArraysCrossAssignability01.ts(14,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(15,5): error TS2322: Type 'Int16Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(16,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(17,5): error TS2322: Type 'Int32Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(18,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(19,5): error TS2322: Type 'Float32Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(20,5): error TS2322: Type 'Float64Array' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(21,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Int8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"Int8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(23,5): error TS2322: Type 'Int8Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(25,5): error TS2322: Type 'Int16Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(26,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(27,5): error TS2322: Type 'Int32Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(28,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(29,5): error TS2322: Type 'Float32Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(30,5): error TS2322: Type 'Float64Array' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(31,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Uint8Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"UInt8Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(33,5): error TS2322: Type 'Int8Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(34,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(36,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(37,5): error TS2322: Type 'Int32Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(38,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(39,5): error TS2322: Type 'Float32Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(40,5): error TS2322: Type 'Float64Array' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(41,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Int16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"Int16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(43,5): error TS2322: Type 'Int8Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(44,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(45,5): error TS2322: Type 'Int16Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(47,5): error TS2322: Type 'Int32Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(48,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(49,5): error TS2322: Type 'Float32Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(50,5): error TS2322: Type 'Float64Array' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(51,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Uint16Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"Uint16Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(53,5): error TS2322: Type 'Int8Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(54,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(55,5): error TS2322: Type 'Int16Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(56,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(58,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(59,5): error TS2322: Type 'Float32Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(60,5): error TS2322: Type 'Float64Array' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(61,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Int32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"Int32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(63,5): error TS2322: Type 'Int8Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(64,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(65,5): error TS2322: Type 'Int16Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(66,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(67,5): error TS2322: Type 'Int32Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(68,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(70,5): error TS2322: Type 'Float64Array' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(71,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Float32Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"Float32Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(73,5): error TS2322: Type 'Int8Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(74,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(75,5): error TS2322: Type 'Int16Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(76,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(77,5): error TS2322: Type 'Int32Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(78,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(79,5): error TS2322: Type 'Float32Array' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(81,5): error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Float64Array'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint8ClampedArray"' is not assignable to type '"Float64Array"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(83,5): error TS2322: Type 'Int8Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int8Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(84,5): error TS2322: Type 'Uint8Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"UInt8Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(85,5): error TS2322: Type 'Int16Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int16Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(86,5): error TS2322: Type 'Uint16Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint16Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(87,5): error TS2322: Type 'Int32Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Int32Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(88,5): error TS2322: Type 'Uint32Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Uint32Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(89,5): error TS2322: Type 'Float32Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float32Array"' is not assignable to type '"Uint8ClampedArray"'. +tests/cases/compiler/typedArraysCrossAssignability01.ts(90,5): error TS2322: Type 'Float64Array' is not assignable to type 'Uint8ClampedArray'. + Types of property '[Symbol.toStringTag]' are incompatible. + Type '"Float64Array"' is not assignable to type '"Uint8ClampedArray"'. + + +==== tests/cases/compiler/typedArraysCrossAssignability01.ts (64 errors) ==== + + function CheckAssignability() { + let arr_Int8Array = new Int8Array(1); + let arr_Uint8Array = new Uint8Array(1); + let arr_Int16Array = new Int16Array(1); + let arr_Uint16Array = new Uint16Array(1); + let arr_Int32Array = new Int32Array(1); + let arr_Uint32Array = new Uint32Array(1); + let arr_Float32Array = new Float32Array(1); + let arr_Float64Array = new Float64Array(1); + let arr_Uint8ClampedArray = new Uint8ClampedArray(1); + + arr_Int8Array = arr_Int8Array; + arr_Int8Array = arr_Uint8Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Int16Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Uint16Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Int32Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Uint32Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Float32Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Float64Array; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"Int8Array"'. + arr_Int8Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Int8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"Int8Array"'. + + arr_Uint8Array = arr_Int8Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Uint8Array; + arr_Uint8Array = arr_Int16Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Uint16Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Int32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Uint32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Float32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Float64Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"UInt8Array"'. + arr_Uint8Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Uint8Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"UInt8Array"'. + + arr_Int16Array = arr_Int8Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Uint8Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Int16Array; + arr_Int16Array = arr_Uint16Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Int32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Uint32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Float32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Float64Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"Int16Array"'. + arr_Int16Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Int16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"Int16Array"'. + + arr_Uint16Array = arr_Int8Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Uint8Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Int16Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Uint16Array; + arr_Uint16Array = arr_Int32Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Uint32Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Float32Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Float64Array; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"Uint16Array"'. + arr_Uint16Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Uint16Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"Uint16Array"'. + + arr_Int32Array = arr_Int8Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Uint8Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Int16Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Uint16Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Int32Array; + arr_Int32Array = arr_Uint32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Float32Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Float64Array; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"Int32Array"'. + arr_Int32Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Int32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"Int32Array"'. + + arr_Float32Array = arr_Int8Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Uint8Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Int16Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Uint16Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Int32Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Uint32Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Float32Array; + arr_Float32Array = arr_Float64Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"Float32Array"'. + arr_Float32Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Float32Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"Float32Array"'. + + arr_Float64Array = arr_Int8Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Uint8Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Int16Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Uint16Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Int32Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Uint32Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Float32Array; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"Float64Array"'. + arr_Float64Array = arr_Float64Array; + arr_Float64Array = arr_Uint8ClampedArray; + ~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8ClampedArray' is not assignable to type 'Float64Array'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint8ClampedArray"' is not assignable to type '"Float64Array"'. + + arr_Uint8ClampedArray = arr_Int8Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int8Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int8Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Uint8Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint8Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"UInt8Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Int16Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int16Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int16Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Uint16Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint16Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint16Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Int32Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Int32Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Int32Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Uint32Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Uint32Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Uint32Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Float32Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float32Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float32Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Float64Array; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'Float64Array' is not assignable to type 'Uint8ClampedArray'. +!!! error TS2322: Types of property '[Symbol.toStringTag]' are incompatible. +!!! error TS2322: Type '"Float64Array"' is not assignable to type '"Uint8ClampedArray"'. + arr_Uint8ClampedArray = arr_Uint8ClampedArray; + + } + \ No newline at end of file diff --git a/tests/baselines/reference/typedArraysCrossAssignability01.js b/tests/baselines/reference/typedArraysCrossAssignability01.js new file mode 100644 index 00000000000..9572bfcaf59 --- /dev/null +++ b/tests/baselines/reference/typedArraysCrossAssignability01.js @@ -0,0 +1,180 @@ +//// [typedArraysCrossAssignability01.ts] + +function CheckAssignability() { + let arr_Int8Array = new Int8Array(1); + let arr_Uint8Array = new Uint8Array(1); + let arr_Int16Array = new Int16Array(1); + let arr_Uint16Array = new Uint16Array(1); + let arr_Int32Array = new Int32Array(1); + let arr_Uint32Array = new Uint32Array(1); + let arr_Float32Array = new Float32Array(1); + let arr_Float64Array = new Float64Array(1); + let arr_Uint8ClampedArray = new Uint8ClampedArray(1); + + arr_Int8Array = arr_Int8Array; + arr_Int8Array = arr_Uint8Array; + arr_Int8Array = arr_Int16Array; + arr_Int8Array = arr_Uint16Array; + arr_Int8Array = arr_Int32Array; + arr_Int8Array = arr_Uint32Array; + arr_Int8Array = arr_Float32Array; + arr_Int8Array = arr_Float64Array; + arr_Int8Array = arr_Uint8ClampedArray; + + arr_Uint8Array = arr_Int8Array; + arr_Uint8Array = arr_Uint8Array; + arr_Uint8Array = arr_Int16Array; + arr_Uint8Array = arr_Uint16Array; + arr_Uint8Array = arr_Int32Array; + arr_Uint8Array = arr_Uint32Array; + arr_Uint8Array = arr_Float32Array; + arr_Uint8Array = arr_Float64Array; + arr_Uint8Array = arr_Uint8ClampedArray; + + arr_Int16Array = arr_Int8Array; + arr_Int16Array = arr_Uint8Array; + arr_Int16Array = arr_Int16Array; + arr_Int16Array = arr_Uint16Array; + arr_Int16Array = arr_Int32Array; + arr_Int16Array = arr_Uint32Array; + arr_Int16Array = arr_Float32Array; + arr_Int16Array = arr_Float64Array; + arr_Int16Array = arr_Uint8ClampedArray; + + arr_Uint16Array = arr_Int8Array; + arr_Uint16Array = arr_Uint8Array; + arr_Uint16Array = arr_Int16Array; + arr_Uint16Array = arr_Uint16Array; + arr_Uint16Array = arr_Int32Array; + arr_Uint16Array = arr_Uint32Array; + arr_Uint16Array = arr_Float32Array; + arr_Uint16Array = arr_Float64Array; + arr_Uint16Array = arr_Uint8ClampedArray; + + arr_Int32Array = arr_Int8Array; + arr_Int32Array = arr_Uint8Array; + arr_Int32Array = arr_Int16Array; + arr_Int32Array = arr_Uint16Array; + arr_Int32Array = arr_Int32Array; + arr_Int32Array = arr_Uint32Array; + arr_Int32Array = arr_Float32Array; + arr_Int32Array = arr_Float64Array; + arr_Int32Array = arr_Uint8ClampedArray; + + arr_Float32Array = arr_Int8Array; + arr_Float32Array = arr_Uint8Array; + arr_Float32Array = arr_Int16Array; + arr_Float32Array = arr_Uint16Array; + arr_Float32Array = arr_Int32Array; + arr_Float32Array = arr_Uint32Array; + arr_Float32Array = arr_Float32Array; + arr_Float32Array = arr_Float64Array; + arr_Float32Array = arr_Uint8ClampedArray; + + arr_Float64Array = arr_Int8Array; + arr_Float64Array = arr_Uint8Array; + arr_Float64Array = arr_Int16Array; + arr_Float64Array = arr_Uint16Array; + arr_Float64Array = arr_Int32Array; + arr_Float64Array = arr_Uint32Array; + arr_Float64Array = arr_Float32Array; + arr_Float64Array = arr_Float64Array; + arr_Float64Array = arr_Uint8ClampedArray; + + arr_Uint8ClampedArray = arr_Int8Array; + arr_Uint8ClampedArray = arr_Uint8Array; + arr_Uint8ClampedArray = arr_Int16Array; + arr_Uint8ClampedArray = arr_Uint16Array; + arr_Uint8ClampedArray = arr_Int32Array; + arr_Uint8ClampedArray = arr_Uint32Array; + arr_Uint8ClampedArray = arr_Float32Array; + arr_Uint8ClampedArray = arr_Float64Array; + arr_Uint8ClampedArray = arr_Uint8ClampedArray; + +} + + +//// [typedArraysCrossAssignability01.js] +function CheckAssignability() { + let arr_Int8Array = new Int8Array(1); + let arr_Uint8Array = new Uint8Array(1); + let arr_Int16Array = new Int16Array(1); + let arr_Uint16Array = new Uint16Array(1); + let arr_Int32Array = new Int32Array(1); + let arr_Uint32Array = new Uint32Array(1); + let arr_Float32Array = new Float32Array(1); + let arr_Float64Array = new Float64Array(1); + let arr_Uint8ClampedArray = new Uint8ClampedArray(1); + arr_Int8Array = arr_Int8Array; + arr_Int8Array = arr_Uint8Array; + arr_Int8Array = arr_Int16Array; + arr_Int8Array = arr_Uint16Array; + arr_Int8Array = arr_Int32Array; + arr_Int8Array = arr_Uint32Array; + arr_Int8Array = arr_Float32Array; + arr_Int8Array = arr_Float64Array; + arr_Int8Array = arr_Uint8ClampedArray; + arr_Uint8Array = arr_Int8Array; + arr_Uint8Array = arr_Uint8Array; + arr_Uint8Array = arr_Int16Array; + arr_Uint8Array = arr_Uint16Array; + arr_Uint8Array = arr_Int32Array; + arr_Uint8Array = arr_Uint32Array; + arr_Uint8Array = arr_Float32Array; + arr_Uint8Array = arr_Float64Array; + arr_Uint8Array = arr_Uint8ClampedArray; + arr_Int16Array = arr_Int8Array; + arr_Int16Array = arr_Uint8Array; + arr_Int16Array = arr_Int16Array; + arr_Int16Array = arr_Uint16Array; + arr_Int16Array = arr_Int32Array; + arr_Int16Array = arr_Uint32Array; + arr_Int16Array = arr_Float32Array; + arr_Int16Array = arr_Float64Array; + arr_Int16Array = arr_Uint8ClampedArray; + arr_Uint16Array = arr_Int8Array; + arr_Uint16Array = arr_Uint8Array; + arr_Uint16Array = arr_Int16Array; + arr_Uint16Array = arr_Uint16Array; + arr_Uint16Array = arr_Int32Array; + arr_Uint16Array = arr_Uint32Array; + arr_Uint16Array = arr_Float32Array; + arr_Uint16Array = arr_Float64Array; + arr_Uint16Array = arr_Uint8ClampedArray; + arr_Int32Array = arr_Int8Array; + arr_Int32Array = arr_Uint8Array; + arr_Int32Array = arr_Int16Array; + arr_Int32Array = arr_Uint16Array; + arr_Int32Array = arr_Int32Array; + arr_Int32Array = arr_Uint32Array; + arr_Int32Array = arr_Float32Array; + arr_Int32Array = arr_Float64Array; + arr_Int32Array = arr_Uint8ClampedArray; + arr_Float32Array = arr_Int8Array; + arr_Float32Array = arr_Uint8Array; + arr_Float32Array = arr_Int16Array; + arr_Float32Array = arr_Uint16Array; + arr_Float32Array = arr_Int32Array; + arr_Float32Array = arr_Uint32Array; + arr_Float32Array = arr_Float32Array; + arr_Float32Array = arr_Float64Array; + arr_Float32Array = arr_Uint8ClampedArray; + arr_Float64Array = arr_Int8Array; + arr_Float64Array = arr_Uint8Array; + arr_Float64Array = arr_Int16Array; + arr_Float64Array = arr_Uint16Array; + arr_Float64Array = arr_Int32Array; + arr_Float64Array = arr_Uint32Array; + arr_Float64Array = arr_Float32Array; + arr_Float64Array = arr_Float64Array; + arr_Float64Array = arr_Uint8ClampedArray; + arr_Uint8ClampedArray = arr_Int8Array; + arr_Uint8ClampedArray = arr_Uint8Array; + arr_Uint8ClampedArray = arr_Int16Array; + arr_Uint8ClampedArray = arr_Uint16Array; + arr_Uint8ClampedArray = arr_Int32Array; + arr_Uint8ClampedArray = arr_Uint32Array; + arr_Uint8ClampedArray = arr_Float32Array; + arr_Uint8ClampedArray = arr_Float64Array; + arr_Uint8ClampedArray = arr_Uint8ClampedArray; +} From dbe8489087b70d7401d902a720af0e2415c23c0a Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 5 Jan 2016 10:28:32 -0800 Subject: [PATCH 134/164] Revert "Merge pull request #6098 from guybedford/master" This reverts commit 996f16940e3d10a3fe0fb018defa78ce869021ee, reversing changes made to 51fd41b0c7b0f38335f8a2de6f5cd66b278c5a9c. --- src/compiler/emitter.ts | 2 +- tests/baselines/reference/aliasesInSystemModule1.js | 2 +- tests/baselines/reference/aliasesInSystemModule2.js | 2 +- .../reference/allowSyntheticDefaultImports2.js | 4 ++-- .../reference/allowSyntheticDefaultImports3.js | 4 ++-- .../reference/allowSyntheticDefaultImports5.js | 2 +- .../reference/allowSyntheticDefaultImports6.js | 2 +- .../reference/anonymousDefaultExportsSystem.js | 4 ++-- tests/baselines/reference/capturedLetConstInLoop4.js | 2 +- .../decoratedDefaultExportsGetExportedSystem.js | 4 ++-- .../reference/defaultExportsGetExportedSystem.js | 4 ++-- tests/baselines/reference/es5-system.js | 2 +- .../reference/exportNonInitializedVariablesSystem.js | 2 +- tests/baselines/reference/exportStarForValues10.js | 6 +++--- tests/baselines/reference/exportStarForValues6.js | 4 ++-- .../reference/exportStarForValuesInSystem.js | 4 ++-- .../reference/isolatedModulesPlainFile-System.js | 2 +- tests/baselines/reference/modulePrologueSystem.js | 2 +- .../reference/outFilerootDirModuleNamesSystem.js | 4 ++-- tests/baselines/reference/outModuleConcatSystem.js | 4 ++-- .../reference/outModuleConcatSystem.sourcemap.txt | 4 ++-- .../prefixUnaryOperatorsOnExportedVariables.js | 2 +- tests/baselines/reference/systemExportAssignment.js | 2 +- tests/baselines/reference/systemExportAssignment2.js | 4 ++-- tests/baselines/reference/systemExportAssignment3.js | 2 +- tests/baselines/reference/systemModule1.js | 2 +- tests/baselines/reference/systemModule10.js | 2 +- tests/baselines/reference/systemModule10_ES5.js | 2 +- tests/baselines/reference/systemModule11.js | 10 +++++----- tests/baselines/reference/systemModule12.js | 2 +- tests/baselines/reference/systemModule13.js | 2 +- tests/baselines/reference/systemModule14.js | 2 +- tests/baselines/reference/systemModule15.js | 8 ++++---- tests/baselines/reference/systemModule16.js | 2 +- tests/baselines/reference/systemModule17.js | 4 ++-- tests/baselines/reference/systemModule2.js | 2 +- tests/baselines/reference/systemModule3.js | 8 ++++---- tests/baselines/reference/systemModule4.js | 2 +- tests/baselines/reference/systemModule5.js | 2 +- tests/baselines/reference/systemModule6.js | 2 +- tests/baselines/reference/systemModule7.js | 2 +- tests/baselines/reference/systemModule8.js | 2 +- tests/baselines/reference/systemModule9.js | 2 +- .../reference/systemModuleAmbientDeclarations.js | 12 ++++++------ tests/baselines/reference/systemModuleConstEnums.js | 2 +- .../systemModuleConstEnumsSeparateCompilation.js | 2 +- .../reference/systemModuleDeclarationMerging.js | 2 +- .../baselines/reference/systemModuleExportDefault.js | 8 ++++---- .../systemModuleNonTopLevelModuleMembers.js | 2 +- .../reference/systemModuleWithSuperClass.js | 4 ++-- tests/cases/unittests/transpile.ts | 4 ++-- 51 files changed, 85 insertions(+), 85 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index d412225cdf0..174ddb68546 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6990,7 +6990,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write(text); } - write(`], function(${exportFunctionForFile}, __moduleName) {`); + write(`], function(${exportFunctionForFile}) {`); writeLine(); increaseIndent(); const startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); diff --git a/tests/baselines/reference/aliasesInSystemModule1.js b/tests/baselines/reference/aliasesInSystemModule1.js index 11f02c18ea4..43037c7634c 100644 --- a/tests/baselines/reference/aliasesInSystemModule1.js +++ b/tests/baselines/reference/aliasesInSystemModule1.js @@ -17,7 +17,7 @@ module M { //// [aliasesInSystemModule1.js] -System.register(['foo'], function(exports_1, __moduleName) { +System.register(['foo'], function(exports_1) { "use strict"; var alias; var cls, cls2, x, y, z, M; diff --git a/tests/baselines/reference/aliasesInSystemModule2.js b/tests/baselines/reference/aliasesInSystemModule2.js index 7378536e2fd..7effb2721be 100644 --- a/tests/baselines/reference/aliasesInSystemModule2.js +++ b/tests/baselines/reference/aliasesInSystemModule2.js @@ -16,7 +16,7 @@ module M { } //// [aliasesInSystemModule2.js] -System.register(["foo"], function(exports_1, __moduleName) { +System.register(["foo"], function(exports_1) { "use strict"; var foo_1; var cls, cls2, x, y, z, M; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports2.js b/tests/baselines/reference/allowSyntheticDefaultImports2.js index 0480250d71a..fcc029415cf 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports2.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports2.js @@ -10,7 +10,7 @@ export class Foo { } //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var Foo; return { @@ -26,7 +26,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [a.js] -System.register(["./b"], function(exports_1, __moduleName) { +System.register(["./b"], function(exports_1) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports3.js b/tests/baselines/reference/allowSyntheticDefaultImports3.js index adf85792fd9..b14d25dbd61 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports3.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports3.js @@ -11,7 +11,7 @@ export class Foo { //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var Foo; return { @@ -27,7 +27,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [a.js] -System.register(["./b"], function(exports_1, __moduleName) { +System.register(["./b"], function(exports_1) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports5.js b/tests/baselines/reference/allowSyntheticDefaultImports5.js index d0dfdcb76d1..c9121512b61 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports5.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports5.js @@ -12,7 +12,7 @@ export var x = new Foo(); //// [a.js] -System.register(["./b"], function(exports_1, __moduleName) { +System.register(["./b"], function(exports_1) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/allowSyntheticDefaultImports6.js b/tests/baselines/reference/allowSyntheticDefaultImports6.js index eaafb5ee276..64d52e70af9 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports6.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports6.js @@ -12,7 +12,7 @@ export var x = new Foo(); //// [a.js] -System.register(["./b"], function(exports_1, __moduleName) { +System.register(["./b"], function(exports_1) { "use strict"; var b_1; var x; diff --git a/tests/baselines/reference/anonymousDefaultExportsSystem.js b/tests/baselines/reference/anonymousDefaultExportsSystem.js index 4ee7e2a11bc..74913a57a99 100644 --- a/tests/baselines/reference/anonymousDefaultExportsSystem.js +++ b/tests/baselines/reference/anonymousDefaultExportsSystem.js @@ -7,7 +7,7 @@ export default class {} export default function() {} //// [a.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var default_1; return { @@ -20,7 +20,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function default_1() { } exports_1("default", default_1); diff --git a/tests/baselines/reference/capturedLetConstInLoop4.js b/tests/baselines/reference/capturedLetConstInLoop4.js index c2d2c998616..724c84fe04f 100644 --- a/tests/baselines/reference/capturedLetConstInLoop4.js +++ b/tests/baselines/reference/capturedLetConstInLoop4.js @@ -144,7 +144,7 @@ for (const y = 0; y < 1;) { //// [capturedLetConstInLoop4.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var v0, v00, v1, v2, v3, v4, v5, v6, v7, v8, v0_c, v00_c, v1_c, v2_c, v3_c, v4_c, v5_c, v6_c, v7_c, v8_c; //======let diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js index be20d5ffc12..ed322374799 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedSystem.js @@ -13,7 +13,7 @@ var decorator: ClassDecorator; export default class {} //// [a.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; @@ -35,7 +35,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; diff --git a/tests/baselines/reference/defaultExportsGetExportedSystem.js b/tests/baselines/reference/defaultExportsGetExportedSystem.js index f67ccb6ee23..67dc47f4bd5 100644 --- a/tests/baselines/reference/defaultExportsGetExportedSystem.js +++ b/tests/baselines/reference/defaultExportsGetExportedSystem.js @@ -8,7 +8,7 @@ export default function foo() {} //// [a.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var Foo; return { @@ -21,7 +21,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function foo() { } exports_1("default", foo); diff --git a/tests/baselines/reference/es5-system.js b/tests/baselines/reference/es5-system.js index 1cd1dac13d1..a9633352b8b 100644 --- a/tests/baselines/reference/es5-system.js +++ b/tests/baselines/reference/es5-system.js @@ -15,7 +15,7 @@ export default class A //// [es5-system.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var A; return { diff --git a/tests/baselines/reference/exportNonInitializedVariablesSystem.js b/tests/baselines/reference/exportNonInitializedVariablesSystem.js index 53d8a5424ef..b5674bf5ce3 100644 --- a/tests/baselines/reference/exportNonInitializedVariablesSystem.js +++ b/tests/baselines/reference/exportNonInitializedVariablesSystem.js @@ -35,7 +35,7 @@ export let h1: D = new D; //// [exportNonInitializedVariablesSystem.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var a, b, c, d, A, e, f, B, C, a1, b1, c1, d1, D, e1, f1, g1, h1; return { diff --git a/tests/baselines/reference/exportStarForValues10.js b/tests/baselines/reference/exportStarForValues10.js index 1149baf8b27..dca5dad9b7a 100644 --- a/tests/baselines/reference/exportStarForValues10.js +++ b/tests/baselines/reference/exportStarForValues10.js @@ -13,7 +13,7 @@ export * from "file1"; var x = 1; //// [file0.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var v; return { @@ -24,7 +24,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -33,7 +33,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register(["file0"], function(exports_1, __moduleName) { +System.register(["file0"], function(exports_1) { "use strict"; var x; function exportStar_1(m) { diff --git a/tests/baselines/reference/exportStarForValues6.js b/tests/baselines/reference/exportStarForValues6.js index f2257277630..69357d87ee0 100644 --- a/tests/baselines/reference/exportStarForValues6.js +++ b/tests/baselines/reference/exportStarForValues6.js @@ -9,7 +9,7 @@ export * from "file1" export var x = 1; //// [file1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -18,7 +18,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x; return { diff --git a/tests/baselines/reference/exportStarForValuesInSystem.js b/tests/baselines/reference/exportStarForValuesInSystem.js index 33ca1f8b24d..a33465f7e2e 100644 --- a/tests/baselines/reference/exportStarForValuesInSystem.js +++ b/tests/baselines/reference/exportStarForValuesInSystem.js @@ -9,7 +9,7 @@ export * from "file1" var x = 1; //// [file1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -18,7 +18,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x; return { diff --git a/tests/baselines/reference/isolatedModulesPlainFile-System.js b/tests/baselines/reference/isolatedModulesPlainFile-System.js index 44eec5161c0..b66bd497810 100644 --- a/tests/baselines/reference/isolatedModulesPlainFile-System.js +++ b/tests/baselines/reference/isolatedModulesPlainFile-System.js @@ -5,7 +5,7 @@ run(1); //// [isolatedModulesPlainFile-System.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/modulePrologueSystem.js b/tests/baselines/reference/modulePrologueSystem.js index 04519898166..80a46fb27fc 100644 --- a/tests/baselines/reference/modulePrologueSystem.js +++ b/tests/baselines/reference/modulePrologueSystem.js @@ -4,7 +4,7 @@ export class Foo {} //// [modulePrologueSystem.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var Foo; return { diff --git a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js index e6ac346dc7f..298ad52689f 100644 --- a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js +++ b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js @@ -11,7 +11,7 @@ export default function foo() { new Foo(); } //// [output.js] -System.register("b", ["a"], function(exports_1, __moduleName) { +System.register("b", ["a"], function(exports_1) { "use strict"; var a_1; function foo() { new a_1.default(); } @@ -25,7 +25,7 @@ System.register("b", ["a"], function(exports_1, __moduleName) { } } }); -System.register("a", ["b"], function(exports_2, __moduleName) { +System.register("a", ["b"], function(exports_2) { "use strict"; var b_1; var Foo; diff --git a/tests/baselines/reference/outModuleConcatSystem.js b/tests/baselines/reference/outModuleConcatSystem.js index bd2753c6d5f..d4552d33167 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("ref/a", [], function(exports_1, __moduleName) { +System.register("ref/a", [], function(exports_1) { "use strict"; var A; return { @@ -29,7 +29,7 @@ System.register("ref/a", [], function(exports_1, __moduleName) { } } }); -System.register("b", ["ref/a"], function(exports_2, __moduleName) { +System.register("b", ["ref/a"], function(exports_2) { "use strict"; var a_1; var B; diff --git a/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt b/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt index 0b1f9cc5294..e3f521c828c 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("ref/a", [], function(exports_1, __moduleName) { +>>>System.register("ref/a", [], function(exports_1) { >>> "use strict"; >>> var A; >>> return { @@ -82,7 +82,7 @@ sourceFile:tests/cases/compiler/b.ts >>> } >>> } >>>}); ->>>System.register("b", ["ref/a"], function(exports_2, __moduleName) { +>>>System.register("b", ["ref/a"], function(exports_2) { >>> "use strict"; >>> var a_1; >>> var B; diff --git a/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js b/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js index a3b70bde6d5..5d414c97d05 100644 --- a/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js +++ b/tests/baselines/reference/prefixUnaryOperatorsOnExportedVariables.js @@ -31,7 +31,7 @@ if (++y) { } //// [prefixUnaryOperatorsOnExportedVariables.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x, y; return { diff --git a/tests/baselines/reference/systemExportAssignment.js b/tests/baselines/reference/systemExportAssignment.js index f8b50cb580f..72962cf835c 100644 --- a/tests/baselines/reference/systemExportAssignment.js +++ b/tests/baselines/reference/systemExportAssignment.js @@ -10,7 +10,7 @@ import * as a from "a"; //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemExportAssignment2.js b/tests/baselines/reference/systemExportAssignment2.js index 6a5c0e8f397..0f4dd712493 100644 --- a/tests/baselines/reference/systemExportAssignment2.js +++ b/tests/baselines/reference/systemExportAssignment2.js @@ -10,7 +10,7 @@ import * as a from "a"; //// [a.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var a; return { @@ -21,7 +21,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemExportAssignment3.js b/tests/baselines/reference/systemExportAssignment3.js index 9c6d3cdbb2f..ca2492a54e1 100644 --- a/tests/baselines/reference/systemExportAssignment3.js +++ b/tests/baselines/reference/systemExportAssignment3.js @@ -12,7 +12,7 @@ import * as a from "a"; //// [b.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemModule1.js b/tests/baselines/reference/systemModule1.js index 749d8170dcb..52f3b482069 100644 --- a/tests/baselines/reference/systemModule1.js +++ b/tests/baselines/reference/systemModule1.js @@ -3,7 +3,7 @@ export var x = 1; //// [systemModule1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x; return { diff --git a/tests/baselines/reference/systemModule10.js b/tests/baselines/reference/systemModule10.js index f23e7ca1d76..ac32c4948e7 100644 --- a/tests/baselines/reference/systemModule10.js +++ b/tests/baselines/reference/systemModule10.js @@ -10,7 +10,7 @@ export {n2} export {n2 as n3} //// [systemModule10.js] -System.register(['file1', 'file2'], function(exports_1, __moduleName) { +System.register(['file1', 'file2'], function(exports_1) { "use strict"; var file1_1, n2; return { diff --git a/tests/baselines/reference/systemModule10_ES5.js b/tests/baselines/reference/systemModule10_ES5.js index 3d63e092df4..0c98df6ba99 100644 --- a/tests/baselines/reference/systemModule10_ES5.js +++ b/tests/baselines/reference/systemModule10_ES5.js @@ -10,7 +10,7 @@ export {n2} export {n2 as n3} //// [systemModule10_ES5.js] -System.register(['file1', 'file2'], function(exports_1, __moduleName) { +System.register(['file1', 'file2'], function(exports_1) { "use strict"; var file1_1, n2; return { diff --git a/tests/baselines/reference/systemModule11.js b/tests/baselines/reference/systemModule11.js index 1e755a86541..92b0576b919 100644 --- a/tests/baselines/reference/systemModule11.js +++ b/tests/baselines/reference/systemModule11.js @@ -42,7 +42,7 @@ export * from 'a'; //// [file1.js] // set of tests cases that checks generation of local storage for exported names -System.register(['bar'], function(exports_1, __moduleName) { +System.register(['bar'], function(exports_1) { "use strict"; var x; function foo() { } @@ -68,7 +68,7 @@ System.register(['bar'], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register(['bar'], function(exports_1, __moduleName) { +System.register(['bar'], function(exports_1) { "use strict"; var x, y; var exportedNames_1 = { @@ -94,7 +94,7 @@ System.register(['bar'], function(exports_1, __moduleName) { } }); //// [file3.js] -System.register(['a', 'bar'], function(exports_1, __moduleName) { +System.register(['a', 'bar'], function(exports_1) { "use strict"; function foo() { } exports_1("default", foo); @@ -125,7 +125,7 @@ System.register(['a', 'bar'], function(exports_1, __moduleName) { } }); //// [file4.js] -System.register(['a'], function(exports_1, __moduleName) { +System.register(['a'], function(exports_1) { "use strict"; var x, z, z1; function foo() { } @@ -147,7 +147,7 @@ System.register(['a'], function(exports_1, __moduleName) { } }); //// [file5.js] -System.register(['a'], function(exports_1, __moduleName) { +System.register(['a'], function(exports_1) { "use strict"; function foo() { } function exportStar_1(m) { diff --git a/tests/baselines/reference/systemModule12.js b/tests/baselines/reference/systemModule12.js index 04252396926..d8961c3b001 100644 --- a/tests/baselines/reference/systemModule12.js +++ b/tests/baselines/reference/systemModule12.js @@ -5,7 +5,7 @@ import n from 'file1' //// [systemModule12.js] -System.register("NamedModule", [], function(exports_1, __moduleName) { +System.register("NamedModule", [], function(exports_1) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemModule13.js b/tests/baselines/reference/systemModule13.js index 509534ee0fe..0b81a946de4 100644 --- a/tests/baselines/reference/systemModule13.js +++ b/tests/baselines/reference/systemModule13.js @@ -5,7 +5,7 @@ export const {a: z0, b: {c: z1}} = {a: true, b: {c: "123"}}; for ([x] of [[1]]) {} //// [systemModule13.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x, y, z, z0, z1; return { diff --git a/tests/baselines/reference/systemModule14.js b/tests/baselines/reference/systemModule14.js index af78af7f6b1..2ec8fc600f4 100644 --- a/tests/baselines/reference/systemModule14.js +++ b/tests/baselines/reference/systemModule14.js @@ -11,7 +11,7 @@ var x = 1; export {foo as b} //// [systemModule14.js] -System.register(["foo"], function(exports_1, __moduleName) { +System.register(["foo"], function(exports_1) { "use strict"; var foo_1; var x; diff --git a/tests/baselines/reference/systemModule15.js b/tests/baselines/reference/systemModule15.js index f347ad59671..f8dc11b0ac7 100644 --- a/tests/baselines/reference/systemModule15.js +++ b/tests/baselines/reference/systemModule15.js @@ -34,7 +34,7 @@ export default value; export var value2 = "v"; //// [file3.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var value; return { @@ -46,7 +46,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file4.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var value2; return { @@ -57,7 +57,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register(["./file3"], function(exports_1, __moduleName) { +System.register(["./file3"], function(exports_1) { "use strict"; var moduleCStar, file3_1, file3_2; return { @@ -75,7 +75,7 @@ System.register(["./file3"], function(exports_1, __moduleName) { } }); //// [file1.js] -System.register(["./file2"], function(exports_1, __moduleName) { +System.register(["./file2"], function(exports_1) { "use strict"; var moduleB; return { diff --git a/tests/baselines/reference/systemModule16.js b/tests/baselines/reference/systemModule16.js index 0986218b65d..76fb85cd3ae 100644 --- a/tests/baselines/reference/systemModule16.js +++ b/tests/baselines/reference/systemModule16.js @@ -13,7 +13,7 @@ x,y,a1,b1,d1; //// [systemModule16.js] -System.register(["foo", "bar"], function(exports_1, __moduleName) { +System.register(["foo", "bar"], function(exports_1) { "use strict"; var x, y, foo_1; var exportedNames_1 = { diff --git a/tests/baselines/reference/systemModule17.js b/tests/baselines/reference/systemModule17.js index b441004408b..6daa119d287 100644 --- a/tests/baselines/reference/systemModule17.js +++ b/tests/baselines/reference/systemModule17.js @@ -42,7 +42,7 @@ export {II}; export {II as II1}; //// [f1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var A; return { @@ -58,7 +58,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [f2.js] -System.register(["f1"], function(exports_1, __moduleName) { +System.register(["f1"], function(exports_1) { "use strict"; var f1_1; var x, N, IX; diff --git a/tests/baselines/reference/systemModule2.js b/tests/baselines/reference/systemModule2.js index 78be2c008e4..ee3dfd327ec 100644 --- a/tests/baselines/reference/systemModule2.js +++ b/tests/baselines/reference/systemModule2.js @@ -4,7 +4,7 @@ var x = 1; export = x; //// [systemModule2.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x; return { diff --git a/tests/baselines/reference/systemModule3.js b/tests/baselines/reference/systemModule3.js index 9ccc5ea7894..dbef74f3036 100644 --- a/tests/baselines/reference/systemModule3.js +++ b/tests/baselines/reference/systemModule3.js @@ -18,7 +18,7 @@ export default class C {} export default class {} //// [file1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function default_1() { } exports_1("default", default_1); @@ -29,7 +29,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function f() { } exports_1("default", f); @@ -40,7 +40,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file3.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var C; return { @@ -56,7 +56,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file4.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var default_1; return { diff --git a/tests/baselines/reference/systemModule4.js b/tests/baselines/reference/systemModule4.js index 526ee5d2c3a..192c87d49ea 100644 --- a/tests/baselines/reference/systemModule4.js +++ b/tests/baselines/reference/systemModule4.js @@ -4,7 +4,7 @@ export var x = 1; export var y; //// [systemModule4.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x, y; return { diff --git a/tests/baselines/reference/systemModule5.js b/tests/baselines/reference/systemModule5.js index 6d6a8e52823..4a455f25b13 100644 --- a/tests/baselines/reference/systemModule5.js +++ b/tests/baselines/reference/systemModule5.js @@ -4,7 +4,7 @@ export function foo() {} //// [systemModule5.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function foo() { } exports_1("foo", foo); diff --git a/tests/baselines/reference/systemModule6.js b/tests/baselines/reference/systemModule6.js index d93b1b861e0..51c8fbc68fb 100644 --- a/tests/baselines/reference/systemModule6.js +++ b/tests/baselines/reference/systemModule6.js @@ -7,7 +7,7 @@ function foo() { //// [systemModule6.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var C; function foo() { diff --git a/tests/baselines/reference/systemModule7.js b/tests/baselines/reference/systemModule7.js index 6abf76cf075..d76d86a3b0f 100644 --- a/tests/baselines/reference/systemModule7.js +++ b/tests/baselines/reference/systemModule7.js @@ -11,7 +11,7 @@ export module M { } //// [systemModule7.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var M; return { diff --git a/tests/baselines/reference/systemModule8.js b/tests/baselines/reference/systemModule8.js index 6d48a4a9d45..b6cdd677f00 100644 --- a/tests/baselines/reference/systemModule8.js +++ b/tests/baselines/reference/systemModule8.js @@ -31,7 +31,7 @@ export const {a: z0, b: {c: z1}} = {a: true, b: {c: "123"}}; for ([x] of [[1]]) {} //// [systemModule8.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var x, y, z0, z1; function foo() { diff --git a/tests/baselines/reference/systemModule9.js b/tests/baselines/reference/systemModule9.js index 4804a08fd39..137dd019a02 100644 --- a/tests/baselines/reference/systemModule9.js +++ b/tests/baselines/reference/systemModule9.js @@ -22,7 +22,7 @@ export {x}; export {y as z}; //// [systemModule9.js] -System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'], function(exports_1, __moduleName) { +System.register(['file1', 'file2', 'file3', 'file4', 'file5', 'file6', 'file7'], function(exports_1) { "use strict"; var ns, file2_1, file3_1, file5_1, ns3; var x, y; diff --git a/tests/baselines/reference/systemModuleAmbientDeclarations.js b/tests/baselines/reference/systemModuleAmbientDeclarations.js index 35e48fe2aff..9bdde23a842 100644 --- a/tests/baselines/reference/systemModuleAmbientDeclarations.js +++ b/tests/baselines/reference/systemModuleAmbientDeclarations.js @@ -29,7 +29,7 @@ export declare module M { var v: number; } //// [file1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var promise, foo, c, e; return { @@ -44,7 +44,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -53,7 +53,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file3.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -62,7 +62,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file4.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -71,7 +71,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file5.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], @@ -80,7 +80,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file6.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; return { setters:[], diff --git a/tests/baselines/reference/systemModuleConstEnums.js b/tests/baselines/reference/systemModuleConstEnums.js index abcd9ca5802..8b8707768d9 100644 --- a/tests/baselines/reference/systemModuleConstEnums.js +++ b/tests/baselines/reference/systemModuleConstEnums.js @@ -13,7 +13,7 @@ module M { } //// [systemModuleConstEnums.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function foo() { use(0 /* X */); diff --git a/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js b/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js index 5eaa354bc2a..8466d399ac9 100644 --- a/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js +++ b/tests/baselines/reference/systemModuleConstEnumsSeparateCompilation.js @@ -13,7 +13,7 @@ module M { } //// [systemModuleConstEnumsSeparateCompilation.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var TopLevelConstEnum, M; function foo() { diff --git a/tests/baselines/reference/systemModuleDeclarationMerging.js b/tests/baselines/reference/systemModuleDeclarationMerging.js index 68dec6f3805..5ed029a769a 100644 --- a/tests/baselines/reference/systemModuleDeclarationMerging.js +++ b/tests/baselines/reference/systemModuleDeclarationMerging.js @@ -10,7 +10,7 @@ export enum E {} export module E { var x; } //// [systemModuleDeclarationMerging.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var F, C, E; function F() { } diff --git a/tests/baselines/reference/systemModuleExportDefault.js b/tests/baselines/reference/systemModuleExportDefault.js index 05e23840a51..cf1a99a4ad7 100644 --- a/tests/baselines/reference/systemModuleExportDefault.js +++ b/tests/baselines/reference/systemModuleExportDefault.js @@ -16,7 +16,7 @@ export default class C {} //// [file1.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function default_1() { } exports_1("default", default_1); @@ -27,7 +27,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file2.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; function foo() { } exports_1("default", foo); @@ -38,7 +38,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file3.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var default_1; return { @@ -54,7 +54,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [file4.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var C; return { diff --git a/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js b/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js index 3bce3b662ae..ee9858a7fec 100644 --- a/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js +++ b/tests/baselines/reference/systemModuleNonTopLevelModuleMembers.js @@ -13,7 +13,7 @@ export module TopLevelModule2 { } //// [systemModuleNonTopLevelModuleMembers.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var TopLevelClass, TopLevelModule, TopLevelEnum, TopLevelModule2; function TopLevelFunction() { } diff --git a/tests/baselines/reference/systemModuleWithSuperClass.js b/tests/baselines/reference/systemModuleWithSuperClass.js index 21b262fd217..fe9c2742f2d 100644 --- a/tests/baselines/reference/systemModuleWithSuperClass.js +++ b/tests/baselines/reference/systemModuleWithSuperClass.js @@ -13,7 +13,7 @@ export class Bar extends Foo { } //// [foo.js] -System.register([], function(exports_1, __moduleName) { +System.register([], function(exports_1) { "use strict"; var Foo; return { @@ -29,7 +29,7 @@ System.register([], function(exports_1, __moduleName) { } }); //// [bar.js] -System.register(['./foo'], function(exports_1, __moduleName) { +System.register(['./foo'], function(exports_1) { "use strict"; var __extends = (this && this.__extends) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; diff --git a/tests/cases/unittests/transpile.ts b/tests/cases/unittests/transpile.ts index 882b4e2094b..513d37673bb 100644 --- a/tests/cases/unittests/transpile.ts +++ b/tests/cases/unittests/transpile.ts @@ -134,7 +134,7 @@ var x = 0;`, it("Sets module name", () => { let output = - `System.register("NamedModule", [], function(exports_1, __moduleName) {\n "use strict";\n var x;\n` + + `System.register("NamedModule", [], function(exports_1) {\n "use strict";\n var x;\n` + ` return {\n` + ` setters:[],\n` + ` execute: function() {\n` + @@ -159,7 +159,7 @@ var x = 0;`, `declare function use(a: any);\n` + `use(foo);` let output = - `System.register(["SomeOtherName"], function(exports_1, __moduleName) {\n` + + `System.register(["SomeOtherName"], function(exports_1) {\n` + ` "use strict";\n` + ` var SomeName_1;\n` + ` return {\n` + From a05b1de7ee7ff25f54ab23db4009439011b38c58 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 6 Jan 2016 10:52:05 -0800 Subject: [PATCH 135/164] Change for-in iteration variable type from any to string --- src/compiler/checker.ts | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e4ad3339887..4cd8ef1959d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2520,9 +2520,9 @@ namespace ts { // Return the inferred type for a variable, parameter, or property declaration function getTypeForVariableLikeDeclaration(declaration: VariableLikeDeclaration): Type { - // A variable declared in a for..in statement is always of type any + // A variable declared in a for..in statement is always of type string if (declaration.parent.parent.kind === SyntaxKind.ForInStatement) { - return anyType; + return stringType; } if (declaration.parent.parent.kind === SyntaxKind.ForOfStatement) { @@ -8563,6 +8563,23 @@ namespace ts { return true; } + /** + * Return true if given node is an expression consisting of an identifier (possibly parenthesized) + * that references a variable declared in a for-in statement for an array-like object. + */ + function isForInVariableForArrayLikeObject(node: Expression) { + const e = skipParenthesizedNodes(node); + if (e.kind === SyntaxKind.Identifier) { + const symbol = getResolvedSymbol(e); + if (symbol.flags & SymbolFlags.Variable) { + const parent = symbol.valueDeclaration.parent.parent; + return parent.kind === SyntaxKind.ForInStatement && + isArrayLikeType(checkExpression((parent).expression)); + } + } + return false; + } + function checkIndexedAccess(node: ElementAccessExpression): Type { // Grammar checking if (!node.argumentExpression) { @@ -8623,7 +8640,7 @@ namespace ts { if (isTypeAnyOrAllConstituentTypesHaveKind(indexType, TypeFlags.StringLike | TypeFlags.NumberLike | TypeFlags.ESSymbol)) { // Try to use a number indexer. - if (isTypeAnyOrAllConstituentTypesHaveKind(indexType, TypeFlags.NumberLike)) { + if (isTypeAnyOrAllConstituentTypesHaveKind(indexType, TypeFlags.NumberLike) || isForInVariableForArrayLikeObject(node.argumentExpression)) { const numberIndexType = getIndexTypeOfType(objectType, IndexKind.Number); if (numberIndexType) { return numberIndexType; @@ -12697,7 +12714,8 @@ namespace ts { } // For a binding pattern, validate the initializer and exit if (isBindingPattern(node.name)) { - if (node.initializer) { + // Don't validate for-in initializer as it is already an error + if (node.initializer && node.parent.parent.kind !== SyntaxKind.ForInStatement) { checkTypeAssignableTo(checkExpressionCached(node.initializer), getWidenedTypeForVariableLikeDeclaration(node), node, /*headMessage*/ undefined); checkParameterInitializer(node); } @@ -12707,7 +12725,8 @@ namespace ts { const type = getTypeOfVariableOrParameterOrProperty(symbol); if (node === symbol.valueDeclaration) { // Node is the primary declaration of the symbol, just validate the initializer - if (node.initializer) { + // Don't validate for-in initializer as it is already an error + if (node.initializer && node.parent.parent.kind !== SyntaxKind.ForInStatement) { checkTypeAssignableTo(checkExpressionCached(node.initializer), type, node, /*headMessage*/ undefined); checkParameterInitializer(node); } From 75b4c50cec458a79623bbd4bea7e992e13348599 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 6 Jan 2016 10:52:43 -0800 Subject: [PATCH 136/164] Updating existing tests --- tests/cases/compiler/capturedLetConstInLoop5.ts | 4 ++-- .../compiler/capturedLetConstInLoop5_ES6.ts | 4 ++-- tests/cases/compiler/capturedLetConstInLoop6.ts | 8 ++++---- .../compiler/capturedLetConstInLoop6_ES6.ts | 8 ++++---- tests/cases/compiler/capturedLetConstInLoop7.ts | 16 ++++++++-------- .../compiler/capturedLetConstInLoop7_ES6.ts | 16 ++++++++-------- tests/cases/fourslash/forIn.ts | 2 +- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/tests/cases/compiler/capturedLetConstInLoop5.ts b/tests/cases/compiler/capturedLetConstInLoop5.ts index 475137c14cc..5eedd5aac85 100644 --- a/tests/cases/compiler/capturedLetConstInLoop5.ts +++ b/tests/cases/compiler/capturedLetConstInLoop5.ts @@ -19,7 +19,7 @@ function foo00(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -158,7 +158,7 @@ function foo00_c(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } diff --git a/tests/cases/compiler/capturedLetConstInLoop5_ES6.ts b/tests/cases/compiler/capturedLetConstInLoop5_ES6.ts index 035e21b9e84..224ffa823bf 100644 --- a/tests/cases/compiler/capturedLetConstInLoop5_ES6.ts +++ b/tests/cases/compiler/capturedLetConstInLoop5_ES6.ts @@ -21,7 +21,7 @@ function foo00(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -160,7 +160,7 @@ function foo00_c(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } diff --git a/tests/cases/compiler/capturedLetConstInLoop6.ts b/tests/cases/compiler/capturedLetConstInLoop6.ts index 321d20e3c20..a854be46195 100644 --- a/tests/cases/compiler/capturedLetConstInLoop6.ts +++ b/tests/cases/compiler/capturedLetConstInLoop6.ts @@ -13,10 +13,10 @@ for (let x of []) { for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -132,10 +132,10 @@ for (const x of []) { for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } diff --git a/tests/cases/compiler/capturedLetConstInLoop6_ES6.ts b/tests/cases/compiler/capturedLetConstInLoop6_ES6.ts index f43fe5851d2..ad10f1fcb74 100644 --- a/tests/cases/compiler/capturedLetConstInLoop6_ES6.ts +++ b/tests/cases/compiler/capturedLetConstInLoop6_ES6.ts @@ -14,10 +14,10 @@ for (let x of []) { for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -133,10 +133,10 @@ for (const x of []) { for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } diff --git a/tests/cases/compiler/capturedLetConstInLoop7.ts b/tests/cases/compiler/capturedLetConstInLoop7.ts index a1d35c4038b..12805411f96 100644 --- a/tests/cases/compiler/capturedLetConstInLoop7.ts +++ b/tests/cases/compiler/capturedLetConstInLoop7.ts @@ -21,16 +21,16 @@ l00: for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00; } } @@ -209,16 +209,16 @@ l00_c: for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00_c; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00_c; } } diff --git a/tests/cases/compiler/capturedLetConstInLoop7_ES6.ts b/tests/cases/compiler/capturedLetConstInLoop7_ES6.ts index 14b1d0c85af..2e2784f9a16 100644 --- a/tests/cases/compiler/capturedLetConstInLoop7_ES6.ts +++ b/tests/cases/compiler/capturedLetConstInLoop7_ES6.ts @@ -22,16 +22,16 @@ l00: for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00; } } @@ -210,16 +210,16 @@ l00_c: for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00_c; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00_c; } } diff --git a/tests/cases/fourslash/forIn.ts b/tests/cases/fourslash/forIn.ts index e24e161d96b..855d35917c1 100644 --- a/tests/cases/fourslash/forIn.ts +++ b/tests/cases/fourslash/forIn.ts @@ -5,4 +5,4 @@ goTo.marker(); -verify.quickInfoIs('var p: any', ""); +verify.quickInfoIs('var p: string', ""); From dbb4544d61521b220a1219841e14df4cb2dd505f Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 6 Jan 2016 10:52:54 -0800 Subject: [PATCH 137/164] Adding new tests --- .../for-inStatements/for-inStatementsArray.ts | 11 +++++++++++ .../for-inStatementsArrayErrors.ts | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts create mode 100644 tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts diff --git a/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts b/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts new file mode 100644 index 00000000000..e8dc484c0fa --- /dev/null +++ b/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts @@ -0,0 +1,11 @@ +let a: Date[]; +let b: boolean[]; + +for (let x in a) { + let a1 = a[x]; + let a2 = a[(x)]; + let a3 = a[+x]; + let b1 = b[x]; + let b2 = b[(x)]; + let b3 = b[+x]; +} diff --git a/tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts b/tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts new file mode 100644 index 00000000000..c87ab6cea03 --- /dev/null +++ b/tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts @@ -0,0 +1,19 @@ +// @noImplicitAny: true + +let a: Date[]; + +for (let x in a) { + let a1 = a[x + 1]; + let a2 = a[x - 1]; + if (x === 1) { + } + let a3 = x.unknownProperty; +} + +var i: number; +for (var i in a ) { +} + +var j: any; +for (var j in a ) { +} From 9ce5e6477bb15e76f168ae7fa878649254eb32e4 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 6 Jan 2016 10:53:27 -0800 Subject: [PATCH 138/164] Accepting new baselines --- .../reference/capturedLetConstInLoop1.types | 28 +++--- .../capturedLetConstInLoop1_ES6.types | 28 +++--- .../reference/capturedLetConstInLoop2.types | 36 ++++---- .../capturedLetConstInLoop2_ES6.types | 36 ++++---- .../reference/capturedLetConstInLoop3.types | 56 +++++------ .../capturedLetConstInLoop3_ES6.types | 56 +++++------ .../reference/capturedLetConstInLoop4.types | 88 +++++++++--------- .../capturedLetConstInLoop4_ES6.types | 88 +++++++++--------- .../reference/capturedLetConstInLoop5.js | 8 +- .../reference/capturedLetConstInLoop5.symbols | 4 +- .../reference/capturedLetConstInLoop5.types | 72 +++++++-------- .../reference/capturedLetConstInLoop5_ES6.js | 8 +- .../capturedLetConstInLoop5_ES6.symbols | 4 +- .../capturedLetConstInLoop5_ES6.types | 72 +++++++-------- .../reference/capturedLetConstInLoop6.js | 16 ++-- .../reference/capturedLetConstInLoop6.symbols | 8 +- .../reference/capturedLetConstInLoop6.types | 60 ++++++------ .../reference/capturedLetConstInLoop6_ES6.js | 16 ++-- .../capturedLetConstInLoop6_ES6.symbols | 8 +- .../capturedLetConstInLoop6_ES6.types | 60 ++++++------ .../reference/capturedLetConstInLoop7.js | 32 +++---- .../reference/capturedLetConstInLoop7.symbols | 16 ++-- .../reference/capturedLetConstInLoop7.types | 92 +++++++++---------- .../reference/capturedLetConstInLoop7_ES6.js | 32 +++---- .../capturedLetConstInLoop7_ES6.symbols | 16 ++-- .../capturedLetConstInLoop7_ES6.types | 92 +++++++++---------- .../reference/downlevelLetConst17.types | 8 +- .../duplicateLocalVariable1.errors.txt | 12 ++- .../duplicateLocalVariable2.errors.txt | 12 ++- .../reference/for-inStatementsArray.js | 25 +++++ .../reference/for-inStatementsArray.symbols | 43 +++++++++ .../reference/for-inStatementsArray.types | 53 +++++++++++ .../for-inStatementsArrayErrors.errors.txt | 40 ++++++++ .../reference/for-inStatementsArrayErrors.js | 36 ++++++++ .../for-inStatementsDestructuring.errors.txt | 5 +- .../for-inStatementsDestructuring2.errors.txt | 10 +- .../for-inStatementsInvalid.errors.txt | 5 +- .../reference/forInBreakStatements.types | 22 ++--- .../reference/forInContinueStatements.types | 22 ++--- .../baselines/reference/forInStatement1.types | 2 +- .../baselines/reference/forInStatement3.types | 2 +- .../reference/implicitAnyInCatch.types | 4 +- .../reference/inOperatorWithGeneric.types | 2 +- .../reference/letDeclarations-es5.types | 2 +- .../baselines/reference/letDeclarations.types | 2 +- .../reference/letInVarDeclOfForIn_ES5.types | 4 +- .../reference/letInVarDeclOfForIn_ES6.types | 4 +- .../parserES5ForOfStatement19.errors.txt | 7 ++ .../parserES5ForOfStatement19.symbols | 5 - .../reference/parserES5ForOfStatement19.types | 5 - .../parserES5ForOfStatement20.errors.txt | 7 +- .../parserForOfStatement19.errors.txt | 7 ++ .../reference/parserForOfStatement19.symbols | 5 - .../reference/parserForOfStatement19.types | 5 - .../parserForOfStatement20.errors.txt | 7 +- .../reference/recursiveLetConst.errors.txt | 5 +- .../throwInEnclosingStatements.types | 4 +- 57 files changed, 811 insertions(+), 593 deletions(-) create mode 100644 tests/baselines/reference/for-inStatementsArray.js create mode 100644 tests/baselines/reference/for-inStatementsArray.symbols create mode 100644 tests/baselines/reference/for-inStatementsArray.types create mode 100644 tests/baselines/reference/for-inStatementsArrayErrors.errors.txt create mode 100644 tests/baselines/reference/for-inStatementsArrayErrors.js create mode 100644 tests/baselines/reference/parserES5ForOfStatement19.errors.txt delete mode 100644 tests/baselines/reference/parserES5ForOfStatement19.symbols delete mode 100644 tests/baselines/reference/parserES5ForOfStatement19.types create mode 100644 tests/baselines/reference/parserForOfStatement19.errors.txt delete mode 100644 tests/baselines/reference/parserForOfStatement19.symbols delete mode 100644 tests/baselines/reference/parserForOfStatement19.types diff --git a/tests/baselines/reference/capturedLetConstInLoop1.types b/tests/baselines/reference/capturedLetConstInLoop1.types index c68f2422f43..bed3db55d7c 100644 --- a/tests/baselines/reference/capturedLetConstInLoop1.types +++ b/tests/baselines/reference/capturedLetConstInLoop1.types @@ -1,18 +1,18 @@ === tests/cases/compiler/capturedLetConstInLoop1.ts === //==== let for (let x in {}) { ->x : any +>x : string >{} : {} (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (let x of []) { @@ -216,18 +216,18 @@ for (let y = 0; y < 1; ++y) { //=========const for (const x in {}) { ->x : any +>x : string >{} : {} (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (const x of []) { diff --git a/tests/baselines/reference/capturedLetConstInLoop1_ES6.types b/tests/baselines/reference/capturedLetConstInLoop1_ES6.types index 5e25e1f930d..47b12586684 100644 --- a/tests/baselines/reference/capturedLetConstInLoop1_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop1_ES6.types @@ -1,18 +1,18 @@ === tests/cases/compiler/capturedLetConstInLoop1_ES6.ts === //==== let for (let x in {}) { ->x : any +>x : string >{} : {} (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (let x of []) { @@ -216,18 +216,18 @@ for (let y = 0; y < 1; ++y) { //=========const for (const x in {}) { ->x : any +>x : string >{} : {} (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (const x of []) { diff --git a/tests/baselines/reference/capturedLetConstInLoop2.types b/tests/baselines/reference/capturedLetConstInLoop2.types index 5108fc399ee..2872eb4c763 100644 --- a/tests/baselines/reference/capturedLetConstInLoop2.types +++ b/tests/baselines/reference/capturedLetConstInLoop2.types @@ -37,7 +37,7 @@ function foo0_1(x) { >x : any for (let x in []) { ->x : any +>x : string >[] : undefined[] let a = arguments.length; @@ -47,17 +47,17 @@ function foo0_1(x) { >length : number (function() { return x + a }); ->(function() { return x + a }) : () => any ->function() { return x + a } : () => any ->x + a : any ->x : any +>(function() { return x + a }) : () => string +>function() { return x + a } : () => string +>x + a : string +>x : string >a : number (() => x + a); ->(() => x + a) : () => any ->() => x + a : () => any ->x + a : any ->x : any +>(() => x + a) : () => string +>() => x + a : () => string +>x + a : string +>x : string >a : number } } @@ -400,7 +400,7 @@ function foo0_1_c(x) { >x : any for (const x in []) { ->x : any +>x : string >[] : undefined[] const a = arguments.length; @@ -410,17 +410,17 @@ function foo0_1_c(x) { >length : number (function() { return x + a }); ->(function() { return x + a }) : () => any ->function() { return x + a } : () => any ->x + a : any ->x : any +>(function() { return x + a }) : () => string +>function() { return x + a } : () => string +>x + a : string +>x : string >a : number (() => x + a); ->(() => x + a) : () => any ->() => x + a : () => any ->x + a : any ->x : any +>(() => x + a) : () => string +>() => x + a : () => string +>x + a : string +>x : string >a : number } } diff --git a/tests/baselines/reference/capturedLetConstInLoop2_ES6.types b/tests/baselines/reference/capturedLetConstInLoop2_ES6.types index 9fea265da44..8a4d9c82628 100644 --- a/tests/baselines/reference/capturedLetConstInLoop2_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop2_ES6.types @@ -36,7 +36,7 @@ function foo0_1(x) { >x : any for (let x in []) { ->x : any +>x : string >[] : undefined[] let a = arguments.length; @@ -46,17 +46,17 @@ function foo0_1(x) { >length : number (function() { return x + a }); ->(function() { return x + a }) : () => any ->function() { return x + a } : () => any ->x + a : any ->x : any +>(function() { return x + a }) : () => string +>function() { return x + a } : () => string +>x + a : string +>x : string >a : number (() => x + a); ->(() => x + a) : () => any ->() => x + a : () => any ->x + a : any ->x : any +>(() => x + a) : () => string +>() => x + a : () => string +>x + a : string +>x : string >a : number } } @@ -399,7 +399,7 @@ function foo0_1_c(x) { >x : any for (const x in []) { ->x : any +>x : string >[] : undefined[] const a = arguments.length; @@ -409,17 +409,17 @@ function foo0_1_c(x) { >length : number (function() { return x + a }); ->(function() { return x + a }) : () => any ->function() { return x + a } : () => any ->x + a : any ->x : any +>(function() { return x + a }) : () => string +>function() { return x + a } : () => string +>x + a : string +>x : string >a : number (() => x + a); ->(() => x + a) : () => any ->() => x + a : () => any ->x + a : any ->x : any +>(() => x + a) : () => string +>() => x + a : () => string +>x + a : string +>x : string >a : number } } diff --git a/tests/baselines/reference/capturedLetConstInLoop3.types b/tests/baselines/reference/capturedLetConstInLoop3.types index 51646f5a98b..9c0c188b727 100644 --- a/tests/baselines/reference/capturedLetConstInLoop3.types +++ b/tests/baselines/reference/capturedLetConstInLoop3.types @@ -42,32 +42,32 @@ function foo0_1(x) { >x : any for (let x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string } use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1(x) { @@ -438,32 +438,32 @@ function foo0_1_c(x) { >x : any for (const x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string } use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1_c(x) { diff --git a/tests/baselines/reference/capturedLetConstInLoop3_ES6.types b/tests/baselines/reference/capturedLetConstInLoop3_ES6.types index cc4b57ff9ea..03377d913c9 100644 --- a/tests/baselines/reference/capturedLetConstInLoop3_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop3_ES6.types @@ -43,32 +43,32 @@ function foo0_1(x) { >x : any for (let x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string } use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1(x) { @@ -439,32 +439,32 @@ function foo0_1_c(x) { >x : any for (const x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string } use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1_c(x) { diff --git a/tests/baselines/reference/capturedLetConstInLoop4.types b/tests/baselines/reference/capturedLetConstInLoop4.types index f19e5d109b8..1bc928cefe4 100644 --- a/tests/baselines/reference/capturedLetConstInLoop4.types +++ b/tests/baselines/reference/capturedLetConstInLoop4.types @@ -2,20 +2,20 @@ //======let export function exportedFoo() { ->exportedFoo : () => any +>exportedFoo : () => string return v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; ->v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 : any ->v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 : any ->v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 : any ->v0 + v00 + v1 + v2 + v3 + v4 + v5 : any ->v0 + v00 + v1 + v2 + v3 + v4 : any ->v0 + v00 + v1 + v2 + v3 : any ->v0 + v00 + v1 + v2 : any ->v0 + v00 + v1 : any ->v0 + v00 : any +>v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 : string +>v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 : string +>v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 : string +>v0 + v00 + v1 + v2 + v3 + v4 + v5 : string +>v0 + v00 + v1 + v2 + v3 + v4 : string +>v0 + v00 + v1 + v2 + v3 : string +>v0 + v00 + v1 + v2 : string +>v0 + v00 + v1 : string +>v0 + v00 : string >v0 : any ->v00 : any +>v00 : string >v1 : number >v2 : any >v3 : any @@ -48,24 +48,24 @@ for (let x of []) { } for (let x in []) { ->x : any +>x : string >[] : undefined[] var v00 = x; ->v00 : any ->x : any +>v00 : string +>x : string (function() { return x + v00}); ->(function() { return x + v00}) : () => any ->function() { return x + v00} : () => any ->x + v00 : any ->x : any ->v00 : any +>(function() { return x + v00}) : () => string +>function() { return x + v00} : () => string +>x + v00 : string +>x : string +>v00 : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (let x = 0; x < 1; ++x) { @@ -302,20 +302,20 @@ for (let y = 0; y < 1; ++y) { //======const export function exportedFoo2() { ->exportedFoo2 : () => any +>exportedFoo2 : () => string return v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c; ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c : any ->v0_c + v00_c + v1_c + v2_c : any ->v0_c + v00_c + v1_c : any ->v0_c + v00_c : any +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c : string +>v0_c + v00_c + v1_c + v2_c : string +>v0_c + v00_c + v1_c : string +>v0_c + v00_c : string >v0_c : any ->v00_c : any +>v00_c : string >v1_c : number >v2_c : number >v3_c : number @@ -348,24 +348,24 @@ for (const x of []) { } for (const x in []) { ->x : any +>x : string >[] : undefined[] var v00_c = x; ->v00_c : any ->x : any +>v00_c : string +>x : string (function() { return x + v00}); ->(function() { return x + v00}) : () => any ->function() { return x + v00} : () => any ->x + v00 : any ->x : any ->v00 : any +>(function() { return x + v00}) : () => string +>function() { return x + v00} : () => string +>x + v00 : string +>x : string +>v00 : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (const x = 0; x < 1;) { diff --git a/tests/baselines/reference/capturedLetConstInLoop4_ES6.types b/tests/baselines/reference/capturedLetConstInLoop4_ES6.types index fd5f6dadf62..cf44c7b6981 100644 --- a/tests/baselines/reference/capturedLetConstInLoop4_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop4_ES6.types @@ -2,20 +2,20 @@ //======let export function exportedFoo() { ->exportedFoo : () => any +>exportedFoo : () => string return v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8; ->v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 : any ->v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 : any ->v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 : any ->v0 + v00 + v1 + v2 + v3 + v4 + v5 : any ->v0 + v00 + v1 + v2 + v3 + v4 : any ->v0 + v00 + v1 + v2 + v3 : any ->v0 + v00 + v1 + v2 : any ->v0 + v00 + v1 : any ->v0 + v00 : any +>v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 : string +>v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 + v7 : string +>v0 + v00 + v1 + v2 + v3 + v4 + v5 + v6 : string +>v0 + v00 + v1 + v2 + v3 + v4 + v5 : string +>v0 + v00 + v1 + v2 + v3 + v4 : string +>v0 + v00 + v1 + v2 + v3 : string +>v0 + v00 + v1 + v2 : string +>v0 + v00 + v1 : string +>v0 + v00 : string >v0 : any ->v00 : any +>v00 : string >v1 : number >v2 : any >v3 : any @@ -48,24 +48,24 @@ for (let x of []) { } for (let x in []) { ->x : any +>x : string >[] : undefined[] var v00 = x; ->v00 : any ->x : any +>v00 : string +>x : string (function() { return x + v00}); ->(function() { return x + v00}) : () => any ->function() { return x + v00} : () => any ->x + v00 : any ->x : any ->v00 : any +>(function() { return x + v00}) : () => string +>function() { return x + v00} : () => string +>x + v00 : string +>x : string +>v00 : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (let x = 0; x < 1; ++x) { @@ -302,20 +302,20 @@ for (let y = 0; y < 1; ++y) { //======const export function exportedFoo2() { ->exportedFoo2 : () => any +>exportedFoo2 : () => string return v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c; ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c + v4_c : any ->v0_c + v00_c + v1_c + v2_c + v3_c : any ->v0_c + v00_c + v1_c + v2_c : any ->v0_c + v00_c + v1_c : any ->v0_c + v00_c : any +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c + v8_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c + v7_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c + v6_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c + v5_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c + v4_c : string +>v0_c + v00_c + v1_c + v2_c + v3_c : string +>v0_c + v00_c + v1_c + v2_c : string +>v0_c + v00_c + v1_c : string +>v0_c + v00_c : string >v0_c : any ->v00_c : any +>v00_c : string >v1_c : number >v2_c : number >v3_c : number @@ -348,24 +348,24 @@ for (const x of []) { } for (const x in []) { ->x : any +>x : string >[] : undefined[] var v00_c = x; ->v00_c : any ->x : any +>v00_c : string +>x : string (function() { return x + v00}); ->(function() { return x + v00}) : () => any ->function() { return x + v00} : () => any ->x + v00 : any ->x : any ->v00 : any +>(function() { return x + v00}) : () => string +>function() { return x + v00} : () => string +>x + v00 : string +>x : string +>v00 : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string } for (const x = 0; x < 1;) { diff --git a/tests/baselines/reference/capturedLetConstInLoop5.js b/tests/baselines/reference/capturedLetConstInLoop5.js index d7d177a19b9..b73484cb430 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5.js +++ b/tests/baselines/reference/capturedLetConstInLoop5.js @@ -20,7 +20,7 @@ function foo00(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -159,7 +159,7 @@ function foo00_c(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -303,7 +303,7 @@ function foo00(x) { v = x_2; (function () { return x_2 + v; }); (function () { return x_2 + v; }); - if (x_2 == 1) { + if (x_2 == "1") { return { value: void 0 }; } }; @@ -471,7 +471,7 @@ function foo00_c(x) { v = x_12; (function () { return x_12 + v; }); (function () { return x_12 + v; }); - if (x_12 == 1) { + if (x_12 == "1") { return { value: void 0 }; } }; diff --git a/tests/baselines/reference/capturedLetConstInLoop5.symbols b/tests/baselines/reference/capturedLetConstInLoop5.symbols index 2d514e8c88c..965379d3a11 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop5.symbols @@ -54,7 +54,7 @@ function foo00(x) { >x : Symbol(x, Decl(capturedLetConstInLoop5.ts, 17, 12)) >v : Symbol(v, Decl(capturedLetConstInLoop5.ts, 18, 11)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop5.ts, 17, 12)) return; @@ -395,7 +395,7 @@ function foo00_c(x) { >x : Symbol(x, Decl(capturedLetConstInLoop5.ts, 156, 14)) >v : Symbol(v, Decl(capturedLetConstInLoop5.ts, 157, 11)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop5.ts, 156, 14)) return; diff --git a/tests/baselines/reference/capturedLetConstInLoop5.types b/tests/baselines/reference/capturedLetConstInLoop5.types index 3654ffe5820..b7b4b880dc4 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5.types +++ b/tests/baselines/reference/capturedLetConstInLoop5.types @@ -50,31 +50,31 @@ function foo00(x) { >x : any for (let x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string return; } @@ -83,7 +83,7 @@ function foo00(x) { use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1(x) { @@ -525,31 +525,31 @@ function foo00_c(x) { >x : any for (const x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string return; } @@ -558,7 +558,7 @@ function foo00_c(x) { use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1_c(x) { diff --git a/tests/baselines/reference/capturedLetConstInLoop5_ES6.js b/tests/baselines/reference/capturedLetConstInLoop5_ES6.js index e5996bb3053..0f0624b8a8b 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5_ES6.js +++ b/tests/baselines/reference/capturedLetConstInLoop5_ES6.js @@ -21,7 +21,7 @@ function foo00(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -160,7 +160,7 @@ function foo00_c(x) { var v = x; (function() { return x + v }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -298,7 +298,7 @@ function foo00(x) { var v = x; (function () { return x + v; }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } @@ -416,7 +416,7 @@ function foo00_c(x) { var v = x; (function () { return x + v; }); (() => x + v); - if (x == 1) { + if (x == "1") { return; } } diff --git a/tests/baselines/reference/capturedLetConstInLoop5_ES6.symbols b/tests/baselines/reference/capturedLetConstInLoop5_ES6.symbols index b3d338ad60e..5b40cb44599 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5_ES6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop5_ES6.symbols @@ -55,7 +55,7 @@ function foo00(x) { >x : Symbol(x, Decl(capturedLetConstInLoop5_ES6.ts, 18, 12)) >v : Symbol(v, Decl(capturedLetConstInLoop5_ES6.ts, 19, 11)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop5_ES6.ts, 18, 12)) return; @@ -396,7 +396,7 @@ function foo00_c(x) { >x : Symbol(x, Decl(capturedLetConstInLoop5_ES6.ts, 157, 14)) >v : Symbol(v, Decl(capturedLetConstInLoop5_ES6.ts, 158, 11)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop5_ES6.ts, 157, 14)) return; diff --git a/tests/baselines/reference/capturedLetConstInLoop5_ES6.types b/tests/baselines/reference/capturedLetConstInLoop5_ES6.types index 8db8ae25e9b..855bbfc6308 100644 --- a/tests/baselines/reference/capturedLetConstInLoop5_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop5_ES6.types @@ -51,31 +51,31 @@ function foo00(x) { >x : any for (let x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string return; } @@ -84,7 +84,7 @@ function foo00(x) { use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1(x) { @@ -526,31 +526,31 @@ function foo00_c(x) { >x : any for (const x in []) { ->x : any +>x : string >[] : undefined[] var v = x; ->v : any ->x : any +>v : string +>x : string (function() { return x + v }); ->(function() { return x + v }) : () => any ->function() { return x + v } : () => any ->x + v : any ->x : any ->v : any +>(function() { return x + v }) : () => string +>function() { return x + v } : () => string +>x + v : string +>x : string +>v : string (() => x + v); ->(() => x + v) : () => any ->() => x + v : () => any ->x + v : any ->x : any ->v : any +>(() => x + v) : () => string +>() => x + v : () => string +>x + v : string +>x : string +>v : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string return; } @@ -559,7 +559,7 @@ function foo00_c(x) { use(v); >use(v) : any >use : (a: any) => any ->v : any +>v : string } function foo1_c(x) { diff --git a/tests/baselines/reference/capturedLetConstInLoop6.js b/tests/baselines/reference/capturedLetConstInLoop6.js index 187d9f10ad3..ca3b634ef18 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6.js +++ b/tests/baselines/reference/capturedLetConstInLoop6.js @@ -14,10 +14,10 @@ for (let x of []) { for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -133,10 +133,10 @@ for (const x of []) { for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -259,10 +259,10 @@ for (var _i = 0, _a = []; _i < _a.length; _i++) { var _loop_2 = function(x) { (function () { return x; }); (function () { return x; }); - if (x == 1) { + if (x == "1") { return "break"; } - if (x == 2) { + if (x == "2") { return "continue"; } }; @@ -417,10 +417,10 @@ for (var _b = 0, _c = []; _b < _c.length; _b++) { var _loop_12 = function(x) { (function () { return x; }); (function () { return x; }); - if (x == 1) { + if (x == "1") { return "break"; } - if (x == 2) { + if (x == "2") { return "continue"; } }; diff --git a/tests/baselines/reference/capturedLetConstInLoop6.symbols b/tests/baselines/reference/capturedLetConstInLoop6.symbols index 8d8e6d6ce59..872bc3a4727 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop6.symbols @@ -30,12 +30,12 @@ for (let x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop6.ts, 12, 8)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop6.ts, 12, 8)) break; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop6.ts, 12, 8)) continue; @@ -272,12 +272,12 @@ for (const x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop6.ts, 131, 10)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop6.ts, 131, 10)) break; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop6.ts, 131, 10)) continue; diff --git a/tests/baselines/reference/capturedLetConstInLoop6.types b/tests/baselines/reference/capturedLetConstInLoop6.types index 6c31bdef31b..f2b1103305f 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6.types +++ b/tests/baselines/reference/capturedLetConstInLoop6.types @@ -31,30 +31,30 @@ for (let x of []) { } for (let x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } @@ -396,30 +396,30 @@ for (const x of []) { } for (const x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } diff --git a/tests/baselines/reference/capturedLetConstInLoop6_ES6.js b/tests/baselines/reference/capturedLetConstInLoop6_ES6.js index 924f55b6915..33d64e88927 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6_ES6.js +++ b/tests/baselines/reference/capturedLetConstInLoop6_ES6.js @@ -14,10 +14,10 @@ for (let x of []) { for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -133,10 +133,10 @@ for (const x of []) { for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -253,10 +253,10 @@ for (let x of []) { for (let x in []) { (function () { return x; }); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } @@ -360,10 +360,10 @@ for (const x of []) { for (const x in []) { (function () { return x; }); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 2) { + if (x == "2") { continue; } } diff --git a/tests/baselines/reference/capturedLetConstInLoop6_ES6.symbols b/tests/baselines/reference/capturedLetConstInLoop6_ES6.symbols index acd557e4714..63cb26c4300 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6_ES6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop6_ES6.symbols @@ -30,12 +30,12 @@ for (let x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop6_ES6.ts, 12, 8)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop6_ES6.ts, 12, 8)) break; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop6_ES6.ts, 12, 8)) continue; @@ -272,12 +272,12 @@ for (const x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop6_ES6.ts, 131, 10)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop6_ES6.ts, 131, 10)) break; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop6_ES6.ts, 131, 10)) continue; diff --git a/tests/baselines/reference/capturedLetConstInLoop6_ES6.types b/tests/baselines/reference/capturedLetConstInLoop6_ES6.types index 87f21709120..cfd55a63aaa 100644 --- a/tests/baselines/reference/capturedLetConstInLoop6_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop6_ES6.types @@ -31,30 +31,30 @@ for (let x of []) { } for (let x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } @@ -396,30 +396,30 @@ for (const x of []) { } for (const x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } diff --git a/tests/baselines/reference/capturedLetConstInLoop7.js b/tests/baselines/reference/capturedLetConstInLoop7.js index ce6769d2b1a..6ec4ec1df44 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7.js +++ b/tests/baselines/reference/capturedLetConstInLoop7.js @@ -22,16 +22,16 @@ l00: for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00; } } @@ -210,16 +210,16 @@ l00_c: for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00_c; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00_c; } } @@ -406,16 +406,16 @@ l0: for (var _i = 0, _a = []; _i < _a.length; _i++) { var _loop_2 = function(x) { (function () { return x; }); (function () { return x; }); - if (x == 1) { + if (x == "1") { return "break"; } - if (x == 1) { + if (x == "1") { return "break-l00"; } - if (x == 2) { + if (x == "2") { return "continue"; } - if (x == 2) { + if (x == "2") { return "continue-l00"; } }; @@ -664,16 +664,16 @@ l0_c: for (var _b = 0, _c = []; _b < _c.length; _b++) { var _loop_12 = function(x) { (function () { return x; }); (function () { return x; }); - if (x == 1) { + if (x == "1") { return "break"; } - if (x == 1) { + if (x == "1") { return "break-l00_c"; } - if (x == 2) { + if (x == "2") { return "continue"; } - if (x == 2) { + if (x == "2") { return "continue-l00_c"; } }; diff --git a/tests/baselines/reference/capturedLetConstInLoop7.symbols b/tests/baselines/reference/capturedLetConstInLoop7.symbols index 2aa5ec2cd38..0f4395a6d68 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop7.symbols @@ -42,22 +42,22 @@ for (let x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 20, 8)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 20, 8)) break; } - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 20, 8)) break l00; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 20, 8)) continue; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 20, 8)) continue l00; @@ -393,22 +393,22 @@ for (const x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 208, 10)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 208, 10)) break; } - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 208, 10)) break l00_c; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 208, 10)) continue; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7.ts, 208, 10)) continue l00_c; diff --git a/tests/baselines/reference/capturedLetConstInLoop7.types b/tests/baselines/reference/capturedLetConstInLoop7.types index 280985eae0f..29ea34e39a1 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7.types +++ b/tests/baselines/reference/capturedLetConstInLoop7.types @@ -53,45 +53,45 @@ l00: >l00 : any for (let x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break l00; >l00 : any } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue l00; >l00 : any @@ -607,45 +607,45 @@ l00_c: >l00_c : any for (const x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break l00_c; >l00_c : any } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue l00_c; >l00_c : any diff --git a/tests/baselines/reference/capturedLetConstInLoop7_ES6.js b/tests/baselines/reference/capturedLetConstInLoop7_ES6.js index 4a2db640081..13c69a88392 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7_ES6.js +++ b/tests/baselines/reference/capturedLetConstInLoop7_ES6.js @@ -22,16 +22,16 @@ l00: for (let x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00; } } @@ -210,16 +210,16 @@ l00_c: for (const x in []) { (function() { return x}); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00_c; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00_c; } } @@ -396,16 +396,16 @@ l0: for (let x of []) { l00: for (let x in []) { (function () { return x; }); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00; } } @@ -563,16 +563,16 @@ l0_c: for (const x of []) { l00_c: for (const x in []) { (function () { return x; }); (() => x); - if (x == 1) { + if (x == "1") { break; } - if (x == 1) { + if (x == "1") { break l00_c; } - if (x == 2) { + if (x == "2") { continue; } - if (x == 2) { + if (x == "2") { continue l00_c; } } diff --git a/tests/baselines/reference/capturedLetConstInLoop7_ES6.symbols b/tests/baselines/reference/capturedLetConstInLoop7_ES6.symbols index 51131f421ba..a817377834b 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7_ES6.symbols +++ b/tests/baselines/reference/capturedLetConstInLoop7_ES6.symbols @@ -42,22 +42,22 @@ for (let x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 20, 8)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 20, 8)) break; } - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 20, 8)) break l00; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 20, 8)) continue; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 20, 8)) continue l00; @@ -393,22 +393,22 @@ for (const x in []) { (() => x); >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 208, 10)) - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 208, 10)) break; } - if (x == 1) { + if (x == "1") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 208, 10)) break l00_c; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 208, 10)) continue; } - if (x == 2) { + if (x == "2") { >x : Symbol(x, Decl(capturedLetConstInLoop7_ES6.ts, 208, 10)) continue l00_c; diff --git a/tests/baselines/reference/capturedLetConstInLoop7_ES6.types b/tests/baselines/reference/capturedLetConstInLoop7_ES6.types index 56573fb4927..c72afb41942 100644 --- a/tests/baselines/reference/capturedLetConstInLoop7_ES6.types +++ b/tests/baselines/reference/capturedLetConstInLoop7_ES6.types @@ -53,45 +53,45 @@ l00: >l00 : any for (let x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break l00; >l00 : any } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue l00; >l00 : any @@ -607,45 +607,45 @@ l00_c: >l00_c : any for (const x in []) { ->x : any +>x : string >[] : undefined[] (function() { return x}); ->(function() { return x}) : () => any ->function() { return x} : () => any ->x : any +>(function() { return x}) : () => string +>function() { return x} : () => string +>x : string (() => x); ->(() => x) : () => any ->() => x : () => any ->x : any +>(() => x) : () => string +>() => x : () => string +>x : string - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break; } - if (x == 1) { ->x == 1 : boolean ->x : any ->1 : number + if (x == "1") { +>x == "1" : boolean +>x : string +>"1" : string break l00_c; >l00_c : any } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue; } - if (x == 2) { ->x == 2 : boolean ->x : any ->2 : number + if (x == "2") { +>x == "2" : boolean +>x : string +>"2" : string continue l00_c; >l00_c : any diff --git a/tests/baselines/reference/downlevelLetConst17.types b/tests/baselines/reference/downlevelLetConst17.types index 824abcc76be..4f539835ada 100644 --- a/tests/baselines/reference/downlevelLetConst17.types +++ b/tests/baselines/reference/downlevelLetConst17.types @@ -139,23 +139,23 @@ do { >true : boolean for (let x in []) { ->x : any +>x : string >[] : undefined[] use(x); >use(x) : any >use : (a: any) => any ->x : any +>x : string } for (const x in []) { ->x : any +>x : string >[] : undefined[] use(x); >use(x) : any >use : (a: any) => any ->x : any +>x : string } for (const x of []) { diff --git a/tests/baselines/reference/duplicateLocalVariable1.errors.txt b/tests/baselines/reference/duplicateLocalVariable1.errors.txt index 0a49c71e29b..90c5974cd2b 100644 --- a/tests/baselines/reference/duplicateLocalVariable1.errors.txt +++ b/tests/baselines/reference/duplicateLocalVariable1.errors.txt @@ -2,10 +2,12 @@ tests/cases/compiler/duplicateLocalVariable1.ts(2,4): error TS1005: ';' expected tests/cases/compiler/duplicateLocalVariable1.ts(2,11): error TS1146: Declaration expected. tests/cases/compiler/duplicateLocalVariable1.ts(2,13): error TS2304: Cannot find name 'commonjs'. tests/cases/compiler/duplicateLocalVariable1.ts(12,14): error TS1148: Cannot compile modules unless the '--module' flag is provided. Consider setting the 'module' compiler option in a 'tsconfig.json' file. -tests/cases/compiler/duplicateLocalVariable1.ts(187,22): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'any', but here has type 'number'. +tests/cases/compiler/duplicateLocalVariable1.ts(187,22): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'string', but here has type 'number'. +tests/cases/compiler/duplicateLocalVariable1.ts(187,29): error TS2365: Operator '<' cannot be applied to types 'string' and 'number'. +tests/cases/compiler/duplicateLocalVariable1.ts(187,37): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type. -==== tests/cases/compiler/duplicateLocalVariable1.ts (5 errors) ==== +==== tests/cases/compiler/duplicateLocalVariable1.ts (7 errors) ==== / /@module: commonjs ~ @@ -202,7 +204,11 @@ tests/cases/compiler/duplicateLocalVariable1.ts(187,22): error TS2403: Subsequen var bytes = []; for (var i = 0; i < 14; i++) { ~ -!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'any', but here has type 'number'. +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'string', but here has type 'number'. + ~~~~~~ +!!! error TS2365: Operator '<' cannot be applied to types 'string' and 'number'. + ~ +!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type. bytes.push(fb.readByte()); } var expected = [0xEF, 0xBB, 0xBF, 0x54, 0xC3, 0xA8, 0xE1, 0xB4, 0xA3, 0xE2, 0x80, 0xA0, 0x0D, 0x0A]; diff --git a/tests/baselines/reference/duplicateLocalVariable2.errors.txt b/tests/baselines/reference/duplicateLocalVariable2.errors.txt index 0fbe0018bf8..5e89cc422cc 100644 --- a/tests/baselines/reference/duplicateLocalVariable2.errors.txt +++ b/tests/baselines/reference/duplicateLocalVariable2.errors.txt @@ -1,7 +1,9 @@ -tests/cases/compiler/duplicateLocalVariable2.ts(27,22): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'any', but here has type 'number'. +tests/cases/compiler/duplicateLocalVariable2.ts(27,22): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'string', but here has type 'number'. +tests/cases/compiler/duplicateLocalVariable2.ts(27,29): error TS2365: Operator '<' cannot be applied to types 'string' and 'number'. +tests/cases/compiler/duplicateLocalVariable2.ts(27,37): error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type. -==== tests/cases/compiler/duplicateLocalVariable2.ts (1 errors) ==== +==== tests/cases/compiler/duplicateLocalVariable2.ts (3 errors) ==== export class TestCase { constructor (public name: string, public test: ()=>boolean, public errorMessageRegEx?: string) { } @@ -30,7 +32,11 @@ tests/cases/compiler/duplicateLocalVariable2.ts(27,22): error TS2403: Subsequent var bytes = []; for (var i = 0; i < 14; i++) { ~ -!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'any', but here has type 'number'. +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'string', but here has type 'number'. + ~~~~~~ +!!! error TS2365: Operator '<' cannot be applied to types 'string' and 'number'. + ~ +!!! error TS2356: An arithmetic operand must be of type 'any', 'number' or an enum type. bytes.push(fb.readByte()); } var expected = [0xEF]; diff --git a/tests/baselines/reference/for-inStatementsArray.js b/tests/baselines/reference/for-inStatementsArray.js new file mode 100644 index 00000000000..5df8b41a2c2 --- /dev/null +++ b/tests/baselines/reference/for-inStatementsArray.js @@ -0,0 +1,25 @@ +//// [for-inStatementsArray.ts] +let a: Date[]; +let b: boolean[]; + +for (let x in a) { + let a1 = a[x]; + let a2 = a[(x)]; + let a3 = a[+x]; + let b1 = b[x]; + let b2 = b[(x)]; + let b3 = b[+x]; +} + + +//// [for-inStatementsArray.js] +var a; +var b; +for (var x in a) { + var a1 = a[x]; + var a2 = a[(x)]; + var a3 = a[+x]; + var b1 = b[x]; + var b2 = b[(x)]; + var b3 = b[+x]; +} diff --git a/tests/baselines/reference/for-inStatementsArray.symbols b/tests/baselines/reference/for-inStatementsArray.symbols new file mode 100644 index 00000000000..bcf0957514b --- /dev/null +++ b/tests/baselines/reference/for-inStatementsArray.symbols @@ -0,0 +1,43 @@ +=== tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts === +let a: Date[]; +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +let b: boolean[]; +>b : Symbol(b, Decl(for-inStatementsArray.ts, 1, 3)) + +for (let x in a) { +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + let a1 = a[x]; +>a1 : Symbol(a1, Decl(for-inStatementsArray.ts, 4, 7)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) + + let a2 = a[(x)]; +>a2 : Symbol(a2, Decl(for-inStatementsArray.ts, 5, 7)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) + + let a3 = a[+x]; +>a3 : Symbol(a3, Decl(for-inStatementsArray.ts, 6, 7)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) + + let b1 = b[x]; +>b1 : Symbol(b1, Decl(for-inStatementsArray.ts, 7, 7)) +>b : Symbol(b, Decl(for-inStatementsArray.ts, 1, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) + + let b2 = b[(x)]; +>b2 : Symbol(b2, Decl(for-inStatementsArray.ts, 8, 7)) +>b : Symbol(b, Decl(for-inStatementsArray.ts, 1, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) + + let b3 = b[+x]; +>b3 : Symbol(b3, Decl(for-inStatementsArray.ts, 9, 7)) +>b : Symbol(b, Decl(for-inStatementsArray.ts, 1, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) +} + diff --git a/tests/baselines/reference/for-inStatementsArray.types b/tests/baselines/reference/for-inStatementsArray.types new file mode 100644 index 00000000000..d5edc2090e6 --- /dev/null +++ b/tests/baselines/reference/for-inStatementsArray.types @@ -0,0 +1,53 @@ +=== tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts === +let a: Date[]; +>a : Date[] +>Date : Date + +let b: boolean[]; +>b : boolean[] + +for (let x in a) { +>x : string +>a : Date[] + + let a1 = a[x]; +>a1 : Date +>a[x] : Date +>a : Date[] +>x : string + + let a2 = a[(x)]; +>a2 : Date +>a[(x)] : Date +>a : Date[] +>(x) : string +>x : string + + let a3 = a[+x]; +>a3 : Date +>a[+x] : Date +>a : Date[] +>+x : number +>x : string + + let b1 = b[x]; +>b1 : boolean +>b[x] : boolean +>b : boolean[] +>x : string + + let b2 = b[(x)]; +>b2 : boolean +>b[(x)] : boolean +>b : boolean[] +>(x) : string +>x : string + + let b3 = b[+x]; +>b3 : boolean +>b[+x] : boolean +>b : boolean[] +>+x : number +>x : string +} + diff --git a/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt b/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt new file mode 100644 index 00000000000..3555c64ccf4 --- /dev/null +++ b/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt @@ -0,0 +1,40 @@ +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(5,14): error TS7017: Index signature of object type implicitly has an 'any' type. +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(6,16): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(7,9): error TS2365: Operator '===' cannot be applied to types 'string' and 'number'. +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(9,16): error TS2339: Property 'unknownProperty' does not exist on type 'string'. +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(13,10): error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'number', but here has type 'string'. +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(17,10): error TS2403: Subsequent variable declarations must have the same type. Variable 'j' must be of type 'any', but here has type 'string'. + + +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts (6 errors) ==== + + let a: Date[]; + + for (let x in a) { + let a1 = a[x + 1]; + ~~~~~~~~ +!!! error TS7017: Index signature of object type implicitly has an 'any' type. + let a2 = a[x - 1]; + ~ +!!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. + if (x === 1) { + ~~~~~~~ +!!! error TS2365: Operator '===' cannot be applied to types 'string' and 'number'. + } + let a3 = x.unknownProperty; + ~~~~~~~~~~~~~~~ +!!! error TS2339: Property 'unknownProperty' does not exist on type 'string'. + } + + var i: number; + for (var i in a ) { + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'i' must be of type 'number', but here has type 'string'. + } + + var j: any; + for (var j in a ) { + ~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'j' must be of type 'any', but here has type 'string'. + } + \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsArrayErrors.js b/tests/baselines/reference/for-inStatementsArrayErrors.js new file mode 100644 index 00000000000..981a840695c --- /dev/null +++ b/tests/baselines/reference/for-inStatementsArrayErrors.js @@ -0,0 +1,36 @@ +//// [for-inStatementsArrayErrors.ts] + +let a: Date[]; + +for (let x in a) { + let a1 = a[x + 1]; + let a2 = a[x - 1]; + if (x === 1) { + } + let a3 = x.unknownProperty; +} + +var i: number; +for (var i in a ) { +} + +var j: any; +for (var j in a ) { +} + + +//// [for-inStatementsArrayErrors.js] +var a; +for (var x in a) { + var a1 = a[x + 1]; + var a2 = a[x - 1]; + if (x === 1) { + } + var a3 = x.unknownProperty; +} +var i; +for (var i in a) { +} +var j; +for (var j in a) { +} diff --git a/tests/baselines/reference/for-inStatementsDestructuring.errors.txt b/tests/baselines/reference/for-inStatementsDestructuring.errors.txt index e540b182cf5..e54f2c93272 100644 --- a/tests/baselines/reference/for-inStatementsDestructuring.errors.txt +++ b/tests/baselines/reference/for-inStatementsDestructuring.errors.txt @@ -1,7 +1,10 @@ +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring.ts(1,10): error TS2461: Type 'string' is not an array type. tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring.ts(1,10): error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. -==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring.ts (1 errors) ==== +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring.ts (2 errors) ==== for (var [a, b] in []) {} ~~~~~~ +!!! error TS2461: Type 'string' is not an array type. + ~~~~~~ !!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt b/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt index 56d2436d4c7..7589610a64e 100644 --- a/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt +++ b/tests/baselines/reference/for-inStatementsDestructuring2.errors.txt @@ -1,7 +1,13 @@ tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts(1,10): error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts(1,11): error TS2459: Type 'string' has no property 'a' and no string index signature. +tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts(1,14): error TS2459: Type 'string' has no property 'b' and no string index signature. -==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts (1 errors) ==== +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsDestructuring2.ts (3 errors) ==== for (var {a, b} in []) {} ~~~~~~ -!!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. \ No newline at end of file +!!! error TS2491: The left-hand side of a 'for...in' statement cannot be a destructuring pattern. + ~ +!!! error TS2459: Type 'string' has no property 'a' and no string index signature. + ~ +!!! error TS2459: Type 'string' has no property 'b' and no string index signature. \ No newline at end of file diff --git a/tests/baselines/reference/for-inStatementsInvalid.errors.txt b/tests/baselines/reference/for-inStatementsInvalid.errors.txt index 67e536a3069..00ab58ab94d 100644 --- a/tests/baselines/reference/for-inStatementsInvalid.errors.txt +++ b/tests/baselines/reference/for-inStatementsInvalid.errors.txt @@ -7,7 +7,6 @@ tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(1 tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(18,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(19,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(20,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. -tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(21,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(22,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(29,23): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(38,23): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. @@ -16,7 +15,7 @@ tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(5 tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(62,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. -==== tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts (16 errors) ==== +==== tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts (15 errors) ==== var aNumber: number; for (aNumber in {}) { } ~~~~~~~ @@ -56,8 +55,6 @@ tests/cases/conformance/statements/for-inStatements/for-inStatementsInvalid.ts(6 ~~~~~~~~~~ !!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. for (var x in 42 ? d[x] : c[x]) { } - ~~~~~~~~~~~~~~~~ -!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. for (var x in c[23]) { } ~~~~~ !!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. diff --git a/tests/baselines/reference/forInBreakStatements.types b/tests/baselines/reference/forInBreakStatements.types index 7714429e5af..4f4b9b3bef9 100644 --- a/tests/baselines/reference/forInBreakStatements.types +++ b/tests/baselines/reference/forInBreakStatements.types @@ -1,7 +1,7 @@ === tests/cases/conformance/statements/breakStatements/forInBreakStatements.ts === for(var x in {}) { ->x : any +>x : string >{} : {} break; @@ -11,7 +11,7 @@ ONE: >ONE : any for(var x in {}) { ->x : any +>x : string >{} : {} break ONE; @@ -25,7 +25,7 @@ THREE: >THREE : any for(var x in {}) { ->x : any +>x : string >{} : {} break THREE; @@ -36,14 +36,14 @@ FOUR: >FOUR : any for(var x in {}) { ->x : any +>x : string >{} : {} FIVE: >FIVE : any for(var x in {}) { ->x : any +>x : string >{} : {} break FOUR; @@ -52,14 +52,14 @@ for(var x in {}) { } for(var x in {}) { ->x : any +>x : string >{} : {} SIX: >SIX : any for(var x in {}) break SIX; ->x : any +>x : string >{} : {} >SIX : any } @@ -68,11 +68,11 @@ SEVEN: >SEVEN : any for (var x in {}) for (var x in {}) for (var x in {}) break SEVEN; ->x : any +>x : string >{} : {} ->x : any +>x : string >{} : {} ->x : any +>x : string >{} : {} >SEVEN : any @@ -80,7 +80,7 @@ EIGHT: >EIGHT : any for (var x in {}){ ->x : any +>x : string >{} : {} var fn = function () { } diff --git a/tests/baselines/reference/forInContinueStatements.types b/tests/baselines/reference/forInContinueStatements.types index 572fd16053d..e45cc798542 100644 --- a/tests/baselines/reference/forInContinueStatements.types +++ b/tests/baselines/reference/forInContinueStatements.types @@ -1,7 +1,7 @@ === tests/cases/conformance/statements/continueStatements/forInContinueStatements.ts === for(var x in {}) { ->x : any +>x : string >{} : {} continue; @@ -11,7 +11,7 @@ ONE: >ONE : any for(var x in {}) { ->x : any +>x : string >{} : {} continue ONE; @@ -25,7 +25,7 @@ THREE: >THREE : any for(var x in {}) { ->x : any +>x : string >{} : {} continue THREE; @@ -36,14 +36,14 @@ FOUR: >FOUR : any for(var x in {}) { ->x : any +>x : string >{} : {} FIVE: >FIVE : any for(var x in {}) { ->x : any +>x : string >{} : {} continue FOUR; @@ -52,14 +52,14 @@ for(var x in {}) { } for(var x in {}) { ->x : any +>x : string >{} : {} SIX: >SIX : any for(var x in {}) continue SIX; ->x : any +>x : string >{} : {} >SIX : any } @@ -68,11 +68,11 @@ SEVEN: >SEVEN : any for (var x in {}) for (var x in {}) for (var x in {}) continue SEVEN; ->x : any +>x : string >{} : {} ->x : any +>x : string >{} : {} ->x : any +>x : string >{} : {} >SEVEN : any @@ -80,7 +80,7 @@ EIGHT: >EIGHT : any for (var x in {}){ ->x : any +>x : string >{} : {} var fn = function () { } diff --git a/tests/baselines/reference/forInStatement1.types b/tests/baselines/reference/forInStatement1.types index 8ccacc9e2f7..ed2e568a39e 100644 --- a/tests/baselines/reference/forInStatement1.types +++ b/tests/baselines/reference/forInStatement1.types @@ -3,6 +3,6 @@ var expr: any; >expr : any for (var a in expr) { ->a : any +>a : string >expr : any } diff --git a/tests/baselines/reference/forInStatement3.types b/tests/baselines/reference/forInStatement3.types index 1d3803065bd..d3767790ed2 100644 --- a/tests/baselines/reference/forInStatement3.types +++ b/tests/baselines/reference/forInStatement3.types @@ -8,7 +8,7 @@ function F() { >T : T for (var a in expr) { ->a : any +>a : string >expr : T } } diff --git a/tests/baselines/reference/implicitAnyInCatch.types b/tests/baselines/reference/implicitAnyInCatch.types index cd0dd2d2423..015d41b123f 100644 --- a/tests/baselines/reference/implicitAnyInCatch.types +++ b/tests/baselines/reference/implicitAnyInCatch.types @@ -12,7 +12,7 @@ try { } catch (error) { >2147024809 : number } for (var key in this) { } ->key : any +>key : string >this : any class C { @@ -22,7 +22,7 @@ class C { >temp : () => void for (var x in this) { ->x : any +>x : string >this : this } } diff --git a/tests/baselines/reference/inOperatorWithGeneric.types b/tests/baselines/reference/inOperatorWithGeneric.types index 2048e11082a..facdb7b50e2 100644 --- a/tests/baselines/reference/inOperatorWithGeneric.types +++ b/tests/baselines/reference/inOperatorWithGeneric.types @@ -9,7 +9,7 @@ class C { >T : T for (var p in x) { ->p : any +>p : string >x : T } } diff --git a/tests/baselines/reference/letDeclarations-es5.types b/tests/baselines/reference/letDeclarations-es5.types index 005e0b26155..f6e8d418632 100644 --- a/tests/baselines/reference/letDeclarations-es5.types +++ b/tests/baselines/reference/letDeclarations-es5.types @@ -29,7 +29,7 @@ let l9 = 0, l10 :string = "", l11 = null; >null : null for(let l11 in {}) { } ->l11 : any +>l11 : string >{} : {} for(let l12 = 0; l12 < 9; l12++) { } diff --git a/tests/baselines/reference/letDeclarations.types b/tests/baselines/reference/letDeclarations.types index 55be4326b19..bb20f895a14 100644 --- a/tests/baselines/reference/letDeclarations.types +++ b/tests/baselines/reference/letDeclarations.types @@ -29,7 +29,7 @@ let l9 = 0, l10 :string = "", l11 = null; >null : null for(let l11 in {}) { } ->l11 : any +>l11 : string >{} : {} for(let l12 = 0; l12 < 9; l12++) { } diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES5.types b/tests/baselines/reference/letInVarDeclOfForIn_ES5.types index ac1ca3f27c9..095ae16b91e 100644 --- a/tests/baselines/reference/letInVarDeclOfForIn_ES5.types +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES5.types @@ -2,7 +2,7 @@ // should not be an error for (var let in [1,2,3]) {} ->let : any +>let : string >[1,2,3] : number[] >1 : number >2 : number @@ -10,7 +10,7 @@ for (var let in [1,2,3]) {} { for (var let in [1,2,3]) {} ->let : any +>let : string >[1,2,3] : number[] >1 : number >2 : number diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES6.types b/tests/baselines/reference/letInVarDeclOfForIn_ES6.types index 3c508bd8e2b..a5e2ce108db 100644 --- a/tests/baselines/reference/letInVarDeclOfForIn_ES6.types +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES6.types @@ -2,7 +2,7 @@ // should not be an error for (var let in [1,2,3]) {} ->let : any +>let : string >[1,2,3] : number[] >1 : number >2 : number @@ -10,7 +10,7 @@ for (var let in [1,2,3]) {} { for (var let in [1,2,3]) {} ->let : any +>let : string >[1,2,3] : number[] >1 : number >2 : number diff --git a/tests/baselines/reference/parserES5ForOfStatement19.errors.txt b/tests/baselines/reference/parserES5ForOfStatement19.errors.txt new file mode 100644 index 00000000000..9d0bb02f1ef --- /dev/null +++ b/tests/baselines/reference/parserES5ForOfStatement19.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement19.ts(1,16): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. + + +==== tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement19.ts (1 errors) ==== + for (var of in of) { } + ~~ +!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. \ No newline at end of file diff --git a/tests/baselines/reference/parserES5ForOfStatement19.symbols b/tests/baselines/reference/parserES5ForOfStatement19.symbols deleted file mode 100644 index 93ba77e3db9..00000000000 --- a/tests/baselines/reference/parserES5ForOfStatement19.symbols +++ /dev/null @@ -1,5 +0,0 @@ -=== tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement19.ts === -for (var of in of) { } ->of : Symbol(of, Decl(parserES5ForOfStatement19.ts, 0, 8)) ->of : Symbol(of, Decl(parserES5ForOfStatement19.ts, 0, 8)) - diff --git a/tests/baselines/reference/parserES5ForOfStatement19.types b/tests/baselines/reference/parserES5ForOfStatement19.types deleted file mode 100644 index 13abc7ae757..00000000000 --- a/tests/baselines/reference/parserES5ForOfStatement19.types +++ /dev/null @@ -1,5 +0,0 @@ -=== tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement19.ts === -for (var of in of) { } ->of : any ->of : any - diff --git a/tests/baselines/reference/parserES5ForOfStatement20.errors.txt b/tests/baselines/reference/parserES5ForOfStatement20.errors.txt index 4aee32394b6..2bfc54590ad 100644 --- a/tests/baselines/reference/parserES5ForOfStatement20.errors.txt +++ b/tests/baselines/reference/parserES5ForOfStatement20.errors.txt @@ -1,7 +1,10 @@ tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement20.ts(1,10): error TS1189: The variable declaration of a 'for...in' statement cannot have an initializer. +tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement20.ts(1,20): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. -==== tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement20.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Statements/parserES5ForOfStatement20.ts (2 errors) ==== for (var of = 0 in of) { } ~~ -!!! error TS1189: The variable declaration of a 'for...in' statement cannot have an initializer. \ No newline at end of file +!!! error TS1189: The variable declaration of a 'for...in' statement cannot have an initializer. + ~~ +!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. \ No newline at end of file diff --git a/tests/baselines/reference/parserForOfStatement19.errors.txt b/tests/baselines/reference/parserForOfStatement19.errors.txt new file mode 100644 index 00000000000..a111498efe7 --- /dev/null +++ b/tests/baselines/reference/parserForOfStatement19.errors.txt @@ -0,0 +1,7 @@ +tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement19.ts(1,16): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. + + +==== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement19.ts (1 errors) ==== + for (var of in of) { } + ~~ +!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. \ No newline at end of file diff --git a/tests/baselines/reference/parserForOfStatement19.symbols b/tests/baselines/reference/parserForOfStatement19.symbols deleted file mode 100644 index 1e123349e13..00000000000 --- a/tests/baselines/reference/parserForOfStatement19.symbols +++ /dev/null @@ -1,5 +0,0 @@ -=== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement19.ts === -for (var of in of) { } ->of : Symbol(of, Decl(parserForOfStatement19.ts, 0, 8)) ->of : Symbol(of, Decl(parserForOfStatement19.ts, 0, 8)) - diff --git a/tests/baselines/reference/parserForOfStatement19.types b/tests/baselines/reference/parserForOfStatement19.types deleted file mode 100644 index 6fcc5e8f792..00000000000 --- a/tests/baselines/reference/parserForOfStatement19.types +++ /dev/null @@ -1,5 +0,0 @@ -=== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement19.ts === -for (var of in of) { } ->of : any ->of : any - diff --git a/tests/baselines/reference/parserForOfStatement20.errors.txt b/tests/baselines/reference/parserForOfStatement20.errors.txt index 461f307f6b9..f2b6ac39a83 100644 --- a/tests/baselines/reference/parserForOfStatement20.errors.txt +++ b/tests/baselines/reference/parserForOfStatement20.errors.txt @@ -1,7 +1,10 @@ tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement20.ts(1,10): error TS1189: The variable declaration of a 'for...in' statement cannot have an initializer. +tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement20.ts(1,20): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. -==== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement20.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript6/Iterators/parserForOfStatement20.ts (2 errors) ==== for (var of = 0 in of) { } ~~ -!!! error TS1189: The variable declaration of a 'for...in' statement cannot have an initializer. \ No newline at end of file +!!! error TS1189: The variable declaration of a 'for...in' statement cannot have an initializer. + ~~ +!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. \ No newline at end of file diff --git a/tests/baselines/reference/recursiveLetConst.errors.txt b/tests/baselines/reference/recursiveLetConst.errors.txt index 88ecb379e5e..6d3f15880bb 100644 --- a/tests/baselines/reference/recursiveLetConst.errors.txt +++ b/tests/baselines/reference/recursiveLetConst.errors.txt @@ -5,13 +5,14 @@ tests/cases/compiler/recursiveLetConst.ts(5,14): error TS2448: Block-scoped vari tests/cases/compiler/recursiveLetConst.ts(6,14): error TS2448: Block-scoped variable 'v' used before its declaration. tests/cases/compiler/recursiveLetConst.ts(7,1): error TS7027: Unreachable code detected. tests/cases/compiler/recursiveLetConst.ts(7,16): error TS2448: Block-scoped variable 'v' used before its declaration. +tests/cases/compiler/recursiveLetConst.ts(8,15): error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. tests/cases/compiler/recursiveLetConst.ts(8,15): error TS2448: Block-scoped variable 'v' used before its declaration. tests/cases/compiler/recursiveLetConst.ts(9,15): error TS2448: Block-scoped variable 'v' used before its declaration. tests/cases/compiler/recursiveLetConst.ts(10,17): error TS2448: Block-scoped variable 'v' used before its declaration. tests/cases/compiler/recursiveLetConst.ts(11,11): error TS2448: Block-scoped variable 'x2' used before its declaration. -==== tests/cases/compiler/recursiveLetConst.ts (11 errors) ==== +==== tests/cases/compiler/recursiveLetConst.ts (12 errors) ==== 'use strict' let x = x + 1; ~ @@ -35,6 +36,8 @@ tests/cases/compiler/recursiveLetConst.ts(11,11): error TS2448: Block-scoped var !!! error TS2448: Block-scoped variable 'v' used before its declaration. for (let v in v) { } ~ +!!! error TS2407: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter. + ~ !!! error TS2448: Block-scoped variable 'v' used before its declaration. for (let v of v) { } ~ diff --git a/tests/baselines/reference/throwInEnclosingStatements.types b/tests/baselines/reference/throwInEnclosingStatements.types index 568fd800e35..32f0fb093bc 100644 --- a/tests/baselines/reference/throwInEnclosingStatements.types +++ b/tests/baselines/reference/throwInEnclosingStatements.types @@ -51,9 +51,9 @@ for (var i = 0; ;) { throw i; } >i : number for (var idx in {}) { throw idx; } ->idx : any +>idx : string >{} : {} ->idx : any +>idx : string do { throw null; }while(true) >null : null From 36af815bbabfc9d109336543ebb0fd4d85c67a12 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Wed, 6 Jan 2016 12:37:52 -0800 Subject: [PATCH 139/164] add optional 'directoryExists' method to hosts to reduce amount of disk probings that are known to fail --- src/compiler/program.ts | 36 ++- src/compiler/types.ts | 2 + src/harness/harnessLanguageService.ts | 4 + src/server/editorServices.ts | 3 +- src/services/services.ts | 8 +- src/services/shims.ts | 16 +- tests/cases/unittests/moduleResolution.ts | 263 ++++++++++++++-------- 7 files changed, 222 insertions(+), 110 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index c9de6a0ed96..349c4a86efa 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -53,13 +53,13 @@ namespace ts { if (getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { const failedLookupLocations: string[] = []; const candidate = normalizePath(combinePaths(containingDirectory, moduleName)); - let resolvedFileName = loadNodeModuleFromFile(supportedExtensions, candidate, failedLookupLocations, host); + let resolvedFileName = loadNodeModuleFromFile(supportedExtensions, candidate, failedLookupLocations, /*onlyRecordFailures*/ false, host); if (resolvedFileName) { return { resolvedModule: { resolvedFileName }, failedLookupLocations }; } - resolvedFileName = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, host); + resolvedFileName = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, /*onlyRecordFailures*/ false, host); return resolvedFileName ? { resolvedModule: { resolvedFileName }, failedLookupLocations } : { resolvedModule: undefined, failedLookupLocations }; @@ -69,12 +69,22 @@ namespace ts { } } - function loadNodeModuleFromFile(extensions: string[], candidate: string, failedLookupLocation: string[], host: ModuleResolutionHost): string { + /* @internal */ + export function directoryProbablyExists(directoryName: string, host: { directoryExists?: (directoryName: string) => boolean } ): boolean { + // if host does not support 'directoryExists' assume that directory will exist + return !host.directoryExists || host.directoryExists(directoryName); + } + + /** + * @param {boolean} onlyRecordFailures - if true then function won't try to actually load files but instead record all attempts as failures. This flag is necessary + * in cases when we know upfront that all load attempts will fail (because containing folder does not exists) however we still need to record all failed lookup locations. + */ + function loadNodeModuleFromFile(extensions: string[], candidate: string, failedLookupLocation: string[], onlyRecordFailures: boolean, host: ModuleResolutionHost): string { return forEach(extensions, tryLoad); function tryLoad(ext: string): string { const fileName = fileExtensionIs(candidate, ext) ? candidate : candidate + ext; - if (host.fileExists(fileName)) { + if (!onlyRecordFailures && host.fileExists(fileName)) { return fileName; } else { @@ -84,9 +94,10 @@ namespace ts { } } - function loadNodeModuleFromDirectory(extensions: string[], candidate: string, failedLookupLocation: string[], host: ModuleResolutionHost): string { + function loadNodeModuleFromDirectory(extensions: string[], candidate: string, failedLookupLocation: string[], onlyRecordFailures: boolean, host: ModuleResolutionHost): string { const packageJsonPath = combinePaths(candidate, "package.json"); - if (host.fileExists(packageJsonPath)) { + const directoryExists = !onlyRecordFailures && directoryProbablyExists(candidate, host); + if (directoryExists && host.fileExists(packageJsonPath)) { let jsonContent: { typings?: string }; @@ -100,7 +111,8 @@ namespace ts { } if (typeof jsonContent.typings === "string") { - const result = loadNodeModuleFromFile(extensions, normalizePath(combinePaths(candidate, jsonContent.typings)), failedLookupLocation, host); + const path = normalizePath(combinePaths(candidate, jsonContent.typings)); + const result = loadNodeModuleFromFile(extensions, path, failedLookupLocation, !directoryProbablyExists(getDirectoryPath(path), host), host); if (result) { return result; } @@ -111,7 +123,7 @@ namespace ts { failedLookupLocation.push(packageJsonPath); } - return loadNodeModuleFromFile(extensions, combinePaths(candidate, "index"), failedLookupLocation, host); + return loadNodeModuleFromFile(extensions, combinePaths(candidate, "index"), failedLookupLocation, !directoryExists, host); } function loadModuleFromNodeModules(moduleName: string, directory: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations { @@ -121,14 +133,15 @@ namespace ts { const baseName = getBaseFileName(directory); if (baseName !== "node_modules") { const nodeModulesFolder = combinePaths(directory, "node_modules"); + const nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, host); const candidate = normalizePath(combinePaths(nodeModulesFolder, moduleName)); // Load only typescript files irrespective of allowJs option if loading from node modules - let result = loadNodeModuleFromFile(supportedTypeScriptExtensions, candidate, failedLookupLocations, host); + let result = loadNodeModuleFromFile(supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations }; } - result = loadNodeModuleFromDirectory(supportedTypeScriptExtensions, candidate, failedLookupLocations, host); + result = loadNodeModuleFromDirectory(supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations }; } @@ -281,7 +294,8 @@ namespace ts { getCanonicalFileName, getNewLine: () => newLine, fileExists: fileName => sys.fileExists(fileName), - readFile: fileName => sys.readFile(fileName) + readFile: fileName => sys.readFile(fileName), + directoryExists: directoryName => sys.directoryExists(directoryName) }; } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 24f70373a8a..8fc5f5079fb 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2649,6 +2649,8 @@ namespace ts { // readFile function is used to read arbitrary text files on disk, i.e. when resolution procedure needs the content of 'package.json' // to determine location of bundled typings for node module readFile(fileName: string): string; + + directoryExists?(directoryName: string): boolean; } export interface ResolvedModule { diff --git a/src/harness/harnessLanguageService.ts b/src/harness/harnessLanguageService.ts index fb5b6ce92aa..a0cac439729 100644 --- a/src/harness/harnessLanguageService.ts +++ b/src/harness/harnessLanguageService.ts @@ -267,6 +267,10 @@ namespace Harness.LanguageService { log(s: string): void { this.nativeHost.log(s); } trace(s: string): void { this.nativeHost.trace(s); } error(s: string): void { this.nativeHost.error(s); } + directoryExists(directoryName: string): boolean { + // for tests pessimistically assume that directory always exists + return true; + } } class ClassifierShimProxy implements ts.Classifier { diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index d78f7d40ef6..2c021106c74 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -100,7 +100,8 @@ namespace ts.server { this.filenameToScript = createFileMap(); this.moduleResolutionHost = { fileExists: fileName => this.fileExists(fileName), - readFile: fileName => this.host.readFile(fileName) + readFile: fileName => this.host.readFile(fileName), + directoryExists: directoryName => this.host.directoryExists(directoryName) }; } diff --git a/src/services/services.ts b/src/services/services.ts index 0fd4df19907..f2651163610 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1034,6 +1034,7 @@ namespace ts { * host specific questions using 'getScriptSnapshot'. */ resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + directoryExists?(directoryName: string): boolean; } // @@ -1911,7 +1912,8 @@ namespace ts { getCurrentDirectory: () => "", getNewLine: () => newLine, fileExists: (fileName): boolean => fileName === inputFileName, - readFile: (fileName): string => "" + readFile: (fileName): string => "", + directoryExists: directoryExists => true }; const program = createProgram([inputFileName], options, compilerHost); @@ -2768,6 +2770,10 @@ namespace ts { // stub missing host functionality const entry = hostCache.getOrCreateEntry(fileName); return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); + }, + directoryExists: directoryName => { + Debug.assert(!host.resolveModuleNames); + return directoryProbablyExists(directoryName, host); } }; diff --git a/src/services/shims.ts b/src/services/shims.ts index 6b656ea2738..397f86f871f 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -62,6 +62,7 @@ namespace ts { useCaseSensitiveFileNames?(): boolean; getModuleResolutionsForFile?(fileName: string): string; + directoryExists(directoryName: string): boolean; } /** Public interface of the the of a config service shim instance.*/ @@ -274,6 +275,7 @@ namespace ts { private tracingEnabled = false; public resolveModuleNames: (moduleName: string[], containingFile: string) => ResolvedModule[]; + public directoryExists: (directoryName: string) => boolean; constructor(private shimHost: LanguageServiceShimHost) { // if shimHost is a COM object then property check will become method call with no arguments. @@ -287,6 +289,9 @@ namespace ts { }); }; } + if ("directoryExists" in this.shimHost) { + this.directoryExists = directoryName => this.shimHost.directoryExists(directoryName); + } } public log(s: string): void { @@ -405,9 +410,14 @@ namespace ts { } } - export class CoreServicesShimHostAdapter implements ParseConfigHost { + export class CoreServicesShimHostAdapter implements ParseConfigHost, ModuleResolutionHost { + public directoryExists: (directoryName: string) => boolean; + constructor(private shimHost: CoreServicesShimHost) { + if ("directoryExists" in this.shimHost) { + this.directoryExists = directoryName => this.shimHost.directoryExists(directoryName); + } } public readDirectory(rootDir: string, extension: string, exclude: string[]): string[] { @@ -424,11 +434,11 @@ namespace ts { } return JSON.parse(encoded); } - + public fileExists(fileName: string): boolean { return this.shimHost.fileExists(fileName); } - + public readFile(fileName: string): string { return this.shimHost.readFile(fileName); } diff --git a/tests/cases/unittests/moduleResolution.ts b/tests/cases/unittests/moduleResolution.ts index 5b924650401..81d7c5f8b2e 100644 --- a/tests/cases/unittests/moduleResolution.ts +++ b/tests/cases/unittests/moduleResolution.ts @@ -26,15 +26,36 @@ module ts { content?: string } - function createModuleResolutionHost(...files: File[]): ModuleResolutionHost { + function createModuleResolutionHost(hasDirectoryExists: boolean, ...files: File[]): ModuleResolutionHost { let map = arrayToMap(files, f => f.name); - return { fileExists, readFile }; - - function fileExists(path: string): boolean { - return hasProperty(map, path); + if (hasDirectoryExists) { + const directories: Map = {}; + for (const f of files) { + let name = getDirectoryPath(f.name); + while (true) { + directories[name] = name; + let baseName = getDirectoryPath(name); + if (baseName === name) { + break; + } + name = baseName; + } + } + return { + readFile, + directoryExists: path => { + return hasProperty(directories, path); + }, + fileExists: path => { + assert.isTrue(hasProperty(directories, getDirectoryPath(path)), "'fileExists' request in non-existing directory"); + return hasProperty(map, path); + } + } + } + else { + return { readFile, fileExists: path => hasProperty(map, path), }; } - function readFile(path: string): string { return hasProperty(map, path) ? map[path].content : undefined; } @@ -51,9 +72,14 @@ module ts { function testLoadAsFile(containingFileName: string, moduleFileNameNoExt: string, moduleName: string): void { for (let ext of supportedTypeScriptExtensions) { + test(ext, /*hasDirectoryExists*/ false); + test(ext, /*hasDirectoryExists*/ true); + } + + function test(ext: string, hasDirectoryExists: boolean) { let containingFile = { name: containingFileName } let moduleFile = { name: moduleFileNameNoExt + ext } - let resolution = nodeModuleNameResolver(moduleName, containingFile.name, {}, createModuleResolutionHost(containingFile, moduleFile)); + let resolution = nodeModuleNameResolver(moduleName, containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, moduleFile)); assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); @@ -69,6 +95,7 @@ module ts { } assert.deepEqual(resolution.failedLookupLocations, failedLookupLocations); + } } @@ -89,14 +116,19 @@ module ts { }); function testLoadingFromPackageJson(containingFileName: string, packageJsonFileName: string, fieldRef: string, moduleFileName: string, moduleName: string): void { - let containingFile = { name: containingFileName }; - let packageJson = { name: packageJsonFileName, content: JSON.stringify({ "typings": fieldRef }) }; - let moduleFile = { name: moduleFileName }; - let resolution = nodeModuleNameResolver(moduleName, containingFile.name, {}, createModuleResolutionHost(containingFile, packageJson, moduleFile)); - assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); - // expect three failed lookup location - attempt to load module as file with all supported extensions - assert.equal(resolution.failedLookupLocations.length, supportedTypeScriptExtensions.length); + test(/*hasDirectoryExists*/ false); + test(/*hasDirectoryExists*/ true); + + function test(hasDirectoryExists: boolean) { + let containingFile = { name: containingFileName }; + let packageJson = { name: packageJsonFileName, content: JSON.stringify({ "typings": fieldRef }) }; + let moduleFile = { name: moduleFileName }; + let resolution = nodeModuleNameResolver(moduleName, containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, packageJson, moduleFile)); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); + // expect three failed lookup location - attempt to load module as file with all supported extensions + assert.equal(resolution.failedLookupLocations.length, supportedTypeScriptExtensions.length); + } } it("module name as directory - load from 'typings'", () => { @@ -107,16 +139,21 @@ module ts { }); function testTypingsIgnored(typings: any): void { - let containingFile = { name: "/a/b.ts" }; - let packageJson = { name: "/node_modules/b/package.json", content: JSON.stringify({ "typings": typings }) }; - let moduleFile = { name: "/a/b.d.ts" }; + test(/*hasDirectoryExists*/ false); + test(/*hasDirectoryExists*/ true); - let indexPath = "/node_modules/b/index.d.ts"; - let indexFile = { name: indexPath } + function test(hasDirectoryExists: boolean) { + let containingFile = { name: "/a/b.ts" }; + let packageJson = { name: "/node_modules/b/package.json", content: JSON.stringify({ "typings": typings }) }; + let moduleFile = { name: "/a/b.d.ts" }; - let resolution = nodeModuleNameResolver("b", containingFile.name, {}, createModuleResolutionHost(containingFile, packageJson, moduleFile, indexFile)); + let indexPath = "/node_modules/b/index.d.ts"; + let indexFile = { name: indexPath } - assert.equal(resolution.resolvedModule.resolvedFileName, indexPath); + let resolution = nodeModuleNameResolver("b", containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, packageJson, moduleFile, indexFile)); + + assert.equal(resolution.resolvedModule.resolvedFileName, indexPath); + } } it("module name as directory - handle invalid 'typings'", () => { @@ -128,89 +165,110 @@ module ts { }); it("module name as directory - load index.d.ts", () => { - let containingFile = { name: "/a/b/c.ts" }; - let packageJson = { name: "/a/b/foo/package.json", content: JSON.stringify({ main: "/c/d" }) }; - let indexFile = { name: "/a/b/foo/index.d.ts" }; - let resolution = nodeModuleNameResolver("./foo", containingFile.name, {}, createModuleResolutionHost(containingFile, packageJson, indexFile)); - assert.equal(resolution.resolvedModule.resolvedFileName, indexFile.name); - assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); - assert.deepEqual(resolution.failedLookupLocations, [ - "/a/b/foo.ts", - "/a/b/foo.tsx", - "/a/b/foo.d.ts", - "/a/b/foo/index.ts", - "/a/b/foo/index.tsx", - ]); + test(/*hasDirectoryExists*/ false); + test(/*hasDirectoryExists*/ true); + + function test(hasDirectoryExists: boolean) { + let containingFile = { name: "/a/b/c.ts" }; + let packageJson = { name: "/a/b/foo/package.json", content: JSON.stringify({ main: "/c/d" }) }; + let indexFile = { name: "/a/b/foo/index.d.ts" }; + let resolution = nodeModuleNameResolver("./foo", containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, packageJson, indexFile)); + assert.equal(resolution.resolvedModule.resolvedFileName, indexFile.name); + assert.equal(!!resolution.resolvedModule.isExternalLibraryImport, false); + assert.deepEqual(resolution.failedLookupLocations, [ + "/a/b/foo.ts", + "/a/b/foo.tsx", + "/a/b/foo.d.ts", + "/a/b/foo/index.ts", + "/a/b/foo/index.tsx", + ]); + } }); }); describe("Node module resolution - non-relative paths", () => { it("load module as file - ts files not loaded", () => { - let containingFile = { name: "/a/b/c/d/e.ts" }; - let moduleFile = { name: "/a/b/node_modules/foo.ts" }; - let resolution = nodeModuleNameResolver("foo", containingFile.name, {}, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.deepEqual(resolution.failedLookupLocations, [ - "/a/b/c/d/node_modules/foo.ts", - "/a/b/c/d/node_modules/foo.tsx", - "/a/b/c/d/node_modules/foo.d.ts", - "/a/b/c/d/node_modules/foo/package.json", - "/a/b/c/d/node_modules/foo/index.ts", - "/a/b/c/d/node_modules/foo/index.tsx", - "/a/b/c/d/node_modules/foo/index.d.ts", - "/a/b/c/node_modules/foo.ts", - "/a/b/c/node_modules/foo.tsx", - "/a/b/c/node_modules/foo.d.ts", - "/a/b/c/node_modules/foo/package.json", - "/a/b/c/node_modules/foo/index.ts", - "/a/b/c/node_modules/foo/index.tsx", - "/a/b/c/node_modules/foo/index.d.ts", - ]) + test(/*hasDirectoryExists*/ false); + test(/*hasDirectoryExists*/ true); + + function test(hasDirectoryExists: boolean) { + let containingFile = { name: "/a/b/c/d/e.ts" }; + let moduleFile = { name: "/a/b/node_modules/foo.ts" }; + let resolution = nodeModuleNameResolver("foo", containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, moduleFile)); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.deepEqual(resolution.failedLookupLocations, [ + "/a/b/c/d/node_modules/foo.ts", + "/a/b/c/d/node_modules/foo.tsx", + "/a/b/c/d/node_modules/foo.d.ts", + "/a/b/c/d/node_modules/foo/package.json", + "/a/b/c/d/node_modules/foo/index.ts", + "/a/b/c/d/node_modules/foo/index.tsx", + "/a/b/c/d/node_modules/foo/index.d.ts", + "/a/b/c/node_modules/foo.ts", + "/a/b/c/node_modules/foo.tsx", + "/a/b/c/node_modules/foo.d.ts", + "/a/b/c/node_modules/foo/package.json", + "/a/b/c/node_modules/foo/index.ts", + "/a/b/c/node_modules/foo/index.tsx", + "/a/b/c/node_modules/foo/index.d.ts", + ]) + } }); it("load module as file", () => { - let containingFile = { name: "/a/b/c/d/e.ts" }; - let moduleFile = { name: "/a/b/node_modules/foo.d.ts" }; - let resolution = nodeModuleNameResolver("foo", containingFile.name, {}, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); + test(/*hasDirectoryExists*/ false); + test(/*hasDirectoryExists*/ true); + + function test(hasDirectoryExists: boolean) { + let containingFile = { name: "/a/b/c/d/e.ts" }; + let moduleFile = { name: "/a/b/node_modules/foo.d.ts" }; + let resolution = nodeModuleNameResolver("foo", containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, moduleFile)); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); + } }); it("load module as directory", () => { - let containingFile = { name: "/a/node_modules/b/c/node_modules/d/e.ts" }; - let moduleFile = { name: "/a/node_modules/foo/index.d.ts" }; - let resolution = nodeModuleNameResolver("foo", containingFile.name, {}, createModuleResolutionHost(containingFile, moduleFile)); - assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); - assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); - assert.deepEqual(resolution.failedLookupLocations, [ - "/a/node_modules/b/c/node_modules/d/node_modules/foo.ts", - "/a/node_modules/b/c/node_modules/d/node_modules/foo.tsx", - "/a/node_modules/b/c/node_modules/d/node_modules/foo.d.ts", - "/a/node_modules/b/c/node_modules/d/node_modules/foo/package.json", - "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.ts", - "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.tsx", - "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.d.ts", - "/a/node_modules/b/c/node_modules/foo.ts", - "/a/node_modules/b/c/node_modules/foo.tsx", - "/a/node_modules/b/c/node_modules/foo.d.ts", - "/a/node_modules/b/c/node_modules/foo/package.json", - "/a/node_modules/b/c/node_modules/foo/index.ts", - "/a/node_modules/b/c/node_modules/foo/index.tsx", - "/a/node_modules/b/c/node_modules/foo/index.d.ts", - "/a/node_modules/b/node_modules/foo.ts", - "/a/node_modules/b/node_modules/foo.tsx", - "/a/node_modules/b/node_modules/foo.d.ts", - "/a/node_modules/b/node_modules/foo/package.json", - "/a/node_modules/b/node_modules/foo/index.ts", - "/a/node_modules/b/node_modules/foo/index.tsx", - "/a/node_modules/b/node_modules/foo/index.d.ts", - "/a/node_modules/foo.ts", - "/a/node_modules/foo.tsx", - "/a/node_modules/foo.d.ts", - "/a/node_modules/foo/package.json", - "/a/node_modules/foo/index.ts", - "/a/node_modules/foo/index.tsx" - ]); + test(/*hasDirectoryExists*/ false); + test(/*hasDirectoryExists*/ true); + + function test(hasDirectoryExists: boolean) { + let containingFile = { name: "/a/node_modules/b/c/node_modules/d/e.ts" }; + let moduleFile = { name: "/a/node_modules/foo/index.d.ts" }; + let resolution = nodeModuleNameResolver("foo", containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, moduleFile)); + assert.equal(resolution.resolvedModule.resolvedFileName, moduleFile.name); + assert.equal(resolution.resolvedModule.isExternalLibraryImport, true); + assert.deepEqual(resolution.failedLookupLocations, [ + "/a/node_modules/b/c/node_modules/d/node_modules/foo.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/foo.tsx", + "/a/node_modules/b/c/node_modules/d/node_modules/foo.d.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/foo/package.json", + "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.ts", + "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.tsx", + "/a/node_modules/b/c/node_modules/d/node_modules/foo/index.d.ts", + "/a/node_modules/b/c/node_modules/foo.ts", + "/a/node_modules/b/c/node_modules/foo.tsx", + "/a/node_modules/b/c/node_modules/foo.d.ts", + "/a/node_modules/b/c/node_modules/foo/package.json", + "/a/node_modules/b/c/node_modules/foo/index.ts", + "/a/node_modules/b/c/node_modules/foo/index.tsx", + "/a/node_modules/b/c/node_modules/foo/index.d.ts", + "/a/node_modules/b/node_modules/foo.ts", + "/a/node_modules/b/node_modules/foo.tsx", + "/a/node_modules/b/node_modules/foo.d.ts", + "/a/node_modules/b/node_modules/foo/package.json", + "/a/node_modules/b/node_modules/foo/index.ts", + "/a/node_modules/b/node_modules/foo/index.tsx", + "/a/node_modules/b/node_modules/foo/index.d.ts", + "/a/node_modules/foo.ts", + "/a/node_modules/foo.tsx", + "/a/node_modules/foo.d.ts", + "/a/node_modules/foo/package.json", + "/a/node_modules/foo/index.ts", + "/a/node_modules/foo/index.tsx" + ]); + + } }); }); @@ -400,4 +458,21 @@ import b = require("./moduleB.ts"); test(files, { module: ts.ModuleKind.CommonJS, forceConsistentCasingInFileNames: true }, "/a/B/c", /* useCaseSensitiveFileNames */ false, ["moduleD.ts"], []); }) }); + + function notImplemented(name: string): () => any { + return () => assert(`${name} is not implemented and should not be called`); + } + + describe("ModuleResolutionHost.directoryExists", () => { + it("No 'fileExists' calls if containing directory is missing", () => { + const host: ModuleResolutionHost = { + readFile: notImplemented("readFile"), + fileExists: notImplemented("fileExists"), + directoryExists: _ => false + }; + + const result = resolveModuleName("someName", "/a/b/c/d", { moduleResolution: ModuleResolutionKind.NodeJs }, host); + assert(!result.resolvedModule); + }); + }); } \ No newline at end of file From 120569afb00f7ef68fc8bd7ce1c0533978aadfbc Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 6 Jan 2016 16:12:49 -0800 Subject: [PATCH 140/164] Support for-in both with and without variable declaration --- src/compiler/checker.ts | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4cd8ef1959d..62ab2080d28 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8564,17 +8564,43 @@ namespace ts { } /** - * Return true if given node is an expression consisting of an identifier (possibly parenthesized) - * that references a variable declared in a for-in statement for an array-like object. + * Return the symbol of the for-in variable declared or referenced by the given for-in statement. */ - function isForInVariableForArrayLikeObject(node: Expression) { - const e = skipParenthesizedNodes(node); + function getForInVariableSymbol(node: ForInStatement): Symbol { + const initializer = node.initializer; + if (initializer.kind === SyntaxKind.VariableDeclarationList) { + const variable = (initializer).declarations[0]; + if (variable && !isBindingPattern(variable.name)) { + return getSymbolOfNode(variable); + } + } + else if (initializer.kind === SyntaxKind.Identifier) { + return getResolvedSymbol(initializer); + } + return undefined; + } + + /** + * Return true if given node is an expression consisting of an identifier (possibly parenthesized) + * that references a variable declared in a containing for-in statement for an array-like object. + */ + function isForInVariableForArrayLikeObject(expr: Expression) { + const e = skipParenthesizedNodes(expr); if (e.kind === SyntaxKind.Identifier) { const symbol = getResolvedSymbol(e); if (symbol.flags & SymbolFlags.Variable) { - const parent = symbol.valueDeclaration.parent.parent; - return parent.kind === SyntaxKind.ForInStatement && - isArrayLikeType(checkExpression((parent).expression)); + let child: Node = expr; + let node = expr.parent; + while (node) { + if (node.kind === SyntaxKind.ForInStatement && + child === (node).statement && + getForInVariableSymbol(node) === symbol && + isArrayLikeType(checkExpression((node).expression))) { + return true; + } + child = node; + node = node.parent; + } } } return false; From 1798024f4fa76c8fb224386802098e98684b1511 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 6 Jan 2016 16:13:02 -0800 Subject: [PATCH 141/164] Updating tests --- .../reference/for-inStatementsArray.js | 51 +++++++++++ .../reference/for-inStatementsArray.symbols | 78 +++++++++++++++++ .../reference/for-inStatementsArray.types | 85 +++++++++++++++++++ .../for-inStatements/for-inStatementsArray.ts | 27 ++++++ 4 files changed, 241 insertions(+) diff --git a/tests/baselines/reference/for-inStatementsArray.js b/tests/baselines/reference/for-inStatementsArray.js index 5df8b41a2c2..e3d331e2d8c 100644 --- a/tests/baselines/reference/for-inStatementsArray.js +++ b/tests/baselines/reference/for-inStatementsArray.js @@ -10,6 +10,33 @@ for (let x in a) { let b2 = b[(x)]; let b3 = b[+x]; } + +for (let x in a) { + for (let y in a) { + for (let z in a) { + let a1 = a[x]; + let a2 = a[y]; + let a3 = a[z]; + } + } +} + +let i: string; +let j: string; +for (i in a) { + for (j in b) { + let a1 = a[i]; + let a2 = a[j]; + } +} + +var s: string; +for (var s in a) { + let a1 = a[s]; +} +for (s in a) { + let a1 = a[s]; +} //// [for-inStatementsArray.js] @@ -23,3 +50,27 @@ for (var x in a) { var b2 = b[(x)]; var b3 = b[+x]; } +for (var x in a) { + for (var y in a) { + for (var z in a) { + var a1 = a[x]; + var a2 = a[y]; + var a3 = a[z]; + } + } +} +var i; +var j; +for (i in a) { + for (j in b) { + var a1 = a[i]; + var a2 = a[j]; + } +} +var s; +for (var s in a) { + var a1 = a[s]; +} +for (s in a) { + var a1 = a[s]; +} diff --git a/tests/baselines/reference/for-inStatementsArray.symbols b/tests/baselines/reference/for-inStatementsArray.symbols index bcf0957514b..5b6ea9385cd 100644 --- a/tests/baselines/reference/for-inStatementsArray.symbols +++ b/tests/baselines/reference/for-inStatementsArray.symbols @@ -41,3 +41,81 @@ for (let x in a) { >x : Symbol(x, Decl(for-inStatementsArray.ts, 3, 8)) } +for (let x in a) { +>x : Symbol(x, Decl(for-inStatementsArray.ts, 12, 8)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + for (let y in a) { +>y : Symbol(y, Decl(for-inStatementsArray.ts, 13, 12)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + for (let z in a) { +>z : Symbol(z, Decl(for-inStatementsArray.ts, 14, 16)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + let a1 = a[x]; +>a1 : Symbol(a1, Decl(for-inStatementsArray.ts, 15, 15)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>x : Symbol(x, Decl(for-inStatementsArray.ts, 12, 8)) + + let a2 = a[y]; +>a2 : Symbol(a2, Decl(for-inStatementsArray.ts, 16, 15)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>y : Symbol(y, Decl(for-inStatementsArray.ts, 13, 12)) + + let a3 = a[z]; +>a3 : Symbol(a3, Decl(for-inStatementsArray.ts, 17, 15)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>z : Symbol(z, Decl(for-inStatementsArray.ts, 14, 16)) + } + } +} + +let i: string; +>i : Symbol(i, Decl(for-inStatementsArray.ts, 22, 3)) + +let j: string; +>j : Symbol(j, Decl(for-inStatementsArray.ts, 23, 3)) + +for (i in a) { +>i : Symbol(i, Decl(for-inStatementsArray.ts, 22, 3)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + for (j in b) { +>j : Symbol(j, Decl(for-inStatementsArray.ts, 23, 3)) +>b : Symbol(b, Decl(for-inStatementsArray.ts, 1, 3)) + + let a1 = a[i]; +>a1 : Symbol(a1, Decl(for-inStatementsArray.ts, 26, 11)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>i : Symbol(i, Decl(for-inStatementsArray.ts, 22, 3)) + + let a2 = a[j]; +>a2 : Symbol(a2, Decl(for-inStatementsArray.ts, 27, 11)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>j : Symbol(j, Decl(for-inStatementsArray.ts, 23, 3)) + } +} + +var s: string; +>s : Symbol(s, Decl(for-inStatementsArray.ts, 31, 3), Decl(for-inStatementsArray.ts, 32, 8)) + +for (var s in a) { +>s : Symbol(s, Decl(for-inStatementsArray.ts, 31, 3), Decl(for-inStatementsArray.ts, 32, 8)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + let a1 = a[s]; +>a1 : Symbol(a1, Decl(for-inStatementsArray.ts, 33, 7)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>s : Symbol(s, Decl(for-inStatementsArray.ts, 31, 3), Decl(for-inStatementsArray.ts, 32, 8)) +} +for (s in a) { +>s : Symbol(s, Decl(for-inStatementsArray.ts, 31, 3), Decl(for-inStatementsArray.ts, 32, 8)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) + + let a1 = a[s]; +>a1 : Symbol(a1, Decl(for-inStatementsArray.ts, 36, 7)) +>a : Symbol(a, Decl(for-inStatementsArray.ts, 0, 3)) +>s : Symbol(s, Decl(for-inStatementsArray.ts, 31, 3), Decl(for-inStatementsArray.ts, 32, 8)) +} + diff --git a/tests/baselines/reference/for-inStatementsArray.types b/tests/baselines/reference/for-inStatementsArray.types index d5edc2090e6..048b2819ff7 100644 --- a/tests/baselines/reference/for-inStatementsArray.types +++ b/tests/baselines/reference/for-inStatementsArray.types @@ -51,3 +51,88 @@ for (let x in a) { >x : string } +for (let x in a) { +>x : string +>a : Date[] + + for (let y in a) { +>y : string +>a : Date[] + + for (let z in a) { +>z : string +>a : Date[] + + let a1 = a[x]; +>a1 : Date +>a[x] : Date +>a : Date[] +>x : string + + let a2 = a[y]; +>a2 : Date +>a[y] : Date +>a : Date[] +>y : string + + let a3 = a[z]; +>a3 : Date +>a[z] : Date +>a : Date[] +>z : string + } + } +} + +let i: string; +>i : string + +let j: string; +>j : string + +for (i in a) { +>i : string +>a : Date[] + + for (j in b) { +>j : string +>b : boolean[] + + let a1 = a[i]; +>a1 : Date +>a[i] : Date +>a : Date[] +>i : string + + let a2 = a[j]; +>a2 : Date +>a[j] : Date +>a : Date[] +>j : string + } +} + +var s: string; +>s : string + +for (var s in a) { +>s : string +>a : Date[] + + let a1 = a[s]; +>a1 : Date +>a[s] : Date +>a : Date[] +>s : string +} +for (s in a) { +>s : string +>a : Date[] + + let a1 = a[s]; +>a1 : Date +>a[s] : Date +>a : Date[] +>s : string +} + diff --git a/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts b/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts index e8dc484c0fa..6acf8d4b355 100644 --- a/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts +++ b/tests/cases/conformance/statements/for-inStatements/for-inStatementsArray.ts @@ -9,3 +9,30 @@ for (let x in a) { let b2 = b[(x)]; let b3 = b[+x]; } + +for (let x in a) { + for (let y in a) { + for (let z in a) { + let a1 = a[x]; + let a2 = a[y]; + let a3 = a[z]; + } + } +} + +let i: string; +let j: string; +for (i in a) { + for (j in b) { + let a1 = a[i]; + let a2 = a[j]; + } +} + +var s: string; +for (var s in a) { + let a1 = a[s]; +} +for (s in a) { + let a1 = a[s]; +} From f0a4d6fd0be706950b58ceb5e88be7b8e7f0ef06 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 8 Jan 2016 02:00:20 +0900 Subject: [PATCH 142/164] enclose entryName --- src/services/shims.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index 31171ba2f98..0a48d5c2523 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -791,7 +791,7 @@ namespace ts { /** Get a string based representation of a completion list entry details */ public getCompletionEntryDetails(fileName: string, position: number, entryName: string) { return this.forwardJSONCall( - `getCompletionEntryDetails('${fileName}', ${position}, ${entryName})`, + `getCompletionEntryDetails('${fileName}', ${position}, '${entryName}')`, () => { let details = this.languageService.getCompletionEntryDetails(fileName, position, entryName); return details; From 5144603b3bcce421cd3dea08bdd75767b54800e5 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 8 Jan 2016 02:16:14 +0900 Subject: [PATCH 143/164] const everywhere --- src/services/shims.ts | 77 +++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index 0a48d5c2523..88042d0e821 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -248,14 +248,14 @@ namespace ts { } public getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange { - let oldSnapshotShim = oldSnapshot; - let encoded = this.scriptSnapshotShim.getChangeRange(oldSnapshotShim.scriptSnapshotShim); + const oldSnapshotShim = oldSnapshot; + const encoded = this.scriptSnapshotShim.getChangeRange(oldSnapshotShim.scriptSnapshotShim); // TODO: should this be '==='? if (encoded == null) { return null; } - let decoded: { span: { start: number; length: number; }; newLength: number; } = JSON.parse(encoded); + const decoded: { span: { start: number; length: number; }; newLength: number; } = JSON.parse(encoded); return createTextChangeRange( createTextSpan(decoded.span.start, decoded.span.length), decoded.newLength); } @@ -282,7 +282,7 @@ namespace ts { // 'in' does not have this effect. if ("getModuleResolutionsForFile" in this.shimHost) { this.resolveModuleNames = (moduleNames: string[], containingFile: string) => { - let resolutionsInFile = >JSON.parse(this.shimHost.getModuleResolutionsForFile(containingFile)); + const resolutionsInFile = >JSON.parse(this.shimHost.getModuleResolutionsForFile(containingFile)); return map(moduleNames, name => { const result = lookUp(resolutionsInFile, name); return result ? { resolvedFileName: result } : undefined; @@ -324,7 +324,7 @@ namespace ts { } public getCompilationSettings(): CompilerOptions { - let settingsJson = this.shimHost.getCompilationSettings(); + const settingsJson = this.shimHost.getCompilationSettings(); // TODO: should this be '==='? if (settingsJson == null || settingsJson == "") { throw Error("LanguageServiceShimHostAdapter.getCompilationSettings: empty compilationSettings"); @@ -333,12 +333,12 @@ namespace ts { } public getScriptFileNames(): string[] { - let encoded = this.shimHost.getScriptFileNames(); + const encoded = this.shimHost.getScriptFileNames(); return this.files = JSON.parse(encoded); } public getScriptSnapshot(fileName: string): IScriptSnapshot { - let scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); + const scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); return scriptSnapshot && new ScriptSnapshotShimAdapter(scriptSnapshot); } @@ -347,7 +347,7 @@ namespace ts { } public getLocalizedDiagnosticMessages(): any { - let diagnosticMessagesJson = this.shimHost.getLocalizedDiagnosticMessages(); + const diagnosticMessagesJson = this.shimHost.getLocalizedDiagnosticMessages(); if (diagnosticMessagesJson == null || diagnosticMessagesJson == "") { return null; } @@ -362,7 +362,7 @@ namespace ts { } public getCancellationToken(): HostCancellationToken { - let hostCancellationToken = this.shimHost.getCancellationToken(); + const hostCancellationToken = this.shimHost.getCancellationToken(); return new ThrottledCancellationToken(hostCancellationToken); } @@ -386,8 +386,8 @@ namespace ts { } public isCancellationRequested(): boolean { - let time = Date.now(); - let duration = Math.abs(time - this.lastCancellationCheckTime); + const time = Date.now(); + const duration = Math.abs(time - this.lastCancellationCheckTime); if (duration > 10) { // Check no more than once every 10 ms. this.lastCancellationCheckTime = time; @@ -411,7 +411,7 @@ namespace ts { public readDirectory(rootDir: string, extension: string, exclude: string[]): string[] { // Consider removing the optional designation for // the exclude param at this time. - let encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); + const encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); } @@ -431,10 +431,10 @@ namespace ts { start = Date.now(); } - let result = action(); + const result = action(); if (logPerformance) { - let end = Date.now(); + const end = Date.now(); logger.log(`${actionDescription} completed in ${end - start} msec`); if (typeof result === "string") { let str = result; @@ -450,8 +450,8 @@ namespace ts { function forwardJSONCall(logger: Logger, actionDescription: string, action: () => any, logPerformance: boolean): string { try { - let result = simpleForwardCall(logger, actionDescription, action, logPerformance); - return JSON.stringify({ result: result }); + const result = simpleForwardCall(logger, actionDescription, action, logPerformance); + return JSON.stringify({ result }); } catch (err) { if (err instanceof OperationCanceledException) { @@ -547,7 +547,7 @@ namespace ts { } private realizeDiagnostics(diagnostics: Diagnostic[]): { message: string; start: number; length: number; category: string; }[] { - let newLine = getNewLineOrDefaultFromHost(this.host); + const newLine = getNewLineOrDefaultFromHost(this.host); return ts.realizeDiagnostics(diagnostics, newLine); } @@ -730,7 +730,7 @@ namespace ts { return this.forwardJSONCall( `getIndentationAtPosition('${fileName}', ${position})`, () => { - let localOptions: EditorOptions = JSON.parse(options); + const localOptions: EditorOptions = JSON.parse(options); return this.languageService.getIndentationAtPosition(fileName, position, localOptions); }); } @@ -765,9 +765,9 @@ namespace ts { return this.forwardJSONCall( `getDocumentHighlights('${fileName}', ${position})`, () => { - let results = this.languageService.getDocumentHighlights(fileName, position, JSON.parse(filesToSearch)); + const results = this.languageService.getDocumentHighlights(fileName, position, JSON.parse(filesToSearch)); // workaround for VS document higlighting issue - keep only items from the initial file - let normalizedName = normalizeSlashes(fileName).toLowerCase(); + const normalizedName = normalizeSlashes(fileName).toLowerCase(); return filter(results, r => normalizeSlashes(r.fileName).toLowerCase() === normalizedName); }); } @@ -802,9 +802,8 @@ namespace ts { return this.forwardJSONCall( `getFormattingEditsForRange('${fileName}', ${start}, ${end})`, () => { - let localOptions: ts.FormatCodeOptions = JSON.parse(options); - let edits = this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); - return edits; + const localOptions: ts.FormatCodeOptions = JSON.parse(options); + return this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); }); } @@ -812,9 +811,8 @@ namespace ts { return this.forwardJSONCall( `getFormattingEditsForDocument('${fileName}')`, () => { - let localOptions: ts.FormatCodeOptions = JSON.parse(options); - let edits = this.languageService.getFormattingEditsForDocument(fileName, localOptions); - return edits; + const localOptions: ts.FormatCodeOptions = JSON.parse(options); + return this.languageService.getFormattingEditsForDocument(fileName, localOptions); }); } @@ -822,9 +820,8 @@ namespace ts { return this.forwardJSONCall( `getFormattingEditsAfterKeystroke('${fileName}', ${position}, '${key}')`, () => { - let localOptions: ts.FormatCodeOptions = JSON.parse(options); - let edits = this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); - return edits; + const localOptions: ts.FormatCodeOptions = JSON.parse(options); + return this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); }); } @@ -906,9 +903,9 @@ namespace ts { /// COLORIZATION public getClassificationsForLine(text: string, lexState: EndOfLineState, classifyKeywordsInGenerics?: boolean): string { - let classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); + const classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); let result = ""; - for (let item of classification.entries) { + for (const item of classification.entries) { result += item.length + "\n"; result += item.classification + "\n"; } @@ -930,7 +927,7 @@ namespace ts { public resolveModuleName(fileName: string, moduleName: string, compilerOptionsJson: string): string { return this.forwardJSONCall(`resolveModuleName('${fileName}')`, () => { - let compilerOptions = JSON.parse(compilerOptionsJson); + const compilerOptions = JSON.parse(compilerOptionsJson); const result = resolveModuleName(moduleName, normalizeSlashes(fileName), compilerOptions, this.host); return { resolvedFileName: result.resolvedModule ? result.resolvedModule.resolvedFileName : undefined, @@ -944,8 +941,8 @@ namespace ts { "getPreProcessedFileInfo('" + fileName + "')", () => { // for now treat files as JavaScript - let result = preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); - let convertResult = { + const result = preProcessFile(sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()), /* readImportFiles */ true, /* detectJavaScriptImports */ true); + const convertResult = { referencedFiles: [], importedFiles: [], ambientExternalModules: result.ambientExternalModules, @@ -975,9 +972,9 @@ namespace ts { return this.forwardJSONCall( `getTSConfigFileInfo('${fileName}')`, () => { - let text = sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()); + const text = sourceTextSnapshot.getText(0, sourceTextSnapshot.getLength()); - let result = parseConfigFileTextToJson(fileName, text); + const result = parseConfigFileTextToJson(fileName, text); if (result.error) { return { @@ -987,7 +984,7 @@ namespace ts { }; } - let configFile = parseJsonConfigFileContent(result.config, this.host, getDirectoryPath(normalizeSlashes(fileName))); + const configFile = parseJsonConfigFileContent(result.config, this.host, getDirectoryPath(normalizeSlashes(fileName))); return { options: configFile.options, @@ -1022,8 +1019,8 @@ namespace ts { if (this.documentRegistry === undefined) { this.documentRegistry = createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames(), host.getCurrentDirectory()); } - let hostAdapter = new LanguageServiceShimHostAdapter(host); - let languageService = createLanguageService(hostAdapter, this.documentRegistry); + const hostAdapter = new LanguageServiceShimHostAdapter(host); + const languageService = createLanguageService(hostAdapter, this.documentRegistry); return new LanguageServiceShimObject(this, host, languageService); } catch (err) { @@ -1044,7 +1041,7 @@ namespace ts { public createCoreServicesShim(host: CoreServicesShimHost): CoreServicesShim { try { - let adapter = new CoreServicesShimHostAdapter(host); + const adapter = new CoreServicesShimHostAdapter(host); return new CoreServicesShimObject(this, host, adapter); } catch (err) { From 5cafd962e9c489a2a6aa9720932889e2eb2feb15 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 8 Jan 2016 02:24:32 +0900 Subject: [PATCH 144/164] thinner arrows --- src/services/shims.ts | 157 ++++++++++++++++-------------------------- 1 file changed, 59 insertions(+), 98 deletions(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index 88042d0e821..4551013ff8d 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -276,7 +276,7 @@ namespace ts { public resolveModuleNames: (moduleName: string[], containingFile: string) => ResolvedModule[]; public directoryExists: (directoryName: string) => boolean; - + constructor(private shimHost: LanguageServiceShimHost) { // if shimHost is a COM object then property check will become method call with no arguments. // 'in' does not have this effect. @@ -401,7 +401,7 @@ namespace ts { export class CoreServicesShimHostAdapter implements ParseConfigHost, ModuleResolutionHost { public directoryExists: (directoryName: string) => boolean; - + constructor(private shimHost: CoreServicesShimHost) { if ("directoryExists" in this.shimHost) { this.directoryExists = directoryName => this.shimHost.directoryExists(directoryName); @@ -532,9 +532,8 @@ namespace ts { public refresh(throwOnError: boolean): void { this.forwardJSONCall( `refresh(${throwOnError})`, - () => { - return null; - }); + () => null + ); } public cleanupSemanticCache(): void { @@ -554,46 +553,40 @@ namespace ts { public getSyntacticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( `getSyntacticClassifications('${fileName}', ${start}, ${length})`, - () => { - let classifications = this.languageService.getSyntacticClassifications(fileName, createTextSpan(start, length)); - return classifications; - }); + () => this.languageService.getSyntacticClassifications(fileName, createTextSpan(start, length)) + ); } public getSemanticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( `getSemanticClassifications('${fileName}', ${start}, ${length})`, - () => { - let classifications = this.languageService.getSemanticClassifications(fileName, createTextSpan(start, length)); - return classifications; - }); + () => this.languageService.getSemanticClassifications(fileName, createTextSpan(start, length)) + ); } public getEncodedSyntacticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( `getEncodedSyntacticClassifications('${fileName}', ${start}, ${length})`, - () => { - // directly serialize the spans out to a string. This is much faster to decode - // on the managed side versus a full JSON array. - return convertClassifications(this.languageService.getEncodedSyntacticClassifications(fileName, createTextSpan(start, length))); - }); + // directly serialize the spans out to a string. This is much faster to decode + // on the managed side versus a full JSON array. + () => convertClassifications(this.languageService.getEncodedSyntacticClassifications(fileName, createTextSpan(start, length))) + ); } public getEncodedSemanticClassifications(fileName: string, start: number, length: number): string { return this.forwardJSONCall( `getEncodedSemanticClassifications('${fileName}', ${start}, ${length})`, - () => { - // directly serialize the spans out to a string. This is much faster to decode - // on the managed side versus a full JSON array. - return convertClassifications(this.languageService.getEncodedSemanticClassifications(fileName, createTextSpan(start, length))); - }); + // directly serialize the spans out to a string. This is much faster to decode + // on the managed side versus a full JSON array. + () => convertClassifications(this.languageService.getEncodedSemanticClassifications(fileName, createTextSpan(start, length))) + ); } public getSyntacticDiagnostics(fileName: string): string { return this.forwardJSONCall( `getSyntacticDiagnostics('${fileName}')`, () => { - let diagnostics = this.languageService.getSyntacticDiagnostics(fileName); + const diagnostics = this.languageService.getSyntacticDiagnostics(fileName); return this.realizeDiagnostics(diagnostics); }); } @@ -602,7 +595,7 @@ namespace ts { return this.forwardJSONCall( `getSemanticDiagnostics('${fileName}')`, () => { - let diagnostics = this.languageService.getSemanticDiagnostics(fileName); + const diagnostics = this.languageService.getSemanticDiagnostics(fileName); return this.realizeDiagnostics(diagnostics); }); } @@ -611,7 +604,7 @@ namespace ts { return this.forwardJSONCall( "getCompilerOptionsDiagnostics()", () => { - let diagnostics = this.languageService.getCompilerOptionsDiagnostics(); + const diagnostics = this.languageService.getCompilerOptionsDiagnostics(); return this.realizeDiagnostics(diagnostics); }); } @@ -625,10 +618,8 @@ namespace ts { public getQuickInfoAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getQuickInfoAtPosition('${fileName}', ${position})`, - () => { - let quickInfo = this.languageService.getQuickInfoAtPosition(fileName, position); - return quickInfo; - }); + () => this.languageService.getQuickInfoAtPosition(fileName, position) + ); } @@ -641,10 +632,8 @@ namespace ts { public getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): string { return this.forwardJSONCall( `getNameOrDottedNameSpan('${fileName}', ${startPos}, ${endPos})`, - () => { - let spanInfo = this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); - return spanInfo; - }); + () => this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos) + ); } /** @@ -654,10 +643,8 @@ namespace ts { public getBreakpointStatementAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getBreakpointStatementAtPosition('${fileName}', ${position})`, - () => { - let spanInfo = this.languageService.getBreakpointStatementAtPosition(fileName, position); - return spanInfo; - }); + () => this.languageService.getBreakpointStatementAtPosition(fileName, position) + ); } /// SIGNATUREHELP @@ -665,10 +652,8 @@ namespace ts { public getSignatureHelpItems(fileName: string, position: number): string { return this.forwardJSONCall( `getSignatureHelpItems('${fileName}', ${position})`, - () => { - let signatureInfo = this.languageService.getSignatureHelpItems(fileName, position); - return signatureInfo; - }); + () => this.languageService.getSignatureHelpItems(fileName, position) + ); } /// GOTO DEFINITION @@ -680,9 +665,8 @@ namespace ts { public getDefinitionAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getDefinitionAtPosition('${fileName}', ${position})`, - () => { - return this.languageService.getDefinitionAtPosition(fileName, position); - }); + () => this.languageService.getDefinitionAtPosition(fileName, position) + ); } /// GOTO Type @@ -694,35 +678,30 @@ namespace ts { public getTypeDefinitionAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getTypeDefinitionAtPosition('${fileName}', ${position})`, - () => { - return this.languageService.getTypeDefinitionAtPosition(fileName, position); - }); + () => this.languageService.getTypeDefinitionAtPosition(fileName, position) + ); } public getRenameInfo(fileName: string, position: number): string { return this.forwardJSONCall( `getRenameInfo('${fileName}', ${position})`, - () => { - return this.languageService.getRenameInfo(fileName, position); - }); + () => this.languageService.getRenameInfo(fileName, position) + ); } public findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): string { return this.forwardJSONCall( `findRenameLocations('${fileName}', ${position}, ${findInStrings}, ${findInComments})`, - () => { - return this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); - }); + () => this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments) + ); } /// GET BRACE MATCHING public getBraceMatchingAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getBraceMatchingAtPosition('${fileName}', ${position})`, - () => { - let textRanges = this.languageService.getBraceMatchingAtPosition(fileName, position); - return textRanges; - }); + () => this.languageService.getBraceMatchingAtPosition(fileName, position) + ); } /// GET SMART INDENT @@ -740,25 +719,22 @@ namespace ts { public getReferencesAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getReferencesAtPosition('${fileName}', ${position})`, - () => { - return this.languageService.getReferencesAtPosition(fileName, position); - }); + () => this.languageService.getReferencesAtPosition(fileName, position) + ); } public findReferences(fileName: string, position: number): string { return this.forwardJSONCall( `findReferences('${fileName}', ${position})`, - () => { - return this.languageService.findReferences(fileName, position); - }); + () => this.languageService.findReferences(fileName, position) + ); } public getOccurrencesAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( `getOccurrencesAtPosition('${fileName}', ${position})`, - () => { - return this.languageService.getOccurrencesAtPosition(fileName, position); - }); + () => this.languageService.getOccurrencesAtPosition(fileName, position) + ); } public getDocumentHighlights(fileName: string, position: number, filesToSearch: string): string { @@ -782,20 +758,16 @@ namespace ts { public getCompletionsAtPosition(fileName: string, position: number) { return this.forwardJSONCall( `getCompletionsAtPosition('${fileName}', ${position})`, - () => { - let completion = this.languageService.getCompletionsAtPosition(fileName, position); - return completion; - }); + () => this.languageService.getCompletionsAtPosition(fileName, position) + ); } /** Get a string based representation of a completion list entry details */ public getCompletionEntryDetails(fileName: string, position: number, entryName: string) { return this.forwardJSONCall( `getCompletionEntryDetails('${fileName}', ${position}, '${entryName}')`, - () => { - let details = this.languageService.getCompletionEntryDetails(fileName, position, entryName); - return details; - }); + () => this.languageService.getCompletionEntryDetails(fileName, position, entryName) + ); } public getFormattingEditsForRange(fileName: string, start: number, end: number, options: string/*Services.FormatCodeOptions*/): string { @@ -838,47 +810,37 @@ namespace ts { public getNavigateToItems(searchValue: string, maxResultCount?: number): string { return this.forwardJSONCall( `getNavigateToItems('${searchValue}', ${maxResultCount})`, - () => { - let items = this.languageService.getNavigateToItems(searchValue, maxResultCount); - return items; - }); + () => this.languageService.getNavigateToItems(searchValue, maxResultCount) + ); } public getNavigationBarItems(fileName: string): string { return this.forwardJSONCall( `getNavigationBarItems('${fileName}')`, - () => { - let items = this.languageService.getNavigationBarItems(fileName); - return items; - }); + () => this.languageService.getNavigationBarItems(fileName) + ); } public getOutliningSpans(fileName: string): string { return this.forwardJSONCall( `getOutliningSpans('${fileName}')`, - () => { - let items = this.languageService.getOutliningSpans(fileName); - return items; - }); + () => this.languageService.getOutliningSpans(fileName) + ); } public getTodoComments(fileName: string, descriptors: string): string { return this.forwardJSONCall( `getTodoComments('${fileName}')`, - () => { - let items = this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); - return items; - }); + () => this.languageService.getTodoComments(fileName, JSON.parse(descriptors)) + ); } /// Emit public getEmitOutput(fileName: string): string { return this.forwardJSONCall( `getEmitOutput('${fileName}')`, - () => { - let output = this.languageService.getEmitOutput(fileName); - return output; - }); + () => this.languageService.getEmitOutput(fileName) + ); } } @@ -997,9 +959,8 @@ namespace ts { public getDefaultCompilationSettings(): string { return this.forwardJSONCall( "getDefaultCompilationSettings()", - () => { - return getDefaultCompilerOptions(); - }); + () => getDefaultCompilerOptions() + ); } } From 4ef8e0bb734dd1041578aa155dae01787aa97828 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 8 Jan 2016 02:25:29 +0900 Subject: [PATCH 145/164] remove unneeded comment --- src/services/shims.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index 4551013ff8d..90a015240f0 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -409,8 +409,6 @@ namespace ts { } public readDirectory(rootDir: string, extension: string, exclude: string[]): string[] { - // Consider removing the optional designation for - // the exclude param at this time. const encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); } From 3344a42686b4a3b4470497ef20a3f3e3aea11cd5 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 7 Jan 2016 10:34:22 -0800 Subject: [PATCH 146/164] Check for numeric index signature instead of array-like type Better error message when object with numeric index signature is indexed with a string --- src/compiler/checker.ts | 21 +++++++++++++++------ src/compiler/diagnosticMessages.json | 4 ++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 62ab2080d28..ca562a5c353 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8581,10 +8581,17 @@ namespace ts { } /** - * Return true if given node is an expression consisting of an identifier (possibly parenthesized) - * that references a variable declared in a containing for-in statement for an array-like object. + * Return true if the given type is considered to have numeric property names. */ - function isForInVariableForArrayLikeObject(expr: Expression) { + function hasNumericPropertyNames(type: Type) { + return getIndexTypeOfType(type, IndexKind.Number) && !getIndexTypeOfType(type, IndexKind.String); + } + + /** + * Return true if given node is an expression consisting of an identifier (possibly parenthesized) + * that references a for-in variable for an object with numeric property names. + */ + function isForInVariableForNumericPropertyNames(expr: Expression) { const e = skipParenthesizedNodes(expr); if (e.kind === SyntaxKind.Identifier) { const symbol = getResolvedSymbol(e); @@ -8595,7 +8602,7 @@ namespace ts { if (node.kind === SyntaxKind.ForInStatement && child === (node).statement && getForInVariableSymbol(node) === symbol && - isArrayLikeType(checkExpression((node).expression))) { + hasNumericPropertyNames(checkExpression((node).expression))) { return true; } child = node; @@ -8666,7 +8673,7 @@ namespace ts { if (isTypeAnyOrAllConstituentTypesHaveKind(indexType, TypeFlags.StringLike | TypeFlags.NumberLike | TypeFlags.ESSymbol)) { // Try to use a number indexer. - if (isTypeAnyOrAllConstituentTypesHaveKind(indexType, TypeFlags.NumberLike) || isForInVariableForArrayLikeObject(node.argumentExpression)) { + if (isTypeAnyOrAllConstituentTypesHaveKind(indexType, TypeFlags.NumberLike) || isForInVariableForNumericPropertyNames(node.argumentExpression)) { const numberIndexType = getIndexTypeOfType(objectType, IndexKind.Number); if (numberIndexType) { return numberIndexType; @@ -8681,7 +8688,9 @@ namespace ts { // Fall back to any. if (compilerOptions.noImplicitAny && !compilerOptions.suppressImplicitAnyIndexErrors && !isTypeAny(objectType)) { - error(node, Diagnostics.Index_signature_of_object_type_implicitly_has_an_any_type); + error(node, getIndexTypeOfType(objectType, IndexKind.Number) ? + Diagnostics.Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number : + Diagnostics.Index_signature_of_object_type_implicitly_has_an_any_type); } return anyType; diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index f7268d6d990..4a0a1dba5ac 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2422,6 +2422,10 @@ "category": "Error", "code": 7013 }, + "Element implicitly has an 'any' type because index expression is not of type 'number'.": { + "category": "Error", + "code": 7015 + }, "Property '{0}' implicitly has type 'any', because its 'set' accessor lacks a type annotation.": { "category": "Error", "code": 7016 From a0fcc0f45a3f66708cf00d9bd07600cdd3e93524 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 7 Jan 2016 10:40:02 -0800 Subject: [PATCH 147/164] Accepting new baselines --- .../reference/for-inStatementsArrayErrors.errors.txt | 4 ++-- tests/baselines/reference/noImplicitAnyIndexing.errors.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt b/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt index 3555c64ccf4..6886d992bb2 100644 --- a/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt +++ b/tests/baselines/reference/for-inStatementsArrayErrors.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(5,14): error TS7017: Index signature of object type implicitly has an 'any' type. +tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(5,14): error TS7015: Element implicitly has an 'any' type because index expression is not of type 'number'. tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(6,16): error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(7,9): error TS2365: Operator '===' cannot be applied to types 'string' and 'number'. tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors.ts(9,16): error TS2339: Property 'unknownProperty' does not exist on type 'string'. @@ -13,7 +13,7 @@ tests/cases/conformance/statements/for-inStatements/for-inStatementsArrayErrors. for (let x in a) { let a1 = a[x + 1]; ~~~~~~~~ -!!! error TS7017: Index signature of object type implicitly has an 'any' type. +!!! error TS7015: Element implicitly has an 'any' type because index expression is not of type 'number'. let a2 = a[x - 1]; ~ !!! error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. diff --git a/tests/baselines/reference/noImplicitAnyIndexing.errors.txt b/tests/baselines/reference/noImplicitAnyIndexing.errors.txt index 8b75459ebd0..8f4cf616bda 100644 --- a/tests/baselines/reference/noImplicitAnyIndexing.errors.txt +++ b/tests/baselines/reference/noImplicitAnyIndexing.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/noImplicitAnyIndexing.ts(13,26): error TS7017: Index signature of object type implicitly has an 'any' type. +tests/cases/compiler/noImplicitAnyIndexing.ts(13,26): error TS7015: Element implicitly has an 'any' type because index expression is not of type 'number'. tests/cases/compiler/noImplicitAnyIndexing.ts(20,9): error TS7017: Index signature of object type implicitly has an 'any' type. tests/cases/compiler/noImplicitAnyIndexing.ts(23,9): error TS7017: Index signature of object type implicitly has an 'any' type. tests/cases/compiler/noImplicitAnyIndexing.ts(31,10): error TS7017: Index signature of object type implicitly has an 'any' type. @@ -19,7 +19,7 @@ tests/cases/compiler/noImplicitAnyIndexing.ts(31,10): error TS7017: Index signat // Should be implicit 'any' ; property access fails, no string indexer. var strRepresentation3 = MyEmusEnum["monehh"]; ~~~~~~~~~~~~~~~~~~~~ -!!! error TS7017: Index signature of object type implicitly has an 'any' type. +!!! error TS7015: Element implicitly has an 'any' type because index expression is not of type 'number'. // Should be okay; should be a MyEmusEnum var strRepresentation4 = MyEmusEnum["emu"]; From cc1947b94f61b0cb87d1535093b95c8b625353a8 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 7 Jan 2016 13:59:25 -0800 Subject: [PATCH 148/164] Rename jsxNamespace to reactNamespace --- src/compiler/checker.ts | 8 ++++---- src/compiler/commandLineParser.ts | 4 ++-- src/compiler/diagnosticMessages.json | 4 ++-- src/compiler/emitter.ts | 2 +- src/compiler/types.ts | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0d6cd8706de..8907323c483 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8360,11 +8360,11 @@ namespace ts { checkGrammarJsxElement(node); checkJsxPreconditions(node); - // The symbol 'React' should be marked as 'used' so we don't incorrectly elide its import. And if there - // is no 'React' symbol in scope when targeting React emit, we should issue an error. + // The reactNamespace symbol should be marked as 'used' so we don't incorrectly elide its import. And if there + // is no reactNamespace symbol in scope when targeting React emit, we should issue an error. const reactRefErr = compilerOptions.jsx === JsxEmit.React ? Diagnostics.Cannot_find_name_0 : undefined; - const jsxNamespace = compilerOptions.jsxNamespace ? compilerOptions.jsxNamespace : "React"; - const reactSym = resolveName(node.tagName, jsxNamespace, SymbolFlags.Value, reactRefErr, jsxNamespace); + const reactNamespace = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; + const reactSym = resolveName(node.tagName, reactNamespace, SymbolFlags.Value, reactRefErr, reactNamespace); if (reactSym) { getSymbolLinks(reactSym).referenced = true; } diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index 457786fdf80..247a204e9bd 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -55,9 +55,9 @@ namespace ts { error: Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, { - name: "jsxNamespace", + name: "reactNamespace", type: "string", - description: Diagnostics.Specify_JSX_emit_namespace_when_JSX_code_generation_mode_is_react + description: Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit }, { name: "listFiles", diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index e67b6c31fbd..defce6469e1 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2393,9 +2393,9 @@ "category": "Message", "code": 6083 }, - "Specify JSX emit namespace when JSX code generation mode is 'react'": { + "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit": { "category": "Message", - "code": 6084 + "code": 6084 }, "Variable '{0}' implicitly has an '{1}' type.": { diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 547e4a21140..e6286b06aac 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1186,7 +1186,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitJsxElement(openingNode: JsxOpeningLikeElement, children?: JsxChild[]) { const syntheticReactRef = createSynthesizedNode(SyntaxKind.Identifier); - syntheticReactRef.text = compilerOptions.jsxNamespace ? compilerOptions.jsxNamespace : "React"; + syntheticReactRef.text = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; syntheticReactRef.parent = openingNode; // Call React.createElement(tag, ... diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 499aefe29a5..edf3a9d63a2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2382,7 +2382,7 @@ namespace ts { inlineSourceMap?: boolean; inlineSources?: boolean; jsx?: JsxEmit; - jsxNamespace? : string; + reactNamespace?: string; listFiles?: boolean; locale?: string; mapRoot?: string; From 1e433bfb4f5007b752c749d6dd4590606ffd997e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 7 Jan 2016 14:33:47 -0800 Subject: [PATCH 149/164] Add tests --- .../reactNamespaceImportPresevation.js | 20 +++++++++ .../reactNamespaceImportPresevation.symbols | 20 +++++++++ .../reactNamespaceImportPresevation.types | 22 ++++++++++ .../reference/reactNamespaceJSXEmit.js | 20 +++++++++ .../reference/reactNamespaceJSXEmit.symbols | 32 +++++++++++++++ .../reference/reactNamespaceJSXEmit.types | 41 +++++++++++++++++++ ...eactNamespaceMissingDeclaration.errors.txt | 9 ++++ .../reactNamespaceMissingDeclaration.js | 8 ++++ .../reactNamespaceImportPresevation.tsx | 15 +++++++ .../cases/compiler/reactNamespaceJSXEmit.tsx | 13 ++++++ .../reactNamespaceMissingDeclaration.tsx | 5 +++ 11 files changed, 205 insertions(+) create mode 100644 tests/baselines/reference/reactNamespaceImportPresevation.js create mode 100644 tests/baselines/reference/reactNamespaceImportPresevation.symbols create mode 100644 tests/baselines/reference/reactNamespaceImportPresevation.types create mode 100644 tests/baselines/reference/reactNamespaceJSXEmit.js create mode 100644 tests/baselines/reference/reactNamespaceJSXEmit.symbols create mode 100644 tests/baselines/reference/reactNamespaceJSXEmit.types create mode 100644 tests/baselines/reference/reactNamespaceMissingDeclaration.errors.txt create mode 100644 tests/baselines/reference/reactNamespaceMissingDeclaration.js create mode 100644 tests/cases/compiler/reactNamespaceImportPresevation.tsx create mode 100644 tests/cases/compiler/reactNamespaceJSXEmit.tsx create mode 100644 tests/cases/compiler/reactNamespaceMissingDeclaration.tsx diff --git a/tests/baselines/reference/reactNamespaceImportPresevation.js b/tests/baselines/reference/reactNamespaceImportPresevation.js new file mode 100644 index 00000000000..5c44674d031 --- /dev/null +++ b/tests/baselines/reference/reactNamespaceImportPresevation.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reactNamespaceImportPresevation.tsx] //// + +//// [modules.d.ts] + +declare module "my-React-Lib" { + var a: any; + export = a; +} + +//// [test.tsx] +import * as myReactLib from "my-React-Lib"; // should not be elided +declare var foo: any; + +; + + +//// [test.jsx] +"use strict"; +var myReactLib = require("my-React-Lib"); // should not be elided +; diff --git a/tests/baselines/reference/reactNamespaceImportPresevation.symbols b/tests/baselines/reference/reactNamespaceImportPresevation.symbols new file mode 100644 index 00000000000..8a4407c8160 --- /dev/null +++ b/tests/baselines/reference/reactNamespaceImportPresevation.symbols @@ -0,0 +1,20 @@ +=== tests/cases/compiler/modules.d.ts === + +declare module "my-React-Lib" { + var a: any; +>a : Symbol(a, Decl(modules.d.ts, 2, 7)) + + export = a; +>a : Symbol(a, Decl(modules.d.ts, 2, 7)) +} + +=== tests/cases/compiler/test.tsx === +import * as myReactLib from "my-React-Lib"; // should not be elided +>myReactLib : Symbol(myReactLib, Decl(test.tsx, 0, 6)) + +declare var foo: any; +>foo : Symbol(foo, Decl(test.tsx, 1, 11)) + +; +>data : Symbol(unknown) + diff --git a/tests/baselines/reference/reactNamespaceImportPresevation.types b/tests/baselines/reference/reactNamespaceImportPresevation.types new file mode 100644 index 00000000000..adb1d60d2d5 --- /dev/null +++ b/tests/baselines/reference/reactNamespaceImportPresevation.types @@ -0,0 +1,22 @@ +=== tests/cases/compiler/modules.d.ts === + +declare module "my-React-Lib" { + var a: any; +>a : any + + export = a; +>a : any +} + +=== tests/cases/compiler/test.tsx === +import * as myReactLib from "my-React-Lib"; // should not be elided +>myReactLib : any + +declare var foo: any; +>foo : any + +; +> : any +>foo : any +>data : any + diff --git a/tests/baselines/reference/reactNamespaceJSXEmit.js b/tests/baselines/reference/reactNamespaceJSXEmit.js new file mode 100644 index 00000000000..26967d56b7b --- /dev/null +++ b/tests/baselines/reference/reactNamespaceJSXEmit.js @@ -0,0 +1,20 @@ +//// [reactNamespaceJSXEmit.tsx] + +declare var myReactLib: any; +declare var foo: any; +declare var Bar: any; +declare var x: any; + +; +; +; +; +; + + +//// [reactNamespaceJSXEmit.js] +myReactLib.createElement("foo", {data: true}); +myReactLib.createElement(Bar, {x: x}); +myReactLib.createElement("x-component", null); +myReactLib.createElement(Bar, myReactLib.__spread({}, x)); +myReactLib.createElement(Bar, myReactLib.__spread({}, x, {y: 2})); diff --git a/tests/baselines/reference/reactNamespaceJSXEmit.symbols b/tests/baselines/reference/reactNamespaceJSXEmit.symbols new file mode 100644 index 00000000000..d79c1cf531e --- /dev/null +++ b/tests/baselines/reference/reactNamespaceJSXEmit.symbols @@ -0,0 +1,32 @@ +=== tests/cases/compiler/reactNamespaceJSXEmit.tsx === + +declare var myReactLib: any; +>myReactLib : Symbol(myReactLib, Decl(reactNamespaceJSXEmit.tsx, 1, 11)) + +declare var foo: any; +>foo : Symbol(foo, Decl(reactNamespaceJSXEmit.tsx, 2, 11)) + +declare var Bar: any; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) + +declare var x: any; +>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) + +; +>data : Symbol(unknown) + +; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) +>x : Symbol(unknown) +>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) + +; +; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) +>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) + +; +>Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) +>x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) +>y : Symbol(unknown) + diff --git a/tests/baselines/reference/reactNamespaceJSXEmit.types b/tests/baselines/reference/reactNamespaceJSXEmit.types new file mode 100644 index 00000000000..06c803ef7fd --- /dev/null +++ b/tests/baselines/reference/reactNamespaceJSXEmit.types @@ -0,0 +1,41 @@ +=== tests/cases/compiler/reactNamespaceJSXEmit.tsx === + +declare var myReactLib: any; +>myReactLib : any + +declare var foo: any; +>foo : any + +declare var Bar: any; +>Bar : any + +declare var x: any; +>x : any + +; +> : any +>foo : any +>data : any + +; +> : any +>Bar : any +>x : any +>x : any + +; +> : any +>x-component : any + +; +> : any +>Bar : any +>x : any + +; +> : any +>Bar : any +>x : any +>y : any +>2 : number + diff --git a/tests/baselines/reference/reactNamespaceMissingDeclaration.errors.txt b/tests/baselines/reference/reactNamespaceMissingDeclaration.errors.txt new file mode 100644 index 00000000000..f87d223f824 --- /dev/null +++ b/tests/baselines/reference/reactNamespaceMissingDeclaration.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/reactNamespaceMissingDeclaration.tsx(3,2): error TS2304: Cannot find name 'myReactLib'. + + +==== tests/cases/compiler/reactNamespaceMissingDeclaration.tsx (1 errors) ==== + + // Error myReactLib not declared + + ~~~ +!!! error TS2304: Cannot find name 'myReactLib'. \ No newline at end of file diff --git a/tests/baselines/reference/reactNamespaceMissingDeclaration.js b/tests/baselines/reference/reactNamespaceMissingDeclaration.js new file mode 100644 index 00000000000..d972f319f8f --- /dev/null +++ b/tests/baselines/reference/reactNamespaceMissingDeclaration.js @@ -0,0 +1,8 @@ +//// [reactNamespaceMissingDeclaration.tsx] + +// Error myReactLib not declared + + +//// [reactNamespaceMissingDeclaration.js] +// Error myReactLib not declared +myReactLib.createElement("foo", {data: true}); diff --git a/tests/cases/compiler/reactNamespaceImportPresevation.tsx b/tests/cases/compiler/reactNamespaceImportPresevation.tsx new file mode 100644 index 00000000000..ec7e5d0d6ac --- /dev/null +++ b/tests/cases/compiler/reactNamespaceImportPresevation.tsx @@ -0,0 +1,15 @@ +//@jsx: preserve +//@module: commonjs +//@reactNamespace: myReactLib + +//@filename: modules.d.ts +declare module "my-React-Lib" { + var a: any; + export = a; +} + +//@filename: test.tsx +import * as myReactLib from "my-React-Lib"; // should not be elided +declare var foo: any; + +; diff --git a/tests/cases/compiler/reactNamespaceJSXEmit.tsx b/tests/cases/compiler/reactNamespaceJSXEmit.tsx new file mode 100644 index 00000000000..a3ed9aea4e3 --- /dev/null +++ b/tests/cases/compiler/reactNamespaceJSXEmit.tsx @@ -0,0 +1,13 @@ +//@jsx: react +//@reactNamespace: myReactLib + +declare var myReactLib: any; +declare var foo: any; +declare var Bar: any; +declare var x: any; + +; +; +; +; +; diff --git a/tests/cases/compiler/reactNamespaceMissingDeclaration.tsx b/tests/cases/compiler/reactNamespaceMissingDeclaration.tsx new file mode 100644 index 00000000000..fdfed629606 --- /dev/null +++ b/tests/cases/compiler/reactNamespaceMissingDeclaration.tsx @@ -0,0 +1,5 @@ +//@jsx: react +//@reactNamespace: myReactLib + +// Error myReactLib not declared + \ No newline at end of file From 9b92697a61fc65867689364af7bfbc53fefc58e0 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 7 Jan 2016 14:56:05 -0800 Subject: [PATCH 150/164] Add new helper to check for valid identifiers --- src/compiler/scanner.ts | 15 +++++++++++++++ src/services/services.ts | 8 +------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 6c0489ff1dc..8161ea998c4 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -688,6 +688,21 @@ namespace ts { ch > CharacterCodes.maxAsciiCharacter && isUnicodeIdentifierPart(ch, languageVersion); } + /* @internal */ + export function isIdentifier(name: string, languageVersion: ScriptTarget): boolean { + if (!isIdentifierStart(name.charCodeAt(0), languageVersion)) { + return false; + } + + for (let i = 1, n = name.length; i < n; i++) { + if (!isIdentifierPart(name.charCodeAt(i), languageVersion)) { + return false; + } + } + + return true; + } + // Creates a scanner over a (possibly unspecified) range of a piece of text. export function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, diff --git a/src/services/services.ts b/src/services/services.ts index f2651163610..4efd87555a1 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2978,15 +2978,9 @@ namespace ts { // e.g "b a" is valid quoted name but when we strip off the quotes, it is invalid. // We, thus, need to check if whatever was inside the quotes is actually a valid identifier name. if (performCharacterChecks) { - if (!isIdentifierStart(name.charCodeAt(0), target)) { + if (!isIdentifier(name, target)) { return undefined; } - - for (let i = 1, n = name.length; i < n; i++) { - if (!isIdentifierPart(name.charCodeAt(i), target)) { - return undefined; - } - } } return name; From ec70105c9dd4099d093fb91191862b9b21a4d600 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 7 Jan 2016 15:00:50 -0800 Subject: [PATCH 151/164] Add check for reactNamespace value --- src/compiler/diagnosticMessages.json | 4 ++++ src/compiler/program.ts | 4 ++++ .../reference/reactNamespaceInvalidInput.errors.txt | 11 +++++++++++ .../baselines/reference/reactNamespaceInvalidInput.js | 7 +++++++ tests/cases/compiler/reactNamespaceInvalidInput.tsx | 4 ++++ 5 files changed, 30 insertions(+) create mode 100644 tests/baselines/reference/reactNamespaceInvalidInput.errors.txt create mode 100644 tests/baselines/reference/reactNamespaceInvalidInput.js create mode 100644 tests/cases/compiler/reactNamespaceInvalidInput.tsx diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index defce6469e1..dbdd09fdda1 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -2123,6 +2123,10 @@ "category": "Error", "code": 5058 }, + "Invalide value for '--reactNamespace'. '{0}' is not a valid identifier.": { + "category": "Error", + "code": 5059 + }, "Concatenate and emit output to single file.": { "category": "Message", diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 349c4a86efa..6905e01b1e6 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1305,6 +1305,10 @@ namespace ts { programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } + if (options.reactNamespace && !isIdentifier(options.reactNamespace, languageVersion)) { + programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier, options.reactNamespace)); + } + // If the emit is enabled make sure that every output file is unique and not overwriting any of the input files if (!options.noEmit) { const emitHost = getEmitHost(); diff --git a/tests/baselines/reference/reactNamespaceInvalidInput.errors.txt b/tests/baselines/reference/reactNamespaceInvalidInput.errors.txt new file mode 100644 index 00000000000..e08ec520867 --- /dev/null +++ b/tests/baselines/reference/reactNamespaceInvalidInput.errors.txt @@ -0,0 +1,11 @@ +error TS5059: Invalide value for '--reactNamespace'. 'my-React-Lib' is not a valid identifier. +tests/cases/compiler/reactNamespaceInvalidInput.tsx(2,2): error TS2304: Cannot find name 'my-React-Lib'. + + +!!! error TS5059: Invalide value for '--reactNamespace'. 'my-React-Lib' is not a valid identifier. +==== tests/cases/compiler/reactNamespaceInvalidInput.tsx (1 errors) ==== + + ; + ~~~ +!!! error TS2304: Cannot find name 'my-React-Lib'. + \ No newline at end of file diff --git a/tests/baselines/reference/reactNamespaceInvalidInput.js b/tests/baselines/reference/reactNamespaceInvalidInput.js new file mode 100644 index 00000000000..bf079d6b9a8 --- /dev/null +++ b/tests/baselines/reference/reactNamespaceInvalidInput.js @@ -0,0 +1,7 @@ +//// [reactNamespaceInvalidInput.tsx] + +; + + +//// [reactNamespaceInvalidInput.js] +my-React-Lib.createElement("foo", {data: true}); diff --git a/tests/cases/compiler/reactNamespaceInvalidInput.tsx b/tests/cases/compiler/reactNamespaceInvalidInput.tsx new file mode 100644 index 00000000000..a8595de5d6e --- /dev/null +++ b/tests/cases/compiler/reactNamespaceInvalidInput.tsx @@ -0,0 +1,4 @@ +//@jsx: react +//@reactNamespace: my-React-Lib + +; From 8f273dca62f05bf3dbfa64a36df60b484211ced3 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Thu, 7 Jan 2016 15:01:00 -0800 Subject: [PATCH 152/164] Fix whitespaces --- tests/cases/compiler/reactNamespaceJSXEmit.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/cases/compiler/reactNamespaceJSXEmit.tsx b/tests/cases/compiler/reactNamespaceJSXEmit.tsx index a3ed9aea4e3..f5ec957a78b 100644 --- a/tests/cases/compiler/reactNamespaceJSXEmit.tsx +++ b/tests/cases/compiler/reactNamespaceJSXEmit.tsx @@ -2,12 +2,12 @@ //@reactNamespace: myReactLib declare var myReactLib: any; -declare var foo: any; +declare var foo: any; declare var Bar: any; declare var x: any; ; -; -; -; -; +; +; +; +; From 1bdf7edee2780c4a53d640c1e451a5cdfe8773ed Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Jan 2016 23:13:41 -0500 Subject: [PATCH 153/164] Enable linting on 'shims.ts'. --- Jakefile.js | 5 +++-- src/services/shims.ts | 25 ++++++++++++++++++------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Jakefile.js b/Jakefile.js index 5a3348a61eb..b62cbed3279 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -912,10 +912,11 @@ function lintFileAsync(options, path, cb) { } var servicesLintTargets = [ - "services.ts", - "outliningElementsCollector.ts", "navigateTo.ts", + "outliningElementsCollector.ts", "patternMatcher.ts", + "services.ts", + "shims.ts", ].map(function (s) { return path.join(servicesDirectory, s); }); diff --git a/src/services/shims.ts b/src/services/shims.ts index 90a015240f0..9940a6140f7 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -16,7 +16,11 @@ /// /* @internal */ -var debugObjectHost = (this); +let debugObjectHost = (this); + +// We need to use 'null' to interface with the managed side. +/* tslint:disable:no-null */ +/* tslint:disable:no-in-operator */ /* @internal */ namespace ts { @@ -234,8 +238,6 @@ namespace ts { } class ScriptSnapshotShimAdapter implements IScriptSnapshot { - private lineStartPositions: number[] = null; - constructor(private scriptSnapshotShim: ScriptSnapshotShim) { } @@ -940,7 +942,7 @@ namespace ts { return { options: {}, files: [], - errors: [realizeDiagnostic(result.error, '\r\n')] + errors: [realizeDiagnostic(result.error, "\r\n")] }; } @@ -949,7 +951,7 @@ namespace ts { return { options: configFile.options, files: configFile.fileNames, - errors: realizeDiagnostics(configFile.errors, '\r\n') + errors: realizeDiagnostics(configFile.errors, "\r\n") }; }); } @@ -1039,12 +1041,21 @@ namespace ts { } } +/* tslint:enable:no-in-operator */ +/* tslint:enable:no-null */ + /// TODO: this is used by VS, clean this up on both sides of the interface /* @internal */ -module TypeScript.Services { - export var TypeScriptServicesFactory = ts.TypeScriptServicesFactory; +namespace TypeScript.Services { + export const TypeScriptServicesFactory = ts.TypeScriptServicesFactory; } +/* tslint:disable:no-unused-variable */ +// 'toolsVersion' gets consumed by the managed side, so it's not unused. +// TODO: it should be moved into a namespace though. + /* @internal */ const toolsVersion = "1.6"; + +/* tslint:enable:no-unused-variable */ \ No newline at end of file From 19efab7a0b3e7fe93743501afa3e9ab9f0a46f92 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 7 Jan 2016 23:14:17 -0500 Subject: [PATCH 154/164] Bump version to '1.8'. --- src/services/shims.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index 9940a6140f7..3dc28763b17 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -1056,6 +1056,6 @@ namespace TypeScript.Services { // TODO: it should be moved into a namespace though. /* @internal */ -const toolsVersion = "1.6"; +const toolsVersion = "1.8"; /* tslint:enable:no-unused-variable */ \ No newline at end of file From 5dde2b964f7225ba158ecd2eb18d53fae1e01a39 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 8 Jan 2016 17:56:37 +0900 Subject: [PATCH 155/164] do not add space between comma and close bracket --- src/services/formatting/rules.ts | 6 +++++- tests/cases/fourslash/formattingOptionsChange.ts | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 23d5c0db8ca..2df78df01dc 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -444,7 +444,7 @@ namespace ts.formatting { /// // Insert space after comma delimiter - this.SpaceAfterComma = new Rule(RuleDescriptor.create3(SyntaxKind.CommaToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Space)); + this.SpaceAfterComma = new Rule(RuleDescriptor.create3(SyntaxKind.CommaToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNextTokenNotCloseBracket), RuleAction.Space)); this.NoSpaceAfterComma = new Rule(RuleDescriptor.create3(SyntaxKind.CommaToken, Shared.TokenRange.Any), RuleOperation.create2(new RuleOperationContext(Rules.IsSameLineTokenContext), RuleAction.Delete)); // Insert space before and after binary operators @@ -711,6 +711,10 @@ namespace ts.formatting { return context.currentTokenSpan.kind !== SyntaxKind.CommaToken; } + static IsNextTokenNotCloseBracket(context: FormattingContext): boolean { + return context.nextTokenSpan.kind !== SyntaxKind.CloseBracketToken; + } + static IsArrowFunctionContext(context: FormattingContext): boolean { return context.contextNode.kind === SyntaxKind.ArrowFunction; } diff --git a/tests/cases/fourslash/formattingOptionsChange.ts b/tests/cases/fourslash/formattingOptionsChange.ts index a9c49d72507..bf28d101afd 100644 --- a/tests/cases/fourslash/formattingOptionsChange.ts +++ b/tests/cases/fourslash/formattingOptionsChange.ts @@ -1,6 +1,6 @@ /// -/////*InsertSpaceAfterCommaDelimiter*/[1,2, 3]; +/////*InsertSpaceAfterCommaDelimiter*/[1,2, 3];[72,]; /////*InsertSpaceAfterSemicolonInForStatements*/for (i = 0;i; i++); /////*InsertSpaceBeforeAndAfterBinaryOperators*/1+2- 3 /////*InsertSpaceAfterKeywordsInControlFlowStatements*/if (true) { } @@ -13,13 +13,13 @@ /////*PlaceOpenBraceOnNewLineForControlBlocks*/if (true) { ////} -runTest("InsertSpaceAfterCommaDelimiter", "[1, 2, 3];", "[1,2,3];"); +runTest("InsertSpaceAfterCommaDelimiter", "[1, 2, 3];[72,];", "[1,2,3];[72,];"); runTest("InsertSpaceAfterSemicolonInForStatements", "for (i = 0; i; i++);", "for (i = 0;i;i++);"); runTest("InsertSpaceBeforeAndAfterBinaryOperators", "1 + 2 - 3", "1+2-3"); runTest("InsertSpaceAfterKeywordsInControlFlowStatements", "if (true) { }", "if(true) { }"); runTest("InsertSpaceAfterFunctionKeywordForAnonymousFunctions", "(function () { })", "(function() { })"); runTest("InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis", " ( 1 )", " (1)"); -runTest("InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets", "[ 1 ];[];[];[ , ];", "[1];[];[];[, ];"); +runTest("InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets", "[ 1 ];[];[];[ , ];", "[1];[];[];[,];"); runTest("InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces", "`${ 1 }`; `${ 1 }`", "`${1}`; `${1}`"); runTest("PlaceOpenBraceOnNewLineForFunctions", "class foo", "class foo {"); runTest("PlaceOpenBraceOnNewLineForControlBlocks", "if ( true )", "if ( true ) {"); From 5431e09f928aaf839ff4377c031c9d18fa397c49 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 8 Jan 2016 18:01:02 +0900 Subject: [PATCH 156/164] add more spaces on test --- tests/cases/fourslash/formattingOptionsChange.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/fourslash/formattingOptionsChange.ts b/tests/cases/fourslash/formattingOptionsChange.ts index bf28d101afd..f266a8e96c1 100644 --- a/tests/cases/fourslash/formattingOptionsChange.ts +++ b/tests/cases/fourslash/formattingOptionsChange.ts @@ -1,6 +1,6 @@ /// -/////*InsertSpaceAfterCommaDelimiter*/[1,2, 3];[72,]; +/////*InsertSpaceAfterCommaDelimiter*/[1,2, 3];[ 72 , ]; /////*InsertSpaceAfterSemicolonInForStatements*/for (i = 0;i; i++); /////*InsertSpaceBeforeAndAfterBinaryOperators*/1+2- 3 /////*InsertSpaceAfterKeywordsInControlFlowStatements*/if (true) { } From b291d8bc93d68b1d8d54789738c8aadfb8eb2f36 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 8 Jan 2016 12:19:27 -0500 Subject: [PATCH 157/164] Update LKG. --- lib/lib.core.es6.d.ts | 44 +- lib/lib.d.ts | 56 +- lib/lib.dom.d.ts | 56 +- lib/lib.es6.d.ts | 100 +- lib/lib.webworker.d.ts | 19 +- lib/tsc.js | 7425 ++++++++++++----------- lib/tsserver.js | 9701 ++++++++++++++++--------------- lib/typescript.d.ts | 441 +- lib/typescript.js | 10671 ++++++++++++++++++---------------- lib/typescriptServices.d.ts | 441 +- lib/typescriptServices.js | 10671 ++++++++++++++++++---------------- 11 files changed, 21365 insertions(+), 18260 deletions(-) diff --git a/lib/lib.core.es6.d.ts b/lib/lib.core.es6.d.ts index 857f5957a45..0470c4827cd 100644 --- a/lib/lib.core.es6.d.ts +++ b/lib/lib.core.es6.d.ts @@ -3847,7 +3847,7 @@ interface Symbol { /** Returns the primitive value of the specified object. */ valueOf(): Object; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Symbol"; } interface SymbolConstructor { @@ -4405,7 +4405,7 @@ interface IterableIterator extends Iterator { } interface GeneratorFunction extends Function { - + [Symbol.toStringTag]: "GeneratorFunction"; } interface GeneratorFunctionConstructor { @@ -4530,7 +4530,7 @@ interface Math { */ cbrt(x: number): number; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Math"; } interface Date { @@ -4647,7 +4647,7 @@ interface Map { size: number; values(): IterableIterator; [Symbol.iterator]():IterableIterator<[K,V]>; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Map"; } interface MapConstructor { @@ -4664,7 +4664,7 @@ interface WeakMap { get(key: K): V; has(key: K): boolean; set(key: K, value?: V): WeakMap; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "WeakMap"; } interface WeakMapConstructor { @@ -4686,7 +4686,7 @@ interface Set { size: number; values(): IterableIterator; [Symbol.iterator]():IterableIterator; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Set"; } interface SetConstructor { @@ -4702,7 +4702,7 @@ interface WeakSet { clear(): void; delete(value: T): boolean; has(value: T): boolean; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "WeakSet"; } interface WeakSetConstructor { @@ -4714,7 +4714,7 @@ interface WeakSetConstructor { declare var WeakSet: WeakSetConstructor; interface JSON { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "JSON"; } /** @@ -4724,11 +4724,11 @@ interface JSON { * buffer as needed. */ interface ArrayBuffer { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "ArrayBuffer"; } interface DataView { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "DataView"; } /** @@ -4749,6 +4749,7 @@ interface Int8Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int8Array"; } interface Int8ArrayConstructor { @@ -4781,6 +4782,7 @@ interface Uint8Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "UInt8Array"; } interface Uint8ArrayConstructor { @@ -4816,6 +4818,7 @@ interface Uint8ClampedArray { values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint8ClampedArray"; } interface Uint8ClampedArrayConstructor { @@ -4853,6 +4856,7 @@ interface Int16Array { [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int16Array"; } interface Int16ArrayConstructor { @@ -4885,6 +4889,7 @@ interface Uint16Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint16Array"; } interface Uint16ArrayConstructor { @@ -4917,6 +4922,7 @@ interface Int32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int32Array"; } interface Int32ArrayConstructor { @@ -4949,6 +4955,7 @@ interface Uint32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint32Array"; } interface Uint32ArrayConstructor { @@ -4981,6 +4988,7 @@ interface Float32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Float32Array"; } interface Float32ArrayConstructor { @@ -5013,6 +5021,7 @@ interface Float64Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Float64Array"; } interface Float64ArrayConstructor { @@ -5064,7 +5073,7 @@ declare namespace Reflect { function isExtensible(target: any): boolean; function ownKeys(target: any): Array; function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver? :any): boolean; + function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; function setPrototypeOf(target: any, proto: any): boolean; } @@ -5089,7 +5098,7 @@ interface Promise { catch(onrejected?: (reason: any) => T | PromiseLike): Promise; catch(onrejected?: (reason: any) => void): Promise; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Promise"; } interface PromiseConstructor { @@ -5112,7 +5121,16 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: Iterable>): Promise; + all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: Iterable>): Promise; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved diff --git a/lib/lib.d.ts b/lib/lib.d.ts index fd4c05da220..155d864619e 100644 --- a/lib/lib.d.ts +++ b/lib/lib.d.ts @@ -4362,6 +4362,7 @@ interface AudioContext extends EventTarget { destination: AudioDestinationNode; listener: AudioListener; sampleRate: number; + state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; @@ -6099,6 +6100,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Gets or sets the version attribute specified in the declaration of an XML document. */ xmlVersion: string; + currentScript: HTMLScriptElement; adoptNode(source: Node): Node; captureEvents(): void; clear(): void; @@ -6814,6 +6816,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec tagName: string; id: string; className: string; + innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; getAttributeNode(name: string): Attr; @@ -7009,7 +7012,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec removeAttributeNode(oldAttr: Attr): Attr; requestFullscreen(): void; requestPointerLock(): void; - setAttribute(name?: string, value?: string): void; + setAttribute(name: string, value: string): void; setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void; setAttributeNode(newAttr: Attr): Attr; setAttributeNodeNS(newAttr: Attr): Attr; @@ -7018,6 +7021,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec webkitRequestFullScreen(): void; webkitRequestFullscreen(): void; getElementsByClassName(classNames: string): NodeListOf; + matches(selector: string): boolean; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -8002,7 +8006,6 @@ interface HTMLElement extends Element { title: string; blur(): void; click(): void; - contains(child: HTMLElement): boolean; dragDrop(): boolean; focus(): void; insertAdjacentElement(position: string, insertedElement: Element): Element; @@ -9552,7 +9555,7 @@ interface HTMLMediaElement extends HTMLElement { * Gets or sets the current playback position, in seconds. */ preload: string; - readyState: any; + readyState: number; /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ @@ -10176,7 +10179,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLSelectElement; + options: HTMLCollection; /** * When present, marks an element that can't be submitted without a value. */ @@ -10209,6 +10212,7 @@ interface HTMLSelectElement extends HTMLElement { * Returns whether an element will successfully validate based on forms validation rules and constraints. */ willValidate: boolean; + selectedOptions: HTMLCollection; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -10462,19 +10466,19 @@ interface HTMLTableElement extends HTMLElement { /** * Creates an empty caption element in the table. */ - createCaption(): HTMLElement; + createCaption(): HTMLTableCaptionElement; /** * Creates an empty tBody element in the table. */ - createTBody(): HTMLElement; + createTBody(): HTMLTableSectionElement; /** * Creates an empty tFoot element in the table. */ - createTFoot(): HTMLElement; + createTFoot(): HTMLTableSectionElement; /** * Returns the tHead element object if successful, or null otherwise. */ - createTHead(): HTMLElement; + createTHead(): HTMLTableSectionElement; /** * Deletes the caption element and its contents from the table. */ @@ -10496,7 +10500,7 @@ interface HTMLTableElement extends HTMLElement { * Creates a new row (tr) in the table, and adds the row to the rows collection. * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. */ - insertRow(index?: number): HTMLElement; + insertRow(index?: number): HTMLTableRowElement; } declare var HTMLTableElement: { @@ -10547,7 +10551,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLElement; + insertCell(index?: number): HTMLTableCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10574,7 +10578,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { * Creates a new row (tr) in the table, and adds the row to the rows collection. * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. */ - insertRow(index?: number): HTMLElement; + insertRow(index?: number): HTMLTableRowElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -10963,7 +10967,7 @@ interface IDBDatabase extends EventTarget { onerror: (ev: Event) => any; version: string; close(): void; - createObjectStore(name: string, optionalParameters?: any): IDBObjectStore; + createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; deleteObjectStore(name: string): void; transaction(storeNames: any, mode?: string): IDBTransaction; addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -10988,10 +10992,11 @@ declare var IDBFactory: { } interface IDBIndex { - keyPath: string; + keyPath: string | string[]; name: string; objectStore: IDBObjectStore; unique: boolean; + multiEntry: boolean; count(key?: any): IDBRequest; get(key: any): IDBRequest; getKey(key: any): IDBRequest; @@ -11028,7 +11033,7 @@ interface IDBObjectStore { add(value: any, key?: any): IDBRequest; clear(): IDBRequest; count(key?: any): IDBRequest; - createIndex(name: string, keyPath: string, optionalParameters?: any): IDBIndex; + createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; delete(key: any): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; @@ -11112,7 +11117,7 @@ declare var IDBVersionChangeEvent: { } interface ImageData { - data: number[]; + data: Uint8ClampedArray; height: number; width: number; } @@ -11910,6 +11915,7 @@ interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorConte getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -11950,6 +11956,7 @@ interface Node extends EventTarget { normalize(): void; removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; + contains(node: Node): boolean; ATTRIBUTE_NODE: number; CDATA_SECTION_NODE: number; COMMENT_NODE: number; @@ -16613,6 +16620,16 @@ interface XMLHttpRequestEventTarget { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface IDBObjectStoreParameters { + keyPath?: string | string[]; + autoIncrement?: boolean; +} + +interface IDBIndexParameters { + unique?: boolean; + multiEntry?: boolean; +} + interface NodeListOf extends NodeList { length: number; item(index: number): TNode; @@ -16648,6 +16665,15 @@ interface ProgressEventInit extends EventInit { total?: number; } +interface HTMLTemplateElement extends HTMLElement { + content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { diff --git a/lib/lib.dom.d.ts b/lib/lib.dom.d.ts index 69014415c15..b2ad2c73df6 100644 --- a/lib/lib.dom.d.ts +++ b/lib/lib.dom.d.ts @@ -538,6 +538,7 @@ interface AudioContext extends EventTarget { destination: AudioDestinationNode; listener: AudioListener; sampleRate: number; + state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; @@ -2275,6 +2276,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Gets or sets the version attribute specified in the declaration of an XML document. */ xmlVersion: string; + currentScript: HTMLScriptElement; adoptNode(source: Node): Node; captureEvents(): void; clear(): void; @@ -2990,6 +2992,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec tagName: string; id: string; className: string; + innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; getAttributeNode(name: string): Attr; @@ -3185,7 +3188,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec removeAttributeNode(oldAttr: Attr): Attr; requestFullscreen(): void; requestPointerLock(): void; - setAttribute(name?: string, value?: string): void; + setAttribute(name: string, value: string): void; setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void; setAttributeNode(newAttr: Attr): Attr; setAttributeNodeNS(newAttr: Attr): Attr; @@ -3194,6 +3197,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec webkitRequestFullScreen(): void; webkitRequestFullscreen(): void; getElementsByClassName(classNames: string): NodeListOf; + matches(selector: string): boolean; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -4178,7 +4182,6 @@ interface HTMLElement extends Element { title: string; blur(): void; click(): void; - contains(child: HTMLElement): boolean; dragDrop(): boolean; focus(): void; insertAdjacentElement(position: string, insertedElement: Element): Element; @@ -5728,7 +5731,7 @@ interface HTMLMediaElement extends HTMLElement { * Gets or sets the current playback position, in seconds. */ preload: string; - readyState: any; + readyState: number; /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ @@ -6352,7 +6355,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLSelectElement; + options: HTMLCollection; /** * When present, marks an element that can't be submitted without a value. */ @@ -6385,6 +6388,7 @@ interface HTMLSelectElement extends HTMLElement { * Returns whether an element will successfully validate based on forms validation rules and constraints. */ willValidate: boolean; + selectedOptions: HTMLCollection; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -6638,19 +6642,19 @@ interface HTMLTableElement extends HTMLElement { /** * Creates an empty caption element in the table. */ - createCaption(): HTMLElement; + createCaption(): HTMLTableCaptionElement; /** * Creates an empty tBody element in the table. */ - createTBody(): HTMLElement; + createTBody(): HTMLTableSectionElement; /** * Creates an empty tFoot element in the table. */ - createTFoot(): HTMLElement; + createTFoot(): HTMLTableSectionElement; /** * Returns the tHead element object if successful, or null otherwise. */ - createTHead(): HTMLElement; + createTHead(): HTMLTableSectionElement; /** * Deletes the caption element and its contents from the table. */ @@ -6672,7 +6676,7 @@ interface HTMLTableElement extends HTMLElement { * Creates a new row (tr) in the table, and adds the row to the rows collection. * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. */ - insertRow(index?: number): HTMLElement; + insertRow(index?: number): HTMLTableRowElement; } declare var HTMLTableElement: { @@ -6723,7 +6727,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLElement; + insertCell(index?: number): HTMLTableCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -6750,7 +6754,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { * Creates a new row (tr) in the table, and adds the row to the rows collection. * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. */ - insertRow(index?: number): HTMLElement; + insertRow(index?: number): HTMLTableRowElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -7139,7 +7143,7 @@ interface IDBDatabase extends EventTarget { onerror: (ev: Event) => any; version: string; close(): void; - createObjectStore(name: string, optionalParameters?: any): IDBObjectStore; + createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; deleteObjectStore(name: string): void; transaction(storeNames: any, mode?: string): IDBTransaction; addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -7164,10 +7168,11 @@ declare var IDBFactory: { } interface IDBIndex { - keyPath: string; + keyPath: string | string[]; name: string; objectStore: IDBObjectStore; unique: boolean; + multiEntry: boolean; count(key?: any): IDBRequest; get(key: any): IDBRequest; getKey(key: any): IDBRequest; @@ -7204,7 +7209,7 @@ interface IDBObjectStore { add(value: any, key?: any): IDBRequest; clear(): IDBRequest; count(key?: any): IDBRequest; - createIndex(name: string, keyPath: string, optionalParameters?: any): IDBIndex; + createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; delete(key: any): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; @@ -7288,7 +7293,7 @@ declare var IDBVersionChangeEvent: { } interface ImageData { - data: number[]; + data: Uint8ClampedArray; height: number; width: number; } @@ -8086,6 +8091,7 @@ interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorConte getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -8126,6 +8132,7 @@ interface Node extends EventTarget { normalize(): void; removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; + contains(node: Node): boolean; ATTRIBUTE_NODE: number; CDATA_SECTION_NODE: number; COMMENT_NODE: number; @@ -12789,6 +12796,16 @@ interface XMLHttpRequestEventTarget { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface IDBObjectStoreParameters { + keyPath?: string | string[]; + autoIncrement?: boolean; +} + +interface IDBIndexParameters { + unique?: boolean; + multiEntry?: boolean; +} + interface NodeListOf extends NodeList { length: number; item(index: number): TNode; @@ -12824,6 +12841,15 @@ interface ProgressEventInit extends EventInit { total?: number; } +interface HTMLTemplateElement extends HTMLElement { + content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { diff --git a/lib/lib.es6.d.ts b/lib/lib.es6.d.ts index 564c302031d..ef3399ba804 100644 --- a/lib/lib.es6.d.ts +++ b/lib/lib.es6.d.ts @@ -22,7 +22,7 @@ interface Symbol { /** Returns the primitive value of the specified object. */ valueOf(): Object; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Symbol"; } interface SymbolConstructor { @@ -580,7 +580,7 @@ interface IterableIterator extends Iterator { } interface GeneratorFunction extends Function { - + [Symbol.toStringTag]: "GeneratorFunction"; } interface GeneratorFunctionConstructor { @@ -705,7 +705,7 @@ interface Math { */ cbrt(x: number): number; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Math"; } interface Date { @@ -822,7 +822,7 @@ interface Map { size: number; values(): IterableIterator; [Symbol.iterator]():IterableIterator<[K,V]>; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Map"; } interface MapConstructor { @@ -839,7 +839,7 @@ interface WeakMap { get(key: K): V; has(key: K): boolean; set(key: K, value?: V): WeakMap; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "WeakMap"; } interface WeakMapConstructor { @@ -861,7 +861,7 @@ interface Set { size: number; values(): IterableIterator; [Symbol.iterator]():IterableIterator; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Set"; } interface SetConstructor { @@ -877,7 +877,7 @@ interface WeakSet { clear(): void; delete(value: T): boolean; has(value: T): boolean; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "WeakSet"; } interface WeakSetConstructor { @@ -889,7 +889,7 @@ interface WeakSetConstructor { declare var WeakSet: WeakSetConstructor; interface JSON { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "JSON"; } /** @@ -899,11 +899,11 @@ interface JSON { * buffer as needed. */ interface ArrayBuffer { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "ArrayBuffer"; } interface DataView { - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "DataView"; } /** @@ -924,6 +924,7 @@ interface Int8Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int8Array"; } interface Int8ArrayConstructor { @@ -956,6 +957,7 @@ interface Uint8Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "UInt8Array"; } interface Uint8ArrayConstructor { @@ -991,6 +993,7 @@ interface Uint8ClampedArray { values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint8ClampedArray"; } interface Uint8ClampedArrayConstructor { @@ -1028,6 +1031,7 @@ interface Int16Array { [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int16Array"; } interface Int16ArrayConstructor { @@ -1060,6 +1064,7 @@ interface Uint16Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint16Array"; } interface Uint16ArrayConstructor { @@ -1092,6 +1097,7 @@ interface Int32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Int32Array"; } interface Int32ArrayConstructor { @@ -1124,6 +1130,7 @@ interface Uint32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Uint32Array"; } interface Uint32ArrayConstructor { @@ -1156,6 +1163,7 @@ interface Float32Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Float32Array"; } interface Float32ArrayConstructor { @@ -1188,6 +1196,7 @@ interface Float64Array { */ values(): IterableIterator; [Symbol.iterator](): IterableIterator; + [Symbol.toStringTag]: "Float64Array"; } interface Float64ArrayConstructor { @@ -1239,7 +1248,7 @@ declare namespace Reflect { function isExtensible(target: any): boolean; function ownKeys(target: any): Array; function preventExtensions(target: any): boolean; - function set(target: any, propertyKey: PropertyKey, value: any, receiver? :any): boolean; + function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean; function setPrototypeOf(target: any, proto: any): boolean; } @@ -1264,7 +1273,7 @@ interface Promise { catch(onrejected?: (reason: any) => T | PromiseLike): Promise; catch(onrejected?: (reason: any) => void): Promise; - [Symbol.toStringTag]: string; + [Symbol.toStringTag]: "Promise"; } interface PromiseConstructor { @@ -1287,7 +1296,16 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: Iterable>): Promise; + all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: Iterable>): Promise; /** * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved @@ -5677,6 +5695,7 @@ interface AudioContext extends EventTarget { destination: AudioDestinationNode; listener: AudioListener; sampleRate: number; + state: string; createAnalyser(): AnalyserNode; createBiquadFilter(): BiquadFilterNode; createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer; @@ -7414,6 +7433,7 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Gets or sets the version attribute specified in the declaration of an XML document. */ xmlVersion: string; + currentScript: HTMLScriptElement; adoptNode(source: Node): Node; captureEvents(): void; clear(): void; @@ -8129,6 +8149,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec tagName: string; id: string; className: string; + innerHTML: string; getAttribute(name?: string): string; getAttributeNS(namespaceURI: string, localName: string): string; getAttributeNode(name: string): Attr; @@ -8324,7 +8345,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec removeAttributeNode(oldAttr: Attr): Attr; requestFullscreen(): void; requestPointerLock(): void; - setAttribute(name?: string, value?: string): void; + setAttribute(name: string, value: string): void; setAttributeNS(namespaceURI: string, qualifiedName: string, value: string): void; setAttributeNode(newAttr: Attr): Attr; setAttributeNodeNS(newAttr: Attr): Attr; @@ -8333,6 +8354,7 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec webkitRequestFullScreen(): void; webkitRequestFullscreen(): void; getElementsByClassName(classNames: string): NodeListOf; + matches(selector: string): boolean; addEventListener(type: "MSGestureChange", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureDoubleTap", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; addEventListener(type: "MSGestureEnd", listener: (ev: MSGestureEvent) => any, useCapture?: boolean): void; @@ -9317,7 +9339,6 @@ interface HTMLElement extends Element { title: string; blur(): void; click(): void; - contains(child: HTMLElement): boolean; dragDrop(): boolean; focus(): void; insertAdjacentElement(position: string, insertedElement: Element): Element; @@ -10867,7 +10888,7 @@ interface HTMLMediaElement extends HTMLElement { * Gets or sets the current playback position, in seconds. */ preload: string; - readyState: any; + readyState: number; /** * Returns a TimeRanges object that represents the ranges of the current media resource that can be seeked. */ @@ -11491,7 +11512,7 @@ interface HTMLSelectElement extends HTMLElement { * Sets or retrieves the name of the object. */ name: string; - options: HTMLSelectElement; + options: HTMLCollection; /** * When present, marks an element that can't be submitted without a value. */ @@ -11524,6 +11545,7 @@ interface HTMLSelectElement extends HTMLElement { * Returns whether an element will successfully validate based on forms validation rules and constraints. */ willValidate: boolean; + selectedOptions: HTMLCollection; /** * Adds an element to the areas, controlRange, or options collection. * @param element Variant of type Number that specifies the index position in the collection where the element is placed. If no value is given, the method places the element at the end of the collection. @@ -11777,19 +11799,19 @@ interface HTMLTableElement extends HTMLElement { /** * Creates an empty caption element in the table. */ - createCaption(): HTMLElement; + createCaption(): HTMLTableCaptionElement; /** * Creates an empty tBody element in the table. */ - createTBody(): HTMLElement; + createTBody(): HTMLTableSectionElement; /** * Creates an empty tFoot element in the table. */ - createTFoot(): HTMLElement; + createTFoot(): HTMLTableSectionElement; /** * Returns the tHead element object if successful, or null otherwise. */ - createTHead(): HTMLElement; + createTHead(): HTMLTableSectionElement; /** * Deletes the caption element and its contents from the table. */ @@ -11811,7 +11833,7 @@ interface HTMLTableElement extends HTMLElement { * Creates a new row (tr) in the table, and adds the row to the rows collection. * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. */ - insertRow(index?: number): HTMLElement; + insertRow(index?: number): HTMLTableRowElement; } declare var HTMLTableElement: { @@ -11862,7 +11884,7 @@ interface HTMLTableRowElement extends HTMLElement, HTMLTableAlignment { * Creates a new cell in the table row, and adds the cell to the cells collection. * @param index Number that specifies where to insert the cell in the tr. The default value is -1, which appends the new cell to the end of the cells collection. */ - insertCell(index?: number): HTMLElement; + insertCell(index?: number): HTMLTableCellElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -11889,7 +11911,7 @@ interface HTMLTableSectionElement extends HTMLElement, HTMLTableAlignment { * Creates a new row (tr) in the table, and adds the row to the rows collection. * @param index Number that specifies where to insert the row in the rows collection. The default value is -1, which appends the new row to the end of the rows collection. */ - insertRow(index?: number): HTMLElement; + insertRow(index?: number): HTMLTableRowElement; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -12278,7 +12300,7 @@ interface IDBDatabase extends EventTarget { onerror: (ev: Event) => any; version: string; close(): void; - createObjectStore(name: string, optionalParameters?: any): IDBObjectStore; + createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; deleteObjectStore(name: string): void; transaction(storeNames: any, mode?: string): IDBTransaction; addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -12303,10 +12325,11 @@ declare var IDBFactory: { } interface IDBIndex { - keyPath: string; + keyPath: string | string[]; name: string; objectStore: IDBObjectStore; unique: boolean; + multiEntry: boolean; count(key?: any): IDBRequest; get(key: any): IDBRequest; getKey(key: any): IDBRequest; @@ -12343,7 +12366,7 @@ interface IDBObjectStore { add(value: any, key?: any): IDBRequest; clear(): IDBRequest; count(key?: any): IDBRequest; - createIndex(name: string, keyPath: string, optionalParameters?: any): IDBIndex; + createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; delete(key: any): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; @@ -12427,7 +12450,7 @@ declare var IDBVersionChangeEvent: { } interface ImageData { - data: number[]; + data: Uint8ClampedArray; height: number; width: number; } @@ -13225,6 +13248,7 @@ interface Navigator extends Object, NavigatorID, NavigatorOnLine, NavigatorConte getGamepads(): Gamepad[]; javaEnabled(): boolean; msLaunchUri(uri: string, successCallback?: MSLaunchUriCallback, noHandlerCallback?: MSLaunchUriCallback): void; + vibrate(pattern: number | number[]): boolean; addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } @@ -13265,6 +13289,7 @@ interface Node extends EventTarget { normalize(): void; removeChild(oldChild: Node): Node; replaceChild(newChild: Node, oldChild: Node): Node; + contains(node: Node): boolean; ATTRIBUTE_NODE: number; CDATA_SECTION_NODE: number; COMMENT_NODE: number; @@ -17928,6 +17953,16 @@ interface XMLHttpRequestEventTarget { addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void; } +interface IDBObjectStoreParameters { + keyPath?: string | string[]; + autoIncrement?: boolean; +} + +interface IDBIndexParameters { + unique?: boolean; + multiEntry?: boolean; +} + interface NodeListOf extends NodeList { length: number; item(index: number): TNode; @@ -17963,6 +17998,15 @@ interface ProgressEventInit extends EventInit { total?: number; } +interface HTMLTemplateElement extends HTMLElement { + content: DocumentFragment; +} + +declare var HTMLTemplateElement: { + prototype: HTMLTemplateElement; + new(): HTMLTemplateElement; +} + declare type EventListenerOrEventListenerObject = EventListener | EventListenerObject; interface ErrorEventHandler { diff --git a/lib/lib.webworker.d.ts b/lib/lib.webworker.d.ts index 7ce06a6b4ac..1138538a1b8 100644 --- a/lib/lib.webworker.d.ts +++ b/lib/lib.webworker.d.ts @@ -528,7 +528,7 @@ interface IDBDatabase extends EventTarget { onerror: (ev: Event) => any; version: string; close(): void; - createObjectStore(name: string, optionalParameters?: any): IDBObjectStore; + createObjectStore(name: string, optionalParameters?: IDBObjectStoreParameters): IDBObjectStore; deleteObjectStore(name: string): void; transaction(storeNames: any, mode?: string): IDBTransaction; addEventListener(type: "abort", listener: (ev: Event) => any, useCapture?: boolean): void; @@ -553,10 +553,11 @@ declare var IDBFactory: { } interface IDBIndex { - keyPath: string; + keyPath: string | string[]; name: string; objectStore: IDBObjectStore; unique: boolean; + multiEntry: boolean; count(key?: any): IDBRequest; get(key: any): IDBRequest; getKey(key: any): IDBRequest; @@ -593,7 +594,7 @@ interface IDBObjectStore { add(value: any, key?: any): IDBRequest; clear(): IDBRequest; count(key?: any): IDBRequest; - createIndex(name: string, keyPath: string, optionalParameters?: any): IDBIndex; + createIndex(name: string, keyPath: string | string[], optionalParameters?: IDBIndexParameters): IDBIndex; delete(key: any): IDBRequest; deleteIndex(indexName: string): void; get(key: any): IDBRequest; @@ -677,7 +678,7 @@ declare var IDBVersionChangeEvent: { } interface ImageData { - data: number[]; + data: Uint8ClampedArray; height: number; width: number; } @@ -1109,6 +1110,16 @@ interface WorkerUtils extends Object, WindowBase64 { setTimeout(handler: any, timeout?: any, ...args: any[]): number; } +interface IDBObjectStoreParameters { + keyPath?: string | string[]; + autoIncrement?: boolean; +} + +interface IDBIndexParameters { + unique?: boolean; + multiEntry?: boolean; +} + interface BlobPropertyBag { type?: string; endings?: string; diff --git a/lib/tsc.js b/lib/tsc.js index 87a413af729..543deadb433 100644 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -247,9 +247,11 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos++] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos++; while (pos < count) { - result = f(result, array[pos++]); + result = f(result, array[pos]); + pos++; } return result; } @@ -261,9 +263,11 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos--] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos--; while (pos >= 0) { - result = f(result, array[pos--]); + result = f(result, array[pos]); + pos--; } return result; } @@ -346,6 +350,22 @@ var ts; return result; } ts.arrayToMap = arrayToMap; + function reduceProperties(map, callback, initial) { + var result = initial; + if (map) { + for (var key in map) { + if (hasProperty(map, key)) { + result = callback(result, map[key], String(key)); + } + } + } + return result; + } + ts.reduceProperties = reduceProperties; + function isArray(value) { + return Array.isArray ? Array.isArray(value) : value instanceof Array; + } + ts.isArray = isArray; function memoize(callback) { var value; return function () { @@ -639,7 +659,7 @@ var ts; } ts.getRelativePathToDirectoryOrUrl = getRelativePathToDirectoryOrUrl; function getBaseFileName(path) { - if (!path) { + if (path === undefined) { return undefined; } var i = path.lastIndexOf(ts.directorySeparator); @@ -664,14 +684,19 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; - ts.supportedExtensions = [".ts", ".tsx", ".d.ts"]; - ts.supportedJsExtensions = ts.supportedExtensions.concat(".js", ".jsx"); - function isSupportedSourceFileName(fileName) { + ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"]; + ts.supportedJavascriptExtensions = [".js", ".jsx"]; + var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions); + function getSupportedExtensions(options) { + return options && options.allowJs ? allSupportedExtensions : ts.supportedTypeScriptExtensions; + } + ts.getSupportedExtensions = getSupportedExtensions; + function isSupportedSourceFileName(fileName, compilerOptions) { if (!fileName) { return false; } - for (var _i = 0, supportedExtensions_1 = ts.supportedExtensions; _i < supportedExtensions_1.length; _i++) { - var extension = supportedExtensions_1[_i]; + for (var _i = 0, _a = getSupportedExtensions(compilerOptions); _i < _a.length; _i++) { + var extension = _a[_i]; if (fileExtensionIs(fileName, extension)) { return true; } @@ -690,22 +715,6 @@ var ts; return path; } ts.removeFileExtension = removeFileExtension; - var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; - var escapedCharsMap = { - "\0": "\\0", - "\t": "\\t", - "\v": "\\v", - "\f": "\\f", - "\b": "\\b", - "\r": "\\r", - "\n": "\\n", - "\\": "\\\\", - "\"": "\\\"", - "\u2028": "\\u2028", - "\u2029": "\\u2029", - "\u0085": "\\u0085" - }; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -902,7 +911,6 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); - var _tty = require("tty"); function createWatchedFileSet(interval, chunkSize) { if (interval === void 0) { interval = 2500; } if (chunkSize === void 0) { chunkSize = 30; } @@ -970,9 +978,6 @@ var ts; }; } var watchedFileSet = createWatchedFileSet(); - function isNode4OrLater() { - return parseInt(process.version.charAt(1)) >= 4; - } var platform = _os.platform(); var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; function readFile(fileName, encoding) { @@ -1055,9 +1060,6 @@ var ts; readFile: readFile, writeFile: writeFile, watchFile: function (fileName, callback) { - if (isNode4OrLater()) { - return _fs.watch(fileName, function (eventName, relativeFileName) { return callback(fileName); }); - } var watchedFile = watchedFileSet.addFile(fileName, callback); return { close: function () { return watchedFileSet.removeFile(watchedFile); } @@ -1103,12 +1105,40 @@ var ts; } }; } + function getChakraSystem() { + return { + newLine: ChakraHost.newLine || "\r\n", + args: ChakraHost.args, + useCaseSensitiveFileNames: !!ChakraHost.useCaseSensitiveFileNames, + write: ChakraHost.echo, + readFile: function (path, encoding) { + return ChakraHost.readFile(path); + }, + writeFile: function (path, data, writeByteOrderMark) { + if (writeByteOrderMark) { + data = "\uFEFF" + data; + } + ChakraHost.writeFile(path, data); + }, + resolvePath: ChakraHost.resolvePath, + fileExists: ChakraHost.fileExists, + directoryExists: ChakraHost.directoryExists, + createDirectory: ChakraHost.createDirectory, + getExecutingFilePath: function () { return ChakraHost.executingFile; }, + getCurrentDirectory: function () { return ChakraHost.currentDirectory; }, + readDirectory: ChakraHost.readDirectory, + exit: ChakraHost.quit + }; + } if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } else if (typeof process !== "undefined" && process.nextTick && !process.browser && typeof require !== "undefined") { return getNodeSystem(); } + else if (typeof ChakraHost !== "undefined") { + return getChakraSystem(); + } else { return undefined; } @@ -1226,7 +1256,7 @@ var ts; Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers_not_permitted_on_index_signature_members_1145", message: "Modifiers not permitted on index signature members." }, Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration_expected_1146", message: "Declaration expected." }, Import_declarations_in_a_namespace_cannot_reference_a_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import_declarations_in_a_namespace_cannot_reference_a_module_1147", message: "Import declarations in a namespace cannot reference a module." }, - Cannot_compile_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_1148", message: "Cannot compile modules unless the '--module' flag is provided." }, + Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_optio_1148", message: "Cannot compile modules unless the '--module' flag is provided. Consider setting the 'module' compiler option in a 'tsconfig.json' file." }, File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149", message: "File name '{0}' differs from already included file name '{1}' only in casing" }, new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead_1150", message: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "const_declarations_must_be_initialized_1155", message: "'const' declarations must be initialized" }, @@ -1313,6 +1343,10 @@ var ts; _0_modifier_cannot_be_used_with_1_modifier: { code: 1243, category: ts.DiagnosticCategory.Error, key: "_0_modifier_cannot_be_used_with_1_modifier_1243", message: "'{0}' modifier cannot be used with '{1}' modifier." }, Abstract_methods_can_only_appear_within_an_abstract_class: { code: 1244, category: ts.DiagnosticCategory.Error, key: "Abstract_methods_can_only_appear_within_an_abstract_class_1244", message: "Abstract methods can only appear within an abstract class." }, Method_0_cannot_have_an_implementation_because_it_is_marked_abstract: { code: 1245, category: ts.DiagnosticCategory.Error, key: "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245", message: "Method '{0}' cannot have an implementation because it is marked abstract." }, + An_interface_property_cannot_have_an_initializer: { code: 1246, category: ts.DiagnosticCategory.Error, key: "An_interface_property_cannot_have_an_initializer_1246", message: "An interface property cannot have an initializer." }, + A_type_literal_property_cannot_have_an_initializer: { code: 1247, category: ts.DiagnosticCategory.Error, key: "A_type_literal_property_cannot_have_an_initializer_1247", message: "A type literal property cannot have an initializer." }, + A_class_member_cannot_have_the_0_keyword: { code: 1248, category: ts.DiagnosticCategory.Error, key: "A_class_member_cannot_have_the_0_keyword_1248", message: "A class member cannot have the '{0}' keyword." }, + A_decorator_can_only_decorate_a_method_implementation_not_an_overload: { code: 1249, category: ts.DiagnosticCategory.Error, key: "A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249", message: "A decorator can only decorate a method implementation, not an overload." }, with_statements_are_not_allowed_in_an_async_function_block: { code: 1300, category: ts.DiagnosticCategory.Error, key: "with_statements_are_not_allowed_in_an_async_function_block_1300", message: "'with' statements are not allowed in an async function block." }, await_expression_is_only_allowed_within_an_async_function: { code: 1308, category: ts.DiagnosticCategory.Error, key: "await_expression_is_only_allowed_within_an_async_function_1308", message: "'await' expression is only allowed within an async function." }, Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, @@ -1326,11 +1360,12 @@ var ts; Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module_0_has_no_exported_member_1_2305", message: "Module '{0}' has no exported member '{1}'." }, File_0_is_not_a_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_a_module_2306", message: "File '{0}' is not a module." }, Cannot_find_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot_find_module_0_2307", message: "Cannot find module '{0}'." }, + Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity: { code: 2308, category: ts.DiagnosticCategory.Error, key: "Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308", message: "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity." }, An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309", message: "An export assignment cannot be used in a module with other exported elements." }, Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type_0_recursively_references_itself_as_a_base_type_2310", message: "Type '{0}' recursively references itself as a base type." }, A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A_class_may_only_extend_another_class_2311", message: "A class may only extend another class." }, An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An_interface_may_only_extend_a_class_or_another_interface_2312", message: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list_2313", message: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Type_parameter_0_has_a_circular_constraint: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_has_a_circular_constraint_2313", message: "Type parameter '{0}' has a circular constraint." }, Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic_type_0_requires_1_type_argument_s_2314", message: "Generic type '{0}' requires {1} type argument(s)." }, Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_generic_2315", message: "Type '{0}' is not generic." }, Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global_type_0_must_be_a_class_or_interface_type_2316", message: "Global type '{0}' must be a class or interface type." }, @@ -1340,6 +1375,7 @@ var ts; Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface_0_cannot_simultaneously_extend_types_1_and_2_2320", message: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive_stack_depth_comparing_types_0_and_1_2321", message: "Excessive stack depth comparing types '{0}' and '{1}'." }, Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_assignable_to_type_1_2322", message: "Type '{0}' is not assignable to type '{1}'." }, + Cannot_redeclare_exported_variable_0: { code: 2323, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_exported_variable_0_2323", message: "Cannot redeclare exported variable '{0}'." }, Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property_0_is_missing_in_type_1_2324", message: "Property '{0}' is missing in type '{1}'." }, Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property_0_is_private_in_type_1_but_not_in_type_2_2325", message: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types_of_property_0_are_incompatible_2326", message: "Types of property '{0}' are incompatible." }, @@ -1410,6 +1446,7 @@ var ts; Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload_signature_is_not_compatible_with_function_implementation_2394", message: "Overload signature is not compatible with function implementation." }, Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395", message: "Individual declarations in merged declaration '{0}' must be all exported or all local." }, Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396", message: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Declaration_name_conflicts_with_built_in_global_identifier_0: { code: 2397, category: ts.DiagnosticCategory.Error, key: "Declaration_name_conflicts_with_built_in_global_identifier_0_2397", message: "Declaration name conflicts with built-in global identifier '{0}'." }, Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399", message: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400", message: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference_2401", message: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, @@ -1523,6 +1560,8 @@ var ts; Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: { code: 2515, category: ts.DiagnosticCategory.Error, key: "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", message: "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'." }, All_declarations_of_an_abstract_method_must_be_consecutive: { code: 2516, category: ts.DiagnosticCategory.Error, key: "All_declarations_of_an_abstract_method_must_be_consecutive_2516", message: "All declarations of an abstract method must be consecutive." }, Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: { code: 2517, category: ts.DiagnosticCategory.Error, key: "Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517", message: "Cannot assign an abstract constructor type to a non-abstract constructor type." }, + A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard: { code: 2518, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518", message: "A 'this'-based type guard is not compatible with a parameter-based type guard." }, + A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods: { code: 2519, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_r_2519", message: "A 'this'-based type predicate is only allowed within a class or interface's members, get accessors, or return type positions for functions and methods." }, Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: { code: 2520, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520", message: "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions." }, Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions: { code: 2521, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions_2521", message: "Expression resolves to variable declaration '{0}' that compiler uses to support async functions." }, The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_2522", message: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, @@ -1532,7 +1571,7 @@ var ts; A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface: { code: 2526, category: ts.DiagnosticCategory.Error, key: "A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526", message: "A 'this' type is available only in a non-static member of a class or interface." }, The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary: { code: 2527, category: ts.DiagnosticCategory.Error, key: "The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary_2527", message: "The inferred type of '{0}' references an inaccessible 'this' type. A type annotation is necessary." }, A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, - JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_must_be_an_object_type_2600", message: "JSX element attributes type '{0}' must be an object type." }, + JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, Property_0_in_type_1_is_not_assignable_to_type_2: { code: 2603, category: ts.DiagnosticCategory.Error, key: "Property_0_in_type_1_is_not_assignable_to_type_2_2603", message: "Property '{0}' in type '{1}' is not assignable to type '{2}'" }, @@ -1548,6 +1587,9 @@ var ts; Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_pack_2654", message: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_2656", message: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, JSX_expressions_must_have_one_parent_element: { code: 2657, category: ts.DiagnosticCategory.Error, key: "JSX_expressions_must_have_one_parent_element_2657", message: "JSX expressions must have one parent element" }, + Type_0_provides_no_match_for_the_signature_1: { code: 2658, category: ts.DiagnosticCategory.Error, key: "Type_0_provides_no_match_for_the_signature_1_2658", message: "Type '{0}' provides no match for the signature '{1}'" }, + super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher: { code: 2659, category: ts.DiagnosticCategory.Error, key: "super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659", message: "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher." }, + super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions: { code: 2660, category: ts.DiagnosticCategory.Error, key: "super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660", message: "'super' can only be referenced in members of derived classes or object literal expressions." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -1632,6 +1674,11 @@ var ts; Option_0_cannot_be_specified_without_specifying_option_1: { code: 5052, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_without_specifying_option_1_5052", message: "Option '{0}' cannot be specified without specifying option '{1}'." }, Option_0_cannot_be_specified_with_option_1: { code: 5053, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_with_option_1_5053", message: "Option '{0}' cannot be specified with option '{1}'." }, A_tsconfig_json_file_is_already_defined_at_Colon_0: { code: 5054, category: ts.DiagnosticCategory.Error, key: "A_tsconfig_json_file_is_already_defined_at_Colon_0_5054", message: "A 'tsconfig.json' file is already defined at: '{0}'." }, + Cannot_write_file_0_because_it_would_overwrite_input_file: { code: 5055, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_overwrite_input_file_5055", message: "Cannot write file '{0}' because it would overwrite input file." }, + Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files: { code: 5056, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056", message: "Cannot write file '{0}' because it would be overwritten by multiple input files." }, + Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0: { code: 5057, category: ts.DiagnosticCategory.Error, key: "Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057", message: "Cannot find a tsconfig.json file at the specified directory: '{0}'" }, + The_specified_path_does_not_exist_Colon_0: { code: 5058, category: ts.DiagnosticCategory.Error, key: "The_specified_path_does_not_exist_Colon_0_5058", message: "The specified path does not exist: '{0}'" }, + Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier: { code: 5059, category: ts.DiagnosticCategory.Error, key: "Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier_5059", message: "Invalide value for '--reactNamespace'. '{0}' is not a valid identifier." }, Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate_and_emit_output_to_single_file_6001", message: "Concatenate and emit output to single file." }, Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_d_ts_file_6002", message: "Generates corresponding '.d.ts' file." }, Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, @@ -1642,6 +1689,7 @@ var ts; Do_not_emit_outputs_if_any_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_if_any_errors_were_reported_6008", message: "Do not emit outputs if any errors were reported." }, Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, + Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, @@ -1697,6 +1745,8 @@ var ts; Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, + Allow_javascript_files_to_be_compiled: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6083", message: "Allow javascript files to be compiled." }, + Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable_0_implicitly_has_an_1_type_7005", message: "Variable '{0}' implicitly has an '{1}' type." }, Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter_0_implicitly_has_an_1_type_7006", message: "Parameter '{0}' implicitly has an '{1}' type." }, Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member_0_implicitly_has_an_1_type_7008", message: "Member '{0}' implicitly has an '{1}' type." }, @@ -1744,7 +1794,8 @@ var ts; Cannot_use_JSX_unless_the_jsx_flag_is_provided: { code: 17004, category: ts.DiagnosticCategory.Error, key: "Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004", message: "Cannot use JSX unless the '--jsx' flag is provided." }, A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005", message: "A constructor cannot contain a 'super' call when its class extends 'null'" }, An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, - A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." } + A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, + JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." } }; })(ts || (ts = {})); var ts; @@ -1934,7 +1985,8 @@ var ts; var pos = 0; var lineStart = 0; while (pos < text.length) { - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 13: if (text.charCodeAt(pos) === 10) { @@ -2037,6 +2089,9 @@ var ts; } ts.couldStartTrivia = couldStartTrivia; function skipTrivia(text, pos, stopAfterLineBreak) { + if (!(pos >= 0)) { + return pos; + } while (true) { var ch = text.charCodeAt(pos); switch (ch) { @@ -2254,6 +2309,18 @@ var ts; ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); } ts.isIdentifierPart = isIdentifierPart; + function isIdentifier(name, languageVersion) { + if (!isIdentifierStart(name.charCodeAt(0), languageVersion)) { + return false; + } + for (var i = 1, n = name.length; i < n; i++) { + if (!isIdentifierPart(name.charCodeAt(i), languageVersion)) { + return false; + } + } + return true; + } + ts.isIdentifier = isIdentifier; function createScanner(languageVersion, skipTrivia, languageVariant, text, onError, start, length) { if (languageVariant === void 0) { languageVariant = 0; } var pos; @@ -2363,7 +2430,8 @@ var ts; return value; } function scanString() { - var quote = text.charCodeAt(pos++); + var quote = text.charCodeAt(pos); + pos++; var result = ""; var start = pos; while (true) { @@ -2450,7 +2518,8 @@ var ts; error(ts.Diagnostics.Unexpected_end_of_text); return ""; } - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 48: return "\0"; @@ -2659,7 +2728,8 @@ var ts; } return pos += 2, token = 31; } - return pos++, token = 49; + pos++; + return token = 49; case 34: case 39: tokenValue = scanString(); @@ -2670,7 +2740,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 62; } - return pos++, token = 40; + pos++; + return token = 40; case 38: if (text.charCodeAt(pos + 1) === 38) { return pos += 2, token = 51; @@ -2678,11 +2749,14 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 66; } - return pos++, token = 46; + pos++; + return token = 46; case 40: - return pos++, token = 17; + pos++; + return token = 17; case 41: - return pos++, token = 18; + pos++; + return token = 18; case 42: if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 59; @@ -2693,7 +2767,8 @@ var ts; } return pos += 2, token = 38; } - return pos++, token = 37; + pos++; + return token = 37; case 43: if (text.charCodeAt(pos + 1) === 43) { return pos += 2, token = 41; @@ -2701,9 +2776,11 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 57; } - return pos++, token = 35; + pos++; + return token = 35; case 44: - return pos++, token = 24; + pos++; + return token = 24; case 45: if (text.charCodeAt(pos + 1) === 45) { return pos += 2, token = 42; @@ -2711,7 +2788,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 58; } - return pos++, token = 36; + pos++; + return token = 36; case 46: if (isDigit(text.charCodeAt(pos + 1))) { tokenValue = scanNumber(); @@ -2720,7 +2798,8 @@ var ts; if (text.charCodeAt(pos + 1) === 46 && text.charCodeAt(pos + 2) === 46) { return pos += 3, token = 22; } - return pos++, token = 21; + pos++; + return token = 21; case 47: if (text.charCodeAt(pos + 1) === 47) { pos += 2; @@ -2766,7 +2845,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 61; } - return pos++, token = 39; + pos++; + return token = 39; case 48: if (pos + 2 < end && (text.charCodeAt(pos + 1) === 88 || text.charCodeAt(pos + 1) === 120)) { pos += 2; @@ -2814,9 +2894,11 @@ var ts; tokenValue = scanNumber(); return token = 8; case 58: - return pos++, token = 54; + pos++; + return token = 54; case 59: - return pos++, token = 23; + pos++; + return token = 23; case 60: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2841,7 +2923,8 @@ var ts; text.charCodeAt(pos + 2) !== 42) { return pos += 2, token = 26; } - return pos++, token = 25; + pos++; + return token = 25; case 61: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2861,7 +2944,8 @@ var ts; if (text.charCodeAt(pos + 1) === 62) { return pos += 2, token = 34; } - return pos++, token = 56; + pos++; + return token = 56; case 62: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2872,20 +2956,26 @@ var ts; return token = 7; } } - return pos++, token = 27; + pos++; + return token = 27; case 63: - return pos++, token = 53; + pos++; + return token = 53; case 91: - return pos++, token = 19; + pos++; + return token = 19; case 93: - return pos++, token = 20; + pos++; + return token = 20; case 94: if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 68; } - return pos++, token = 48; + pos++; + return token = 48; case 123: - return pos++, token = 15; + pos++; + return token = 15; case 124: if (text.charCodeAt(pos + 1) === 124) { return pos += 2, token = 52; @@ -2893,13 +2983,17 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 67; } - return pos++, token = 47; + pos++; + return token = 47; case 125: - return pos++, token = 16; + pos++; + return token = 16; case 126: - return pos++, token = 50; + pos++; + return token = 50; case 64: - return pos++, token = 55; + pos++; + return token = 55; case 92: var cookedChar = peekUnicodeEscape(); if (cookedChar >= 0 && isIdentifierStart(cookedChar, languageVersion)) { @@ -2908,7 +3002,8 @@ var ts; return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0; + pos++; + return token = 0; default: if (isIdentifierStart(ch, languageVersion)) { pos++; @@ -2930,7 +3025,8 @@ var ts; continue; } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0; + pos++; + return token = 0; } } } @@ -2946,10 +3042,12 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 64; } - return pos++, token = 44; + pos++; + return token = 44; } if (text.charCodeAt(pos) === 61) { - return pos++, token = 29; + pos++; + return token = 29; } } return token; @@ -3032,7 +3130,7 @@ var ts; break; } } - return token = 236; + return token = 238; } function scanJsxIdentifier() { if (tokenIsIdentifierOrKeyword(token)) { @@ -3158,7 +3256,7 @@ var ts; if (array1.length !== array2.length) { return false; } - for (var i = 0; i < array1.length; ++i) { + for (var i = 0; i < array1.length; i++) { var equals = equaler ? equaler(array1[i], array2[i]) : array1[i] === array2[i]; if (!equals) { return false; @@ -3198,7 +3296,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 248) { + while (node && node.kind !== 250) { node = node.parent; } return node; @@ -3289,15 +3387,15 @@ var ts; return current; } switch (current.kind) { - case 248: + case 250: + case 222: + case 246: case 220: - case 244: - case 218: - case 199: - case 200: case 201: + case 202: + case 203: return current; - case 192: + case 194: if (!isFunctionLike(current.parent)) { return current; } @@ -3308,9 +3406,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 211 && + declaration.kind === 213 && declaration.parent && - declaration.parent.kind === 244; + declaration.parent.kind === 246; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { @@ -3346,22 +3444,23 @@ var ts; function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 248: + case 250: var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); - case 211: - case 163: - case 214: - case 186: - case 215: - case 218: - case 217: - case 247: case 213: - case 173: + case 165: + case 216: + case 188: + case 217: + case 220: + case 219: + case 249: + case 215: + case 175: + case 143: errorNode = node.name; break; } @@ -3387,11 +3486,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 217 && isConst(node); + return node.kind === 219 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 163 || isBindingPattern(node))) { + while (node && (node.kind === 165 || isBindingPattern(node))) { node = node.parent; } return node; @@ -3399,14 +3498,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 211) { + if (node.kind === 213) { node = node.parent; } - if (node && node.kind === 212) { + if (node && node.kind === 214) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 193) { + if (node && node.kind === 195) { flags |= node.flags; } return flags; @@ -3421,7 +3520,7 @@ var ts; } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 195 && node.expression.kind === 9; + return node.kind === 197 && node.expression.kind === 9; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -3451,7 +3550,7 @@ var ts; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (151 <= node.kind && node.kind <= 160) { + if (150 <= node.kind && node.kind <= 162) { return true; } switch (node.kind) { @@ -3462,42 +3561,40 @@ var ts; case 131: return true; case 103: - return node.parent.kind !== 177; - case 9: - return node.parent.kind === 138; - case 188: + return node.parent.kind !== 179; + case 190: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); case 69: if (node.parent.kind === 135 && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 166 && node.parent.name === node) { + else if (node.parent.kind === 168 && node.parent.name === node) { node = node.parent; } - ts.Debug.assert(node.kind === 69 || node.kind === 135 || node.kind === 166, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + ts.Debug.assert(node.kind === 69 || node.kind === 135 || node.kind === 168, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); case 135: - case 166: + case 168: case 97: var parent_1 = node.parent; if (parent_1.kind === 154) { return false; } - if (151 <= parent_1.kind && parent_1.kind <= 160) { + if (150 <= parent_1.kind && parent_1.kind <= 162) { return true; } switch (parent_1.kind) { - case 188: + case 190: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); case 137: return node === parent_1.constraint; case 141: case 140: case 138: - case 211: - return node === parent_1.type; case 213: - case 173: - case 174: + return node === parent_1.type; + case 215: + case 175: + case 176: case 144: case 143: case 142: @@ -3508,12 +3605,12 @@ var ts; case 148: case 149: return node === parent_1.type; - case 171: + case 173: return node === parent_1.type; - case 168: - case 169: - return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; case 170: + case 171: + return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; + case 172: return false; } } @@ -3524,23 +3621,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 204: + case 206: return visitor(node); - case 220: - case 192: - case 196: - case 197: + case 222: + case 194: case 198: case 199: case 200: case 201: - case 205: - case 206: - case 241: - case 242: + case 202: + case 203: case 207: - case 209: + case 208: + case 243: case 244: + case 209: + case 211: + case 246: return ts.forEachChild(node, traverse); } } @@ -3550,18 +3647,18 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184: + case 186: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } + case 219: case 217: - case 215: + case 220: case 218: case 216: - case 214: - case 186: + case 188: return; default: if (isFunctionLike(node)) { @@ -3581,14 +3678,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 163: - case 247: + case 165: + case 249: case 138: - case 245: + case 247: case 141: case 140: - case 246: - case 211: + case 248: + case 213: return true; } } @@ -3600,7 +3697,7 @@ var ts; } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 214 || node.kind === 186); + return node && (node.kind === 216 || node.kind === 188); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -3610,9 +3707,9 @@ var ts; function isFunctionLikeKind(kind) { switch (kind) { case 144: - case 173: - case 213: - case 174: + case 175: + case 215: + case 176: case 143: case 142: case 145: @@ -3633,8 +3730,8 @@ var ts; case 144: case 145: case 146: - case 213: - case 173: + case 215: + case 175: return true; } return false; @@ -3642,26 +3739,30 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { + case 201: + case 202: + case 203: case 199: case 200: - case 201: - case 197: - case 198: return true; - case 207: + case 209: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 192 && isFunctionLike(node.parent); + return node && node.kind === 194 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 143 && node.parent.kind === 165; + return node && node.kind === 143 && node.parent.kind === 167; } ts.isObjectLiteralMethod = isObjectLiteralMethod; + function isIdentifierTypePredicate(predicate) { + return predicate && predicate.kind === 1; + } + ts.isIdentifierTypePredicate = isIdentifierTypePredicate; function getContainingFunction(node) { while (true) { node = node.parent; @@ -3701,13 +3802,13 @@ var ts; node = node.parent; } break; - case 174: + case 176: if (!includeArrowFunctions) { continue; } - case 213: - case 173: - case 218: + case 215: + case 175: + case 220: case 141: case 140: case 143: @@ -3718,37 +3819,27 @@ var ts; case 147: case 148: case 149: - case 217: - case 248: + case 219: + case 250: return node; } } } ts.getThisContainer = getThisContainer; - function getSuperContainer(node, includeFunctions) { + function getSuperContainer(node, stopOnFunctions) { while (true) { node = node.parent; - if (!node) + if (!node) { return node; + } switch (node.kind) { case 136: - if (isClassLike(node.parent.parent)) { - return node; - } node = node.parent; break; - case 139: - if (node.parent.kind === 138 && isClassElement(node.parent.parent)) { - node = node.parent.parent; - } - else if (isClassElement(node.parent)) { - node = node.parent; - } - break; - case 213: - case 173: - case 174: - if (!includeFunctions) { + case 215: + case 175: + case 176: + if (!stopOnFunctions) { continue; } case 141: @@ -3759,6 +3850,14 @@ var ts; case 145: case 146: return node; + case 139: + if (node.parent.kind === 138 && isClassElement(node.parent.parent)) { + node = node.parent.parent; + } + else if (isClassElement(node.parent)) { + node = node.parent; + } + break; } } } @@ -3768,7 +3867,7 @@ var ts; switch (node.kind) { case 151: return node.typeName; - case 188: + case 190: return node.expression; case 69: case 135: @@ -3779,7 +3878,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 170) { + if (node.kind === 172) { return node.tag; } return node.expression; @@ -3787,23 +3886,23 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 214: + case 216: return true; case 141: - return node.parent.kind === 214; + return node.parent.kind === 216; case 138: - return node.parent.body && node.parent.parent.kind === 214; + return node.parent.body && node.parent.parent.kind === 216; case 145: case 146: case 143: - return node.body && node.parent.kind === 214; + return node.body && node.parent.kind === 216; } return false; } ts.nodeCanBeDecorated = nodeCanBeDecorated; function nodeIsDecorated(node) { switch (node.kind) { - case 214: + case 216: if (node.decorators) { return true; } @@ -3829,27 +3928,12 @@ var ts; return false; } ts.nodeIsDecorated = nodeIsDecorated; - function childIsDecorated(node) { - switch (node.kind) { - case 214: - return ts.forEach(node.members, nodeOrChildIsDecorated); - case 143: - case 146: - return ts.forEach(node.parameters, nodeIsDecorated); - } - return false; - } - ts.childIsDecorated = childIsDecorated; - function nodeOrChildIsDecorated(node) { - return nodeIsDecorated(node) || childIsDecorated(node); - } - ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 166; + return node.kind === 168; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 167; + return node.kind === 169; } ts.isElementAccessExpression = isElementAccessExpression; function isExpression(node) { @@ -3859,34 +3943,34 @@ var ts; case 99: case 84: case 10: - case 164: - case 165: case 166: case 167: case 168: case 169: case 170: - case 189: case 171: case 172: + case 191: case 173: - case 186: case 174: - case 177: case 175: + case 188: case 176: case 179: - case 180: + case 177: + case 178: case 181: case 182: - case 185: case 183: - case 11: - case 187: - case 233: - case 234: case 184: - case 178: + case 187: + case 185: + case 11: + case 189: + case 235: + case 236: + case 186: + case 180: return true; case 135: while (node.parent.kind === 135) { @@ -3902,47 +3986,47 @@ var ts; case 97: var parent_2 = node.parent; switch (parent_2.kind) { - case 211: + case 213: case 138: case 141: case 140: + case 249: case 247: - case 245: - case 163: + case 165: return parent_2.initializer === node; - case 195: - case 196: case 197: case 198: - case 204: - case 205: - case 206: - case 241: - case 208: - case 206: - return parent_2.expression === node; case 199: + case 200: + case 206: + case 207: + case 208: + case 243: + case 210: + case 208: + return parent_2.expression === node; + case 201: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 212) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 214) || forStatement.condition === node || forStatement.incrementor === node; - case 200: - case 201: + case 202: + case 203: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 212) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 214) || forInStatement.expression === node; - case 171: - case 189: + case 173: + case 191: return node === parent_2.expression; - case 190: + case 192: return node === parent_2.expression; case 136: return node === parent_2.expression; case 139: - case 240: - case 239: + case 242: + case 241: return true; - case 188: + case 190: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -3964,7 +4048,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 && node.moduleReference.kind === 232; + return node.kind === 223 && node.moduleReference.kind === 234; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -3973,7 +4057,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 && node.moduleReference.kind !== 232; + return node.kind === 223 && node.moduleReference.kind !== 234; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -3985,43 +4069,54 @@ var ts; } ts.isInJavaScriptFile = isInJavaScriptFile; function isRequireCall(expression) { - return expression.kind === 168 && + return expression.kind === 170 && expression.expression.kind === 69 && expression.expression.text === "require" && expression.arguments.length === 1 && expression.arguments[0].kind === 9; } ts.isRequireCall = isRequireCall; - function isExportsPropertyAssignment(expression) { - return isInJavaScriptFile(expression) && - (expression.kind === 181) && - (expression.operatorToken.kind === 56) && - (expression.left.kind === 166) && - (expression.left.expression.kind === 69) && - ((expression.left.expression).text === "exports"); + function getSpecialPropertyAssignmentKind(expression) { + if (expression.kind !== 183) { + return 0; + } + var expr = expression; + if (expr.operatorToken.kind !== 56 || expr.left.kind !== 168) { + return 0; + } + var lhs = expr.left; + if (lhs.expression.kind === 69) { + var lhsId = lhs.expression; + if (lhsId.text === "exports") { + return 1; + } + else if (lhsId.text === "module" && lhs.name.text === "exports") { + return 2; + } + } + else if (lhs.expression.kind === 97) { + return 4; + } + else if (lhs.expression.kind === 168) { + var innerPropertyAccess = lhs.expression; + if (innerPropertyAccess.expression.kind === 69 && innerPropertyAccess.name.text === "prototype") { + return 3; + } + } + return 0; } - ts.isExportsPropertyAssignment = isExportsPropertyAssignment; - function isModuleExportsAssignment(expression) { - return isInJavaScriptFile(expression) && - (expression.kind === 181) && - (expression.operatorToken.kind === 56) && - (expression.left.kind === 166) && - (expression.left.expression.kind === 69) && - ((expression.left.expression).text === "module") && - (expression.left.name.text === "exports"); - } - ts.isModuleExportsAssignment = isModuleExportsAssignment; + ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 222) { + if (node.kind === 224) { return node.moduleSpecifier; } - if (node.kind === 221) { + if (node.kind === 223) { var reference = node.moduleReference; - if (reference.kind === 232) { + if (reference.kind === 234) { return reference.expression; } } - if (node.kind === 228) { + if (node.kind === 230) { return node.moduleSpecifier; } } @@ -4032,8 +4127,8 @@ var ts; case 138: case 143: case 142: - case 246: - case 245: + case 248: + case 247: case 141: case 140: return node.questionToken !== undefined; @@ -4043,9 +4138,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 261 && + return node.kind === 263 && node.parameters.length > 0 && - node.parameters[0].type.kind === 263; + node.parameters[0].type.kind === 265; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind) { @@ -4059,15 +4154,15 @@ var ts; } } function getJSDocTypeTag(node) { - return getJSDocTag(node, 269); + return getJSDocTag(node, 271); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 268); + return getJSDocTag(node, 270); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 270); + return getJSDocTag(node, 272); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -4076,7 +4171,7 @@ var ts; var docComment = parameter.parent.jsDocComment; if (docComment) { return ts.forEach(docComment.tags, function (t) { - if (t.kind === 267) { + if (t.kind === 269) { var parameterTag = t; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -4095,12 +4190,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.parserContextFlags & 32) { - if (node.type && node.type.kind === 262) { + if (node.type && node.type.kind === 264) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 262; + return paramTag.typeExpression.type.kind === 264; } } return node.dotDotDotToken !== undefined; @@ -4121,7 +4216,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 162 || node.kind === 161); + return !!node && (node.kind === 164 || node.kind === 163); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -4145,34 +4240,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 174: - case 163: - case 214: - case 186: + case 176: + case 165: + case 216: + case 188: case 144: - case 217: - case 247: - case 230: - case 213: - case 173: - case 145: - case 223: - case 221: - case 226: + case 219: + case 249: + case 232: case 215: + case 175: + case 145: + case 225: + case 223: + case 228: + case 217: case 143: case 142: - case 218: - case 224: + case 220: + case 226: case 138: - case 245: + case 247: case 141: case 140: case 146: - case 246: - case 216: + case 248: + case 218: case 137: - case 211: + case 213: return true; } return false; @@ -4180,25 +4275,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 203: - case 202: - case 210: - case 197: - case 195: - case 194: - case 200: - case 201: - case 199: - case 196: - case 207: + case 205: case 204: + case 212: + case 199: + case 197: + case 196: + case 202: + case 203: + case 201: + case 198: + case 209: case 206: case 208: - case 209: - case 193: - case 198: - case 205: - case 227: + case 210: + case 211: + case 195: + case 200: + case 207: + case 229: return true; default: return false; @@ -4225,7 +4320,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 226 || parent.kind === 230) { + if (parent.kind === 228 || parent.kind === 232) { if (parent.propertyName) { return true; } @@ -4245,9 +4340,9 @@ var ts; case 142: case 145: case 146: + case 249: case 247: - case 245: - case 166: + case 168: return parent.name === node; case 135: if (parent.right === node) { @@ -4257,22 +4352,22 @@ var ts; return parent.kind === 154; } return false; - case 163: - case 226: + case 165: + case 228: return parent.propertyName === node; - case 230: + case 232: return true; } return false; } ts.isIdentifierName = isIdentifierName; function isAliasSymbolDeclaration(node) { - return node.kind === 221 || - node.kind === 223 && !!node.name || - node.kind === 224 || + return node.kind === 223 || + node.kind === 225 && !!node.name || node.kind === 226 || - node.kind === 230 || - node.kind === 227 && node.expression.kind === 69; + node.kind === 228 || + node.kind === 232 || + node.kind === 229 && node.expression.kind === 69; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -4405,7 +4500,7 @@ var ts; return node.kind === 69 && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; - function isModifier(token) { + function isModifierKind(token) { switch (token) { case 115: case 118: @@ -4421,39 +4516,56 @@ var ts; } return false; } - ts.isModifier = isModifier; + ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); return root.kind === 138; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 163) { + while (node.kind === 165) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 218 || n.kind === 248; + return isFunctionLike(n) || n.kind === 220 || n.kind === 250; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; - function cloneEntityName(node) { - if (node.kind === 69) { - var clone_1 = createSynthesizedNode(69); - clone_1.text = node.text; - return clone_1; + function cloneNode(node, location, flags, parent) { + var clone = location !== undefined + ? ts.createNode(node.kind, location.pos, location.end) + : createSynthesizedNode(node.kind); + for (var key in node) { + if (clone.hasOwnProperty(key) || !node.hasOwnProperty(key)) { + continue; + } + clone[key] = node[key]; } - else { - var clone_2 = createSynthesizedNode(135); - clone_2.left = cloneEntityName(node.left); - clone_2.left.parent = clone_2; - clone_2.right = cloneEntityName(node.right); - clone_2.right.parent = clone_2; - return clone_2; + if (flags !== undefined) { + clone.flags = flags; } + if (parent !== undefined) { + clone.parent = parent; + } + return clone; + } + ts.cloneNode = cloneNode; + function cloneEntityName(node, parent) { + var clone = cloneNode(node, node, node.flags, parent); + if (isQualifiedName(clone)) { + var left = clone.left, right = clone.right; + clone.left = cloneEntityName(left, clone); + clone.right = cloneNode(right, right, right.flags, parent); + } + return clone; } ts.cloneEntityName = cloneEntityName; + function isQualifiedName(node) { + return node.kind === 135; + } + ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { return node.pos === -1; } @@ -4656,8 +4768,8 @@ var ts; writeTextOfNode: writeTextOfNode, writeLiteral: writeLiteral, writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, + increaseIndent: function () { indent++; }, + decreaseIndent: function () { indent--; }, getIndent: function () { return indent; }, getTextPos: function () { return output.length; }, getLine: function () { return lineCount + 1; }, @@ -4668,8 +4780,10 @@ var ts; } ts.createTextWriter = createTextWriter; function getExternalModuleNameFromPath(host, fileName) { - var dir = host.getCurrentDirectory(); - var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, fileName, dir, function (f) { return host.getCanonicalFileName(f); }, false); + var getCanonicalFileName = function (f) { return host.getCanonicalFileName(f); }; + var dir = ts.toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), getCanonicalFileName); + var filePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, filePath, dir, getCanonicalFileName, false); return ts.removeFileExtension(relativePath); } ts.getExternalModuleNameFromPath = getExternalModuleNameFromPath; @@ -4685,6 +4799,61 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getEmitScriptTarget(compilerOptions) { + return compilerOptions.target || 0; + } + ts.getEmitScriptTarget = getEmitScriptTarget; + function getEmitModuleKind(compilerOptions) { + return compilerOptions.module ? + compilerOptions.module : + getEmitScriptTarget(compilerOptions) === 2 ? 5 : 0; + } + ts.getEmitModuleKind = getEmitModuleKind; + function forEachExpectedEmitFile(host, action, targetSourceFile) { + var options = host.getCompilerOptions(); + if (options.outFile || options.out) { + onBundledEmit(host); + } + else { + var sourceFiles = targetSourceFile === undefined ? host.getSourceFiles() : [targetSourceFile]; + for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { + var sourceFile = sourceFiles_1[_i]; + if (!isDeclarationFile(sourceFile)) { + onSingleFileEmit(host, sourceFile); + } + } + } + function onSingleFileEmit(host, sourceFile) { + var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, sourceFile.languageVariant === 1 && options.jsx === 1 ? ".jsx" : ".js"); + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + }; + action(emitFileNames, [sourceFile], false); + } + function onBundledEmit(host) { + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && + (!isExternalModule(sourceFile) || + (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); + if (bundledSources.length) { + var jsFilePath = options.outFile || options.out; + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + }; + action(emitFileNames, bundledSources, true); + } + } + function getSourceMapFilePath(jsFilePath, options) { + return options.sourceMap ? jsFilePath + ".map" : undefined; + } + function getDeclarationEmitFilePath(jsFilePath, options) { + return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; + } + } + ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); @@ -4693,7 +4862,7 @@ var ts; ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); }); } ts.writeFile = writeFile; @@ -4717,16 +4886,6 @@ var ts; return accessor && accessor.parameters.length > 0 && accessor.parameters[0].type; } ts.getSetAccessorTypeAnnotationNode = getSetAccessorTypeAnnotationNode; - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!isDeclarationFile(sourceFile)) { - if ((isExternalModule(sourceFile) || !(compilerOptions.outFile || compilerOptions.out))) { - return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js"); - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; function getAllAccessorDeclarations(declarations, accessor) { var firstAccessor; var secondAccessor; @@ -4926,24 +5085,24 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 166: - case 167: - case 169: case 168: - case 233: - case 234: + case 169: + case 171: case 170: - case 164: + case 235: + case 236: case 172: - case 165: - case 186: - case 173: + case 166: + case 174: + case 167: + case 188: + case 175: case 69: case 10: case 8: case 9: case 11: - case 183: + case 185: case 84: case 93: case 97: @@ -4960,7 +5119,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 188 && + return node.kind === 190 && node.parent.token === 83 && isClassLike(node.parent.parent); } @@ -4982,15 +5141,15 @@ var ts; } function isRightSideOfQualifiedNameOrPropertyAccess(node) { return (node.parent.kind === 135 && node.parent.right === node) || - (node.parent.kind === 166 && node.parent.name === node); + (node.parent.kind === 168 && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 165) { + if (kind === 167) { return expression.properties.length === 0; } - if (kind === 164) { + if (kind === 166) { return expression.elements.length === 0; } return false; @@ -5001,13 +5160,9 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; function hasJavaScriptFileExtension(fileName) { - return ts.fileExtensionIs(fileName, ".js") || ts.fileExtensionIs(fileName, ".jsx"); + return ts.forEach(ts.supportedJavascriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); }); } ts.hasJavaScriptFileExtension = hasJavaScriptFileExtension; - function allowsJsxExpressions(fileName) { - return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx"); - } - ts.allowsJsxExpressions = allowsJsxExpressions; function getExpandedCharCodes(input) { var output = []; var length = input.length; @@ -5037,6 +5192,39 @@ var ts; } return output; } + ts.stringify = typeof JSON !== "undefined" && JSON.stringify + ? JSON.stringify + : stringifyFallback; + function stringifyFallback(value) { + return value === undefined ? undefined : stringifyValue(value); + } + function stringifyValue(value) { + return typeof value === "string" ? "\"" + escapeString(value) + "\"" + : typeof value === "number" ? isFinite(value) ? String(value) : "null" + : typeof value === "boolean" ? value ? "true" : "false" + : typeof value === "object" && value ? ts.isArray(value) ? cycleCheck(stringifyArray, value) : cycleCheck(stringifyObject, value) + : "null"; + } + function cycleCheck(cb, value) { + ts.Debug.assert(!value.hasOwnProperty("__cycle"), "Converting circular structure to JSON"); + value.__cycle = true; + var result = cb(value); + delete value.__cycle; + return result; + } + function stringifyArray(value) { + return "[" + ts.reduceLeft(value, stringifyElement, "") + "]"; + } + function stringifyElement(memo, value) { + return (memo ? memo + "," : memo) + stringifyValue(value); + } + function stringifyObject(value) { + return "{" + ts.reduceProperties(value, stringifyProperty, "") + "}"; + } + function stringifyProperty(memo, value, key) { + return value === undefined || typeof value === "function" || key === "__cycle" ? memo + : (memo ? memo + "," : memo) + ("\"" + escapeString(key) + "\":" + stringifyValue(value)); + } var base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function convertToBase64(input) { var result = ""; @@ -5207,13 +5395,17 @@ var ts; function getTypeParameterOwner(d) { if (d && d.kind === 137) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 215) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 217) { return current; } } } } ts.getTypeParameterOwner = getTypeParameterOwner; + function isParameterPropertyDeclaration(node) { + return node.flags & 56 && node.parent.kind === 144 && ts.isClassLike(node.parent.parent); + } + ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; })(ts || (ts = {})); var ts; (function (ts) { @@ -5221,7 +5413,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 248) { + if (kind === 250) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -5264,7 +5456,7 @@ var ts; return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 246: + case 248: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || @@ -5274,9 +5466,9 @@ var ts; case 138: case 141: case 140: - case 245: - case 211: - case 163: + case 247: + case 213: + case 165: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -5300,9 +5492,9 @@ var ts; case 144: case 145: case 146: - case 173: - case 213: - case 174: + case 175: + case 215: + case 176: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -5332,271 +5524,271 @@ var ts; return visitNodes(cbNodes, node.types); case 160: return visitNode(cbNode, node.type); - case 161: - case 162: - return visitNodes(cbNodes, node.elements); + case 163: case 164: return visitNodes(cbNodes, node.elements); - case 165: - return visitNodes(cbNodes, node.properties); case 166: + return visitNodes(cbNodes, node.elements); + case 167: + return visitNodes(cbNodes, node.properties); + case 168: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 167: + case 169: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 168: - case 169: + case 170: + case 171: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 170: + case 172: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 171: + case 173: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 172: - return visitNode(cbNode, node.expression); - case 175: - return visitNode(cbNode, node.expression); - case 176: + case 174: return visitNode(cbNode, node.expression); case 177: return visitNode(cbNode, node.expression); - case 179: - return visitNode(cbNode, node.operand); - case 184: - return visitNode(cbNode, node.asteriskToken) || - visitNode(cbNode, node.expression); case 178: return visitNode(cbNode, node.expression); - case 180: - return visitNode(cbNode, node.operand); + case 179: + return visitNode(cbNode, node.expression); case 181: + return visitNode(cbNode, node.operand); + case 186: + return visitNode(cbNode, node.asteriskToken) || + visitNode(cbNode, node.expression); + case 180: + return visitNode(cbNode, node.expression); + case 182: + return visitNode(cbNode, node.operand); + case 183: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 189: + case 191: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 182: + case 184: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 185: + case 187: return visitNode(cbNode, node.expression); - case 192: - case 219: + case 194: + case 221: return visitNodes(cbNodes, node.statements); - case 248: + case 250: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 193: + case 195: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 212: + case 214: return visitNodes(cbNodes, node.declarations); - case 195: + case 197: return visitNode(cbNode, node.expression); - case 196: + case 198: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 197: + case 199: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 198: + case 200: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 199: + case 201: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 200: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 201: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); case 202: - case 203: - return visitNode(cbNode, node.label); - case 204: - return visitNode(cbNode, node.expression); - case 205: - return visitNode(cbNode, node.expression) || + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 203: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 204: + case 205: + return visitNode(cbNode, node.label); case 206: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.caseBlock); - case 220: - return visitNodes(cbNodes, node.clauses); - case 241: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 242: - return visitNodes(cbNodes, node.statements); + return visitNode(cbNode, node.expression); case 207: - return visitNode(cbNode, node.label) || + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 208: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 222: + return visitNodes(cbNodes, node.clauses); + case 243: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 244: + return visitNodes(cbNodes, node.statements); case 209: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 210: + return visitNode(cbNode, node.expression); + case 211: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 244: + case 246: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); case 139: return visitNode(cbNode, node.expression); - case 214: - case 186: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); - case 215: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); case 216: + case 188: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || - visitNode(cbNode, node.type); + visitNodes(cbNodes, node.heritageClauses) || + visitNodes(cbNodes, node.members); case 217: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 247: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.initializer); case 218: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNode(cbNode, node.type); + case 219: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.members); + case 249: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.initializer); + case 220: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 221: + case 223: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 222: + case 224: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 223: + case 225: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 224: + case 226: return visitNode(cbNode, node.name); - case 225: - case 229: + case 227: + case 231: return visitNodes(cbNodes, node.elements); - case 228: + case 230: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 226: - case 230: + case 228: + case 232: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 227: + case 229: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 183: + case 185: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 190: + case 192: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); case 136: return visitNode(cbNode, node.expression); - case 243: + case 245: return visitNodes(cbNodes, node.types); - case 188: + case 190: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 232: + case 234: return visitNode(cbNode, node.expression); - case 231: - return visitNodes(cbNodes, node.decorators); case 233: + return visitNodes(cbNodes, node.decorators); + case 235: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 234: - case 235: + case 236: + case 237: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 238: + case 240: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); + case 241: + return visitNode(cbNode, node.expression); + case 242: + return visitNode(cbNode, node.expression); case 239: - return visitNode(cbNode, node.expression); - case 240: - return visitNode(cbNode, node.expression); - case 237: return visitNode(cbNode, node.tagName); - case 249: - return visitNode(cbNode, node.type); - case 253: - return visitNodes(cbNodes, node.types); - case 254: - return visitNodes(cbNodes, node.types); - case 252: - return visitNode(cbNode, node.elementType); - case 256: + case 251: return visitNode(cbNode, node.type); case 255: + return visitNodes(cbNodes, node.types); + case 256: + return visitNodes(cbNodes, node.types); + case 254: + return visitNode(cbNode, node.elementType); + case 258: return visitNode(cbNode, node.type); case 257: - return visitNodes(cbNodes, node.members); + return visitNode(cbNode, node.type); case 259: + return visitNodes(cbNodes, node.members); + case 261: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 260: - return visitNode(cbNode, node.type); - case 261: - return visitNodes(cbNodes, node.parameters) || - visitNode(cbNode, node.type); case 262: return visitNode(cbNode, node.type); case 263: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.parameters) || + visitNode(cbNode, node.type); case 264: return visitNode(cbNode, node.type); - case 258: + case 265: + return visitNode(cbNode, node.type); + case 266: + return visitNode(cbNode, node.type); + case 260: return visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 265: - return visitNodes(cbNodes, node.tags); case 267: + return visitNodes(cbNodes, node.tags); + case 269: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 268: - return visitNode(cbNode, node.typeExpression); - case 269: - return visitNode(cbNode, node.typeExpression); case 270: + return visitNode(cbNode, node.typeExpression); + case 271: + return visitNode(cbNode, node.typeExpression); + case 272: return visitNodes(cbNodes, node.typeParameters); } } @@ -5646,6 +5838,9 @@ var ts; return result; } Parser.parseSourceFile = parseSourceFile; + function getLanguageVariant(fileName) { + return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx") ? 1 : 0; + } function initializeState(fileName, _sourceText, languageVersion, isJavaScriptFile, _syntaxCursor) { NodeConstructor = ts.objectAllocator.getNodeConstructor(); SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor(); @@ -5661,7 +5856,7 @@ var ts; scanner.setText(sourceText); scanner.setOnError(scanError); scanner.setScriptTarget(languageVersion); - scanner.setLanguageVariant(ts.allowsJsxExpressions(fileName) ? 1 : 0); + scanner.setLanguageVariant(getLanguageVariant(fileName)); } function clearState() { scanner.setText(""); @@ -5700,8 +5895,8 @@ var ts; return; function visit(node) { switch (node.kind) { - case 193: - case 213: + case 195: + case 215: case 138: addJSDocComment(node); } @@ -5736,14 +5931,14 @@ var ts; } Parser.fixupParentReferences = fixupParentReferences; function createSourceFile(fileName, languageVersion) { - var sourceFile = new SourceFileConstructor(248, 0, sourceText.length); + var sourceFile = new SourceFileConstructor(250, 0, sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 4096 : 0; - sourceFile.languageVariant = ts.allowsJsxExpressions(sourceFile.fileName) ? 1 : 0; + sourceFile.languageVariant = getLanguageVariant(sourceFile.fileName); return sourceFile; } function setContextFlag(val, flag) { @@ -5795,9 +5990,6 @@ var ts; function doInYieldContext(func) { return doInsideOfContext(2, func); } - function doOutsideOfYieldContext(func) { - return doOutsideOfContext(2, func); - } function doInDecoratorContext(func) { return doInsideOfContext(4, func); } @@ -5810,9 +6002,6 @@ var ts; function doInYieldAndAwaitContext(func) { return doInsideOfContext(2 | 8, func); } - function doOutsideOfYieldAndAwaitContext(func) { - return doOutsideOfContext(2 | 8, func); - } function inContext(flags) { return (contextFlags & flags) !== 0; } @@ -5853,9 +6042,6 @@ var ts; function nextToken() { return token = scanner.scan(); } - function getTokenPos(pos) { - return ts.skipTrivia(sourceText, pos); - } function reScanGreaterToken() { return token = scanner.reScanGreaterToken(); } @@ -6045,6 +6231,13 @@ var ts; function parseContextualModifier(t) { return token === t && tryParse(nextTokenCanFollowModifier); } + function nextTokenIsOnSameLineAndCanFollowModifier() { + nextToken(); + if (scanner.hasPrecedingLineBreak()) { + return false; + } + return canFollowModifier(); + } function nextTokenCanFollowModifier() { if (token === 74) { return nextToken() === 81; @@ -6063,14 +6256,10 @@ var ts; nextToken(); return canFollowModifier(); } - nextToken(); - if (scanner.hasPrecedingLineBreak()) { - return false; - } - return canFollowModifier(); + return nextTokenIsOnSameLineAndCanFollowModifier(); } function parseAnyContextualModifier() { - return ts.isModifier(token) && tryParse(nextTokenCanFollowModifier); + return ts.isModifierKind(token) && tryParse(nextTokenCanFollowModifier); } function canFollowModifier() { return token === 19 @@ -6337,7 +6526,7 @@ var ts; case 145: case 146: case 141: - case 191: + case 193: return true; case 143: var methodDeclaration = node; @@ -6351,8 +6540,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 241: - case 242: + case 243: + case 244: return true; } } @@ -6361,42 +6550,42 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 213: - case 193: - case 192: - case 196: + case 215: case 195: - case 208: - case 204: - case 206: - case 203: - case 202: - case 200: - case 201: - case 199: - case 198: - case 205: case 194: - case 209: - case 207: + case 198: case 197: case 210: - case 222: - case 221: - case 228: - case 227: - case 218: - case 214: - case 215: - case 217: + case 206: + case 208: + case 205: + case 204: + case 202: + case 203: + case 201: + case 200: + case 207: + case 196: + case 211: + case 209: + case 199: + case 212: + case 224: + case 223: + case 230: + case 229: + case 220: case 216: + case 217: + case 219: + case 218: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 247; + return node.kind === 249; } function isReusableTypeMember(node) { if (node) { @@ -6412,7 +6601,7 @@ var ts; return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 211) { + if (node.kind !== 213) { return false; } var variableDeclarator = node; @@ -6536,8 +6725,8 @@ var ts; return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(183); - template.head = parseLiteralNode(); + var template = createNode(185); + template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12, "Template head has wrong token kind"); var templateSpans = []; templateSpans.pos = getNodePos(); @@ -6549,12 +6738,12 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(190); + var span = createNode(192); span.expression = allowInAnd(parseExpression); var literal; if (token === 16) { reScanTemplateToken(); - literal = parseLiteralNode(); + literal = parseTemplateLiteralFragment(); } else { literal = parseExpectedToken(14, false, ts.Diagnostics._0_expected, ts.tokenToString(16)); @@ -6562,8 +6751,17 @@ var ts; span.literal = literal; return finishNode(span); } + function parseStringLiteralTypeNode() { + return parseLiteralLikeNode(162, true); + } function parseLiteralNode(internName) { - var node = createNode(token); + return parseLiteralLikeNode(token, internName); + } + function parseTemplateLiteralFragment() { + return parseLiteralLikeNode(token, false); + } + function parseLiteralLikeNode(kind, internName) { + var node = createNode(kind); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; if (scanner.hasExtendedUnicodeEscape()) { @@ -6585,11 +6783,7 @@ var ts; function parseTypeReferenceOrTypePredicate() { var typeName = parseEntityName(false, ts.Diagnostics.Type_expected); if (typeName.kind === 69 && token === 124 && !scanner.hasPrecedingLineBreak()) { - nextToken(); - var node_1 = createNode(150, typeName.pos); - node_1.parameterName = typeName; - node_1.type = parseType(); - return finishNode(node_1); + return parseTypePredicate(typeName); } var node = createNode(151, typeName.pos); node.typeName = typeName; @@ -6598,6 +6792,18 @@ var ts; } return finishNode(node); } + function parseTypePredicate(lhs) { + nextToken(); + var node = createNode(150, lhs.pos); + node.parameterName = lhs; + node.type = parseType(); + return finishNode(node); + } + function parseThisTypeNode() { + var node = createNode(161); + nextToken(); + return finishNode(node); + } function parseTypeQuery() { var node = createNode(154); parseExpected(101); @@ -6629,7 +6835,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 || isIdentifierOrPattern() || ts.isModifier(token) || token === 55; + return token === 22 || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55; } function setModifiers(node, modifiers) { if (modifiers) { @@ -6643,7 +6849,7 @@ var ts; setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(22); node.name = parseIdentifierOrPattern(); - if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifier(token)) { + if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifierKind(token)) { nextToken(); } node.questionToken = parseOptionalToken(53); @@ -6711,7 +6917,7 @@ var ts; if (token === 22 || token === 20) { return true; } - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { nextToken(); if (isIdentifier()) { return true; @@ -6758,6 +6964,9 @@ var ts; property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); + if (token === 56) { + property.initializer = parseNonParameterInitializer(); + } parseTypeMemberSemicolon(); return finishNode(property); } @@ -6769,7 +6978,7 @@ var ts; case 19: return true; default: - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = lookAhead(isStartOfIndexSignatureDeclaration); if (result) { return result; @@ -6779,7 +6988,7 @@ var ts; } } function isStartOfIndexSignatureDeclaration() { - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { nextToken(); } return isIndexSignature(); @@ -6809,7 +7018,7 @@ var ts; case 8: return parsePropertyOrMethodSignature(); default: - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = tryParse(parseIndexSignatureWithModifiers); if (result) { return result; @@ -6882,10 +7091,18 @@ var ts; var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReferenceOrTypePredicate(); case 9: - return parseLiteralNode(true); + return parseStringLiteralTypeNode(); case 103: - case 97: return parseTokenNode(); + case 97: { + var thisKeyword = parseThisTypeNode(); + if (token === 124 && !scanner.hasPrecedingLineBreak()) { + return parseTypePredicate(thisKeyword); + } + else { + return thisKeyword; + } + } case 101: return parseTypeQuery(); case 15: @@ -6966,11 +7183,11 @@ var ts; if (token === 18 || token === 22) { return true; } - if (isIdentifier() || ts.isModifier(token)) { + if (isIdentifier() || ts.isModifierKind(token)) { nextToken(); if (token === 54 || token === 24 || token === 53 || token === 56 || - isIdentifier() || ts.isModifier(token)) { + isIdentifier() || ts.isModifierKind(token)) { return true; } if (token === 18) { @@ -7054,9 +7271,6 @@ var ts; token !== 55 && isStartOfExpression(); } - function allowInAndParseExpression() { - return allowInAnd(parseExpression); - } function parseExpression() { var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { @@ -7112,7 +7326,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(184); + var node = createNode(186); nextToken(); if (!scanner.hasPrecedingLineBreak() && (token === 37 || isStartOfExpression())) { @@ -7126,7 +7340,7 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(174, identifier.pos); + var node = createNode(176, identifier.pos); var parameter = createNode(138, identifier.pos); parameter.name = identifier; finishNode(parameter); @@ -7238,7 +7452,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(174); + var node = createNode(176); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256); fillSignature(54, false, isAsync, !allowAmbiguity, node); @@ -7270,7 +7484,7 @@ var ts; if (!questionToken) { return leftOperand; } - var node = createNode(182, leftOperand.pos); + var node = createNode(184, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -7361,39 +7575,39 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(181, left.pos); + var node = createNode(183, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(189, left.pos); + var node = createNode(191, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(179); + var node = createNode(181); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(175); + var node = createNode(177); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(176); + var node = createNode(178); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(177); + var node = createNode(179); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -7408,7 +7622,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(178); + var node = createNode(180); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -7427,7 +7641,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 171) { + if (simpleUnaryExpression.kind === 173) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -7475,7 +7689,7 @@ var ts; } function parseIncrementExpression() { if (token === 41 || token === 42) { - var node = createNode(179); + var node = createNode(181); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -7487,7 +7701,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 || token === 42) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(180, expression.pos); + var node = createNode(182, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -7510,31 +7724,44 @@ var ts; if (token === 17 || token === 21 || token === 19) { return expression; } - var node = createNode(166, expression.pos); + var node = createNode(168, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); return finishNode(node); } + function tagNamesAreEquivalent(lhs, rhs) { + if (lhs.kind !== rhs.kind) { + return false; + } + if (lhs.kind === 69) { + return lhs.text === rhs.text; + } + return lhs.right.text === rhs.right.text && + tagNamesAreEquivalent(lhs.left, rhs.left); + } function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 235) { - var node = createNode(233, opening.pos); + if (opening.kind === 237) { + var node = createNode(235, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); + if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { + parseErrorAtPosition(node.closingElement.pos, node.closingElement.end - node.closingElement.pos, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, node.openingElement.tagName)); + } result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 234); + ts.Debug.assert(opening.kind === 236); result = opening; } if (inExpressionContext && token === 25) { var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(181, result.pos); + var badNode = createNode(183, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -7546,13 +7773,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(236, scanner.getStartPos()); + var node = createNode(238, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 236: + case 238: return parseJsxText(); case 15: return parseJsxExpression(false); @@ -7572,7 +7799,7 @@ var ts; break; } else if (token === 1) { - parseErrorAtCurrentToken(ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); + parseErrorAtPosition(openingTagName.pos, openingTagName.end - openingTagName.pos, ts.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); break; } result.push(parseJsxChild()); @@ -7588,7 +7815,7 @@ var ts; var attributes = parseList(13, parseJsxAttribute); var node; if (token === 27) { - node = createNode(235, fullStart); + node = createNode(237, fullStart); scanJsxText(); } else { @@ -7600,7 +7827,7 @@ var ts; parseExpected(27, undefined, false); scanJsxText(); } - node = createNode(234, fullStart); + node = createNode(236, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -7619,10 +7846,10 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(240); + var node = createNode(242); parseExpected(15); if (token !== 16) { - node.expression = parseExpression(); + node.expression = parseAssignmentExpressionOrHigher(); } if (inExpressionContext) { parseExpected(16); @@ -7638,7 +7865,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(238); + var node = createNode(240); node.name = parseIdentifierName(); if (parseOptional(56)) { switch (token) { @@ -7653,7 +7880,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(239); + var node = createNode(241); parseExpected(15); parseExpected(22); node.expression = parseExpression(); @@ -7661,7 +7888,7 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(237); + var node = createNode(239); parseExpected(26); node.tagName = parseJsxElementName(); if (inExpressionContext) { @@ -7674,7 +7901,7 @@ var ts; return finishNode(node); } function parseTypeAssertion() { - var node = createNode(171); + var node = createNode(173); parseExpected(25); node.type = parseType(); parseExpected(27); @@ -7685,7 +7912,7 @@ var ts; while (true) { var dotToken = parseOptionalToken(21); if (dotToken) { - var propertyAccess = createNode(166, expression.pos); + var propertyAccess = createNode(168, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); @@ -7693,7 +7920,7 @@ var ts; continue; } if (!inDecoratorContext() && parseOptional(19)) { - var indexedAccess = createNode(167, expression.pos); + var indexedAccess = createNode(169, expression.pos); indexedAccess.expression = expression; if (token !== 20) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -7707,7 +7934,7 @@ var ts; continue; } if (token === 11 || token === 12) { - var tagExpression = createNode(170, expression.pos); + var tagExpression = createNode(172, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 ? parseLiteralNode() @@ -7726,7 +7953,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(168, expression.pos); + var callExpr = createNode(170, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -7734,7 +7961,7 @@ var ts; continue; } else if (token === 17) { - var callExpr = createNode(168, expression.pos); + var callExpr = createNode(170, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -7829,28 +8056,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(172); + var node = createNode(174); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); return finishNode(node); } function parseSpreadElement() { - var node = createNode(185); + var node = createNode(187); parseExpected(22); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 ? parseSpreadElement() : - token === 24 ? createNode(187) : + token === 24 ? createNode(189) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(164); + var node = createNode(166); parseExpected(19); if (scanner.hasPrecedingLineBreak()) node.flags |= 1024; @@ -7877,7 +8104,6 @@ var ts; } var asteriskToken = parseOptionalToken(37); var tokenIsIdentifier = isIdentifier(); - var nameToken = token; var propertyName = parsePropertyName(); var questionToken = parseOptionalToken(53); if (asteriskToken || token === 17 || token === 25) { @@ -7885,7 +8111,7 @@ var ts; } var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 || token === 16 || token === 56); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(246, fullStart); + var shorthandDeclaration = createNode(248, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56); @@ -7896,7 +8122,8 @@ var ts; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(245, fullStart); + var propertyAssignment = createNode(247, fullStart); + propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(54); @@ -7905,7 +8132,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(165); + var node = createNode(167); parseExpected(15); if (scanner.hasPrecedingLineBreak()) { node.flags |= 1024; @@ -7919,7 +8146,7 @@ var ts; if (saveDecoratorContext) { setDecoratorContext(false); } - var node = createNode(173); + var node = createNode(175); setModifiers(node, parseModifiers()); parseExpected(87); node.asteriskToken = parseOptionalToken(37); @@ -7941,7 +8168,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(169); + var node = createNode(171); parseExpected(92); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -7951,7 +8178,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(192); + var node = createNode(194); if (parseExpected(15, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -7979,12 +8206,12 @@ var ts; return block; } function parseEmptyStatement() { - var node = createNode(194); + var node = createNode(196); parseExpected(23); return finishNode(node); } function parseIfStatement() { - var node = createNode(196); + var node = createNode(198); parseExpected(88); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -7994,7 +8221,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(197); + var node = createNode(199); parseExpected(79); node.statement = parseStatement(); parseExpected(104); @@ -8005,7 +8232,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(198); + var node = createNode(200); parseExpected(104); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8028,21 +8255,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90)) { - var forInStatement = createNode(200, pos); + var forInStatement = createNode(202, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18); forOrForInOrForOfStatement = forInStatement; } else if (parseOptional(134)) { - var forOfStatement = createNode(201, pos); + var forOfStatement = createNode(203, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(199, pos); + var forStatement = createNode(201, pos); forStatement.initializer = initializer; parseExpected(23); if (token !== 23 && token !== 18) { @@ -8060,7 +8287,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 203 ? 70 : 75); + parseExpected(kind === 205 ? 70 : 75); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -8068,7 +8295,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(204); + var node = createNode(206); parseExpected(94); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -8077,7 +8304,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(205); + var node = createNode(207); parseExpected(105); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8086,7 +8313,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(241); + var node = createNode(243); parseExpected(71); node.expression = allowInAnd(parseExpression); parseExpected(54); @@ -8094,7 +8321,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(242); + var node = createNode(244); parseExpected(77); parseExpected(54); node.statements = parseList(3, parseStatement); @@ -8104,12 +8331,12 @@ var ts; return token === 71 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(206); + var node = createNode(208); parseExpected(96); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); - var caseBlock = createNode(220, scanner.getStartPos()); + var caseBlock = createNode(222, scanner.getStartPos()); parseExpected(15); caseBlock.clauses = parseList(2, parseCaseOrDefaultClause); parseExpected(16); @@ -8117,14 +8344,14 @@ var ts; return finishNode(node); } function parseThrowStatement() { - var node = createNode(208); + var node = createNode(210); parseExpected(98); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(209); + var node = createNode(211); parseExpected(100); node.tryBlock = parseBlock(false); node.catchClause = token === 72 ? parseCatchClause() : undefined; @@ -8135,7 +8362,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(244); + var result = createNode(246); parseExpected(72); if (parseExpected(17)) { result.variableDeclaration = parseVariableDeclaration(); @@ -8145,7 +8372,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(210); + var node = createNode(212); parseExpected(76); parseSemicolon(); return finishNode(node); @@ -8154,13 +8381,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 && parseOptional(54)) { - var labeledStatement = createNode(207, fullStart); + var labeledStatement = createNode(209, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(195, fullStart); + var expressionStatement = createNode(197, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -8305,9 +8532,9 @@ var ts; case 86: return parseForOrForInOrForOfStatement(); case 75: - return parseBreakOrContinueStatement(202); + return parseBreakOrContinueStatement(204); case 70: - return parseBreakOrContinueStatement(203); + return parseBreakOrContinueStatement(205); case 94: return parseReturnStatement(); case 105: @@ -8377,7 +8604,7 @@ var ts; parseExportDeclaration(fullStart, decorators, modifiers); default: if (decorators || modifiers) { - var node = createMissingNode(231, true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(233, true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -8398,16 +8625,16 @@ var ts; } function parseArrayBindingElement() { if (token === 24) { - return createNode(187); + return createNode(189); } - var node = createNode(163); + var node = createNode(165); node.dotDotDotToken = parseOptionalToken(22); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(163); + var node = createNode(165); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54) { @@ -8422,14 +8649,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(161); + var node = createNode(163); parseExpected(15); node.elements = parseDelimitedList(9, parseObjectBindingElement); parseExpected(16); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(162); + var node = createNode(164); parseExpected(19); node.elements = parseDelimitedList(10, parseArrayBindingElement); parseExpected(20); @@ -8448,7 +8675,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(211); + var node = createNode(213); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -8457,7 +8684,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(212); + var node = createNode(214); switch (token) { case 102: break; @@ -8486,7 +8713,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(193, fullStart); + var node = createNode(195, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); @@ -8494,7 +8721,7 @@ var ts; return finishNode(node); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(213, fullStart); + var node = createNode(215, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87); @@ -8580,7 +8807,7 @@ var ts; if (token === 55) { return true; } - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { idToken = token; if (isClassMemberModifier(idToken)) { return true; @@ -8623,7 +8850,7 @@ var ts; } if (!decorators) { decorators = []; - decorators.pos = scanner.getStartPos(); + decorators.pos = decoratorStart; } var decorator = createNode(139, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); @@ -8634,14 +8861,21 @@ var ts; } return decorators; } - function parseModifiers() { + function parseModifiers(permitInvalidConstAsModifier) { var flags = 0; var modifiers; while (true) { var modifierStart = scanner.getStartPos(); var modifierKind = token; - if (!parseAnyContextualModifier()) { - break; + if (token === 74 && permitInvalidConstAsModifier) { + if (!tryParse(nextTokenIsOnSameLineAndCanFollowModifier)) { + break; + } + } + else { + if (!parseAnyContextualModifier()) { + break; + } } if (!modifiers) { modifiers = []; @@ -8674,13 +8908,13 @@ var ts; } function parseClassElement() { if (token === 23) { - var result = createNode(191); + var result = createNode(193); nextToken(); return finishNode(result); } var fullStart = getNodePos(); var decorators = parseDecorators(); - var modifiers = parseModifiers(); + var modifiers = parseModifiers(true); var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; @@ -8705,10 +8939,10 @@ var ts; ts.Debug.fail("Should not have attempted to parse class member declaration."); } function parseClassExpression() { - return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 186); + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 188); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 214); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 216); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -8741,12 +8975,9 @@ var ts; } return undefined; } - function parseHeritageClausesWorker() { - return parseList(20, parseHeritageClause); - } function parseHeritageClause() { if (token === 83 || token === 106) { - var node = createNode(243); + var node = createNode(245); node.token = token; nextToken(); node.types = parseDelimitedList(7, parseExpressionWithTypeArguments); @@ -8755,7 +8986,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(188); + var node = createNode(190); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25) { node.typeArguments = parseBracketedList(18, parseType, 25, 27); @@ -8769,7 +9000,7 @@ var ts; return parseList(5, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(215, fullStart); + var node = createNode(217, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107); @@ -8780,7 +9011,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(216, fullStart); + var node = createNode(218, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(132); @@ -8792,13 +9023,13 @@ var ts; return finishNode(node); } function parseEnumMember() { - var node = createNode(247, scanner.getStartPos()); + var node = createNode(249, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217, fullStart); + var node = createNode(219, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81); @@ -8813,7 +9044,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(219, scanner.getStartPos()); + var node = createNode(221, scanner.getStartPos()); if (parseExpected(15)) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -8824,7 +9055,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(218, fullStart); + var node = createNode(220, fullStart); var namespaceFlag = flags & 65536; node.decorators = decorators; setModifiers(node, modifiers); @@ -8836,7 +9067,7 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(218, fullStart); + var node = createNode(220, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(true); @@ -8866,11 +9097,6 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39; } - function nextTokenIsCommaOrFromKeyword() { - nextToken(); - return token === 24 || - token === 133; - } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89); var afterImportPos = scanner.getStartPos(); @@ -8878,7 +9104,7 @@ var ts; if (isIdentifier()) { identifier = parseIdentifier(); if (token !== 24 && token !== 133) { - var importEqualsDeclaration = createNode(221, fullStart); + var importEqualsDeclaration = createNode(223, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -8888,7 +9114,7 @@ var ts; return finishNode(importEqualsDeclaration); } } - var importDeclaration = createNode(222, fullStart); + var importDeclaration = createNode(224, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); if (identifier || @@ -8902,13 +9128,13 @@ var ts; return finishNode(importDeclaration); } function parseImportClause(identifier, fullStart) { - var importClause = createNode(223, fullStart); + var importClause = createNode(225, fullStart); if (identifier) { importClause.name = identifier; } if (!importClause.name || parseOptional(24)) { - importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(225); + importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(227); } return finishNode(importClause); } @@ -8918,7 +9144,7 @@ var ts; : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(232); + var node = createNode(234); parseExpected(127); parseExpected(17); node.expression = parseModuleSpecifier(); @@ -8926,14 +9152,17 @@ var ts; return finishNode(node); } function parseModuleSpecifier() { - var result = parseExpression(); - if (result.kind === 9) { + if (token === 9) { + var result = parseLiteralNode(); internIdentifier(result.text); + return result; + } + else { + return parseExpression(); } - return result; } function parseNamespaceImport() { - var namespaceImport = createNode(224); + var namespaceImport = createNode(226); parseExpected(37); parseExpected(116); namespaceImport.name = parseIdentifier(); @@ -8941,14 +9170,14 @@ var ts; } function parseNamedImportsOrExports(kind) { var node = createNode(kind); - node.elements = parseBracketedList(21, kind === 225 ? parseImportSpecifier : parseExportSpecifier, 15, 16); + node.elements = parseBracketedList(21, kind === 227 ? parseImportSpecifier : parseExportSpecifier, 15, 16); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(230); + return parseImportOrExportSpecifier(232); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(226); + return parseImportOrExportSpecifier(228); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -8967,13 +9196,13 @@ var ts; else { node.name = identifierName; } - if (kind === 226 && checkIdentifierIsKeyword) { + if (kind === 228 && checkIdentifierIsKeyword) { parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(228, fullStart); + var node = createNode(230, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37)) { @@ -8981,7 +9210,7 @@ var ts; node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(229); + node.exportClause = parseNamedImportsOrExports(231); if (token === 133 || (token === 9 && !scanner.hasPrecedingLineBreak())) { parseExpected(133); node.moduleSpecifier = parseModuleSpecifier(); @@ -8991,7 +9220,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(227, fullStart); + var node = createNode(229, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56)) { @@ -9011,11 +9240,13 @@ var ts; var amdModuleName; while (true) { var kind = triviaScanner.scan(); - if (kind === 5 || kind === 4 || kind === 3) { - continue; - } if (kind !== 2) { - break; + if (ts.isTrivia(kind)) { + continue; + } + else { + break; + } } var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos(), kind: triviaScanner.getToken() }; var comment = sourceText.substring(range.pos, range.end); @@ -9061,10 +9292,10 @@ var ts; function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 2 - || node.kind === 221 && node.moduleReference.kind === 232 - || node.kind === 222 - || node.kind === 227 - || node.kind === 228 + || node.kind === 223 && node.moduleReference.kind === 234 + || node.kind === 224 + || node.kind === 229 + || node.kind === 230 ? node : undefined; }); @@ -9099,7 +9330,7 @@ var ts; function parseJSDocTypeExpression(start, length) { scanner.setText(sourceText, start, length); token = nextToken(); - var result = createNode(249); + var result = createNode(251); parseExpected(15); result.type = parseJSDocTopLevelType(); parseExpected(16); @@ -9110,12 +9341,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47) { - var unionType = createNode(253, type.pos); + var unionType = createNode(255, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56) { - var optionalType = createNode(260, type.pos); + var optionalType = createNode(262, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -9126,20 +9357,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19) { - var arrayType = createNode(252, type.pos); + var arrayType = createNode(254, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20); type = finishNode(arrayType); } else if (token === 53) { - var nullableType = createNode(255, type.pos); + var nullableType = createNode(257, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49) { - var nonNullableType = createNode(256, type.pos); + var nonNullableType = createNode(258, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -9183,27 +9414,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(264); + var result = createNode(266); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(263); + var result = createNode(265); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(262); + var result = createNode(264); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(261); + var result = createNode(263); nextToken(); parseExpected(17); result.parameters = parseDelimitedList(22, parseJSDocParameter); @@ -9220,14 +9451,8 @@ var ts; parameter.type = parseJSDocType(); return finishNode(parameter); } - function parseJSDocOptionalType(type) { - var result = createNode(260, type.pos); - nextToken(); - result.type = type; - return finishNode(result); - } function parseJSDocTypeReference() { - var result = createNode(259); + var result = createNode(261); result.name = parseSimplePropertyName(); while (parseOptional(21)) { if (token === 25) { @@ -9262,7 +9487,7 @@ var ts; return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(257); + var result = createNode(259); nextToken(); result.members = parseDelimitedList(24, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -9270,7 +9495,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(258); + var result = createNode(260); result.name = parseSimplePropertyName(); if (token === 54) { nextToken(); @@ -9279,13 +9504,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(256); + var result = createNode(258); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(254); + var result = createNode(256); nextToken(); result.types = parseDelimitedList(25, parseJSDocType); checkForTrailingComma(result.types); @@ -9299,7 +9524,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(253); + var result = createNode(255); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18); @@ -9317,7 +9542,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(250); + var result = createNode(252); nextToken(); return finishNode(result); } @@ -9330,11 +9555,11 @@ var ts; token === 27 || token === 56 || token === 47) { - var result = createNode(251, pos); + var result = createNode(253, pos); return finishNode(result); } else { - var result = createNode(255, pos); + var result = createNode(257, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -9405,7 +9630,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(265, start); + var result = createNode(267, start); result.tags = tags; return finishNode(result, end); } @@ -9442,7 +9667,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(266, atToken.pos); + var result = createNode(268, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result, pos); @@ -9493,7 +9718,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(267, atToken.pos); + var result = createNode(269, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -9503,27 +9728,27 @@ var ts; return finishNode(result, pos); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 268; })) { + if (ts.forEach(tags, function (t) { return t.kind === 270; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(268, atToken.pos); + var result = createNode(270, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 269; })) { + if (ts.forEach(tags, function (t) { return t.kind === 271; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(269, atToken.pos); + var result = createNode(271, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 270; })) { + if (ts.forEach(tags, function (t) { return t.kind === 272; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } var typeParameters = []; @@ -9547,7 +9772,7 @@ var ts; pos++; } typeParameters.end = pos; - var result = createNode(270, atToken.pos); + var result = createNode(272, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -9869,16 +10094,16 @@ var ts; : 4; } function getModuleInstanceState(node) { - if (node.kind === 215 || node.kind === 216) { + if (node.kind === 217 || node.kind === 218) { return 0; } else if (ts.isConstEnumDeclaration(node)) { return 2; } - else if ((node.kind === 222 || node.kind === 221) && !(node.flags & 2)) { + else if ((node.kind === 224 || node.kind === 223) && !(node.flags & 2)) { return 0; } - else if (node.kind === 219) { + else if (node.kind === 221) { var state = 0; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -9894,7 +10119,7 @@ var ts; }); return state; } - else if (node.kind === 218) { + else if (node.kind === 220) { return getModuleInstanceState(node.body); } else { @@ -9937,6 +10162,8 @@ var ts; file.symbolCount = symbolCount; file.classifiableNames = classifiableNames; } + file = undefined; + options = undefined; parent = undefined; container = undefined; blockScopeContainer = undefined; @@ -9965,13 +10192,17 @@ var ts; if (symbolFlags & 6240 && !symbol.members) { symbol.members = {}; } - if (symbolFlags & 107455 && !symbol.valueDeclaration) { - symbol.valueDeclaration = node; + if (symbolFlags & 107455) { + var valueDeclaration = symbol.valueDeclaration; + if (!valueDeclaration || + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 220)) { + symbol.valueDeclaration = node; + } } } function getDeclarationName(node) { if (node.name) { - if (node.kind === 218 && node.name.kind === 9) { + if (node.kind === 220 && node.name.kind === 9) { return "\"" + node.name.text + "\""; } if (node.name.kind === 136) { @@ -9995,14 +10226,24 @@ var ts; return "__new"; case 149: return "__index"; - case 228: + case 230: return "__export"; - case 227: + case 229: return node.isExportEquals ? "export=" : "default"; - case 181: - return "export="; - case 213: - case 214: + case 183: + switch (ts.getSpecialPropertyAssignmentKind(node)) { + case 2: + return "export="; + case 1: + case 4: + return node.left.name.text; + case 3: + return node.left.expression.name.text; + } + ts.Debug.fail("Unknown binary declaration kind"); + break; + case 215: + case 216: return node.flags & 512 ? "default" : undefined; } } @@ -10050,7 +10291,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 2; if (symbolFlags & 8388608) { - if (node.kind === 230 || (node.kind === 221 && hasExportModifier)) { + if (node.kind === 232 || (node.kind === 223 && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -10097,10 +10338,10 @@ var ts; var kind = node.kind; var flags = node.flags; flags &= ~1572864; - if (kind === 215) { + if (kind === 217) { seenThisKeyword = false; } - var saveState = kind === 248 || kind === 219 || ts.isFunctionLikeKind(kind); + var saveState = kind === 250 || kind === 221 || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -10118,7 +10359,7 @@ var ts; flags |= 1048576; } } - if (kind === 215) { + if (kind === 217) { flags = seenThisKeyword ? flags | 262144 : flags & ~262144; } node.flags = flags; @@ -10139,40 +10380,40 @@ var ts; return; } switch (node.kind) { - case 198: + case 200: bindWhileStatement(node); break; - case 197: + case 199: bindDoStatement(node); break; - case 199: + case 201: bindForStatement(node); break; - case 200: - case 201: + case 202: + case 203: bindForInOrForOfStatement(node); break; - case 196: + case 198: bindIfStatement(node); break; - case 204: - case 208: + case 206: + case 210: bindReturnOrThrow(node); break; - case 203: - case 202: + case 205: + case 204: bindBreakOrContinueStatement(node); break; - case 209: + case 211: bindTryStatement(node); break; - case 206: + case 208: bindSwitchStatement(node); break; - case 220: + case 222: bindCaseBlock(node); break; - case 207: + case 209: bindLabeledStatement(node); break; default: @@ -10234,14 +10475,14 @@ var ts; } function bindReturnOrThrow(n) { bind(n.expression); - if (n.kind === 204) { + if (n.kind === 206) { hasExplicitReturn = true; } currentReachabilityState = 4; } function bindBreakOrContinueStatement(n) { bind(n.label); - var isValidJump = jumpToLabel(n.label, n.kind === 203 ? currentReachabilityState : 4); + var isValidJump = jumpToLabel(n.label, n.kind === 205 ? currentReachabilityState : 4); if (isValidJump) { currentReachabilityState = 4; } @@ -10262,7 +10503,7 @@ var ts; var postSwitchLabel = pushImplicitLabel(); bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 242; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 244; }); var postSwitchState = hasDefault && currentReachabilityState !== 2 ? 4 : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); } @@ -10287,37 +10528,37 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 186: - case 214: - case 215: + case 188: + case 216: case 217: + case 219: case 155: - case 165: + case 167: return 1; case 147: case 148: case 149: case 143: case 142: - case 213: + case 215: case 144: case 145: case 146: case 152: case 153: - case 173: - case 174: - case 218: - case 248: - case 216: - return 5; - case 244: - case 199: - case 200: - case 201: + case 175: + case 176: case 220: + case 250: + case 218: + return 5; + case 246: + case 201: + case 202: + case 203: + case 222: return 2; - case 192: + case 194: return ts.isFunctionLike(node.parent) ? 0 : 2; } return 0; @@ -10333,18 +10574,18 @@ var ts; } function declareSymbolAndAddToSymbolTableWorker(node, symbolFlags, symbolExcludes) { switch (container.kind) { - case 218: + case 220: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 248: + case 250: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 186: - case 214: + case 188: + case 216: return declareClassMember(node, symbolFlags, symbolExcludes); - case 217: + case 219: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); case 155: - case 165: - case 215: + case 167: + case 217: return declareSymbol(container.symbol.members, container.symbol, node, symbolFlags, symbolExcludes); case 152: case 153: @@ -10356,10 +10597,10 @@ var ts; case 144: case 145: case 146: - case 213: - case 173: - case 174: - case 216: + case 215: + case 175: + case 176: + case 218: return declareSymbol(container.locals, undefined, node, symbolFlags, symbolExcludes); } } @@ -10374,11 +10615,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 248 ? node : node.body; - if (body.kind === 248 || body.kind === 219) { + var body = node.kind === 250 ? node : node.body; + if (body.kind === 250 || body.kind === 221) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 228 || stat.kind === 227) { + if (stat.kind === 230 || stat.kind === 229) { return true; } } @@ -10437,7 +10678,7 @@ var ts; continue; } var identifier = prop.name; - var currentKind = prop.kind === 245 || prop.kind === 246 || prop.kind === 143 + var currentKind = prop.kind === 247 || prop.kind === 248 || prop.kind === 143 ? 1 : 2; var existingKind = seen[identifier.text]; @@ -10459,10 +10700,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 218: + case 220: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 248: + case 250: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -10584,17 +10825,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 248: - case 219: + case 250: + case 221: updateStrictModeStatementList(node.statements); return; - case 192: + case 194: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 214: - case 186: + case 216: + case 188: inStrictMode = true; return; } @@ -10619,45 +10860,60 @@ var ts; switch (node.kind) { case 69: return checkStrictModeIdentifier(node); - case 181: + case 183: if (ts.isInJavaScriptFile(node)) { - if (ts.isExportsPropertyAssignment(node)) { - bindExportsPropertyAssignment(node); - } - else if (ts.isModuleExportsAssignment(node)) { - bindModuleExportsAssignment(node); + var specialKind = ts.getSpecialPropertyAssignmentKind(node); + switch (specialKind) { + case 1: + bindExportsPropertyAssignment(node); + break; + case 2: + bindModuleExportsAssignment(node); + break; + case 3: + bindPrototypePropertyAssignment(node); + break; + case 4: + bindThisPropertyAssignment(node); + break; + case 0: + break; + default: + ts.Debug.fail("Unknown special property assignment kind"); } } return checkStrictModeBinaryExpression(node); - case 244: + case 246: return checkStrictModeCatchClause(node); - case 175: + case 177: return checkStrictModeDeleteExpression(node); case 8: return checkStrictModeNumericLiteral(node); - case 180: + case 182: return checkStrictModePostfixUnaryExpression(node); - case 179: + case 181: return checkStrictModePrefixUnaryExpression(node); - case 205: + case 207: return checkStrictModeWithStatement(node); - case 97: + case 161: seenThisKeyword = true; return; + case 150: + return checkTypePredicate(node); case 137: return declareSymbolAndAddToSymbolTable(node, 262144, 530912); case 138: return bindParameter(node); - case 211: - case 163: + case 213: + case 165: return bindVariableDeclarationOrBindingElement(node); case 141: case 140: return bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455); - case 245: - case 246: - return bindPropertyOrMethodOrAccessor(node, 4, 107455); case 247: + case 248: + return bindPropertyOrMethodOrAccessor(node, 4, 107455); + case 249: return bindPropertyOrMethodOrAccessor(node, 8, 107455); case 147: case 148: @@ -10666,7 +10922,7 @@ var ts; case 143: case 142: return bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263); - case 213: + case 215: checkStrictModeFunctionName(node); return declareSymbolAndAddToSymbolTable(node, 16, 106927); case 144: @@ -10680,44 +10936,54 @@ var ts; return bindFunctionOrConstructorType(node); case 155: return bindAnonymousDeclaration(node, 2048, "__type"); - case 165: + case 167: return bindObjectLiteralExpression(node); - case 173: - case 174: + case 175: + case 176: checkStrictModeFunctionName(node); var bindingName = node.name ? node.name.text : "__function"; return bindAnonymousDeclaration(node, 16, bindingName); - case 168: + case 170: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; - case 186: - case 214: - return bindClassLikeDeclaration(node); - case 215: - return bindBlockScopedDeclaration(node, 64, 792960); + case 188: case 216: - return bindBlockScopedDeclaration(node, 524288, 793056); + return bindClassLikeDeclaration(node); case 217: - return bindEnumDeclaration(node); + return bindBlockScopedDeclaration(node, 64, 792960); case 218: + return bindBlockScopedDeclaration(node, 524288, 793056); + case 219: + return bindEnumDeclaration(node); + case 220: return bindModuleDeclaration(node); - case 221: - case 224: - case 226: - case 230: - return declareSymbolAndAddToSymbolTable(node, 8388608, 8388608); case 223: - return bindImportClause(node); + case 226: case 228: + case 232: + return declareSymbolAndAddToSymbolTable(node, 8388608, 8388608); + case 225: + return bindImportClause(node); + case 230: return bindExportDeclaration(node); - case 227: + case 229: return bindExportAssignment(node); - case 248: + case 250: return bindSourceFileIfExternalModule(); } } + function checkTypePredicate(node) { + var parameterName = node.parameterName, type = node.type; + if (parameterName && parameterName.kind === 69) { + checkStrictModeIdentifier(parameterName); + } + if (parameterName && parameterName.kind === 161) { + seenThisKeyword = true; + } + bind(type); + } function bindSourceFileIfExternalModule() { setExportContextFlag(file); if (ts.isExternalModule(file)) { @@ -10728,7 +10994,7 @@ var ts; bindAnonymousDeclaration(file, 512, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 227 ? node.expression : node.right; + var boundExpression = node.kind === 229 ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { bindAnonymousDeclaration(node, 8388608, getDeclarationName(node)); } @@ -10766,13 +11032,30 @@ var ts; setCommonJsModuleIndicator(node); bindExportAssignment(node); } + function bindThisPropertyAssignment(node) { + if (container.kind === 175 || container.kind === 215) { + container.symbol.members = container.symbol.members || {}; + declareSymbol(container.symbol.members, container.symbol, node, 4, 107455); + } + } + function bindPrototypePropertyAssignment(node) { + var classId = node.left.expression.expression; + var funcSymbol = container.locals[classId.text]; + if (!funcSymbol || !(funcSymbol.flags & 16)) { + return; + } + if (!funcSymbol.members) { + funcSymbol.members = {}; + } + declareSymbol(funcSymbol.members, funcSymbol, node.left, 4, 107455); + } function bindCallExpression(node) { if (!file.commonJsModuleIndicator && ts.isRequireCall(node)) { setCommonJsModuleIndicator(node); } } function bindClassLikeDeclaration(node) { - if (node.kind === 214) { + if (node.kind === 216) { bindBlockScopedDeclaration(node, 32, 899519); } else { @@ -10824,9 +11107,7 @@ var ts; else { declareSymbolAndAddToSymbolTable(node, 1, 107455); } - if (node.flags & 56 && - node.parent.kind === 144 && - ts.isClassLike(node.parent.parent)) { + if (ts.isParameterPropertyDeclaration(node)) { var classDeclaration = node.parent.parent; declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); } @@ -10891,15 +11172,15 @@ var ts; function checkUnreachable(node) { switch (currentReachabilityState) { case 4: - var reportError = (ts.isStatement(node) && node.kind !== 194) || - node.kind === 214 || - (node.kind === 218 && shouldReportErrorOnModuleDeclaration(node)) || - (node.kind === 217 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + var reportError = (ts.isStatement(node) && node.kind !== 196) || + node.kind === 216 || + (node.kind === 220 && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 219 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8; var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 193 || + (node.kind !== 195 || ts.getCombinedNodeFlags(node.declarationList) & 24576 || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -10933,15 +11214,18 @@ var ts; var nextNodeId = 1; var nextMergeId = 1; function getNodeId(node) { - if (!node.id) - node.id = nextNodeId++; + if (!node.id) { + node.id = nextNodeId; + nextNodeId++; + } return node.id; } ts.getNodeId = getNodeId; ts.checkTime = 0; function getSymbolId(symbol) { if (!symbol.id) { - symbol.id = nextSymbolId++; + symbol.id = nextSymbolId; + nextSymbolId++; } return symbol.id; } @@ -10958,8 +11242,10 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 ? 5 : 0; + var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === 4; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); + undefinedSymbol.declarations = []; var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var checker = { getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, @@ -10971,6 +11257,7 @@ var ts; getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, getPropertyOfType: getPropertyOfType, @@ -10987,7 +11274,7 @@ var ts; symbolToString: symbolToString, getAugmentedPropertiesOfType: getAugmentedPropertiesOfType, getRootSymbols: getRootSymbols, - getContextualType: getApparentTypeOfContextualType, + getContextualType: getContextualType, getFullyQualifiedName: getFullyQualifiedName, getResolvedSignature: getResolvedSignature, getConstantValue: getConstantValue, @@ -11012,15 +11299,15 @@ var ts; var undefinedType = createIntrinsicType(32 | 2097152, "undefined"); var nullType = createIntrinsicType(64 | 2097152, "null"); var unknownType = createIntrinsicType(1, "unknown"); - var circularType = createIntrinsicType(1, "__circular__"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var emptyUnionType = emptyObjectType; var emptyGenericType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); emptyGenericType.instantiations = {}; var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); anyFunctionType.flags |= 8388608; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); + var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); var globals = {}; var globalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; @@ -11033,8 +11320,6 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; - var jsxElementType; - var jsxIntrinsicElementsType; var globalIterableType; var globalIteratorType; var globalIterableIteratorType; @@ -11051,6 +11336,7 @@ var ts; var getGlobalPromiseConstructorLikeType; var getGlobalThenableType; var jsxElementClassType; + var deferredNodes; var tupleTypes = {}; var unionTypes = {}; var intersectionTypes = {}; @@ -11085,19 +11371,31 @@ var ts; "symbol": { type: esSymbolType, flags: 16777216 + }, + "undefined": { + type: undefinedType, + flags: 2097152 } }; + var jsxElementType; + var jsxTypes = {}; var JsxNames = { JSX: "JSX", IntrinsicElements: "IntrinsicElements", ElementClass: "ElementClass", ElementAttributesPropertyNameContainer: "ElementAttributesProperty", - Element: "Element" + Element: "Element", + IntrinsicAttributes: "IntrinsicAttributes", + IntrinsicClassAttributes: "IntrinsicClassAttributes" }; var subtypeRelation = {}; var assignableRelation = {}; var identityRelation = {}; var _displayBuilder; + var builtinGlobals = (_a = {}, + _a[undefinedSymbol.name] = undefinedSymbol, + _a + ); initializeTypeChecker(); return checker; function getEmitResolver(sourceFile, cancellationToken) { @@ -11151,8 +11449,10 @@ var ts; return result; } function recordMergedSymbol(target, source) { - if (!source.mergeId) - source.mergeId = nextMergeId++; + if (!source.mergeId) { + source.mergeId = nextMergeId; + nextMergeId++; + } mergedSymbols[source.mergeId] = target; } function cloneSymbol(symbol) { @@ -11176,8 +11476,11 @@ var ts; target.constEnumOnlyModule = false; } target.flags |= source.flags; - if (!target.valueDeclaration && source.valueDeclaration) + if (source.valueDeclaration && + (!target.valueDeclaration || + (target.valueDeclaration.kind === 220 && source.valueDeclaration.kind !== 220))) { target.valueDeclaration = source.valueDeclaration; + } ts.forEach(source.declarations, function (node) { target.declarations.push(node); }); @@ -11229,6 +11532,21 @@ var ts; } } } + function addToSymbolTable(target, source, message) { + for (var id in source) { + if (ts.hasProperty(source, id)) { + if (ts.hasProperty(target, id)) { + ts.forEach(target[id].declarations, addDeclarationDiagnostic(id, message)); + } + else { + target[id] = source[id]; + } + } + } + function addDeclarationDiagnostic(id, message) { + return function (declaration) { return diagnostics.add(ts.createDiagnosticForNode(declaration, message, id)); }; + } + } function getSymbolLinks(symbol) { if (symbol.flags & 67108864) return symbol; @@ -11240,10 +11558,16 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 248); + return ts.getAncestor(node, 250); } function isGlobalSourceFile(node) { - return node.kind === 248 && !ts.isExternalOrCommonJsModule(node); + return node.kind === 250 && !ts.isExternalOrCommonJsModule(node); + } + function isPrimitiveApparentType(type) { + return type === globalStringType || + type === globalNumberType || + type === globalBooleanType || + type === globalESSymbolType; } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -11260,6 +11584,16 @@ var ts; } } } + function getSymbolsOfParameterPropertyDeclaration(parameter, parameterName) { + var constructoDeclaration = parameter.parent; + var classDeclaration = parameter.parent.parent; + var parameterSymbol = getSymbol(constructoDeclaration.locals, parameterName, 107455); + var propertySymbol = getSymbol(classDeclaration.symbol.members, parameterName, 107455); + if (parameterSymbol && propertySymbol) { + return [parameterSymbol, propertySymbol]; + } + ts.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration"); + } function isBlockScopedNameDeclaredBeforeUse(declaration, usage) { var declarationFile = ts.getSourceFileOfNode(declaration); var useFile = ts.getSourceFileOfNode(usage); @@ -11271,18 +11605,18 @@ var ts; return ts.indexOf(sourceFiles, declarationFile) <= ts.indexOf(sourceFiles, useFile); } if (declaration.pos <= usage.pos) { - return declaration.kind !== 211 || + return declaration.kind !== 213 || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 193 || - declaration.parent.parent.kind === 199) { + if (declaration.parent.parent.kind === 195 || + declaration.parent.parent.kind === 201) { return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 201 || - declaration.parent.parent.kind === 200) { + else if (declaration.parent.parent.kind === 203 || + declaration.parent.parent.kind === 202) { var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); } @@ -11318,23 +11652,38 @@ var ts; loop: while (location) { if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { - if (!(meaning & 793056) || - !(result.flags & (793056 & ~262144)) || - !ts.isFunctionLike(location) || - lastLocation === location.body) { + var useResult = true; + if (ts.isFunctionLike(location) && lastLocation && lastLocation !== location.body) { + if (meaning & result.flags & 793056) { + useResult = result.flags & 262144 + ? lastLocation === location.type || + lastLocation.kind === 138 || + lastLocation.kind === 137 + : false; + } + if (meaning & 107455 && result.flags & 1) { + useResult = + lastLocation.kind === 138 || + (lastLocation === location.type && + result.valueDeclaration.kind === 138); + } + } + if (useResult) { break loop; } - result = undefined; + else { + result = undefined; + } } } switch (location.kind) { - case 248: + case 250: if (!ts.isExternalOrCommonJsModule(location)) break; - case 218: + case 220: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 248 || - (location.kind === 218 && location.name.kind === 9)) { + if (location.kind === 250 || + (location.kind === 220 && location.name.kind === 9)) { if (result = moduleExports["default"]) { var localSymbol = ts.getLocalSymbolForExportDefault(result); if (localSymbol && (result.flags & meaning) && localSymbol.name === name) { @@ -11344,7 +11693,7 @@ var ts; } if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 && - ts.getDeclarationOfKind(moduleExports[name], 230)) { + ts.getDeclarationOfKind(moduleExports[name], 232)) { break; } } @@ -11352,7 +11701,7 @@ var ts; break loop; } break; - case 217: + case 219: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } @@ -11368,9 +11717,9 @@ var ts; } } break; - case 214: - case 186: - case 215: + case 216: + case 188: + case 217: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 64) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -11378,7 +11727,7 @@ var ts; } break loop; } - if (location.kind === 186 && meaning & 32) { + if (location.kind === 188 && meaning & 32) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -11388,7 +11737,7 @@ var ts; break; case 136: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 215) { + if (ts.isClassLike(grandparent) || grandparent.kind === 217) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; @@ -11400,14 +11749,14 @@ var ts; case 144: case 145: case 146: - case 213: - case 174: + case 215: + case 176: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 173: + case 175: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; @@ -11460,7 +11809,7 @@ var ts; ts.Debug.assert((result.flags & 2) !== 0); var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 211), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 213), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -11477,10 +11826,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 221) { + if (node.kind === 223) { return node; } - while (node && node.kind !== 222) { + while (node && node.kind !== 224) { node = node.parent; } return node; @@ -11490,7 +11839,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 232) { + if (node.moduleReference.kind === 234) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -11499,9 +11848,12 @@ var ts; var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); - if (!exportDefaultSymbol) { + if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } + else if (!exportDefaultSymbol && allowSyntheticDefaultImports) { + return resolveSymbol(moduleSymbol.exports["export="]) || resolveSymbol(moduleSymbol); + } return exportDefaultSymbol; } } @@ -11509,14 +11861,6 @@ var ts; var moduleSpecifier = node.parent.parent.moduleSpecifier; return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); } - function getMemberOfModuleVariable(moduleSymbol, name) { - if (moduleSymbol.flags & 3) { - var typeAnnotation = moduleSymbol.valueDeclaration.type; - if (typeAnnotation) { - return getPropertyOfType(getTypeFromTypeNode(typeAnnotation), name); - } - } - } function combineValueAndTypeSymbols(valueSymbol, typeSymbol) { if (valueSymbol.flags & (793056 | 1536)) { return valueSymbol; @@ -11579,17 +11923,17 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 221: - return getTargetOfImportEqualsDeclaration(node); case 223: + return getTargetOfImportEqualsDeclaration(node); + case 225: return getTargetOfImportClause(node); - case 224: - return getTargetOfNamespaceImport(node); case 226: + return getTargetOfNamespaceImport(node); + case 228: return getTargetOfImportSpecifier(node); - case 230: + case 232: return getTargetOfExportSpecifier(node); - case 227: + case 229: return getTargetOfExportAssignment(node); } } @@ -11631,10 +11975,10 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 227) { + if (node.kind === 229) { checkExpressionCached(node.expression); } - else if (node.kind === 230) { + else if (node.kind === 232) { checkExpressionCached(node.propertyName || node.name); } else if (ts.isInternalModuleImportEqualsDeclaration(node)) { @@ -11644,7 +11988,7 @@ var ts; } function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 221); + importDeclaration = ts.getAncestor(entityName, 223); ts.Debug.assert(importDeclaration !== undefined); } if (entityName.kind === 69 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { @@ -11654,7 +11998,7 @@ var ts; return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 221); + ts.Debug.assert(entityName.parent.kind === 223); return resolveEntityName(entityName, 107455 | 793056 | 1536); } } @@ -11673,7 +12017,7 @@ var ts; return undefined; } } - else if (name.kind === 135 || name.kind === 166) { + else if (name.kind === 135 || name.kind === 168) { var left = name.kind === 135 ? name.left : name.expression; var right = name.kind === 135 ? name.right : name.name; var namespace = resolveEntityName(left, 1536, ignoreErrors); @@ -11699,14 +12043,10 @@ var ts; return; } var moduleReferenceLiteral = moduleReferenceExpression; - var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); if (moduleName === undefined) { return; } - if (moduleName.indexOf("!") >= 0) { - moduleName = moduleName.substr(0, moduleName.indexOf("!")); - } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512); @@ -11749,35 +12089,58 @@ var ts; var links = getSymbolLinks(moduleSymbol); return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function extendExportSymbols(target, source) { + function extendExportSymbols(target, source, lookupTable, exportNode) { for (var id in source) { if (id !== "default" && !ts.hasProperty(target, id)) { target[id] = source[id]; + if (lookupTable && exportNode) { + lookupTable[id] = { + specifierText: ts.getTextOfNode(exportNode.moduleSpecifier) + }; + } + } + else if (lookupTable && exportNode && id !== "default" && ts.hasProperty(target, id) && resolveSymbol(target[id]) !== resolveSymbol(source[id])) { + if (!lookupTable[id].exportsWithDuplicate) { + lookupTable[id].exportsWithDuplicate = [exportNode]; + } + else { + lookupTable[id].exportsWithDuplicate.push(exportNode); + } } } } function getExportsForModule(moduleSymbol) { - var result; var visitedSymbols = []; - visit(moduleSymbol); - return result || moduleSymbol.exports; + return visit(moduleSymbol) || moduleSymbol.exports; function visit(symbol) { - if (symbol && symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol)) { - visitedSymbols.push(symbol); - if (symbol !== moduleSymbol) { - if (!result) { - result = cloneSymbolTable(moduleSymbol.exports); - } - extendExportSymbols(result, symbol.exports); - } - var exportStars = symbol.exports["__export"]; - if (exportStars) { - for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { - var node = _a[_i]; - visit(resolveExternalModuleName(node, node.moduleSpecifier)); - } - } + if (!(symbol && symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol))) { + return; } + visitedSymbols.push(symbol); + var symbols = cloneSymbolTable(symbol.exports); + var exportStars = symbol.exports["__export"]; + if (exportStars) { + var nestedSymbols = {}; + var lookupTable = {}; + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + var resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); + var exportedSymbols = visit(resolvedModule); + extendExportSymbols(nestedSymbols, exportedSymbols, lookupTable, node); + } + for (var id in lookupTable) { + var exportsWithDuplicate = lookupTable[id].exportsWithDuplicate; + if (id === "export=" || !(exportsWithDuplicate && exportsWithDuplicate.length) || ts.hasProperty(symbols, id)) { + continue; + } + for (var _b = 0, exportsWithDuplicate_1 = exportsWithDuplicate; _b < exportsWithDuplicate_1.length; _b++) { + var node = exportsWithDuplicate_1[_b]; + diagnostics.add(ts.createDiagnosticForNode(node, ts.Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id)); + } + } + extendExportSymbols(symbols, nestedSymbols); + } + return symbols; } } function getMergedSymbol(symbol) { @@ -11818,7 +12181,8 @@ var ts; } function createType(flags) { var result = new Type(checker, flags); - result.id = typeCount++; + result.id = typeCount; + typeCount++; return result; } function createIntrinsicType(kind, intrinsicName) { @@ -11876,17 +12240,17 @@ var ts; } } switch (location_1.kind) { - case 248: + case 250: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 218: + case 220: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 214: - case 215: + case 216: + case 217: if (result = callback(getSymbolOfNode(location_1).members)) { return result; } @@ -11919,7 +12283,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232)) { if (!useOnlyExternalAliasing || ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); @@ -11948,7 +12312,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -12003,8 +12367,8 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 218 && declaration.name.kind === 9) || - (declaration.kind === 248 && ts.isExternalOrCommonJsModule(declaration)); + return (declaration.kind === 220 && declaration.name.kind === 9) || + (declaration.kind === 250 && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -12039,8 +12403,8 @@ var ts; if (entityName.parent.kind === 154) { meaning = 107455 | 1048576; } - else if (entityName.kind === 135 || entityName.kind === 166 || - entityName.parent.kind === 221) { + else if (entityName.kind === 135 || entityName.kind === 168 || + entityName.parent.kind === 223) { meaning = 1536; } else { @@ -12070,9 +12434,9 @@ var ts; ts.releaseStringWriter(writer); return result; } - function signatureToString(signature, enclosingDeclaration, flags) { + function signatureToString(signature, enclosingDeclaration, flags, kind) { var writer = ts.getSingleLineStringWriter(); - getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); + getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind); var result = writer.string(); ts.releaseStringWriter(writer); return result; @@ -12094,7 +12458,7 @@ var ts; while (node.kind === 160) { node = node.parent; } - if (node.kind === 216) { + if (node.kind === 218) { return getSymbolOfNode(node); } } @@ -12108,10 +12472,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 186: + case 188: return "(Anonymous class)"; - case 173: - case 174: + case 175: + case 176: return "(Anonymous function)"; } } @@ -12176,9 +12540,15 @@ var ts; return writeType(type, globalFlags); function writeType(type, flags) { if (type.flags & 16777343) { - writer.writeKeyword(!(globalFlags & 16) && isTypeAny(type) - ? "any" - : type.intrinsicName); + if (type.flags & 134217728) { + buildTypePredicateDisplay(writer, type.predicate); + buildTypeDisplay(type.predicate.type, writer, enclosingDeclaration, flags, symbolStack); + } + else { + writer.writeKeyword(!(globalFlags & 16) && isTypeAny(type) + ? "any" + : type.intrinsicName); + } } else if (type.flags & 33554432) { if (inObjectTypeLiteral) { @@ -12230,11 +12600,13 @@ var ts; } if (pos < end) { writePunctuation(writer, 25); - writeType(typeArguments[pos++], 0); + writeType(typeArguments[pos], 0); + pos++; while (pos < end) { writePunctuation(writer, 24); writeSpace(writer); - writeType(typeArguments[pos++], 0); + writeType(typeArguments[pos], 0); + pos++; } writePunctuation(writer, 27); } @@ -12317,7 +12689,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 248 || declaration.parent.kind === 219; + return declaration.parent.kind === 250 || declaration.parent.kind === 221; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { return !!(flags & 2) || @@ -12350,7 +12722,7 @@ var ts; if (flags & 64) { writePunctuation(writer, 17); } - buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, symbolStack); + buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, undefined, symbolStack); if (flags & 64) { writePunctuation(writer, 18); } @@ -12362,7 +12734,7 @@ var ts; } writeKeyword(writer, 92); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, symbolStack); + buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, undefined, symbolStack); if (flags & 64) { writePunctuation(writer, 18); } @@ -12376,15 +12748,13 @@ var ts; writer.increaseIndent(); for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { var signature = _a[_i]; - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, undefined, symbolStack); writePunctuation(writer, 23); writer.writeLine(); } for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { var signature = _c[_b]; - writeKeyword(writer, 92); - writeSpace(writer); - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, 1, symbolStack); writePunctuation(writer, 23); writer.writeLine(); } @@ -12425,7 +12795,7 @@ var ts; if (p.flags & 536870912) { writePunctuation(writer, 53); } - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, undefined, symbolStack); writePunctuation(writer, 23); writer.writeLine(); } @@ -12513,6 +12883,17 @@ var ts; } writePunctuation(writer, 18); } + function buildTypePredicateDisplay(writer, predicate) { + if (ts.isIdentifierTypePredicate(predicate)) { + writer.writeParameter(predicate.parameterName); + } + else { + writeKeyword(writer, 97); + } + writeSpace(writer); + writeKeyword(writer, 124); + writeSpace(writer); + } function buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { if (flags & 8) { writeSpace(writer); @@ -12522,20 +12903,14 @@ var ts; writePunctuation(writer, 54); } writeSpace(writer); - var returnType; - if (signature.typePredicate) { - writer.writeParameter(signature.typePredicate.parameterName); - writeSpace(writer); - writeKeyword(writer, 124); - writeSpace(writer); - returnType = signature.typePredicate.type; - } - else { - returnType = getReturnTypeOfSignature(signature); - } + var returnType = getReturnTypeOfSignature(signature); buildTypeDisplay(returnType, writer, enclosingDeclaration, flags, symbolStack); } - function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { + function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind, symbolStack) { + if (kind === 1) { + writeKeyword(writer, 92); + writeSpace(writer); + } if (signature.target && (flags & 32)) { buildDisplayForTypeArgumentsAndDelimiters(signature.target.typeParameters, signature.mapper, writer, enclosingDeclaration); } @@ -12558,73 +12933,33 @@ var ts; }); } function isDeclarationVisible(node) { - function getContainingExternalModule(node) { - for (; node; node = node.parent) { - if (node.kind === 218) { - if (node.name.kind === 9) { - return node; - } - } - else if (node.kind === 248) { - return ts.isExternalOrCommonJsModule(node) ? node : undefined; - } - } - ts.Debug.fail("getContainingModule cant reach here"); - } - function isUsedInExportAssignment(node) { - var externalModule = getContainingExternalModule(node); - var exportAssignmentSymbol; - var resolvedExportSymbol; - if (externalModule) { - var externalModuleSymbol = getSymbolOfNode(externalModule); - exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var symbolOfNode = getSymbolOfNode(node); - if (isSymbolUsedInExportAssignment(symbolOfNode)) { - return true; - } - if (symbolOfNode.flags & 8388608) { - return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); - } - } - function isSymbolUsedInExportAssignment(symbol) { - if (exportAssignmentSymbol === symbol) { - return true; - } - if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608)) { - resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); - if (resolvedExportSymbol === symbol) { - return true; - } - return ts.forEach(resolvedExportSymbol.declarations, function (current) { - while (current) { - if (current === node) { - return true; - } - current = current.parent; - } - }); - } + if (node) { + var links = getNodeLinks(node); + if (links.isVisible === undefined) { + links.isVisible = !!determineIfDeclarationIsVisible(); } + return links.isVisible; } + return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 163: + case 165: return isDeclarationVisible(node.parent.parent); - case 211: + case 213: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { return false; } - case 218: - case 214: - case 215: + case 220: case 216: - case 213: case 217: - case 221: + case 218: + case 215: + case 219: + case 223: var parent_4 = getDeclarationContainer(node); if (!(ts.getCombinedNodeFlags(node) & 2) && - !(node.kind !== 221 && parent_4.kind !== 248 && ts.isInAmbientContext(parent_4))) { + !(node.kind !== 223 && parent_4.kind !== 250 && ts.isInAmbientContext(parent_4))) { return isGlobalSourceFile(parent_4); } return isDeclarationVisible(parent_4); @@ -12642,7 +12977,7 @@ var ts; case 147: case 149: case 138: - case 219: + case 221: case 152: case 153: case 155: @@ -12653,33 +12988,26 @@ var ts; case 159: case 160: return isDeclarationVisible(node.parent); - case 223: - case 224: + case 225: case 226: + case 228: return false; case 137: - case 248: + case 250: return true; - case 227: + case 229: return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } } - if (node) { - var links = getNodeLinks(node); - if (links.isVisible === undefined) { - links.isVisible = !!determineIfDeclarationIsVisible(); - } - return links.isVisible; - } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 227) { + if (node.parent && node.parent.kind === 229) { exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536 | 8388608, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 230) { + else if (node.parent.kind === 232) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -12754,7 +13082,7 @@ var ts; } function getDeclarationContainer(node) { node = ts.getRootDeclaration(node); - return node.kind === 211 ? node.parent.parent.parent : node.parent; + return node.kind === 213 ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { var classType = getDeclaredTypeOfSymbol(prototype.parent); @@ -12801,7 +13129,7 @@ var ts; return parentType; } var type; - if (pattern.kind === 161) { + if (pattern.kind === 163) { var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { return anyType; @@ -12839,10 +13167,10 @@ var ts; return type; } function getTypeForVariableLikeDeclaration(declaration) { - if (declaration.parent.parent.kind === 200) { + if (declaration.parent.parent.kind === 202) { return anyType; } - if (declaration.parent.parent.kind === 201) { + if (declaration.parent.parent.kind === 203) { return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; } if (ts.isBindingPattern(declaration.parent)) { @@ -12867,7 +13195,7 @@ var ts; if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 246) { + if (declaration.kind === 248) { return checkIdentifier(declaration.name); } if (ts.isBindingPattern(declaration.name)) { @@ -12914,7 +13242,7 @@ var ts; if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType; } - var elementTypes = ts.map(elements, function (e) { return e.kind === 187 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 189 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -12923,7 +13251,7 @@ var ts; return createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 161 + return pattern.kind === 163 ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -12933,7 +13261,13 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - return declaration.kind !== 245 ? getWidenedType(type) : type; + if (declaration.kind === 247) { + return type; + } + if (type.flags & 134217728 && (declaration.kind === 141 || declaration.kind === 140)) { + return type; + } + return getWidenedType(type); } type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { @@ -12951,17 +13285,19 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 244) { + if (declaration.parent.kind === 246) { return links.type = anyType; } - if (declaration.kind === 227) { + if (declaration.kind === 229) { return links.type = checkExpression(declaration.expression); } - if (declaration.kind === 181) { + if (declaration.kind === 183) { return links.type = checkExpression(declaration.right); } - if (declaration.kind === 166) { - return checkExpressionCached(declaration.parent.right); + if (declaration.kind === 168) { + if (declaration.parent.kind === 183) { + return links.type = checkExpressionCached(declaration.parent.right); + } } if (!pushTypeResolution(symbol, 0)) { return unknownType; @@ -13117,9 +13453,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 214 || node.kind === 186 || - node.kind === 213 || node.kind === 173 || - node.kind === 143 || node.kind === 174) { + if (node.kind === 216 || node.kind === 188 || + node.kind === 215 || node.kind === 175 || + node.kind === 143 || node.kind === 176) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -13128,15 +13464,15 @@ var ts; } } function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 215); + var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 217); return appendOuterTypeParameters(undefined, declaration); } function getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol) { var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 215 || node.kind === 214 || - node.kind === 186 || node.kind === 216) { + if (node.kind === 217 || node.kind === 216 || + node.kind === 188 || node.kind === 218) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -13191,9 +13527,6 @@ var ts; } return type.resolvedBaseConstructorType; } - function hasClassBaseType(type) { - return !!ts.forEach(getBaseTypes(type), function (t) { return !!(t.symbol.flags & 32); }); - } function getBaseTypes(type) { var isClass = type.symbol.flags & 32; var isInterface = type.symbol.flags & 64; @@ -13262,7 +13595,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 217 && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -13291,7 +13624,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215) { + if (declaration.kind === 217) { if (declaration.flags & 262144) { return false; } @@ -13340,7 +13673,7 @@ var ts; if (!pushTypeResolution(symbol, 2)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 216); + var declaration = ts.getDeclarationOfKind(symbol, 218); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -13423,7 +13756,7 @@ var ts; case 120: case 131: case 103: - case 9: + case 162: return true; case 156: return isIndependentType(node.elementType); @@ -13488,14 +13821,6 @@ var ts; } } } - function addInheritedSignatures(signatures, baseSignatures) { - if (baseSignatures) { - for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { - var signature = baseSignatures_1[_i]; - signatures.push(signature); - } - } - } function resolveDeclaredMembers(type) { if (!type.declaredProperties) { var symbol = type.symbol; @@ -13556,33 +13881,32 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, parameters, resolvedReturnType, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; sig.resolvedReturnType = resolvedReturnType; - sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; sig.hasRestParameter = hasRestParameter; sig.hasStringLiterals = hasStringLiterals; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { - if (!hasClassBaseType(classType)) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; - } var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1); + if (baseSignatures.length === 0) { + return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, 0, false, false)]; + } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); var typeArgCount = typeArguments ? typeArguments.length : 0; var result = []; - for (var _i = 0, baseSignatures_2 = baseSignatures; _i < baseSignatures_2.length; _i++) { - var baseSig = baseSignatures_2[_i]; + for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { + var baseSig = baseSignatures_1[_i]; var typeParamCount = baseSig.typeParameters ? baseSig.typeParameters.length : 0; if (typeParamCount === typeArgCount) { var sig = typeParamCount ? getSignatureInstantiation(baseSig, typeArguments) : cloneSignature(baseSig); @@ -13612,7 +13936,7 @@ var ts; function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignatures(s, signature, partialMatch, ignoreReturnTypes, compareTypes)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -13701,35 +14025,28 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; - var members; - var callSignatures; - var constructSignatures; - var stringIndexType; - var numberIndexType; if (type.target) { - members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, false); - callSignatures = instantiateList(getSignaturesOfType(type.target, 0), type.mapper, instantiateSignature); - constructSignatures = instantiateList(getSignaturesOfType(type.target, 1), type.mapper, instantiateSignature); - stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0), type.mapper); - numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1), type.mapper); + var members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, false); + var callSignatures = instantiateList(getSignaturesOfType(type.target, 0), type.mapper, instantiateSignature); + var constructSignatures = instantiateList(getSignaturesOfType(type.target, 1), type.mapper, instantiateSignature); + var stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0), type.mapper); + var numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1), type.mapper); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else if (symbol.flags & 2048) { - members = symbol.members; - callSignatures = getSignaturesOfSymbol(members["__call"]); - constructSignatures = getSignaturesOfSymbol(members["__new"]); - stringIndexType = getIndexTypeOfSymbol(symbol, 0); - numberIndexType = getIndexTypeOfSymbol(symbol, 1); + var members = symbol.members; + var callSignatures = getSignaturesOfSymbol(members["__call"]); + var constructSignatures = getSignaturesOfSymbol(members["__new"]); + var stringIndexType = getIndexTypeOfSymbol(symbol, 0); + var numberIndexType = getIndexTypeOfSymbol(symbol, 1); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else { - members = emptySymbols; - callSignatures = emptyArray; - constructSignatures = emptyArray; + var members = emptySymbols; + var constructSignatures = emptyArray; if (symbol.flags & 1952) { members = getExportsOfSymbol(symbol); } - if (symbol.flags & (16 | 8192)) { - callSignatures = getSignaturesOfSymbol(symbol); - } if (symbol.flags & 32) { var classType = getDeclaredTypeOfClassOrInterface(symbol); constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]); @@ -13742,10 +14059,12 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(baseConstructorType)); } } - stringIndexType = undefined; - numberIndexType = (symbol.flags & 384) ? stringType : undefined; + var numberIndexType = (symbol.flags & 384) ? stringType : undefined; + setObjectTypeMembers(type, members, emptyArray, constructSignatures, undefined, numberIndexType); + if (symbol.flags & (16 | 8192)) { + type.callSignatures = getSignaturesOfSymbol(symbol); + } } - setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } function resolveStructuredTypeMembers(type) { if (!type.members) { @@ -13835,12 +14154,14 @@ var ts; function createUnionOrIntersectionProperty(containingType, name) { var types = containingType.types; var props; + var commonFlags = (containingType.flags & 32768) ? 536870912 : 0; for (var _i = 0, types_2 = types; _i < types_2.length; _i++) { var current = types_2[_i]; var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (prop && !(getDeclarationFlagsFromSymbol(prop) & (16 | 32))) { + commonFlags &= prop.flags; if (!props) { props = [prop]; } @@ -13868,7 +14189,10 @@ var ts; } propTypes.push(getTypeOfSymbol(prop)); } - var result = createSymbol(4 | 67108864 | 268435456, name); + var result = createSymbol(4 | + 67108864 | + 268435456 | + commonFlags, name); result.containingType = containingType; result.declarations = declarations; result.type = containingType.flags & 16384 ? getUnionType(propTypes) : getIntersectionType(propTypes); @@ -13918,22 +14242,6 @@ var ts; function getSignaturesOfType(type, kind) { return getSignaturesOfStructuredType(getApparentType(type), kind); } - function typeHasConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & (80896 | 16384)) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.constructSignatures.length > 0; - } - return false; - } - function typeHasCallOrConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & 130048) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.callSignatures.length > 0 || resolved.constructSignatures.length > 0; - } - return false; - } function getIndexTypeOfStructuredType(type, kind) { if (type.flags & 130048) { var resolved = resolveStructuredTypeMembers(type); @@ -13975,6 +14283,23 @@ var ts; } return false; } + function createTypePredicateFromTypePredicateNode(node) { + if (node.parameterName.kind === 69) { + var parameterName = node.parameterName; + return { + kind: 1, + parameterName: parameterName ? parameterName.text : undefined, + parameterIndex: parameterName ? getTypePredicateParameterIndex(node.parent.parameters, parameterName) : undefined, + type: getTypeFromTypeNode(node.type) + }; + } + else { + return { + kind: 0, + type: getTypeFromTypeNode(node.type) + }; + } + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { @@ -13988,8 +14313,13 @@ var ts; var minArgumentCount = -1; for (var i = 0, n = declaration.parameters.length; i < n; i++) { var param = declaration.parameters[i]; - parameters.push(param.symbol); - if (param.type && param.type.kind === 9) { + var paramSymbol = param.symbol; + if (paramSymbol && !!(paramSymbol.flags & 4) && !ts.isBindingPattern(param.name)) { + var resolvedSymbol = resolveName(param, paramSymbol.name, 107455, undefined, undefined); + paramSymbol = resolvedSymbol; + } + parameters.push(paramSymbol); + if (param.type && param.type.kind === 162) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { @@ -14005,20 +14335,11 @@ var ts; minArgumentCount = declaration.parameters.length; } var returnType; - var typePredicate; if (classType) { returnType = classType; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 150) { - var typePredicateNode = declaration.type; - typePredicate = { - parameterName: typePredicateNode.parameterName ? typePredicateNode.parameterName.text : undefined, - parameterIndex: typePredicateNode.parameterName ? getTypePredicateParameterIndex(declaration.parameters, typePredicateNode.parameterName) : undefined, - type: getTypeFromTypeNode(typePredicateNode.type) - }; - } } else { if (declaration.kind === 145 && !ts.hasDynamicName(declaration)) { @@ -14029,7 +14350,7 @@ var ts; returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -14042,7 +14363,7 @@ var ts; switch (node.kind) { case 152: case 153: - case 213: + case 215: case 143: case 142: case 144: @@ -14051,8 +14372,8 @@ var ts; case 149: case 145: case 146: - case 173: - case 174: + case 175: + case 176: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -14168,17 +14489,38 @@ var ts; ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; } - function getConstraintOfTypeParameter(type) { - if (!type.constraint) { - if (type.target) { - var targetConstraint = getConstraintOfTypeParameter(type.target); - type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; + function getConstraintDeclaration(type) { + return ts.getDeclarationOfKind(type.symbol, 137).constraint; + } + function hasConstraintReferenceTo(type, target) { + var checked; + while (type && type.flags & 512 && !ts.contains(checked, type)) { + if (type === target) { + return true; + } + (checked || (checked = [])).push(type); + var constraintDeclaration = getConstraintDeclaration(type); + type = constraintDeclaration && getTypeFromTypeNode(constraintDeclaration); + } + return false; + } + function getConstraintOfTypeParameter(typeParameter) { + if (!typeParameter.constraint) { + if (typeParameter.target) { + var targetConstraint = getConstraintOfTypeParameter(typeParameter.target); + typeParameter.constraint = targetConstraint ? instantiateType(targetConstraint, typeParameter.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 137).constraint); + var constraintDeclaration = getConstraintDeclaration(typeParameter); + var constraint = getTypeFromTypeNode(constraintDeclaration); + if (hasConstraintReferenceTo(constraint, typeParameter)) { + error(constraintDeclaration, ts.Diagnostics.Type_parameter_0_has_a_circular_constraint, typeToString(typeParameter)); + constraint = unknownType; + } + typeParameter.constraint = constraint; } } - return type.constraint === noConstraintType ? undefined : type.constraint; + return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 137).parent); @@ -14222,40 +14564,6 @@ var ts; } return type; } - function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode, typeParameterSymbol) { - var links = getNodeLinks(typeReferenceNode); - if (links.isIllegalTypeReferenceInConstraint !== undefined) { - return links.isIllegalTypeReferenceInConstraint; - } - var currentNode = typeReferenceNode; - while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return d.parent === currentNode.parent; })) { - currentNode = currentNode.parent; - } - links.isIllegalTypeReferenceInConstraint = currentNode.kind === 137; - return links.isIllegalTypeReferenceInConstraint; - } - function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { - var typeParameterSymbol; - function check(n) { - if (n.kind === 151 && n.typeName.kind === 69) { - var links = getNodeLinks(n); - if (links.isIllegalTypeReferenceInConstraint === undefined) { - var symbol = resolveName(typeParameter, n.typeName.text, 793056, undefined, undefined); - if (symbol && (symbol.flags & 262144)) { - links.isIllegalTypeReferenceInConstraint = ts.forEach(symbol.declarations, function (d) { return d.parent === typeParameter.parent; }); - } - } - if (links.isIllegalTypeReferenceInConstraint) { - error(typeParameter, ts.Diagnostics.Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list); - } - } - ts.forEachChild(n, check); - } - if (typeParameter.constraint) { - typeParameterSymbol = getSymbolOfNode(typeParameter); - check(typeParameter.constraint); - } - } function getTypeFromClassOrInterfaceReference(node, symbol) { var type = getDeclaredTypeOfSymbol(symbol); var typeParameters = type.localTypeParameters; @@ -14292,9 +14600,6 @@ var ts; return type; } function getTypeFromNonGenericTypeReference(node, symbol) { - if (symbol.flags & 262144 && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - return unknownType; - } if (node.typeArguments) { error(node, ts.Diagnostics.Type_0_is_not_generic, symbolToString(symbol)); return unknownType; @@ -14330,9 +14635,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 214: - case 215: + case 216: case 217: + case 219: return declaration; } } @@ -14364,10 +14669,6 @@ var ts; if (arity === void 0) { arity = 0; } return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } - function tryGetGlobalType(name, arity) { - if (arity === void 0) { arity = 0; } - return getTypeOfGlobalSymbol(getGlobalSymbol(name, 793056, undefined), arity); - } function getExportedTypeFromNamespace(namespace, name) { var namespaceSymbol = getGlobalSymbol(namespace, 1536, undefined); var typeSymbol = namespaceSymbol && getSymbol(namespaceSymbol.exports, name, 793056); @@ -14468,7 +14769,7 @@ var ts; } function getUnionType(types, noSubtypeReduction) { if (types.length === 0) { - return emptyObjectType; + return emptyUnionType; } var typeSet = []; addTypesToSet(typeSet, types, 16384); @@ -14534,8 +14835,7 @@ var ts; } return links.resolvedType; } - function getStringLiteralType(node) { - var text = node.text; + function getStringLiteralTypeForText(text) { if (ts.hasProperty(stringLiteralTypes, text)) { return stringLiteralTypes[text]; } @@ -14543,17 +14843,17 @@ var ts; type.text = text; return type; } - function getTypeFromStringLiteral(node) { + function getTypeFromStringLiteralTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getStringLiteralType(node); + links.resolvedType = getStringLiteralTypeForText(node.text); } return links.resolvedType; } function getThisType(node) { var container = ts.getThisContainer(node, false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 215)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 217)) { if (!(container.flags & 64) && (container.kind !== 144 || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; @@ -14569,6 +14869,22 @@ var ts; } return links.resolvedType; } + function getPredicateType(node) { + return createPredicateType(getSymbolOfNode(node), createTypePredicateFromTypePredicateNode(node)); + } + function createPredicateType(symbol, predicate) { + var type = createType(8 | 134217728); + type.symbol = symbol; + type.predicate = predicate; + return type; + } + function getTypeFromPredicateTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getPredicateType(node); + } + return links.resolvedType; + } function getTypeFromTypeNode(node) { switch (node.kind) { case 117: @@ -14583,15 +14899,15 @@ var ts; return esSymbolType; case 103: return voidType; - case 97: + case 161: return getTypeFromThisTypeNode(node); - case 9: - return getTypeFromStringLiteral(node); + case 162: + return getTypeFromStringLiteralTypeNode(node); case 151: return getTypeFromTypeReference(node); case 150: - return booleanType; - case 188: + return getTypeFromPredicateTypeNode(node); + case 190: return getTypeFromTypeReference(node); case 154: return getTypeFromTypeQueryNode(node); @@ -14669,18 +14985,22 @@ var ts; return t; }; } - function createInferenceMapper(context) { - var mapper = function (t) { - for (var i = 0; i < context.typeParameters.length; i++) { - if (t === context.typeParameters[i]) { - context.inferences[i].isFixed = true; - return getInferredType(context, i); + function getInferenceMapper(context) { + if (!context.mapper) { + var mapper = function (t) { + var typeParameters = context.typeParameters; + for (var i = 0; i < typeParameters.length; i++) { + if (t === 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) { return type; @@ -14688,33 +15008,39 @@ var ts; function combineTypeMappers(mapper1, mapper2) { return function (t) { return instantiateType(mapper1(t), mapper2); }; } - function instantiateTypeParameter(typeParameter, mapper) { + function cloneTypeParameter(typeParameter) { var result = createType(512); result.symbol = typeParameter.symbol; - if (typeParameter.constraint) { - result.constraint = instantiateType(typeParameter.constraint, mapper); + result.target = typeParameter; + return result; + } + function cloneTypePredicate(predicate, mapper) { + if (ts.isIdentifierTypePredicate(predicate)) { + return { + kind: 1, + parameterName: predicate.parameterName, + parameterIndex: predicate.parameterIndex, + type: instantiateType(predicate.type, mapper) + }; } else { - result.target = typeParameter; - result.mapper = mapper; + return { + kind: 0, + type: instantiateType(predicate.type, mapper) + }; } - return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { var freshTypeParameters; - var freshTypePredicate; if (signature.typeParameters && !eraseTypeParameters) { - freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + freshTypeParameters = ts.map(signature.typeParameters, cloneTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); + for (var _i = 0, freshTypeParameters_1 = freshTypeParameters; _i < freshTypeParameters_1.length; _i++) { + var tp = freshTypeParameters_1[_i]; + tp.mapper = mapper; + } } - if (signature.typePredicate) { - freshTypePredicate = { - parameterName: signature.typePredicate.parameterName, - parameterIndex: signature.typePredicate.parameterIndex, - type: instantiateType(signature.typePredicate.type, mapper) - }; - } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -14772,31 +15098,35 @@ var ts; if (type.flags & 32768) { return getIntersectionType(instantiateList(type.types, mapper, instantiateType)); } + if (type.flags & 134217728) { + var predicate = type.predicate; + return createPredicateType(type.symbol, cloneTypePredicate(predicate, mapper)); + } } return type; } function isContextSensitive(node) { ts.Debug.assert(node.kind !== 143 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 173: - case 174: + case 175: + case 176: return isContextSensitiveFunctionLikeDeclaration(node); - case 165: + case 167: return ts.forEach(node.properties, isContextSensitive); - case 164: + case 166: return ts.forEach(node.elements, isContextSensitive); - case 182: + case 184: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 181: + case 183: return node.operatorToken.kind === 52 && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 245: + case 247: return isContextSensitive(node.initializer); case 143: case 142: return isContextSensitiveFunctionLikeDeclaration(node); - case 172: + case 174: return isContextSensitive(node.expression); } return false; @@ -14821,7 +15151,7 @@ var ts; function isTypeIdenticalTo(source, target) { return checkTypeRelatedTo(source, target, identityRelation, undefined); } - function compareTypes(source, target) { + function compareTypesIdentical(source, target) { return checkTypeRelatedTo(source, target, identityRelation, undefined) ? -1 : 0; } function isTypeSubtypeOf(source, target) { @@ -14836,10 +15166,73 @@ var ts; function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } - function isSignatureAssignableTo(source, target) { - var sourceType = getOrCreateTypeFromSignature(source); - var targetType = getOrCreateTypeFromSignature(target); - return checkTypeRelatedTo(sourceType, targetType, assignableRelation, undefined); + function isSignatureAssignableTo(source, target, ignoreReturnTypes) { + if (source === target) { + return true; + } + if (!target.hasRestParameter && source.minArgumentCount > target.parameters.length) { + return false; + } + source = getErasedSignature(source); + target = getErasedSignature(target); + var sourceMax = getNumNonRestParameters(source); + var targetMax = getNumNonRestParameters(target); + var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); + for (var i = 0; i < checkCount; i++) { + var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var related = isTypeAssignableTo(t, s) || isTypeAssignableTo(s, t); + if (!related) { + return false; + } + } + if (!ignoreReturnTypes) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return true; + } + var sourceReturnType = getReturnTypeOfSignature(source); + if (targetReturnType.flags & 134217728 && targetReturnType.predicate.kind === 1) { + if (!(sourceReturnType.flags & 134217728)) { + return false; + } + } + return isTypeAssignableTo(sourceReturnType, targetReturnType); + } + return true; + } + function isImplementationCompatibleWithOverload(implementation, overload) { + var erasedSource = getErasedSignature(implementation); + var erasedTarget = getErasedSignature(overload); + var sourceReturnType = getReturnTypeOfSignature(erasedSource); + var targetReturnType = getReturnTypeOfSignature(erasedTarget); + if (targetReturnType === voidType + || checkTypeRelatedTo(targetReturnType, sourceReturnType, assignableRelation, undefined) + || checkTypeRelatedTo(sourceReturnType, targetReturnType, assignableRelation, undefined)) { + return isSignatureAssignableTo(erasedSource, erasedTarget, true); + } + return false; + } + function getNumNonRestParameters(signature) { + var numParams = signature.parameters.length; + return signature.hasRestParameter ? + numParams - 1 : + numParams; + } + function getNumParametersToCheckForSignatureRelatability(source, sourceNonRestParamCount, target, targetNonRestParamCount) { + if (source.hasRestParameter === target.hasRestParameter) { + if (source.hasRestParameter) { + return Math.max(sourceNonRestParamCount, targetNonRestParamCount) + 1; + } + else { + return Math.min(sourceNonRestParamCount, targetNonRestParamCount); + } + } + else { + return source.hasRestParameter ? + targetNonRestParamCount : + sourceNonRestParamCount; + } } function checkTypeRelatedTo(source, target, relation, errorNode, headMessage, containingMessageChain) { var errorInfo; @@ -14894,6 +15287,11 @@ var ts; return -1; if (source.flags & 128 && target === numberType) return -1; + if (source.flags & 128 && target.flags & 128) { + if (result = enumRelatedTo(source, target)) { + return result; + } + } if (source.flags & 256 && target === stringType) return -1; if (relation === assignableRelation) { @@ -14902,6 +15300,36 @@ var ts; if (source === numberType && target.flags & 128) return -1; } + if (source.flags & 8 && target.flags & 8) { + if (source.flags & 134217728 && target.flags & 134217728) { + var sourcePredicate = source; + var targetPredicate = target; + if (sourcePredicate.predicate.kind !== targetPredicate.predicate.kind) { + if (reportErrors) { + reportError(ts.Diagnostics.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0; + } + if (sourcePredicate.predicate.kind === 1) { + var sourceIdentifierPredicate = sourcePredicate.predicate; + var targetIdentifierPredicate = targetPredicate.predicate; + if (sourceIdentifierPredicate.parameterIndex !== targetIdentifierPredicate.parameterIndex) { + if (reportErrors) { + reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceIdentifierPredicate.parameterName, targetIdentifierPredicate.parameterName); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0; + } + } + var related = isRelatedTo(sourcePredicate.predicate.type, targetPredicate.predicate.type, reportErrors, headMessage); + if (related === 0 && reportErrors) { + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return related; + } + return -1; + } if (source.flags & 1048576) { if (hasExcessProperties(source, target, reportErrors)) { if (reportErrors) { @@ -14977,9 +15405,6 @@ var ts; } return objectTypeRelatedTo(source, source, target, false); } - if (source.flags & 512 && target.flags & 512) { - return typeParameterIdenticalTo(source, target); - } if (source.flags & 16384 && target.flags & 16384 || source.flags & 32768 && target.flags & 32768) { if (result = eachTypeRelatedToSomeType(source, target)) { @@ -15088,8 +15513,9 @@ var ts; if (sources.length !== targets.length && relation === identityRelation) { return 0; } + var length = sources.length <= targets.length ? sources.length : targets.length; var result = -1; - for (var i = 0; i < targets.length; i++) { + for (var i = 0; i < length; i++) { var related = isRelatedTo(sources[i], targets[i], reportErrors); if (!related) { return 0; @@ -15098,23 +15524,17 @@ var ts; } return result; } - function typeParameterIdenticalTo(source, target) { - if (source.constraint === target.constraint) { - return -1; - } - if (source.constraint === noConstraintType || target.constraint === noConstraintType) { - return 0; - } - return isIdenticalTo(source.constraint, target.constraint); - } - function objectTypeRelatedTo(apparentSource, originalSource, target, reportErrors) { + function objectTypeRelatedTo(source, originalSource, target, reportErrors) { if (overflow) { return 0; } - var id = relation !== identityRelation || apparentSource.id < target.id ? apparentSource.id + "," + target.id : target.id + "," + apparentSource.id; + var id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; var related = relation[id]; if (related !== undefined) { - if (!elaborateErrors || (related === 3)) { + if (elaborateErrors && related === 2) { + relation[id] = 3; + } + else { return related === 1 ? -1 : 0; } } @@ -15135,13 +15555,13 @@ var ts; maybeStack = []; expandingFlags = 0; } - sourceStack[depth] = apparentSource; + sourceStack[depth] = source; targetStack[depth] = target; maybeStack[depth] = {}; maybeStack[depth][id] = 1; depth++; var saveExpandingFlags = expandingFlags; - if (!(expandingFlags & 1) && isDeeplyNestedGeneric(apparentSource, sourceStack, depth)) + if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack, depth)) expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack, depth)) expandingFlags |= 2; @@ -15150,15 +15570,15 @@ var ts; result = 1; } else { - result = propertiesRelatedTo(apparentSource, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 0, reportErrors); + result &= signaturesRelatedTo(source, target, 0, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 1, reportErrors); + result &= signaturesRelatedTo(source, target, 1, 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); } } } @@ -15280,61 +15700,38 @@ var ts; } var sourceSignatures = getSignaturesOfType(source, kind); var targetSignatures = getSignaturesOfType(target, kind); + if (kind === 1 && sourceSignatures.length && targetSignatures.length && + isAbstractConstructorType(source) && !isAbstractConstructorType(target)) { + if (reportErrors) { + reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); + } + return 0; + } var result = -1; var saveErrorInfo = errorInfo; - if (kind === 1) { - var sourceSig = sourceSignatures[0]; - var targetSig = targetSignatures[0]; - result &= abstractSignatureRelatedTo(source, sourceSig, target, targetSig); - if (result !== -1) { - return result; - } - } outer: for (var _i = 0, targetSignatures_1 = targetSignatures; _i < targetSignatures_1.length; _i++) { var t = targetSignatures_1[_i]; if (!t.hasStringLiterals || target.flags & 262144) { - var localErrors = reportErrors; - var checkedAbstractAssignability = false; + var shouldElaborateErrors = reportErrors; for (var _a = 0, sourceSignatures_1 = sourceSignatures; _a < sourceSignatures_1.length; _a++) { var s = sourceSignatures_1[_a]; if (!s.hasStringLiterals || source.flags & 262144) { - var related = signatureRelatedTo(s, t, localErrors); + var related = signatureRelatedTo(s, t, shouldElaborateErrors); if (related) { result &= related; errorInfo = saveErrorInfo; continue outer; } - localErrors = false; + shouldElaborateErrors = false; } } + if (shouldElaborateErrors && !isPrimitiveApparentType(source)) { + reportError(ts.Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, undefined, undefined, kind)); + } return 0; } } return result; - function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { - if (sourceSig && targetSig) { - var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); - var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); - if (!sourceDecl) { - return -1; - } - var sourceErasedSignature = getErasedSignature(sourceSig); - var targetErasedSignature = getErasedSignature(targetSig); - var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); - var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); - var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 128; - var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 128; - if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { - if (reportErrors) { - reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); - } - return 0; - } - } - return -1; - } } function signatureRelatedTo(source, target, reportErrors) { if (source === target) { @@ -15382,37 +15779,19 @@ var ts; } result &= related; } - if (source.typePredicate && target.typePredicate) { - var hasDifferentParameterIndex = source.typePredicate.parameterIndex !== target.typePredicate.parameterIndex; - var hasDifferentTypes; - if (hasDifferentParameterIndex || - (hasDifferentTypes = !isTypeIdenticalTo(source.typePredicate.type, target.typePredicate.type))) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return result; + } + var sourceReturnType = getReturnTypeOfSignature(source); + if (targetReturnType.flags & 134217728 && targetReturnType.predicate.kind === 1) { + if (!(sourceReturnType.flags & 134217728)) { if (reportErrors) { - var sourceParamText = source.typePredicate.parameterName; - var targetParamText = target.typePredicate.parameterName; - var sourceTypeText = typeToString(source.typePredicate.type); - var targetTypeText = typeToString(target.typePredicate.type); - if (hasDifferentParameterIndex) { - reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceParamText, targetParamText); - } - else if (hasDifferentTypes) { - reportError(ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceTypeText, targetTypeText); - } - reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, sourceParamText + " is " + sourceTypeText, targetParamText + " is " + targetTypeText); + reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); } return 0; } } - else if (!source.typePredicate && target.typePredicate) { - if (reportErrors) { - reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); - } - return 0; - } - var targetReturnType = getReturnTypeOfSignature(target); - if (targetReturnType === voidType) - return result; - var sourceReturnType = getReturnTypeOfSignature(source); return result & isRelatedTo(sourceReturnType, targetReturnType, reportErrors); } function signaturesIdenticalTo(source, target, kind) { @@ -15422,8 +15801,8 @@ var ts; return 0; } var result = -1; - for (var i = 0, len = sourceSignatures.length; i < len; ++i) { - var related = compareSignatures(sourceSignatures[i], targetSignatures[i], false, false, isRelatedTo); + for (var i = 0, len = sourceSignatures.length; i < len; i++) { + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], false, false, isRelatedTo); if (!related) { return 0; } @@ -15503,6 +15882,37 @@ var ts; } return 0; } + function enumRelatedTo(source, target) { + if (source.symbol.name !== target.symbol.name || + source.symbol.flags & 128 || + target.symbol.flags & 128) { + return 0; + } + var targetEnumType = getTypeOfSymbol(target.symbol); + for (var _i = 0, _a = getPropertiesOfType(getTypeOfSymbol(source.symbol)); _i < _a.length; _i++) { + var property = _a[_i]; + if (property.flags & 8) { + var targetProperty = getPropertyOfType(targetEnumType, property.name); + if (!targetProperty || !(targetProperty.flags & 8)) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, undefined, 128)); + return 0; + } + } + } + return -1; + } + } + function isAbstractConstructorType(type) { + if (type.flags & 65536) { + var symbol = type.symbol; + if (symbol && symbol.flags & 32) { + var declaration = getClassLikeDeclarationOfSymbol(symbol); + if (declaration && declaration.flags & 128) { + return true; + } + } + } + return false; } function isDeeplyNestedGeneric(type, stack, depth) { if (type.flags & (4096 | 131072) && depth >= 5) { @@ -15520,7 +15930,7 @@ var ts; return false; } function isPropertyIdenticalTo(sourceProp, targetProp) { - return compareProperties(sourceProp, targetProp, compareTypes) !== 0; + return compareProperties(sourceProp, targetProp, compareTypesIdentical) !== 0; } function compareProperties(sourceProp, targetProp, compareTypes) { if (sourceProp === targetProp) { @@ -15555,31 +15965,19 @@ var ts; } return false; } - function compareSignatures(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { if (source === target) { return -1; } if (!(isMatchingSignature(source, target, partialMatch))) { return 0; } - var result = -1; - if (source.typeParameters && target.typeParameters) { - if (source.typeParameters.length !== target.typeParameters.length) { - return 0; - } - for (var i = 0, len = source.typeParameters.length; i < len; ++i) { - var related = compareTypes(source.typeParameters[i], target.typeParameters[i]); - if (!related) { - return 0; - } - result &= related; - } - } - else if (source.typeParameters || target.typeParameters) { + if ((source.typeParameters ? source.typeParameters.length : 0) !== (target.typeParameters ? target.typeParameters.length : 0)) { return 0; } source = getErasedSignature(source); target = getErasedSignature(target); + var result = -1; var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); @@ -15696,10 +16094,13 @@ var ts; return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexType, numberIndexType); } function getWidenedType(type) { - if (type.flags & 6291456) { + if (type.flags & 140509184) { if (type.flags & (32 | 64)) { return anyType; } + if (type.flags & 134217728) { + return booleanType; + } if (type.flags & 524288) { return getWidenedTypeOfObjectLiteral(type); } @@ -15763,13 +16164,13 @@ var ts; ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 213: + case 215: case 143: case 142: case 145: case 146: - case 173: - case 174: + case 175: + case 176: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -15815,13 +16216,7 @@ var ts; } } function createInferenceContext(typeParameters, inferUnionTypes) { - var inferences = []; - for (var _i = 0, typeParameters_1 = typeParameters; _i < typeParameters_1.length; _i++) { - var unused = typeParameters_1[_i]; - inferences.push({ - primary: undefined, secondary: undefined, isFixed: false - }); - } + var inferences = ts.map(typeParameters, createTypeInferencesObject); return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, @@ -15829,6 +16224,13 @@ var ts; inferredTypes: new Array(typeParameters.length) }; } + function createTypeInferencesObject() { + return { + primary: undefined, + secondary: undefined, + isFixed: false + }; + } function inferTypes(context, source, target) { var sourceStack; var targetStack; @@ -15844,6 +16246,21 @@ var ts; return false; } function inferFromTypes(source, target) { + if (source.flags & 16384 && target.flags & 16384 || + source.flags & 32768 && target.flags & 32768) { + var matchingTypes; + for (var _i = 0, _a = target.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (typeIdenticalToSomeType(t, source.types)) { + (matchingTypes || (matchingTypes = [])).push(t); + inferFromTypes(t, t); + } + } + if (matchingTypes) { + source = removeTypesFromUnionOrIntersection(source, matchingTypes); + target = removeTypesFromUnionOrIntersection(target, matchingTypes); + } + } if (target.flags & 512) { if (source.flags & 8388608) { return; @@ -15872,6 +16289,11 @@ var ts; inferFromTypes(sourceTypes[i], targetTypes[i]); } } + else if (source.flags & 134217728 && target.flags & 134217728) { + if (source.predicate.kind === target.predicate.kind) { + inferFromTypes(source.predicate.type, target.predicate.type); + } + } else if (source.flags & 8192 && target.flags & 8192 && source.elementTypes.length === target.elementTypes.length) { var sourceTypes = source.elementTypes; var targetTypes = target.elementTypes; @@ -15883,8 +16305,8 @@ var ts; var targetTypes = target.types; var typeParameterCount = 0; var typeParameter; - for (var _i = 0, targetTypes_2 = targetTypes; _i < targetTypes_2.length; _i++) { - var t = targetTypes_2[_i]; + for (var _b = 0, targetTypes_2 = targetTypes; _b < targetTypes_2.length; _b++) { + var t = targetTypes_2[_b]; if (t.flags & 512 && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -15901,15 +16323,16 @@ var ts; } else if (source.flags & 49152) { var sourceTypes = source.types; - for (var _a = 0, sourceTypes_3 = sourceTypes; _a < sourceTypes_3.length; _a++) { - var sourceType = sourceTypes_3[_a]; + for (var _c = 0, sourceTypes_3 = sourceTypes; _c < sourceTypes_3.length; _c++) { + var sourceType = sourceTypes_3[_c]; inferFromTypes(sourceType, target); } } else { source = getApparentType(source); - if (source.flags & 80896 && (target.flags & (4096 | 8192) || - (target.flags & 65536) && target.symbol && target.symbol.flags & (8192 | 2048 | 32))) { + if (source.flags & 80896 && (target.flags & 4096 && target.typeArguments || + target.flags & 8192 || + target.flags & 65536 && target.symbol && target.symbol.flags & (8192 | 2048 | 32))) { if (isInProcess(source, target)) { return; } @@ -15955,14 +16378,7 @@ var ts; } function inferFromSignature(source, target) { forEachMatchingParameterType(source, target, inferFromTypes); - if (source.typePredicate && target.typePredicate) { - if (target.typePredicate.parameterIndex === source.typePredicate.parameterIndex) { - inferFromTypes(source.typePredicate.type, target.typePredicate.type); - } - } - else { - inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); - } + inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); } function inferFromIndexTypes(source, target, sourceKind, targetKind) { var targetIndexType = getIndexTypeOfType(target, targetKind); @@ -15974,6 +16390,25 @@ var ts; } } } + function typeIdenticalToSomeType(type, types) { + for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { + var t = types_7[_i]; + if (isTypeIdenticalTo(t, type)) { + return true; + } + } + return false; + } + function removeTypesFromUnionOrIntersection(type, typesToRemove) { + var reducedTypes = []; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!typeIdenticalToSomeType(t, typesToRemove)) { + reducedTypes.push(t); + } + } + return type.flags & 16384 ? getUnionType(reducedTypes, true) : getIntersectionType(reducedTypes); + } function getInferenceCandidates(context, index) { var inferences = context.inferences[index]; return inferences.primary || inferences.secondary || emptyArray; @@ -15992,14 +16427,19 @@ var ts; inferredType = emptyObjectType; inferenceSucceeded = true; } + context.inferredTypes[index] = inferredType; if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); - inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; + if (constraint) { + var instantiatedConstraint = instantiateType(constraint, getInferenceMapper(context)); + if (!isTypeAssignableTo(inferredType, getTypeWithThisArgument(instantiatedConstraint, inferredType))) { + context.inferredTypes[index] = inferredType = instantiatedConstraint; + } + } } else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { context.failedTypeParameterIndex = index; } - context.inferredTypes[index] = inferredType; } return inferredType; } @@ -16009,9 +16449,6 @@ var ts; } return context.inferredTypes; } - function hasAncestor(node, kind) { - return ts.getAncestor(node, kind) !== undefined; - } function getResolvedSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { @@ -16034,21 +16471,6 @@ var ts; } ts.Debug.fail("should not get here"); } - function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { - if (type.flags & 16384) { - var types = type.types; - if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { - var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { - return narrowedType; - } - } - } - else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { - return getUnionType(emptyArray); - } - return type; - } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } @@ -16066,10 +16488,7 @@ var ts; return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { if (node.operatorToken.kind >= 56 && node.operatorToken.kind <= 68) { - var n = node.left; - while (n.kind === 172) { - n = n.expression; - } + var n = skipParenthesizedNodes(node.left); if (n.kind === 69 && getResolvedSymbol(n) === symbol) { return true; } @@ -16084,55 +16503,55 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 181: + case 183: return isAssignedInBinaryExpression(node); - case 211: - case 163: - return isAssignedInVariableDeclaration(node); - case 161: - case 162: - case 164: + case 213: case 165: + return isAssignedInVariableDeclaration(node); + case 163: + case 164: case 166: case 167: case 168: case 169: + case 170: case 171: - case 189: - case 172: - case 179: - case 175: - case 178: - case 176: + case 173: + case 191: + case 174: + case 181: case 177: case 180: - case 184: + case 178: + case 179: case 182: - case 185: - case 192: - case 193: + case 186: + case 184: + case 187: + case 194: case 195: - case 196: case 197: case 198: case 199: case 200: case 201: - case 204: - case 205: + case 202: + case 203: case 206: - case 241: - case 242: case 207: case 208: - case 209: + case 243: case 244: - case 233: - case 234: - case 238: - case 239: + case 209: + case 210: + case 211: + case 246: case 235: + case 236: case 240: + case 241: + case 237: + case 242: return ts.forEachChild(node, isAssignedIn); } return false; @@ -16142,53 +16561,66 @@ var ts; var type = getTypeOfSymbol(symbol); if (node && symbol.flags & 3) { if (isTypeAny(type) || type.flags & (80896 | 16384 | 512)) { + var declaration = ts.getDeclarationOfKind(symbol, 213); + var top_1 = declaration && getDeclarationContainer(declaration); + var originalType = type; + var nodeStack = []; loop: while (node.parent) { var child = node; node = node.parent; - var narrowedType = type; switch (node.kind) { - case 196: - if (child !== node.expression) { - narrowedType = narrowType(type, node.expression, child === node.thenStatement); - } + case 198: + case 184: + case 183: + nodeStack.push({ node: node, child: child }); break; - case 182: - if (child !== node.condition) { - narrowedType = narrowType(type, node.condition, child === node.whenTrue); - } - break; - case 181: - if (child === node.right) { - if (node.operatorToken.kind === 51) { - narrowedType = narrowType(type, node.left, true); - } - else if (node.operatorToken.kind === 52) { - narrowedType = narrowType(type, node.left, false); - } - } - break; - case 248: - case 218: - case 213: - case 143: - case 142: - case 145: - case 146: - case 144: + case 250: + case 220: break loop; } - if (narrowedType !== type) { - if (isVariableAssignedWithin(symbol, node)) { - break; - } - type = narrowedType; + if (node === top_1) { + break; } } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 198: + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, child === node_1.thenStatement); + } + break; + case 184: + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, child === node_1.whenTrue); + } + break; + case 183: + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51) { + type = narrowType(type, node_1.left, true); + } + else if (node_1.operatorToken.kind === 52) { + type = narrowType(type, node_1.left, false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { + type = originalType; + } + } + if (type === emptyUnionType) { + type = originalType; + } } } return type; function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 176 || expr.right.kind !== 9) { + if (expr.left.kind !== 178 || expr.right.kind !== 9) { return type; } var left = expr.left; @@ -16196,24 +16628,30 @@ var ts; if (left.expression.kind !== 69 || getResolvedSymbol(left.expression) !== symbol) { return type; } - var typeInfo = primitiveTypeInfo[right.text]; if (expr.operatorToken.kind === 33) { assumeTrue = !assumeTrue; } - if (assumeTrue) { - if (!typeInfo) { - return removeTypesFromUnionType(type, 258 | 132 | 8 | 16777216, true, false); - } - if (isTypeSubtypeOf(typeInfo.type, type)) { - return typeInfo.type; - } - return removeTypesFromUnionType(type, typeInfo.flags, false, false); + var typeInfo = primitiveTypeInfo[right.text]; + if (typeInfo && typeInfo.type === undefinedType) { + return type; + } + if (!!(type.flags & 1) && typeInfo && assumeTrue) { + return typeInfo.type; + } + var flags; + if (typeInfo) { + flags = typeInfo.flags; } else { - if (typeInfo) { - return removeTypesFromUnionType(type, typeInfo.flags, true, false); - } - return type; + assumeTrue = !assumeTrue; + flags = 132 | 258 | 16777216 | 8; + } + if (!(type.flags & 16384)) { + return filterUnion(type) ? type : emptyUnionType; + } + return getUnionType(ts.filter(type.types, filterUnion), true); + function filterUnion(type) { + return assumeTrue === !!(type.flags & flags); } } function narrowTypeByAnd(type, expr, assumeTrue) { @@ -16223,7 +16661,7 @@ var ts; else { return getUnionType([ narrowType(type, expr.left, false), - narrowType(narrowType(type, expr.left, true), expr.right, false) + narrowType(type, expr.right, false) ]); } } @@ -16231,7 +16669,7 @@ var ts; if (assumeTrue) { return getUnionType([ narrowType(type, expr.left, true), - narrowType(narrowType(type, expr.left, false), expr.right, true) + narrowType(type, expr.right, true) ]); } else { @@ -16267,17 +16705,17 @@ var ts; } } if (targetType) { - if (!assumeTrue) { - if (type.flags & 16384) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, targetType); })); - } - return type; - } - return getNarrowedType(type, targetType); + return getNarrowedType(type, targetType, assumeTrue); } return type; } - function getNarrowedType(originalType, narrowedTypeCandidate) { + function getNarrowedType(originalType, narrowedTypeCandidate, assumeTrue) { + if (!assumeTrue) { + if (originalType.flags & 16384) { + return getUnionType(ts.filter(originalType.types, function (t) { return !isTypeSubtypeOf(t, narrowedTypeCandidate); })); + } + return originalType; + } if (originalType.flags & 16384) { var assignableConstituents = ts.filter(originalType.types, function (t) { return isTypeAssignableTo(t, narrowedTypeCandidate); }); if (assignableConstituents.length) { @@ -16294,26 +16732,60 @@ var ts; return type; } var signature = getResolvedSignature(expr); - if (signature.typePredicate && - expr.arguments[signature.typePredicate.parameterIndex] && - getSymbolAtLocation(expr.arguments[signature.typePredicate.parameterIndex]) === symbol) { - if (!assumeTrue) { - if (type.flags & 16384) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, signature.typePredicate.type); })); - } - return type; + var predicateType = getReturnTypeOfSignature(signature); + if (!predicateType || !(predicateType.flags & 134217728)) { + return type; + } + var predicate = predicateType.predicate; + if (ts.isIdentifierTypePredicate(predicate)) { + var callExpression = expr; + if (callExpression.arguments[predicate.parameterIndex] && + getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); } - return getNarrowedType(type, signature.typePredicate.type); + } + else { + var expression = skipParenthesizedNodes(expr.expression); + return narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue); } return type; } + function narrowTypeByTypePredicateMember(type, expr, assumeTrue) { + if (type.flags & 1) { + return type; + } + var memberType = getTypeOfExpression(expr); + if (!(memberType.flags & 134217728)) { + return type; + } + return narrowTypeByThisTypePredicate(type, memberType.predicate, expr, assumeTrue); + } + function narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue) { + if (expression.kind === 169 || expression.kind === 168) { + var accessExpression = expression; + var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); + if (possibleIdentifier.kind === 69 && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + } + return type; + } + function getSymbolAtTypePredicatePosition(expr) { + expr = skipParenthesizedNodes(expr); + switch (expr.kind) { + case 69: + case 168: + case 135: + return getSymbolOfEntityNameOrPropertyAccessExpression(expr); + } + } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 168: + case 170: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 172: + case 174: return narrowType(type, expr.expression, assumeTrue); - case 181: + case 183: var operator = expr.operatorToken.kind; if (operator === 32 || operator === 33) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -16328,20 +16800,29 @@ var ts; return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 179: + case 181: if (expr.operator === 49) { return narrowType(type, expr.operand, !assumeTrue); } break; + case 169: + case 168: + return narrowTypeByTypePredicateMember(type, expr, assumeTrue); } return type; } } + function skipParenthesizedNodes(expression) { + while (expression.kind === 174) { + expression = expression.expression; + } + return expression; + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 174) { + if (container.kind === 176) { if (languageVersion < 2) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -16372,7 +16853,7 @@ var ts; function checkBlockScopedBindingCapturedInLoop(node, symbol) { if (languageVersion >= 2 || (symbol.flags & (2 | 32)) === 0 || - symbol.valueDeclaration.parent.kind === 244) { + symbol.valueDeclaration.parent.kind === 246) { return; } var container; @@ -16381,11 +16862,11 @@ var ts; } else { container = symbol.valueDeclaration; - while (container.kind !== 212) { + while (container.kind !== 214) { container = container.parent; } container = container.parent; - if (container.kind === 193) { + if (container.kind === 195) { container = container.parent; } } @@ -16415,15 +16896,15 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 174) { + if (container.kind === 176) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 218: + case 220: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); break; - case 217: + case 219: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; case 144: @@ -16448,6 +16929,18 @@ var ts; var symbol = getSymbolOfNode(container.parent); return container.flags & 64 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; } + if (ts.isInJavaScriptFile(node) && container.kind === 175) { + if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3) { + var className = container.parent + .left + .expression + .expression; + var classSymbol = checkExpression(className).symbol; + if (classSymbol && classSymbol.members && (classSymbol.flags & 16)) { + return getInferredClassType(classSymbol); + } + } + } return anyType; } function isInConstructorArgumentInitializer(node, constructorDecl) { @@ -16459,50 +16952,64 @@ var ts; return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 168 && node.parent.expression === node; - var classDeclaration = ts.getContainingClass(node); - var classType = classDeclaration && getDeclaredTypeOfSymbol(getSymbolOfNode(classDeclaration)); - var baseClassType = classType && getBaseTypes(classType)[0]; + var isCallExpression = node.parent.kind === 170 && node.parent.expression === node; var container = ts.getSuperContainer(node, true); var needToCaptureLexicalThis = false; if (!isCallExpression) { - while (container && container.kind === 174) { + while (container && container.kind === 176) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = languageVersion < 2; } } var canUseSuperExpression = isLegalUsageOfSuperExpression(container); var nodeCheckFlag = 0; - if (canUseSuperExpression) { - if ((container.flags & 64) || isCallExpression) { - nodeCheckFlag = 512; - } - else { - nodeCheckFlag = 256; - } - getNodeLinks(node).flags |= nodeCheckFlag; - if (needToCaptureLexicalThis) { - captureLexicalThis(node.parent, container); - } - } - if (!baseClassType) { - if (!classDeclaration || !ts.getClassExtendsHeritageClauseElement(classDeclaration)) { - error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); - } - return unknownType; - } if (!canUseSuperExpression) { - if (container && container.kind === 136) { + var current = node; + while (current && current !== container && current.kind !== 136) { + current = current.parent; + } + if (current && current.kind === 136) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 167)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); + } else { error(node, ts.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class); } return unknownType; } + if ((container.flags & 64) || isCallExpression) { + nodeCheckFlag = 512; + } + else { + nodeCheckFlag = 256; + } + getNodeLinks(node).flags |= nodeCheckFlag; + if (needToCaptureLexicalThis) { + captureLexicalThis(node.parent, container); + } + if (container.parent.kind === 167) { + if (languageVersion < 2) { + error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); + return unknownType; + } + else { + return anyType; + } + } + var classLikeDeclaration = container.parent; + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(classLikeDeclaration)); + var baseClassType = classType && getBaseTypes(classType)[0]; + if (!baseClassType) { + if (!ts.getClassExtendsHeritageClauseElement(classLikeDeclaration)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); + } + return unknownType; + } if (container.kind === 144 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; @@ -16518,7 +17025,7 @@ var ts; return container.kind === 144; } else { - if (container && ts.isClassLike(container.parent)) { + if (ts.isClassLike(container.parent) || container.parent.kind === 167) { if (container.flags & 64) { return container.kind === 143 || container.kind === 142 || @@ -16629,7 +17136,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 170) { + if (template.parent.kind === 172) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -16649,6 +17156,11 @@ var ts; } return type; } + else if (operator === 51 || operator === 24) { + if (node === binaryExpression.right) { + return getContextualType(binaryExpression); + } + } return undefined; } function applyToContextualType(type, mapper) { @@ -16658,8 +17170,8 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { - var current = types_7[_i]; + for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { + var current = types_8[_i]; var t = mapper(current); if (t) { if (!mappedType) { @@ -16731,21 +17243,20 @@ var ts; var conditional = node.parent; return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; } - function getContextualTypeForJsxExpression(expr) { - if (expr.parent.kind === 238) { - var attrib = expr.parent; - var attrsType = getJsxElementAttributesType(attrib.parent); + function getContextualTypeForJsxAttribute(attribute) { + var kind = attribute.kind; + var jsxElement = attribute.parent; + var attrsType = getJsxElementAttributesType(jsxElement); + if (attribute.kind === 240) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } - else { - return getTypeOfPropertyOfType(attrsType, attrib.name.text); - } + return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - if (expr.kind === 239) { - return getJsxElementAttributesType(expr.parent); + else if (attribute.kind === 241) { + return attrsType; } - return undefined; + ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); } function getApparentTypeOfContextualType(node) { var type = getContextualType(node); @@ -16760,39 +17271,41 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 211: + case 213: case 138: case 141: case 140: - case 163: + case 165: return getContextualTypeForInitializerExpression(node); - case 174: - case 204: + case 176: + case 206: return getContextualTypeForReturnExpression(node); - case 184: + case 186: return getContextualTypeForYieldOperand(parent); - case 168: - case 169: - return getContextualTypeForArgument(parent, node); + case 170: case 171: - case 189: + return getContextualTypeForArgument(parent, node); + case 173: + case 191: return getTypeFromTypeNode(parent.type); - case 181: + case 183: return getContextualTypeForBinaryOperand(node); - case 245: + case 247: return getContextualTypeForObjectLiteralElement(parent); - case 164: + case 166: return getContextualTypeForElementExpression(node); - case 182: + case 184: return getContextualTypeForConditionalOperand(node); - case 190: - ts.Debug.assert(parent.parent.kind === 183); + case 192: + ts.Debug.assert(parent.parent.kind === 185); return getContextualTypeForSubstitutionExpression(parent.parent, node); - case 172: + case 174: + return getContextualType(parent); + case 242: return getContextualType(parent); case 240: - case 239: - return getContextualTypeForJsxExpression(parent); + case 241: + return getContextualTypeForJsxAttribute(parent); } return undefined; } @@ -16806,7 +17319,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 173 || node.kind === 174; + return node.kind === 175 || node.kind === 176; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) || ts.isObjectLiteralMethod(node) @@ -16826,14 +17339,14 @@ var ts; } var signatureList; var types = type.types; - for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { - var current = types_8[_i]; + for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { + var current = types_9[_i]; var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { signatureList = [signature]; } - else if (!compareSignatures(signatureList[0], signature, false, true, compareTypes)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, false, true, compareTypesIdentical)) { return undefined; } else { @@ -16854,13 +17367,13 @@ var ts; } function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 181 && parent.operatorToken.kind === 56 && parent.left === node) { + if (parent.kind === 183 && parent.operatorToken.kind === 56 && parent.left === node) { return true; } - if (parent.kind === 245) { + if (parent.kind === 247) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 164) { + if (parent.kind === 166) { return isAssignmentTarget(parent); } return false; @@ -16870,8 +17383,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, false); } function hasDefaultValue(node) { - return (node.kind === 163 && !!node.initializer) || - (node.kind === 181 && node.operatorToken.kind === 56); + return (node.kind === 165 && !!node.initializer) || + (node.kind === 183 && node.operatorToken.kind === 56); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -16880,7 +17393,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 185) { + if (inDestructuringPattern && e.kind === 187) { var restArrayType = checkExpression(e.expression, contextualMapper); var restElementType = getIndexTypeOfType(restArrayType, 1) || (languageVersion >= 2 ? getElementTypeOfIterable(restArrayType, undefined) : undefined); @@ -16892,7 +17405,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 185; + hasSpreadElement = hasSpreadElement || e.kind === 187; } if (!hasSpreadElement) { if (inDestructuringPattern && elementTypes.length) { @@ -16903,7 +17416,7 @@ var ts; var contextualType = getApparentTypeOfContextualType(node); if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { var pattern = contextualType.pattern; - if (pattern && (pattern.kind === 162 || pattern.kind === 164)) { + if (pattern && (pattern.kind === 164 || pattern.kind === 166)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -16911,7 +17424,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 187) { + if (patternElement.kind !== 189) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -16957,31 +17470,31 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 161 || contextualType.pattern.kind === 165); + (contextualType.pattern.kind === 163 || contextualType.pattern.kind === 167); var typeFlags = 0; var patternWithComputedProperties = false; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 245 || - memberDecl.kind === 246 || + if (memberDecl.kind === 247 || + memberDecl.kind === 248 || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 245) { + if (memberDecl.kind === 247) { type = checkPropertyAssignment(memberDecl, contextualMapper); } else if (memberDecl.kind === 143) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 246); + ts.Debug.assert(memberDecl.kind === 248); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); if (inDestructuringPattern) { - var isOptional = (memberDecl.kind === 245 && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 246 && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 247 && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 248 && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912; } @@ -17060,34 +17573,19 @@ var ts; checkJsxOpeningLikeElement(node); return jsxElementType || anyType; } - function tagNamesAreEquivalent(lhs, rhs) { - if (lhs.kind !== rhs.kind) { - return false; - } - if (lhs.kind === 69) { - return lhs.text === rhs.text; - } - return lhs.right.text === rhs.right.text && - tagNamesAreEquivalent(lhs.left, rhs.left); - } function checkJsxElement(node) { checkJsxOpeningLikeElement(node.openingElement); - if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { - error(node.closingElement, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNode(node.openingElement.tagName)); - } - else { - getJsxElementTagSymbol(node.closingElement); - } + getJsxElementTagSymbol(node.closingElement); for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 240: + case 242: checkJsxExpression(child); break; - case 233: + case 235: checkJsxElement(child); break; - case 234: + case 236: checkJsxSelfClosingElement(child); break; } @@ -17155,14 +17653,13 @@ var ts; } return type; } - function getJsxIntrinsicElementsType() { - if (!jsxIntrinsicElementsType) { - jsxIntrinsicElementsType = getExportedTypeFromNamespace(JsxNames.JSX, JsxNames.IntrinsicElements) || unknownType; + function getJsxType(name) { + if (jsxTypes[name] === undefined) { + return jsxTypes[name] = getExportedTypeFromNamespace(JsxNames.JSX, name) || unknownType; } - return jsxIntrinsicElementsType; + return jsxTypes[name]; } function getJsxElementTagSymbol(node) { - var flags = 8; var links = getNodeLinks(node); if (!links.resolvedSymbol) { if (isJsxIntrinsicIdentifier(node.tagName)) { @@ -17174,7 +17671,7 @@ var ts; } return links.resolvedSymbol; function lookupIntrinsicTag(node) { - var intrinsicElementsType = getJsxIntrinsicElementsType(); + var intrinsicElementsType = getJsxType(JsxNames.IntrinsicElements); if (intrinsicElementsType !== unknownType) { var intrinsicProp = getPropertyOfType(intrinsicElementsType, node.tagName.text); if (intrinsicProp) { @@ -17234,12 +17731,7 @@ var ts; return unknownType; } } - var returnType = getUnionType(signatures.map(getReturnTypeOfSignature)); - var elemClassType = getJsxGlobalElementClassType(); - if (elemClassType) { - checkTypeRelatedTo(returnType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); - } - return returnType; + return getUnionType(signatures.map(getReturnTypeOfSignature)); } function getJsxElementPropertiesName() { var jsxNamespace = getGlobalSymbol(JsxNames.JSX, 1536, undefined); @@ -17268,6 +17760,20 @@ var ts; var sym = getJsxElementTagSymbol(node); if (links.jsxFlags & 4) { var elemInstanceType = getJsxElementInstanceType(node); + var callSignature = getSingleCallSignature(getTypeOfSymbol(sym)); + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType) && (paramType.flags & 80896)) { + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return paramType; + } + var elemClassType = getJsxGlobalElementClassType(); + if (elemClassType) { + checkTypeRelatedTo(elemInstanceType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); + } if (isTypeAny(elemInstanceType)) { return links.resolvedJsxType = elemInstanceType; } @@ -17286,12 +17792,29 @@ var ts; else if (isTypeAny(attributesType) || (attributesType === unknownType)) { return links.resolvedJsxType = attributesType; } - else if (!(attributesType.flags & 80896)) { - error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_must_be_an_object_type, typeToString(attributesType)); + else if (attributesType.flags & 16384) { + error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_may_not_be_a_union_type, typeToString(attributesType)); return links.resolvedJsxType = anyType; } else { - return links.resolvedJsxType = attributesType; + var apparentAttributesType = attributesType; + var intrinsicClassAttribs = getJsxType(JsxNames.IntrinsicClassAttributes); + if (intrinsicClassAttribs !== unknownType) { + var typeParams = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(intrinsicClassAttribs.symbol); + if (typeParams) { + if (typeParams.length === 1) { + apparentAttributesType = intersectTypes(createTypeReference(intrinsicClassAttribs, [elemInstanceType]), apparentAttributesType); + } + } + else { + apparentAttributesType = intersectTypes(attributesType, intrinsicClassAttribs); + } + } + var intrinsicAttribs = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttribs !== unknownType) { + apparentAttributesType = intersectTypes(intrinsicAttribs, apparentAttributesType); + } + return links.resolvedJsxType = apparentAttributesType; } } } @@ -17319,7 +17842,7 @@ var ts; return jsxElementClassType; } function getJsxIntrinsicTagNames() { - var intrinsics = getJsxIntrinsicElementsType(); + var intrinsics = getJsxType(JsxNames.IntrinsicElements); return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray; } function checkJsxPreconditions(errorNode) { @@ -17335,21 +17858,21 @@ var ts; function checkJsxOpeningLikeElement(node) { checkGrammarJsxElement(node); checkJsxPreconditions(node); - if (compilerOptions.jsx === 2) { - var reactSym = resolveName(node.tagName, "React", 107455, ts.Diagnostics.Cannot_find_name_0, "React"); - if (reactSym) { - getSymbolLinks(reactSym).referenced = true; - } + var reactRefErr = compilerOptions.jsx === 2 ? ts.Diagnostics.Cannot_find_name_0 : undefined; + var reactNamespace = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; + var reactSym = resolveName(node.tagName, reactNamespace, 107455, reactRefErr, reactNamespace); + if (reactSym) { + getSymbolLinks(reactSym).referenced = true; } var targetAttributesType = getJsxElementAttributesType(node); var nameTable = {}; var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 238) { + if (node.attributes[i].kind === 240) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 239); + ts.Debug.assert(node.attributes[i].kind === 241); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -17384,10 +17907,10 @@ var ts; var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (left.kind === 95) { - var errorNode = node.kind === 166 ? + var errorNode = node.kind === 168 ? node.name : node.right; - if (getDeclarationKindFromSymbol(prop) !== 143) { + if (languageVersion < 2 && getDeclarationKindFromSymbol(prop) !== 143) { error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); return false; } @@ -17456,7 +17979,7 @@ var ts; return getTypeOfSymbol(prop); } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 166 + var left = node.kind === 168 ? node.expression : node.left; var type = checkExpression(left); @@ -17471,7 +17994,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 169 && node.parent.expression === node) { + if (node.parent.kind === 171 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -17530,7 +18053,7 @@ var ts; if (indexArgumentExpression.kind === 9 || indexArgumentExpression.kind === 8) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 167 || indexArgumentExpression.kind === 166) { + if (indexArgumentExpression.kind === 169 || indexArgumentExpression.kind === 168) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -17573,7 +18096,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 170) { + if (node.kind === 172) { checkExpression(node.template); } else if (node.kind !== 139) { @@ -17627,7 +18150,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 185) { + if (arg && arg.kind === 187) { return i; } } @@ -17639,11 +18162,11 @@ var ts; var callIsIncomplete; var isDecorator; var spreadArgIndex = -1; - if (node.kind === 170) { + if (node.kind === 172) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 183) { + if (tagExpression.template.kind === 185) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); @@ -17663,7 +18186,7 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 169); + ts.Debug.assert(callExpression.kind === 171); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -17704,7 +18227,7 @@ var ts; } function inferTypeArguments(node, signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var inferenceMapper = createInferenceMapper(context); + var inferenceMapper = getInferenceMapper(context); for (var i = 0; i < typeParameters.length; i++) { if (!context.inferences[i].isFixed) { context.inferredTypes[i] = undefined; @@ -17716,7 +18239,7 @@ var ts; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 187) { + if (arg === undefined || arg.kind !== 189) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { @@ -17737,13 +18260,11 @@ var ts; } getInferredTypes(context); } - function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors, headMessage) { + function checkTypeArguments(signature, typeArgumentNodes, typeArgumentTypes, reportErrors, headMessage) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; + var mapper; for (var i = 0; i < typeParameters.length; i++) { - var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); - typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { @@ -17753,7 +18274,11 @@ var ts; errorInfo = ts.chainDiagnosticMessages(errorInfo, typeArgumentHeadMessage); typeArgumentHeadMessage = headMessage; } - typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, constraint, reportErrors ? typeArgNode : undefined, typeArgumentHeadMessage, errorInfo); + if (!mapper) { + mapper = createTypeMapper(typeParameters, typeArgumentTypes); + } + var typeArgument = typeArgumentTypes[i]; + typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), reportErrors ? typeArgumentNodes[i] : undefined, typeArgumentHeadMessage, errorInfo); } } } @@ -17763,12 +18288,12 @@ var ts; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 187) { + if (arg === undefined || arg.kind !== 189) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { argType = arg.kind === 9 && !reportErrors - ? getStringLiteralType(arg) + ? getStringLiteralTypeForText(arg.text) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); } var errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; @@ -17782,10 +18307,10 @@ var ts; } function getEffectiveCallArguments(node) { var args; - if (node.kind === 170) { + if (node.kind === 172) { var template = node.template; args = [undefined]; - if (template.kind === 183) { + if (template.kind === 185) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -17802,8 +18327,8 @@ var ts; function getEffectiveArgumentCount(node, args, signature) { if (node.kind === 139) { switch (node.parent.kind) { - case 214: - case 186: + case 216: + case 188: return 1; case 141: return 2; @@ -17823,7 +18348,7 @@ var ts; } } function getEffectiveDecoratorFirstArgumentType(node) { - if (node.kind === 214) { + if (node.kind === 216) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } @@ -17844,7 +18369,7 @@ var ts; return unknownType; } function getEffectiveDecoratorSecondArgumentType(node) { - if (node.kind === 214) { + if (node.kind === 216) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } @@ -17863,7 +18388,7 @@ var ts; case 69: case 8: case 9: - return getStringLiteralType(element.name); + return getStringLiteralTypeForText(element.name.text); case 136: var nameType = checkComputedPropertyName(element.name); if (allConstituentTypesHaveKind(nameType, 16777216)) { @@ -17881,7 +18406,7 @@ var ts; return unknownType; } function getEffectiveDecoratorThirdArgumentType(node) { - if (node.kind === 214) { + if (node.kind === 216) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } @@ -17918,14 +18443,14 @@ var ts; if (node.kind === 139) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 170) { + else if (argIndex === 0 && node.kind === 172) { return globalTemplateStringsArrayType; } return undefined; } function getEffectiveArgument(node, args, argIndex) { if (node.kind === 139 || - (argIndex === 0 && node.kind === 170)) { + (argIndex === 0 && node.kind === 172)) { return undefined; } return args[argIndex]; @@ -17934,7 +18459,7 @@ var ts; if (node.kind === 139) { return node.expression; } - else if (argIndex === 0 && node.kind === 170) { + else if (argIndex === 0 && node.kind === 172) { return node.template; } else { @@ -17942,7 +18467,7 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 170; + var isTaggedTemplate = node.kind === 172; var isDecorator = node.kind === 139; var typeArguments; if (!isTaggedTemplate && !isDecorator) { @@ -17990,7 +18515,8 @@ var ts; } else if (candidateForTypeArgumentError) { if (!isTaggedTemplate && !isDecorator && typeArguments) { - checkTypeArguments(candidateForTypeArgumentError, node.typeArguments, [], true, headMessage); + var typeArguments_1 = node.typeArguments; + checkTypeArguments(candidateForTypeArgumentError, typeArguments_1, ts.map(typeArguments_1, getTypeFromTypeNode), true, headMessage); } else { ts.Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); @@ -18042,7 +18568,7 @@ var ts; if (candidate.typeParameters) { var typeArgumentTypes = void 0; if (typeArguments) { - typeArgumentTypes = new Array(candidate.typeParameters.length); + typeArgumentTypes = ts.map(typeArguments, getTypeFromTypeNode); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, false); } else { @@ -18174,8 +18700,8 @@ var ts; } function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 214: - case 186: + case 216: + case 188: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; case 138: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; @@ -18211,13 +18737,13 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 168) { + if (node.kind === 170) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 169) { + else if (node.kind === 171) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 170) { + else if (node.kind === 172) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else if (node.kind === 139) { @@ -18229,19 +18755,30 @@ var ts; } return links.resolvedSignature; } + function getInferredClassType(symbol) { + var links = getSymbolLinks(symbol); + if (!links.inferredClassType) { + links.inferredClassType = createAnonymousType(undefined, symbol.members, emptyArray, emptyArray, undefined, undefined); + } + return links.inferredClassType; + } function checkCallExpression(node) { checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); var signature = getResolvedSignature(node); if (node.expression.kind === 95) { return voidType; } - if (node.kind === 169) { + if (node.kind === 171) { var declaration = signature.declaration; if (declaration && declaration.kind !== 144 && declaration.kind !== 148 && declaration.kind !== 153) { - if (compilerOptions.noImplicitAny) { + var funcSymbol = checkExpression(node.expression).symbol; + if (funcSymbol && funcSymbol.members && (funcSymbol.flags & 16)) { + return getInferredClassType(funcSymbol); + } + else if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } return anyType; @@ -18290,7 +18827,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187) { + if (element.kind !== 189) { if (element.name.kind === 69) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -18324,7 +18861,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 192) { + if (func.body.kind !== 194) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { type = checkAwaitedType(type, func, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -18429,22 +18966,29 @@ var ts; if (returnType === voidType || isTypeAny(returnType)) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 192 || !(func.flags & 524288)) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 194 || !(func.flags & 524288)) { return; } - if (func.flags & 1048576) { - if (compilerOptions.noImplicitReturns) { - error(func.type, ts.Diagnostics.Not_all_code_paths_return_a_value); - } - } - else { + var hasExplicitReturn = func.flags & 1048576; + if (returnType && !hasExplicitReturn) { error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (compilerOptions.noImplicitReturns) { + if (!returnType) { + var inferredReturnType = hasExplicitReturn + ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) + : voidType; + if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + return; + } + } + error(func.type || func, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 143 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 173) { + if (!hasGrammarError && node.kind === 175) { checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { @@ -18477,6 +19021,7 @@ var ts; } if (!contextChecked) { checkSignatureDeclaration(node); + checkNodeDeferred(node); } } } @@ -18486,39 +19031,34 @@ var ts; } return type; } - function checkFunctionExpressionOrObjectLiteralMethodBody(node) { + function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { ts.Debug.assert(node.kind !== 143 || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); if (isAsync) { emitAwaiter = true; } - var returnType = node.type && getTypeFromTypeNode(node.type); - var promisedType; - if (returnType && isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - if (returnType && !node.asteriskToken) { - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + if (!node.asteriskToken) { + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (node.body) { if (!node.type) { getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 192) { + if (node.body.kind === 194) { checkSourceElement(node.body); } else { var exprType = checkExpression(node.body); - if (returnType) { + if (returnOrPromisedType) { if (isAsync) { var awaitedType = checkAwaitedType(exprType, node.body, ts.Diagnostics.Expression_body_for_async_arrow_function_does_not_have_a_valid_callable_then_member); - checkTypeAssignableTo(awaitedType, promisedType, node.body); + checkTypeAssignableTo(awaitedType, returnOrPromisedType, node.body); } else { - checkTypeAssignableTo(exprType, returnType, node.body); + checkTypeAssignableTo(exprType, returnOrPromisedType, node.body); } } - checkFunctionAndClassExpressionBodies(node.body); } } } @@ -18540,13 +19080,13 @@ var ts; var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; } - case 166: { + case 168: { var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; } - case 167: + case 169: return true; - case 172: + case 174: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -18555,11 +19095,11 @@ var ts; function isConstVariableReference(n) { switch (n.kind) { case 69: - case 166: { + case 168: { var symbol = findSymbol(n); return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 16384) !== 0; } - case 167: { + case 169: { var index = n.argumentExpression; var symbol = findSymbol(n.expression); if (symbol && index && index.kind === 9) { @@ -18569,7 +19109,7 @@ var ts; } return false; } - case 172: + case 174: return isConstVariableReference(n.expression); default: return false; @@ -18645,8 +19185,8 @@ var ts; } if (type.flags & 49152) { var types = type.types; - for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { - var current = types_9[_i]; + for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { + var current = types_10[_i]; if (current.flags & kind) { return true; } @@ -18661,8 +19201,8 @@ var ts; } if (type.flags & 49152) { var types = type.types; - for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { - var current = types_10[_i]; + for (var _i = 0, types_11 = types; _i < types_11.length; _i++) { + var current = types_11[_i]; if (!(current.flags & kind)) { return false; } @@ -18699,7 +19239,7 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 245 || p.kind === 246) { + if (p.kind === 247 || p.kind === 248) { var name_13 = p.name; if (name_13.kind === 136) { checkComputedPropertyName(name_13); @@ -18714,7 +19254,7 @@ var ts; isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1) || getIndexTypeOfType(sourceType, 0); if (type) { - if (p.kind === 246) { + if (p.kind === 248) { checkDestructuringAssignment(p, type); } else { @@ -18736,8 +19276,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187) { - if (e.kind !== 185) { + if (e.kind !== 189) { + if (e.kind !== 187) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -18762,7 +19302,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 181 && restExpression.operatorToken.kind === 56) { + if (restExpression.kind === 183 && restExpression.operatorToken.kind === 56) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -18776,7 +19316,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 246) { + if (exprOrAssignment.kind === 248) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -18786,14 +19326,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 181 && target.operatorToken.kind === 56) { + if (target.kind === 183 && target.operatorToken.kind === 56) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 165) { + if (target.kind === 167) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 164) { + if (target.kind === 166) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -18810,7 +19350,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 && (left.kind === 165 || left.kind === 164)) { + if (operator === 56 && (left.kind === 167 || left.kind === 166)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -19009,7 +19549,7 @@ var ts; function checkStringLiteralExpression(node) { var contextualType = getContextualType(node); if (contextualType && contextualTypeIsStringLiteralType(contextualType)) { - return getStringLiteralType(node); + return getStringLiteralTypeForText(node.text); } return stringType; } @@ -19072,8 +19612,8 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 166 && node.parent.expression === node) || - (node.parent.kind === 167 && node.parent.expression === node) || + var ok = (node.parent.kind === 168 && node.parent.expression === node) || + (node.parent.kind === 169 && node.parent.expression === node) || ((node.kind === 69 || node.kind === 135) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); @@ -19100,7 +19640,7 @@ var ts; return booleanType; case 8: return checkNumericLiteral(node); - case 183: + case 185: return checkTemplateExpression(node); case 9: return checkStringLiteralExpression(node); @@ -19108,58 +19648,58 @@ var ts; return stringType; case 10: return globalRegExpType; - case 164: - return checkArrayLiteral(node, contextualMapper); - case 165: - return checkObjectLiteral(node, contextualMapper); case 166: - return checkPropertyAccessExpression(node); + return checkArrayLiteral(node, contextualMapper); case 167: - return checkIndexedAccess(node); + return checkObjectLiteral(node, contextualMapper); case 168: + return checkPropertyAccessExpression(node); case 169: - return checkCallExpression(node); + return checkIndexedAccess(node); case 170: - return checkTaggedTemplateExpression(node); - case 172: - return checkExpression(node.expression, contextualMapper); - case 186: - return checkClassExpression(node); - case 173: - case 174: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 176: - return checkTypeOfExpression(node); case 171: - case 189: - return checkAssertion(node); + return checkCallExpression(node); + case 172: + return checkTaggedTemplateExpression(node); + case 174: + return checkExpression(node.expression, contextualMapper); + case 188: + return checkClassExpression(node); case 175: - return checkDeleteExpression(node); - case 177: - return checkVoidExpression(node); + case 176: + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); case 178: - return checkAwaitExpression(node); + return checkTypeOfExpression(node); + case 173: + case 191: + return checkAssertion(node); + case 177: + return checkDeleteExpression(node); case 179: - return checkPrefixUnaryExpression(node); + return checkVoidExpression(node); case 180: - return checkPostfixUnaryExpression(node); + return checkAwaitExpression(node); case 181: - return checkBinaryExpression(node, contextualMapper); + return checkPrefixUnaryExpression(node); case 182: - return checkConditionalExpression(node, contextualMapper); - case 185: - return checkSpreadElementExpression(node, contextualMapper); - case 187: - return undefinedType; + return checkPostfixUnaryExpression(node); + case 183: + return checkBinaryExpression(node, contextualMapper); case 184: + return checkConditionalExpression(node, contextualMapper); + case 187: + return checkSpreadElementExpression(node, contextualMapper); + case 189: + return undefinedType; + case 186: return checkYieldExpression(node); - case 240: + case 242: return checkJsxExpression(node); - case 233: - return checkJsxElement(node); - case 234: - return checkJsxSelfClosingElement(node); case 235: + return checkJsxElement(node); + case 236: + return checkJsxSelfClosingElement(node); + case 237: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -19169,8 +19709,8 @@ var ts; grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); } checkSourceElement(node.constraint); + getConstraintOfTypeParameter(getDeclaredTypeOfTypeParameter(getSymbolOfNode(node))); if (produceDiagnostics) { - checkTypeParameterHasIllegalReferencesInConstraint(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_parameter_name_cannot_be_0); } } @@ -19196,8 +19736,8 @@ var ts; return false; } return node.kind === 143 || - node.kind === 213 || - node.kind === 173; + node.kind === 215 || + node.kind === 175; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -19211,12 +19751,12 @@ var ts; } return -1; } - function isInLegalTypePredicatePosition(node) { + function isInLegalParameterTypePredicatePosition(node) { switch (node.parent.kind) { - case 174: + case 176: case 147: - case 213: - case 173: + case 215: + case 175: case 152: case 143: case 142: @@ -19224,11 +19764,23 @@ var ts; } return false; } + function isInLegalThisTypePredicatePosition(node) { + if (isInLegalParameterTypePredicatePosition(node)) { + return true; + } + switch (node.parent.kind) { + case 141: + case 140: + case 145: + return node === node.parent.type; + } + return false; + } function checkSignatureDeclaration(node) { if (node.kind === 149) { checkGrammarIndexSignature(node); } - else if (node.kind === 152 || node.kind === 213 || node.kind === 153 || + else if (node.kind === 152 || node.kind === 215 || node.kind === 153 || node.kind === 147 || node.kind === 144 || node.kind === 148) { checkGrammarFunctionLikeDeclaration(node); @@ -19237,9 +19789,14 @@ var ts; ts.forEach(node.parameters, checkParameter); if (node.type) { if (node.type.kind === 150) { - var typePredicate = getSignatureFromDeclaration(node).typePredicate; + var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(node)); + if (!returnType || !(returnType.flags & 134217728)) { + return; + } + var typePredicate = returnType.predicate; var typePredicateNode = node.type; - if (isInLegalTypePredicatePosition(typePredicateNode)) { + checkSourceElement(typePredicateNode); + if (ts.isIdentifierTypePredicate(typePredicate)) { if (typePredicate.parameterIndex >= 0) { if (node.parameters[typePredicate.parameterIndex].dotDotDotToken) { error(typePredicateNode.parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); @@ -19255,8 +19812,8 @@ var ts; if (hasReportedError) { break; } - if (param.name.kind === 161 || - param.name.kind === 162) { + if (param.name.kind === 163 || + param.name.kind === 164) { (function checkBindingPattern(pattern) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { var element = _a[_i]; @@ -19266,8 +19823,8 @@ var ts; hasReportedError = true; break; } - else if (element.name.kind === 162 || - element.name.kind === 161) { + else if (element.name.kind === 164 || + element.name.kind === 163) { checkBindingPattern(element.name); } } @@ -19279,9 +19836,6 @@ var ts; } } } - else { - error(typePredicateNode, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); - } } else { checkSourceElement(node.type); @@ -19316,7 +19870,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 215) { + if (node.kind === 217) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -19358,7 +19912,7 @@ var ts; } function checkMethodDeclaration(node) { checkGrammarMethod(node) || checkGrammarComputedPropertyName(node.name); - checkFunctionLikeDeclaration(node); + checkFunctionOrMethodDeclaration(node); if (node.flags & 128 && node.body) { error(node, ts.Diagnostics.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract, ts.declarationNameToString(node.name)); } @@ -19379,7 +19933,7 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 168 && n.expression.kind === 95; + return n.kind === 170 && n.expression.kind === 95; } function containsSuperCallAsComputedPropertyName(n) { return n.name && containsSuperCall(n.name); @@ -19400,7 +19954,7 @@ var ts; if (n.kind === 97) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 173 && n.kind !== 213) { + else if (n.kind !== 175 && n.kind !== 215) { ts.forEachChild(n, markThisReferencesAsErrors); } } @@ -19425,7 +19979,7 @@ var ts; var superCallStatement; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 195 && isSuperCallExpression(statement.expression)) { + if (statement.kind === 197 && isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -19449,6 +20003,8 @@ var ts; function checkAccessorDeclaration(node) { if (produceDiagnostics) { checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); + checkDecorators(node); + checkSignatureDeclaration(node); if (node.kind === 145) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 524288)) { if (node.flags & 1048576) { @@ -19461,6 +20017,9 @@ var ts; } } } + if (node.name.kind === 136) { + checkComputedPropertyName(node.name); + } if (!ts.hasDynamicName(node)) { var otherKind = node.kind === 145 ? 146 : 145; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); @@ -19479,18 +20038,32 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - checkFunctionLikeDeclaration(node); + if (node.parent.kind !== 167) { + checkSourceElement(node.body); + } + else { + checkNodeDeferred(node); + } + } + function checkAccessorDeferred(node) { + checkSourceElement(node.body); } function checkMissingDeclaration(node) { checkDecorators(node); } - function checkTypeArgumentConstraints(typeParameters, typeArguments) { + function checkTypeArgumentConstraints(typeParameters, typeArgumentNodes) { + var typeArguments; + var mapper; var result = true; for (var i = 0; i < typeParameters.length; i++) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { + if (!typeArguments) { + typeArguments = ts.map(typeArgumentNodes, getTypeFromTypeNode); + mapper = createTypeMapper(typeParameters, typeArguments); + } var typeArgument = typeArguments[i]; - result = result && checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + result = result && checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), typeArgumentNodes[i], ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } return result; @@ -19547,7 +20120,7 @@ var ts; return; } var signaturesToCheck; - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 215) { + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 217) { ts.Debug.assert(signatureDeclarationNode.kind === 147 || signatureDeclarationNode.kind === 148); var signatureKind = signatureDeclarationNode.kind === 147 ? 0 : 1; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); @@ -19559,7 +20132,7 @@ var ts; } for (var _i = 0, signaturesToCheck_1 = signaturesToCheck; _i < signaturesToCheck_1.length; _i++) { var otherSignature = signaturesToCheck_1[_i]; - if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { + if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature, false)) { return; } } @@ -19567,9 +20140,9 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 215 && - n.parent.kind !== 214 && - n.parent.kind !== 186 && + if (n.parent.kind !== 217 && + n.parent.kind !== 216 && + n.parent.kind !== 188 && ts.isInAmbientContext(n)) { if (!(flags & 4)) { flags |= 2; @@ -19642,14 +20215,16 @@ var ts; seen = c === node; } }); - if (subsequentNode) { + if (subsequentNode && subsequentNode.pos === node.end) { if (subsequentNode.kind === node.kind) { var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - ts.Debug.assert(node.kind === 143 || node.kind === 142); - ts.Debug.assert((node.flags & 64) !== (subsequentNode.flags & 64)); - var diagnostic = node.flags & 64 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode_1, diagnostic); + var reportError = (node.kind === 143 || node.kind === 142) && + (node.flags & 64) !== (subsequentNode.flags & 64); + if (reportError) { + var diagnostic = node.flags & 64 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; + error(errorNode_1, diagnostic); + } return; } else if (ts.nodeIsPresent(subsequentNode.body)) { @@ -19678,11 +20253,11 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 215 || node.parent.kind === 155 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 217 || node.parent.kind === 155 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 213 || node.kind === 143 || node.kind === 142 || node.kind === 144) { + if (node.kind === 215 || node.kind === 143 || node.kind === 142 || node.kind === 144) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -19736,7 +20311,7 @@ var ts; if (!bodySignature.hasStringLiterals) { for (var _a = 0, signatures_3 = signatures; _a < signatures_3.length; _a++) { var signature = signatures_3[_a]; - if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + if (!signature.hasStringLiterals && !isImplementationCompatibleWithOverload(bodySignature, signature)) { error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } @@ -19795,16 +20370,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 215: + case 217: return 2097152; - case 218: + case 220: return d.name.kind === 9 || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 214: - case 217: + case 216: + case 219: return 2097152 | 1048576; - case 221: + case 223: var result = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); @@ -19911,15 +20486,16 @@ var ts; error(node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type, typeName); return unknownType; } + checkReturnTypeAnnotationAsExpression(node); var promiseConstructorType = getTypeOfSymbol(promiseConstructor); if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type)) { return unknownType; } var promiseName = ts.getEntityNameFromTypeNode(node.type); - var root = getFirstIdentifier(promiseName); - var rootSymbol = getSymbol(node.locals, root.text, 107455); + var promiseNameOrNamespaceRoot = getFirstIdentifier(promiseName); + var rootSymbol = getSymbol(node.locals, promiseNameOrNamespaceRoot.text, 107455); if (rootSymbol) { - error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, root.text, getFullyQualifiedName(promiseConstructor)); + error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, promiseNameOrNamespaceRoot.text, getFullyQualifiedName(promiseConstructor)); return unknownType; } return checkAwaitedType(promiseType, node, ts.Diagnostics.An_async_function_or_method_must_have_a_valid_awaitable_return_type); @@ -19934,7 +20510,7 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 214: + case 216: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); @@ -19971,23 +20547,10 @@ var ts; } } function checkTypeAnnotationAsExpression(node) { - switch (node.kind) { - case 141: - checkTypeNodeAsExpression(node.type); - break; - case 138: - checkTypeNodeAsExpression(node.type); - break; - case 143: - checkTypeNodeAsExpression(node.type); - break; - case 145: - checkTypeNodeAsExpression(node.type); - break; - case 146: - checkTypeNodeAsExpression(ts.getSetAccessorTypeAnnotationNode(node)); - break; - } + checkTypeNodeAsExpression(node.type); + } + function checkReturnTypeAnnotationAsExpression(node) { + checkTypeNodeAsExpression(node.type); } function checkParameterTypeAnnotationsAsExpressions(node) { for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { @@ -20007,16 +20570,18 @@ var ts; } if (compilerOptions.emitDecoratorMetadata) { switch (node.kind) { - case 214: + case 216: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; case 143: - checkParameterTypeAnnotationsAsExpressions(node); - case 146: case 145: + case 146: + checkParameterTypeAnnotationsAsExpressions(node); + checkReturnTypeAnnotationAsExpression(node); + break; case 141: case 138: checkTypeAnnotationAsExpression(node); @@ -20031,13 +20596,13 @@ var ts; } function checkFunctionDeclaration(node) { if (produceDiagnostics) { - checkFunctionLikeDeclaration(node) || checkGrammarForGenerator(node); + checkFunctionOrMethodDeclaration(node) || checkGrammarForGenerator(node); checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); } } - function checkFunctionLikeDeclaration(node) { + function checkFunctionOrMethodDeclaration(node) { checkDecorators(node); checkSignatureDeclaration(node); var isAsync = ts.isAsyncFunctionLike(node); @@ -20050,7 +20615,8 @@ var ts; if (!ts.hasDynamicName(node)) { var symbol = getSymbolOfNode(node); var localSymbol = node.localSymbol || symbol; - var firstDeclaration = ts.getDeclarationOfKind(localSymbol, node.kind); + var firstDeclaration = ts.forEach(localSymbol.declarations, function (declaration) { return declaration.kind === node.kind && !ts.isSourceFileJavaScript(getSourceFile(declaration)) ? + declaration : undefined; }); if (node === firstDeclaration) { checkFunctionOrConstructorSymbol(localSymbol); } @@ -20061,13 +20627,9 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { - var returnType = getTypeFromTypeNode(node.type); - var promisedType; - if (isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + if (!node.asteriskToken) { + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (produceDiagnostics && !node.type) { if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !isPrivateWithinAmbient(node)) { @@ -20079,13 +20641,10 @@ var ts; } } function checkBlock(node) { - if (node.kind === 192) { + if (node.kind === 194) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 219) { - checkFunctionAndClassExpressionBodies(node); - } } function checkCollisionWithArgumentsInGeneratedCode(node) { if (!ts.hasRestParameter(node) || ts.isInAmbientContext(node) || ts.nodeIsMissing(node.body)) { @@ -20161,11 +20720,11 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 218 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 220 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 248 && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 250 && ts.isExternalOrCommonJsModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } @@ -20173,7 +20732,7 @@ var ts; if ((ts.getCombinedNodeFlags(node) & 24576) !== 0 || ts.isParameterDeclaration(node)) { return; } - if (node.kind === 211 && !node.initializer) { + if (node.kind === 213 && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -20183,15 +20742,15 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 24576) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 212); - var container = varDeclList.parent.kind === 193 && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 214); + var container = varDeclList.parent.kind === 195 && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; var namesShareScope = container && - (container.kind === 192 && ts.isFunctionLike(container.parent) || - container.kind === 219 || - container.kind === 218 || - container.kind === 248); + (container.kind === 194 && ts.isFunctionLike(container.parent) || + container.kind === 221 || + container.kind === 220 || + container.kind === 250); if (!namesShareScope) { var name_14 = symbolToString(localDeclarationSymbol); error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_14, name_14); @@ -20236,7 +20795,7 @@ var ts; checkExpressionCached(node.initializer); } } - if (node.kind === 163) { + if (node.kind === 165) { if (node.propertyName && node.propertyName.kind === 136) { checkComputedPropertyName(node.propertyName); } @@ -20274,7 +20833,7 @@ var ts; } if (node.kind !== 141 && node.kind !== 140) { checkExportsOnMergedDeclarations(node); - if (node.kind === 211 || node.kind === 163) { + if (node.kind === 213 || node.kind === 165) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -20295,7 +20854,7 @@ var ts; ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { - if (node.modifiers && node.parent.kind === 165) { + if (node.modifiers && node.parent.kind === 167) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -20314,7 +20873,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 194) { + if (node.thenStatement.kind === 196) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -20331,12 +20890,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 212) { + if (node.initializer && node.initializer.kind === 214) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -20351,13 +20910,13 @@ var ts; } function checkForOfStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); - if (varExpr.kind === 164 || varExpr.kind === 165) { + if (varExpr.kind === 166 || varExpr.kind === 167) { checkDestructuringAssignment(varExpr, iteratedType || unknownType); } else { @@ -20372,7 +20931,7 @@ var ts; } function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -20382,7 +20941,7 @@ var ts; else { var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 164 || varExpr.kind === 165) { + if (varExpr.kind === 166 || varExpr.kind === 167) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258)) { @@ -20510,7 +21069,13 @@ var ts; } function checkElementTypeOfArrayOrString(arrayOrStringType, errorNode) { ts.Debug.assert(languageVersion < 2); - var arrayType = removeTypesFromUnionType(arrayOrStringType, 258, true, true); + var arrayType = arrayOrStringType; + if (arrayOrStringType.flags & 16384) { + arrayType = getUnionType(ts.filter(arrayOrStringType.types, function (t) { return !(t.flags & 258); })); + } + else if (arrayOrStringType.flags & 258) { + arrayType = emptyUnionType; + } var hasStringConstituent = arrayOrStringType !== arrayType; var reportedError = false; if (hasStringConstituent) { @@ -20570,7 +21135,7 @@ var ts; error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } - else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || signature.typePredicate) { + else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || returnType.flags & 134217728) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -20601,7 +21166,7 @@ var ts; var expressionType = checkExpression(node.expression); var expressionTypeIsStringLike = someConstituentTypeHasKind(expressionType, 258); ts.forEach(node.caseBlock.clauses, function (clause) { - if (clause.kind === 242 && !hasDuplicateDefaultClause) { + if (clause.kind === 244 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -20613,13 +21178,12 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 241) { + if (produceDiagnostics && clause.kind === 243) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); - if (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258)) { - return; - } - if (!isTypeAssignableTo(expressionType, caseType)) { + var expressionTypeIsAssignableToCaseType = (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258)) || + isTypeAssignableTo(expressionType, caseType); + if (!expressionTypeIsAssignableToCaseType) { checkTypeAssignableTo(caseType, expressionType, caseClause.expression, undefined); } } @@ -20633,7 +21197,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 207 && current.label.text === node.label.text) { + if (current.kind === 209 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -20773,8 +21337,12 @@ var ts; } function checkClassExpression(node) { checkClassLikeDeclaration(node); + checkNodeDeferred(node); return getTypeOfSymbol(getSymbolOfNode(node)); } + function checkClassExpressionDeferred(node) { + ts.forEach(node.members, checkSourceElement); + } function checkClassDeclaration(node) { if (!node.name && !(node.flags & 512)) { grammarErrorOnFirstToken(node, ts.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); @@ -20872,7 +21440,7 @@ var ts; if (derived === base) { var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); if (baseDeclarationFlags & 128 && (!derivedClassDecl || !(derivedClassDecl.flags & 128))) { - if (derivedClassDecl.kind === 186) { + if (derivedClassDecl.kind === 188) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -20982,7 +21550,7 @@ var ts; checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 215); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 217); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -21047,7 +21615,8 @@ var ts; error(member.name, ts.Diagnostics.Enum_member_must_have_initializer); } if (autoValue !== undefined) { - getNodeLinks(member).enumMemberValue = autoValue++; + getNodeLinks(member).enumMemberValue = autoValue; + autoValue++; } } nodeLinks.flags |= 8192; @@ -21079,7 +21648,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 179: + case 181: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -21090,7 +21659,7 @@ var ts; case 50: return ~value_1; } return undefined; - case 181: + case 183: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -21115,11 +21684,11 @@ var ts; return undefined; case 8: return +e.text; - case 172: + case 174: return evalConstant(e.expression); case 69: - case 167: - case 166: + case 169: + case 168: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -21130,7 +21699,7 @@ var ts; } else { var expression; - if (e.kind === 167) { + if (e.kind === 169) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9) { return undefined; @@ -21147,7 +21716,7 @@ var ts; if (current.kind === 69) { break; } - else if (current.kind === 166) { + else if (current.kind === 168) { current = current.expression; } else { @@ -21206,7 +21775,7 @@ var ts; } var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 217) { + if (declaration.kind !== 219) { return false; } var enumDeclaration = declaration; @@ -21229,8 +21798,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 214 || - (declaration.kind === 213 && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 216 || + (declaration.kind === 215 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -21281,7 +21850,7 @@ var ts; error(node.name, ts.Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); } } - var mergedClass = ts.getDeclarationOfKind(symbol, 214); + var mergedClass = ts.getDeclarationOfKind(symbol, 216); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768; @@ -21303,7 +21872,7 @@ var ts; if (node.kind === 135) { node = node.left; } - else if (node.kind === 166) { + else if (node.kind === 168) { node = node.expression; } else { @@ -21319,9 +21888,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 219 && node.parent.parent.name.kind === 9; - if (node.parent.kind !== 248 && !inAmbientExternalModule) { - error(moduleName, node.kind === 228 ? + var inAmbientExternalModule = node.parent.kind === 221 && node.parent.parent.name.kind === 9; + if (node.parent.kind !== 250 && !inAmbientExternalModule) { + error(moduleName, node.kind === 230 ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -21340,7 +21909,7 @@ var ts; (symbol.flags & 793056 ? 793056 : 0) | (symbol.flags & 1536 ? 1536 : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 230 ? + var message = node.kind === 232 ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -21366,7 +21935,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224) { + if (importClause.namedBindings.kind === 226) { checkImportBinding(importClause.namedBindings); } else { @@ -21417,8 +21986,8 @@ var ts; if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { if (node.exportClause) { ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 219 && node.parent.parent.name.kind === 9; - if (node.parent.kind !== 248 && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 221 && node.parent.parent.name.kind === 9; + if (node.parent.kind !== 250 && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -21431,7 +22000,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 248 && node.parent.kind !== 219 && node.parent.kind !== 218) { + if (node.parent.kind !== 250 && node.parent.kind !== 221 && node.parent.kind !== 220) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -21445,8 +22014,8 @@ var ts; if (checkGrammarModuleElementContext(node, ts.Diagnostics.An_export_assignment_can_only_be_used_in_a_module)) { return; } - var container = node.parent.kind === 248 ? node.parent : node.parent.parent; - if (container.kind === 218 && container.name.kind === 69) { + var container = node.parent.kind === 250 ? node.parent : node.parent.parent; + if (container.kind === 220 && container.name.kind === 69) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -21469,15 +22038,6 @@ var ts; } } } - function getModuleStatements(node) { - if (node.kind === 248) { - return node.statements; - } - if (node.kind === 218 && node.body.kind === 219) { - return node.body.statements; - } - return emptyArray; - } function hasExportedMembers(moduleSymbol) { for (var id in moduleSymbol.exports) { if (id !== "export=") { @@ -21495,13 +22055,41 @@ var ts; var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } + var exports = getExportsOfModule(moduleSymbol); + for (var id in exports) { + if (id === "__export") { + continue; + } + var _a = exports[id], declarations = _a.declarations, flags = _a.flags; + if (!(flags & (1536 | 64 | 384)) && (flags & 524288 ? declarations.length - 1 : declarations.length) > 1) { + var exportedDeclarations = ts.filter(declarations, isNotOverload); + if (exportedDeclarations.length > 1) { + for (var _i = 0, exportedDeclarations_1 = exportedDeclarations; _i < exportedDeclarations_1.length; _i++) { + var declaration = exportedDeclarations_1[_i]; + diagnostics.add(ts.createDiagnosticForNode(declaration, ts.Diagnostics.Cannot_redeclare_exported_variable_0, id)); + } + } + } + } links.exportsChecked = true; } + function isNotOverload(declaration) { + return declaration.kind !== 215 || !!declaration.body; + } } function checkTypePredicate(node) { - if (!isInLegalTypePredicatePosition(node)) { + var parameterName = node.parameterName; + if (parameterName.kind === 69 && !isInLegalParameterTypePredicatePosition(node)) { error(node, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); } + else if (parameterName.kind === 161) { + if (!isInLegalThisTypePredicatePosition(node)) { + error(node, ts.Diagnostics.A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods); + } + else { + getTypeFromThisTypeNode(parameterName); + } + } } function checkSourceElement(node) { if (!node) { @@ -21510,10 +22098,10 @@ var ts; var kind = node.kind; if (cancellationToken) { switch (kind) { - case 218: - case 214: + case 220: + case 216: + case 217: case 215: - case 213: cancellationToken.throwIfCancellationRequested(); } } @@ -21557,170 +22145,97 @@ var ts; return checkUnionOrIntersectionType(node); case 160: return checkSourceElement(node.type); - case 213: - return checkFunctionDeclaration(node); - case 192: - case 219: - return checkBlock(node); - case 193: - return checkVariableStatement(node); - case 195: - return checkExpressionStatement(node); - case 196: - return checkIfStatement(node); - case 197: - return checkDoStatement(node); - case 198: - return checkWhileStatement(node); - case 199: - return checkForStatement(node); - case 200: - return checkForInStatement(node); - case 201: - return checkForOfStatement(node); - case 202: - case 203: - return checkBreakOrContinueStatement(node); - case 204: - return checkReturnStatement(node); - case 205: - return checkWithStatement(node); - case 206: - return checkSwitchStatement(node); - case 207: - return checkLabeledStatement(node); - case 208: - return checkThrowStatement(node); - case 209: - return checkTryStatement(node); - case 211: - return checkVariableDeclaration(node); - case 163: - return checkBindingElement(node); - case 214: - return checkClassDeclaration(node); case 215: - return checkInterfaceDeclaration(node); - case 216: - return checkTypeAliasDeclaration(node); - case 217: - return checkEnumDeclaration(node); - case 218: - return checkModuleDeclaration(node); - case 222: - return checkImportDeclaration(node); - case 221: - return checkImportEqualsDeclaration(node); - case 228: - return checkExportDeclaration(node); - case 227: - return checkExportAssignment(node); + return checkFunctionDeclaration(node); case 194: - checkGrammarStatementInAmbientContext(node); - return; + case 221: + return checkBlock(node); + case 195: + return checkVariableStatement(node); + case 197: + return checkExpressionStatement(node); + case 198: + return checkIfStatement(node); + case 199: + return checkDoStatement(node); + case 200: + return checkWhileStatement(node); + case 201: + return checkForStatement(node); + case 202: + return checkForInStatement(node); + case 203: + return checkForOfStatement(node); + case 204: + case 205: + return checkBreakOrContinueStatement(node); + case 206: + return checkReturnStatement(node); + case 207: + return checkWithStatement(node); + case 208: + return checkSwitchStatement(node); + case 209: + return checkLabeledStatement(node); case 210: + return checkThrowStatement(node); + case 211: + return checkTryStatement(node); + case 213: + return checkVariableDeclaration(node); + case 165: + return checkBindingElement(node); + case 216: + return checkClassDeclaration(node); + case 217: + return checkInterfaceDeclaration(node); + case 218: + return checkTypeAliasDeclaration(node); + case 219: + return checkEnumDeclaration(node); + case 220: + return checkModuleDeclaration(node); + case 224: + return checkImportDeclaration(node); + case 223: + return checkImportEqualsDeclaration(node); + case 230: + return checkExportDeclaration(node); + case 229: + return checkExportAssignment(node); + case 196: checkGrammarStatementInAmbientContext(node); return; - case 231: + case 212: + checkGrammarStatementInAmbientContext(node); + return; + case 233: return checkMissingDeclaration(node); } } - function checkFunctionAndClassExpressionBodies(node) { - switch (node.kind) { - case 173: - case 174: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - checkFunctionExpressionOrObjectLiteralMethodBody(node); - break; - case 186: - ts.forEach(node.members, checkSourceElement); - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; - case 143: - case 142: - ts.forEach(node.decorators, checkFunctionAndClassExpressionBodies); - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - if (ts.isObjectLiteralMethod(node)) { - checkFunctionExpressionOrObjectLiteralMethodBody(node); - } - break; - case 144: - case 145: - case 146: - case 213: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - break; - case 205: - checkFunctionAndClassExpressionBodies(node.expression); - break; - case 139: - case 138: - case 141: - case 140: - case 161: - case 162: - case 163: - case 164: - case 165: - case 245: - case 166: - case 167: - case 168: - case 169: - case 170: - case 183: - case 190: - case 171: - case 189: - case 172: - case 176: - case 177: - case 178: - case 175: - case 179: - case 180: - case 181: - case 182: - case 185: - case 184: - case 192: - case 219: - case 193: - case 195: - case 196: - case 197: - case 198: - case 199: - case 200: - case 201: - case 202: - case 203: - case 204: - case 206: - case 220: - case 241: - case 242: - case 207: - case 208: - case 209: - case 244: - case 211: - case 212: - case 214: - case 243: - case 188: - case 217: - case 247: - case 227: - case 248: - case 240: - case 233: - case 234: - case 238: - case 239: - case 235: - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; + function checkNodeDeferred(node) { + if (deferredNodes) { + deferredNodes.push(node); + } + } + function checkDeferredNodes() { + for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { + var node = deferredNodes_1[_i]; + switch (node.kind) { + case 175: + case 176: + case 143: + case 142: + checkFunctionExpressionOrObjectLiteralMethodDeferred(node); + break; + case 145: + case 146: + checkAccessorDeferred(node); + break; + case 188: + checkClassExpressionDeferred(node); + break; + } } } function checkSourceFile(node) { @@ -21740,9 +22255,12 @@ var ts; emitExtends = false; emitDecorate = false; emitParam = false; + emitAwaiter = false; potentialThisCollisions.length = 0; + deferredNodes = []; ts.forEach(node.statements, checkSourceElement); - checkFunctionAndClassExpressionBodies(node); + checkDeferredNodes(); + deferredNodes = undefined; if (ts.isExternalOrCommonJsModule(node)) { checkExternalModuleExports(node); } @@ -21798,7 +22316,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 205 && node.parent.statement === node) { + if (node.parent.kind === 207 && node.parent.statement === node) { return true; } node = node.parent; @@ -21820,28 +22338,28 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 248: + case 250: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 218: + case 220: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 217: + case 219: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 186: + case 188: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } - case 214: - case 215: + case 216: + case 217: if (!(memberFlags & 64)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 173: + case 175: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -21881,10 +22399,10 @@ var ts; function isTypeDeclaration(node) { switch (node.kind) { case 137: - case 214: - case 215: case 216: case 217: + case 218: + case 219: return true; } } @@ -21897,19 +22415,19 @@ var ts; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 166) { + while (node.parent && node.parent.kind === 168) { node = node.parent; } - return node.parent && node.parent.kind === 188; + return node.parent && node.parent.kind === 190; } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { while (nodeOnRightSide.parent.kind === 135) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 221) { + if (nodeOnRightSide.parent.kind === 223) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 227) { + if (nodeOnRightSide.parent.kind === 229) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -21921,10 +22439,10 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 227) { + if (entityName.parent.kind === 229) { return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 166) { + if (entityName.kind !== 168) { if (isInRightSideOfImportOrExportAssignment(entityName)) { return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } @@ -21934,7 +22452,7 @@ var ts; } if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0; - if (entityName.parent.kind === 188) { + if (entityName.parent.kind === 190) { meaning = 793056; if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { meaning |= 107455; @@ -21946,9 +22464,9 @@ var ts; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 235) || - (entityName.parent.kind === 234) || - (entityName.parent.kind === 237)) { + else if ((entityName.parent.kind === 237) || + (entityName.parent.kind === 236) || + (entityName.parent.kind === 239)) { return getJsxElementTagSymbol(entityName.parent); } else if (ts.isExpression(entityName)) { @@ -21959,7 +22477,7 @@ var ts; var meaning = 107455 | 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 166) { + else if (entityName.kind === 168) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); @@ -21979,7 +22497,7 @@ var ts; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 238) { + else if (entityName.parent.kind === 240) { return getJsxAttributePropertySymbol(entityName.parent); } if (entityName.parent.kind === 150) { @@ -21996,12 +22514,12 @@ var ts; } if (node.kind === 69) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 227 + return node.parent.kind === 229 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 163 && - node.parent.parent.kind === 161 && + else if (node.parent.kind === 165 && + node.parent.parent.kind === 163 && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -22012,13 +22530,15 @@ var ts; } switch (node.kind) { case 69: - case 166: + case 168: case 135: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97: case 95: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; + case 161: + return getTypeFromTypeNode(node).symbol; case 121: var constructorDeclaration = node.parent; if (constructorDeclaration && constructorDeclaration.kind === 144) { @@ -22028,12 +22548,12 @@ var ts; case 9: if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 222 || node.parent.kind === 228) && + ((node.parent.kind === 224 || node.parent.kind === 230) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } case 8: - if (node.parent.kind === 167 && node.parent.argumentExpression === node) { + if (node.parent.kind === 169 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -22047,7 +22567,7 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 246) { + if (location && location.kind === 248) { return resolveEntityName(location.name, 107455); } return undefined; @@ -22138,6 +22658,25 @@ var ts; function isArgumentsLocalBinding(node) { return getReferencedValueSymbol(node) === argumentsSymbol; } + function moduleExportsSomeValue(moduleReferenceExpression) { + var moduleSymbol = resolveExternalModuleName(moduleReferenceExpression.parent, moduleReferenceExpression); + if (!moduleSymbol) { + return true; + } + var hasExportAssignment = getExportAssignmentSymbol(moduleSymbol) !== undefined; + moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); + var symbolLinks = getSymbolLinks(moduleSymbol); + if (symbolLinks.exportsSomeValue === undefined) { + symbolLinks.exportsSomeValue = hasExportAssignment + ? !!(moduleSymbol.flags & 107455) + : ts.forEachValue(getExportsOfModule(moduleSymbol), isValue); + } + return symbolLinks.exportsSomeValue; + function isValue(s) { + s = resolveSymbol(s); + return s && !!(s.flags & 107455); + } + } function getReferencedExportContainer(node) { var symbol = getReferencedValueSymbol(node); if (symbol) { @@ -22150,11 +22689,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 248) { + if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 250) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 218 || n.kind === 217) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 220 || n.kind === 219) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -22167,11 +22706,11 @@ var ts; } function isStatementWithLocals(node) { switch (node.kind) { - case 192: - case 220: - case 199: - case 200: + case 194: + case 222: case 201: + case 202: + case 203: return true; } return false; @@ -22197,22 +22736,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 221: case 223: - case 224: + case 225: case 226: - case 230: - return isAliasResolvedToValue(getSymbolOfNode(node)); case 228: + case 232: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case 230: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 227: + case 229: return node.expression && node.expression.kind === 69 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 248 || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 250 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); @@ -22260,7 +22799,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 247) { + if (node.kind === 249) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -22346,17 +22885,6 @@ var ts; var symbol = getReferencedValueSymbol(reference); return symbol && getExportSymbolOfValueSymbolIfExported(symbol).valueDeclaration; } - function instantiateSingleCallFunctionType(functionType, typeArguments) { - if (functionType === unknownType) { - return unknownType; - } - var signature = getSingleCallSignature(functionType); - if (!signature) { - return unknownType; - } - var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); - return getOrCreateTypeFromSignature(instantiatedSignature); - } function createResolver() { return { getReferencedExportContainer: getReferencedExportContainer, @@ -22380,6 +22908,7 @@ var ts; getReferencedValueDeclaration: getReferencedValueDeclaration, getTypeReferenceSerializationKind: getTypeReferenceSerializationKind, isOptionalParameter: isOptionalParameter, + moduleExportsSomeValue: moduleExportsSomeValue, isArgumentsLocalBinding: isArgumentsLocalBinding, getExternalModuleFileFromDeclaration: getExternalModuleFileFromDeclaration }; @@ -22390,7 +22919,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 248); + return ts.getDeclarationOfKind(moduleSymbol, 250); } function initializeTypeChecker() { ts.forEach(host.getSourceFiles(), function (file) { @@ -22401,10 +22930,10 @@ var ts; mergeSymbolTable(globals, file.locals); } }); + addToSymbolTable(globals, builtinGlobals, ts.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0); getSymbolLinks(undefinedSymbol).type = undefinedType; getSymbolLinks(argumentsSymbol).type = getGlobalType("IArguments"); getSymbolLinks(unknownSymbol).type = unknownType; - globals[undefinedSymbol.name] = undefinedSymbol; globalArrayType = getGlobalType("Array", 1); globalObjectType = getGlobalType("Object"); globalFunctionType = getGlobalType("Function"); @@ -22465,7 +22994,12 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + if (node.kind === 143 && !ts.nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } + else { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + } } else if (node.kind === 145 || node.kind === 146) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); @@ -22485,30 +23019,30 @@ var ts; case 143: case 142: case 149: - case 218: - case 222: - case 221: - case 228: - case 227: + case 220: + case 224: + case 223: + case 230: + case 229: case 138: break; - case 213: - if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && - node.parent.kind !== 219 && node.parent.kind !== 248) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); - } - break; - case 214: case 215: - case 193: - case 216: - if (node.modifiers && node.parent.kind !== 219 && node.parent.kind !== 248) { + if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && + node.parent.kind !== 221 && node.parent.kind !== 250) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; + case 216: case 217: + case 195: + case 218: + if (node.modifiers && node.parent.kind !== 221 && node.parent.kind !== 250) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); + } + break; + case 219: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74) && - node.parent.kind !== 219 && node.parent.kind !== 248) { + node.parent.kind !== 221 && node.parent.kind !== 250) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -22523,6 +23057,11 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; switch (modifier.kind) { + case 74: + if (node.kind !== 219 && node.parent.kind === 216) { + return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74)); + } + break; case 112: case 111: case 110: @@ -22547,7 +23086,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 219 || node.parent.kind === 248) { + else if (node.parent.kind === 221 || node.parent.kind === 250) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } else if (flags & 128) { @@ -22567,7 +23106,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 219 || node.parent.kind === 248) { + else if (node.parent.kind === 221 || node.parent.kind === 250) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } else if (node.kind === 138) { @@ -22592,7 +23131,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } else if (node.kind === 138) { @@ -22607,13 +23146,13 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } else if (node.kind === 138) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 219) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 221) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 4; @@ -22623,11 +23162,11 @@ var ts; if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 214) { + if (node.kind !== 216) { if (node.kind !== 143) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_or_method_declaration); } - if (!(node.parent.kind === 214 && node.parent.flags & 128)) { + if (!(node.parent.kind === 216 && node.parent.flags & 128)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 64) { @@ -22672,7 +23211,7 @@ var ts; } return; } - else if ((node.kind === 222 || node.kind === 221) && flags & 4) { + else if ((node.kind === 224 || node.kind === 223) && flags & 4) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } else if (node.kind === 138 && (flags & 56) && ts.isBindingPattern(node.name)) { @@ -22688,9 +23227,9 @@ var ts; } switch (node.kind) { case 143: - case 213: - case 173: - case 174: + case 215: + case 175: + case 176: if (!node.asteriskToken) { return false; } @@ -22755,7 +23294,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 174) { + if (node.kind === 176) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -22822,7 +23361,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 187) { + if (arg.kind === 189) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -22897,14 +23436,14 @@ var ts; return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 181 && computedPropertyName.expression.operatorToken.kind === 24) { + if (computedPropertyName.expression.kind === 183 && computedPropertyName.expression.operatorToken.kind === 24) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 213 || - node.kind === 173 || + ts.Debug.assert(node.kind === 215 || + node.kind === 175 || node.kind === 143); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); @@ -22928,19 +23467,23 @@ var ts; var GetAccessor = 2; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; - for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { - var prop = _a[_i]; + var _loop_1 = function(prop) { var name_16 = prop.name; - if (prop.kind === 187 || + if (prop.kind === 189 || name_16.kind === 136) { checkGrammarComputedPropertyName(name_16); - continue; + return "continue"; } - if (prop.kind === 246 && !inDestructuring && prop.objectAssignmentInitializer) { - return grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment); + if (prop.kind === 248 && !inDestructuring && prop.objectAssignmentInitializer) { + return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } + ts.forEach(prop.modifiers, function (mod) { + if (mod.kind !== 118 || prop.kind !== 143) { + grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); + } + }); var currentKind = void 0; - if (prop.kind === 245 || prop.kind === 246) { + if (prop.kind === 247 || prop.kind === 248) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); if (name_16.kind === 8) { checkGrammarNumericLiteral(name_16); @@ -22965,27 +23508,33 @@ var ts; else { var existingKind = seen[name_16.text]; if (currentKind === Property && existingKind === Property) { - continue; + return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { seen[name_16.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } + }; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var state_1 = _loop_1(prop); + if (typeof state_1 === "object") return state_1.value + if (state_1 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 239) { + if (attr.kind === 241) { continue; } var jsxAttr = attr; @@ -22997,7 +23546,7 @@ var ts; return grammarErrorOnNode(name_17, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 240 && !initializer.expression) { + if (initializer && initializer.kind === 242 && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -23006,24 +23555,28 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 212) { + if (forInOrOfStatement.initializer.kind === 214) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { - if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 200 + var declarations = variableList.declarations; + if (!declarations.length) { + return false; + } + if (declarations.length > 1) { + var diagnostic = forInOrOfStatement.kind === 202 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - var firstDeclaration = variableList.declarations[0]; + var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 200 + var diagnostic = forInOrOfStatement.kind === 202 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 200 + var diagnostic = forInOrOfStatement.kind === 202 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -23084,7 +23637,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 165) { + if (node.parent.kind === 167) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -23103,7 +23656,7 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 215) { + else if (node.parent.kind === 217) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } else if (node.parent.kind === 155) { @@ -23117,9 +23670,9 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 207: + case 209: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 202 + var isMisplacedContinueLabel = node.kind === 204 && !ts.isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -23127,8 +23680,8 @@ var ts; return false; } break; - case 206: - if (node.kind === 203 && !node.label) { + case 208: + if (node.kind === 205 && !node.label) { return false; } break; @@ -23141,13 +23694,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 203 + var message = node.kind === 205 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 203 + var message = node.kind === 205 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -23159,7 +23712,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 162 || node.name.kind === 161) { + if (node.name.kind === 164 || node.name.kind === 163) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -23168,7 +23721,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 200 && node.parent.parent.kind !== 201) { + if (node.parent.parent.kind !== 202 && node.parent.parent.kind !== 203) { if (ts.isInAmbientContext(node)) { if (node.initializer) { var equalsTokenLength = "=".length; @@ -23184,12 +23737,12 @@ var ts; } } } - var checkLetConstNames = languageVersion >= 2 && (ts.isLet(node) || ts.isConst(node)); + var checkLetConstNames = (ts.isLet(node) || ts.isConst(node)); return checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name); } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 69) { - if (name.text === "let") { + if (name.originalKeywordKind === 108) { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } @@ -23197,7 +23750,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 187) { + if (element.kind !== 189) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -23214,15 +23767,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 196: - case 197: case 198: - case 205: case 199: case 200: - case 201: - return false; case 207: + case 201: + case 202: + case 203: + return false; + case 209: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -23237,18 +23790,6 @@ var ts; } } } - function isIntegerLiteral(expression) { - if (expression.kind === 179) { - var unaryExpression = expression; - if (unaryExpression.operator === 35 || unaryExpression.operator === 36) { - expression = unaryExpression.operand; - } - } - if (expression.kind === 8) { - return /^[0-9]+([eE]\+?[0-9]+)?$/.test(expression.text); - } - return false; - } function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } @@ -23273,10 +23814,6 @@ var ts; return true; } } - function isEvalOrArgumentsIdentifier(node) { - return node.kind === 69 && - (node.text === "eval" || node.text === "arguments"); - } function checkGrammarConstructorTypeParameters(node) { if (node.typeParameters) { return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.typeParameters.pos, node.typeParameters.end - node.typeParameters.pos, ts.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration); @@ -23294,27 +23831,33 @@ var ts; return true; } } - else if (node.parent.kind === 215) { + else if (node.parent.kind === 217) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); + } } else if (node.parent.kind === 155) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.A_type_literal_property_cannot_have_an_initializer); + } } if (ts.isInAmbientContext(node) && node.initializer) { return grammarErrorOnFirstToken(node.initializer, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 215 || - node.kind === 216 || - node.kind === 222 || - node.kind === 221 || - node.kind === 228 || - node.kind === 227 || + if (node.kind === 217 || + node.kind === 218 || + node.kind === 224 || + node.kind === 223 || + node.kind === 230 || + node.kind === 229 || (node.flags & 4) || (node.flags & (2 | 512))) { return false; @@ -23324,7 +23867,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 193) { + if (ts.isDeclaration(decl) || decl.kind === 195) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -23343,7 +23886,7 @@ var ts; if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 192 || node.parent.kind === 219 || node.parent.kind === 248) { + if (node.parent.kind === 194 || node.parent.kind === 221 || node.parent.kind === 250) { var links_1 = getNodeLinks(node.parent); if (!links_1.hasReportedStatementInAmbientContext) { return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); @@ -23366,19 +23909,248 @@ var ts; return true; } } + var _a; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); var ts; +(function (ts) { + var nullSourceMapWriter; + function getNullSourceMapWriter() { + if (nullSourceMapWriter === undefined) { + nullSourceMapWriter = { + getSourceMapData: function () { return undefined; }, + setSourceFile: function (sourceFile) { }, + emitStart: function (range) { }, + emitEnd: function (range) { }, + emitPos: function (pos) { }, + getText: function () { return undefined; }, + getSourceMappingURL: function () { return undefined; }, + initialize: function (filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { }, + reset: function () { } + }; + } + return nullSourceMapWriter; + } + ts.getNullSourceMapWriter = getNullSourceMapWriter; + function createSourceMapWriter(host, writer) { + var compilerOptions = host.getCompilerOptions(); + var currentSourceFile; + var sourceMapDir; + var sourceMapSourceIndex; + var lastRecordedSourceMapSpan; + var lastEncodedSourceMapSpan; + var lastEncodedNameIndex; + var sourceMapData; + return { + getSourceMapData: function () { return sourceMapData; }, + setSourceFile: setSourceFile, + emitPos: emitPos, + emitStart: emitStart, + emitEnd: emitEnd, + getText: getText, + getSourceMappingURL: getSourceMappingURL, + initialize: initialize, + reset: reset + }; + function initialize(filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + if (sourceMapData) { + reset(); + } + currentSourceFile = undefined; + sourceMapSourceIndex = -1; + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = { + emittedLine: 1, + emittedColumn: 1, + sourceLine: 1, + sourceColumn: 1, + sourceIndex: 0 + }; + lastEncodedNameIndex = 0; + sourceMapData = { + sourceMapFilePath: sourceMapFilePath, + jsSourceMappingURL: !compilerOptions.inlineSourceMap ? ts.getBaseFileName(ts.normalizeSlashes(sourceMapFilePath)) : undefined, + sourceMapFile: ts.getBaseFileName(ts.normalizeSlashes(filePath)), + sourceMapSourceRoot: compilerOptions.sourceRoot || "", + sourceMapSources: [], + inputSourceFileNames: [], + sourceMapNames: [], + sourceMapMappings: "", + sourceMapSourcesContent: compilerOptions.inlineSources ? [] : undefined, + sourceMapDecodedMappings: [] + }; + sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); + if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47) { + sourceMapData.sourceMapSourceRoot += ts.directorySeparator; + } + if (compilerOptions.mapRoot) { + sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); + if (!isBundledEmit) { + ts.Debug.assert(sourceFiles.length === 1); + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(sourceFiles[0], host, sourceMapDir)); + } + if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { + sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); + sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(filePath)), ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), host.getCurrentDirectory(), host.getCanonicalFileName, true); + } + else { + sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); + } + } + else { + sourceMapDir = ts.getDirectoryPath(ts.normalizePath(filePath)); + } + } + function reset() { + currentSourceFile = undefined; + sourceMapDir = undefined; + sourceMapSourceIndex = undefined; + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = undefined; + lastEncodedNameIndex = undefined; + sourceMapData = undefined; + } + function encodeLastRecordedSourceMapSpan() { + if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { + return; + } + var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; + if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { + if (sourceMapData.sourceMapMappings) { + sourceMapData.sourceMapMappings += ","; + } + } + else { + for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { + sourceMapData.sourceMapMappings += ";"; + } + prevEncodedEmittedColumn = 1; + } + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); + if (lastRecordedSourceMapSpan.nameIndex >= 0) { + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); + lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; + } + lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; + sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); + } + function emitPos(pos) { + if (pos === -1) { + return; + } + var sourceLinePos = ts.getLineAndCharacterOfPosition(currentSourceFile, pos); + sourceLinePos.line++; + sourceLinePos.character++; + var emittedLine = writer.getLine(); + var emittedColumn = writer.getColumn(); + if (!lastRecordedSourceMapSpan || + lastRecordedSourceMapSpan.emittedLine !== emittedLine || + lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || + (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && + (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || + (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { + encodeLastRecordedSourceMapSpan(); + lastRecordedSourceMapSpan = { + emittedLine: emittedLine, + emittedColumn: emittedColumn, + sourceLine: sourceLinePos.line, + sourceColumn: sourceLinePos.character, + sourceIndex: sourceMapSourceIndex + }; + } + else { + lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; + lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; + lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; + } + } + function emitStart(range) { + var rangeHasDecorators = !!range.decorators; + emitPos(range.pos !== -1 ? ts.skipTrivia(currentSourceFile.text, rangeHasDecorators ? range.decorators.end : range.pos) : -1); + } + function emitEnd(range) { + emitPos(range.end); + } + function setSourceFile(sourceFile) { + currentSourceFile = sourceFile; + var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; + var source = ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, currentSourceFile.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, true); + sourceMapSourceIndex = ts.indexOf(sourceMapData.sourceMapSources, source); + if (sourceMapSourceIndex === -1) { + sourceMapSourceIndex = sourceMapData.sourceMapSources.length; + sourceMapData.sourceMapSources.push(source); + sourceMapData.inputSourceFileNames.push(sourceFile.fileName); + if (compilerOptions.inlineSources) { + sourceMapData.sourceMapSourcesContent.push(sourceFile.text); + } + } + } + function getText() { + encodeLastRecordedSourceMapSpan(); + return ts.stringify({ + version: 3, + file: sourceMapData.sourceMapFile, + sourceRoot: sourceMapData.sourceMapSourceRoot, + sources: sourceMapData.sourceMapSources, + names: sourceMapData.sourceMapNames, + mappings: sourceMapData.sourceMapMappings, + sourcesContent: sourceMapData.sourceMapSourcesContent + }); + } + function getSourceMappingURL() { + if (compilerOptions.inlineSourceMap) { + var base64SourceMapText = ts.convertToBase64(getText()); + return sourceMapData.jsSourceMappingURL = "data:application/json;base64," + base64SourceMapText; + } + else { + return sourceMapData.jsSourceMappingURL; + } + } + } + ts.createSourceMapWriter = createSourceMapWriter; + var base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + function base64FormatEncode(inValue) { + if (inValue < 64) { + return base64Chars.charAt(inValue); + } + throw TypeError(inValue + ": not a 64 based value"); + } + function base64VLQFormatEncode(inValue) { + if (inValue < 0) { + inValue = ((-inValue) << 1) + 1; + } + else { + inValue = inValue << 1; + } + var encodedStr = ""; + do { + var currentDigit = inValue & 31; + inValue = inValue >> 5; + if (inValue > 0) { + currentDigit = currentDigit | 32; + } + encodedStr = encodedStr + base64FormatEncode(currentDigit); + } while (inValue > 0); + return encodedStr; + } +})(ts || (ts = {})); +var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + var declarationDiagnostics = ts.createDiagnosticCollection(); + ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); + return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { + var declarationFilePath = _a.declarationFilePath; + emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); + } } ts.getDeclarationDiagnostics = getDeclarationDiagnostics; - function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { + function emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); var write; @@ -23396,93 +24168,67 @@ var ts; var errorNameNode; var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var noDeclare = !root; + var noDeclare; var moduleElementDeclarationEmitInfo = []; var asynchronousSubModuleDeclarationEmitInfo; var referencePathsOutput = ""; - if (root) { + var emittedReferencedFiles = []; + var addedGlobalFileReference = false; + var allSourcesModuleElementDeclarationEmitInfo = []; + ts.forEach(sourceFiles, function (sourceFile) { + if (ts.isSourceFileJavaScript(sourceFile)) { + return; + } if (!compilerOptions.noResolve) { - var addedGlobalFileReference = false; - ts.forEach(root.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - if (referencedFile && ((referencedFile.flags & 4096) || - ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || - !addedGlobalFileReference)) { - writeReferencePath(referencedFile); - if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { + ts.forEach(sourceFile.referencedFiles, function (fileReference) { + var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); + if (referencedFile && !ts.contains(emittedReferencedFiles, referencedFile)) { + if (writeReferencePath(referencedFile, !isBundledEmit && !addedGlobalFileReference)) { addedGlobalFileReference = true; } + emittedReferencedFiles.push(referencedFile); } }); } - emitSourceFile(root); + if (!isBundledEmit || !ts.isExternalModule(sourceFile)) { + noDeclare = false; + emitSourceFile(sourceFile); + } + else if (ts.isExternalModule(sourceFile)) { + noDeclare = true; + write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); + writeLine(); + increaseIndent(); + emitSourceFile(sourceFile); + decreaseIndent(); + write("}"); + writeLine(); + } if (moduleElementDeclarationEmitInfo.length) { var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222); + if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { + ts.Debug.assert(aliasEmitInfo.node.kind === 224); createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 0); + ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + increaseIndent(); + } writeImportDeclaration(aliasEmitInfo.node); aliasEmitInfo.asynchronousOutput = writer.getText(); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + decreaseIndent(); + } } }); setWriter(oldWriter); + allSourcesModuleElementDeclarationEmitInfo = allSourcesModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); + moduleElementDeclarationEmitInfo = []; } - } - else { - var emittedReferencedFiles = []; - var prevModuleElementDeclarationEmitInfo = []; - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!ts.isDeclarationFile(sourceFile)) { - if (!compilerOptions.noResolve) { - ts.forEach(sourceFile.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - if (referencedFile && (ts.isDeclarationFile(referencedFile) && - !ts.contains(emittedReferencedFiles, referencedFile))) { - writeReferencePath(referencedFile); - emittedReferencedFiles.push(referencedFile); - } - }); - } - } - if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { - noDeclare = false; - emitSourceFile(sourceFile); - } - else if (ts.isExternalModule(sourceFile)) { - noDeclare = true; - write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); - writeLine(); - increaseIndent(); - emitSourceFile(sourceFile); - decreaseIndent(); - write("}"); - writeLine(); - if (moduleElementDeclarationEmitInfo.length) { - var oldWriter = writer; - ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222); - createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 1); - increaseIndent(); - writeImportDeclaration(aliasEmitInfo.node); - aliasEmitInfo.asynchronousOutput = writer.getText(); - decreaseIndent(); - } - }); - setWriter(oldWriter); - } - prevModuleElementDeclarationEmitInfo = prevModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); - moduleElementDeclarationEmitInfo = []; - } - }); - moduleElementDeclarationEmitInfo = moduleElementDeclarationEmitInfo.concat(prevModuleElementDeclarationEmitInfo); - } + }); return { reportedDeclarationError: reportedDeclarationError, - moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: allSourcesModuleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -23525,10 +24271,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 211) { + if (declaration.kind === 213) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 225 || declaration.kind === 226 || declaration.kind === 223) { + else if (declaration.kind === 227 || declaration.kind === 228 || declaration.kind === 225) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -23539,7 +24285,7 @@ var ts; moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); } if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 222) { + if (moduleElementEmitInfo.node.kind === 224) { moduleElementEmitInfo.isVisible = true; } else { @@ -23547,12 +24293,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 218) { + if (nodeToCheck.kind === 220) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 218) { + if (nodeToCheck.kind === 220) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -23573,10 +24319,10 @@ var ts; var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); if (errorInfo) { if (errorInfo.typeName) { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } else { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } } } @@ -23586,7 +24332,8 @@ var ts; } function reportInaccessibleThisError() { if (errorNameNode) { - diagnostics.push(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); + reportedDeclarationError = true; + emitterDiagnostics.add(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); } } function writeTypeOfDeclaration(declaration, type, getSymbolAccessibilityDiagnostic) { @@ -23654,10 +24401,10 @@ var ts; case 120: case 131: case 103: - case 97: - case 9: + case 161: + case 162: return writeTextOfNode(currentText, type); - case 188: + case 190: return emitExpressionWithTypeArguments(type); case 151: return emitTypeReference(type); @@ -23698,13 +24445,13 @@ var ts; } } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 221 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 223 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 166); + ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 168); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -23777,7 +24524,8 @@ var ts; } var count = 0; while (true) { - var name_18 = baseName + "_" + (++count); + count++; + var name_18 = baseName + "_" + count; if (!ts.hasProperty(currentIdentifiers, name_18)) { return name_18; } @@ -23820,10 +24568,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 221 || - (node.parent.kind === 248 && isCurrentFileExternalModule)) { + else if (node.kind === 223 || + (node.parent.kind === 250 && isCurrentFileExternalModule)) { var isVisible; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 248) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 250) { asynchronousSubModuleDeclarationEmitInfo.push({ node: node, outputPos: writer.getTextPos(), @@ -23832,7 +24580,7 @@ var ts; }); } else { - if (node.kind === 222) { + if (node.kind === 224) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -23850,37 +24598,37 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 213: - return writeFunctionDeclaration(node); - case 193: - return writeVariableStatement(node); case 215: - return writeInterfaceDeclaration(node); - case 214: - return writeClassDeclaration(node); - case 216: - return writeTypeAliasDeclaration(node); + return writeFunctionDeclaration(node); + case 195: + return writeVariableStatement(node); case 217: - return writeEnumDeclaration(node); + return writeInterfaceDeclaration(node); + case 216: + return writeClassDeclaration(node); case 218: + return writeTypeAliasDeclaration(node); + case 219: + return writeEnumDeclaration(node); + case 220: return writeModuleDeclaration(node); - case 221: + case 223: return writeImportEqualsDeclaration(node); - case 222: + case 224: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); } } function emitModuleElementDeclarationFlags(node) { - if (node.parent.kind === 248) { + if (node.parent.kind === 250) { if (node.flags & 2) { write("export "); } if (node.flags & 512) { write("default "); } - else if (node.kind !== 215 && !noDeclare) { + else if (node.kind !== 217 && !noDeclare) { write("declare "); } } @@ -23913,7 +24661,7 @@ var ts; } else { write("require("); - writeTextOfNode(currentText, ts.getExternalModuleImportEqualsDeclarationExpression(node)); + emitExternalModuleSpecifier(node); write(");"); } writer.writeLine(); @@ -23927,7 +24675,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 224) { + if (namedBindings.kind === 226) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -23953,7 +24701,7 @@ var ts; if (currentWriterPos !== writer.getTextPos()) { write(", "); } - if (node.importClause.namedBindings.kind === 224) { + if (node.importClause.namedBindings.kind === 226) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -23965,13 +24713,22 @@ var ts; } write(" from "); } - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); write(";"); writer.writeLine(); } - function emitExternalModuleSpecifier(moduleSpecifier) { - if (moduleSpecifier.kind === 9 && (!root) && (compilerOptions.out || compilerOptions.outFile)) { - var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, moduleSpecifier.parent); + function emitExternalModuleSpecifier(parent) { + var moduleSpecifier; + if (parent.kind === 223) { + var node = parent; + moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); + } + else { + var node = parent; + moduleSpecifier = node.moduleSpecifier; + } + if (moduleSpecifier.kind === 9 && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { + var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { write("\""); write(moduleName); @@ -24006,7 +24763,7 @@ var ts; } if (node.moduleSpecifier) { write(" from "); - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); } write(";"); writer.writeLine(); @@ -24021,7 +24778,7 @@ var ts; write("module "); } writeTextOfNode(currentText, node.name); - while (node.body.kind !== 219) { + while (node.body.kind !== 221) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -24114,10 +24871,10 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 214: + case 216: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 215: + case 217: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; case 148: @@ -24131,14 +24888,14 @@ var ts; if (node.parent.flags & 64) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214) { + else if (node.parent.parent.kind === 216) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 213: + case 215: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -24171,7 +24928,7 @@ var ts; } function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 214) { + if (node.parent.parent.kind === 216) { diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; @@ -24251,7 +25008,7 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 211 || resolver.isDeclarationVisible(node)) { + if (node.kind !== 213 || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } @@ -24269,7 +25026,7 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { - if (node.kind === 211) { + if (node.kind === 213) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -24284,7 +25041,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -24310,7 +25067,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187) { + if (element.kind !== 189) { elements.push(element); } } @@ -24444,13 +25201,13 @@ var ts; } if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 213) { + if (node.kind === 215) { emitModuleElementDeclarationFlags(node); } else if (node.kind === 143) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 213) { + if (node.kind === 215) { write("function "); writeTextOfNode(currentText, node.name); } @@ -24471,6 +25228,8 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; if (node.kind === 148 || node.kind === 153) { write("new "); } @@ -24481,8 +25240,6 @@ var ts; else { write("("); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; emitCommaList(node.parameters, emitParameterDeclaration); if (node.kind === 149) { write("]"); @@ -24532,7 +25289,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -24545,7 +25302,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 213: + case 215: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -24618,7 +25375,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214) { + else if (node.parent.parent.kind === 216) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -24630,7 +25387,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 213: + case 215: return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -24641,12 +25398,12 @@ var ts; } } function emitBindingPattern(bindingPattern) { - if (bindingPattern.kind === 161) { + if (bindingPattern.kind === 163) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 162) { + else if (bindingPattern.kind === 164) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -24657,18 +25414,10 @@ var ts; } } function emitBindingElement(bindingElement) { - function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); - return diagnosticMessage !== undefined ? { - diagnosticMessage: diagnosticMessage, - errorNode: bindingElement, - typeName: bindingElement.name - } : undefined; - } - if (bindingElement.kind === 187) { + if (bindingElement.kind === 189) { write(" "); } - else if (bindingElement.kind === 163) { + else if (bindingElement.kind === 165) { if (bindingElement.propertyName) { writeTextOfNode(currentText, bindingElement.propertyName); write(": "); @@ -24690,19 +25439,19 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 213: - case 218: - case 221: case 215: - case 214: - case 216: + case 220: + case 223: case 217: + case 216: + case 218: + case 219: return emitModuleElement(node, isModuleElementVisible(node)); - case 193: + case 195: return emitModuleElement(node, isVariableStatementVisible(node)); - case 222: + case 224: return emitModuleElement(node, !node.importClause); - case 228: + case 230: return emitExportDeclaration(node); case 144: case 143: @@ -24718,31 +25467,47 @@ var ts; case 141: case 140: return emitPropertyDeclaration(node); - case 247: + case 249: return emitEnumMemberDeclaration(node); - case 227: + case 229: return emitExportAssignment(node); - case 248: + case 250: return emitSourceFile(node); } } - function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 4096 - ? referencedFile.fileName - : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) - ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") - : ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out) + ".d.ts"; - declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); - referencePathsOutput += "/// " + newLine; + function writeReferencePath(referencedFile, addBundledFileReference) { + var declFileName; + var addedBundledEmitReference = false; + if (ts.isDeclarationFile(referencedFile)) { + declFileName = referencedFile.fileName; + } + else { + ts.forEachExpectedEmitFile(host, getDeclFileName, referencedFile); + } + if (declFileName) { + declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); + referencePathsOutput += "/// " + newLine; + } + return addedBundledEmitReference; + function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { + if (isBundledEmit && !addBundledFileReference) { + return; + } + ts.Debug.assert(!!emitFileNames.declarationFilePath || ts.isSourceFileJavaScript(referencedFile), "Declaration file is not present only for javascript files"); + declFileName = emitFileNames.declarationFilePath || emitFileNames.jsFilePath; + addedBundledEmitReference = isBundledEmit; + } } } - function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - if (!emitDeclarationResult.reportedDeclarationError) { + function writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit); + var emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath) || host.getCompilerOptions().noEmit; + if (!emitSkipped) { var declarationOutput = emitDeclarationResult.referencePathsOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); - ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + ts.writeFile(host, emitterDiagnostics, declarationFilePath, declarationOutput, host.getCompilerOptions().emitBOM); } + return emitSkipped; function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { var appliedSyncOutputPos = 0; var declarationOutput = ""; @@ -24761,10 +25526,6 @@ var ts; })(ts || (ts = {})); var ts; (function (ts) { - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; function getResolvedExternalModuleName(host, file) { return file.moduleName || ts.getExternalModuleNameFromPath(host, file.fileName); } @@ -25039,41 +25800,17 @@ var ts; var paramHelper = "\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};"; var awaiterHelper = "\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promise, generator) {\n return new Promise(function (resolve, reject) {\n generator = generator.call(thisArg, _arguments);\n function cast(value) { return value instanceof Promise && value.constructor === Promise ? value : new Promise(function (resolve) { resolve(value); }); }\n function onfulfill(value) { try { step(\"next\", value); } catch (e) { reject(e); } }\n function onreject(value) { try { step(\"throw\", value); } catch (e) { reject(e); } }\n function step(verb, value) {\n var result = generator[verb](value);\n result.done ? resolve(result.value) : cast(result.value).then(onfulfill, onreject);\n }\n step(\"next\", void 0);\n });\n};"; var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || 0; - var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 ? 5 : 0; + var languageVersion = ts.getEmitScriptTarget(compilerOptions); + var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; - var diagnostics = []; + var emitterDiagnostics = ts.createDiagnosticCollection(); + var emitSkipped = false; var newLine = host.getNewLine(); - var jsxDesugaring = host.getCompilerOptions().jsx !== 1; - var shouldEmitJsx = function (s) { return (s.languageVariant === 1 && !jsxDesugaring); }; - var outFile = compilerOptions.outFile || compilerOptions.out; var emitJavaScript = createFileEmitter(); - if (targetSourceFile === undefined) { - if (outFile) { - emitFile(outFile); - } - else { - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, shouldEmitJsx(sourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, sourceFile); - } - }); - } - } - else { - if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, shouldEmitJsx(targetSourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, targetSourceFile); - } - else if (!ts.isDeclarationFile(targetSourceFile) && outFile) { - emitFile(outFile); - } - } - diagnostics = ts.sortAndDeduplicateDiagnostics(diagnostics); + ts.forEachExpectedEmitFile(host, emitFile, targetSourceFile); return { - emitSkipped: false, - diagnostics: diagnostics, + emitSkipped: emitSkipped, + diagnostics: emitterDiagnostics.getDiagnostics(), sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -25120,6 +25857,8 @@ var ts; function createFileEmitter() { var writer = ts.createTextWriter(newLine); var write = writer.write, writeTextOfNode = writer.writeTextOfNode, writeLine = writer.writeLine, increaseIndent = writer.increaseIndent, decreaseIndent = writer.decreaseIndent; + var sourceMap = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? ts.createSourceMapWriter(host, writer) : ts.getNullSourceMapWriter(); + var setSourceFile = sourceMap.setSourceFile, emitStart = sourceMap.emitStart, emitEnd = sourceMap.emitEnd, emitPos = sourceMap.emitPos; var currentSourceFile; var currentText; var currentLineMap; @@ -25136,24 +25875,16 @@ var ts; var decorateEmitted; var paramEmitted; var awaiterEmitted; - var tempFlags; + var tempFlags = 0; var tempVariables; var tempParameters; var externalImports; var exportSpecifiers; var exportEquals; - var hasExportStars; - var writeEmittedFiles = writeJavaScriptFile; + var hasExportStarsToExportValues; var detachedCommentsInfo; - var writeComment = ts.writeCommentRange; - var emit = emitNodeWithCommentsAndWithoutSourcemap; - var emitStart = function (node) { }; - var emitEnd = function (node) { }; - var emitToken = emitTokenText; - var scopeEmitStart = function (scopeDeclaration, scopeName) { }; - var scopeEmitEnd = function () { }; var sourceMapData; - var root; + var isOwnFileEmit; var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; var moduleEmitDelegates = (_a = {}, _a[5] = emitES6Module, @@ -25172,14 +25903,29 @@ var ts; _b ); return doEmit; - function doEmit(jsFilePath, rootFile) { + function doEmit(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + sourceMap.initialize(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + generatedNameSet = {}; + nodeToGeneratedName = []; + isOwnFileEmit = !isBundledEmit; + if (isBundledEmit && modulekind) { + ts.forEach(sourceFiles, emitEmitHelpers); + } + ts.forEach(sourceFiles, emitSourceFile); + writeLine(); + var sourceMappingURL = sourceMap.getSourceMappingURL(); + if (sourceMappingURL) { + write("//# sourceMappingURL=" + sourceMappingURL); + } + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, compilerOptions.emitBOM); + sourceMap.reset(); writer.reset(); currentSourceFile = undefined; currentText = undefined; currentLineMap = undefined; exportFunctionForFile = undefined; - generatedNameSet = {}; - nodeToGeneratedName = []; + generatedNameSet = undefined; + nodeToGeneratedName = undefined; computedPropertyNamesToGeneratedNames = undefined; convertedLoopState = undefined; extendsEmitted = false; @@ -25192,31 +25938,12 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = undefined; + hasExportStarsToExportValues = undefined; detachedCommentsInfo = undefined; sourceMapData = undefined; isEs6Module = false; renamedDependencies = undefined; isCurrentFileExternalModule = false; - root = rootFile; - if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { - initializeEmitterWithSourceMaps(jsFilePath, root); - } - if (root) { - emitSourceFile(root); - } - else { - if (modulekind) { - ts.forEach(host.getSourceFiles(), emitEmitHelpers); - } - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if ((!isExternalModuleOrDeclarationFile(sourceFile)) || (modulekind && ts.isExternalModule(sourceFile))) { - emitSourceFile(sourceFile); - } - }); - } - writeLine(); - writeEmittedFiles(writer.getText(), jsFilePath, compilerOptions.emitBOM); } function emitSourceFile(sourceFile) { currentSourceFile = sourceFile; @@ -25227,7 +25954,8 @@ var ts; renamedDependencies = sourceFile.renamedDependencies; currentFileIdentifiers = sourceFile.identifiers; isCurrentFileExternalModule = ts.isExternalModule(sourceFile); - emit(sourceFile); + setSourceFile(sourceFile); + emitNodeWithCommentsAndWithoutSourcemap(sourceFile); } function isUniqueName(name) { return !resolver.hasGlobalName(name) && @@ -25286,17 +26014,17 @@ var ts; switch (node.kind) { case 69: return makeUniqueName(node.text); - case 218: - case 217: + case 220: + case 219: return generateNameForModuleOrEnum(node); - case 222: - case 228: + case 224: + case 230: return generateNameForImportOrExportDeclaration(node); - case 213: - case 214: - case 227: + case 215: + case 216: + case 229: return generateNameForExportDefault(); - case 186: + case 188: return generateNameForClassExpression(); } } @@ -25304,289 +26032,14 @@ var ts; var id = ts.getNodeId(node); return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } - function initializeEmitterWithSourceMaps(jsFilePath, root) { - var sourceMapDir; - var sourceMapSourceIndex = -1; - var sourceMapNameIndexMap = {}; - var sourceMapNameIndices = []; - function getSourceMapNameIndex() { - return sourceMapNameIndices.length ? ts.lastOrUndefined(sourceMapNameIndices) : -1; + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), false); } - var lastRecordedSourceMapSpan; - var lastEncodedSourceMapSpan = { - emittedLine: 1, - emittedColumn: 1, - sourceLine: 1, - sourceColumn: 1, - sourceIndex: 0 - }; - var lastEncodedNameIndex = 0; - function encodeLastRecordedSourceMapSpan() { - if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { - return; - } - var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; - if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { - if (sourceMapData.sourceMapMappings) { - sourceMapData.sourceMapMappings += ","; - } - } - else { - for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { - sourceMapData.sourceMapMappings += ";"; - } - prevEncodedEmittedColumn = 1; - } - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); - if (lastRecordedSourceMapSpan.nameIndex >= 0) { - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); - lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; - } - lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; - sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); - function base64VLQFormatEncode(inValue) { - function base64FormatEncode(inValue) { - if (inValue < 64) { - return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(inValue); - } - throw TypeError(inValue + ": not a 64 based value"); - } - if (inValue < 0) { - inValue = ((-inValue) << 1) + 1; - } - else { - inValue = inValue << 1; - } - var encodedStr = ""; - do { - var currentDigit = inValue & 31; - inValue = inValue >> 5; - if (inValue > 0) { - currentDigit = currentDigit | 32; - } - encodedStr = encodedStr + base64FormatEncode(currentDigit); - } while (inValue > 0); - return encodedStr; - } + if (sourceMapDataList) { + sourceMapDataList.push(sourceMap.getSourceMapData()); } - function recordSourceMapSpan(pos) { - var sourceLinePos = ts.computeLineAndCharacterOfPosition(currentLineMap, pos); - sourceLinePos.line++; - sourceLinePos.character++; - var emittedLine = writer.getLine(); - var emittedColumn = writer.getColumn(); - if (!lastRecordedSourceMapSpan || - lastRecordedSourceMapSpan.emittedLine !== emittedLine || - lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || - (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && - (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || - (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { - encodeLastRecordedSourceMapSpan(); - lastRecordedSourceMapSpan = { - emittedLine: emittedLine, - emittedColumn: emittedColumn, - sourceLine: sourceLinePos.line, - sourceColumn: sourceLinePos.character, - nameIndex: getSourceMapNameIndex(), - sourceIndex: sourceMapSourceIndex - }; - } - else { - lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; - lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; - lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; - } - } - function recordEmitNodeStartSpan(node) { - recordSourceMapSpan(ts.skipTrivia(currentText, node.pos)); - } - function recordEmitNodeEndSpan(node) { - recordSourceMapSpan(node.end); - } - function writeTextWithSpanRecord(tokenKind, startPos, emitFn) { - var tokenStartPos = ts.skipTrivia(currentText, startPos); - recordSourceMapSpan(tokenStartPos); - var tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); - recordSourceMapSpan(tokenEndPos); - return tokenEndPos; - } - function recordNewSourceFileStart(node) { - var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; - sourceMapData.sourceMapSources.push(ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, node.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, true)); - sourceMapSourceIndex = sourceMapData.sourceMapSources.length - 1; - sourceMapData.inputSourceFileNames.push(node.fileName); - if (compilerOptions.inlineSources) { - if (!sourceMapData.sourceMapSourcesContent) { - sourceMapData.sourceMapSourcesContent = []; - } - sourceMapData.sourceMapSourcesContent.push(node.text); - } - } - function recordScopeNameOfNode(node, scopeName) { - function recordScopeNameIndex(scopeNameIndex) { - sourceMapNameIndices.push(scopeNameIndex); - } - function recordScopeNameStart(scopeName) { - var scopeNameIndex = -1; - if (scopeName) { - var parentIndex = getSourceMapNameIndex(); - if (parentIndex !== -1) { - var name_21 = node.name; - if (!name_21 || name_21.kind !== 136) { - scopeName = "." + scopeName; - } - scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; - } - scopeNameIndex = ts.getProperty(sourceMapNameIndexMap, scopeName); - if (scopeNameIndex === undefined) { - scopeNameIndex = sourceMapData.sourceMapNames.length; - sourceMapData.sourceMapNames.push(scopeName); - sourceMapNameIndexMap[scopeName] = scopeNameIndex; - } - } - recordScopeNameIndex(scopeNameIndex); - } - if (scopeName) { - recordScopeNameStart(scopeName); - } - else if (node.kind === 213 || - node.kind === 173 || - node.kind === 143 || - node.kind === 142 || - node.kind === 145 || - node.kind === 146 || - node.kind === 218 || - node.kind === 214 || - node.kind === 217) { - if (node.name) { - var name_22 = node.name; - scopeName = name_22.kind === 136 - ? ts.getTextOfNode(name_22) - : node.name.text; - } - recordScopeNameStart(scopeName); - } - else { - recordScopeNameIndex(getSourceMapNameIndex()); - } - } - function recordScopeNameEnd() { - sourceMapNameIndices.pop(); - } - ; - function writeCommentRangeWithMap(currentText, currentLineMap, writer, comment, newLine) { - recordSourceMapSpan(comment.pos); - ts.writeCommentRange(currentText, currentLineMap, writer, comment, newLine); - recordSourceMapSpan(comment.end); - } - function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings, sourcesContent) { - if (typeof JSON !== "undefined") { - var map_1 = { - version: version, - file: file, - sourceRoot: sourceRoot, - sources: sources, - names: names, - mappings: mappings - }; - if (sourcesContent !== undefined) { - map_1.sourcesContent = sourcesContent; - } - return JSON.stringify(map_1); - } - return "{\"version\":" + version + ",\"file\":\"" + ts.escapeString(file) + "\",\"sourceRoot\":\"" + ts.escapeString(sourceRoot) + "\",\"sources\":[" + serializeStringArray(sources) + "],\"names\":[" + serializeStringArray(names) + "],\"mappings\":\"" + ts.escapeString(mappings) + "\" " + (sourcesContent !== undefined ? ",\"sourcesContent\":[" + serializeStringArray(sourcesContent) + "]" : "") + "}"; - function serializeStringArray(list) { - var output = ""; - for (var i = 0, n = list.length; i < n; i++) { - if (i) { - output += ","; - } - output += "\"" + ts.escapeString(list[i]) + "\""; - } - return output; - } - } - function writeJavaScriptAndSourceMapFile(emitOutput, jsFilePath, writeByteOrderMark) { - encodeLastRecordedSourceMapSpan(); - var sourceMapText = serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings, sourceMapData.sourceMapSourcesContent); - sourceMapDataList.push(sourceMapData); - var sourceMapUrl; - if (compilerOptions.inlineSourceMap) { - var base64SourceMapText = ts.convertToBase64(sourceMapText); - sourceMapUrl = "//# sourceMappingURL=data:application/json;base64," + base64SourceMapText; - } - else { - ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, sourceMapText, false); - sourceMapUrl = "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL; - } - writeJavaScriptFile(emitOutput + sourceMapUrl, jsFilePath, writeByteOrderMark); - } - var sourceMapJsFile = ts.getBaseFileName(ts.normalizeSlashes(jsFilePath)); - sourceMapData = { - sourceMapFilePath: jsFilePath + ".map", - jsSourceMappingURL: sourceMapJsFile + ".map", - sourceMapFile: sourceMapJsFile, - sourceMapSourceRoot: compilerOptions.sourceRoot || "", - sourceMapSources: [], - inputSourceFileNames: [], - sourceMapNames: [], - sourceMapMappings: "", - sourceMapSourcesContent: undefined, - sourceMapDecodedMappings: [] - }; - sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); - if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47) { - sourceMapData.sourceMapSourceRoot += ts.directorySeparator; - } - if (compilerOptions.mapRoot) { - sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); - if (root) { - sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); - } - if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { - sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); - sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(jsFilePath)), ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), host.getCurrentDirectory(), host.getCanonicalFileName, true); - } - else { - sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); - } - } - else { - sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); - } - function emitNodeWithSourceMap(node) { - if (node) { - if (ts.nodeIsSynthesized(node)) { - return emitNodeWithoutSourceMap(node); - } - if (node.kind !== 248) { - recordEmitNodeStartSpan(node); - emitNodeWithoutSourceMap(node); - recordEmitNodeEndSpan(node); - } - else { - recordNewSourceFileStart(node); - emitNodeWithoutSourceMap(node); - } - } - } - function emitNodeWithCommentsAndWithSourcemap(node) { - emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); - } - writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithCommentsAndWithSourcemap; - emitStart = recordEmitNodeStartSpan; - emitEnd = recordEmitNodeEndSpan; - emitToken = writeTextWithSpanRecord; - scopeEmitStart = recordScopeNameOfNode; - scopeEmitEnd = recordScopeNameEnd; - writeComment = writeCommentRangeWithMap; - } - function writeJavaScriptFile(emitOutput, jsFilePath, writeByteOrderMark) { - ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); } function createTempVariable(flags) { var result = ts.createSynthesizedNode(69); @@ -25617,7 +26070,9 @@ var ts; write(";"); } } - function emitTokenText(tokenKind, startPos, emitFn) { + function emitToken(tokenKind, startPos, emitFn) { + var tokenStartPos = ts.skipTrivia(currentText, startPos); + emitPos(tokenStartPos); var tokenString = ts.tokenToString(tokenKind); if (emitFn) { emitFn(); @@ -25625,7 +26080,9 @@ var ts; else { write(tokenString); } - return startPos + tokenString.length; + var tokenEndPos = tokenStartPos + tokenString.length; + emitPos(tokenEndPos); + return tokenEndPos; } function emitOptional(prefix, node) { if (node) { @@ -25642,11 +26099,6 @@ var ts; write(")"); } } - function emitTrailingCommaIfPresent(nodeList) { - if (nodeList.hasTrailingComma) { - write(","); - } - } function emitLinePreservingList(parent, nodes, allowTrailingComma, spacesBetweenBraces) { ts.Debug.assert(nodes.length > 0); increaseIndent(); @@ -25812,10 +26264,10 @@ var ts; emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); write("("); emit(tempVariable); - if (node.template.kind === 183) { + if (node.template.kind === 185) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 181 + var needsParens = templateSpan.expression.kind === 183 && templateSpan.expression.operatorToken.kind === 24; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -25839,7 +26291,7 @@ var ts; } for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 172 + var needsParens = templateSpan.expression.kind !== 174 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); @@ -25859,11 +26311,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 168: - case 169: - return parent.expression === template; case 170: + case 171: + return parent.expression === template; case 172: + case 174: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -25871,7 +26323,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 181: + case 183: switch (expression.operatorToken.kind) { case 37: case 39: @@ -25883,8 +26335,8 @@ var ts; default: return -1; } + case 186: case 184: - case 182: return -1; default: return 1; @@ -25907,13 +26359,13 @@ var ts; } } function emitAttributeName(name) { - if (/[A-Za-z_]+[\w*]/.test(name.text)) { - write("\""); + if (/^[A-Za-z_]\w*$/.test(name.text)) { emit(name); - write("\""); } else { + write("\""); emit(name); + write("\""); } } function emitJsxAttribute(node) { @@ -25928,7 +26380,7 @@ var ts; } function emitJsxElement(openingNode, children) { var syntheticReactRef = ts.createSynthesizedNode(69); - syntheticReactRef.text = "React"; + syntheticReactRef.text = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; syntheticReactRef.parent = openingNode; emitLeadingComments(openingNode); emitExpressionIdentifier(syntheticReactRef); @@ -25940,12 +26392,12 @@ var ts; } else { var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 239; })) { + if (ts.forEach(attrs, function (attr) { return attr.kind === 241; })) { emitExpressionIdentifier(syntheticReactRef); write(".__spread("); var haveOpenedObjectLiteral = false; for (var i_1 = 0; i_1 < attrs.length; i_1++) { - if (attrs[i_1].kind === 239) { + if (attrs[i_1].kind === 241) { if (i_1 === 0) { write("{}, "); } @@ -25959,7 +26411,7 @@ var ts; emit(attrs[i_1].expression); } else { - ts.Debug.assert(attrs[i_1].kind === 238); + ts.Debug.assert(attrs[i_1].kind === 240); if (haveOpenedObjectLiteral) { write(", "); } @@ -25990,10 +26442,10 @@ var ts; } if (children) { for (var i = 0; i < children.length; i++) { - if (children[i].kind === 240 && !(children[i].expression)) { + if (children[i].kind === 242 && !(children[i].expression)) { continue; } - if (children[i].kind === 236) { + if (children[i].kind === 238) { var text = getTextToEmit(children[i]); if (text !== undefined) { write(", \""); @@ -26010,11 +26462,11 @@ var ts; write(")"); emitTrailingComments(openingNode); } - if (node.kind === 233) { + if (node.kind === 235) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 234); + ts.Debug.assert(node.kind === 236); emitJsxElement(node); } } @@ -26036,11 +26488,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 239) { + if (attribs[i].kind === 241) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 238); + ts.Debug.assert(attribs[i].kind === 240); emitJsxAttribute(attribs[i]); } } @@ -26048,11 +26500,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 234)) { + if (node.attributes.length > 0 || (node.kind === 236)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 234) { + if (node.kind === 236) { write("/>"); } else { @@ -26071,16 +26523,16 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 233) { + if (node.kind === 235) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 234); + ts.Debug.assert(node.kind === 236); emitJsxOpeningOrSelfClosingElement(node); } } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 163); + ts.Debug.assert(node.kind !== 165); if (node.kind === 9) { emitLiteral(node); } @@ -26115,59 +26567,60 @@ var ts; function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 164: - case 189: - case 181: - case 168: - case 241: - case 136: - case 182: - case 139: - case 175: - case 197: - case 167: - case 227: - case 195: - case 188: - case 199: - case 200: - case 201: - case 196: - case 234: - case 235: - case 239: - case 240: - case 169: - case 172: - case 180: - case 179: - case 204: - case 246: - case 185: - case 206: - case 170: - case 190: - case 208: - case 171: - case 176: - case 177: - case 198: - case 205: - case 184: - return true; - case 163: - case 247: - case 138: - case 245: - case 141: - case 211: - return parent.initializer === node; case 166: - return parent.expression === node; + case 191: + case 183: + case 170: + case 243: + case 136: + case 184: + case 139: + case 177: + case 199: + case 169: + case 229: + case 197: + case 190: + case 201: + case 202: + case 203: + case 198: + case 239: + case 236: + case 237: + case 241: + case 242: + case 171: case 174: + case 182: + case 181: + case 206: + case 248: + case 187: + case 208: + case 172: + case 192: + case 210: case 173: + case 178: + case 179: + case 200: + case 207: + case 186: + return true; + case 165: + case 249: + case 138: + case 247: + case 141: + case 213: + return parent.initializer === node; + case 168: + return parent.expression === node; + case 176: + case 175: return parent.body === node; - case 221: + case 223: return parent.moduleReference === node; case 135: return parent.left === node; @@ -26181,7 +26634,7 @@ var ts; } var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 248) { + if (container.kind === 250) { if (modulekind !== 5 && modulekind !== 4) { write("exports."); } @@ -26195,15 +26648,15 @@ var ts; if (modulekind !== 5) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 223) { + if (declaration.kind === 225) { write(getGeneratedNameForNode(declaration.parent)); write(languageVersion === 0 ? "[\"default\"]" : ".default"); return; } - else if (declaration.kind === 226) { + else if (declaration.kind === 228) { write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_21 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_21); if (languageVersion === 0 && identifier === "default") { write("[\"default\"]"); } @@ -26234,10 +26687,10 @@ var ts; if (languageVersion < 2) { var parent_6 = node.parent; switch (parent_6.kind) { - case 163: - case 214: - case 217: - case 211: + case 165: + case 216: + case 219: + case 213: return parent_6.name === node && resolver.isNestedRedeclaration(parent_6); } } @@ -26246,8 +26699,8 @@ var ts; function emitIdentifier(node) { if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_22 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_22); return; } } @@ -26271,6 +26724,9 @@ var ts; if (resolver.getNodeCheckFlags(node) & 2) { write("_this"); } + else if (convertedLoopState) { + write(convertedLoopState.thisName || (convertedLoopState.thisName = makeUniqueName("this"))); + } else { write("this"); } @@ -26344,10 +26800,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 181 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 183 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 182 && node.parent.condition === node) { + else if (node.parent.kind === 184 && node.parent.condition === node) { return true; } return false; @@ -26355,11 +26811,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69: - case 164: case 166: - case 167: case 168: - case 172: + case 169: + case 170: + case 174: return false; } return true; @@ -26376,17 +26832,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 185) { + if (e.kind === 187) { e = e.expression; emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 164) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 166) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 185) { + while (i < length && elements[i].kind !== 187) { i++; } write("["); @@ -26409,7 +26865,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 185; + return node.kind === 187; } function emitArrayLiteral(node) { var elements = node.elements; @@ -26521,10 +26977,10 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 245) { + if (property.kind === 247) { emit(property.initializer); } - else if (property.kind === 246) { + else if (property.kind === 248) { emitExpressionIdentifier(property.name); } else if (property.kind === 143) { @@ -26573,35 +27029,35 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(181, startsOnNewLine); + var result = ts.createSynthesizedNode(183, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(166); + var result = ts.createSynthesizedNode(168); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(167); + var result = ts.createSynthesizedNode(169); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; } function parenthesizeForAccess(expr) { - while (expr.kind === 171 || expr.kind === 189) { + while (expr.kind === 173 || expr.kind === 191) { expr = expr.expression; } if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 169 && + expr.kind !== 171 && expr.kind !== 8) { return expr; } - var node = ts.createSynthesizedNode(172); + var node = ts.createSynthesizedNode(174); node.expression = expr; return node; } @@ -26628,7 +27084,7 @@ var ts; } function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 248; + return container && container.kind !== 250; } function emitShorthandPropertyAssignment(node) { writeTextOfNode(currentText, node.name); @@ -26646,7 +27102,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 166 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 168 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -26657,7 +27113,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 166 || node.kind === 167 + return node.kind === 168 || node.kind === 169 ? resolver.getConstantValue(node) : undefined; } @@ -26740,6 +27196,9 @@ var ts; case 135: emitQualifiedNameAsExpression(node, useFallback); break; + default: + emitNodeWithoutSourceMap(node); + break; } } function emitIndexedAccess(node) { @@ -26752,10 +27211,10 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 185; }); + return ts.forEach(elements, function (e) { return e.kind === 187; }); } function skipParentheses(node) { - while (node.kind === 172 || node.kind === 171 || node.kind === 189) { + while (node.kind === 174 || node.kind === 173 || node.kind === 191) { node = node.expression; } return node; @@ -26776,12 +27235,12 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 166) { + if (expr.kind === 168) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 167) { + else if (expr.kind === 169) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); @@ -26822,7 +27281,7 @@ var ts; } else { emit(node.expression); - superCall = node.expression.kind === 166 && node.expression.expression.kind === 95; + superCall = node.expression.kind === 168 && node.expression.expression.kind === 95; } if (superCall && languageVersion < 2) { write(".call("); @@ -26873,21 +27332,21 @@ var ts; } } function emitParenExpression(node) { - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 174) { - if (node.expression.kind === 171 || node.expression.kind === 189) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 176) { + if (node.expression.kind === 173 || node.expression.kind === 191) { var operand = node.expression.expression; - while (operand.kind === 171 || operand.kind === 189) { + while (operand.kind === 173 || operand.kind === 191) { operand = operand.expression; } - if (operand.kind !== 179 && + if (operand.kind !== 181 && + operand.kind !== 179 && + operand.kind !== 178 && operand.kind !== 177 && - operand.kind !== 176 && - operand.kind !== 175 && - operand.kind !== 180 && - operand.kind !== 169 && - !(operand.kind === 168 && node.parent.kind === 169) && - !(operand.kind === 173 && node.parent.kind === 168) && - !(operand.kind === 8 && node.parent.kind === 166)) { + operand.kind !== 182 && + operand.kind !== 171 && + !(operand.kind === 170 && node.parent.kind === 171) && + !(operand.kind === 175 && node.parent.kind === 170) && + !(operand.kind === 8 && node.parent.kind === 168)) { emit(operand); return; } @@ -26916,21 +27375,22 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 211 || node.parent.kind === 163); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 213 || node.parent.kind === 165); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); return isSourceFileLevelDeclarationInSystemJsModule(targetDeclaration, true); } function emitPrefixUnaryExpression(node) { - var exportChanged = isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); + var exportChanged = (node.operator === 41 || node.operator === 42) && + isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); if (exportChanged) { write(exportFunctionForFile + "(\""); emitNodeWithoutSourceMap(node.operand); write("\", "); } write(ts.tokenToString(node.operator)); - if (node.operand.kind === 179) { + if (node.operand.kind === 181) { var operand = node.operand; if (node.operator === 35 && (operand.operator === 35 || operand.operator === 41)) { write(" "); @@ -26973,10 +27433,10 @@ var ts; } var current = node; while (current) { - if (current.kind === 248) { + if (current.kind === 250) { return !isExported || ((ts.getCombinedNodeFlags(node) & 2) !== 0); } - else if (ts.isFunctionLike(current) || current.kind === 219) { + else if (ts.isFunctionLike(current) || current.kind === 221) { return false; } else { @@ -26992,7 +27452,7 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(167, false); + synthesizedLHS = ts.createSynthesizedNode(169, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 && @@ -27009,7 +27469,7 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(166, false); + synthesizedLHS = ts.createSynthesizedNode(168, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; @@ -27037,8 +27497,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 && node.operatorToken.kind === 56 && - (node.left.kind === 165 || node.left.kind === 164)) { - emitDestructuring(node, node.parent.kind === 195); + (node.left.kind === 167 || node.left.kind === 166)) { + emitDestructuring(node, node.parent.kind === 197); } else { var exportChanged = node.operatorToken.kind >= 56 && @@ -27090,7 +27550,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 192) { + if (node && node.kind === 194) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -27104,22 +27564,20 @@ var ts; } emitToken(15, node.pos); increaseIndent(); - scopeEmitStart(node.parent); - if (node.kind === 219) { - ts.Debug.assert(node.parent.kind === 218); + if (node.kind === 221) { + ts.Debug.assert(node.parent.kind === 220); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 219) { + if (node.kind === 221) { emitTempDeclarations(true); } decreaseIndent(); writeLine(); emitToken(16, node.statements.end); - scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 192) { + if (node.kind === 194) { write(" "); emit(node); } @@ -27131,7 +27589,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, node.expression.kind === 174); + emitParenthesizedIf(node.expression, node.expression.kind === 176); write(";"); } function emitIfStatement(node) { @@ -27144,7 +27602,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80, node.thenStatement.end); - if (node.elseStatement.kind === 196) { + if (node.elseStatement.kind === 198) { write(" "); emit(node.elseStatement); } @@ -27164,7 +27622,7 @@ var ts; else { emitNormalLoopBody(node, true); } - if (node.statement.kind === 192) { + if (node.statement.kind === 194) { write(" "); } else { @@ -27255,7 +27713,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 207) { + if (node.parent.kind === 209) { emitLabelAndColon(node.parent); } loopEmitter(node, loop); @@ -27265,10 +27723,10 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 199: - case 200: case 201: - if (node.initializer.kind === 212) { + case 202: + case 203: + if (node.initializer.kind === 214) { loopInitializer = node.initializer; } break; @@ -27281,7 +27739,7 @@ var ts; collectNames(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 192; + var bodyIsBlock = node.statement.kind === 194; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -27296,6 +27754,9 @@ var ts; if (convertedOuterLoopState.argumentsName) { convertedLoopState.argumentsName = convertedOuterLoopState.argumentsName; } + if (convertedOuterLoopState.thisName) { + convertedLoopState.thisName = convertedOuterLoopState.thisName; + } if (convertedOuterLoopState.hoistedLocalVariables) { convertedLoopState.hoistedLocalVariables = convertedOuterLoopState.hoistedLocalVariables; } @@ -27317,6 +27778,15 @@ var ts; writeLine(); } } + if (convertedLoopState.thisName) { + if (convertedOuterLoopState) { + convertedOuterLoopState.thisName = convertedLoopState.thisName; + } + else { + write("var " + convertedLoopState.thisName + " = this;"); + writeLine(); + } + } if (convertedLoopState.hoistedLocalVariables) { if (convertedOuterLoopState) { convertedOuterLoopState.hoistedLocalVariables = convertedLoopState.hoistedLocalVariables; @@ -27366,7 +27836,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 192) { + else if (node.statement.kind === 194) { emitLines(node.statement.statements); } else { @@ -27462,7 +27932,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer && node.initializer.kind === 212) { + if (node.initializer && node.initializer.kind === 214) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); if (startIsEmitted) { @@ -27488,7 +27958,7 @@ var ts; } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 && node.kind === 201) { + if (languageVersion < 2 && node.kind === 203) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -27499,7 +27969,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); @@ -27509,7 +27979,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 200) { + if (node.kind === 202) { write(" in "); } else { @@ -27524,9 +27994,6 @@ var ts; emitNormalLoopBody(node, true); } } - function emitDownLevelForOfStatement(node) { - emitLoop(node, emitDownLevelForOfStatementWorker); - } function emitDownLevelForOfStatementWorker(node, loop) { var endPos = emitToken(86, node.pos); write(" "); @@ -27565,7 +28032,7 @@ var ts; increaseIndent(); var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -27587,7 +28054,7 @@ var ts; } else { var assignmentExpression = createBinaryExpression(node.initializer, 56, rhsIterationValue, false); - if (node.initializer.kind === 164 || node.initializer.kind === 165) { + if (node.initializer.kind === 166 || node.initializer.kind === 167) { emitDestructuring(assignmentExpression, true, undefined); } else { @@ -27609,12 +28076,12 @@ var ts; } function emitBreakOrContinueStatement(node) { if (convertedLoopState) { - var jump = node.kind === 203 ? 2 : 4; + var jump = node.kind === 205 ? 2 : 4; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { if (!node.label) { - if (node.kind === 203) { + if (node.kind === 205) { convertedLoopState.nonLocalJumps |= 2; write("return \"break\";"); } @@ -27625,7 +28092,7 @@ var ts; } else { var labelMarker; - if (node.kind === 203) { + if (node.kind === 205) { labelMarker = "break-" + node.label.text; setLabeledJump(convertedLoopState, true, node.label.text, labelMarker); } @@ -27638,7 +28105,7 @@ var ts; return; } } - emitToken(node.kind === 203 ? 70 : 75, node.pos); + emitToken(node.kind === 205 ? 70 : 75, node.pos); emitOptional(" ", node.label); write(";"); } @@ -27703,7 +28170,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 241) { + if (node.kind === 243) { write("case "); emit(node.expression); write(":"); @@ -27772,7 +28239,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 218); + } while (node && node.kind !== 220); return node; } function emitContainingModuleName(node) { @@ -27797,20 +28264,20 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8); zero.text = "0"; - var result = ts.createSynthesizedNode(177); + var result = ts.createSynthesizedNode(179); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 248) { - ts.Debug.assert(!!(node.flags & 512) || node.kind === 227); + if (node.parent.kind === 250) { + ts.Debug.assert(!!(node.flags & 512) || node.kind === 229); if (modulekind === 1 || modulekind === 2 || modulekind === 3) { if (!isEs6Module) { - if (languageVersion === 1) { + if (languageVersion !== 0) { write("Object.defineProperty(exports, \"__esModule\", { value: true });"); writeLine(); } - else if (languageVersion === 0) { + else { write("exports.__esModule = true;"); writeLine(); } @@ -27898,7 +28365,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 211 || name.parent.kind === 163); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 213 || name.parent.kind === 165); if (isVariableDeclarationOrBindingElement) { emitModuleMemberName(name.parent); } @@ -27922,7 +28389,7 @@ var ts; function emitDestructuring(root, isAssignmentExpressionStatement, value) { var emitCount = 0; var canDefineTempVariablesInPlace = false; - if (root.kind === 211) { + if (root.kind === 213) { var isExported = ts.getCombinedNodeFlags(root) & 2; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; @@ -27930,7 +28397,7 @@ var ts; else if (root.kind === 138) { canDefineTempVariablesInPlace = true; } - if (root.kind === 181) { + if (root.kind === 183) { emitAssignmentExpression(root); } else { @@ -27947,14 +28414,14 @@ var ts; } function createDefaultValueCheck(value, defaultValue) { value = ensureIdentifier(value, true); - var equals = ts.createSynthesizedNode(181); + var equals = ts.createSynthesizedNode(183); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(182); + var cond = ts.createSynthesizedNode(184); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53); cond.whenTrue = whenTrue; @@ -27982,7 +28449,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(168); + var call = ts.createSynthesizedNode(170); var sliceIdentifier = ts.createSynthesizedNode(69); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -27997,9 +28464,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 245 || p.kind === 246) { + if (p.kind === 247 || p.kind === 248) { var propName = p.name; - var target_1 = p.kind === 246 ? p : p.initializer || propName; + var target_1 = p.kind === 248 ? p : p.initializer || propName; emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName)); } } @@ -28011,8 +28478,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187) { - if (e.kind !== 185) { + if (e.kind !== 189) { + if (e.kind !== 187) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i))); } else if (i === elements.length - 1) { @@ -28022,20 +28489,20 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 246) { + if (target.kind === 248) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer); } target = target.name; } - else if (target.kind === 181 && target.operatorToken.kind === 56) { + else if (target.kind === 183 && target.operatorToken.kind === 56) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 165) { + if (target.kind === 167) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 164) { + else if (target.kind === 166) { emitArrayLiteralAssignment(target, value); } else { @@ -28053,14 +28520,14 @@ var ts; emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 172) { + if (root.parent.kind !== 174) { write("("); } value = ensureIdentifier(value, true); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 172) { + if (root.parent.kind !== 174) { write(")"); } } @@ -28081,11 +28548,11 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 161) { + if (pattern.kind === 163) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 187) { + else if (element.kind !== 189) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } @@ -28117,8 +28584,8 @@ var ts; var isLetDefinedInLoop = (resolver.getNodeCheckFlags(node) & 16384) && (getCombinedFlagsForIdentifier(node.name) & 8192); if (isLetDefinedInLoop && - node.parent.parent.kind !== 200 && - node.parent.parent.kind !== 201) { + node.parent.parent.kind !== 202 && + node.parent.parent.kind !== 203) { initializer = createVoidZero(); } } @@ -28136,7 +28603,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 187) { + if (node.kind === 189) { return; } var name = node.name; @@ -28148,7 +28615,7 @@ var ts; } } function getCombinedFlagsForIdentifier(node) { - if (!node.parent || (node.parent.kind !== 211 && node.parent.kind !== 163)) { + if (!node.parent || (node.parent.kind !== 213 && node.parent.kind !== 165)) { return 0; } return ts.getCombinedNodeFlags(node.parent); @@ -28156,7 +28623,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 2) && modulekind === 5 && - node.parent.kind === 248; + node.parent.kind === 250; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -28201,12 +28668,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name_25 = createTempVariable(0); + var name_23 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_25); - emit(name_25); + tempParameters.push(name_23); + emit(name_23); } else { emit(node.name); @@ -28310,7 +28777,7 @@ var ts; emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 174 && languageVersion >= 2; + return node.kind === 176 && languageVersion >= 2; } function emitDeclarationName(node) { if (node.name) { @@ -28321,20 +28788,24 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 173) { + if (node.kind === 175) { return !!node.name; } - if (node.kind === 213) { - return !!node.name || languageVersion < 2; + if (node.kind === 215) { + return !!node.name || modulekind !== 5; } } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { return emitCommentsOnNotEmittedNode(node); } - if (node.kind !== 143 && node.kind !== 142 && - node.parent && node.parent.kind !== 245 && - node.parent.kind !== 168) { + var kind = node.kind, parent = node.parent; + if (kind !== 143 && + kind !== 142 && + parent && + parent.kind !== 247 && + parent.kind !== 170 && + parent.kind !== 166) { emitLeadingComments(node); } emitStart(node); @@ -28355,11 +28826,11 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== 5 && node.kind === 213 && node.parent === currentSourceFile && node.name) { + if (modulekind !== 5 && kind === 215 && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (node.kind !== 143 && node.kind !== 142) { + if (kind !== 143 && kind !== 142) { emitTrailingComments(node); } } @@ -28391,7 +28862,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 174; + var isArrowFunction = node.kind === 176; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 4096) !== 0; if (!isArrowFunction) { write(" {"); @@ -28401,17 +28872,16 @@ var ts; } write(" __awaiter(this"); if (hasLexicalArguments) { - write(", arguments"); + write(", arguments, "); } else { - write(", void 0"); + write(", void 0, "); } if (promiseConstructor) { - write(", "); - emitNodeWithoutSourceMap(promiseConstructor); + emitEntityNameAsExpression(promiseConstructor, false); } else { - write(", Promise"); + write("Promise"); } if (hasLexicalArguments) { write(", function* (_arguments)"); @@ -28433,7 +28903,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 192) { + if (node.body.kind === 194) { emitBlockFunctionBody(node, node.body); } else { @@ -28458,7 +28928,7 @@ var ts; emitSignatureParameters(node); } var isAsync = ts.isAsyncFunctionLike(node); - if (isAsync && languageVersion === 2) { + if (isAsync) { emitAsyncFunctionBodyForES6(node); } else { @@ -28485,14 +28955,13 @@ var ts; } write(" "); var current = body; - while (current.kind === 171) { + while (current.kind === 173) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 165); + emitParenthesizedIf(body, current.kind === 167); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); increaseIndent(); var outPos = writer.getTextPos(); emitDetachedCommentsAndUpdateCommentsInfo(node.body); @@ -28513,8 +28982,10 @@ var ts; increaseIndent(); writeLine(); emitLeadingComments(node.body); + emitStart(body); write("return "); emit(body); + emitEnd(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(true); @@ -28524,11 +28995,9 @@ var ts; emitStart(node.body); write("}"); emitEnd(node.body); - scopeEmitEnd(); } function emitBlockFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedCommentsAndUpdateCommentsInfo(body.statements); @@ -28555,14 +29024,13 @@ var ts; decreaseIndent(); } emitToken(16, body.statements.end); - scopeEmitEnd(); } function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 195) { + if (statement && statement.kind === 197) { var expr = statement.expression; - if (expr && expr.kind === 168) { + if (expr && expr.kind === 170) { var func = expr.expression; if (func && func.kind === 95) { return statement; @@ -28645,7 +29113,7 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 191) { + if (member.kind === 193) { writeLine(); write(";"); } @@ -28742,7 +29210,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 191) { + else if (member.kind === 193) { writeLine(); write(";"); } @@ -28803,7 +29271,6 @@ var ts; } var startIndex = 0; write(" {"); - scopeEmitStart(node, "constructor"); increaseIndent(); if (ctor) { startIndex = emitDirectivePrologues(ctor.body.statements, true); @@ -28851,7 +29318,6 @@ var ts; } decreaseIndent(); emitToken(16, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); emitEnd(ctor || node); if (ctor) { emitTrailingComments(ctor); @@ -28876,7 +29342,7 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 214) { + if (node.kind === 216) { if (thisNodeIsDecorated) { if (isES6ExportedDeclaration(node) && !(node.flags & 512)) { write("export "); @@ -28893,7 +29359,7 @@ var ts; } } var staticProperties = getInitializedProperties(node, true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 186; + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 188; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0); @@ -28903,7 +29369,7 @@ var ts; write(" = "); } write("class"); - if ((node.name || (node.flags & 512 && staticProperties.length > 0)) && !thisNodeIsDecorated) { + if ((node.name || (node.flags & 512 && (staticProperties.length > 0 || modulekind !== 5))) && !thisNodeIsDecorated) { write(" "); emitDeclarationName(node); } @@ -28914,14 +29380,12 @@ var ts; } write(" {"); increaseIndent(); - scopeEmitStart(node); writeLine(); emitConstructor(node, baseTypeNode); emitMemberFunctionsForES6AndHigher(node); decreaseIndent(); writeLine(); emitToken(16, node.members.end); - scopeEmitEnd(); if (thisNodeIsDecorated) { write(";"); } @@ -28943,24 +29407,34 @@ var ts; emitPropertyDeclarations(node, staticProperties); emitDecoratorsOfClass(node); } - if (!isES6ExportedDeclaration(node) && (node.flags & 2)) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emitDeclarationName(node); - emitEnd(node); - write(";"); + if (!(node.flags & 2)) { + return; } - else if (isES6ExportedDeclaration(node) && (node.flags & 512) && thisNodeIsDecorated) { - writeLine(); - write("export default "); - emitDeclarationName(node); - write(";"); + if (modulekind !== 5) { + emitExportMemberAssignment(node); + } + else { + if (node.flags & 512) { + if (thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + else if (node.parent.kind !== 250) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 214) { + if (node.kind === 216) { if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); } @@ -28984,7 +29458,6 @@ var ts; tempParameters = undefined; computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); - scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); @@ -29015,18 +29488,17 @@ var ts; decreaseIndent(); writeLine(); emitToken(16, node.members.end); - scopeEmitEnd(); emitStart(node); - write(")("); + write("("); if (baseTypeNode) { emit(baseTypeNode.expression); } - write(")"); - if (node.kind === 214) { + write("))"); + if (node.kind === 216) { write(";"); } emitEnd(node); - if (node.kind === 214) { + if (node.kind === 216) { emitExportMemberAssignment(node); } } @@ -29044,30 +29516,29 @@ var ts; function emitDecoratorsOfConstructor(node) { var decorators = node.decorators; var constructor = ts.getFirstConstructorWithBody(node); - var hasDecoratedParameters = constructor && ts.forEach(constructor.parameters, ts.nodeIsDecorated); - if (!decorators && !hasDecoratedParameters) { + var firstParameterDecorator = constructor && ts.forEach(constructor.parameters, function (parameter) { return parameter.decorators; }); + if (!decorators && !firstParameterDecorator) { return; } writeLine(); - emitStart(node); + emitStart(node.decorators || firstParameterDecorator); emitDeclarationName(node); write(" = __decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(constructor, argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(constructor, argumentsWritten > 0); + } emitSerializedTypeMetadata(node, argumentsWritten >= 0); decreaseIndent(); writeLine(); write("], "); emitDeclarationName(node); - write(");"); - emitEnd(node); + write(")"); + emitEnd(node.decorators || firstParameterDecorator); + write(";"); writeLine(); } function emitDecoratorsOfMembers(node, staticFlag) { @@ -29079,9 +29550,6 @@ var ts; if (!ts.nodeCanBeDecorated(member)) { continue; } - if (!ts.nodeOrChildIsDecorated(member)) { - continue; - } var decorators = void 0; var functionLikeMember = void 0; if (ts.isAccessor(member)) { @@ -29101,27 +29569,27 @@ var ts; functionLikeMember = member; } } + var firstParameterDecorator = functionLikeMember && ts.forEach(functionLikeMember.parameters, function (parameter) { return parameter.decorators; }); + if (!decorators && !firstParameterDecorator) { + continue; + } writeLine(); - emitStart(member); + emitStart(decorators || firstParameterDecorator); write("__decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + } emitSerializedTypeMetadata(member, argumentsWritten > 0); decreaseIndent(); writeLine(); write("], "); - emitStart(member.name); emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); - emitEnd(member.name); if (languageVersion > 0) { if (member.kind !== 141) { write(", null"); @@ -29130,8 +29598,9 @@ var ts; write(", void 0"); } } - write(");"); - emitEnd(member); + write(")"); + emitEnd(decorators || firstParameterDecorator); + write(";"); writeLine(); } } @@ -29144,15 +29613,13 @@ var ts; if (ts.nodeIsDecorated(parameter)) { var decorators = parameter.decorators; argumentsWritten += emitList(decorators, 0, decorators.length, true, false, leadingComma, true, function (decorator) { - emitStart(decorator); write("__param(" + parameterIndex + ", "); emit(decorator.expression); write(")"); - emitEnd(decorator); }); leadingComma = true; } - ++parameterIndex; + parameterIndex++; } } return argumentsWritten; @@ -29176,7 +29643,7 @@ var ts; } function shouldEmitParamTypesMetadata(node) { switch (node.kind) { - case 214: + case 216: case 143: case 146: return true; @@ -29185,7 +29652,7 @@ var ts; } function emitSerializedTypeOfNode(node) { switch (node.kind) { - case 214: + case 216: write("Function"); return; case 141: @@ -29229,7 +29696,7 @@ var ts; write("Boolean"); return; case 130: - case 9: + case 162: write("String"); return; case 128: @@ -29246,6 +29713,7 @@ var ts; case 158: case 159: case 117: + case 161: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -29259,8 +29727,7 @@ var ts; while (ts.isDeclaration(location) || ts.isTypeNode(location)) { location = location.parent; } - var typeName = ts.cloneEntityName(node.typeName); - typeName.parent = location; + var typeName = ts.cloneEntityName(node.typeName, location); var result = resolver.getTypeReferenceSerializationKind(typeName); switch (result) { case ts.TypeReferenceSerializationKind.Unknown: @@ -29310,7 +29777,7 @@ var ts; function emitSerializedParameterTypesOfNode(node) { if (node) { var valueDeclaration; - if (node.kind === 214) { + if (node.kind === 216) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -29400,9 +29867,10 @@ var ts; return; } if (!shouldHoistDeclarationInSystemJsModule(node)) { - if (!(node.flags & 2) || isES6ExportedDeclaration(node)) { + var isES6ExportedEnum = isES6ExportedDeclaration(node); + if (!(node.flags & 2) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 219))) { emitStart(node); - if (isES6ExportedDeclaration(node)) { + if (isES6ExportedEnum) { write("export "); } write("var "); @@ -29419,12 +29887,10 @@ var ts; emitEnd(node.name); write(") {"); increaseIndent(); - scopeEmitStart(node); emitLines(node.members); decreaseIndent(); writeLine(); emitToken(16, node.members.end); - scopeEmitEnd(); write(")("); emitModuleMemberName(node); write(" || ("); @@ -29482,7 +29948,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 218) { + if (moduleDeclaration.body.kind === 220) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -29493,6 +29959,9 @@ var ts; function isModuleMergedWithES6Class(node) { return languageVersion === 2 && !!(resolver.getNodeCheckFlags(node) & 32768); } + function isFirstDeclarationOfKind(node, declarations, kind) { + return !ts.forEach(declarations, function (declaration) { return declaration.kind === kind && declaration.pos < node.pos; }); + } function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { @@ -29501,15 +29970,18 @@ var ts; var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { - emitStart(node); - if (isES6ExportedDeclaration(node)) { - write("export "); + var isES6ExportedNamespace = isES6ExportedDeclaration(node); + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 220)) { + 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); write("(function ("); @@ -29517,7 +29989,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 219) { + if (node.body.kind === 221) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -29533,7 +30005,6 @@ var ts; else { write("{"); increaseIndent(); - scopeEmitStart(node); emitCaptureThisForNodeIfNecessary(node); writeLine(); emit(node.body); @@ -29541,7 +30012,6 @@ var ts; writeLine(); var moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; emitToken(16, moduleBlock.statements.end); - scopeEmitEnd(); } write(")("); if ((node.flags & 2) && !isES6ExportedDeclaration(node)) { @@ -29590,16 +30060,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 221) { + if (node.kind === 223) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 224) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 226) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 222 && node.importClause && !!node.importClause.name; + return node.kind === 224 && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -29626,7 +30096,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 224) { + if (node.importClause.namedBindings.kind === 226) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -29652,7 +30122,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 221 && (node.flags & 2) !== 0; + var isExportedImport = node.kind === 223 && (node.flags & 2) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); if (modulekind !== 2) { emitLeadingComments(node); @@ -29664,7 +30134,7 @@ var ts; write(" = "); } else { - var isNakedImport = 222 && !node.importClause; + var isNakedImport = 224 && !node.importClause; if (!isNakedImport) { write("var "); write(getGeneratedNameForNode(node)); @@ -29771,15 +30241,17 @@ var ts; } } else { - writeLine(); - write("__export("); - if (modulekind !== 2) { - emitRequire(ts.getExternalModuleName(node)); + if (hasExportStarsToExportValues && resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + writeLine(); + write("__export("); + if (modulekind !== 2) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); } - else { - write(generatedName); - } - write(");"); } emitEnd(node); } @@ -29829,8 +30301,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 213 && - expression.kind !== 214) { + if (expression.kind !== 215 && + expression.kind !== 216) { write(";"); } emitEnd(node); @@ -29863,26 +30335,28 @@ var ts; externalImports = []; exportSpecifiers = {}; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 222: + case 224: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, true)) { externalImports.push(node); } break; - case 221: - if (node.moduleReference.kind === 232 && resolver.isReferencedAliasDeclaration(node)) { + case 223: + if (node.moduleReference.kind === 234 && resolver.isReferencedAliasDeclaration(node)) { externalImports.push(node); } break; - case 228: + case 230: if (node.moduleSpecifier) { if (!node.exportClause) { - externalImports.push(node); - hasExportStars = true; + if (resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + externalImports.push(node); + hasExportStarsToExportValues = true; + } } else if (resolver.isValueAliasDeclaration(node)) { externalImports.push(node); @@ -29891,12 +30365,12 @@ var ts; else { for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_26 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_26] || (exportSpecifiers[name_26] = [])).push(specifier); + var name_24 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_24] || (exportSpecifiers[name_24] = [])).push(specifier); } } break; - case 227: + case 229: if (node.isExportEquals && !exportEquals) { exportEquals = node; } @@ -29905,7 +30379,7 @@ var ts; } } function emitExportStarHelper() { - if (hasExportStars) { + if (hasExportStarsToExportValues) { writeLine(); write("function __export(m) {"); increaseIndent(); @@ -29921,14 +30395,20 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 222 && node.importClause) { + if (node.kind === 224 && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 228 && node.moduleSpecifier) { + if (node.kind === 230 && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } - function getExternalModuleNameText(importNode) { + function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { + if (emitRelativePathAsModuleName) { + var name_25 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_25) { + return "\"" + name_25 + "\""; + } + } var moduleName = ts.getExternalModuleName(importNode); if (moduleName.kind === 9) { return tryRenameExternalModule(moduleName) || getLiteralText(moduleName); @@ -29943,8 +30423,8 @@ var ts; var started = false; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; - var skipNode = importNode.kind === 228 || - (importNode.kind === 222 && !importNode.importClause); + var skipNode = importNode.kind === 230 || + (importNode.kind === 224 && !importNode.importClause); if (skipNode) { continue; } @@ -29962,14 +30442,14 @@ var ts; } } function emitLocalStorageForExportedNamesIfNecessary(exportedDeclarations) { - if (!hasExportStars) { + if (!hasExportStarsToExportValues) { return undefined; } if (!exportedDeclarations && ts.isEmpty(exportSpecifiers)) { var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 228 && externalImport.exportClause) { + if (externalImport.kind === 230 && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -29984,7 +30464,7 @@ var ts; increaseIndent(); var started = false; if (exportedDeclarations) { - for (var i = 0; i < exportedDeclarations.length; ++i) { + for (var i = 0; i < exportedDeclarations.length; i++) { writeExportedName(exportedDeclarations[i]); } } @@ -29998,7 +30478,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 228) { + if (externalImport.kind !== 230) { continue; } var exportDecl = externalImport; @@ -30070,13 +30550,13 @@ var ts; writeLine(); write("var "); var seen = {}; - for (var i = 0; i < hoistedVars.length; ++i) { + for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_27 = local.kind === 69 + var name_26 = local.kind === 69 ? local : local.name; - if (name_27) { - var text = ts.unescapeIdentifier(name_27.text); + if (name_26) { + var text = ts.unescapeIdentifier(name_26.text); if (ts.hasProperty(seen, text)) { continue; } @@ -30087,7 +30567,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 214 || local.kind === 218 || local.kind === 217) { + if (local.kind === 216 || local.kind === 220 || local.kind === 219) { emitDeclarationName(local); } else { @@ -30121,21 +30601,21 @@ var ts; if (node.flags & 4) { return; } - if (node.kind === 213) { + if (node.kind === 215) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 214) { + if (node.kind === 216) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 217) { + if (node.kind === 219) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -30144,7 +30624,7 @@ var ts; } return; } - if (node.kind === 218) { + if (node.kind === 220) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -30153,17 +30633,17 @@ var ts; } return; } - if (node.kind === 211 || node.kind === 163) { + if (node.kind === 213 || node.kind === 165) { if (shouldHoistVariable(node, false)) { - var name_28 = node.name; - if (name_28.kind === 69) { + var name_27 = node.name; + if (name_27.kind === 69) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_28); + hoistedVars.push(name_27); } else { - ts.forEachChild(name_28, visit); + ts.forEachChild(name_27, visit); } } return; @@ -30189,7 +30669,7 @@ var ts; return false; } return (ts.getCombinedNodeFlags(node) & 24576) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 248; + ts.getEnclosingBlockScopeContainer(node).kind === 250; } function isCurrentFileSystemExternalModule() { return modulekind === 4 && isCurrentFileExternalModule; @@ -30213,7 +30693,7 @@ var ts; } function emitSetters(exportStarFunction, dependencyGroups) { write("setters:["); - for (var i = 0; i < dependencyGroups.length; ++i) { + for (var i = 0; i < dependencyGroups.length; i++) { if (i !== 0) { write(","); } @@ -30227,24 +30707,24 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 222: + case 224: if (!entry.importClause) { break; } - case 221: + case 223: ts.Debug.assert(importVariableName !== ""); writeLine(); write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 228: + case 230: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { writeLine(); write(exportFunctionForFile + "({"); writeLine(); increaseIndent(); - for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; ++i_2) { + for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; i_2++) { if (i_2 !== 0) { write(","); writeLine(); @@ -30278,13 +30758,13 @@ var ts; write("execute: function() {"); increaseIndent(); writeLine(); - for (var i = startIndex; i < node.statements.length; ++i) { + for (var i = startIndex; i < node.statements.length; i++) { var statement = node.statements[i]; switch (statement.kind) { - case 213: - case 222: + case 215: + case 224: continue; - case 228: + case 230: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -30292,7 +30772,7 @@ var ts; } } continue; - case 221: + case 223: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { continue; } @@ -30321,8 +30801,8 @@ var ts; write("["); var groupIndices = {}; var dependencyGroups = []; - for (var i = 0; i < externalImports.length; ++i) { - var text = getExternalModuleNameText(externalImports[i]); + for (var i = 0; i < externalImports.length; i++) { + var text = getExternalModuleNameText(externalImports[i], emitRelativePathAsModuleName); if (ts.hasProperty(groupIndices, text)) { var groupIndex = groupIndices[text]; dependencyGroups[groupIndex].push(externalImports[i]); @@ -30335,18 +30815,12 @@ var ts; if (i !== 0) { write(", "); } - if (emitRelativePathAsModuleName) { - var name_29 = getExternalModuleNameFromDeclaration(host, resolver, externalImports[i]); - if (name_29) { - text = "\"" + name_29 + "\""; - } - } write(text); } write("], function(" + exportFunctionForFile + ") {"); writeLine(); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, true); + var startIndex = emitDirectivePrologues(node.statements, true, true); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitSystemModuleBody(node, dependencyGroups, startIndex); @@ -30370,13 +30844,7 @@ var ts; } for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { var importNode = externalImports_4[_c]; - var externalModuleName = getExternalModuleNameText(importNode); - if (emitRelativePathAsModuleName) { - var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_30) { - externalModuleName = "\"" + name_30 + "\""; - } - } + var externalModuleName = getExternalModuleNameText(importNode, emitRelativePathAsModuleName); var importAliasName = getLocalNameForExternalImport(importNode); if (includeNonAmdDependencies && importAliasName) { aliasedModuleNames.push(externalModuleName); @@ -30424,7 +30892,7 @@ var ts; writeModuleName(node, emitRelativePathAsModuleName); emitAMDDependencies(node, true, emitRelativePathAsModuleName); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, true); + var startIndex = emitDirectivePrologues(node.statements, true, true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -30435,7 +30903,7 @@ var ts; write("});"); } function emitCommonJSModule(node) { - var startIndex = emitDirectivePrologues(node.statements, false); + var startIndex = emitDirectivePrologues(node.statements, false, true); emitEmitHelpers(node); collectExternalModuleInfo(node); emitExportStarHelper(); @@ -30454,7 +30922,7 @@ var ts; writeLines(" }\n})("); emitAMDFactoryHeader(dependencyNames); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, true); + var startIndex = emitDirectivePrologues(node.statements, true, true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -30468,7 +30936,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; var startIndex = emitDirectivePrologues(node.statements, false); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); @@ -30524,7 +30992,8 @@ var ts; if (result) { result = result.replace(/&(\w+);/g, function (s, m) { if (entities[m] !== undefined) { - return String.fromCharCode(entities[m]); + var ch = String.fromCharCode(entities[m]); + return ch === "\"" ? "\\\"" : ch; } else { return s; @@ -30576,23 +31045,40 @@ var ts; } } } - function emitDirectivePrologues(statements, startWithNewLine) { - for (var i = 0; i < statements.length; ++i) { + function isUseStrictPrologue(node) { + return !!node.expression.text.match(/use strict/); + } + function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { + if (writeUseStrict) { + if (startWithNewLine) { + writeLine(); + } + write("\"use strict\";"); + } + } + function emitDirectivePrologues(statements, startWithNewLine, ensureUseStrict) { + var foundUseStrict = false; + for (var i = 0; i < statements.length; i++) { if (ts.isPrologueDirective(statements[i])) { + if (isUseStrictPrologue(statements[i])) { + foundUseStrict = true; + } if (startWithNewLine || i > 0) { writeLine(); } emit(statements[i]); } else { + ensureUseStrictPrologue(startWithNewLine || i > 0, !foundUseStrict && ensureUseStrict); return i; } } + ensureUseStrictPrologue(startWithNewLine, !foundUseStrict && ensureUseStrict); return statements.length; } function writeLines(text) { var lines = text.split(/\r\n|\r|\n/g); - for (var i = 0; i < lines.length; ++i) { + for (var i = 0; i < lines.length; i++) { var line = lines[i]; if (line.length) { writeLine(); @@ -30628,7 +31114,7 @@ var ts; emitShebang(); emitDetachedCommentsAndUpdateCommentsInfo(node); if (ts.isExternalModule(node) || compilerOptions.isolatedModules) { - if (root || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { + if (isOwnFileEmit || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { var emitModule = moduleEmitDelegates[modulekind] || moduleEmitDelegates[1]; emitModule(node); } @@ -30641,7 +31127,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -30649,6 +31135,9 @@ var ts; } emitLeadingComments(node.endOfFileToken); } + function emit(node) { + emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); + } function emitNodeWithCommentsAndWithoutSourcemap(node) { emitNodeConsideringCommentsOption(node, emitNodeWithoutSourceMap); } @@ -30670,6 +31159,13 @@ var ts; } } } + function emitNodeWithSourceMap(node) { + if (node) { + emitStart(node); + emitNodeWithoutSourceMap(node); + emitEnd(node); + } + } function emitNodeWithoutSourceMap(node) { if (node) { emitJavaScriptWorker(node); @@ -30677,28 +31173,28 @@ var ts; } function isSpecializedCommentHandling(node) { switch (node.kind) { + case 217: case 215: - case 213: - case 222: - case 221: - case 216: - case 227: + case 224: + case 223: + case 218: + case 229: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 193: + case 195: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 218: + case 220: return shouldEmitModuleDeclaration(node); - case 217: + case 219: return shouldEmitEnumDeclaration(node); } ts.Debug.assert(!isSpecializedCommentHandling(node)); - if (node.kind !== 192 && + if (node.kind !== 194 && node.parent && - node.parent.kind === 174 && + node.parent.kind === 176 && node.parent.body === node && compilerOptions.target <= 1) { return false; @@ -30735,142 +31231,142 @@ var ts; case 13: case 14: return emitLiteral(node); - case 183: + case 185: return emitTemplateExpression(node); - case 190: + case 192: return emitTemplateSpan(node); - case 233: - case 234: - return emitJsxElement(node); + case 235: case 236: + return emitJsxElement(node); + case 238: return emitJsxText(node); - case 240: + case 242: return emitJsxExpression(node); case 135: return emitQualifiedName(node); - case 161: - return emitObjectBindingPattern(node); - case 162: - return emitArrayBindingPattern(node); case 163: - return emitBindingElement(node); + return emitObjectBindingPattern(node); case 164: - return emitArrayLiteral(node); + return emitArrayBindingPattern(node); case 165: + return emitBindingElement(node); + case 166: + return emitArrayLiteral(node); + case 167: return emitObjectLiteral(node); - case 245: + case 247: return emitPropertyAssignment(node); - case 246: + case 248: return emitShorthandPropertyAssignment(node); case 136: return emitComputedPropertyName(node); - case 166: - return emitPropertyAccess(node); - case 167: - return emitIndexedAccess(node); case 168: - return emitCallExpression(node); + return emitPropertyAccess(node); case 169: - return emitNewExpression(node); + return emitIndexedAccess(node); case 170: - return emitTaggedTemplateExpression(node); + return emitCallExpression(node); case 171: - return emit(node.expression); - case 189: - return emit(node.expression); + return emitNewExpression(node); case 172: - return emitParenExpression(node); - case 213: + return emitTaggedTemplateExpression(node); case 173: + return emit(node.expression); + case 191: + return emit(node.expression); case 174: - return emitFunctionDeclaration(node); - case 175: - return emitDeleteExpression(node); - case 176: - return emitTypeOfExpression(node); - case 177: - return emitVoidExpression(node); - case 178: - return emitAwaitExpression(node); - case 179: - return emitPrefixUnaryExpression(node); - case 180: - return emitPostfixUnaryExpression(node); - case 181: - return emitBinaryExpression(node); - case 182: - return emitConditionalExpression(node); - case 185: - return emitSpreadElementExpression(node); - case 184: - return emitYieldExpression(node); - case 187: - return; - case 192: - case 219: - return emitBlock(node); - case 193: - return emitVariableStatement(node); - case 194: - return write(";"); - case 195: - return emitExpressionStatement(node); - case 196: - return emitIfStatement(node); - case 197: - return emitDoStatement(node); - case 198: - return emitWhileStatement(node); - case 199: - return emitForStatement(node); - case 201: - case 200: - return emitForInOrForOfStatement(node); - case 202: - case 203: - return emitBreakOrContinueStatement(node); - case 204: - return emitReturnStatement(node); - case 205: - return emitWithStatement(node); - case 206: - return emitSwitchStatement(node); - case 241: - case 242: - return emitCaseOrDefaultClause(node); - case 207: - return emitLabeledStatement(node); - case 208: - return emitThrowStatement(node); - case 209: - return emitTryStatement(node); - case 244: - return emitCatchClause(node); - case 210: - return emitDebuggerStatement(node); - case 211: - return emitVariableDeclaration(node); - case 186: - return emitClassExpression(node); - case 214: - return emitClassDeclaration(node); + return emitParenExpression(node); case 215: - return emitInterfaceDeclaration(node); - case 217: - return emitEnumDeclaration(node); - case 247: - return emitEnumMember(node); - case 218: - return emitModuleDeclaration(node); - case 222: - return emitImportDeclaration(node); + case 175: + case 176: + return emitFunctionDeclaration(node); + case 177: + return emitDeleteExpression(node); + case 178: + return emitTypeOfExpression(node); + case 179: + return emitVoidExpression(node); + case 180: + return emitAwaitExpression(node); + case 181: + return emitPrefixUnaryExpression(node); + case 182: + return emitPostfixUnaryExpression(node); + case 183: + return emitBinaryExpression(node); + case 184: + return emitConditionalExpression(node); + case 187: + return emitSpreadElementExpression(node); + case 186: + return emitYieldExpression(node); + case 189: + return; + case 194: case 221: + return emitBlock(node); + case 195: + return emitVariableStatement(node); + case 196: + return write(";"); + case 197: + return emitExpressionStatement(node); + case 198: + return emitIfStatement(node); + case 199: + return emitDoStatement(node); + case 200: + return emitWhileStatement(node); + case 201: + return emitForStatement(node); + case 203: + case 202: + return emitForInOrForOfStatement(node); + case 204: + case 205: + return emitBreakOrContinueStatement(node); + case 206: + return emitReturnStatement(node); + case 207: + return emitWithStatement(node); + case 208: + return emitSwitchStatement(node); + case 243: + case 244: + return emitCaseOrDefaultClause(node); + case 209: + return emitLabeledStatement(node); + case 210: + return emitThrowStatement(node); + case 211: + return emitTryStatement(node); + case 246: + return emitCatchClause(node); + case 212: + return emitDebuggerStatement(node); + case 213: + return emitVariableDeclaration(node); + case 188: + return emitClassExpression(node); + case 216: + return emitClassDeclaration(node); + case 217: + return emitInterfaceDeclaration(node); + case 219: + return emitEnumDeclaration(node); + case 249: + return emitEnumMember(node); + case 220: + return emitModuleDeclaration(node); + case 224: + return emitImportDeclaration(node); + case 223: return emitImportEqualsDeclaration(node); - case 228: + case 230: return emitExportDeclaration(node); - case 227: + case 229: return emitExportAssignment(node); - case 248: + case 250: return emitSourceFileNode(node); } } @@ -30900,7 +31396,7 @@ var ts; } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 248 || node.pos !== node.parent.pos) { + if (node.parent.kind === 250 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { return getLeadingCommentsWithoutDetachedComments(); } @@ -30912,7 +31408,7 @@ var ts; } function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 248 || node.end !== node.parent.end) { + if (node.parent.kind === 250 || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -30978,18 +31474,30 @@ var ts; } } } + function writeComment(text, lineMap, writer, comment, newLine) { + emitPos(comment.pos); + ts.writeCommentRange(text, lineMap, writer, comment, newLine); + emitPos(comment.end); + } function emitShebang() { var shebang = ts.getShebang(currentText); if (shebang) { write(shebang); + writeLine(); } } var _a, _b; } - function emitFile(jsFilePath, sourceFile) { - emitJavaScript(jsFilePath, sourceFile); - if (compilerOptions.declaration) { - ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); + function emitFile(_a, sourceFiles, isBundledEmit) { + var jsFilePath = _a.jsFilePath, sourceMapFilePath = _a.sourceMapFilePath, declarationFilePath = _a.declarationFilePath; + if (!host.isEmitBlocked(jsFilePath) && !compilerOptions.noEmit) { + emitJavaScript(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + } + else { + emitSkipped = true; + } + if (declarationFilePath) { + emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } } } @@ -31003,10 +31511,10 @@ var ts; ts.ioWriteTime = 0; var emptyArray = []; ts.version = "1.8.0"; - function findConfigFile(searchPath) { + function findConfigFile(searchPath, fileExists) { var fileName = "tsconfig.json"; while (true) { - if (ts.sys.fileExists(fileName)) { + if (fileExists(fileName)) { return fileName; } var parentPath = ts.getDirectoryPath(searchPath); @@ -31030,21 +31538,22 @@ var ts; ? compilerOptions.moduleResolution : compilerOptions.module === 1 ? 2 : 1; switch (moduleResolution) { - case 2: return nodeModuleNameResolver(moduleName, containingFile, host); + case 2: return nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host); case 1: return classicNameResolver(moduleName, containingFile, compilerOptions, host); } } ts.resolveModuleName = resolveModuleName; - function nodeModuleNameResolver(moduleName, containingFile, host) { + function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host) { var containingDirectory = ts.getDirectoryPath(containingFile); + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); if (ts.getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { var failedLookupLocations = []; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); - var resolvedFileName = loadNodeModuleFromFile(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + var resolvedFileName = loadNodeModuleFromFile(supportedExtensions, candidate, failedLookupLocations, false, host); if (resolvedFileName) { return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } - resolvedFileName = loadNodeModuleFromDirectory(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + resolvedFileName = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, false, host); return resolvedFileName ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; @@ -31054,11 +31563,15 @@ var ts; } } ts.nodeModuleNameResolver = nodeModuleNameResolver; - function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, host) { + function directoryProbablyExists(directoryName, host) { + return !host.directoryExists || host.directoryExists(directoryName); + } + ts.directoryProbablyExists = directoryProbablyExists; + function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { return ts.forEach(extensions, tryLoad); function tryLoad(ext) { var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; - if (host.fileExists(fileName)) { + if (!onlyRecordFailures && host.fileExists(fileName)) { return fileName; } else { @@ -31067,9 +31580,10 @@ var ts; } } } - function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, host) { + function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { var packageJsonPath = ts.combinePaths(candidate, "package.json"); - if (host.fileExists(packageJsonPath)) { + var directoryExists = !onlyRecordFailures && directoryProbablyExists(candidate, host); + if (directoryExists && host.fileExists(packageJsonPath)) { var jsonContent; try { var jsonText = host.readFile(packageJsonPath); @@ -31078,8 +31592,9 @@ var ts; catch (e) { jsonContent = { typings: undefined }; } - if (jsonContent.typings) { - var result = loadNodeModuleFromFile(extensions, ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)), failedLookupLocation, host); + if (typeof jsonContent.typings === "string") { + var path = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); + var result = loadNodeModuleFromFile(extensions, path, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(path), host), host); if (result) { return result; } @@ -31088,7 +31603,7 @@ var ts; else { failedLookupLocation.push(packageJsonPath); } - return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, host); + return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, !directoryExists, host); } function loadModuleFromNodeModules(moduleName, directory, host) { var failedLookupLocations = []; @@ -31097,12 +31612,13 @@ var ts; var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); + var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, host); var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); - var result = loadNodeModuleFromFile(ts.supportedExtensions, candidate, failedLookupLocations, host); + var result = loadNodeModuleFromFile(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } - result = loadNodeModuleFromDirectory(ts.supportedExtensions, candidate, failedLookupLocations, host); + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } @@ -31127,10 +31643,10 @@ var ts; var searchName; var failedLookupLocations = []; var referencedSourceFile; - var extensions = compilerOptions.allowNonTsExtensions ? ts.supportedJsExtensions : ts.supportedExtensions; + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); while (true) { searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - referencedSourceFile = ts.forEach(extensions, function (extension) { + referencedSourceFile = ts.forEach(supportedExtensions, function (extension) { if (extension === ".tsx" && !compilerOptions.jsx) { return undefined; } @@ -31225,14 +31741,15 @@ var ts; getCanonicalFileName: getCanonicalFileName, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return ts.sys.fileExists(fileName); }, - readFile: function (fileName) { return ts.sys.readFile(fileName); } + readFile: function (fileName) { return ts.sys.readFile(fileName); }, + directoryExists: function (directoryName) { return ts.sys.directoryExists(directoryName); } }; } ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program, sourceFile, cancellationToken) { var diagnostics = program.getOptionsDiagnostics(cancellationToken).concat(program.getSyntacticDiagnostics(sourceFile, cancellationToken), program.getGlobalDiagnostics(cancellationToken), program.getSemanticDiagnostics(sourceFile, cancellationToken)); if (program.getCompilerOptions().declaration) { - diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); + diagnostics = diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); } return ts.sortAndDeduplicateDiagnostics(diagnostics); } @@ -31270,8 +31787,10 @@ var ts; var noDiagnosticsTypeChecker; var classifiableNames; var skipDefaultLib = options.noLib; + var supportedExtensions = ts.getSupportedExtensions(options); var start = new Date().getTime(); host = host || createCompilerHost(options); + var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); var currentDirectory = host.getCurrentDirectory(); var resolveModuleNamesWorker = host.resolveModuleNames ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) @@ -31284,7 +31803,8 @@ var ts; (oldOptions.noResolve !== options.noResolve) || (oldOptions.target !== options.target) || (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx)) { + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs)) { oldProgram = undefined; } } @@ -31294,9 +31814,7 @@ var ts; processRootFile(host.getDefaultLibFileName(options), true); } } - verifyCompilerOptions(); oldProgram = undefined; - ts.programTime += new Date().getTime() - start; program = { getRootFileNames: function () { return rootNames; }, getSourceFile: getSourceFile, @@ -31310,7 +31828,7 @@ var ts; getTypeChecker: getTypeChecker, getClassifiableNames: getClassifiableNames, getDiagnosticsProducingTypeChecker: getDiagnosticsProducingTypeChecker, - getCommonSourceDirectory: function () { return commonSourceDirectory; }, + getCommonSourceDirectory: getCommonSourceDirectory, emit: emit, getCurrentDirectory: function () { return currentDirectory; }, getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, @@ -31319,7 +31837,23 @@ var ts; getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; + verifyCompilerOptions(); + ts.programTime += new Date().getTime() - start; return program; + function getCommonSourceDirectory() { + if (typeof commonSourceDirectory === "undefined") { + if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { + commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); + } + else { + commonSourceDirectory = computeCommonSourceDirectory(files); + } + if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { + commonSourceDirectory += ts.directorySeparator; + } + } + return commonSourceDirectory; + } function getClassifiableNames() { if (!classifiableNames) { getTypeChecker(); @@ -31365,7 +31899,7 @@ var ts; if (resolveModuleNamesWorker) { var moduleNames = ts.map(newSourceFile.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); - for (var i = 0; i < moduleNames.length; ++i) { + for (var i = 0; i < moduleNames.length; i++) { var newResolution = resolutions[i]; var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); var resolutionChanged = oldResolution @@ -31386,7 +31920,7 @@ var ts; } newSourceFiles.push(newSourceFile); } - for (var i = 0, len = newSourceFiles.length; i < len; ++i) { + for (var i = 0, len = newSourceFiles.length; i < len; i++) { filesByName.set(filePaths[i], newSourceFiles[i]); } files = newSourceFiles; @@ -31407,7 +31941,8 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }) + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + isEmitBlocked: isEmitBlocked }; } function getDiagnosticsProducingTypeChecker() { @@ -31420,9 +31955,15 @@ var ts; var _this = this; return runWithCancellationToken(function () { return emitWorker(_this, sourceFile, writeFileCallback, cancellationToken); }); } + function isEmitBlocked(emitFileName) { + return hasEmitBlockingDiagnostics.contains(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName)); + } function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { - if (options.noEmitOnError && getPreEmitDiagnostics(program, undefined, cancellationToken).length > 0) { - return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; + if (options.noEmitOnError) { + var preEmitDiagnostics = getPreEmitDiagnostics(program, undefined, cancellationToken); + if (preEmitDiagnostics.length > 0) { + return { diagnostics: preEmitDiagnostics, sourceMaps: undefined, emitSkipped: true }; + } } var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver((options.outFile || options.out) ? undefined : sourceFile); var start = new Date().getTime(); @@ -31475,12 +32016,160 @@ var ts; var typeChecker = getDiagnosticsProducingTypeChecker(); ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; - var checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); + var checkDiagnostics = ts.isSourceFileJavaScript(sourceFile) ? + getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) : + typeChecker.getDiagnostics(sourceFile, cancellationToken); var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } + function getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) { + return runWithCancellationToken(function () { + var diagnostics = []; + walk(sourceFile); + return diagnostics; + function walk(node) { + if (!node) { + return false; + } + switch (node.kind) { + case 223: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); + return true; + case 229: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); + return true; + case 216: + var classDeclaration = node; + if (checkModifiers(classDeclaration.modifiers) || + checkTypeParameters(classDeclaration.typeParameters)) { + return true; + } + break; + case 245: + var heritageClause = node; + if (heritageClause.token === 106) { + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 217: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 220: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 218: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); + return true; + case 143: + case 142: + case 144: + case 145: + case 146: + case 175: + case 215: + case 176: + case 215: + var functionDeclaration = node; + if (checkModifiers(functionDeclaration.modifiers) || + checkTypeParameters(functionDeclaration.typeParameters) || + checkTypeAnnotation(functionDeclaration.type)) { + return true; + } + break; + case 195: + var variableStatement = node; + if (checkModifiers(variableStatement.modifiers)) { + return true; + } + break; + case 213: + var variableDeclaration = node; + if (checkTypeAnnotation(variableDeclaration.type)) { + return true; + } + break; + case 170: + case 171: + var expression = node; + if (expression.typeArguments && expression.typeArguments.length > 0) { + var start_2 = expression.typeArguments.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_2, expression.typeArguments.end - start_2, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 138: + var parameter = node; + if (parameter.modifiers) { + var start_3 = parameter.modifiers.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_3, parameter.modifiers.end - start_3, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); + return true; + } + if (parameter.questionToken) { + diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, "?")); + return true; + } + if (parameter.type) { + diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 141: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 219: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 173: + var typeAssertionExpression = node; + diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); + return true; + case 139: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); + return true; + } + return ts.forEachChild(node, walk); + } + function checkTypeParameters(typeParameters) { + if (typeParameters) { + var start_4 = typeParameters.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_4, typeParameters.end - start_4, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkTypeAnnotation(type) { + if (type) { + diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkModifiers(modifiers) { + if (modifiers) { + for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { + var modifier = modifiers_1[_i]; + switch (modifier.kind) { + case 112: + case 110: + case 111: + case 122: + diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); + return true; + case 113: + case 82: + case 74: + case 77: + case 115: + } + } + } + return false; + } + }); + } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { return runWithCancellationToken(function () { if (!ts.isDeclarationFile(sourceFile)) { @@ -31528,9 +32217,9 @@ var ts; function collect(node, allowRelativeModuleNames, collectOnlyRequireCalls) { if (!collectOnlyRequireCalls) { switch (node.kind) { - case 222: - case 221: - case 228: + case 224: + case 223: + case 230: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9) { break; @@ -31542,7 +32231,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 218: + case 220: if (node.name.kind === 9 && (node.flags & 4 || ts.isDeclarationFile(file))) { ts.forEachChild(node.body, function (node) { collect(node, false, collectOnlyRequireCalls); @@ -31565,9 +32254,9 @@ var ts; var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { - if (!options.allowNonTsExtensions && !ts.forEach(ts.supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { + if (!options.allowNonTsExtensions && !ts.forEach(supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; - diagnosticArgument = [fileName, "'" + ts.supportedExtensions.join("', '") + "'"]; + diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; @@ -31585,7 +32274,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(ts.supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -31609,10 +32298,10 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, existingFileName)); } } - function findSourceFile(fileName, normalizedAbsolutePath, isDefaultLib, refFile, refPos, refEnd) { - if (filesByName.contains(normalizedAbsolutePath)) { - var file_1 = filesByName.get(normalizedAbsolutePath); - if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== normalizedAbsolutePath) { + function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + if (filesByName.contains(path)) { + var file_1 = filesByName.get(path); + if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== ts.getNormalizedAbsolutePath(fileName, currentDirectory)) { reportFileNamesDifferOnlyInCasingError(fileName, file_1.fileName, refFile, refPos, refEnd); } return file_1; @@ -31625,16 +32314,16 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); - filesByName.set(normalizedAbsolutePath, file); + filesByName.set(path, file); if (file) { - file.path = normalizedAbsolutePath; + file.path = path; if (host.useCaseSensitiveFileNames()) { - var existingFile = filesByNameIgnoreCase.get(normalizedAbsolutePath); + var existingFile = filesByNameIgnoreCase.get(path); if (existingFile) { reportFileNamesDifferOnlyInCasingError(fileName, existingFile.fileName, refFile, refPos, refEnd); } else { - filesByNameIgnoreCase.set(normalizedAbsolutePath, file); + filesByNameIgnoreCase.set(path, file); } } skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; @@ -31667,15 +32356,15 @@ var ts; file.resolvedModules = {}; var moduleNames = ts.map(file.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(file.fileName, currentDirectory)); - for (var i = 0; i < file.imports.length; ++i) { + for (var i = 0; i < file.imports.length; i++) { var resolution = resolutions[i]; ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { if (!ts.isExternalModule(importedFile)) { - var start_2 = ts.getTokenPosOfNode(file.imports[i], file); - fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + var start_5 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_5, file.imports[i].end - start_5, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); } else if (importedFile.referencedFiles.length) { var firstRef = importedFile.referencedFiles[0]; @@ -31692,7 +32381,7 @@ var ts; } function computeCommonSourceDirectory(sourceFiles) { var commonPathComponents; - ts.forEach(files, function (sourceFile) { + var failed = ts.forEach(files, function (sourceFile) { if (ts.isDeclarationFile(sourceFile)) { return; } @@ -31703,10 +32392,9 @@ var ts; return; } for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (commonPathComponents[i] !== sourcePathComponents[i]) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { if (i === 0) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); - return; + return true; } commonPathComponents.length = i; break; @@ -31716,6 +32404,9 @@ var ts; commonPathComponents.length = sourcePathComponents.length; } }); + if (failed) { + return ""; + } if (!commonPathComponents) { return currentDirectory; } @@ -31725,8 +32416,8 @@ var ts; var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { - var sourceFile = sourceFiles_1[_i]; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var sourceFile = sourceFiles_2[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -31760,14 +32451,14 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } - if (options.sourceRoot) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); - } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } + if (options.sourceRoot) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSources")); + } } if (options.out && options.outFile) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); @@ -31776,10 +32467,9 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } - if (options.sourceRoot) { + if (options.sourceRoot && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } - return; } var languageVersion = options.target || 0; var outFile = options.outFile || options.out; @@ -31796,7 +32486,7 @@ var ts; } else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) { var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file)); } if (options.module === 5 && languageVersion < 2) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_es2015_when_targeting_ES5_or_lower)); @@ -31807,14 +32497,9 @@ var ts; if (options.outDir || options.sourceRoot || options.mapRoot) { - if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { - commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); - } - else { - commonSourceDirectory = computeCommonSourceDirectory(files); - } - if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { - commonSourceDirectory += ts.directorySeparator; + var dir = getCommonSourceDirectory(); + if (options.outDir && dir === "" && ts.forEach(files, function (file) { return ts.getRootLength(file.fileName) > 1; })) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } if (options.noEmit) { @@ -31831,10 +32516,42 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } + else if (options.allowJs && options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); + } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } + if (options.reactNamespace && !ts.isIdentifier(options.reactNamespace, languageVersion)) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier, options.reactNamespace)); + } + if (!options.noEmit) { + var emitHost = getEmitHost(); + var emitFilesSeen = ts.createFileMap(!host.useCaseSensitiveFileNames() ? function (key) { return key.toLocaleLowerCase(); } : undefined); + ts.forEachExpectedEmitFile(emitHost, function (emitFileNames, sourceFiles, isBundledEmit) { + verifyEmitFilePath(emitFileNames.jsFilePath, emitFilesSeen); + verifyEmitFilePath(emitFileNames.declarationFilePath, emitFilesSeen); + }); + } + function verifyEmitFilePath(emitFileName, emitFilesSeen) { + if (emitFileName) { + var emitFilePath = ts.toPath(emitFileName, currentDirectory, getCanonicalFileName); + if (filesByName.contains(emitFilePath)) { + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file); + } + if (emitFilesSeen.contains(emitFilePath)) { + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files); + } + else { + emitFilesSeen.set(emitFilePath, true); + } + } + } + } + function createEmitBlockingDiagnostics(emitFileName, emitFilePath, message) { + hasEmitBlockingDiagnostics.set(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName), true); + programDiagnostics.add(ts.createCompilerDiagnostic(message, emitFileName)); } } ts.createProgram = createProgram; @@ -31889,6 +32606,11 @@ var ts; description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, + { + name: "reactNamespace", + type: "string", + description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + }, { name: "listFiles", type: "boolean" @@ -32113,6 +32835,16 @@ var ts; name: "forceConsistentCasingInFileNames", type: "boolean", description: ts.Diagnostics.Disallow_inconsistently_cased_references_to_the_same_file + }, + { + name: "allowSyntheticDefaultImports", + type: "boolean", + description: ts.Diagnostics.Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking + }, + { + name: "allowJs", + type: "boolean", + description: ts.Diagnostics.Allow_javascript_files_to_be_compiled } ]; var optionNameMapCache; @@ -32146,7 +32878,8 @@ var ts; function parseStrings(args) { var i = 0; while (i < args.length) { - var s = args[i++]; + var s = args[i]; + i++; if (s.charCodeAt(0) === 64) { parseResponseFile(s.slice(1)); } @@ -32162,19 +32895,22 @@ var ts; } switch (opt.type) { case "number": - options[opt.name] = parseInt(args[i++]); + options[opt.name] = parseInt(args[i]); + i++; break; case "boolean": options[opt.name] = true; break; case "string": - options[opt.name] = args[i++] || ""; + options[opt.name] = args[i] || ""; + i++; break; default: - var map_2 = opt.type; - var key = (args[i++] || "").toLowerCase(); - if (ts.hasProperty(map_2, key)) { - options[opt.name] = map_2[key]; + var map_1 = opt.type; + var key = (args[i] || "").toLowerCase(); + i++; + if (ts.hasProperty(map_1, key)) { + options[opt.name] = map_1[key]; } else { errors.push(ts.createCompilerDiagnostic(opt.error)); @@ -32264,8 +33000,10 @@ var ts; } return output; } - function parseJsonConfigFileContent(json, host, basePath) { - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), options = _a.options, errors = _a.errors; + function parseJsonConfigFileContent(json, host, basePath, existingOptions) { + if (existingOptions === void 0) { existingOptions = {}; } + var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), optionsFromJsonConfigFile = _a.options, errors = _a.errors; + var options = ts.extend(existingOptions, optionsFromJsonConfigFile); return { options: options, fileNames: getFileNames(), @@ -32282,23 +33020,26 @@ var ts; } } else { + var filesSeen = {}; var exclude = json["exclude"] instanceof Array ? ts.map(json["exclude"], ts.normalizeSlashes) : undefined; - var sysFiles = host.readDirectory(basePath, ".ts", exclude).concat(host.readDirectory(basePath, ".tsx", exclude)); - for (var i = 0; i < sysFiles.length; i++) { - var name_31 = sysFiles[i]; - if (ts.fileExtensionIs(name_31, ".d.ts")) { - var baseName = name_31.substr(0, name_31.length - ".d.ts".length); - if (!ts.contains(sysFiles, baseName + ".tsx") && !ts.contains(sysFiles, baseName + ".ts")) { - fileNames.push(name_31); + var supportedExtensions = ts.getSupportedExtensions(options); + ts.Debug.assert(ts.indexOf(supportedExtensions, ".ts") < ts.indexOf(supportedExtensions, ".d.ts"), "Changed priority of extensions to pick"); + for (var _i = 0, supportedExtensions_1 = supportedExtensions; _i < supportedExtensions_1.length; _i++) { + var extension = supportedExtensions_1[_i]; + var filesInDirWithExtension = host.readDirectory(basePath, extension, exclude); + for (var _a = 0, filesInDirWithExtension_1 = filesInDirWithExtension; _a < filesInDirWithExtension_1.length; _a++) { + var fileName = filesInDirWithExtension_1[_a]; + if (extension === ".ts" && ts.fileExtensionIs(fileName, ".d.ts")) { + continue; } - } - else if (ts.fileExtensionIs(name_31, ".ts")) { - if (!ts.contains(sysFiles, name_31 + "x")) { - fileNames.push(name_31); + if (extension === ".d.ts" || (options.allowJs && ts.contains(ts.supportedJavascriptExtensions, extension))) { + var baseName = fileName.substr(0, fileName.length - extension.length); + if (ts.hasProperty(filesSeen, baseName + ".ts") || ts.hasProperty(filesSeen, baseName + ".tsx")) { + continue; + } } - } - else { - fileNames.push(name_31); + filesSeen[fileName] = true; + fileNames.push(fileName); } } } @@ -32562,7 +33303,7 @@ var ts; return ts.sys.exit(ts.ExitStatus.Success); } if (commandLine.options.version) { - reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Version_0, ts.version), undefined); + printVersion(); return ts.sys.exit(ts.ExitStatus.Success); } if (commandLine.options.help) { @@ -32575,15 +33316,29 @@ var ts; reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_current_host_does_not_support_the_0_option, "--project"), undefined); return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } - configFileName = ts.normalizePath(ts.combinePaths(commandLine.options.project, "tsconfig.json")); if (commandLine.fileNames.length !== 0) { reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Option_project_cannot_be_mixed_with_source_files_on_a_command_line), undefined); return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); } + var fileOrDirectory = ts.normalizePath(commandLine.options.project); + if (!fileOrDirectory || ts.sys.directoryExists(fileOrDirectory)) { + configFileName = ts.combinePaths(fileOrDirectory, "tsconfig.json"); + if (!ts.sys.fileExists(configFileName)) { + reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0, commandLine.options.project), undefined); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); + } + } + else { + configFileName = fileOrDirectory; + if (!ts.sys.fileExists(configFileName)) { + reportDiagnostic(ts.createCompilerDiagnostic(ts.Diagnostics.The_specified_path_does_not_exist_Colon_0, commandLine.options.project), undefined); + return ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); + } + } } else if (commandLine.fileNames.length === 0 && isJSONSupported()) { var searchPath = ts.normalizePath(ts.sys.getCurrentDirectory()); - configFileName = ts.findConfigFile(searchPath); + configFileName = ts.findConfigFile(searchPath, ts.sys.fileExists); } if (commandLine.fileNames.length === 0 && !configFileName) { printVersion(); @@ -32629,7 +33384,7 @@ var ts; ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); return; } - var configParseResult = ts.parseJsonConfigFileContent(configObject, ts.sys, ts.getDirectoryPath(configFileName)); + var configParseResult = ts.parseJsonConfigFileContent(configObject, ts.sys, ts.getDirectoryPath(configFileName), commandLine.options); if (configParseResult.errors.length > 0) { reportDiagnostics(configParseResult.errors, undefined); ts.sys.exit(ts.ExitStatus.DiagnosticsPresent_OutputsSkipped); @@ -32642,7 +33397,7 @@ var ts; if (configFileName) { var configParseResult = parseConfigFile(); rootFileNames = configParseResult.fileNames; - compilerOptions = ts.extend(commandLine.options, configParseResult.options); + compilerOptions = configParseResult.options; } else { rootFileNames = commandLine.fileNames; @@ -32715,7 +33470,7 @@ var ts; startTimerForRecompilation(); } function watchedDirectoryChanged(fileName) { - if (fileName && !ts.isSupportedSourceFileName(fileName)) { + if (fileName && !ts.isSupportedSourceFileName(fileName, commandLine.options)) { return; } startTimerForHandlingDirectoryChanges(); @@ -32891,10 +33646,10 @@ var ts; function serializeCompilerOptions(options) { var result = {}; var optionsNameMap = ts.getOptionNameMap().optionNameMap; - for (var name_32 in options) { - if (ts.hasProperty(options, name_32)) { - var value = options[name_32]; - switch (name_32) { + for (var name_28 in options) { + if (ts.hasProperty(options, name_28)) { + var value = options[name_28]; + switch (name_28) { case "init": case "watch": case "version": @@ -32902,17 +33657,17 @@ var ts; case "project": break; default: - var optionDefinition = optionsNameMap[name_32.toLowerCase()]; + var optionDefinition = optionsNameMap[name_28.toLowerCase()]; if (optionDefinition) { if (typeof optionDefinition.type === "string") { - result[name_32] = value; + result[name_28] = value; } else { var typeMap = optionDefinition.type; for (var key in typeMap) { if (ts.hasProperty(typeMap, key)) { if (typeMap[key] === value) - result[name_32] = key; + result[name_28] = key; } } } diff --git a/lib/tsserver.js b/lib/tsserver.js index 9f0c1674080..b04981dc6db 100644 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -19,7 +19,7 @@ var ts; function OperationCanceledException() { } return OperationCanceledException; - })(); + }()); ts.OperationCanceledException = OperationCanceledException; (function (ExitStatus) { ExitStatus[ExitStatus["Success"] = 0] = "Success"; @@ -247,9 +247,11 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos++] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos++; while (pos < count) { - result = f(result, array[pos++]); + result = f(result, array[pos]); + pos++; } return result; } @@ -261,9 +263,11 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos--] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos--; while (pos >= 0) { - result = f(result, array[pos--]); + result = f(result, array[pos]); + pos--; } return result; } @@ -346,6 +350,22 @@ var ts; return result; } ts.arrayToMap = arrayToMap; + function reduceProperties(map, callback, initial) { + var result = initial; + if (map) { + for (var key in map) { + if (hasProperty(map, key)) { + result = callback(result, map[key], String(key)); + } + } + } + return result; + } + ts.reduceProperties = reduceProperties; + function isArray(value) { + return Array.isArray ? Array.isArray(value) : value instanceof Array; + } + ts.isArray = isArray; function memoize(callback) { var value; return function () { @@ -639,7 +659,7 @@ var ts; } ts.getRelativePathToDirectoryOrUrl = getRelativePathToDirectoryOrUrl; function getBaseFileName(path) { - if (!path) { + if (path === undefined) { return undefined; } var i = path.lastIndexOf(ts.directorySeparator); @@ -664,14 +684,19 @@ var ts; return pathLen > extLen && path.substr(pathLen - extLen, extLen) === extension; } ts.fileExtensionIs = fileExtensionIs; - ts.supportedExtensions = [".ts", ".tsx", ".d.ts"]; - ts.supportedJsExtensions = ts.supportedExtensions.concat(".js", ".jsx"); - function isSupportedSourceFileName(fileName) { + ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"]; + ts.supportedJavascriptExtensions = [".js", ".jsx"]; + var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions); + function getSupportedExtensions(options) { + return options && options.allowJs ? allSupportedExtensions : ts.supportedTypeScriptExtensions; + } + ts.getSupportedExtensions = getSupportedExtensions; + function isSupportedSourceFileName(fileName, compilerOptions) { if (!fileName) { return false; } - for (var _i = 0, supportedExtensions_1 = ts.supportedExtensions; _i < supportedExtensions_1.length; _i++) { - var extension = supportedExtensions_1[_i]; + for (var _i = 0, _a = getSupportedExtensions(compilerOptions); _i < _a.length; _i++) { + var extension = _a[_i]; if (fileExtensionIs(fileName, extension)) { return true; } @@ -690,22 +715,6 @@ var ts; return path; } ts.removeFileExtension = removeFileExtension; - var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; - var escapedCharsMap = { - "\0": "\\0", - "\t": "\\t", - "\v": "\\v", - "\f": "\\f", - "\b": "\\b", - "\r": "\\r", - "\n": "\\n", - "\\": "\\\\", - "\"": "\\\"", - "\u2028": "\\u2028", - "\u2029": "\\u2029", - "\u0085": "\\u0085" - }; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -902,7 +911,6 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); - var _tty = require("tty"); function createWatchedFileSet(interval, chunkSize) { if (interval === void 0) { interval = 2500; } if (chunkSize === void 0) { chunkSize = 30; } @@ -970,9 +978,6 @@ var ts; }; } var watchedFileSet = createWatchedFileSet(); - function isNode4OrLater() { - return parseInt(process.version.charAt(1)) >= 4; - } var platform = _os.platform(); var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; function readFile(fileName, encoding) { @@ -1055,9 +1060,6 @@ var ts; readFile: readFile, writeFile: writeFile, watchFile: function (fileName, callback) { - if (isNode4OrLater()) { - return _fs.watch(fileName, function (eventName, relativeFileName) { return callback(fileName); }); - } var watchedFile = watchedFileSet.addFile(fileName, callback); return { close: function () { return watchedFileSet.removeFile(watchedFile); } @@ -1103,12 +1105,40 @@ var ts; } }; } + function getChakraSystem() { + return { + newLine: ChakraHost.newLine || "\r\n", + args: ChakraHost.args, + useCaseSensitiveFileNames: !!ChakraHost.useCaseSensitiveFileNames, + write: ChakraHost.echo, + readFile: function (path, encoding) { + return ChakraHost.readFile(path); + }, + writeFile: function (path, data, writeByteOrderMark) { + if (writeByteOrderMark) { + data = "\uFEFF" + data; + } + ChakraHost.writeFile(path, data); + }, + resolvePath: ChakraHost.resolvePath, + fileExists: ChakraHost.fileExists, + directoryExists: ChakraHost.directoryExists, + createDirectory: ChakraHost.createDirectory, + getExecutingFilePath: function () { return ChakraHost.executingFile; }, + getCurrentDirectory: function () { return ChakraHost.currentDirectory; }, + readDirectory: ChakraHost.readDirectory, + exit: ChakraHost.quit + }; + } if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } else if (typeof process !== "undefined" && process.nextTick && !process.browser && typeof require !== "undefined") { return getNodeSystem(); } + else if (typeof ChakraHost !== "undefined") { + return getChakraSystem(); + } else { return undefined; } @@ -1226,7 +1256,7 @@ var ts; Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers_not_permitted_on_index_signature_members_1145", message: "Modifiers not permitted on index signature members." }, Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration_expected_1146", message: "Declaration expected." }, Import_declarations_in_a_namespace_cannot_reference_a_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import_declarations_in_a_namespace_cannot_reference_a_module_1147", message: "Import declarations in a namespace cannot reference a module." }, - Cannot_compile_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_1148", message: "Cannot compile modules unless the '--module' flag is provided." }, + Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_optio_1148", message: "Cannot compile modules unless the '--module' flag is provided. Consider setting the 'module' compiler option in a 'tsconfig.json' file." }, File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149", message: "File name '{0}' differs from already included file name '{1}' only in casing" }, new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead_1150", message: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "const_declarations_must_be_initialized_1155", message: "'const' declarations must be initialized" }, @@ -1313,6 +1343,10 @@ var ts; _0_modifier_cannot_be_used_with_1_modifier: { code: 1243, category: ts.DiagnosticCategory.Error, key: "_0_modifier_cannot_be_used_with_1_modifier_1243", message: "'{0}' modifier cannot be used with '{1}' modifier." }, Abstract_methods_can_only_appear_within_an_abstract_class: { code: 1244, category: ts.DiagnosticCategory.Error, key: "Abstract_methods_can_only_appear_within_an_abstract_class_1244", message: "Abstract methods can only appear within an abstract class." }, Method_0_cannot_have_an_implementation_because_it_is_marked_abstract: { code: 1245, category: ts.DiagnosticCategory.Error, key: "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245", message: "Method '{0}' cannot have an implementation because it is marked abstract." }, + An_interface_property_cannot_have_an_initializer: { code: 1246, category: ts.DiagnosticCategory.Error, key: "An_interface_property_cannot_have_an_initializer_1246", message: "An interface property cannot have an initializer." }, + A_type_literal_property_cannot_have_an_initializer: { code: 1247, category: ts.DiagnosticCategory.Error, key: "A_type_literal_property_cannot_have_an_initializer_1247", message: "A type literal property cannot have an initializer." }, + A_class_member_cannot_have_the_0_keyword: { code: 1248, category: ts.DiagnosticCategory.Error, key: "A_class_member_cannot_have_the_0_keyword_1248", message: "A class member cannot have the '{0}' keyword." }, + A_decorator_can_only_decorate_a_method_implementation_not_an_overload: { code: 1249, category: ts.DiagnosticCategory.Error, key: "A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249", message: "A decorator can only decorate a method implementation, not an overload." }, with_statements_are_not_allowed_in_an_async_function_block: { code: 1300, category: ts.DiagnosticCategory.Error, key: "with_statements_are_not_allowed_in_an_async_function_block_1300", message: "'with' statements are not allowed in an async function block." }, await_expression_is_only_allowed_within_an_async_function: { code: 1308, category: ts.DiagnosticCategory.Error, key: "await_expression_is_only_allowed_within_an_async_function_1308", message: "'await' expression is only allowed within an async function." }, Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, @@ -1326,11 +1360,12 @@ var ts; Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module_0_has_no_exported_member_1_2305", message: "Module '{0}' has no exported member '{1}'." }, File_0_is_not_a_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_a_module_2306", message: "File '{0}' is not a module." }, Cannot_find_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot_find_module_0_2307", message: "Cannot find module '{0}'." }, + Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity: { code: 2308, category: ts.DiagnosticCategory.Error, key: "Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308", message: "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity." }, An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309", message: "An export assignment cannot be used in a module with other exported elements." }, Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type_0_recursively_references_itself_as_a_base_type_2310", message: "Type '{0}' recursively references itself as a base type." }, A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A_class_may_only_extend_another_class_2311", message: "A class may only extend another class." }, An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An_interface_may_only_extend_a_class_or_another_interface_2312", message: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list_2313", message: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Type_parameter_0_has_a_circular_constraint: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_has_a_circular_constraint_2313", message: "Type parameter '{0}' has a circular constraint." }, Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic_type_0_requires_1_type_argument_s_2314", message: "Generic type '{0}' requires {1} type argument(s)." }, Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_generic_2315", message: "Type '{0}' is not generic." }, Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global_type_0_must_be_a_class_or_interface_type_2316", message: "Global type '{0}' must be a class or interface type." }, @@ -1340,6 +1375,7 @@ var ts; Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface_0_cannot_simultaneously_extend_types_1_and_2_2320", message: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive_stack_depth_comparing_types_0_and_1_2321", message: "Excessive stack depth comparing types '{0}' and '{1}'." }, Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_assignable_to_type_1_2322", message: "Type '{0}' is not assignable to type '{1}'." }, + Cannot_redeclare_exported_variable_0: { code: 2323, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_exported_variable_0_2323", message: "Cannot redeclare exported variable '{0}'." }, Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property_0_is_missing_in_type_1_2324", message: "Property '{0}' is missing in type '{1}'." }, Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property_0_is_private_in_type_1_but_not_in_type_2_2325", message: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types_of_property_0_are_incompatible_2326", message: "Types of property '{0}' are incompatible." }, @@ -1410,6 +1446,7 @@ var ts; Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload_signature_is_not_compatible_with_function_implementation_2394", message: "Overload signature is not compatible with function implementation." }, Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395", message: "Individual declarations in merged declaration '{0}' must be all exported or all local." }, Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396", message: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Declaration_name_conflicts_with_built_in_global_identifier_0: { code: 2397, category: ts.DiagnosticCategory.Error, key: "Declaration_name_conflicts_with_built_in_global_identifier_0_2397", message: "Declaration name conflicts with built-in global identifier '{0}'." }, Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399", message: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400", message: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference_2401", message: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, @@ -1523,6 +1560,8 @@ var ts; Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: { code: 2515, category: ts.DiagnosticCategory.Error, key: "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", message: "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'." }, All_declarations_of_an_abstract_method_must_be_consecutive: { code: 2516, category: ts.DiagnosticCategory.Error, key: "All_declarations_of_an_abstract_method_must_be_consecutive_2516", message: "All declarations of an abstract method must be consecutive." }, Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: { code: 2517, category: ts.DiagnosticCategory.Error, key: "Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517", message: "Cannot assign an abstract constructor type to a non-abstract constructor type." }, + A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard: { code: 2518, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518", message: "A 'this'-based type guard is not compatible with a parameter-based type guard." }, + A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods: { code: 2519, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_r_2519", message: "A 'this'-based type predicate is only allowed within a class or interface's members, get accessors, or return type positions for functions and methods." }, Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: { code: 2520, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520", message: "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions." }, Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions: { code: 2521, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions_2521", message: "Expression resolves to variable declaration '{0}' that compiler uses to support async functions." }, The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_2522", message: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, @@ -1532,7 +1571,7 @@ var ts; A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface: { code: 2526, category: ts.DiagnosticCategory.Error, key: "A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526", message: "A 'this' type is available only in a non-static member of a class or interface." }, The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary: { code: 2527, category: ts.DiagnosticCategory.Error, key: "The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary_2527", message: "The inferred type of '{0}' references an inaccessible 'this' type. A type annotation is necessary." }, A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, - JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_must_be_an_object_type_2600", message: "JSX element attributes type '{0}' must be an object type." }, + JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, Property_0_in_type_1_is_not_assignable_to_type_2: { code: 2603, category: ts.DiagnosticCategory.Error, key: "Property_0_in_type_1_is_not_assignable_to_type_2_2603", message: "Property '{0}' in type '{1}' is not assignable to type '{2}'" }, @@ -1548,6 +1587,9 @@ var ts; Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_pack_2654", message: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_2656", message: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, JSX_expressions_must_have_one_parent_element: { code: 2657, category: ts.DiagnosticCategory.Error, key: "JSX_expressions_must_have_one_parent_element_2657", message: "JSX expressions must have one parent element" }, + Type_0_provides_no_match_for_the_signature_1: { code: 2658, category: ts.DiagnosticCategory.Error, key: "Type_0_provides_no_match_for_the_signature_1_2658", message: "Type '{0}' provides no match for the signature '{1}'" }, + super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher: { code: 2659, category: ts.DiagnosticCategory.Error, key: "super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659", message: "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher." }, + super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions: { code: 2660, category: ts.DiagnosticCategory.Error, key: "super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660", message: "'super' can only be referenced in members of derived classes or object literal expressions." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -1632,6 +1674,11 @@ var ts; Option_0_cannot_be_specified_without_specifying_option_1: { code: 5052, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_without_specifying_option_1_5052", message: "Option '{0}' cannot be specified without specifying option '{1}'." }, Option_0_cannot_be_specified_with_option_1: { code: 5053, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_with_option_1_5053", message: "Option '{0}' cannot be specified with option '{1}'." }, A_tsconfig_json_file_is_already_defined_at_Colon_0: { code: 5054, category: ts.DiagnosticCategory.Error, key: "A_tsconfig_json_file_is_already_defined_at_Colon_0_5054", message: "A 'tsconfig.json' file is already defined at: '{0}'." }, + Cannot_write_file_0_because_it_would_overwrite_input_file: { code: 5055, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_overwrite_input_file_5055", message: "Cannot write file '{0}' because it would overwrite input file." }, + Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files: { code: 5056, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056", message: "Cannot write file '{0}' because it would be overwritten by multiple input files." }, + Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0: { code: 5057, category: ts.DiagnosticCategory.Error, key: "Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057", message: "Cannot find a tsconfig.json file at the specified directory: '{0}'" }, + The_specified_path_does_not_exist_Colon_0: { code: 5058, category: ts.DiagnosticCategory.Error, key: "The_specified_path_does_not_exist_Colon_0_5058", message: "The specified path does not exist: '{0}'" }, + Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier: { code: 5059, category: ts.DiagnosticCategory.Error, key: "Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier_5059", message: "Invalide value for '--reactNamespace'. '{0}' is not a valid identifier." }, Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate_and_emit_output_to_single_file_6001", message: "Concatenate and emit output to single file." }, Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_d_ts_file_6002", message: "Generates corresponding '.d.ts' file." }, Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, @@ -1642,6 +1689,7 @@ var ts; Do_not_emit_outputs_if_any_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_if_any_errors_were_reported_6008", message: "Do not emit outputs if any errors were reported." }, Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, + Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, @@ -1697,6 +1745,8 @@ var ts; Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, + Allow_javascript_files_to_be_compiled: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6083", message: "Allow javascript files to be compiled." }, + Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable_0_implicitly_has_an_1_type_7005", message: "Variable '{0}' implicitly has an '{1}' type." }, Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter_0_implicitly_has_an_1_type_7006", message: "Parameter '{0}' implicitly has an '{1}' type." }, Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member_0_implicitly_has_an_1_type_7008", message: "Member '{0}' implicitly has an '{1}' type." }, @@ -1744,7 +1794,8 @@ var ts; Cannot_use_JSX_unless_the_jsx_flag_is_provided: { code: 17004, category: ts.DiagnosticCategory.Error, key: "Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004", message: "Cannot use JSX unless the '--jsx' flag is provided." }, A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005", message: "A constructor cannot contain a 'super' call when its class extends 'null'" }, An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, - A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." } + A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, + JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." } }; })(ts || (ts = {})); var ts; @@ -1934,7 +1985,8 @@ var ts; var pos = 0; var lineStart = 0; while (pos < text.length) { - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 13: if (text.charCodeAt(pos) === 10) { @@ -2037,6 +2089,9 @@ var ts; } ts.couldStartTrivia = couldStartTrivia; function skipTrivia(text, pos, stopAfterLineBreak) { + if (!(pos >= 0)) { + return pos; + } while (true) { var ch = text.charCodeAt(pos); switch (ch) { @@ -2254,6 +2309,18 @@ var ts; ch > 127 && isUnicodeIdentifierPart(ch, languageVersion); } ts.isIdentifierPart = isIdentifierPart; + function isIdentifier(name, languageVersion) { + if (!isIdentifierStart(name.charCodeAt(0), languageVersion)) { + return false; + } + for (var i = 1, n = name.length; i < n; i++) { + if (!isIdentifierPart(name.charCodeAt(i), languageVersion)) { + return false; + } + } + return true; + } + ts.isIdentifier = isIdentifier; function createScanner(languageVersion, skipTrivia, languageVariant, text, onError, start, length) { if (languageVariant === void 0) { languageVariant = 0; } var pos; @@ -2363,7 +2430,8 @@ var ts; return value; } function scanString() { - var quote = text.charCodeAt(pos++); + var quote = text.charCodeAt(pos); + pos++; var result = ""; var start = pos; while (true) { @@ -2450,7 +2518,8 @@ var ts; error(ts.Diagnostics.Unexpected_end_of_text); return ""; } - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 48: return "\0"; @@ -2659,7 +2728,8 @@ var ts; } return pos += 2, token = 31; } - return pos++, token = 49; + pos++; + return token = 49; case 34: case 39: tokenValue = scanString(); @@ -2670,7 +2740,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 62; } - return pos++, token = 40; + pos++; + return token = 40; case 38: if (text.charCodeAt(pos + 1) === 38) { return pos += 2, token = 51; @@ -2678,11 +2749,14 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 66; } - return pos++, token = 46; + pos++; + return token = 46; case 40: - return pos++, token = 17; + pos++; + return token = 17; case 41: - return pos++, token = 18; + pos++; + return token = 18; case 42: if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 59; @@ -2693,7 +2767,8 @@ var ts; } return pos += 2, token = 38; } - return pos++, token = 37; + pos++; + return token = 37; case 43: if (text.charCodeAt(pos + 1) === 43) { return pos += 2, token = 41; @@ -2701,9 +2776,11 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 57; } - return pos++, token = 35; + pos++; + return token = 35; case 44: - return pos++, token = 24; + pos++; + return token = 24; case 45: if (text.charCodeAt(pos + 1) === 45) { return pos += 2, token = 42; @@ -2711,7 +2788,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 58; } - return pos++, token = 36; + pos++; + return token = 36; case 46: if (isDigit(text.charCodeAt(pos + 1))) { tokenValue = scanNumber(); @@ -2720,7 +2798,8 @@ var ts; if (text.charCodeAt(pos + 1) === 46 && text.charCodeAt(pos + 2) === 46) { return pos += 3, token = 22; } - return pos++, token = 21; + pos++; + return token = 21; case 47: if (text.charCodeAt(pos + 1) === 47) { pos += 2; @@ -2766,7 +2845,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 61; } - return pos++, token = 39; + pos++; + return token = 39; case 48: if (pos + 2 < end && (text.charCodeAt(pos + 1) === 88 || text.charCodeAt(pos + 1) === 120)) { pos += 2; @@ -2814,9 +2894,11 @@ var ts; tokenValue = scanNumber(); return token = 8; case 58: - return pos++, token = 54; + pos++; + return token = 54; case 59: - return pos++, token = 23; + pos++; + return token = 23; case 60: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2841,7 +2923,8 @@ var ts; text.charCodeAt(pos + 2) !== 42) { return pos += 2, token = 26; } - return pos++, token = 25; + pos++; + return token = 25; case 61: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2861,7 +2944,8 @@ var ts; if (text.charCodeAt(pos + 1) === 62) { return pos += 2, token = 34; } - return pos++, token = 56; + pos++; + return token = 56; case 62: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -2872,20 +2956,26 @@ var ts; return token = 7; } } - return pos++, token = 27; + pos++; + return token = 27; case 63: - return pos++, token = 53; + pos++; + return token = 53; case 91: - return pos++, token = 19; + pos++; + return token = 19; case 93: - return pos++, token = 20; + pos++; + return token = 20; case 94: if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 68; } - return pos++, token = 48; + pos++; + return token = 48; case 123: - return pos++, token = 15; + pos++; + return token = 15; case 124: if (text.charCodeAt(pos + 1) === 124) { return pos += 2, token = 52; @@ -2893,13 +2983,17 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 67; } - return pos++, token = 47; + pos++; + return token = 47; case 125: - return pos++, token = 16; + pos++; + return token = 16; case 126: - return pos++, token = 50; + pos++; + return token = 50; case 64: - return pos++, token = 55; + pos++; + return token = 55; case 92: var cookedChar = peekUnicodeEscape(); if (cookedChar >= 0 && isIdentifierStart(cookedChar, languageVersion)) { @@ -2908,7 +3002,8 @@ var ts; return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0; + pos++; + return token = 0; default: if (isIdentifierStart(ch, languageVersion)) { pos++; @@ -2930,7 +3025,8 @@ var ts; continue; } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0; + pos++; + return token = 0; } } } @@ -2946,10 +3042,12 @@ var ts; if (text.charCodeAt(pos + 1) === 61) { return pos += 2, token = 64; } - return pos++, token = 44; + pos++; + return token = 44; } if (text.charCodeAt(pos) === 61) { - return pos++, token = 29; + pos++; + return token = 29; } } return token; @@ -3032,7 +3130,7 @@ var ts; break; } } - return token = 236; + return token = 238; } function scanJsxIdentifier() { if (tokenIsIdentifierOrKeyword(token)) { @@ -3152,6 +3250,11 @@ var ts; description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, + { + name: "reactNamespace", + type: "string", + description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + }, { name: "listFiles", type: "boolean" @@ -3376,6 +3479,16 @@ var ts; name: "forceConsistentCasingInFileNames", type: "boolean", description: ts.Diagnostics.Disallow_inconsistently_cased_references_to_the_same_file + }, + { + name: "allowSyntheticDefaultImports", + type: "boolean", + description: ts.Diagnostics.Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking + }, + { + name: "allowJs", + type: "boolean", + description: ts.Diagnostics.Allow_javascript_files_to_be_compiled } ]; var optionNameMapCache; @@ -3409,7 +3522,8 @@ var ts; function parseStrings(args) { var i = 0; while (i < args.length) { - var s = args[i++]; + var s = args[i]; + i++; if (s.charCodeAt(0) === 64) { parseResponseFile(s.slice(1)); } @@ -3425,17 +3539,20 @@ var ts; } switch (opt.type) { case "number": - options[opt.name] = parseInt(args[i++]); + options[opt.name] = parseInt(args[i]); + i++; break; case "boolean": options[opt.name] = true; break; case "string": - options[opt.name] = args[i++] || ""; + options[opt.name] = args[i] || ""; + i++; break; default: var map_1 = opt.type; - var key = (args[i++] || "").toLowerCase(); + var key = (args[i] || "").toLowerCase(); + i++; if (ts.hasProperty(map_1, key)) { options[opt.name] = map_1[key]; } @@ -3527,8 +3644,10 @@ var ts; } return output; } - function parseJsonConfigFileContent(json, host, basePath) { - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), options = _a.options, errors = _a.errors; + function parseJsonConfigFileContent(json, host, basePath, existingOptions) { + if (existingOptions === void 0) { existingOptions = {}; } + var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), optionsFromJsonConfigFile = _a.options, errors = _a.errors; + var options = ts.extend(existingOptions, optionsFromJsonConfigFile); return { options: options, fileNames: getFileNames(), @@ -3545,23 +3664,26 @@ var ts; } } else { + var filesSeen = {}; var exclude = json["exclude"] instanceof Array ? ts.map(json["exclude"], ts.normalizeSlashes) : undefined; - var sysFiles = host.readDirectory(basePath, ".ts", exclude).concat(host.readDirectory(basePath, ".tsx", exclude)); - for (var i = 0; i < sysFiles.length; i++) { - var name_5 = sysFiles[i]; - if (ts.fileExtensionIs(name_5, ".d.ts")) { - var baseName = name_5.substr(0, name_5.length - ".d.ts".length); - if (!ts.contains(sysFiles, baseName + ".tsx") && !ts.contains(sysFiles, baseName + ".ts")) { - fileNames.push(name_5); + var supportedExtensions = ts.getSupportedExtensions(options); + ts.Debug.assert(ts.indexOf(supportedExtensions, ".ts") < ts.indexOf(supportedExtensions, ".d.ts"), "Changed priority of extensions to pick"); + for (var _i = 0, supportedExtensions_1 = supportedExtensions; _i < supportedExtensions_1.length; _i++) { + var extension = supportedExtensions_1[_i]; + var filesInDirWithExtension = host.readDirectory(basePath, extension, exclude); + for (var _a = 0, filesInDirWithExtension_1 = filesInDirWithExtension; _a < filesInDirWithExtension_1.length; _a++) { + var fileName = filesInDirWithExtension_1[_a]; + if (extension === ".ts" && ts.fileExtensionIs(fileName, ".d.ts")) { + continue; } - } - else if (ts.fileExtensionIs(name_5, ".ts")) { - if (!ts.contains(sysFiles, name_5 + "x")) { - fileNames.push(name_5); + if (extension === ".d.ts" || (options.allowJs && ts.contains(ts.supportedJavascriptExtensions, extension))) { + var baseName = fileName.substr(0, fileName.length - extension.length); + if (ts.hasProperty(filesSeen, baseName + ".ts") || ts.hasProperty(filesSeen, baseName + ".tsx")) { + continue; + } } - } - else { - fileNames.push(name_5); + filesSeen[fileName] = true; + fileNames.push(fileName); } } } @@ -3669,7 +3791,7 @@ var ts; if (array1.length !== array2.length) { return false; } - for (var i = 0; i < array1.length; ++i) { + for (var i = 0; i < array1.length; i++) { var equals = equaler ? equaler(array1[i], array2[i]) : array1[i] === array2[i]; if (!equals) { return false; @@ -3709,7 +3831,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 248) { + while (node && node.kind !== 250) { node = node.parent; } return node; @@ -3800,15 +3922,15 @@ var ts; return current; } switch (current.kind) { - case 248: + case 250: + case 222: + case 246: case 220: - case 244: - case 218: - case 199: - case 200: case 201: + case 202: + case 203: return current; - case 192: + case 194: if (!isFunctionLike(current.parent)) { return current; } @@ -3819,9 +3941,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 211 && + declaration.kind === 213 && declaration.parent && - declaration.parent.kind === 244; + declaration.parent.kind === 246; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; function declarationNameToString(name) { @@ -3857,22 +3979,23 @@ var ts; function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 248: + case 250: var pos_1 = ts.skipTrivia(sourceFile.text, 0, false); if (pos_1 === sourceFile.text.length) { return ts.createTextSpan(0, 0); } return getSpanOfTokenAtPosition(sourceFile, pos_1); - case 211: - case 163: - case 214: - case 186: - case 215: - case 218: - case 217: - case 247: case 213: - case 173: + case 165: + case 216: + case 188: + case 217: + case 220: + case 219: + case 249: + case 215: + case 175: + case 143: errorNode = node.name; break; } @@ -3898,11 +4021,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 217 && isConst(node); + return node.kind === 219 && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 163 || isBindingPattern(node))) { + while (node && (node.kind === 165 || isBindingPattern(node))) { node = node.parent; } return node; @@ -3910,14 +4033,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 211) { + if (node.kind === 213) { node = node.parent; } - if (node && node.kind === 212) { + if (node && node.kind === 214) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 193) { + if (node && node.kind === 195) { flags |= node.flags; } return flags; @@ -3932,7 +4055,7 @@ var ts; } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 195 && node.expression.kind === 9; + return node.kind === 197 && node.expression.kind === 9; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -3962,7 +4085,7 @@ var ts; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (151 <= node.kind && node.kind <= 160) { + if (150 <= node.kind && node.kind <= 162) { return true; } switch (node.kind) { @@ -3973,42 +4096,40 @@ var ts; case 131: return true; case 103: - return node.parent.kind !== 177; - case 9: - return node.parent.kind === 138; - case 188: + return node.parent.kind !== 179; + case 190: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); case 69: if (node.parent.kind === 135 && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 166 && node.parent.name === node) { + else if (node.parent.kind === 168 && node.parent.name === node) { node = node.parent; } - ts.Debug.assert(node.kind === 69 || node.kind === 135 || node.kind === 166, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + ts.Debug.assert(node.kind === 69 || node.kind === 135 || node.kind === 168, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); case 135: - case 166: + case 168: case 97: var parent_1 = node.parent; if (parent_1.kind === 154) { return false; } - if (151 <= parent_1.kind && parent_1.kind <= 160) { + if (150 <= parent_1.kind && parent_1.kind <= 162) { return true; } switch (parent_1.kind) { - case 188: + case 190: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); case 137: return node === parent_1.constraint; case 141: case 140: case 138: - case 211: - return node === parent_1.type; case 213: - case 173: - case 174: + return node === parent_1.type; + case 215: + case 175: + case 176: case 144: case 143: case 142: @@ -4019,12 +4140,12 @@ var ts; case 148: case 149: return node === parent_1.type; - case 171: + case 173: return node === parent_1.type; - case 168: - case 169: - return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; case 170: + case 171: + return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; + case 172: return false; } } @@ -4035,23 +4156,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 204: + case 206: return visitor(node); - case 220: - case 192: - case 196: - case 197: + case 222: + case 194: case 198: case 199: case 200: case 201: - case 205: - case 206: - case 241: - case 242: + case 202: + case 203: case 207: - case 209: + case 208: + case 243: case 244: + case 209: + case 211: + case 246: return ts.forEachChild(node, traverse); } } @@ -4061,24 +4182,24 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184: + case 186: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } + case 219: case 217: - case 215: + case 220: case 218: case 216: - case 214: - case 186: + case 188: return; default: if (isFunctionLike(node)) { - var name_6 = node.name; - if (name_6 && name_6.kind === 136) { - traverse(name_6.expression); + var name_5 = node.name; + if (name_5 && name_5.kind === 136) { + traverse(name_5.expression); return; } } @@ -4092,14 +4213,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 163: - case 247: + case 165: + case 249: case 138: - case 245: + case 247: case 141: case 140: - case 246: - case 211: + case 248: + case 213: return true; } } @@ -4111,7 +4232,7 @@ var ts; } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 214 || node.kind === 186); + return node && (node.kind === 216 || node.kind === 188); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -4121,9 +4242,9 @@ var ts; function isFunctionLikeKind(kind) { switch (kind) { case 144: - case 173: - case 213: - case 174: + case 175: + case 215: + case 176: case 143: case 142: case 145: @@ -4144,8 +4265,8 @@ var ts; case 144: case 145: case 146: - case 213: - case 173: + case 215: + case 175: return true; } return false; @@ -4153,26 +4274,30 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { + case 201: + case 202: + case 203: case 199: case 200: - case 201: - case 197: - case 198: return true; - case 207: + case 209: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 192 && isFunctionLike(node.parent); + return node && node.kind === 194 && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 143 && node.parent.kind === 165; + return node && node.kind === 143 && node.parent.kind === 167; } ts.isObjectLiteralMethod = isObjectLiteralMethod; + function isIdentifierTypePredicate(predicate) { + return predicate && predicate.kind === 1; + } + ts.isIdentifierTypePredicate = isIdentifierTypePredicate; function getContainingFunction(node) { while (true) { node = node.parent; @@ -4212,13 +4337,13 @@ var ts; node = node.parent; } break; - case 174: + case 176: if (!includeArrowFunctions) { continue; } - case 213: - case 173: - case 218: + case 215: + case 175: + case 220: case 141: case 140: case 143: @@ -4229,37 +4354,27 @@ var ts; case 147: case 148: case 149: - case 217: - case 248: + case 219: + case 250: return node; } } } ts.getThisContainer = getThisContainer; - function getSuperContainer(node, includeFunctions) { + function getSuperContainer(node, stopOnFunctions) { while (true) { node = node.parent; - if (!node) + if (!node) { return node; + } switch (node.kind) { case 136: - if (isClassLike(node.parent.parent)) { - return node; - } node = node.parent; break; - case 139: - if (node.parent.kind === 138 && isClassElement(node.parent.parent)) { - node = node.parent.parent; - } - else if (isClassElement(node.parent)) { - node = node.parent; - } - break; - case 213: - case 173: - case 174: - if (!includeFunctions) { + case 215: + case 175: + case 176: + if (!stopOnFunctions) { continue; } case 141: @@ -4270,6 +4385,14 @@ var ts; case 145: case 146: return node; + case 139: + if (node.parent.kind === 138 && isClassElement(node.parent.parent)) { + node = node.parent.parent; + } + else if (isClassElement(node.parent)) { + node = node.parent; + } + break; } } } @@ -4279,7 +4402,7 @@ var ts; switch (node.kind) { case 151: return node.typeName; - case 188: + case 190: return node.expression; case 69: case 135: @@ -4290,7 +4413,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 170) { + if (node.kind === 172) { return node.tag; } return node.expression; @@ -4298,23 +4421,23 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 214: + case 216: return true; case 141: - return node.parent.kind === 214; + return node.parent.kind === 216; case 138: - return node.parent.body && node.parent.parent.kind === 214; + return node.parent.body && node.parent.parent.kind === 216; case 145: case 146: case 143: - return node.body && node.parent.kind === 214; + return node.body && node.parent.kind === 216; } return false; } ts.nodeCanBeDecorated = nodeCanBeDecorated; function nodeIsDecorated(node) { switch (node.kind) { - case 214: + case 216: if (node.decorators) { return true; } @@ -4340,27 +4463,12 @@ var ts; return false; } ts.nodeIsDecorated = nodeIsDecorated; - function childIsDecorated(node) { - switch (node.kind) { - case 214: - return ts.forEach(node.members, nodeOrChildIsDecorated); - case 143: - case 146: - return ts.forEach(node.parameters, nodeIsDecorated); - } - return false; - } - ts.childIsDecorated = childIsDecorated; - function nodeOrChildIsDecorated(node) { - return nodeIsDecorated(node) || childIsDecorated(node); - } - ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 166; + return node.kind === 168; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 167; + return node.kind === 169; } ts.isElementAccessExpression = isElementAccessExpression; function isExpression(node) { @@ -4370,34 +4478,34 @@ var ts; case 99: case 84: case 10: - case 164: - case 165: case 166: case 167: case 168: case 169: case 170: - case 189: case 171: case 172: + case 191: case 173: - case 186: case 174: - case 177: case 175: + case 188: case 176: case 179: - case 180: + case 177: + case 178: case 181: case 182: - case 185: case 183: - case 11: - case 187: - case 233: - case 234: case 184: - case 178: + case 187: + case 185: + case 11: + case 189: + case 235: + case 236: + case 186: + case 180: return true; case 135: while (node.parent.kind === 135) { @@ -4413,47 +4521,47 @@ var ts; case 97: var parent_2 = node.parent; switch (parent_2.kind) { - case 211: + case 213: case 138: case 141: case 140: + case 249: case 247: - case 245: - case 163: + case 165: return parent_2.initializer === node; - case 195: - case 196: case 197: case 198: - case 204: - case 205: - case 206: - case 241: - case 208: - case 206: - return parent_2.expression === node; case 199: + case 200: + case 206: + case 207: + case 208: + case 243: + case 210: + case 208: + return parent_2.expression === node; + case 201: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 212) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 214) || forStatement.condition === node || forStatement.incrementor === node; - case 200: - case 201: + case 202: + case 203: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 212) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 214) || forInStatement.expression === node; - case 171: - case 189: + case 173: + case 191: return node === parent_2.expression; - case 190: + case 192: return node === parent_2.expression; case 136: return node === parent_2.expression; case 139: - case 240: - case 239: + case 242: + case 241: return true; - case 188: + case 190: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -4475,7 +4583,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 && node.moduleReference.kind === 232; + return node.kind === 223 && node.moduleReference.kind === 234; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -4484,7 +4592,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 && node.moduleReference.kind !== 232; + return node.kind === 223 && node.moduleReference.kind !== 234; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -4496,43 +4604,54 @@ var ts; } ts.isInJavaScriptFile = isInJavaScriptFile; function isRequireCall(expression) { - return expression.kind === 168 && + return expression.kind === 170 && expression.expression.kind === 69 && expression.expression.text === "require" && expression.arguments.length === 1 && expression.arguments[0].kind === 9; } ts.isRequireCall = isRequireCall; - function isExportsPropertyAssignment(expression) { - return isInJavaScriptFile(expression) && - (expression.kind === 181) && - (expression.operatorToken.kind === 56) && - (expression.left.kind === 166) && - (expression.left.expression.kind === 69) && - ((expression.left.expression).text === "exports"); + function getSpecialPropertyAssignmentKind(expression) { + if (expression.kind !== 183) { + return 0; + } + var expr = expression; + if (expr.operatorToken.kind !== 56 || expr.left.kind !== 168) { + return 0; + } + var lhs = expr.left; + if (lhs.expression.kind === 69) { + var lhsId = lhs.expression; + if (lhsId.text === "exports") { + return 1; + } + else if (lhsId.text === "module" && lhs.name.text === "exports") { + return 2; + } + } + else if (lhs.expression.kind === 97) { + return 4; + } + else if (lhs.expression.kind === 168) { + var innerPropertyAccess = lhs.expression; + if (innerPropertyAccess.expression.kind === 69 && innerPropertyAccess.name.text === "prototype") { + return 3; + } + } + return 0; } - ts.isExportsPropertyAssignment = isExportsPropertyAssignment; - function isModuleExportsAssignment(expression) { - return isInJavaScriptFile(expression) && - (expression.kind === 181) && - (expression.operatorToken.kind === 56) && - (expression.left.kind === 166) && - (expression.left.expression.kind === 69) && - ((expression.left.expression).text === "module") && - (expression.left.name.text === "exports"); - } - ts.isModuleExportsAssignment = isModuleExportsAssignment; + ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 222) { + if (node.kind === 224) { return node.moduleSpecifier; } - if (node.kind === 221) { + if (node.kind === 223) { var reference = node.moduleReference; - if (reference.kind === 232) { + if (reference.kind === 234) { return reference.expression; } } - if (node.kind === 228) { + if (node.kind === 230) { return node.moduleSpecifier; } } @@ -4543,8 +4662,8 @@ var ts; case 138: case 143: case 142: - case 246: - case 245: + case 248: + case 247: case 141: case 140: return node.questionToken !== undefined; @@ -4554,9 +4673,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 261 && + return node.kind === 263 && node.parameters.length > 0 && - node.parameters[0].type.kind === 263; + node.parameters[0].type.kind === 265; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind) { @@ -4570,15 +4689,15 @@ var ts; } } function getJSDocTypeTag(node) { - return getJSDocTag(node, 269); + return getJSDocTag(node, 271); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 268); + return getJSDocTag(node, 270); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 270); + return getJSDocTag(node, 272); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -4587,10 +4706,10 @@ var ts; var docComment = parameter.parent.jsDocComment; if (docComment) { return ts.forEach(docComment.tags, function (t) { - if (t.kind === 267) { + if (t.kind === 269) { var parameterTag = t; - var name_7 = parameterTag.preParameterName || parameterTag.postParameterName; - if (name_7.text === parameterName) { + var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; + if (name_6.text === parameterName) { return t; } } @@ -4606,12 +4725,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.parserContextFlags & 32) { - if (node.type && node.type.kind === 262) { + if (node.type && node.type.kind === 264) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 262; + return paramTag.typeExpression.type.kind === 264; } } return node.dotDotDotToken !== undefined; @@ -4632,7 +4751,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 162 || node.kind === 161); + return !!node && (node.kind === 164 || node.kind === 163); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -4656,34 +4775,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 174: - case 163: - case 214: - case 186: + case 176: + case 165: + case 216: + case 188: case 144: - case 217: - case 247: - case 230: - case 213: - case 173: - case 145: - case 223: - case 221: - case 226: + case 219: + case 249: + case 232: case 215: + case 175: + case 145: + case 225: + case 223: + case 228: + case 217: case 143: case 142: - case 218: - case 224: + case 220: + case 226: case 138: - case 245: + case 247: case 141: case 140: case 146: - case 246: - case 216: + case 248: + case 218: case 137: - case 211: + case 213: return true; } return false; @@ -4691,25 +4810,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 203: - case 202: - case 210: - case 197: - case 195: - case 194: - case 200: - case 201: - case 199: - case 196: - case 207: + case 205: case 204: + case 212: + case 199: + case 197: + case 196: + case 202: + case 203: + case 201: + case 198: + case 209: case 206: case 208: - case 209: - case 193: - case 198: - case 205: - case 227: + case 210: + case 211: + case 195: + case 200: + case 207: + case 229: return true; default: return false; @@ -4736,7 +4855,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 226 || parent.kind === 230) { + if (parent.kind === 228 || parent.kind === 232) { if (parent.propertyName) { return true; } @@ -4756,9 +4875,9 @@ var ts; case 142: case 145: case 146: + case 249: case 247: - case 245: - case 166: + case 168: return parent.name === node; case 135: if (parent.right === node) { @@ -4768,22 +4887,22 @@ var ts; return parent.kind === 154; } return false; - case 163: - case 226: + case 165: + case 228: return parent.propertyName === node; - case 230: + case 232: return true; } return false; } ts.isIdentifierName = isIdentifierName; function isAliasSymbolDeclaration(node) { - return node.kind === 221 || - node.kind === 223 && !!node.name || - node.kind === 224 || + return node.kind === 223 || + node.kind === 225 && !!node.name || node.kind === 226 || - node.kind === 230 || - node.kind === 227 && node.expression.kind === 69; + node.kind === 228 || + node.kind === 232 || + node.kind === 229 && node.expression.kind === 69; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -4916,7 +5035,7 @@ var ts; return node.kind === 69 && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; - function isModifier(token) { + function isModifierKind(token) { switch (token) { case 115: case 118: @@ -4932,39 +5051,56 @@ var ts; } return false; } - ts.isModifier = isModifier; + ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); return root.kind === 138; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 163) { + while (node.kind === 165) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 218 || n.kind === 248; + return isFunctionLike(n) || n.kind === 220 || n.kind === 250; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; - function cloneEntityName(node) { - if (node.kind === 69) { - var clone_1 = createSynthesizedNode(69); - clone_1.text = node.text; - return clone_1; + function cloneNode(node, location, flags, parent) { + var clone = location !== undefined + ? ts.createNode(node.kind, location.pos, location.end) + : createSynthesizedNode(node.kind); + for (var key in node) { + if (clone.hasOwnProperty(key) || !node.hasOwnProperty(key)) { + continue; + } + clone[key] = node[key]; } - else { - var clone_2 = createSynthesizedNode(135); - clone_2.left = cloneEntityName(node.left); - clone_2.left.parent = clone_2; - clone_2.right = cloneEntityName(node.right); - clone_2.right.parent = clone_2; - return clone_2; + if (flags !== undefined) { + clone.flags = flags; } + if (parent !== undefined) { + clone.parent = parent; + } + return clone; + } + ts.cloneNode = cloneNode; + function cloneEntityName(node, parent) { + var clone = cloneNode(node, node, node.flags, parent); + if (isQualifiedName(clone)) { + var left = clone.left, right = clone.right; + clone.left = cloneEntityName(left, clone); + clone.right = cloneNode(right, right, right.flags, parent); + } + return clone; } ts.cloneEntityName = cloneEntityName; + function isQualifiedName(node) { + return node.kind === 135; + } + ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { return node.pos === -1; } @@ -5167,8 +5303,8 @@ var ts; writeTextOfNode: writeTextOfNode, writeLiteral: writeLiteral, writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, + increaseIndent: function () { indent++; }, + decreaseIndent: function () { indent--; }, getIndent: function () { return indent; }, getTextPos: function () { return output.length; }, getLine: function () { return lineCount + 1; }, @@ -5179,8 +5315,10 @@ var ts; } ts.createTextWriter = createTextWriter; function getExternalModuleNameFromPath(host, fileName) { - var dir = host.getCurrentDirectory(); - var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, fileName, dir, function (f) { return host.getCanonicalFileName(f); }, false); + var getCanonicalFileName = function (f) { return host.getCanonicalFileName(f); }; + var dir = ts.toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), getCanonicalFileName); + var filePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, filePath, dir, getCanonicalFileName, false); return ts.removeFileExtension(relativePath); } ts.getExternalModuleNameFromPath = getExternalModuleNameFromPath; @@ -5196,6 +5334,61 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getEmitScriptTarget(compilerOptions) { + return compilerOptions.target || 0; + } + ts.getEmitScriptTarget = getEmitScriptTarget; + function getEmitModuleKind(compilerOptions) { + return compilerOptions.module ? + compilerOptions.module : + getEmitScriptTarget(compilerOptions) === 2 ? 5 : 0; + } + ts.getEmitModuleKind = getEmitModuleKind; + function forEachExpectedEmitFile(host, action, targetSourceFile) { + var options = host.getCompilerOptions(); + if (options.outFile || options.out) { + onBundledEmit(host); + } + else { + var sourceFiles = targetSourceFile === undefined ? host.getSourceFiles() : [targetSourceFile]; + for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { + var sourceFile = sourceFiles_1[_i]; + if (!isDeclarationFile(sourceFile)) { + onSingleFileEmit(host, sourceFile); + } + } + } + function onSingleFileEmit(host, sourceFile) { + var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, sourceFile.languageVariant === 1 && options.jsx === 1 ? ".jsx" : ".js"); + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + }; + action(emitFileNames, [sourceFile], false); + } + function onBundledEmit(host) { + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && + (!isExternalModule(sourceFile) || + (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); + if (bundledSources.length) { + var jsFilePath = options.outFile || options.out; + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + }; + action(emitFileNames, bundledSources, true); + } + } + function getSourceMapFilePath(jsFilePath, options) { + return options.sourceMap ? jsFilePath + ".map" : undefined; + } + function getDeclarationEmitFilePath(jsFilePath, options) { + return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; + } + } + ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); @@ -5204,7 +5397,7 @@ var ts; ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); }); } ts.writeFile = writeFile; @@ -5228,16 +5421,6 @@ var ts; return accessor && accessor.parameters.length > 0 && accessor.parameters[0].type; } ts.getSetAccessorTypeAnnotationNode = getSetAccessorTypeAnnotationNode; - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!isDeclarationFile(sourceFile)) { - if ((isExternalModule(sourceFile) || !(compilerOptions.outFile || compilerOptions.out))) { - return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js"); - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; function getAllAccessorDeclarations(declarations, accessor) { var firstAccessor; var secondAccessor; @@ -5437,24 +5620,24 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 166: - case 167: - case 169: case 168: - case 233: - case 234: + case 169: + case 171: case 170: - case 164: + case 235: + case 236: case 172: - case 165: - case 186: - case 173: + case 166: + case 174: + case 167: + case 188: + case 175: case 69: case 10: case 8: case 9: case 11: - case 183: + case 185: case 84: case 93: case 97: @@ -5471,7 +5654,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 188 && + return node.kind === 190 && node.parent.token === 83 && isClassLike(node.parent.parent); } @@ -5493,15 +5676,15 @@ var ts; } function isRightSideOfQualifiedNameOrPropertyAccess(node) { return (node.parent.kind === 135 && node.parent.right === node) || - (node.parent.kind === 166 && node.parent.name === node); + (node.parent.kind === 168 && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 165) { + if (kind === 167) { return expression.properties.length === 0; } - if (kind === 164) { + if (kind === 166) { return expression.elements.length === 0; } return false; @@ -5512,13 +5695,9 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; function hasJavaScriptFileExtension(fileName) { - return ts.fileExtensionIs(fileName, ".js") || ts.fileExtensionIs(fileName, ".jsx"); + return ts.forEach(ts.supportedJavascriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); }); } ts.hasJavaScriptFileExtension = hasJavaScriptFileExtension; - function allowsJsxExpressions(fileName) { - return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx"); - } - ts.allowsJsxExpressions = allowsJsxExpressions; function getExpandedCharCodes(input) { var output = []; var length = input.length; @@ -5548,6 +5727,39 @@ var ts; } return output; } + ts.stringify = typeof JSON !== "undefined" && JSON.stringify + ? JSON.stringify + : stringifyFallback; + function stringifyFallback(value) { + return value === undefined ? undefined : stringifyValue(value); + } + function stringifyValue(value) { + return typeof value === "string" ? "\"" + escapeString(value) + "\"" + : typeof value === "number" ? isFinite(value) ? String(value) : "null" + : typeof value === "boolean" ? value ? "true" : "false" + : typeof value === "object" && value ? ts.isArray(value) ? cycleCheck(stringifyArray, value) : cycleCheck(stringifyObject, value) + : "null"; + } + function cycleCheck(cb, value) { + ts.Debug.assert(!value.hasOwnProperty("__cycle"), "Converting circular structure to JSON"); + value.__cycle = true; + var result = cb(value); + delete value.__cycle; + return result; + } + function stringifyArray(value) { + return "[" + ts.reduceLeft(value, stringifyElement, "") + "]"; + } + function stringifyElement(memo, value) { + return (memo ? memo + "," : memo) + stringifyValue(value); + } + function stringifyObject(value) { + return "{" + ts.reduceProperties(value, stringifyProperty, "") + "}"; + } + function stringifyProperty(memo, value, key) { + return value === undefined || typeof value === "function" || key === "__cycle" ? memo + : (memo ? memo + "," : memo) + ("\"" + escapeString(key) + "\":" + stringifyValue(value)); + } var base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function convertToBase64(input) { var result = ""; @@ -5718,13 +5930,17 @@ var ts; function getTypeParameterOwner(d) { if (d && d.kind === 137) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 215) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 217) { return current; } } } } ts.getTypeParameterOwner = getTypeParameterOwner; + function isParameterPropertyDeclaration(node) { + return node.flags & 56 && node.parent.kind === 144 && ts.isClassLike(node.parent.parent); + } + ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; })(ts || (ts = {})); var ts; (function (ts) { @@ -5732,7 +5948,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 248) { + if (kind === 250) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -5775,7 +5991,7 @@ var ts; return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 246: + case 248: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || @@ -5785,9 +6001,9 @@ var ts; case 138: case 141: case 140: - case 245: - case 211: - case 163: + case 247: + case 213: + case 165: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -5811,9 +6027,9 @@ var ts; case 144: case 145: case 146: - case 173: - case 213: - case 174: + case 175: + case 215: + case 176: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -5843,271 +6059,271 @@ var ts; return visitNodes(cbNodes, node.types); case 160: return visitNode(cbNode, node.type); - case 161: - case 162: - return visitNodes(cbNodes, node.elements); + case 163: case 164: return visitNodes(cbNodes, node.elements); - case 165: - return visitNodes(cbNodes, node.properties); case 166: + return visitNodes(cbNodes, node.elements); + case 167: + return visitNodes(cbNodes, node.properties); + case 168: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 167: + case 169: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 168: - case 169: + case 170: + case 171: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 170: + case 172: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 171: + case 173: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 172: - return visitNode(cbNode, node.expression); - case 175: - return visitNode(cbNode, node.expression); - case 176: + case 174: return visitNode(cbNode, node.expression); case 177: return visitNode(cbNode, node.expression); - case 179: - return visitNode(cbNode, node.operand); - case 184: - return visitNode(cbNode, node.asteriskToken) || - visitNode(cbNode, node.expression); case 178: return visitNode(cbNode, node.expression); - case 180: - return visitNode(cbNode, node.operand); + case 179: + return visitNode(cbNode, node.expression); case 181: + return visitNode(cbNode, node.operand); + case 186: + return visitNode(cbNode, node.asteriskToken) || + visitNode(cbNode, node.expression); + case 180: + return visitNode(cbNode, node.expression); + case 182: + return visitNode(cbNode, node.operand); + case 183: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 189: + case 191: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 182: + case 184: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 185: + case 187: return visitNode(cbNode, node.expression); - case 192: - case 219: + case 194: + case 221: return visitNodes(cbNodes, node.statements); - case 248: + case 250: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 193: + case 195: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 212: + case 214: return visitNodes(cbNodes, node.declarations); - case 195: + case 197: return visitNode(cbNode, node.expression); - case 196: + case 198: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 197: + case 199: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 198: + case 200: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 199: + case 201: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 200: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); - case 201: - return visitNode(cbNode, node.initializer) || - visitNode(cbNode, node.expression) || - visitNode(cbNode, node.statement); case 202: - case 203: - return visitNode(cbNode, node.label); - case 204: - return visitNode(cbNode, node.expression); - case 205: - return visitNode(cbNode, node.expression) || + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); + case 203: + return visitNode(cbNode, node.initializer) || + visitNode(cbNode, node.expression) || + visitNode(cbNode, node.statement); + case 204: + case 205: + return visitNode(cbNode, node.label); case 206: - return visitNode(cbNode, node.expression) || - visitNode(cbNode, node.caseBlock); - case 220: - return visitNodes(cbNodes, node.clauses); - case 241: - return visitNode(cbNode, node.expression) || - visitNodes(cbNodes, node.statements); - case 242: - return visitNodes(cbNodes, node.statements); + return visitNode(cbNode, node.expression); case 207: - return visitNode(cbNode, node.label) || + return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); case 208: - return visitNode(cbNode, node.expression); + return visitNode(cbNode, node.expression) || + visitNode(cbNode, node.caseBlock); + case 222: + return visitNodes(cbNodes, node.clauses); + case 243: + return visitNode(cbNode, node.expression) || + visitNodes(cbNodes, node.statements); + case 244: + return visitNodes(cbNodes, node.statements); case 209: + return visitNode(cbNode, node.label) || + visitNode(cbNode, node.statement); + case 210: + return visitNode(cbNode, node.expression); + case 211: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 244: + case 246: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); case 139: return visitNode(cbNode, node.expression); - case 214: - case 186: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); - case 215: - return visitNodes(cbNodes, node.decorators) || - visitNodes(cbNodes, node.modifiers) || - visitNode(cbNode, node.name) || - visitNodes(cbNodes, node.typeParameters) || - visitNodes(cbNodes, node.heritageClauses) || - visitNodes(cbNodes, node.members); case 216: + case 188: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || - visitNode(cbNode, node.type); + visitNodes(cbNodes, node.heritageClauses) || + visitNodes(cbNodes, node.members); case 217: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 247: - return visitNode(cbNode, node.name) || - visitNode(cbNode, node.initializer); case 218: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.typeParameters) || + visitNode(cbNode, node.type); + case 219: + return visitNodes(cbNodes, node.decorators) || + visitNodes(cbNodes, node.modifiers) || + visitNode(cbNode, node.name) || + visitNodes(cbNodes, node.members); + case 249: + return visitNode(cbNode, node.name) || + visitNode(cbNode, node.initializer); + case 220: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 221: + case 223: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 222: + case 224: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 223: + case 225: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 224: + case 226: return visitNode(cbNode, node.name); - case 225: - case 229: + case 227: + case 231: return visitNodes(cbNodes, node.elements); - case 228: + case 230: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 226: - case 230: + case 228: + case 232: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 227: + case 229: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 183: + case 185: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 190: + case 192: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); case 136: return visitNode(cbNode, node.expression); - case 243: + case 245: return visitNodes(cbNodes, node.types); - case 188: + case 190: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 232: + case 234: return visitNode(cbNode, node.expression); - case 231: - return visitNodes(cbNodes, node.decorators); case 233: + return visitNodes(cbNodes, node.decorators); + case 235: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 234: - case 235: + case 236: + case 237: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 238: + case 240: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); + case 241: + return visitNode(cbNode, node.expression); + case 242: + return visitNode(cbNode, node.expression); case 239: - return visitNode(cbNode, node.expression); - case 240: - return visitNode(cbNode, node.expression); - case 237: return visitNode(cbNode, node.tagName); - case 249: - return visitNode(cbNode, node.type); - case 253: - return visitNodes(cbNodes, node.types); - case 254: - return visitNodes(cbNodes, node.types); - case 252: - return visitNode(cbNode, node.elementType); - case 256: + case 251: return visitNode(cbNode, node.type); case 255: + return visitNodes(cbNodes, node.types); + case 256: + return visitNodes(cbNodes, node.types); + case 254: + return visitNode(cbNode, node.elementType); + case 258: return visitNode(cbNode, node.type); case 257: - return visitNodes(cbNodes, node.members); + return visitNode(cbNode, node.type); case 259: + return visitNodes(cbNodes, node.members); + case 261: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 260: - return visitNode(cbNode, node.type); - case 261: - return visitNodes(cbNodes, node.parameters) || - visitNode(cbNode, node.type); case 262: return visitNode(cbNode, node.type); case 263: - return visitNode(cbNode, node.type); + return visitNodes(cbNodes, node.parameters) || + visitNode(cbNode, node.type); case 264: return visitNode(cbNode, node.type); - case 258: + case 265: + return visitNode(cbNode, node.type); + case 266: + return visitNode(cbNode, node.type); + case 260: return visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 265: - return visitNodes(cbNodes, node.tags); case 267: + return visitNodes(cbNodes, node.tags); + case 269: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 268: - return visitNode(cbNode, node.typeExpression); - case 269: - return visitNode(cbNode, node.typeExpression); case 270: + return visitNode(cbNode, node.typeExpression); + case 271: + return visitNode(cbNode, node.typeExpression); + case 272: return visitNodes(cbNodes, node.typeParameters); } } @@ -6157,6 +6373,9 @@ var ts; return result; } Parser.parseSourceFile = parseSourceFile; + function getLanguageVariant(fileName) { + return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx") ? 1 : 0; + } function initializeState(fileName, _sourceText, languageVersion, isJavaScriptFile, _syntaxCursor) { NodeConstructor = ts.objectAllocator.getNodeConstructor(); SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor(); @@ -6172,7 +6391,7 @@ var ts; scanner.setText(sourceText); scanner.setOnError(scanError); scanner.setScriptTarget(languageVersion); - scanner.setLanguageVariant(ts.allowsJsxExpressions(fileName) ? 1 : 0); + scanner.setLanguageVariant(getLanguageVariant(fileName)); } function clearState() { scanner.setText(""); @@ -6211,8 +6430,8 @@ var ts; return; function visit(node) { switch (node.kind) { - case 193: - case 213: + case 195: + case 215: case 138: addJSDocComment(node); } @@ -6247,14 +6466,14 @@ var ts; } Parser.fixupParentReferences = fixupParentReferences; function createSourceFile(fileName, languageVersion) { - var sourceFile = new SourceFileConstructor(248, 0, sourceText.length); + var sourceFile = new SourceFileConstructor(250, 0, sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 4096 : 0; - sourceFile.languageVariant = ts.allowsJsxExpressions(sourceFile.fileName) ? 1 : 0; + sourceFile.languageVariant = getLanguageVariant(sourceFile.fileName); return sourceFile; } function setContextFlag(val, flag) { @@ -6306,9 +6525,6 @@ var ts; function doInYieldContext(func) { return doInsideOfContext(2, func); } - function doOutsideOfYieldContext(func) { - return doOutsideOfContext(2, func); - } function doInDecoratorContext(func) { return doInsideOfContext(4, func); } @@ -6321,9 +6537,6 @@ var ts; function doInYieldAndAwaitContext(func) { return doInsideOfContext(2 | 8, func); } - function doOutsideOfYieldAndAwaitContext(func) { - return doOutsideOfContext(2 | 8, func); - } function inContext(flags) { return (contextFlags & flags) !== 0; } @@ -6364,9 +6577,6 @@ var ts; function nextToken() { return token = scanner.scan(); } - function getTokenPos(pos) { - return ts.skipTrivia(sourceText, pos); - } function reScanGreaterToken() { return token = scanner.reScanGreaterToken(); } @@ -6556,6 +6766,13 @@ var ts; function parseContextualModifier(t) { return token === t && tryParse(nextTokenCanFollowModifier); } + function nextTokenIsOnSameLineAndCanFollowModifier() { + nextToken(); + if (scanner.hasPrecedingLineBreak()) { + return false; + } + return canFollowModifier(); + } function nextTokenCanFollowModifier() { if (token === 74) { return nextToken() === 81; @@ -6574,14 +6791,10 @@ var ts; nextToken(); return canFollowModifier(); } - nextToken(); - if (scanner.hasPrecedingLineBreak()) { - return false; - } - return canFollowModifier(); + return nextTokenIsOnSameLineAndCanFollowModifier(); } function parseAnyContextualModifier() { - return ts.isModifier(token) && tryParse(nextTokenCanFollowModifier); + return ts.isModifierKind(token) && tryParse(nextTokenCanFollowModifier); } function canFollowModifier() { return token === 19 @@ -6848,7 +7061,7 @@ var ts; case 145: case 146: case 141: - case 191: + case 193: return true; case 143: var methodDeclaration = node; @@ -6862,8 +7075,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 241: - case 242: + case 243: + case 244: return true; } } @@ -6872,42 +7085,42 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 213: - case 193: - case 192: - case 196: + case 215: case 195: - case 208: - case 204: - case 206: - case 203: - case 202: - case 200: - case 201: - case 199: - case 198: - case 205: case 194: - case 209: - case 207: + case 198: case 197: case 210: - case 222: - case 221: - case 228: - case 227: - case 218: - case 214: - case 215: - case 217: + case 206: + case 208: + case 205: + case 204: + case 202: + case 203: + case 201: + case 200: + case 207: + case 196: + case 211: + case 209: + case 199: + case 212: + case 224: + case 223: + case 230: + case 229: + case 220: case 216: + case 217: + case 219: + case 218: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 247; + return node.kind === 249; } function isReusableTypeMember(node) { if (node) { @@ -6923,7 +7136,7 @@ var ts; return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 211) { + if (node.kind !== 213) { return false; } var variableDeclarator = node; @@ -7047,8 +7260,8 @@ var ts; return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(183); - template.head = parseLiteralNode(); + var template = createNode(185); + template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12, "Template head has wrong token kind"); var templateSpans = []; templateSpans.pos = getNodePos(); @@ -7060,12 +7273,12 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(190); + var span = createNode(192); span.expression = allowInAnd(parseExpression); var literal; if (token === 16) { reScanTemplateToken(); - literal = parseLiteralNode(); + literal = parseTemplateLiteralFragment(); } else { literal = parseExpectedToken(14, false, ts.Diagnostics._0_expected, ts.tokenToString(16)); @@ -7073,8 +7286,17 @@ var ts; span.literal = literal; return finishNode(span); } + function parseStringLiteralTypeNode() { + return parseLiteralLikeNode(162, true); + } function parseLiteralNode(internName) { - var node = createNode(token); + return parseLiteralLikeNode(token, internName); + } + function parseTemplateLiteralFragment() { + return parseLiteralLikeNode(token, false); + } + function parseLiteralLikeNode(kind, internName) { + var node = createNode(kind); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; if (scanner.hasExtendedUnicodeEscape()) { @@ -7096,11 +7318,7 @@ var ts; function parseTypeReferenceOrTypePredicate() { var typeName = parseEntityName(false, ts.Diagnostics.Type_expected); if (typeName.kind === 69 && token === 124 && !scanner.hasPrecedingLineBreak()) { - nextToken(); - var node_1 = createNode(150, typeName.pos); - node_1.parameterName = typeName; - node_1.type = parseType(); - return finishNode(node_1); + return parseTypePredicate(typeName); } var node = createNode(151, typeName.pos); node.typeName = typeName; @@ -7109,6 +7327,18 @@ var ts; } return finishNode(node); } + function parseTypePredicate(lhs) { + nextToken(); + var node = createNode(150, lhs.pos); + node.parameterName = lhs; + node.type = parseType(); + return finishNode(node); + } + function parseThisTypeNode() { + var node = createNode(161); + nextToken(); + return finishNode(node); + } function parseTypeQuery() { var node = createNode(154); parseExpected(101); @@ -7140,7 +7370,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 || isIdentifierOrPattern() || ts.isModifier(token) || token === 55; + return token === 22 || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55; } function setModifiers(node, modifiers) { if (modifiers) { @@ -7154,7 +7384,7 @@ var ts; setModifiers(node, parseModifiers()); node.dotDotDotToken = parseOptionalToken(22); node.name = parseIdentifierOrPattern(); - if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifier(token)) { + if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifierKind(token)) { nextToken(); } node.questionToken = parseOptionalToken(53); @@ -7222,7 +7452,7 @@ var ts; if (token === 22 || token === 20) { return true; } - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { nextToken(); if (isIdentifier()) { return true; @@ -7269,6 +7499,9 @@ var ts; property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); + if (token === 56) { + property.initializer = parseNonParameterInitializer(); + } parseTypeMemberSemicolon(); return finishNode(property); } @@ -7280,7 +7513,7 @@ var ts; case 19: return true; default: - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = lookAhead(isStartOfIndexSignatureDeclaration); if (result) { return result; @@ -7290,7 +7523,7 @@ var ts; } } function isStartOfIndexSignatureDeclaration() { - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { nextToken(); } return isIndexSignature(); @@ -7320,7 +7553,7 @@ var ts; case 8: return parsePropertyOrMethodSignature(); default: - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = tryParse(parseIndexSignatureWithModifiers); if (result) { return result; @@ -7393,10 +7626,18 @@ var ts; var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReferenceOrTypePredicate(); case 9: - return parseLiteralNode(true); + return parseStringLiteralTypeNode(); case 103: - case 97: return parseTokenNode(); + case 97: { + var thisKeyword = parseThisTypeNode(); + if (token === 124 && !scanner.hasPrecedingLineBreak()) { + return parseTypePredicate(thisKeyword); + } + else { + return thisKeyword; + } + } case 101: return parseTypeQuery(); case 15: @@ -7477,11 +7718,11 @@ var ts; if (token === 18 || token === 22) { return true; } - if (isIdentifier() || ts.isModifier(token)) { + if (isIdentifier() || ts.isModifierKind(token)) { nextToken(); if (token === 54 || token === 24 || token === 53 || token === 56 || - isIdentifier() || ts.isModifier(token)) { + isIdentifier() || ts.isModifierKind(token)) { return true; } if (token === 18) { @@ -7565,9 +7806,6 @@ var ts; token !== 55 && isStartOfExpression(); } - function allowInAndParseExpression() { - return allowInAnd(parseExpression); - } function parseExpression() { var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { @@ -7623,7 +7861,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(184); + var node = createNode(186); nextToken(); if (!scanner.hasPrecedingLineBreak() && (token === 37 || isStartOfExpression())) { @@ -7637,7 +7875,7 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(174, identifier.pos); + var node = createNode(176, identifier.pos); var parameter = createNode(138, identifier.pos); parameter.name = identifier; finishNode(parameter); @@ -7749,7 +7987,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(174); + var node = createNode(176); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256); fillSignature(54, false, isAsync, !allowAmbiguity, node); @@ -7781,7 +8019,7 @@ var ts; if (!questionToken) { return leftOperand; } - var node = createNode(182, leftOperand.pos); + var node = createNode(184, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -7872,39 +8110,39 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(181, left.pos); + var node = createNode(183, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(189, left.pos); + var node = createNode(191, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(179); + var node = createNode(181); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(175); + var node = createNode(177); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(176); + var node = createNode(178); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(177); + var node = createNode(179); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -7919,7 +8157,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(178); + var node = createNode(180); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -7938,7 +8176,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 171) { + if (simpleUnaryExpression.kind === 173) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -7986,7 +8224,7 @@ var ts; } function parseIncrementExpression() { if (token === 41 || token === 42) { - var node = createNode(179); + var node = createNode(181); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -7998,7 +8236,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 || token === 42) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(180, expression.pos); + var node = createNode(182, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -8021,31 +8259,44 @@ var ts; if (token === 17 || token === 21 || token === 19) { return expression; } - var node = createNode(166, expression.pos); + var node = createNode(168, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21, false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(true); return finishNode(node); } + function tagNamesAreEquivalent(lhs, rhs) { + if (lhs.kind !== rhs.kind) { + return false; + } + if (lhs.kind === 69) { + return lhs.text === rhs.text; + } + return lhs.right.text === rhs.right.text && + tagNamesAreEquivalent(lhs.left, rhs.left); + } function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 235) { - var node = createNode(233, opening.pos); + if (opening.kind === 237) { + var node = createNode(235, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); + if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { + parseErrorAtPosition(node.closingElement.pos, node.closingElement.end - node.closingElement.pos, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, node.openingElement.tagName)); + } result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 234); + ts.Debug.assert(opening.kind === 236); result = opening; } if (inExpressionContext && token === 25) { var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(181, result.pos); + var badNode = createNode(183, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -8057,13 +8308,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(236, scanner.getStartPos()); + var node = createNode(238, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 236: + case 238: return parseJsxText(); case 15: return parseJsxExpression(false); @@ -8083,7 +8334,7 @@ var ts; break; } else if (token === 1) { - parseErrorAtCurrentToken(ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); + parseErrorAtPosition(openingTagName.pos, openingTagName.end - openingTagName.pos, ts.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); break; } result.push(parseJsxChild()); @@ -8099,7 +8350,7 @@ var ts; var attributes = parseList(13, parseJsxAttribute); var node; if (token === 27) { - node = createNode(235, fullStart); + node = createNode(237, fullStart); scanJsxText(); } else { @@ -8111,7 +8362,7 @@ var ts; parseExpected(27, undefined, false); scanJsxText(); } - node = createNode(234, fullStart); + node = createNode(236, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -8130,10 +8381,10 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(240); + var node = createNode(242); parseExpected(15); if (token !== 16) { - node.expression = parseExpression(); + node.expression = parseAssignmentExpressionOrHigher(); } if (inExpressionContext) { parseExpected(16); @@ -8149,7 +8400,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(238); + var node = createNode(240); node.name = parseIdentifierName(); if (parseOptional(56)) { switch (token) { @@ -8164,7 +8415,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(239); + var node = createNode(241); parseExpected(15); parseExpected(22); node.expression = parseExpression(); @@ -8172,7 +8423,7 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(237); + var node = createNode(239); parseExpected(26); node.tagName = parseJsxElementName(); if (inExpressionContext) { @@ -8185,7 +8436,7 @@ var ts; return finishNode(node); } function parseTypeAssertion() { - var node = createNode(171); + var node = createNode(173); parseExpected(25); node.type = parseType(); parseExpected(27); @@ -8196,7 +8447,7 @@ var ts; while (true) { var dotToken = parseOptionalToken(21); if (dotToken) { - var propertyAccess = createNode(166, expression.pos); + var propertyAccess = createNode(168, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(true); @@ -8204,7 +8455,7 @@ var ts; continue; } if (!inDecoratorContext() && parseOptional(19)) { - var indexedAccess = createNode(167, expression.pos); + var indexedAccess = createNode(169, expression.pos); indexedAccess.expression = expression; if (token !== 20) { indexedAccess.argumentExpression = allowInAnd(parseExpression); @@ -8218,7 +8469,7 @@ var ts; continue; } if (token === 11 || token === 12) { - var tagExpression = createNode(170, expression.pos); + var tagExpression = createNode(172, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 ? parseLiteralNode() @@ -8237,7 +8488,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(168, expression.pos); + var callExpr = createNode(170, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -8245,7 +8496,7 @@ var ts; continue; } else if (token === 17) { - var callExpr = createNode(168, expression.pos); + var callExpr = createNode(170, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -8340,28 +8591,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(172); + var node = createNode(174); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); return finishNode(node); } function parseSpreadElement() { - var node = createNode(185); + var node = createNode(187); parseExpected(22); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 ? parseSpreadElement() : - token === 24 ? createNode(187) : + token === 24 ? createNode(189) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(164); + var node = createNode(166); parseExpected(19); if (scanner.hasPrecedingLineBreak()) node.flags |= 1024; @@ -8388,7 +8639,6 @@ var ts; } var asteriskToken = parseOptionalToken(37); var tokenIsIdentifier = isIdentifier(); - var nameToken = token; var propertyName = parsePropertyName(); var questionToken = parseOptionalToken(53); if (asteriskToken || token === 17 || token === 25) { @@ -8396,7 +8646,7 @@ var ts; } var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 || token === 16 || token === 56); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(246, fullStart); + var shorthandDeclaration = createNode(248, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56); @@ -8407,7 +8657,8 @@ var ts; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(245, fullStart); + var propertyAssignment = createNode(247, fullStart); + propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(54); @@ -8416,7 +8667,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(165); + var node = createNode(167); parseExpected(15); if (scanner.hasPrecedingLineBreak()) { node.flags |= 1024; @@ -8430,7 +8681,7 @@ var ts; if (saveDecoratorContext) { setDecoratorContext(false); } - var node = createNode(173); + var node = createNode(175); setModifiers(node, parseModifiers()); parseExpected(87); node.asteriskToken = parseOptionalToken(37); @@ -8452,7 +8703,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(169); + var node = createNode(171); parseExpected(92); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -8462,7 +8713,7 @@ var ts; return finishNode(node); } function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(192); + var node = createNode(194); if (parseExpected(15, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -8490,12 +8741,12 @@ var ts; return block; } function parseEmptyStatement() { - var node = createNode(194); + var node = createNode(196); parseExpected(23); return finishNode(node); } function parseIfStatement() { - var node = createNode(196); + var node = createNode(198); parseExpected(88); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8505,7 +8756,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(197); + var node = createNode(199); parseExpected(79); node.statement = parseStatement(); parseExpected(104); @@ -8516,7 +8767,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(198); + var node = createNode(200); parseExpected(104); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8539,21 +8790,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90)) { - var forInStatement = createNode(200, pos); + var forInStatement = createNode(202, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18); forOrForInOrForOfStatement = forInStatement; } else if (parseOptional(134)) { - var forOfStatement = createNode(201, pos); + var forOfStatement = createNode(203, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(199, pos); + var forStatement = createNode(201, pos); forStatement.initializer = initializer; parseExpected(23); if (token !== 23 && token !== 18) { @@ -8571,7 +8822,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 203 ? 70 : 75); + parseExpected(kind === 205 ? 70 : 75); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -8579,7 +8830,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(204); + var node = createNode(206); parseExpected(94); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -8588,7 +8839,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(205); + var node = createNode(207); parseExpected(105); parseExpected(17); node.expression = allowInAnd(parseExpression); @@ -8597,7 +8848,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(241); + var node = createNode(243); parseExpected(71); node.expression = allowInAnd(parseExpression); parseExpected(54); @@ -8605,7 +8856,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(242); + var node = createNode(244); parseExpected(77); parseExpected(54); node.statements = parseList(3, parseStatement); @@ -8615,12 +8866,12 @@ var ts; return token === 71 ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(206); + var node = createNode(208); parseExpected(96); parseExpected(17); node.expression = allowInAnd(parseExpression); parseExpected(18); - var caseBlock = createNode(220, scanner.getStartPos()); + var caseBlock = createNode(222, scanner.getStartPos()); parseExpected(15); caseBlock.clauses = parseList(2, parseCaseOrDefaultClause); parseExpected(16); @@ -8628,14 +8879,14 @@ var ts; return finishNode(node); } function parseThrowStatement() { - var node = createNode(208); + var node = createNode(210); parseExpected(98); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); return finishNode(node); } function parseTryStatement() { - var node = createNode(209); + var node = createNode(211); parseExpected(100); node.tryBlock = parseBlock(false); node.catchClause = token === 72 ? parseCatchClause() : undefined; @@ -8646,7 +8897,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(244); + var result = createNode(246); parseExpected(72); if (parseExpected(17)) { result.variableDeclaration = parseVariableDeclaration(); @@ -8656,7 +8907,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(210); + var node = createNode(212); parseExpected(76); parseSemicolon(); return finishNode(node); @@ -8665,13 +8916,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 && parseOptional(54)) { - var labeledStatement = createNode(207, fullStart); + var labeledStatement = createNode(209, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(195, fullStart); + var expressionStatement = createNode(197, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -8816,9 +9067,9 @@ var ts; case 86: return parseForOrForInOrForOfStatement(); case 75: - return parseBreakOrContinueStatement(202); + return parseBreakOrContinueStatement(204); case 70: - return parseBreakOrContinueStatement(203); + return parseBreakOrContinueStatement(205); case 94: return parseReturnStatement(); case 105: @@ -8888,7 +9139,7 @@ var ts; parseExportDeclaration(fullStart, decorators, modifiers); default: if (decorators || modifiers) { - var node = createMissingNode(231, true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(233, true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -8909,16 +9160,16 @@ var ts; } function parseArrayBindingElement() { if (token === 24) { - return createNode(187); + return createNode(189); } - var node = createNode(163); + var node = createNode(165); node.dotDotDotToken = parseOptionalToken(22); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(163); + var node = createNode(165); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54) { @@ -8933,14 +9184,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(161); + var node = createNode(163); parseExpected(15); node.elements = parseDelimitedList(9, parseObjectBindingElement); parseExpected(16); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(162); + var node = createNode(164); parseExpected(19); node.elements = parseDelimitedList(10, parseArrayBindingElement); parseExpected(20); @@ -8959,7 +9210,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(211); + var node = createNode(213); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -8968,7 +9219,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(212); + var node = createNode(214); switch (token) { case 102: break; @@ -8997,7 +9248,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(193, fullStart); + var node = createNode(195, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(false); @@ -9005,7 +9256,7 @@ var ts; return finishNode(node); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(213, fullStart); + var node = createNode(215, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87); @@ -9091,7 +9342,7 @@ var ts; if (token === 55) { return true; } - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { idToken = token; if (isClassMemberModifier(idToken)) { return true; @@ -9134,7 +9385,7 @@ var ts; } if (!decorators) { decorators = []; - decorators.pos = scanner.getStartPos(); + decorators.pos = decoratorStart; } var decorator = createNode(139, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); @@ -9145,14 +9396,21 @@ var ts; } return decorators; } - function parseModifiers() { + function parseModifiers(permitInvalidConstAsModifier) { var flags = 0; var modifiers; while (true) { var modifierStart = scanner.getStartPos(); var modifierKind = token; - if (!parseAnyContextualModifier()) { - break; + if (token === 74 && permitInvalidConstAsModifier) { + if (!tryParse(nextTokenIsOnSameLineAndCanFollowModifier)) { + break; + } + } + else { + if (!parseAnyContextualModifier()) { + break; + } } if (!modifiers) { modifiers = []; @@ -9185,13 +9443,13 @@ var ts; } function parseClassElement() { if (token === 23) { - var result = createNode(191); + var result = createNode(193); nextToken(); return finishNode(result); } var fullStart = getNodePos(); var decorators = parseDecorators(); - var modifiers = parseModifiers(); + var modifiers = parseModifiers(true); var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; @@ -9210,16 +9468,16 @@ var ts; return parsePropertyOrMethodDeclaration(fullStart, decorators, modifiers); } if (decorators || modifiers) { - var name_8 = createMissingNode(69, true, ts.Diagnostics.Declaration_expected); - return parsePropertyDeclaration(fullStart, decorators, modifiers, name_8, undefined); + var name_7 = createMissingNode(69, true, ts.Diagnostics.Declaration_expected); + return parsePropertyDeclaration(fullStart, decorators, modifiers, name_7, undefined); } ts.Debug.fail("Should not have attempted to parse class member declaration."); } function parseClassExpression() { - return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 186); + return parseClassDeclarationOrExpression(scanner.getStartPos(), undefined, undefined, 188); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 214); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 216); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -9252,12 +9510,9 @@ var ts; } return undefined; } - function parseHeritageClausesWorker() { - return parseList(20, parseHeritageClause); - } function parseHeritageClause() { if (token === 83 || token === 106) { - var node = createNode(243); + var node = createNode(245); node.token = token; nextToken(); node.types = parseDelimitedList(7, parseExpressionWithTypeArguments); @@ -9266,7 +9521,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(188); + var node = createNode(190); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25) { node.typeArguments = parseBracketedList(18, parseType, 25, 27); @@ -9280,7 +9535,7 @@ var ts; return parseList(5, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(215, fullStart); + var node = createNode(217, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107); @@ -9291,7 +9546,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(216, fullStart); + var node = createNode(218, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(132); @@ -9303,13 +9558,13 @@ var ts; return finishNode(node); } function parseEnumMember() { - var node = createNode(247, scanner.getStartPos()); + var node = createNode(249, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217, fullStart); + var node = createNode(219, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81); @@ -9324,7 +9579,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(219, scanner.getStartPos()); + var node = createNode(221, scanner.getStartPos()); if (parseExpected(15)) { node.statements = parseList(1, parseStatement); parseExpected(16); @@ -9335,7 +9590,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(218, fullStart); + var node = createNode(220, fullStart); var namespaceFlag = flags & 65536; node.decorators = decorators; setModifiers(node, modifiers); @@ -9347,7 +9602,7 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(218, fullStart); + var node = createNode(220, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(true); @@ -9377,11 +9632,6 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39; } - function nextTokenIsCommaOrFromKeyword() { - nextToken(); - return token === 24 || - token === 133; - } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89); var afterImportPos = scanner.getStartPos(); @@ -9389,7 +9639,7 @@ var ts; if (isIdentifier()) { identifier = parseIdentifier(); if (token !== 24 && token !== 133) { - var importEqualsDeclaration = createNode(221, fullStart); + var importEqualsDeclaration = createNode(223, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -9399,7 +9649,7 @@ var ts; return finishNode(importEqualsDeclaration); } } - var importDeclaration = createNode(222, fullStart); + var importDeclaration = createNode(224, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); if (identifier || @@ -9413,13 +9663,13 @@ var ts; return finishNode(importDeclaration); } function parseImportClause(identifier, fullStart) { - var importClause = createNode(223, fullStart); + var importClause = createNode(225, fullStart); if (identifier) { importClause.name = identifier; } if (!importClause.name || parseOptional(24)) { - importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(225); + importClause.namedBindings = token === 37 ? parseNamespaceImport() : parseNamedImportsOrExports(227); } return finishNode(importClause); } @@ -9429,7 +9679,7 @@ var ts; : parseEntityName(false); } function parseExternalModuleReference() { - var node = createNode(232); + var node = createNode(234); parseExpected(127); parseExpected(17); node.expression = parseModuleSpecifier(); @@ -9437,14 +9687,17 @@ var ts; return finishNode(node); } function parseModuleSpecifier() { - var result = parseExpression(); - if (result.kind === 9) { + if (token === 9) { + var result = parseLiteralNode(); internIdentifier(result.text); + return result; + } + else { + return parseExpression(); } - return result; } function parseNamespaceImport() { - var namespaceImport = createNode(224); + var namespaceImport = createNode(226); parseExpected(37); parseExpected(116); namespaceImport.name = parseIdentifier(); @@ -9452,14 +9705,14 @@ var ts; } function parseNamedImportsOrExports(kind) { var node = createNode(kind); - node.elements = parseBracketedList(21, kind === 225 ? parseImportSpecifier : parseExportSpecifier, 15, 16); + node.elements = parseBracketedList(21, kind === 227 ? parseImportSpecifier : parseExportSpecifier, 15, 16); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(230); + return parseImportOrExportSpecifier(232); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(226); + return parseImportOrExportSpecifier(228); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -9478,13 +9731,13 @@ var ts; else { node.name = identifierName; } - if (kind === 226 && checkIdentifierIsKeyword) { + if (kind === 228 && checkIdentifierIsKeyword) { parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(228, fullStart); + var node = createNode(230, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37)) { @@ -9492,7 +9745,7 @@ var ts; node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(229); + node.exportClause = parseNamedImportsOrExports(231); if (token === 133 || (token === 9 && !scanner.hasPrecedingLineBreak())) { parseExpected(133); node.moduleSpecifier = parseModuleSpecifier(); @@ -9502,7 +9755,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(227, fullStart); + var node = createNode(229, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56)) { @@ -9522,11 +9775,13 @@ var ts; var amdModuleName; while (true) { var kind = triviaScanner.scan(); - if (kind === 5 || kind === 4 || kind === 3) { - continue; - } if (kind !== 2) { - break; + if (ts.isTrivia(kind)) { + continue; + } + else { + break; + } } var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos(), kind: triviaScanner.getToken() }; var comment = sourceText.substring(range.pos, range.end); @@ -9572,10 +9827,10 @@ var ts; function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 2 - || node.kind === 221 && node.moduleReference.kind === 232 - || node.kind === 222 - || node.kind === 227 - || node.kind === 228 + || node.kind === 223 && node.moduleReference.kind === 234 + || node.kind === 224 + || node.kind === 229 + || node.kind === 230 ? node : undefined; }); @@ -9610,7 +9865,7 @@ var ts; function parseJSDocTypeExpression(start, length) { scanner.setText(sourceText, start, length); token = nextToken(); - var result = createNode(249); + var result = createNode(251); parseExpected(15); result.type = parseJSDocTopLevelType(); parseExpected(16); @@ -9621,12 +9876,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47) { - var unionType = createNode(253, type.pos); + var unionType = createNode(255, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56) { - var optionalType = createNode(260, type.pos); + var optionalType = createNode(262, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -9637,20 +9892,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19) { - var arrayType = createNode(252, type.pos); + var arrayType = createNode(254, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20); type = finishNode(arrayType); } else if (token === 53) { - var nullableType = createNode(255, type.pos); + var nullableType = createNode(257, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49) { - var nonNullableType = createNode(256, type.pos); + var nonNullableType = createNode(258, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -9694,27 +9949,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(264); + var result = createNode(266); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(263); + var result = createNode(265); nextToken(); parseExpected(54); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(262); + var result = createNode(264); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(261); + var result = createNode(263); nextToken(); parseExpected(17); result.parameters = parseDelimitedList(22, parseJSDocParameter); @@ -9731,14 +9986,8 @@ var ts; parameter.type = parseJSDocType(); return finishNode(parameter); } - function parseJSDocOptionalType(type) { - var result = createNode(260, type.pos); - nextToken(); - result.type = type; - return finishNode(result); - } function parseJSDocTypeReference() { - var result = createNode(259); + var result = createNode(261); result.name = parseSimplePropertyName(); while (parseOptional(21)) { if (token === 25) { @@ -9773,7 +10022,7 @@ var ts; return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(257); + var result = createNode(259); nextToken(); result.members = parseDelimitedList(24, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -9781,7 +10030,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(258); + var result = createNode(260); result.name = parseSimplePropertyName(); if (token === 54) { nextToken(); @@ -9790,13 +10039,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(256); + var result = createNode(258); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(254); + var result = createNode(256); nextToken(); result.types = parseDelimitedList(25, parseJSDocType); checkForTrailingComma(result.types); @@ -9810,7 +10059,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(253); + var result = createNode(255); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18); @@ -9828,7 +10077,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(250); + var result = createNode(252); nextToken(); return finishNode(result); } @@ -9841,11 +10090,11 @@ var ts; token === 27 || token === 56 || token === 47) { - var result = createNode(251, pos); + var result = createNode(253, pos); return finishNode(result); } else { - var result = createNode(255, pos); + var result = createNode(257, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -9916,7 +10165,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(265, start); + var result = createNode(267, start); result.tags = tags; return finishNode(result, end); } @@ -9953,7 +10202,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(266, atToken.pos); + var result = createNode(268, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result, pos); @@ -10004,7 +10253,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(267, atToken.pos); + var result = createNode(269, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -10014,27 +10263,27 @@ var ts; return finishNode(result, pos); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 268; })) { + if (ts.forEach(tags, function (t) { return t.kind === 270; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(268, atToken.pos); + var result = createNode(270, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 269; })) { + if (ts.forEach(tags, function (t) { return t.kind === 271; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(269, atToken.pos); + var result = createNode(271, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 270; })) { + if (ts.forEach(tags, function (t) { return t.kind === 272; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } var typeParameters = []; @@ -10042,13 +10291,13 @@ var ts; while (true) { skipWhitespace(); var startPos = pos; - var name_9 = scanIdentifier(); - if (!name_9) { + var name_8 = scanIdentifier(); + if (!name_8) { parseErrorAtPosition(startPos, 0, ts.Diagnostics.Identifier_expected); return undefined; } - var typeParameter = createNode(137, name_9.pos); - typeParameter.name = name_9; + var typeParameter = createNode(137, name_8.pos); + typeParameter.name = name_8; finishNode(typeParameter, pos); typeParameters.push(typeParameter); skipWhitespace(); @@ -10058,7 +10307,7 @@ var ts; pos++; } typeParameters.end = pos; - var result = createNode(270, atToken.pos); + var result = createNode(272, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -10380,16 +10629,16 @@ var ts; : 4; } function getModuleInstanceState(node) { - if (node.kind === 215 || node.kind === 216) { + if (node.kind === 217 || node.kind === 218) { return 0; } else if (ts.isConstEnumDeclaration(node)) { return 2; } - else if ((node.kind === 222 || node.kind === 221) && !(node.flags & 2)) { + else if ((node.kind === 224 || node.kind === 223) && !(node.flags & 2)) { return 0; } - else if (node.kind === 219) { + else if (node.kind === 221) { var state = 0; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -10405,7 +10654,7 @@ var ts; }); return state; } - else if (node.kind === 218) { + else if (node.kind === 220) { return getModuleInstanceState(node.body); } else { @@ -10448,6 +10697,8 @@ var ts; file.symbolCount = symbolCount; file.classifiableNames = classifiableNames; } + file = undefined; + options = undefined; parent = undefined; container = undefined; blockScopeContainer = undefined; @@ -10476,13 +10727,17 @@ var ts; if (symbolFlags & 6240 && !symbol.members) { symbol.members = {}; } - if (symbolFlags & 107455 && !symbol.valueDeclaration) { - symbol.valueDeclaration = node; + if (symbolFlags & 107455) { + var valueDeclaration = symbol.valueDeclaration; + if (!valueDeclaration || + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 220)) { + symbol.valueDeclaration = node; + } } } function getDeclarationName(node) { if (node.name) { - if (node.kind === 218 && node.name.kind === 9) { + if (node.kind === 220 && node.name.kind === 9) { return "\"" + node.name.text + "\""; } if (node.name.kind === 136) { @@ -10506,14 +10761,24 @@ var ts; return "__new"; case 149: return "__index"; - case 228: + case 230: return "__export"; - case 227: + case 229: return node.isExportEquals ? "export=" : "default"; - case 181: - return "export="; - case 213: - case 214: + case 183: + switch (ts.getSpecialPropertyAssignmentKind(node)) { + case 2: + return "export="; + case 1: + case 4: + return node.left.name.text; + case 3: + return node.left.expression.name.text; + } + ts.Debug.fail("Unknown binary declaration kind"); + break; + case 215: + case 216: return node.flags & 512 ? "default" : undefined; } } @@ -10561,7 +10826,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 2; if (symbolFlags & 8388608) { - if (node.kind === 230 || (node.kind === 221 && hasExportModifier)) { + if (node.kind === 232 || (node.kind === 223 && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -10608,10 +10873,10 @@ var ts; var kind = node.kind; var flags = node.flags; flags &= ~1572864; - if (kind === 215) { + if (kind === 217) { seenThisKeyword = false; } - var saveState = kind === 248 || kind === 219 || ts.isFunctionLikeKind(kind); + var saveState = kind === 250 || kind === 221 || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -10629,7 +10894,7 @@ var ts; flags |= 1048576; } } - if (kind === 215) { + if (kind === 217) { flags = seenThisKeyword ? flags | 262144 : flags & ~262144; } node.flags = flags; @@ -10650,40 +10915,40 @@ var ts; return; } switch (node.kind) { - case 198: + case 200: bindWhileStatement(node); break; - case 197: + case 199: bindDoStatement(node); break; - case 199: + case 201: bindForStatement(node); break; - case 200: - case 201: + case 202: + case 203: bindForInOrForOfStatement(node); break; - case 196: + case 198: bindIfStatement(node); break; - case 204: - case 208: + case 206: + case 210: bindReturnOrThrow(node); break; - case 203: - case 202: + case 205: + case 204: bindBreakOrContinueStatement(node); break; - case 209: + case 211: bindTryStatement(node); break; - case 206: + case 208: bindSwitchStatement(node); break; - case 220: + case 222: bindCaseBlock(node); break; - case 207: + case 209: bindLabeledStatement(node); break; default: @@ -10745,14 +11010,14 @@ var ts; } function bindReturnOrThrow(n) { bind(n.expression); - if (n.kind === 204) { + if (n.kind === 206) { hasExplicitReturn = true; } currentReachabilityState = 4; } function bindBreakOrContinueStatement(n) { bind(n.label); - var isValidJump = jumpToLabel(n.label, n.kind === 203 ? currentReachabilityState : 4); + var isValidJump = jumpToLabel(n.label, n.kind === 205 ? currentReachabilityState : 4); if (isValidJump) { currentReachabilityState = 4; } @@ -10773,7 +11038,7 @@ var ts; var postSwitchLabel = pushImplicitLabel(); bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 242; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 244; }); var postSwitchState = hasDefault && currentReachabilityState !== 2 ? 4 : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); } @@ -10798,37 +11063,37 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 186: - case 214: - case 215: + case 188: + case 216: case 217: + case 219: case 155: - case 165: + case 167: return 1; case 147: case 148: case 149: case 143: case 142: - case 213: + case 215: case 144: case 145: case 146: case 152: case 153: - case 173: - case 174: - case 218: - case 248: - case 216: - return 5; - case 244: - case 199: - case 200: - case 201: + case 175: + case 176: case 220: + case 250: + case 218: + return 5; + case 246: + case 201: + case 202: + case 203: + case 222: return 2; - case 192: + case 194: return ts.isFunctionLike(node.parent) ? 0 : 2; } return 0; @@ -10844,18 +11109,18 @@ var ts; } function declareSymbolAndAddToSymbolTableWorker(node, symbolFlags, symbolExcludes) { switch (container.kind) { - case 218: + case 220: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 248: + case 250: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 186: - case 214: + case 188: + case 216: return declareClassMember(node, symbolFlags, symbolExcludes); - case 217: + case 219: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); case 155: - case 165: - case 215: + case 167: + case 217: return declareSymbol(container.symbol.members, container.symbol, node, symbolFlags, symbolExcludes); case 152: case 153: @@ -10867,10 +11132,10 @@ var ts; case 144: case 145: case 146: - case 213: - case 173: - case 174: - case 216: + case 215: + case 175: + case 176: + case 218: return declareSymbol(container.locals, undefined, node, symbolFlags, symbolExcludes); } } @@ -10885,11 +11150,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 248 ? node : node.body; - if (body.kind === 248 || body.kind === 219) { + var body = node.kind === 250 ? node : node.body; + if (body.kind === 250 || body.kind === 221) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 228 || stat.kind === 227) { + if (stat.kind === 230 || stat.kind === 229) { return true; } } @@ -10948,7 +11213,7 @@ var ts; continue; } var identifier = prop.name; - var currentKind = prop.kind === 245 || prop.kind === 246 || prop.kind === 143 + var currentKind = prop.kind === 247 || prop.kind === 248 || prop.kind === 143 ? 1 : 2; var existingKind = seen[identifier.text]; @@ -10970,10 +11235,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 218: + case 220: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 248: + case 250: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -11095,17 +11360,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 248: - case 219: + case 250: + case 221: updateStrictModeStatementList(node.statements); return; - case 192: + case 194: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 214: - case 186: + case 216: + case 188: inStrictMode = true; return; } @@ -11130,45 +11395,60 @@ var ts; switch (node.kind) { case 69: return checkStrictModeIdentifier(node); - case 181: + case 183: if (ts.isInJavaScriptFile(node)) { - if (ts.isExportsPropertyAssignment(node)) { - bindExportsPropertyAssignment(node); - } - else if (ts.isModuleExportsAssignment(node)) { - bindModuleExportsAssignment(node); + var specialKind = ts.getSpecialPropertyAssignmentKind(node); + switch (specialKind) { + case 1: + bindExportsPropertyAssignment(node); + break; + case 2: + bindModuleExportsAssignment(node); + break; + case 3: + bindPrototypePropertyAssignment(node); + break; + case 4: + bindThisPropertyAssignment(node); + break; + case 0: + break; + default: + ts.Debug.fail("Unknown special property assignment kind"); } } return checkStrictModeBinaryExpression(node); - case 244: + case 246: return checkStrictModeCatchClause(node); - case 175: + case 177: return checkStrictModeDeleteExpression(node); case 8: return checkStrictModeNumericLiteral(node); - case 180: + case 182: return checkStrictModePostfixUnaryExpression(node); - case 179: + case 181: return checkStrictModePrefixUnaryExpression(node); - case 205: + case 207: return checkStrictModeWithStatement(node); - case 97: + case 161: seenThisKeyword = true; return; + case 150: + return checkTypePredicate(node); case 137: return declareSymbolAndAddToSymbolTable(node, 262144, 530912); case 138: return bindParameter(node); - case 211: - case 163: + case 213: + case 165: return bindVariableDeclarationOrBindingElement(node); case 141: case 140: return bindPropertyOrMethodOrAccessor(node, 4 | (node.questionToken ? 536870912 : 0), 107455); - case 245: - case 246: - return bindPropertyOrMethodOrAccessor(node, 4, 107455); case 247: + case 248: + return bindPropertyOrMethodOrAccessor(node, 4, 107455); + case 249: return bindPropertyOrMethodOrAccessor(node, 8, 107455); case 147: case 148: @@ -11177,7 +11457,7 @@ var ts; case 143: case 142: return bindPropertyOrMethodOrAccessor(node, 8192 | (node.questionToken ? 536870912 : 0), ts.isObjectLiteralMethod(node) ? 107455 : 99263); - case 213: + case 215: checkStrictModeFunctionName(node); return declareSymbolAndAddToSymbolTable(node, 16, 106927); case 144: @@ -11191,44 +11471,54 @@ var ts; return bindFunctionOrConstructorType(node); case 155: return bindAnonymousDeclaration(node, 2048, "__type"); - case 165: + case 167: return bindObjectLiteralExpression(node); - case 173: - case 174: + case 175: + case 176: checkStrictModeFunctionName(node); var bindingName = node.name ? node.name.text : "__function"; return bindAnonymousDeclaration(node, 16, bindingName); - case 168: + case 170: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; - case 186: - case 214: - return bindClassLikeDeclaration(node); - case 215: - return bindBlockScopedDeclaration(node, 64, 792960); + case 188: case 216: - return bindBlockScopedDeclaration(node, 524288, 793056); + return bindClassLikeDeclaration(node); case 217: - return bindEnumDeclaration(node); + return bindBlockScopedDeclaration(node, 64, 792960); case 218: + return bindBlockScopedDeclaration(node, 524288, 793056); + case 219: + return bindEnumDeclaration(node); + case 220: return bindModuleDeclaration(node); - case 221: - case 224: - case 226: - case 230: - return declareSymbolAndAddToSymbolTable(node, 8388608, 8388608); case 223: - return bindImportClause(node); + case 226: case 228: + case 232: + return declareSymbolAndAddToSymbolTable(node, 8388608, 8388608); + case 225: + return bindImportClause(node); + case 230: return bindExportDeclaration(node); - case 227: + case 229: return bindExportAssignment(node); - case 248: + case 250: return bindSourceFileIfExternalModule(); } } + function checkTypePredicate(node) { + var parameterName = node.parameterName, type = node.type; + if (parameterName && parameterName.kind === 69) { + checkStrictModeIdentifier(parameterName); + } + if (parameterName && parameterName.kind === 161) { + seenThisKeyword = true; + } + bind(type); + } function bindSourceFileIfExternalModule() { setExportContextFlag(file); if (ts.isExternalModule(file)) { @@ -11239,7 +11529,7 @@ var ts; bindAnonymousDeclaration(file, 512, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 227 ? node.expression : node.right; + var boundExpression = node.kind === 229 ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { bindAnonymousDeclaration(node, 8388608, getDeclarationName(node)); } @@ -11277,13 +11567,30 @@ var ts; setCommonJsModuleIndicator(node); bindExportAssignment(node); } + function bindThisPropertyAssignment(node) { + if (container.kind === 175 || container.kind === 215) { + container.symbol.members = container.symbol.members || {}; + declareSymbol(container.symbol.members, container.symbol, node, 4, 107455); + } + } + function bindPrototypePropertyAssignment(node) { + var classId = node.left.expression.expression; + var funcSymbol = container.locals[classId.text]; + if (!funcSymbol || !(funcSymbol.flags & 16)) { + return; + } + if (!funcSymbol.members) { + funcSymbol.members = {}; + } + declareSymbol(funcSymbol.members, funcSymbol, node.left, 4, 107455); + } function bindCallExpression(node) { if (!file.commonJsModuleIndicator && ts.isRequireCall(node)) { setCommonJsModuleIndicator(node); } } function bindClassLikeDeclaration(node) { - if (node.kind === 214) { + if (node.kind === 216) { bindBlockScopedDeclaration(node, 32, 899519); } else { @@ -11335,9 +11642,7 @@ var ts; else { declareSymbolAndAddToSymbolTable(node, 1, 107455); } - if (node.flags & 56 && - node.parent.kind === 144 && - ts.isClassLike(node.parent.parent)) { + if (ts.isParameterPropertyDeclaration(node)) { var classDeclaration = node.parent.parent; declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4, 107455); } @@ -11402,15 +11707,15 @@ var ts; function checkUnreachable(node) { switch (currentReachabilityState) { case 4: - var reportError = (ts.isStatement(node) && node.kind !== 194) || - node.kind === 214 || - (node.kind === 218 && shouldReportErrorOnModuleDeclaration(node)) || - (node.kind === 217 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + var reportError = (ts.isStatement(node) && node.kind !== 196) || + node.kind === 216 || + (node.kind === 220 && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 219 && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8; var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 193 || + (node.kind !== 195 || ts.getCombinedNodeFlags(node.declarationList) & 24576 || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -11444,15 +11749,18 @@ var ts; var nextNodeId = 1; var nextMergeId = 1; function getNodeId(node) { - if (!node.id) - node.id = nextNodeId++; + if (!node.id) { + node.id = nextNodeId; + nextNodeId++; + } return node.id; } ts.getNodeId = getNodeId; ts.checkTime = 0; function getSymbolId(symbol) { if (!symbol.id) { - symbol.id = nextSymbolId++; + symbol.id = nextSymbolId; + nextSymbolId++; } return symbol.id; } @@ -11469,8 +11777,10 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0; var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 ? 5 : 0; + var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === 4; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 | 67108864, "undefined"); + undefinedSymbol.declarations = []; var argumentsSymbol = createSymbol(4 | 67108864, "arguments"); var checker = { getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, @@ -11482,6 +11792,7 @@ var ts; getDiagnostics: getDiagnostics, getGlobalDiagnostics: getGlobalDiagnostics, getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, getPropertyOfType: getPropertyOfType, @@ -11498,7 +11809,7 @@ var ts; symbolToString: symbolToString, getAugmentedPropertiesOfType: getAugmentedPropertiesOfType, getRootSymbols: getRootSymbols, - getContextualType: getApparentTypeOfContextualType, + getContextualType: getContextualType, getFullyQualifiedName: getFullyQualifiedName, getResolvedSignature: getResolvedSignature, getConstantValue: getConstantValue, @@ -11523,15 +11834,15 @@ var ts; var undefinedType = createIntrinsicType(32 | 2097152, "undefined"); var nullType = createIntrinsicType(64 | 2097152, "null"); var unknownType = createIntrinsicType(1, "unknown"); - var circularType = createIntrinsicType(1, "__circular__"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var emptyUnionType = emptyObjectType; var emptyGenericType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); emptyGenericType.instantiations = {}; var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); anyFunctionType.flags |= 8388608; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, false, false); + var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, false, false); var globals = {}; var globalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; @@ -11544,8 +11855,6 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; - var jsxElementType; - var jsxIntrinsicElementsType; var globalIterableType; var globalIteratorType; var globalIterableIteratorType; @@ -11562,6 +11871,7 @@ var ts; var getGlobalPromiseConstructorLikeType; var getGlobalThenableType; var jsxElementClassType; + var deferredNodes; var tupleTypes = {}; var unionTypes = {}; var intersectionTypes = {}; @@ -11596,19 +11906,31 @@ var ts; "symbol": { type: esSymbolType, flags: 16777216 + }, + "undefined": { + type: undefinedType, + flags: 2097152 } }; + var jsxElementType; + var jsxTypes = {}; var JsxNames = { JSX: "JSX", IntrinsicElements: "IntrinsicElements", ElementClass: "ElementClass", ElementAttributesPropertyNameContainer: "ElementAttributesProperty", - Element: "Element" + Element: "Element", + IntrinsicAttributes: "IntrinsicAttributes", + IntrinsicClassAttributes: "IntrinsicClassAttributes" }; var subtypeRelation = {}; var assignableRelation = {}; var identityRelation = {}; var _displayBuilder; + var builtinGlobals = (_a = {}, + _a[undefinedSymbol.name] = undefinedSymbol, + _a + ); initializeTypeChecker(); return checker; function getEmitResolver(sourceFile, cancellationToken) { @@ -11662,8 +11984,10 @@ var ts; return result; } function recordMergedSymbol(target, source) { - if (!source.mergeId) - source.mergeId = nextMergeId++; + if (!source.mergeId) { + source.mergeId = nextMergeId; + nextMergeId++; + } mergedSymbols[source.mergeId] = target; } function cloneSymbol(symbol) { @@ -11687,8 +12011,11 @@ var ts; target.constEnumOnlyModule = false; } target.flags |= source.flags; - if (!target.valueDeclaration && source.valueDeclaration) + if (source.valueDeclaration && + (!target.valueDeclaration || + (target.valueDeclaration.kind === 220 && source.valueDeclaration.kind !== 220))) { target.valueDeclaration = source.valueDeclaration; + } ts.forEach(source.declarations, function (node) { target.declarations.push(node); }); @@ -11740,6 +12067,21 @@ var ts; } } } + function addToSymbolTable(target, source, message) { + for (var id in source) { + if (ts.hasProperty(source, id)) { + if (ts.hasProperty(target, id)) { + ts.forEach(target[id].declarations, addDeclarationDiagnostic(id, message)); + } + else { + target[id] = source[id]; + } + } + } + function addDeclarationDiagnostic(id, message) { + return function (declaration) { return diagnostics.add(ts.createDiagnosticForNode(declaration, message, id)); }; + } + } function getSymbolLinks(symbol) { if (symbol.flags & 67108864) return symbol; @@ -11751,10 +12093,16 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 248); + return ts.getAncestor(node, 250); } function isGlobalSourceFile(node) { - return node.kind === 248 && !ts.isExternalOrCommonJsModule(node); + return node.kind === 250 && !ts.isExternalOrCommonJsModule(node); + } + function isPrimitiveApparentType(type) { + return type === globalStringType || + type === globalNumberType || + type === globalBooleanType || + type === globalESSymbolType; } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -11771,6 +12119,16 @@ var ts; } } } + function getSymbolsOfParameterPropertyDeclaration(parameter, parameterName) { + var constructoDeclaration = parameter.parent; + var classDeclaration = parameter.parent.parent; + var parameterSymbol = getSymbol(constructoDeclaration.locals, parameterName, 107455); + var propertySymbol = getSymbol(classDeclaration.symbol.members, parameterName, 107455); + if (parameterSymbol && propertySymbol) { + return [parameterSymbol, propertySymbol]; + } + ts.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration"); + } function isBlockScopedNameDeclaredBeforeUse(declaration, usage) { var declarationFile = ts.getSourceFileOfNode(declaration); var useFile = ts.getSourceFileOfNode(usage); @@ -11782,18 +12140,18 @@ var ts; return ts.indexOf(sourceFiles, declarationFile) <= ts.indexOf(sourceFiles, useFile); } if (declaration.pos <= usage.pos) { - return declaration.kind !== 211 || + return declaration.kind !== 213 || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 193 || - declaration.parent.parent.kind === 199) { + if (declaration.parent.parent.kind === 195 || + declaration.parent.parent.kind === 201) { return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 201 || - declaration.parent.parent.kind === 200) { + else if (declaration.parent.parent.kind === 203 || + declaration.parent.parent.kind === 202) { var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); } @@ -11829,23 +12187,38 @@ var ts; loop: while (location) { if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { - if (!(meaning & 793056) || - !(result.flags & (793056 & ~262144)) || - !ts.isFunctionLike(location) || - lastLocation === location.body) { + var useResult = true; + if (ts.isFunctionLike(location) && lastLocation && lastLocation !== location.body) { + if (meaning & result.flags & 793056) { + useResult = result.flags & 262144 + ? lastLocation === location.type || + lastLocation.kind === 138 || + lastLocation.kind === 137 + : false; + } + if (meaning & 107455 && result.flags & 1) { + useResult = + lastLocation.kind === 138 || + (lastLocation === location.type && + result.valueDeclaration.kind === 138); + } + } + if (useResult) { break loop; } - result = undefined; + else { + result = undefined; + } } } switch (location.kind) { - case 248: + case 250: if (!ts.isExternalOrCommonJsModule(location)) break; - case 218: + case 220: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 248 || - (location.kind === 218 && location.name.kind === 9)) { + if (location.kind === 250 || + (location.kind === 220 && location.name.kind === 9)) { if (result = moduleExports["default"]) { var localSymbol = ts.getLocalSymbolForExportDefault(result); if (localSymbol && (result.flags & meaning) && localSymbol.name === name) { @@ -11855,7 +12228,7 @@ var ts; } if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 && - ts.getDeclarationOfKind(moduleExports[name], 230)) { + ts.getDeclarationOfKind(moduleExports[name], 232)) { break; } } @@ -11863,7 +12236,7 @@ var ts; break loop; } break; - case 217: + case 219: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8)) { break loop; } @@ -11879,9 +12252,9 @@ var ts; } } break; - case 214: - case 186: - case 215: + case 216: + case 188: + case 217: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056)) { if (lastLocation && lastLocation.flags & 64) { error(errorLocation, ts.Diagnostics.Static_members_cannot_reference_class_type_parameters); @@ -11889,7 +12262,7 @@ var ts; } break loop; } - if (location.kind === 186 && meaning & 32) { + if (location.kind === 188 && meaning & 32) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -11899,7 +12272,7 @@ var ts; break; case 136: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 215) { + if (ts.isClassLike(grandparent) || grandparent.kind === 217) { if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); return undefined; @@ -11911,14 +12284,14 @@ var ts; case 144: case 145: case 146: - case 213: - case 174: + case 215: + case 176: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 173: + case 175: if (meaning & 3 && name === "arguments") { result = argumentsSymbol; break loop; @@ -11971,7 +12344,7 @@ var ts; ts.Debug.assert((result.flags & 2) !== 0); var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 211), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 213), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -11988,10 +12361,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 221) { + if (node.kind === 223) { return node; } - while (node && node.kind !== 222) { + while (node && node.kind !== 224) { node = node.parent; } return node; @@ -12001,7 +12374,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 232) { + if (node.moduleReference.kind === 234) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -12010,9 +12383,12 @@ var ts; var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); - if (!exportDefaultSymbol) { + if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } + else if (!exportDefaultSymbol && allowSyntheticDefaultImports) { + return resolveSymbol(moduleSymbol.exports["export="]) || resolveSymbol(moduleSymbol); + } return exportDefaultSymbol; } } @@ -12020,14 +12396,6 @@ var ts; var moduleSpecifier = node.parent.parent.moduleSpecifier; return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); } - function getMemberOfModuleVariable(moduleSymbol, name) { - if (moduleSymbol.flags & 3) { - var typeAnnotation = moduleSymbol.valueDeclaration.type; - if (typeAnnotation) { - return getPropertyOfType(getTypeFromTypeNode(typeAnnotation), name); - } - } - } function combineValueAndTypeSymbols(valueSymbol, typeSymbol) { if (valueSymbol.flags & (793056 | 1536)) { return valueSymbol; @@ -12063,15 +12431,15 @@ var ts; var moduleSymbol = resolveExternalModuleName(node, node.moduleSpecifier); var targetSymbol = resolveESModuleSymbol(moduleSymbol, node.moduleSpecifier); if (targetSymbol) { - var name_10 = specifier.propertyName || specifier.name; - if (name_10.text) { - var symbolFromModule = getExportOfModule(targetSymbol, name_10.text); - var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_10.text); + var name_9 = specifier.propertyName || specifier.name; + if (name_9.text) { + var symbolFromModule = getExportOfModule(targetSymbol, name_9.text); + var symbolFromVariable = getPropertyOfVariable(targetSymbol, name_9.text); var symbol = symbolFromModule && symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; if (!symbol) { - error(name_10, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), ts.declarationNameToString(name_10)); + error(name_9, ts.Diagnostics.Module_0_has_no_exported_member_1, getFullyQualifiedName(moduleSymbol), ts.declarationNameToString(name_9)); } return symbol; } @@ -12090,17 +12458,17 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 221: - return getTargetOfImportEqualsDeclaration(node); case 223: + return getTargetOfImportEqualsDeclaration(node); + case 225: return getTargetOfImportClause(node); - case 224: - return getTargetOfNamespaceImport(node); case 226: + return getTargetOfNamespaceImport(node); + case 228: return getTargetOfImportSpecifier(node); - case 230: + case 232: return getTargetOfExportSpecifier(node); - case 227: + case 229: return getTargetOfExportAssignment(node); } } @@ -12142,10 +12510,10 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 227) { + if (node.kind === 229) { checkExpressionCached(node.expression); } - else if (node.kind === 230) { + else if (node.kind === 232) { checkExpressionCached(node.propertyName || node.name); } else if (ts.isInternalModuleImportEqualsDeclaration(node)) { @@ -12155,7 +12523,7 @@ var ts; } function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 221); + importDeclaration = ts.getAncestor(entityName, 223); ts.Debug.assert(importDeclaration !== undefined); } if (entityName.kind === 69 && ts.isRightSideOfQualifiedNameOrPropertyAccess(entityName)) { @@ -12165,7 +12533,7 @@ var ts; return resolveEntityName(entityName, 1536); } else { - ts.Debug.assert(entityName.parent.kind === 221); + ts.Debug.assert(entityName.parent.kind === 223); return resolveEntityName(entityName, 107455 | 793056 | 1536); } } @@ -12184,7 +12552,7 @@ var ts; return undefined; } } - else if (name.kind === 135 || name.kind === 166) { + else if (name.kind === 135 || name.kind === 168) { var left = name.kind === 135 ? name.left : name.expression; var right = name.kind === 135 ? name.right : name.name; var namespace = resolveEntityName(left, 1536, ignoreErrors); @@ -12210,14 +12578,10 @@ var ts; return; } var moduleReferenceLiteral = moduleReferenceExpression; - var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); if (moduleName === undefined) { return; } - if (moduleName.indexOf("!") >= 0) { - moduleName = moduleName.substr(0, moduleName.indexOf("!")); - } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512); @@ -12260,35 +12624,58 @@ var ts; var links = getSymbolLinks(moduleSymbol); return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function extendExportSymbols(target, source) { + function extendExportSymbols(target, source, lookupTable, exportNode) { for (var id in source) { if (id !== "default" && !ts.hasProperty(target, id)) { target[id] = source[id]; + if (lookupTable && exportNode) { + lookupTable[id] = { + specifierText: ts.getTextOfNode(exportNode.moduleSpecifier) + }; + } + } + else if (lookupTable && exportNode && id !== "default" && ts.hasProperty(target, id) && resolveSymbol(target[id]) !== resolveSymbol(source[id])) { + if (!lookupTable[id].exportsWithDuplicate) { + lookupTable[id].exportsWithDuplicate = [exportNode]; + } + else { + lookupTable[id].exportsWithDuplicate.push(exportNode); + } } } } function getExportsForModule(moduleSymbol) { - var result; var visitedSymbols = []; - visit(moduleSymbol); - return result || moduleSymbol.exports; + return visit(moduleSymbol) || moduleSymbol.exports; function visit(symbol) { - if (symbol && symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol)) { - visitedSymbols.push(symbol); - if (symbol !== moduleSymbol) { - if (!result) { - result = cloneSymbolTable(moduleSymbol.exports); - } - extendExportSymbols(result, symbol.exports); - } - var exportStars = symbol.exports["__export"]; - if (exportStars) { - for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { - var node = _a[_i]; - visit(resolveExternalModuleName(node, node.moduleSpecifier)); - } - } + if (!(symbol && symbol.flags & 1952 && !ts.contains(visitedSymbols, symbol))) { + return; } + visitedSymbols.push(symbol); + var symbols = cloneSymbolTable(symbol.exports); + var exportStars = symbol.exports["__export"]; + if (exportStars) { + var nestedSymbols = {}; + var lookupTable = {}; + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + var resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); + var exportedSymbols = visit(resolvedModule); + extendExportSymbols(nestedSymbols, exportedSymbols, lookupTable, node); + } + for (var id in lookupTable) { + var exportsWithDuplicate = lookupTable[id].exportsWithDuplicate; + if (id === "export=" || !(exportsWithDuplicate && exportsWithDuplicate.length) || ts.hasProperty(symbols, id)) { + continue; + } + for (var _b = 0, exportsWithDuplicate_1 = exportsWithDuplicate; _b < exportsWithDuplicate_1.length; _b++) { + var node = exportsWithDuplicate_1[_b]; + diagnostics.add(ts.createDiagnosticForNode(node, ts.Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id)); + } + } + extendExportSymbols(symbols, nestedSymbols); + } + return symbols; } } function getMergedSymbol(symbol) { @@ -12329,7 +12716,8 @@ var ts; } function createType(flags) { var result = new Type(checker, flags); - result.id = typeCount++; + result.id = typeCount; + typeCount++; return result; } function createIntrinsicType(kind, intrinsicName) { @@ -12387,17 +12775,17 @@ var ts; } } switch (location_1.kind) { - case 248: + case 250: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 218: + case 220: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 214: - case 215: + case 216: + case 217: if (result = callback(getSymbolOfNode(location_1).members)) { return result; } @@ -12430,7 +12818,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232)) { if (!useOnlyExternalAliasing || ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { var resolvedImportedSymbol = resolveAlias(symbolFromSymbolTable); @@ -12459,7 +12847,7 @@ var ts; if (symbolFromSymbolTable === symbol) { return true; } - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -12514,8 +12902,8 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 218 && declaration.name.kind === 9) || - (declaration.kind === 248 && ts.isExternalOrCommonJsModule(declaration)); + return (declaration.kind === 220 && declaration.name.kind === 9) || + (declaration.kind === 250 && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -12550,8 +12938,8 @@ var ts; if (entityName.parent.kind === 154) { meaning = 107455 | 1048576; } - else if (entityName.kind === 135 || entityName.kind === 166 || - entityName.parent.kind === 221) { + else if (entityName.kind === 135 || entityName.kind === 168 || + entityName.parent.kind === 223) { meaning = 1536; } else { @@ -12581,9 +12969,9 @@ var ts; ts.releaseStringWriter(writer); return result; } - function signatureToString(signature, enclosingDeclaration, flags) { + function signatureToString(signature, enclosingDeclaration, flags, kind) { var writer = ts.getSingleLineStringWriter(); - getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); + getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind); var result = writer.string(); ts.releaseStringWriter(writer); return result; @@ -12605,7 +12993,7 @@ var ts; while (node.kind === 160) { node = node.parent; } - if (node.kind === 216) { + if (node.kind === 218) { return getSymbolOfNode(node); } } @@ -12619,10 +13007,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 186: + case 188: return "(Anonymous class)"; - case 173: - case 174: + case 175: + case 176: return "(Anonymous function)"; } } @@ -12687,9 +13075,15 @@ var ts; return writeType(type, globalFlags); function writeType(type, flags) { if (type.flags & 16777343) { - writer.writeKeyword(!(globalFlags & 16) && isTypeAny(type) - ? "any" - : type.intrinsicName); + if (type.flags & 134217728) { + buildTypePredicateDisplay(writer, type.predicate); + buildTypeDisplay(type.predicate.type, writer, enclosingDeclaration, flags, symbolStack); + } + else { + writer.writeKeyword(!(globalFlags & 16) && isTypeAny(type) + ? "any" + : type.intrinsicName); + } } else if (type.flags & 33554432) { if (inObjectTypeLiteral) { @@ -12741,11 +13135,13 @@ var ts; } if (pos < end) { writePunctuation(writer, 25); - writeType(typeArguments[pos++], 0); + writeType(typeArguments[pos], 0); + pos++; while (pos < end) { writePunctuation(writer, 24); writeSpace(writer); - writeType(typeArguments[pos++], 0); + writeType(typeArguments[pos], 0); + pos++; } writePunctuation(writer, 27); } @@ -12828,7 +13224,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 248 || declaration.parent.kind === 219; + return declaration.parent.kind === 250 || declaration.parent.kind === 221; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { return !!(flags & 2) || @@ -12861,7 +13257,7 @@ var ts; if (flags & 64) { writePunctuation(writer, 17); } - buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, symbolStack); + buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, undefined, symbolStack); if (flags & 64) { writePunctuation(writer, 18); } @@ -12873,7 +13269,7 @@ var ts; } writeKeyword(writer, 92); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, symbolStack); + buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8, undefined, symbolStack); if (flags & 64) { writePunctuation(writer, 18); } @@ -12887,15 +13283,13 @@ var ts; writer.increaseIndent(); for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { var signature = _a[_i]; - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, undefined, symbolStack); writePunctuation(writer, 23); writer.writeLine(); } for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { var signature = _c[_b]; - writeKeyword(writer, 92); - writeSpace(writer); - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, 1, symbolStack); writePunctuation(writer, 23); writer.writeLine(); } @@ -12936,7 +13330,7 @@ var ts; if (p.flags & 536870912) { writePunctuation(writer, 53); } - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, undefined, symbolStack); writePunctuation(writer, 23); writer.writeLine(); } @@ -13024,6 +13418,17 @@ var ts; } writePunctuation(writer, 18); } + function buildTypePredicateDisplay(writer, predicate) { + if (ts.isIdentifierTypePredicate(predicate)) { + writer.writeParameter(predicate.parameterName); + } + else { + writeKeyword(writer, 97); + } + writeSpace(writer); + writeKeyword(writer, 124); + writeSpace(writer); + } function buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { if (flags & 8) { writeSpace(writer); @@ -13033,20 +13438,14 @@ var ts; writePunctuation(writer, 54); } writeSpace(writer); - var returnType; - if (signature.typePredicate) { - writer.writeParameter(signature.typePredicate.parameterName); - writeSpace(writer); - writeKeyword(writer, 124); - writeSpace(writer); - returnType = signature.typePredicate.type; - } - else { - returnType = getReturnTypeOfSignature(signature); - } + var returnType = getReturnTypeOfSignature(signature); buildTypeDisplay(returnType, writer, enclosingDeclaration, flags, symbolStack); } - function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { + function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind, symbolStack) { + if (kind === 1) { + writeKeyword(writer, 92); + writeSpace(writer); + } if (signature.target && (flags & 32)) { buildDisplayForTypeArgumentsAndDelimiters(signature.target.typeParameters, signature.mapper, writer, enclosingDeclaration); } @@ -13069,73 +13468,33 @@ var ts; }); } function isDeclarationVisible(node) { - function getContainingExternalModule(node) { - for (; node; node = node.parent) { - if (node.kind === 218) { - if (node.name.kind === 9) { - return node; - } - } - else if (node.kind === 248) { - return ts.isExternalOrCommonJsModule(node) ? node : undefined; - } - } - ts.Debug.fail("getContainingModule cant reach here"); - } - function isUsedInExportAssignment(node) { - var externalModule = getContainingExternalModule(node); - var exportAssignmentSymbol; - var resolvedExportSymbol; - if (externalModule) { - var externalModuleSymbol = getSymbolOfNode(externalModule); - exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var symbolOfNode = getSymbolOfNode(node); - if (isSymbolUsedInExportAssignment(symbolOfNode)) { - return true; - } - if (symbolOfNode.flags & 8388608) { - return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); - } - } - function isSymbolUsedInExportAssignment(symbol) { - if (exportAssignmentSymbol === symbol) { - return true; - } - if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608)) { - resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); - if (resolvedExportSymbol === symbol) { - return true; - } - return ts.forEach(resolvedExportSymbol.declarations, function (current) { - while (current) { - if (current === node) { - return true; - } - current = current.parent; - } - }); - } + if (node) { + var links = getNodeLinks(node); + if (links.isVisible === undefined) { + links.isVisible = !!determineIfDeclarationIsVisible(); } + return links.isVisible; } + return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 163: + case 165: return isDeclarationVisible(node.parent.parent); - case 211: + case 213: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { return false; } - case 218: - case 214: - case 215: + case 220: case 216: - case 213: case 217: - case 221: + case 218: + case 215: + case 219: + case 223: var parent_4 = getDeclarationContainer(node); if (!(ts.getCombinedNodeFlags(node) & 2) && - !(node.kind !== 221 && parent_4.kind !== 248 && ts.isInAmbientContext(parent_4))) { + !(node.kind !== 223 && parent_4.kind !== 250 && ts.isInAmbientContext(parent_4))) { return isGlobalSourceFile(parent_4); } return isDeclarationVisible(parent_4); @@ -13153,7 +13512,7 @@ var ts; case 147: case 149: case 138: - case 219: + case 221: case 152: case 153: case 155: @@ -13164,33 +13523,26 @@ var ts; case 159: case 160: return isDeclarationVisible(node.parent); - case 223: - case 224: + case 225: case 226: + case 228: return false; case 137: - case 248: + case 250: return true; - case 227: + case 229: return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } } - if (node) { - var links = getNodeLinks(node); - if (links.isVisible === undefined) { - links.isVisible = !!determineIfDeclarationIsVisible(); - } - return links.isVisible; - } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 227) { + if (node.parent && node.parent.kind === 229) { exportSymbol = resolveName(node.parent, node.text, 107455 | 793056 | 1536 | 8388608, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 230) { + else if (node.parent.kind === 232) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -13265,7 +13617,7 @@ var ts; } function getDeclarationContainer(node) { node = ts.getRootDeclaration(node); - return node.kind === 211 ? node.parent.parent.parent : node.parent; + return node.kind === 213 ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { var classType = getDeclaredTypeOfSymbol(prototype.parent); @@ -13312,17 +13664,17 @@ var ts; return parentType; } var type; - if (pattern.kind === 161) { - var name_11 = declaration.propertyName || declaration.name; - if (isComputedNonLiteralName(name_11)) { + if (pattern.kind === 163) { + var name_10 = declaration.propertyName || declaration.name; + if (isComputedNonLiteralName(name_10)) { return anyType; } - var text = getTextOfPropertyName(name_11); + var text = getTextOfPropertyName(name_10); type = getTypeOfPropertyOfType(parentType, text) || isNumericLiteralName(text) && getIndexTypeOfType(parentType, 1) || getIndexTypeOfType(parentType, 0); if (!type) { - error(name_11, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name_11)); + error(name_10, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(parentType), ts.declarationNameToString(name_10)); return unknownType; } } @@ -13350,10 +13702,10 @@ var ts; return type; } function getTypeForVariableLikeDeclaration(declaration) { - if (declaration.parent.parent.kind === 200) { + if (declaration.parent.parent.kind === 202) { return anyType; } - if (declaration.parent.parent.kind === 201) { + if (declaration.parent.parent.kind === 203) { return checkRightHandSideOfForOf(declaration.parent.parent.expression) || anyType; } if (ts.isBindingPattern(declaration.parent)) { @@ -13378,7 +13730,7 @@ var ts; if (declaration.initializer) { return checkExpressionCached(declaration.initializer); } - if (declaration.kind === 246) { + if (declaration.kind === 248) { return checkIdentifier(declaration.name); } if (ts.isBindingPattern(declaration.name)) { @@ -13425,7 +13777,7 @@ var ts; if (elements.length === 0 || elements[elements.length - 1].dotDotDotToken) { return languageVersion >= 2 ? createIterableType(anyType) : anyArrayType; } - var elementTypes = ts.map(elements, function (e) { return e.kind === 187 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 189 ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -13434,7 +13786,7 @@ var ts; return createTupleType(elementTypes); } function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 161 + return pattern.kind === 163 ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -13444,7 +13796,13 @@ var ts; if (reportErrors) { reportErrorsFromWidening(declaration, type); } - return declaration.kind !== 245 ? getWidenedType(type) : type; + if (declaration.kind === 247) { + return type; + } + if (type.flags & 134217728 && (declaration.kind === 141 || declaration.kind === 140)) { + return type; + } + return getWidenedType(type); } type = declaration.dotDotDotToken ? anyArrayType : anyType; if (reportErrors && compilerOptions.noImplicitAny) { @@ -13462,17 +13820,19 @@ var ts; return links.type = getTypeOfPrototypeProperty(symbol); } var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 244) { + if (declaration.parent.kind === 246) { return links.type = anyType; } - if (declaration.kind === 227) { + if (declaration.kind === 229) { return links.type = checkExpression(declaration.expression); } - if (declaration.kind === 181) { + if (declaration.kind === 183) { return links.type = checkExpression(declaration.right); } - if (declaration.kind === 166) { - return checkExpressionCached(declaration.parent.right); + if (declaration.kind === 168) { + if (declaration.parent.kind === 183) { + return links.type = checkExpressionCached(declaration.parent.right); + } } if (!pushTypeResolution(symbol, 0)) { return unknownType; @@ -13628,9 +13988,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 214 || node.kind === 186 || - node.kind === 213 || node.kind === 173 || - node.kind === 143 || node.kind === 174) { + if (node.kind === 216 || node.kind === 188 || + node.kind === 215 || node.kind === 175 || + node.kind === 143 || node.kind === 176) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -13639,15 +13999,15 @@ var ts; } } function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 215); + var declaration = symbol.flags & 32 ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 217); return appendOuterTypeParameters(undefined, declaration); } function getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol) { var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 215 || node.kind === 214 || - node.kind === 186 || node.kind === 216) { + if (node.kind === 217 || node.kind === 216 || + node.kind === 188 || node.kind === 218) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -13702,9 +14062,6 @@ var ts; } return type.resolvedBaseConstructorType; } - function hasClassBaseType(type) { - return !!ts.forEach(getBaseTypes(type), function (t) { return !!(t.symbol.flags & 32); }); - } function getBaseTypes(type) { var isClass = type.symbol.flags & 32; var isInterface = type.symbol.flags & 64; @@ -13773,7 +14130,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215 && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 217 && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -13802,7 +14159,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215) { + if (declaration.kind === 217) { if (declaration.flags & 262144) { return false; } @@ -13851,7 +14208,7 @@ var ts; if (!pushTypeResolution(symbol, 2)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 216); + var declaration = ts.getDeclarationOfKind(symbol, 218); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -13934,7 +14291,7 @@ var ts; case 120: case 131: case 103: - case 9: + case 162: return true; case 156: return isIndependentType(node.elementType); @@ -13999,14 +14356,6 @@ var ts; } } } - function addInheritedSignatures(signatures, baseSignatures) { - if (baseSignatures) { - for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { - var signature = baseSignatures_1[_i]; - signatures.push(signature); - } - } - } function resolveDeclaredMembers(type) { if (!type.declaredProperties) { var symbol = type.symbol; @@ -14067,33 +14416,32 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, parameters, resolvedReturnType, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; sig.resolvedReturnType = resolvedReturnType; - sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; sig.hasRestParameter = hasRestParameter; sig.hasStringLiterals = hasStringLiterals; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { - if (!hasClassBaseType(classType)) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; - } var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1); + if (baseSignatures.length === 0) { + return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, 0, false, false)]; + } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); var typeArgCount = typeArguments ? typeArguments.length : 0; var result = []; - for (var _i = 0, baseSignatures_2 = baseSignatures; _i < baseSignatures_2.length; _i++) { - var baseSig = baseSignatures_2[_i]; + for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { + var baseSig = baseSignatures_1[_i]; var typeParamCount = baseSig.typeParameters ? baseSig.typeParameters.length : 0; if (typeParamCount === typeArgCount) { var sig = typeParamCount ? getSignatureInstantiation(baseSig, typeArguments) : cloneSignature(baseSig); @@ -14123,7 +14471,7 @@ var ts; function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignatures(s, signature, partialMatch, ignoreReturnTypes, compareTypes)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -14212,35 +14560,28 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; - var members; - var callSignatures; - var constructSignatures; - var stringIndexType; - var numberIndexType; if (type.target) { - members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, false); - callSignatures = instantiateList(getSignaturesOfType(type.target, 0), type.mapper, instantiateSignature); - constructSignatures = instantiateList(getSignaturesOfType(type.target, 1), type.mapper, instantiateSignature); - stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0), type.mapper); - numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1), type.mapper); + var members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, false); + var callSignatures = instantiateList(getSignaturesOfType(type.target, 0), type.mapper, instantiateSignature); + var constructSignatures = instantiateList(getSignaturesOfType(type.target, 1), type.mapper, instantiateSignature); + var stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0), type.mapper); + var numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1), type.mapper); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else if (symbol.flags & 2048) { - members = symbol.members; - callSignatures = getSignaturesOfSymbol(members["__call"]); - constructSignatures = getSignaturesOfSymbol(members["__new"]); - stringIndexType = getIndexTypeOfSymbol(symbol, 0); - numberIndexType = getIndexTypeOfSymbol(symbol, 1); + var members = symbol.members; + var callSignatures = getSignaturesOfSymbol(members["__call"]); + var constructSignatures = getSignaturesOfSymbol(members["__new"]); + var stringIndexType = getIndexTypeOfSymbol(symbol, 0); + var numberIndexType = getIndexTypeOfSymbol(symbol, 1); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else { - members = emptySymbols; - callSignatures = emptyArray; - constructSignatures = emptyArray; + var members = emptySymbols; + var constructSignatures = emptyArray; if (symbol.flags & 1952) { members = getExportsOfSymbol(symbol); } - if (symbol.flags & (16 | 8192)) { - callSignatures = getSignaturesOfSymbol(symbol); - } if (symbol.flags & 32) { var classType = getDeclaredTypeOfClassOrInterface(symbol); constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]); @@ -14253,10 +14594,12 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(baseConstructorType)); } } - stringIndexType = undefined; - numberIndexType = (symbol.flags & 384) ? stringType : undefined; + var numberIndexType = (symbol.flags & 384) ? stringType : undefined; + setObjectTypeMembers(type, members, emptyArray, constructSignatures, undefined, numberIndexType); + if (symbol.flags & (16 | 8192)) { + type.callSignatures = getSignaturesOfSymbol(symbol); + } } - setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } function resolveStructuredTypeMembers(type) { if (!type.members) { @@ -14346,12 +14689,14 @@ var ts; function createUnionOrIntersectionProperty(containingType, name) { var types = containingType.types; var props; + var commonFlags = (containingType.flags & 32768) ? 536870912 : 0; for (var _i = 0, types_2 = types; _i < types_2.length; _i++) { var current = types_2[_i]; var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (prop && !(getDeclarationFlagsFromSymbol(prop) & (16 | 32))) { + commonFlags &= prop.flags; if (!props) { props = [prop]; } @@ -14379,7 +14724,10 @@ var ts; } propTypes.push(getTypeOfSymbol(prop)); } - var result = createSymbol(4 | 67108864 | 268435456, name); + var result = createSymbol(4 | + 67108864 | + 268435456 | + commonFlags, name); result.containingType = containingType; result.declarations = declarations; result.type = containingType.flags & 16384 ? getUnionType(propTypes) : getIntersectionType(propTypes); @@ -14429,22 +14777,6 @@ var ts; function getSignaturesOfType(type, kind) { return getSignaturesOfStructuredType(getApparentType(type), kind); } - function typeHasConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & (80896 | 16384)) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.constructSignatures.length > 0; - } - return false; - } - function typeHasCallOrConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & 130048) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.callSignatures.length > 0 || resolved.constructSignatures.length > 0; - } - return false; - } function getIndexTypeOfStructuredType(type, kind) { if (type.flags & 130048) { var resolved = resolveStructuredTypeMembers(type); @@ -14486,6 +14818,23 @@ var ts; } return false; } + function createTypePredicateFromTypePredicateNode(node) { + if (node.parameterName.kind === 69) { + var parameterName = node.parameterName; + return { + kind: 1, + parameterName: parameterName ? parameterName.text : undefined, + parameterIndex: parameterName ? getTypePredicateParameterIndex(node.parent.parameters, parameterName) : undefined, + type: getTypeFromTypeNode(node.type) + }; + } + else { + return { + kind: 0, + type: getTypeFromTypeNode(node.type) + }; + } + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { @@ -14499,8 +14848,13 @@ var ts; var minArgumentCount = -1; for (var i = 0, n = declaration.parameters.length; i < n; i++) { var param = declaration.parameters[i]; - parameters.push(param.symbol); - if (param.type && param.type.kind === 9) { + var paramSymbol = param.symbol; + if (paramSymbol && !!(paramSymbol.flags & 4) && !ts.isBindingPattern(param.name)) { + var resolvedSymbol = resolveName(param, paramSymbol.name, 107455, undefined, undefined); + paramSymbol = resolvedSymbol; + } + parameters.push(paramSymbol); + if (param.type && param.type.kind === 162) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { @@ -14516,20 +14870,11 @@ var ts; minArgumentCount = declaration.parameters.length; } var returnType; - var typePredicate; if (classType) { returnType = classType; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 150) { - var typePredicateNode = declaration.type; - typePredicate = { - parameterName: typePredicateNode.parameterName ? typePredicateNode.parameterName.text : undefined, - parameterIndex: typePredicateNode.parameterName ? getTypePredicateParameterIndex(declaration.parameters, typePredicateNode.parameterName) : undefined, - type: getTypeFromTypeNode(typePredicateNode.type) - }; - } } else { if (declaration.kind === 145 && !ts.hasDynamicName(declaration)) { @@ -14540,7 +14885,7 @@ var ts; returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -14553,7 +14898,7 @@ var ts; switch (node.kind) { case 152: case 153: - case 213: + case 215: case 143: case 142: case 144: @@ -14562,8 +14907,8 @@ var ts; case 149: case 145: case 146: - case 173: - case 174: + case 175: + case 176: if (i > 0 && node.body) { var previous = symbol.declarations[i - 1]; if (node.parent === previous.parent && node.kind === previous.kind && node.pos === previous.end) { @@ -14679,17 +15024,38 @@ var ts; ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; } - function getConstraintOfTypeParameter(type) { - if (!type.constraint) { - if (type.target) { - var targetConstraint = getConstraintOfTypeParameter(type.target); - type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; + function getConstraintDeclaration(type) { + return ts.getDeclarationOfKind(type.symbol, 137).constraint; + } + function hasConstraintReferenceTo(type, target) { + var checked; + while (type && type.flags & 512 && !ts.contains(checked, type)) { + if (type === target) { + return true; + } + (checked || (checked = [])).push(type); + var constraintDeclaration = getConstraintDeclaration(type); + type = constraintDeclaration && getTypeFromTypeNode(constraintDeclaration); + } + return false; + } + function getConstraintOfTypeParameter(typeParameter) { + if (!typeParameter.constraint) { + if (typeParameter.target) { + var targetConstraint = getConstraintOfTypeParameter(typeParameter.target); + typeParameter.constraint = targetConstraint ? instantiateType(targetConstraint, typeParameter.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 137).constraint); + var constraintDeclaration = getConstraintDeclaration(typeParameter); + var constraint = getTypeFromTypeNode(constraintDeclaration); + if (hasConstraintReferenceTo(constraint, typeParameter)) { + error(constraintDeclaration, ts.Diagnostics.Type_parameter_0_has_a_circular_constraint, typeToString(typeParameter)); + constraint = unknownType; + } + typeParameter.constraint = constraint; } } - return type.constraint === noConstraintType ? undefined : type.constraint; + return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 137).parent); @@ -14733,40 +15099,6 @@ var ts; } return type; } - function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode, typeParameterSymbol) { - var links = getNodeLinks(typeReferenceNode); - if (links.isIllegalTypeReferenceInConstraint !== undefined) { - return links.isIllegalTypeReferenceInConstraint; - } - var currentNode = typeReferenceNode; - while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return d.parent === currentNode.parent; })) { - currentNode = currentNode.parent; - } - links.isIllegalTypeReferenceInConstraint = currentNode.kind === 137; - return links.isIllegalTypeReferenceInConstraint; - } - function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { - var typeParameterSymbol; - function check(n) { - if (n.kind === 151 && n.typeName.kind === 69) { - var links = getNodeLinks(n); - if (links.isIllegalTypeReferenceInConstraint === undefined) { - var symbol = resolveName(typeParameter, n.typeName.text, 793056, undefined, undefined); - if (symbol && (symbol.flags & 262144)) { - links.isIllegalTypeReferenceInConstraint = ts.forEach(symbol.declarations, function (d) { return d.parent === typeParameter.parent; }); - } - } - if (links.isIllegalTypeReferenceInConstraint) { - error(typeParameter, ts.Diagnostics.Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list); - } - } - ts.forEachChild(n, check); - } - if (typeParameter.constraint) { - typeParameterSymbol = getSymbolOfNode(typeParameter); - check(typeParameter.constraint); - } - } function getTypeFromClassOrInterfaceReference(node, symbol) { var type = getDeclaredTypeOfSymbol(symbol); var typeParameters = type.localTypeParameters; @@ -14803,9 +15135,6 @@ var ts; return type; } function getTypeFromNonGenericTypeReference(node, symbol) { - if (symbol.flags & 262144 && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - return unknownType; - } if (node.typeArguments) { error(node, ts.Diagnostics.Type_0_is_not_generic, symbolToString(symbol)); return unknownType; @@ -14841,9 +15170,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 214: - case 215: + case 216: case 217: + case 219: return declaration; } } @@ -14875,10 +15204,6 @@ var ts; if (arity === void 0) { arity = 0; } return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } - function tryGetGlobalType(name, arity) { - if (arity === void 0) { arity = 0; } - return getTypeOfGlobalSymbol(getGlobalSymbol(name, 793056, undefined), arity); - } function getExportedTypeFromNamespace(namespace, name) { var namespaceSymbol = getGlobalSymbol(namespace, 1536, undefined); var typeSymbol = namespaceSymbol && getSymbol(namespaceSymbol.exports, name, 793056); @@ -14979,7 +15304,7 @@ var ts; } function getUnionType(types, noSubtypeReduction) { if (types.length === 0) { - return emptyObjectType; + return emptyUnionType; } var typeSet = []; addTypesToSet(typeSet, types, 16384); @@ -15045,8 +15370,7 @@ var ts; } return links.resolvedType; } - function getStringLiteralType(node) { - var text = node.text; + function getStringLiteralTypeForText(text) { if (ts.hasProperty(stringLiteralTypes, text)) { return stringLiteralTypes[text]; } @@ -15054,17 +15378,17 @@ var ts; type.text = text; return type; } - function getTypeFromStringLiteral(node) { + function getTypeFromStringLiteralTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getStringLiteralType(node); + links.resolvedType = getStringLiteralTypeForText(node.text); } return links.resolvedType; } function getThisType(node) { var container = ts.getThisContainer(node, false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 215)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 217)) { if (!(container.flags & 64) && (container.kind !== 144 || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; @@ -15080,6 +15404,22 @@ var ts; } return links.resolvedType; } + function getPredicateType(node) { + return createPredicateType(getSymbolOfNode(node), createTypePredicateFromTypePredicateNode(node)); + } + function createPredicateType(symbol, predicate) { + var type = createType(8 | 134217728); + type.symbol = symbol; + type.predicate = predicate; + return type; + } + function getTypeFromPredicateTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getPredicateType(node); + } + return links.resolvedType; + } function getTypeFromTypeNode(node) { switch (node.kind) { case 117: @@ -15094,15 +15434,15 @@ var ts; return esSymbolType; case 103: return voidType; - case 97: + case 161: return getTypeFromThisTypeNode(node); - case 9: - return getTypeFromStringLiteral(node); + case 162: + return getTypeFromStringLiteralTypeNode(node); case 151: return getTypeFromTypeReference(node); case 150: - return booleanType; - case 188: + return getTypeFromPredicateTypeNode(node); + case 190: return getTypeFromTypeReference(node); case 154: return getTypeFromTypeQueryNode(node); @@ -15180,18 +15520,22 @@ var ts; return t; }; } - function createInferenceMapper(context) { - var mapper = function (t) { - for (var i = 0; i < context.typeParameters.length; i++) { - if (t === context.typeParameters[i]) { - context.inferences[i].isFixed = true; - return getInferredType(context, i); + function getInferenceMapper(context) { + if (!context.mapper) { + var mapper = function (t) { + var typeParameters = context.typeParameters; + for (var i = 0; i < typeParameters.length; i++) { + if (t === 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) { return type; @@ -15199,33 +15543,39 @@ var ts; function combineTypeMappers(mapper1, mapper2) { return function (t) { return instantiateType(mapper1(t), mapper2); }; } - function instantiateTypeParameter(typeParameter, mapper) { + function cloneTypeParameter(typeParameter) { var result = createType(512); result.symbol = typeParameter.symbol; - if (typeParameter.constraint) { - result.constraint = instantiateType(typeParameter.constraint, mapper); + result.target = typeParameter; + return result; + } + function cloneTypePredicate(predicate, mapper) { + if (ts.isIdentifierTypePredicate(predicate)) { + return { + kind: 1, + parameterName: predicate.parameterName, + parameterIndex: predicate.parameterIndex, + type: instantiateType(predicate.type, mapper) + }; } else { - result.target = typeParameter; - result.mapper = mapper; + return { + kind: 0, + type: instantiateType(predicate.type, mapper) + }; } - return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { var freshTypeParameters; - var freshTypePredicate; if (signature.typeParameters && !eraseTypeParameters) { - freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + freshTypeParameters = ts.map(signature.typeParameters, cloneTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); + for (var _i = 0, freshTypeParameters_1 = freshTypeParameters; _i < freshTypeParameters_1.length; _i++) { + var tp = freshTypeParameters_1[_i]; + tp.mapper = mapper; + } } - if (signature.typePredicate) { - freshTypePredicate = { - parameterName: signature.typePredicate.parameterName, - parameterIndex: signature.typePredicate.parameterIndex, - type: instantiateType(signature.typePredicate.type, mapper) - }; - } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -15283,31 +15633,35 @@ var ts; if (type.flags & 32768) { return getIntersectionType(instantiateList(type.types, mapper, instantiateType)); } + if (type.flags & 134217728) { + var predicate = type.predicate; + return createPredicateType(type.symbol, cloneTypePredicate(predicate, mapper)); + } } return type; } function isContextSensitive(node) { ts.Debug.assert(node.kind !== 143 || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 173: - case 174: + case 175: + case 176: return isContextSensitiveFunctionLikeDeclaration(node); - case 165: + case 167: return ts.forEach(node.properties, isContextSensitive); - case 164: + case 166: return ts.forEach(node.elements, isContextSensitive); - case 182: + case 184: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 181: + case 183: return node.operatorToken.kind === 52 && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 245: + case 247: return isContextSensitive(node.initializer); case 143: case 142: return isContextSensitiveFunctionLikeDeclaration(node); - case 172: + case 174: return isContextSensitive(node.expression); } return false; @@ -15332,7 +15686,7 @@ var ts; function isTypeIdenticalTo(source, target) { return checkTypeRelatedTo(source, target, identityRelation, undefined); } - function compareTypes(source, target) { + function compareTypesIdentical(source, target) { return checkTypeRelatedTo(source, target, identityRelation, undefined) ? -1 : 0; } function isTypeSubtypeOf(source, target) { @@ -15347,10 +15701,73 @@ var ts; function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } - function isSignatureAssignableTo(source, target) { - var sourceType = getOrCreateTypeFromSignature(source); - var targetType = getOrCreateTypeFromSignature(target); - return checkTypeRelatedTo(sourceType, targetType, assignableRelation, undefined); + function isSignatureAssignableTo(source, target, ignoreReturnTypes) { + if (source === target) { + return true; + } + if (!target.hasRestParameter && source.minArgumentCount > target.parameters.length) { + return false; + } + source = getErasedSignature(source); + target = getErasedSignature(target); + var sourceMax = getNumNonRestParameters(source); + var targetMax = getNumNonRestParameters(target); + var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); + for (var i = 0; i < checkCount; i++) { + var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var related = isTypeAssignableTo(t, s) || isTypeAssignableTo(s, t); + if (!related) { + return false; + } + } + if (!ignoreReturnTypes) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return true; + } + var sourceReturnType = getReturnTypeOfSignature(source); + if (targetReturnType.flags & 134217728 && targetReturnType.predicate.kind === 1) { + if (!(sourceReturnType.flags & 134217728)) { + return false; + } + } + return isTypeAssignableTo(sourceReturnType, targetReturnType); + } + return true; + } + function isImplementationCompatibleWithOverload(implementation, overload) { + var erasedSource = getErasedSignature(implementation); + var erasedTarget = getErasedSignature(overload); + var sourceReturnType = getReturnTypeOfSignature(erasedSource); + var targetReturnType = getReturnTypeOfSignature(erasedTarget); + if (targetReturnType === voidType + || checkTypeRelatedTo(targetReturnType, sourceReturnType, assignableRelation, undefined) + || checkTypeRelatedTo(sourceReturnType, targetReturnType, assignableRelation, undefined)) { + return isSignatureAssignableTo(erasedSource, erasedTarget, true); + } + return false; + } + function getNumNonRestParameters(signature) { + var numParams = signature.parameters.length; + return signature.hasRestParameter ? + numParams - 1 : + numParams; + } + function getNumParametersToCheckForSignatureRelatability(source, sourceNonRestParamCount, target, targetNonRestParamCount) { + if (source.hasRestParameter === target.hasRestParameter) { + if (source.hasRestParameter) { + return Math.max(sourceNonRestParamCount, targetNonRestParamCount) + 1; + } + else { + return Math.min(sourceNonRestParamCount, targetNonRestParamCount); + } + } + else { + return source.hasRestParameter ? + targetNonRestParamCount : + sourceNonRestParamCount; + } } function checkTypeRelatedTo(source, target, relation, errorNode, headMessage, containingMessageChain) { var errorInfo; @@ -15405,6 +15822,11 @@ var ts; return -1; if (source.flags & 128 && target === numberType) return -1; + if (source.flags & 128 && target.flags & 128) { + if (result = enumRelatedTo(source, target)) { + return result; + } + } if (source.flags & 256 && target === stringType) return -1; if (relation === assignableRelation) { @@ -15413,6 +15835,36 @@ var ts; if (source === numberType && target.flags & 128) return -1; } + if (source.flags & 8 && target.flags & 8) { + if (source.flags & 134217728 && target.flags & 134217728) { + var sourcePredicate = source; + var targetPredicate = target; + if (sourcePredicate.predicate.kind !== targetPredicate.predicate.kind) { + if (reportErrors) { + reportError(ts.Diagnostics.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0; + } + if (sourcePredicate.predicate.kind === 1) { + var sourceIdentifierPredicate = sourcePredicate.predicate; + var targetIdentifierPredicate = targetPredicate.predicate; + if (sourceIdentifierPredicate.parameterIndex !== targetIdentifierPredicate.parameterIndex) { + if (reportErrors) { + reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceIdentifierPredicate.parameterName, targetIdentifierPredicate.parameterName); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0; + } + } + var related = isRelatedTo(sourcePredicate.predicate.type, targetPredicate.predicate.type, reportErrors, headMessage); + if (related === 0 && reportErrors) { + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return related; + } + return -1; + } if (source.flags & 1048576) { if (hasExcessProperties(source, target, reportErrors)) { if (reportErrors) { @@ -15488,9 +15940,6 @@ var ts; } return objectTypeRelatedTo(source, source, target, false); } - if (source.flags & 512 && target.flags & 512) { - return typeParameterIdenticalTo(source, target); - } if (source.flags & 16384 && target.flags & 16384 || source.flags & 32768 && target.flags & 32768) { if (result = eachTypeRelatedToSomeType(source, target)) { @@ -15599,8 +16048,9 @@ var ts; if (sources.length !== targets.length && relation === identityRelation) { return 0; } + var length = sources.length <= targets.length ? sources.length : targets.length; var result = -1; - for (var i = 0; i < targets.length; i++) { + for (var i = 0; i < length; i++) { var related = isRelatedTo(sources[i], targets[i], reportErrors); if (!related) { return 0; @@ -15609,23 +16059,17 @@ var ts; } return result; } - function typeParameterIdenticalTo(source, target) { - if (source.constraint === target.constraint) { - return -1; - } - if (source.constraint === noConstraintType || target.constraint === noConstraintType) { - return 0; - } - return isIdenticalTo(source.constraint, target.constraint); - } - function objectTypeRelatedTo(apparentSource, originalSource, target, reportErrors) { + function objectTypeRelatedTo(source, originalSource, target, reportErrors) { if (overflow) { return 0; } - var id = relation !== identityRelation || apparentSource.id < target.id ? apparentSource.id + "," + target.id : target.id + "," + apparentSource.id; + var id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; var related = relation[id]; if (related !== undefined) { - if (!elaborateErrors || (related === 3)) { + if (elaborateErrors && related === 2) { + relation[id] = 3; + } + else { return related === 1 ? -1 : 0; } } @@ -15646,13 +16090,13 @@ var ts; maybeStack = []; expandingFlags = 0; } - sourceStack[depth] = apparentSource; + sourceStack[depth] = source; targetStack[depth] = target; maybeStack[depth] = {}; maybeStack[depth][id] = 1; depth++; var saveExpandingFlags = expandingFlags; - if (!(expandingFlags & 1) && isDeeplyNestedGeneric(apparentSource, sourceStack, depth)) + if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack, depth)) expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack, depth)) expandingFlags |= 2; @@ -15661,15 +16105,15 @@ var ts; result = 1; } else { - result = propertiesRelatedTo(apparentSource, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 0, reportErrors); + result &= signaturesRelatedTo(source, target, 0, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 1, reportErrors); + result &= signaturesRelatedTo(source, target, 1, 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); } } } @@ -15791,61 +16235,38 @@ var ts; } var sourceSignatures = getSignaturesOfType(source, kind); var targetSignatures = getSignaturesOfType(target, kind); + if (kind === 1 && sourceSignatures.length && targetSignatures.length && + isAbstractConstructorType(source) && !isAbstractConstructorType(target)) { + if (reportErrors) { + reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); + } + return 0; + } var result = -1; var saveErrorInfo = errorInfo; - if (kind === 1) { - var sourceSig = sourceSignatures[0]; - var targetSig = targetSignatures[0]; - result &= abstractSignatureRelatedTo(source, sourceSig, target, targetSig); - if (result !== -1) { - return result; - } - } outer: for (var _i = 0, targetSignatures_1 = targetSignatures; _i < targetSignatures_1.length; _i++) { var t = targetSignatures_1[_i]; if (!t.hasStringLiterals || target.flags & 262144) { - var localErrors = reportErrors; - var checkedAbstractAssignability = false; + var shouldElaborateErrors = reportErrors; for (var _a = 0, sourceSignatures_1 = sourceSignatures; _a < sourceSignatures_1.length; _a++) { var s = sourceSignatures_1[_a]; if (!s.hasStringLiterals || source.flags & 262144) { - var related = signatureRelatedTo(s, t, localErrors); + var related = signatureRelatedTo(s, t, shouldElaborateErrors); if (related) { result &= related; errorInfo = saveErrorInfo; continue outer; } - localErrors = false; + shouldElaborateErrors = false; } } + if (shouldElaborateErrors && !isPrimitiveApparentType(source)) { + reportError(ts.Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, undefined, undefined, kind)); + } return 0; } } return result; - function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { - if (sourceSig && targetSig) { - var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); - var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); - if (!sourceDecl) { - return -1; - } - var sourceErasedSignature = getErasedSignature(sourceSig); - var targetErasedSignature = getErasedSignature(targetSig); - var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); - var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); - var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 128; - var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 128; - if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { - if (reportErrors) { - reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); - } - return 0; - } - } - return -1; - } } function signatureRelatedTo(source, target, reportErrors) { if (source === target) { @@ -15893,37 +16314,19 @@ var ts; } result &= related; } - if (source.typePredicate && target.typePredicate) { - var hasDifferentParameterIndex = source.typePredicate.parameterIndex !== target.typePredicate.parameterIndex; - var hasDifferentTypes; - if (hasDifferentParameterIndex || - (hasDifferentTypes = !isTypeIdenticalTo(source.typePredicate.type, target.typePredicate.type))) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return result; + } + var sourceReturnType = getReturnTypeOfSignature(source); + if (targetReturnType.flags & 134217728 && targetReturnType.predicate.kind === 1) { + if (!(sourceReturnType.flags & 134217728)) { if (reportErrors) { - var sourceParamText = source.typePredicate.parameterName; - var targetParamText = target.typePredicate.parameterName; - var sourceTypeText = typeToString(source.typePredicate.type); - var targetTypeText = typeToString(target.typePredicate.type); - if (hasDifferentParameterIndex) { - reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceParamText, targetParamText); - } - else if (hasDifferentTypes) { - reportError(ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceTypeText, targetTypeText); - } - reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, sourceParamText + " is " + sourceTypeText, targetParamText + " is " + targetTypeText); + reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); } return 0; } } - else if (!source.typePredicate && target.typePredicate) { - if (reportErrors) { - reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); - } - return 0; - } - var targetReturnType = getReturnTypeOfSignature(target); - if (targetReturnType === voidType) - return result; - var sourceReturnType = getReturnTypeOfSignature(source); return result & isRelatedTo(sourceReturnType, targetReturnType, reportErrors); } function signaturesIdenticalTo(source, target, kind) { @@ -15933,8 +16336,8 @@ var ts; return 0; } var result = -1; - for (var i = 0, len = sourceSignatures.length; i < len; ++i) { - var related = compareSignatures(sourceSignatures[i], targetSignatures[i], false, false, isRelatedTo); + for (var i = 0, len = sourceSignatures.length; i < len; i++) { + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], false, false, isRelatedTo); if (!related) { return 0; } @@ -16014,6 +16417,37 @@ var ts; } return 0; } + function enumRelatedTo(source, target) { + if (source.symbol.name !== target.symbol.name || + source.symbol.flags & 128 || + target.symbol.flags & 128) { + return 0; + } + var targetEnumType = getTypeOfSymbol(target.symbol); + for (var _i = 0, _a = getPropertiesOfType(getTypeOfSymbol(source.symbol)); _i < _a.length; _i++) { + var property = _a[_i]; + if (property.flags & 8) { + var targetProperty = getPropertyOfType(targetEnumType, property.name); + if (!targetProperty || !(targetProperty.flags & 8)) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, undefined, 128)); + return 0; + } + } + } + return -1; + } + } + function isAbstractConstructorType(type) { + if (type.flags & 65536) { + var symbol = type.symbol; + if (symbol && symbol.flags & 32) { + var declaration = getClassLikeDeclarationOfSymbol(symbol); + if (declaration && declaration.flags & 128) { + return true; + } + } + } + return false; } function isDeeplyNestedGeneric(type, stack, depth) { if (type.flags & (4096 | 131072) && depth >= 5) { @@ -16031,7 +16465,7 @@ var ts; return false; } function isPropertyIdenticalTo(sourceProp, targetProp) { - return compareProperties(sourceProp, targetProp, compareTypes) !== 0; + return compareProperties(sourceProp, targetProp, compareTypesIdentical) !== 0; } function compareProperties(sourceProp, targetProp, compareTypes) { if (sourceProp === targetProp) { @@ -16066,31 +16500,19 @@ var ts; } return false; } - function compareSignatures(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { if (source === target) { return -1; } if (!(isMatchingSignature(source, target, partialMatch))) { return 0; } - var result = -1; - if (source.typeParameters && target.typeParameters) { - if (source.typeParameters.length !== target.typeParameters.length) { - return 0; - } - for (var i = 0, len = source.typeParameters.length; i < len; ++i) { - var related = compareTypes(source.typeParameters[i], target.typeParameters[i]); - if (!related) { - return 0; - } - result &= related; - } - } - else if (source.typeParameters || target.typeParameters) { + if ((source.typeParameters ? source.typeParameters.length : 0) !== (target.typeParameters ? target.typeParameters.length : 0)) { return 0; } source = getErasedSignature(source); target = getErasedSignature(target); + var result = -1; var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); @@ -16207,10 +16629,13 @@ var ts; return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexType, numberIndexType); } function getWidenedType(type) { - if (type.flags & 6291456) { + if (type.flags & 140509184) { if (type.flags & (32 | 64)) { return anyType; } + if (type.flags & 134217728) { + return booleanType; + } if (type.flags & 524288) { return getWidenedTypeOfObjectLiteral(type); } @@ -16274,13 +16699,13 @@ var ts; ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 213: + case 215: case 143: case 142: case 145: case 146: - case 173: - case 174: + case 175: + case 176: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -16326,13 +16751,7 @@ var ts; } } function createInferenceContext(typeParameters, inferUnionTypes) { - var inferences = []; - for (var _i = 0, typeParameters_1 = typeParameters; _i < typeParameters_1.length; _i++) { - var unused = typeParameters_1[_i]; - inferences.push({ - primary: undefined, secondary: undefined, isFixed: false - }); - } + var inferences = ts.map(typeParameters, createTypeInferencesObject); return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, @@ -16340,6 +16759,13 @@ var ts; inferredTypes: new Array(typeParameters.length) }; } + function createTypeInferencesObject() { + return { + primary: undefined, + secondary: undefined, + isFixed: false + }; + } function inferTypes(context, source, target) { var sourceStack; var targetStack; @@ -16355,6 +16781,21 @@ var ts; return false; } function inferFromTypes(source, target) { + if (source.flags & 16384 && target.flags & 16384 || + source.flags & 32768 && target.flags & 32768) { + var matchingTypes; + for (var _i = 0, _a = target.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (typeIdenticalToSomeType(t, source.types)) { + (matchingTypes || (matchingTypes = [])).push(t); + inferFromTypes(t, t); + } + } + if (matchingTypes) { + source = removeTypesFromUnionOrIntersection(source, matchingTypes); + target = removeTypesFromUnionOrIntersection(target, matchingTypes); + } + } if (target.flags & 512) { if (source.flags & 8388608) { return; @@ -16383,6 +16824,11 @@ var ts; inferFromTypes(sourceTypes[i], targetTypes[i]); } } + else if (source.flags & 134217728 && target.flags & 134217728) { + if (source.predicate.kind === target.predicate.kind) { + inferFromTypes(source.predicate.type, target.predicate.type); + } + } else if (source.flags & 8192 && target.flags & 8192 && source.elementTypes.length === target.elementTypes.length) { var sourceTypes = source.elementTypes; var targetTypes = target.elementTypes; @@ -16394,8 +16840,8 @@ var ts; var targetTypes = target.types; var typeParameterCount = 0; var typeParameter; - for (var _i = 0, targetTypes_2 = targetTypes; _i < targetTypes_2.length; _i++) { - var t = targetTypes_2[_i]; + for (var _b = 0, targetTypes_2 = targetTypes; _b < targetTypes_2.length; _b++) { + var t = targetTypes_2[_b]; if (t.flags & 512 && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -16412,15 +16858,16 @@ var ts; } else if (source.flags & 49152) { var sourceTypes = source.types; - for (var _a = 0, sourceTypes_3 = sourceTypes; _a < sourceTypes_3.length; _a++) { - var sourceType = sourceTypes_3[_a]; + for (var _c = 0, sourceTypes_3 = sourceTypes; _c < sourceTypes_3.length; _c++) { + var sourceType = sourceTypes_3[_c]; inferFromTypes(sourceType, target); } } else { source = getApparentType(source); - if (source.flags & 80896 && (target.flags & (4096 | 8192) || - (target.flags & 65536) && target.symbol && target.symbol.flags & (8192 | 2048 | 32))) { + if (source.flags & 80896 && (target.flags & 4096 && target.typeArguments || + target.flags & 8192 || + target.flags & 65536 && target.symbol && target.symbol.flags & (8192 | 2048 | 32))) { if (isInProcess(source, target)) { return; } @@ -16466,14 +16913,7 @@ var ts; } function inferFromSignature(source, target) { forEachMatchingParameterType(source, target, inferFromTypes); - if (source.typePredicate && target.typePredicate) { - if (target.typePredicate.parameterIndex === source.typePredicate.parameterIndex) { - inferFromTypes(source.typePredicate.type, target.typePredicate.type); - } - } - else { - inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); - } + inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); } function inferFromIndexTypes(source, target, sourceKind, targetKind) { var targetIndexType = getIndexTypeOfType(target, targetKind); @@ -16485,6 +16925,25 @@ var ts; } } } + function typeIdenticalToSomeType(type, types) { + for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { + var t = types_7[_i]; + if (isTypeIdenticalTo(t, type)) { + return true; + } + } + return false; + } + function removeTypesFromUnionOrIntersection(type, typesToRemove) { + var reducedTypes = []; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!typeIdenticalToSomeType(t, typesToRemove)) { + reducedTypes.push(t); + } + } + return type.flags & 16384 ? getUnionType(reducedTypes, true) : getIntersectionType(reducedTypes); + } function getInferenceCandidates(context, index) { var inferences = context.inferences[index]; return inferences.primary || inferences.secondary || emptyArray; @@ -16503,14 +16962,19 @@ var ts; inferredType = emptyObjectType; inferenceSucceeded = true; } + context.inferredTypes[index] = inferredType; if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); - inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; + if (constraint) { + var instantiatedConstraint = instantiateType(constraint, getInferenceMapper(context)); + if (!isTypeAssignableTo(inferredType, getTypeWithThisArgument(instantiatedConstraint, inferredType))) { + context.inferredTypes[index] = inferredType = instantiatedConstraint; + } + } } else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { context.failedTypeParameterIndex = index; } - context.inferredTypes[index] = inferredType; } return inferredType; } @@ -16520,9 +16984,6 @@ var ts; } return context.inferredTypes; } - function hasAncestor(node, kind) { - return ts.getAncestor(node, kind) !== undefined; - } function getResolvedSymbol(node) { var links = getNodeLinks(node); if (!links.resolvedSymbol) { @@ -16545,21 +17006,6 @@ var ts; } ts.Debug.fail("should not get here"); } - function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { - if (type.flags & 16384) { - var types = type.types; - if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { - var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { - return narrowedType; - } - } - } - else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { - return getUnionType(emptyArray); - } - return type; - } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } @@ -16577,10 +17023,7 @@ var ts; return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { if (node.operatorToken.kind >= 56 && node.operatorToken.kind <= 68) { - var n = node.left; - while (n.kind === 172) { - n = n.expression; - } + var n = skipParenthesizedNodes(node.left); if (n.kind === 69 && getResolvedSymbol(n) === symbol) { return true; } @@ -16595,55 +17038,55 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 181: + case 183: return isAssignedInBinaryExpression(node); - case 211: - case 163: - return isAssignedInVariableDeclaration(node); - case 161: - case 162: - case 164: + case 213: case 165: + return isAssignedInVariableDeclaration(node); + case 163: + case 164: case 166: case 167: case 168: case 169: + case 170: case 171: - case 189: - case 172: - case 179: - case 175: - case 178: - case 176: + case 173: + case 191: + case 174: + case 181: case 177: case 180: - case 184: + case 178: + case 179: case 182: - case 185: - case 192: - case 193: + case 186: + case 184: + case 187: + case 194: case 195: - case 196: case 197: case 198: case 199: case 200: case 201: - case 204: - case 205: + case 202: + case 203: case 206: - case 241: - case 242: case 207: case 208: - case 209: + case 243: case 244: - case 233: - case 234: - case 238: - case 239: + case 209: + case 210: + case 211: + case 246: case 235: + case 236: case 240: + case 241: + case 237: + case 242: return ts.forEachChild(node, isAssignedIn); } return false; @@ -16653,53 +17096,66 @@ var ts; var type = getTypeOfSymbol(symbol); if (node && symbol.flags & 3) { if (isTypeAny(type) || type.flags & (80896 | 16384 | 512)) { + var declaration = ts.getDeclarationOfKind(symbol, 213); + var top_1 = declaration && getDeclarationContainer(declaration); + var originalType = type; + var nodeStack = []; loop: while (node.parent) { var child = node; node = node.parent; - var narrowedType = type; switch (node.kind) { - case 196: - if (child !== node.expression) { - narrowedType = narrowType(type, node.expression, child === node.thenStatement); - } + case 198: + case 184: + case 183: + nodeStack.push({ node: node, child: child }); break; - case 182: - if (child !== node.condition) { - narrowedType = narrowType(type, node.condition, child === node.whenTrue); - } - break; - case 181: - if (child === node.right) { - if (node.operatorToken.kind === 51) { - narrowedType = narrowType(type, node.left, true); - } - else if (node.operatorToken.kind === 52) { - narrowedType = narrowType(type, node.left, false); - } - } - break; - case 248: - case 218: - case 213: - case 143: - case 142: - case 145: - case 146: - case 144: + case 250: + case 220: break loop; } - if (narrowedType !== type) { - if (isVariableAssignedWithin(symbol, node)) { - break; - } - type = narrowedType; + if (node === top_1) { + break; } } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 198: + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, child === node_1.thenStatement); + } + break; + case 184: + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, child === node_1.whenTrue); + } + break; + case 183: + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51) { + type = narrowType(type, node_1.left, true); + } + else if (node_1.operatorToken.kind === 52) { + type = narrowType(type, node_1.left, false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { + type = originalType; + } + } + if (type === emptyUnionType) { + type = originalType; + } } } return type; function narrowTypeByEquality(type, expr, assumeTrue) { - if (expr.left.kind !== 176 || expr.right.kind !== 9) { + if (expr.left.kind !== 178 || expr.right.kind !== 9) { return type; } var left = expr.left; @@ -16707,24 +17163,30 @@ var ts; if (left.expression.kind !== 69 || getResolvedSymbol(left.expression) !== symbol) { return type; } - var typeInfo = primitiveTypeInfo[right.text]; if (expr.operatorToken.kind === 33) { assumeTrue = !assumeTrue; } - if (assumeTrue) { - if (!typeInfo) { - return removeTypesFromUnionType(type, 258 | 132 | 8 | 16777216, true, false); - } - if (isTypeSubtypeOf(typeInfo.type, type)) { - return typeInfo.type; - } - return removeTypesFromUnionType(type, typeInfo.flags, false, false); + var typeInfo = primitiveTypeInfo[right.text]; + if (typeInfo && typeInfo.type === undefinedType) { + return type; + } + if (!!(type.flags & 1) && typeInfo && assumeTrue) { + return typeInfo.type; + } + var flags; + if (typeInfo) { + flags = typeInfo.flags; } else { - if (typeInfo) { - return removeTypesFromUnionType(type, typeInfo.flags, true, false); - } - return type; + assumeTrue = !assumeTrue; + flags = 132 | 258 | 16777216 | 8; + } + if (!(type.flags & 16384)) { + return filterUnion(type) ? type : emptyUnionType; + } + return getUnionType(ts.filter(type.types, filterUnion), true); + function filterUnion(type) { + return assumeTrue === !!(type.flags & flags); } } function narrowTypeByAnd(type, expr, assumeTrue) { @@ -16734,7 +17196,7 @@ var ts; else { return getUnionType([ narrowType(type, expr.left, false), - narrowType(narrowType(type, expr.left, true), expr.right, false) + narrowType(type, expr.right, false) ]); } } @@ -16742,7 +17204,7 @@ var ts; if (assumeTrue) { return getUnionType([ narrowType(type, expr.left, true), - narrowType(narrowType(type, expr.left, false), expr.right, true) + narrowType(type, expr.right, true) ]); } else { @@ -16778,17 +17240,17 @@ var ts; } } if (targetType) { - if (!assumeTrue) { - if (type.flags & 16384) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, targetType); })); - } - return type; - } - return getNarrowedType(type, targetType); + return getNarrowedType(type, targetType, assumeTrue); } return type; } - function getNarrowedType(originalType, narrowedTypeCandidate) { + function getNarrowedType(originalType, narrowedTypeCandidate, assumeTrue) { + if (!assumeTrue) { + if (originalType.flags & 16384) { + return getUnionType(ts.filter(originalType.types, function (t) { return !isTypeSubtypeOf(t, narrowedTypeCandidate); })); + } + return originalType; + } if (originalType.flags & 16384) { var assignableConstituents = ts.filter(originalType.types, function (t) { return isTypeAssignableTo(t, narrowedTypeCandidate); }); if (assignableConstituents.length) { @@ -16805,26 +17267,60 @@ var ts; return type; } var signature = getResolvedSignature(expr); - if (signature.typePredicate && - expr.arguments[signature.typePredicate.parameterIndex] && - getSymbolAtLocation(expr.arguments[signature.typePredicate.parameterIndex]) === symbol) { - if (!assumeTrue) { - if (type.flags & 16384) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, signature.typePredicate.type); })); - } - return type; + var predicateType = getReturnTypeOfSignature(signature); + if (!predicateType || !(predicateType.flags & 134217728)) { + return type; + } + var predicate = predicateType.predicate; + if (ts.isIdentifierTypePredicate(predicate)) { + var callExpression = expr; + if (callExpression.arguments[predicate.parameterIndex] && + getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); } - return getNarrowedType(type, signature.typePredicate.type); + } + else { + var expression = skipParenthesizedNodes(expr.expression); + return narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue); } return type; } + function narrowTypeByTypePredicateMember(type, expr, assumeTrue) { + if (type.flags & 1) { + return type; + } + var memberType = getTypeOfExpression(expr); + if (!(memberType.flags & 134217728)) { + return type; + } + return narrowTypeByThisTypePredicate(type, memberType.predicate, expr, assumeTrue); + } + function narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue) { + if (expression.kind === 169 || expression.kind === 168) { + var accessExpression = expression; + var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); + if (possibleIdentifier.kind === 69 && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + } + return type; + } + function getSymbolAtTypePredicatePosition(expr) { + expr = skipParenthesizedNodes(expr); + switch (expr.kind) { + case 69: + case 168: + case 135: + return getSymbolOfEntityNameOrPropertyAccessExpression(expr); + } + } function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 168: + case 170: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 172: + case 174: return narrowType(type, expr.expression, assumeTrue); - case 181: + case 183: var operator = expr.operatorToken.kind; if (operator === 32 || operator === 33) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -16839,20 +17335,29 @@ var ts; return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 179: + case 181: if (expr.operator === 49) { return narrowType(type, expr.operand, !assumeTrue); } break; + case 169: + case 168: + return narrowTypeByTypePredicateMember(type, expr, assumeTrue); } return type; } } + function skipParenthesizedNodes(expression) { + while (expression.kind === 174) { + expression = expression.expression; + } + return expression; + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 174) { + if (container.kind === 176) { if (languageVersion < 2) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -16883,7 +17388,7 @@ var ts; function checkBlockScopedBindingCapturedInLoop(node, symbol) { if (languageVersion >= 2 || (symbol.flags & (2 | 32)) === 0 || - symbol.valueDeclaration.parent.kind === 244) { + symbol.valueDeclaration.parent.kind === 246) { return; } var container; @@ -16892,11 +17397,11 @@ var ts; } else { container = symbol.valueDeclaration; - while (container.kind !== 212) { + while (container.kind !== 214) { container = container.parent; } container = container.parent; - if (container.kind === 193) { + if (container.kind === 195) { container = container.parent; } } @@ -16926,15 +17431,15 @@ var ts; function checkThisExpression(node) { var container = ts.getThisContainer(node, true); var needToCaptureLexicalThis = false; - if (container.kind === 174) { + if (container.kind === 176) { container = ts.getThisContainer(container, false); needToCaptureLexicalThis = (languageVersion < 2); } switch (container.kind) { - case 218: + case 220: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); break; - case 217: + case 219: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); break; case 144: @@ -16959,6 +17464,18 @@ var ts; var symbol = getSymbolOfNode(container.parent); return container.flags & 64 ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; } + if (ts.isInJavaScriptFile(node) && container.kind === 175) { + if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3) { + var className = container.parent + .left + .expression + .expression; + var classSymbol = checkExpression(className).symbol; + if (classSymbol && classSymbol.members && (classSymbol.flags & 16)) { + return getInferredClassType(classSymbol); + } + } + } return anyType; } function isInConstructorArgumentInitializer(node, constructorDecl) { @@ -16970,50 +17487,64 @@ var ts; return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 168 && node.parent.expression === node; - var classDeclaration = ts.getContainingClass(node); - var classType = classDeclaration && getDeclaredTypeOfSymbol(getSymbolOfNode(classDeclaration)); - var baseClassType = classType && getBaseTypes(classType)[0]; + var isCallExpression = node.parent.kind === 170 && node.parent.expression === node; var container = ts.getSuperContainer(node, true); var needToCaptureLexicalThis = false; if (!isCallExpression) { - while (container && container.kind === 174) { + while (container && container.kind === 176) { container = ts.getSuperContainer(container, true); needToCaptureLexicalThis = languageVersion < 2; } } var canUseSuperExpression = isLegalUsageOfSuperExpression(container); var nodeCheckFlag = 0; - if (canUseSuperExpression) { - if ((container.flags & 64) || isCallExpression) { - nodeCheckFlag = 512; - } - else { - nodeCheckFlag = 256; - } - getNodeLinks(node).flags |= nodeCheckFlag; - if (needToCaptureLexicalThis) { - captureLexicalThis(node.parent, container); - } - } - if (!baseClassType) { - if (!classDeclaration || !ts.getClassExtendsHeritageClauseElement(classDeclaration)) { - error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); - } - return unknownType; - } if (!canUseSuperExpression) { - if (container && container.kind === 136) { + var current = node; + while (current && current !== container && current.kind !== 136) { + current = current.parent; + } + if (current && current.kind === 136) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 167)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); + } else { error(node, ts.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class); } return unknownType; } + if ((container.flags & 64) || isCallExpression) { + nodeCheckFlag = 512; + } + else { + nodeCheckFlag = 256; + } + getNodeLinks(node).flags |= nodeCheckFlag; + if (needToCaptureLexicalThis) { + captureLexicalThis(node.parent, container); + } + if (container.parent.kind === 167) { + if (languageVersion < 2) { + error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); + return unknownType; + } + else { + return anyType; + } + } + var classLikeDeclaration = container.parent; + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(classLikeDeclaration)); + var baseClassType = classType && getBaseTypes(classType)[0]; + if (!baseClassType) { + if (!ts.getClassExtendsHeritageClauseElement(classLikeDeclaration)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); + } + return unknownType; + } if (container.kind === 144 && isInConstructorArgumentInitializer(node, container)) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); return unknownType; @@ -17029,7 +17560,7 @@ var ts; return container.kind === 144; } else { - if (container && ts.isClassLike(container.parent)) { + if (ts.isClassLike(container.parent) || container.parent.kind === 167) { if (container.flags & 64) { return container.kind === 143 || container.kind === 142 || @@ -17140,7 +17671,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 170) { + if (template.parent.kind === 172) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -17160,6 +17691,11 @@ var ts; } return type; } + else if (operator === 51 || operator === 24) { + if (node === binaryExpression.right) { + return getContextualType(binaryExpression); + } + } return undefined; } function applyToContextualType(type, mapper) { @@ -17169,8 +17705,8 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { - var current = types_7[_i]; + for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { + var current = types_8[_i]; var t = mapper(current); if (t) { if (!mappedType) { @@ -17242,21 +17778,20 @@ var ts; var conditional = node.parent; return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; } - function getContextualTypeForJsxExpression(expr) { - if (expr.parent.kind === 238) { - var attrib = expr.parent; - var attrsType = getJsxElementAttributesType(attrib.parent); + function getContextualTypeForJsxAttribute(attribute) { + var kind = attribute.kind; + var jsxElement = attribute.parent; + var attrsType = getJsxElementAttributesType(jsxElement); + if (attribute.kind === 240) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } - else { - return getTypeOfPropertyOfType(attrsType, attrib.name.text); - } + return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - if (expr.kind === 239) { - return getJsxElementAttributesType(expr.parent); + else if (attribute.kind === 241) { + return attrsType; } - return undefined; + ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); } function getApparentTypeOfContextualType(node) { var type = getContextualType(node); @@ -17271,39 +17806,41 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 211: + case 213: case 138: case 141: case 140: - case 163: + case 165: return getContextualTypeForInitializerExpression(node); - case 174: - case 204: + case 176: + case 206: return getContextualTypeForReturnExpression(node); - case 184: + case 186: return getContextualTypeForYieldOperand(parent); - case 168: - case 169: - return getContextualTypeForArgument(parent, node); + case 170: case 171: - case 189: + return getContextualTypeForArgument(parent, node); + case 173: + case 191: return getTypeFromTypeNode(parent.type); - case 181: + case 183: return getContextualTypeForBinaryOperand(node); - case 245: + case 247: return getContextualTypeForObjectLiteralElement(parent); - case 164: + case 166: return getContextualTypeForElementExpression(node); - case 182: + case 184: return getContextualTypeForConditionalOperand(node); - case 190: - ts.Debug.assert(parent.parent.kind === 183); + case 192: + ts.Debug.assert(parent.parent.kind === 185); return getContextualTypeForSubstitutionExpression(parent.parent, node); - case 172: + case 174: + return getContextualType(parent); + case 242: return getContextualType(parent); case 240: - case 239: - return getContextualTypeForJsxExpression(parent); + case 241: + return getContextualTypeForJsxAttribute(parent); } return undefined; } @@ -17317,7 +17854,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 173 || node.kind === 174; + return node.kind === 175 || node.kind === 176; } function getContextualSignatureForFunctionLikeDeclaration(node) { return isFunctionExpressionOrArrowFunction(node) || ts.isObjectLiteralMethod(node) @@ -17337,14 +17874,14 @@ var ts; } var signatureList; var types = type.types; - for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { - var current = types_8[_i]; + for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { + var current = types_9[_i]; var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { signatureList = [signature]; } - else if (!compareSignatures(signatureList[0], signature, false, true, compareTypes)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, false, true, compareTypesIdentical)) { return undefined; } else { @@ -17365,13 +17902,13 @@ var ts; } function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 181 && parent.operatorToken.kind === 56 && parent.left === node) { + if (parent.kind === 183 && parent.operatorToken.kind === 56 && parent.left === node) { return true; } - if (parent.kind === 245) { + if (parent.kind === 247) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 164) { + if (parent.kind === 166) { return isAssignmentTarget(parent); } return false; @@ -17381,8 +17918,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, false); } function hasDefaultValue(node) { - return (node.kind === 163 && !!node.initializer) || - (node.kind === 181 && node.operatorToken.kind === 56); + return (node.kind === 165 && !!node.initializer) || + (node.kind === 183 && node.operatorToken.kind === 56); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -17391,7 +17928,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 185) { + if (inDestructuringPattern && e.kind === 187) { var restArrayType = checkExpression(e.expression, contextualMapper); var restElementType = getIndexTypeOfType(restArrayType, 1) || (languageVersion >= 2 ? getElementTypeOfIterable(restArrayType, undefined) : undefined); @@ -17403,7 +17940,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 185; + hasSpreadElement = hasSpreadElement || e.kind === 187; } if (!hasSpreadElement) { if (inDestructuringPattern && elementTypes.length) { @@ -17414,7 +17951,7 @@ var ts; var contextualType = getApparentTypeOfContextualType(node); if (contextualType && contextualTypeIsTupleLikeType(contextualType)) { var pattern = contextualType.pattern; - if (pattern && (pattern.kind === 162 || pattern.kind === 164)) { + if (pattern && (pattern.kind === 164 || pattern.kind === 166)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -17422,7 +17959,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 187) { + if (patternElement.kind !== 189) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -17468,31 +18005,31 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 161 || contextualType.pattern.kind === 165); + (contextualType.pattern.kind === 163 || contextualType.pattern.kind === 167); var typeFlags = 0; var patternWithComputedProperties = false; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 245 || - memberDecl.kind === 246 || + if (memberDecl.kind === 247 || + memberDecl.kind === 248 || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 245) { + if (memberDecl.kind === 247) { type = checkPropertyAssignment(memberDecl, contextualMapper); } else if (memberDecl.kind === 143) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 246); + ts.Debug.assert(memberDecl.kind === 248); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; var prop = createSymbol(4 | 67108864 | member.flags, member.name); if (inDestructuringPattern) { - var isOptional = (memberDecl.kind === 245 && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 246 && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 247 && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 248 && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912; } @@ -17571,34 +18108,19 @@ var ts; checkJsxOpeningLikeElement(node); return jsxElementType || anyType; } - function tagNamesAreEquivalent(lhs, rhs) { - if (lhs.kind !== rhs.kind) { - return false; - } - if (lhs.kind === 69) { - return lhs.text === rhs.text; - } - return lhs.right.text === rhs.right.text && - tagNamesAreEquivalent(lhs.left, rhs.left); - } function checkJsxElement(node) { checkJsxOpeningLikeElement(node.openingElement); - if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { - error(node.closingElement, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNode(node.openingElement.tagName)); - } - else { - getJsxElementTagSymbol(node.closingElement); - } + getJsxElementTagSymbol(node.closingElement); for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 240: + case 242: checkJsxExpression(child); break; - case 233: + case 235: checkJsxElement(child); break; - case 234: + case 236: checkJsxSelfClosingElement(child); break; } @@ -17666,14 +18188,13 @@ var ts; } return type; } - function getJsxIntrinsicElementsType() { - if (!jsxIntrinsicElementsType) { - jsxIntrinsicElementsType = getExportedTypeFromNamespace(JsxNames.JSX, JsxNames.IntrinsicElements) || unknownType; + function getJsxType(name) { + if (jsxTypes[name] === undefined) { + return jsxTypes[name] = getExportedTypeFromNamespace(JsxNames.JSX, name) || unknownType; } - return jsxIntrinsicElementsType; + return jsxTypes[name]; } function getJsxElementTagSymbol(node) { - var flags = 8; var links = getNodeLinks(node); if (!links.resolvedSymbol) { if (isJsxIntrinsicIdentifier(node.tagName)) { @@ -17685,7 +18206,7 @@ var ts; } return links.resolvedSymbol; function lookupIntrinsicTag(node) { - var intrinsicElementsType = getJsxIntrinsicElementsType(); + var intrinsicElementsType = getJsxType(JsxNames.IntrinsicElements); if (intrinsicElementsType !== unknownType) { var intrinsicProp = getPropertyOfType(intrinsicElementsType, node.tagName.text); if (intrinsicProp) { @@ -17745,12 +18266,7 @@ var ts; return unknownType; } } - var returnType = getUnionType(signatures.map(getReturnTypeOfSignature)); - var elemClassType = getJsxGlobalElementClassType(); - if (elemClassType) { - checkTypeRelatedTo(returnType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); - } - return returnType; + return getUnionType(signatures.map(getReturnTypeOfSignature)); } function getJsxElementPropertiesName() { var jsxNamespace = getGlobalSymbol(JsxNames.JSX, 1536, undefined); @@ -17779,6 +18295,20 @@ var ts; var sym = getJsxElementTagSymbol(node); if (links.jsxFlags & 4) { var elemInstanceType = getJsxElementInstanceType(node); + var callSignature = getSingleCallSignature(getTypeOfSymbol(sym)); + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType) && (paramType.flags & 80896)) { + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return paramType; + } + var elemClassType = getJsxGlobalElementClassType(); + if (elemClassType) { + checkTypeRelatedTo(elemInstanceType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); + } if (isTypeAny(elemInstanceType)) { return links.resolvedJsxType = elemInstanceType; } @@ -17797,12 +18327,29 @@ var ts; else if (isTypeAny(attributesType) || (attributesType === unknownType)) { return links.resolvedJsxType = attributesType; } - else if (!(attributesType.flags & 80896)) { - error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_must_be_an_object_type, typeToString(attributesType)); + else if (attributesType.flags & 16384) { + error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_may_not_be_a_union_type, typeToString(attributesType)); return links.resolvedJsxType = anyType; } else { - return links.resolvedJsxType = attributesType; + var apparentAttributesType = attributesType; + var intrinsicClassAttribs = getJsxType(JsxNames.IntrinsicClassAttributes); + if (intrinsicClassAttribs !== unknownType) { + var typeParams = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(intrinsicClassAttribs.symbol); + if (typeParams) { + if (typeParams.length === 1) { + apparentAttributesType = intersectTypes(createTypeReference(intrinsicClassAttribs, [elemInstanceType]), apparentAttributesType); + } + } + else { + apparentAttributesType = intersectTypes(attributesType, intrinsicClassAttribs); + } + } + var intrinsicAttribs = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttribs !== unknownType) { + apparentAttributesType = intersectTypes(intrinsicAttribs, apparentAttributesType); + } + return links.resolvedJsxType = apparentAttributesType; } } } @@ -17830,7 +18377,7 @@ var ts; return jsxElementClassType; } function getJsxIntrinsicTagNames() { - var intrinsics = getJsxIntrinsicElementsType(); + var intrinsics = getJsxType(JsxNames.IntrinsicElements); return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray; } function checkJsxPreconditions(errorNode) { @@ -17846,21 +18393,21 @@ var ts; function checkJsxOpeningLikeElement(node) { checkGrammarJsxElement(node); checkJsxPreconditions(node); - if (compilerOptions.jsx === 2) { - var reactSym = resolveName(node.tagName, "React", 107455, ts.Diagnostics.Cannot_find_name_0, "React"); - if (reactSym) { - getSymbolLinks(reactSym).referenced = true; - } + var reactRefErr = compilerOptions.jsx === 2 ? ts.Diagnostics.Cannot_find_name_0 : undefined; + var reactNamespace = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; + var reactSym = resolveName(node.tagName, reactNamespace, 107455, reactRefErr, reactNamespace); + if (reactSym) { + getSymbolLinks(reactSym).referenced = true; } var targetAttributesType = getJsxElementAttributesType(node); var nameTable = {}; var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 238) { + if (node.attributes[i].kind === 240) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 239); + ts.Debug.assert(node.attributes[i].kind === 241); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -17895,10 +18442,10 @@ var ts; var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (left.kind === 95) { - var errorNode = node.kind === 166 ? + var errorNode = node.kind === 168 ? node.name : node.right; - if (getDeclarationKindFromSymbol(prop) !== 143) { + if (languageVersion < 2 && getDeclarationKindFromSymbol(prop) !== 143) { error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); return false; } @@ -17967,7 +18514,7 @@ var ts; return getTypeOfSymbol(prop); } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 166 + var left = node.kind === 168 ? node.expression : node.left; var type = checkExpression(left); @@ -17982,7 +18529,7 @@ var ts; function checkIndexedAccess(node) { if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 169 && node.parent.expression === node) { + if (node.parent.kind === 171 && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -18005,15 +18552,15 @@ var ts; return unknownType; } if (node.argumentExpression) { - var name_12 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); - if (name_12 !== undefined) { - var prop = getPropertyOfType(objectType, name_12); + var name_11 = getPropertyNameForIndexedAccess(node.argumentExpression, indexType); + if (name_11 !== undefined) { + var prop = getPropertyOfType(objectType, name_11); if (prop) { getNodeLinks(node).resolvedSymbol = prop; return getTypeOfSymbol(prop); } else if (isConstEnum) { - error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_12, symbolToString(objectType.symbol)); + error(node.argumentExpression, ts.Diagnostics.Property_0_does_not_exist_on_const_enum_1, name_11, symbolToString(objectType.symbol)); return unknownType; } } @@ -18041,7 +18588,7 @@ var ts; if (indexArgumentExpression.kind === 9 || indexArgumentExpression.kind === 8) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 167 || indexArgumentExpression.kind === 166) { + if (indexArgumentExpression.kind === 169 || indexArgumentExpression.kind === 168) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -18084,7 +18631,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 170) { + if (node.kind === 172) { checkExpression(node.template); } else if (node.kind !== 139) { @@ -18138,7 +18685,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 185) { + if (arg && arg.kind === 187) { return i; } } @@ -18150,11 +18697,11 @@ var ts; var callIsIncomplete; var isDecorator; var spreadArgIndex = -1; - if (node.kind === 170) { + if (node.kind === 172) { var tagExpression = node; adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 183) { + if (tagExpression.template.kind === 185) { var templateExpression = tagExpression.template; var lastSpan = ts.lastOrUndefined(templateExpression.templateSpans); ts.Debug.assert(lastSpan !== undefined); @@ -18174,7 +18721,7 @@ var ts; else { var callExpression = node; if (!callExpression.arguments) { - ts.Debug.assert(callExpression.kind === 169); + ts.Debug.assert(callExpression.kind === 171); return signature.minArgumentCount === 0; } adjustedArgCount = callExpression.arguments.hasTrailingComma ? args.length + 1 : args.length; @@ -18215,7 +18762,7 @@ var ts; } function inferTypeArguments(node, signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var inferenceMapper = createInferenceMapper(context); + var inferenceMapper = getInferenceMapper(context); for (var i = 0; i < typeParameters.length; i++) { if (!context.inferences[i].isFixed) { context.inferredTypes[i] = undefined; @@ -18227,7 +18774,7 @@ var ts; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 187) { + if (arg === undefined || arg.kind !== 189) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { @@ -18248,13 +18795,11 @@ var ts; } getInferredTypes(context); } - function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors, headMessage) { + function checkTypeArguments(signature, typeArgumentNodes, typeArgumentTypes, reportErrors, headMessage) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; + var mapper; for (var i = 0; i < typeParameters.length; i++) { - var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); - typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { @@ -18264,7 +18809,11 @@ var ts; errorInfo = ts.chainDiagnosticMessages(errorInfo, typeArgumentHeadMessage); typeArgumentHeadMessage = headMessage; } - typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, constraint, reportErrors ? typeArgNode : undefined, typeArgumentHeadMessage, errorInfo); + if (!mapper) { + mapper = createTypeMapper(typeParameters, typeArgumentTypes); + } + var typeArgument = typeArgumentTypes[i]; + typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), reportErrors ? typeArgumentNodes[i] : undefined, typeArgumentHeadMessage, errorInfo); } } } @@ -18274,12 +18823,12 @@ var ts; var argCount = getEffectiveArgumentCount(node, args, signature); for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); - if (arg === undefined || arg.kind !== 187) { + if (arg === undefined || arg.kind !== 189) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); if (argType === undefined) { argType = arg.kind === 9 && !reportErrors - ? getStringLiteralType(arg) + ? getStringLiteralTypeForText(arg.text) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); } var errorNode = reportErrors ? getEffectiveArgumentErrorNode(node, i, arg) : undefined; @@ -18293,10 +18842,10 @@ var ts; } function getEffectiveCallArguments(node) { var args; - if (node.kind === 170) { + if (node.kind === 172) { var template = node.template; args = [undefined]; - if (template.kind === 183) { + if (template.kind === 185) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -18313,8 +18862,8 @@ var ts; function getEffectiveArgumentCount(node, args, signature) { if (node.kind === 139) { switch (node.parent.kind) { - case 214: - case 186: + case 216: + case 188: return 1; case 141: return 2; @@ -18334,7 +18883,7 @@ var ts; } } function getEffectiveDecoratorFirstArgumentType(node) { - if (node.kind === 214) { + if (node.kind === 216) { var classSymbol = getSymbolOfNode(node); return getTypeOfSymbol(classSymbol); } @@ -18355,7 +18904,7 @@ var ts; return unknownType; } function getEffectiveDecoratorSecondArgumentType(node) { - if (node.kind === 214) { + if (node.kind === 216) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } @@ -18374,7 +18923,7 @@ var ts; case 69: case 8: case 9: - return getStringLiteralType(element.name); + return getStringLiteralTypeForText(element.name.text); case 136: var nameType = checkComputedPropertyName(element.name); if (allConstituentTypesHaveKind(nameType, 16777216)) { @@ -18392,7 +18941,7 @@ var ts; return unknownType; } function getEffectiveDecoratorThirdArgumentType(node) { - if (node.kind === 214) { + if (node.kind === 216) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } @@ -18429,14 +18978,14 @@ var ts; if (node.kind === 139) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 170) { + else if (argIndex === 0 && node.kind === 172) { return globalTemplateStringsArrayType; } return undefined; } function getEffectiveArgument(node, args, argIndex) { if (node.kind === 139 || - (argIndex === 0 && node.kind === 170)) { + (argIndex === 0 && node.kind === 172)) { return undefined; } return args[argIndex]; @@ -18445,7 +18994,7 @@ var ts; if (node.kind === 139) { return node.expression; } - else if (argIndex === 0 && node.kind === 170) { + else if (argIndex === 0 && node.kind === 172) { return node.template; } else { @@ -18453,7 +19002,7 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 170; + var isTaggedTemplate = node.kind === 172; var isDecorator = node.kind === 139; var typeArguments; if (!isTaggedTemplate && !isDecorator) { @@ -18501,7 +19050,8 @@ var ts; } else if (candidateForTypeArgumentError) { if (!isTaggedTemplate && !isDecorator && typeArguments) { - checkTypeArguments(candidateForTypeArgumentError, node.typeArguments, [], true, headMessage); + var typeArguments_1 = node.typeArguments; + checkTypeArguments(candidateForTypeArgumentError, typeArguments_1, ts.map(typeArguments_1, getTypeFromTypeNode), true, headMessage); } else { ts.Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); @@ -18553,7 +19103,7 @@ var ts; if (candidate.typeParameters) { var typeArgumentTypes = void 0; if (typeArguments) { - typeArgumentTypes = new Array(candidate.typeParameters.length); + typeArgumentTypes = ts.map(typeArguments, getTypeFromTypeNode); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, false); } else { @@ -18685,8 +19235,8 @@ var ts; } function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 214: - case 186: + case 216: + case 188: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; case 138: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; @@ -18722,13 +19272,13 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 168) { + if (node.kind === 170) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 169) { + else if (node.kind === 171) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 170) { + else if (node.kind === 172) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else if (node.kind === 139) { @@ -18740,19 +19290,30 @@ var ts; } return links.resolvedSignature; } + function getInferredClassType(symbol) { + var links = getSymbolLinks(symbol); + if (!links.inferredClassType) { + links.inferredClassType = createAnonymousType(undefined, symbol.members, emptyArray, emptyArray, undefined, undefined); + } + return links.inferredClassType; + } function checkCallExpression(node) { checkGrammarTypeArguments(node, node.typeArguments) || checkGrammarArguments(node, node.arguments); var signature = getResolvedSignature(node); if (node.expression.kind === 95) { return voidType; } - if (node.kind === 169) { + if (node.kind === 171) { var declaration = signature.declaration; if (declaration && declaration.kind !== 144 && declaration.kind !== 148 && declaration.kind !== 153) { - if (compilerOptions.noImplicitAny) { + var funcSymbol = checkExpression(node.expression).symbol; + if (funcSymbol && funcSymbol.members && (funcSymbol.flags & 16)) { + return getInferredClassType(funcSymbol); + } + else if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } return anyType; @@ -18801,7 +19362,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187) { + if (element.kind !== 189) { if (element.name.kind === 69) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -18835,7 +19396,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 192) { + if (func.body.kind !== 194) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { type = checkAwaitedType(type, func, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -18940,22 +19501,29 @@ var ts; if (returnType === voidType || isTypeAny(returnType)) { return; } - if (ts.nodeIsMissing(func.body) || func.body.kind !== 192 || !(func.flags & 524288)) { + if (ts.nodeIsMissing(func.body) || func.body.kind !== 194 || !(func.flags & 524288)) { return; } - if (func.flags & 1048576) { - if (compilerOptions.noImplicitReturns) { - error(func.type, ts.Diagnostics.Not_all_code_paths_return_a_value); - } - } - else { + var hasExplicitReturn = func.flags & 1048576; + if (returnType && !hasExplicitReturn) { error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (compilerOptions.noImplicitReturns) { + if (!returnType) { + var inferredReturnType = hasExplicitReturn + ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) + : voidType; + if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + return; + } + } + error(func.type || func, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 143 || ts.isObjectLiteralMethod(node)); var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 173) { + if (!hasGrammarError && node.kind === 175) { checkGrammarForGenerator(node); } if (contextualMapper === identityMapper && isContextSensitive(node)) { @@ -18988,6 +19556,7 @@ var ts; } if (!contextChecked) { checkSignatureDeclaration(node); + checkNodeDeferred(node); } } } @@ -18997,39 +19566,34 @@ var ts; } return type; } - function checkFunctionExpressionOrObjectLiteralMethodBody(node) { + function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { ts.Debug.assert(node.kind !== 143 || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); if (isAsync) { emitAwaiter = true; } - var returnType = node.type && getTypeFromTypeNode(node.type); - var promisedType; - if (returnType && isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - if (returnType && !node.asteriskToken) { - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + if (!node.asteriskToken) { + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (node.body) { if (!node.type) { getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 192) { + if (node.body.kind === 194) { checkSourceElement(node.body); } else { var exprType = checkExpression(node.body); - if (returnType) { + if (returnOrPromisedType) { if (isAsync) { var awaitedType = checkAwaitedType(exprType, node.body, ts.Diagnostics.Expression_body_for_async_arrow_function_does_not_have_a_valid_callable_then_member); - checkTypeAssignableTo(awaitedType, promisedType, node.body); + checkTypeAssignableTo(awaitedType, returnOrPromisedType, node.body); } else { - checkTypeAssignableTo(exprType, returnType, node.body); + checkTypeAssignableTo(exprType, returnOrPromisedType, node.body); } } - checkFunctionAndClassExpressionBodies(node.body); } } } @@ -19051,13 +19615,13 @@ var ts; var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3) !== 0; } - case 166: { + case 168: { var symbol = findSymbol(n); return !symbol || symbol === unknownSymbol || (symbol.flags & ~8) !== 0; } - case 167: + case 169: return true; - case 172: + case 174: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -19066,21 +19630,21 @@ var ts; function isConstVariableReference(n) { switch (n.kind) { case 69: - case 166: { + case 168: { var symbol = findSymbol(n); return symbol && (symbol.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 16384) !== 0; } - case 167: { + case 169: { var index = n.argumentExpression; var symbol = findSymbol(n.expression); if (symbol && index && index.kind === 9) { - var name_13 = index.text; - var prop = getPropertyOfType(getTypeOfSymbol(symbol), name_13); + var name_12 = index.text; + var prop = getPropertyOfType(getTypeOfSymbol(symbol), name_12); return prop && (prop.flags & 3) !== 0 && (getDeclarationFlagsFromSymbol(prop) & 16384) !== 0; } return false; } - case 172: + case 174: return isConstVariableReference(n.expression); default: return false; @@ -19156,8 +19720,8 @@ var ts; } if (type.flags & 49152) { var types = type.types; - for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { - var current = types_9[_i]; + for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { + var current = types_10[_i]; if (current.flags & kind) { return true; } @@ -19172,8 +19736,8 @@ var ts; } if (type.flags & 49152) { var types = type.types; - for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { - var current = types_10[_i]; + for (var _i = 0, types_11 = types; _i < types_11.length; _i++) { + var current = types_11[_i]; if (!(current.flags & kind)) { return false; } @@ -19210,22 +19774,22 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 245 || p.kind === 246) { - var name_14 = p.name; - if (name_14.kind === 136) { - checkComputedPropertyName(name_14); + if (p.kind === 247 || p.kind === 248) { + var name_13 = p.name; + if (name_13.kind === 136) { + checkComputedPropertyName(name_13); } - if (isComputedNonLiteralName(name_14)) { + if (isComputedNonLiteralName(name_13)) { continue; } - var text = getTextOfPropertyName(name_14); + var text = getTextOfPropertyName(name_13); var type = isTypeAny(sourceType) ? sourceType : getTypeOfPropertyOfType(sourceType, text) || isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1) || getIndexTypeOfType(sourceType, 0); if (type) { - if (p.kind === 246) { + if (p.kind === 248) { checkDestructuringAssignment(p, type); } else { @@ -19233,7 +19797,7 @@ var ts; } } else { - error(name_14, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_14)); + error(name_13, ts.Diagnostics.Type_0_has_no_property_1_and_no_string_index_signature, typeToString(sourceType), ts.declarationNameToString(name_13)); } } else { @@ -19247,8 +19811,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187) { - if (e.kind !== 185) { + if (e.kind !== 189) { + if (e.kind !== 187) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -19273,7 +19837,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 181 && restExpression.operatorToken.kind === 56) { + if (restExpression.kind === 183 && restExpression.operatorToken.kind === 56) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -19287,7 +19851,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 246) { + if (exprOrAssignment.kind === 248) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -19297,14 +19861,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 181 && target.operatorToken.kind === 56) { + if (target.kind === 183 && target.operatorToken.kind === 56) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 165) { + if (target.kind === 167) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 164) { + if (target.kind === 166) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -19321,7 +19885,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 && (left.kind === 165 || left.kind === 164)) { + if (operator === 56 && (left.kind === 167 || left.kind === 166)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -19520,7 +20084,7 @@ var ts; function checkStringLiteralExpression(node) { var contextualType = getContextualType(node); if (contextualType && contextualTypeIsStringLiteralType(contextualType)) { - return getStringLiteralType(node); + return getStringLiteralTypeForText(node.text); } return stringType; } @@ -19583,8 +20147,8 @@ var ts; type = instantiateTypeWithSingleGenericCallSignature(node, uninstantiatedType, contextualMapper); } if (isConstEnumObjectType(type)) { - var ok = (node.parent.kind === 166 && node.parent.expression === node) || - (node.parent.kind === 167 && node.parent.expression === node) || + var ok = (node.parent.kind === 168 && node.parent.expression === node) || + (node.parent.kind === 169 && node.parent.expression === node) || ((node.kind === 69 || node.kind === 135) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); @@ -19611,7 +20175,7 @@ var ts; return booleanType; case 8: return checkNumericLiteral(node); - case 183: + case 185: return checkTemplateExpression(node); case 9: return checkStringLiteralExpression(node); @@ -19619,58 +20183,58 @@ var ts; return stringType; case 10: return globalRegExpType; - case 164: - return checkArrayLiteral(node, contextualMapper); - case 165: - return checkObjectLiteral(node, contextualMapper); case 166: - return checkPropertyAccessExpression(node); + return checkArrayLiteral(node, contextualMapper); case 167: - return checkIndexedAccess(node); + return checkObjectLiteral(node, contextualMapper); case 168: + return checkPropertyAccessExpression(node); case 169: - return checkCallExpression(node); + return checkIndexedAccess(node); case 170: - return checkTaggedTemplateExpression(node); - case 172: - return checkExpression(node.expression, contextualMapper); - case 186: - return checkClassExpression(node); - case 173: - case 174: - return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 176: - return checkTypeOfExpression(node); case 171: - case 189: - return checkAssertion(node); + return checkCallExpression(node); + case 172: + return checkTaggedTemplateExpression(node); + case 174: + return checkExpression(node.expression, contextualMapper); + case 188: + return checkClassExpression(node); case 175: - return checkDeleteExpression(node); - case 177: - return checkVoidExpression(node); + case 176: + return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); case 178: - return checkAwaitExpression(node); + return checkTypeOfExpression(node); + case 173: + case 191: + return checkAssertion(node); + case 177: + return checkDeleteExpression(node); case 179: - return checkPrefixUnaryExpression(node); + return checkVoidExpression(node); case 180: - return checkPostfixUnaryExpression(node); + return checkAwaitExpression(node); case 181: - return checkBinaryExpression(node, contextualMapper); + return checkPrefixUnaryExpression(node); case 182: - return checkConditionalExpression(node, contextualMapper); - case 185: - return checkSpreadElementExpression(node, contextualMapper); - case 187: - return undefinedType; + return checkPostfixUnaryExpression(node); + case 183: + return checkBinaryExpression(node, contextualMapper); case 184: + return checkConditionalExpression(node, contextualMapper); + case 187: + return checkSpreadElementExpression(node, contextualMapper); + case 189: + return undefinedType; + case 186: return checkYieldExpression(node); - case 240: + case 242: return checkJsxExpression(node); - case 233: - return checkJsxElement(node); - case 234: - return checkJsxSelfClosingElement(node); case 235: + return checkJsxElement(node); + case 236: + return checkJsxSelfClosingElement(node); + case 237: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -19680,8 +20244,8 @@ var ts; grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); } checkSourceElement(node.constraint); + getConstraintOfTypeParameter(getDeclaredTypeOfTypeParameter(getSymbolOfNode(node))); if (produceDiagnostics) { - checkTypeParameterHasIllegalReferencesInConstraint(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_parameter_name_cannot_be_0); } } @@ -19707,8 +20271,8 @@ var ts; return false; } return node.kind === 143 || - node.kind === 213 || - node.kind === 173; + node.kind === 215 || + node.kind === 175; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -19722,12 +20286,12 @@ var ts; } return -1; } - function isInLegalTypePredicatePosition(node) { + function isInLegalParameterTypePredicatePosition(node) { switch (node.parent.kind) { - case 174: + case 176: case 147: - case 213: - case 173: + case 215: + case 175: case 152: case 143: case 142: @@ -19735,11 +20299,23 @@ var ts; } return false; } + function isInLegalThisTypePredicatePosition(node) { + if (isInLegalParameterTypePredicatePosition(node)) { + return true; + } + switch (node.parent.kind) { + case 141: + case 140: + case 145: + return node === node.parent.type; + } + return false; + } function checkSignatureDeclaration(node) { if (node.kind === 149) { checkGrammarIndexSignature(node); } - else if (node.kind === 152 || node.kind === 213 || node.kind === 153 || + else if (node.kind === 152 || node.kind === 215 || node.kind === 153 || node.kind === 147 || node.kind === 144 || node.kind === 148) { checkGrammarFunctionLikeDeclaration(node); @@ -19748,9 +20324,14 @@ var ts; ts.forEach(node.parameters, checkParameter); if (node.type) { if (node.type.kind === 150) { - var typePredicate = getSignatureFromDeclaration(node).typePredicate; + var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(node)); + if (!returnType || !(returnType.flags & 134217728)) { + return; + } + var typePredicate = returnType.predicate; var typePredicateNode = node.type; - if (isInLegalTypePredicatePosition(typePredicateNode)) { + checkSourceElement(typePredicateNode); + if (ts.isIdentifierTypePredicate(typePredicate)) { if (typePredicate.parameterIndex >= 0) { if (node.parameters[typePredicate.parameterIndex].dotDotDotToken) { error(typePredicateNode.parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); @@ -19766,8 +20347,8 @@ var ts; if (hasReportedError) { break; } - if (param.name.kind === 161 || - param.name.kind === 162) { + if (param.name.kind === 163 || + param.name.kind === 164) { (function checkBindingPattern(pattern) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { var element = _a[_i]; @@ -19777,8 +20358,8 @@ var ts; hasReportedError = true; break; } - else if (element.name.kind === 162 || - element.name.kind === 161) { + else if (element.name.kind === 164 || + element.name.kind === 163) { checkBindingPattern(element.name); } } @@ -19790,9 +20371,6 @@ var ts; } } } - else { - error(typePredicateNode, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); - } } else { checkSourceElement(node.type); @@ -19827,7 +20405,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 215) { + if (node.kind === 217) { var nodeSymbol = getSymbolOfNode(node); if (nodeSymbol.declarations.length > 0 && nodeSymbol.declarations[0] !== node) { return; @@ -19869,7 +20447,7 @@ var ts; } function checkMethodDeclaration(node) { checkGrammarMethod(node) || checkGrammarComputedPropertyName(node.name); - checkFunctionLikeDeclaration(node); + checkFunctionOrMethodDeclaration(node); if (node.flags & 128 && node.body) { error(node, ts.Diagnostics.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract, ts.declarationNameToString(node.name)); } @@ -19890,7 +20468,7 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 168 && n.expression.kind === 95; + return n.kind === 170 && n.expression.kind === 95; } function containsSuperCallAsComputedPropertyName(n) { return n.name && containsSuperCall(n.name); @@ -19911,7 +20489,7 @@ var ts; if (n.kind === 97) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 173 && n.kind !== 213) { + else if (n.kind !== 175 && n.kind !== 215) { ts.forEachChild(n, markThisReferencesAsErrors); } } @@ -19936,7 +20514,7 @@ var ts; var superCallStatement; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 195 && isSuperCallExpression(statement.expression)) { + if (statement.kind === 197 && isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -19960,6 +20538,8 @@ var ts; function checkAccessorDeclaration(node) { if (produceDiagnostics) { checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); + checkDecorators(node); + checkSignatureDeclaration(node); if (node.kind === 145) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 524288)) { if (node.flags & 1048576) { @@ -19972,6 +20552,9 @@ var ts; } } } + if (node.name.kind === 136) { + checkComputedPropertyName(node.name); + } if (!ts.hasDynamicName(node)) { var otherKind = node.kind === 145 ? 146 : 145; var otherAccessor = ts.getDeclarationOfKind(node.symbol, otherKind); @@ -19990,18 +20573,32 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - checkFunctionLikeDeclaration(node); + if (node.parent.kind !== 167) { + checkSourceElement(node.body); + } + else { + checkNodeDeferred(node); + } + } + function checkAccessorDeferred(node) { + checkSourceElement(node.body); } function checkMissingDeclaration(node) { checkDecorators(node); } - function checkTypeArgumentConstraints(typeParameters, typeArguments) { + function checkTypeArgumentConstraints(typeParameters, typeArgumentNodes) { + var typeArguments; + var mapper; var result = true; for (var i = 0; i < typeParameters.length; i++) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { + if (!typeArguments) { + typeArguments = ts.map(typeArgumentNodes, getTypeFromTypeNode); + mapper = createTypeMapper(typeParameters, typeArguments); + } var typeArgument = typeArguments[i]; - result = result && checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + result = result && checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), typeArgumentNodes[i], ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } return result; @@ -20058,7 +20655,7 @@ var ts; return; } var signaturesToCheck; - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 215) { + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 217) { ts.Debug.assert(signatureDeclarationNode.kind === 147 || signatureDeclarationNode.kind === 148); var signatureKind = signatureDeclarationNode.kind === 147 ? 0 : 1; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); @@ -20070,7 +20667,7 @@ var ts; } for (var _i = 0, signaturesToCheck_1 = signaturesToCheck; _i < signaturesToCheck_1.length; _i++) { var otherSignature = signaturesToCheck_1[_i]; - if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { + if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature, false)) { return; } } @@ -20078,9 +20675,9 @@ var ts; } function getEffectiveDeclarationFlags(n, flagsToCheck) { var flags = ts.getCombinedNodeFlags(n); - if (n.parent.kind !== 215 && - n.parent.kind !== 214 && - n.parent.kind !== 186 && + if (n.parent.kind !== 217 && + n.parent.kind !== 216 && + n.parent.kind !== 188 && ts.isInAmbientContext(n)) { if (!(flags & 4)) { flags |= 2; @@ -20153,14 +20750,16 @@ var ts; seen = c === node; } }); - if (subsequentNode) { + if (subsequentNode && subsequentNode.pos === node.end) { if (subsequentNode.kind === node.kind) { var errorNode_1 = subsequentNode.name || subsequentNode; if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - ts.Debug.assert(node.kind === 143 || node.kind === 142); - ts.Debug.assert((node.flags & 64) !== (subsequentNode.flags & 64)); - var diagnostic = node.flags & 64 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode_1, diagnostic); + var reportError = (node.kind === 143 || node.kind === 142) && + (node.flags & 64) !== (subsequentNode.flags & 64); + if (reportError) { + var diagnostic = node.flags & 64 ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; + error(errorNode_1, diagnostic); + } return; } else if (ts.nodeIsPresent(subsequentNode.body)) { @@ -20189,11 +20788,11 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 215 || node.parent.kind === 155 || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 217 || node.parent.kind === 155 || inAmbientContext; if (inAmbientContextOrInterface) { previousDeclaration = undefined; } - if (node.kind === 213 || node.kind === 143 || node.kind === 142 || node.kind === 144) { + if (node.kind === 215 || node.kind === 143 || node.kind === 142 || node.kind === 144) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -20247,7 +20846,7 @@ var ts; if (!bodySignature.hasStringLiterals) { for (var _a = 0, signatures_3 = signatures; _a < signatures_3.length; _a++) { var signature = signatures_3[_a]; - if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + if (!signature.hasStringLiterals && !isImplementationCompatibleWithOverload(bodySignature, signature)) { error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } @@ -20306,16 +20905,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 215: + case 217: return 2097152; - case 218: + case 220: return d.name.kind === 9 || ts.getModuleInstanceState(d) !== 0 ? 4194304 | 1048576 : 4194304; - case 214: - case 217: + case 216: + case 219: return 2097152 | 1048576; - case 221: + case 223: var result = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); @@ -20422,15 +21021,16 @@ var ts; error(node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type, typeName); return unknownType; } + checkReturnTypeAnnotationAsExpression(node); var promiseConstructorType = getTypeOfSymbol(promiseConstructor); if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type)) { return unknownType; } var promiseName = ts.getEntityNameFromTypeNode(node.type); - var root = getFirstIdentifier(promiseName); - var rootSymbol = getSymbol(node.locals, root.text, 107455); + var promiseNameOrNamespaceRoot = getFirstIdentifier(promiseName); + var rootSymbol = getSymbol(node.locals, promiseNameOrNamespaceRoot.text, 107455); if (rootSymbol) { - error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, root.text, getFullyQualifiedName(promiseConstructor)); + error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, promiseNameOrNamespaceRoot.text, getFullyQualifiedName(promiseConstructor)); return unknownType; } return checkAwaitedType(promiseType, node, ts.Diagnostics.An_async_function_or_method_must_have_a_valid_awaitable_return_type); @@ -20445,7 +21045,7 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 214: + case 216: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); @@ -20482,23 +21082,10 @@ var ts; } } function checkTypeAnnotationAsExpression(node) { - switch (node.kind) { - case 141: - checkTypeNodeAsExpression(node.type); - break; - case 138: - checkTypeNodeAsExpression(node.type); - break; - case 143: - checkTypeNodeAsExpression(node.type); - break; - case 145: - checkTypeNodeAsExpression(node.type); - break; - case 146: - checkTypeNodeAsExpression(ts.getSetAccessorTypeAnnotationNode(node)); - break; - } + checkTypeNodeAsExpression(node.type); + } + function checkReturnTypeAnnotationAsExpression(node) { + checkTypeNodeAsExpression(node.type); } function checkParameterTypeAnnotationsAsExpressions(node) { for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { @@ -20518,16 +21105,18 @@ var ts; } if (compilerOptions.emitDecoratorMetadata) { switch (node.kind) { - case 214: + case 216: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; case 143: - checkParameterTypeAnnotationsAsExpressions(node); - case 146: case 145: + case 146: + checkParameterTypeAnnotationsAsExpressions(node); + checkReturnTypeAnnotationAsExpression(node); + break; case 141: case 138: checkTypeAnnotationAsExpression(node); @@ -20542,13 +21131,13 @@ var ts; } function checkFunctionDeclaration(node) { if (produceDiagnostics) { - checkFunctionLikeDeclaration(node) || checkGrammarForGenerator(node); + checkFunctionOrMethodDeclaration(node) || checkGrammarForGenerator(node); checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); } } - function checkFunctionLikeDeclaration(node) { + function checkFunctionOrMethodDeclaration(node) { checkDecorators(node); checkSignatureDeclaration(node); var isAsync = ts.isAsyncFunctionLike(node); @@ -20561,7 +21150,8 @@ var ts; if (!ts.hasDynamicName(node)) { var symbol = getSymbolOfNode(node); var localSymbol = node.localSymbol || symbol; - var firstDeclaration = ts.getDeclarationOfKind(localSymbol, node.kind); + var firstDeclaration = ts.forEach(localSymbol.declarations, function (declaration) { return declaration.kind === node.kind && !ts.isSourceFileJavaScript(getSourceFile(declaration)) ? + declaration : undefined; }); if (node === firstDeclaration) { checkFunctionOrConstructorSymbol(localSymbol); } @@ -20572,13 +21162,9 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { - var returnType = getTypeFromTypeNode(node.type); - var promisedType; - if (isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + if (!node.asteriskToken) { + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (produceDiagnostics && !node.type) { if (compilerOptions.noImplicitAny && ts.nodeIsMissing(node.body) && !isPrivateWithinAmbient(node)) { @@ -20590,13 +21176,10 @@ var ts; } } function checkBlock(node) { - if (node.kind === 192) { + if (node.kind === 194) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 219) { - checkFunctionAndClassExpressionBodies(node); - } } function checkCollisionWithArgumentsInGeneratedCode(node) { if (!ts.hasRestParameter(node) || ts.isInAmbientContext(node) || ts.nodeIsMissing(node.body)) { @@ -20672,11 +21255,11 @@ var ts; if (!needCollisionCheckForIdentifier(node, name, "require") && !needCollisionCheckForIdentifier(node, name, "exports")) { return; } - if (node.kind === 218 && ts.getModuleInstanceState(node) !== 1) { + if (node.kind === 220 && ts.getModuleInstanceState(node) !== 1) { return; } var parent = getDeclarationContainer(node); - if (parent.kind === 248 && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 250 && ts.isExternalOrCommonJsModule(parent)) { error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } } @@ -20684,7 +21267,7 @@ var ts; if ((ts.getCombinedNodeFlags(node) & 24576) !== 0 || ts.isParameterDeclaration(node)) { return; } - if (node.kind === 211 && !node.initializer) { + if (node.kind === 213 && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -20694,18 +21277,18 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 24576) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 212); - var container = varDeclList.parent.kind === 193 && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 214); + var container = varDeclList.parent.kind === 195 && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; var namesShareScope = container && - (container.kind === 192 && ts.isFunctionLike(container.parent) || - container.kind === 219 || - container.kind === 218 || - container.kind === 248); + (container.kind === 194 && ts.isFunctionLike(container.parent) || + container.kind === 221 || + container.kind === 220 || + container.kind === 250); if (!namesShareScope) { - var name_15 = symbolToString(localDeclarationSymbol); - error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_15, name_15); + var name_14 = symbolToString(localDeclarationSymbol); + error(node, ts.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1, name_14, name_14); } } } @@ -20747,7 +21330,7 @@ var ts; checkExpressionCached(node.initializer); } } - if (node.kind === 163) { + if (node.kind === 165) { if (node.propertyName && node.propertyName.kind === 136) { checkComputedPropertyName(node.propertyName); } @@ -20785,7 +21368,7 @@ var ts; } if (node.kind !== 141 && node.kind !== 140) { checkExportsOnMergedDeclarations(node); - if (node.kind === 211 || node.kind === 163) { + if (node.kind === 213 || node.kind === 165) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -20806,7 +21389,7 @@ var ts; ts.forEach(node.declarationList.declarations, checkSourceElement); } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { - if (node.modifiers && node.parent.kind === 165) { + if (node.modifiers && node.parent.kind === 167) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -20825,7 +21408,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 194) { + if (node.thenStatement.kind === 196) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -20842,12 +21425,12 @@ var ts; } function checkForStatement(node) { if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 212) { + if (node.initializer && node.initializer.kind === 214) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -20862,13 +21445,13 @@ var ts; } function checkForOfStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); - if (varExpr.kind === 164 || varExpr.kind === 165) { + if (varExpr.kind === 166 || varExpr.kind === 167) { checkDestructuringAssignment(varExpr, iteratedType || unknownType); } else { @@ -20883,7 +21466,7 @@ var ts; } function checkForInStatement(node) { checkGrammarForInOrForOfStatement(node); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -20893,7 +21476,7 @@ var ts; else { var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 164 || varExpr.kind === 165) { + if (varExpr.kind === 166 || varExpr.kind === 167) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258)) { @@ -21021,7 +21604,13 @@ var ts; } function checkElementTypeOfArrayOrString(arrayOrStringType, errorNode) { ts.Debug.assert(languageVersion < 2); - var arrayType = removeTypesFromUnionType(arrayOrStringType, 258, true, true); + var arrayType = arrayOrStringType; + if (arrayOrStringType.flags & 16384) { + arrayType = getUnionType(ts.filter(arrayOrStringType.types, function (t) { return !(t.flags & 258); })); + } + else if (arrayOrStringType.flags & 258) { + arrayType = emptyUnionType; + } var hasStringConstituent = arrayOrStringType !== arrayType; var reportedError = false; if (hasStringConstituent) { @@ -21081,7 +21670,7 @@ var ts; error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } - else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || signature.typePredicate) { + else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || returnType.flags & 134217728) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -21112,7 +21701,7 @@ var ts; var expressionType = checkExpression(node.expression); var expressionTypeIsStringLike = someConstituentTypeHasKind(expressionType, 258); ts.forEach(node.caseBlock.clauses, function (clause) { - if (clause.kind === 242 && !hasDuplicateDefaultClause) { + if (clause.kind === 244 && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -21124,13 +21713,12 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 241) { + if (produceDiagnostics && clause.kind === 243) { var caseClause = clause; var caseType = checkExpression(caseClause.expression); - if (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258)) { - return; - } - if (!isTypeAssignableTo(expressionType, caseType)) { + var expressionTypeIsAssignableToCaseType = (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258)) || + isTypeAssignableTo(expressionType, caseType); + if (!expressionTypeIsAssignableToCaseType) { checkTypeAssignableTo(caseType, expressionType, caseClause.expression, undefined); } } @@ -21144,7 +21732,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 207 && current.label.text === node.label.text) { + if (current.kind === 209 && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -21284,8 +21872,12 @@ var ts; } function checkClassExpression(node) { checkClassLikeDeclaration(node); + checkNodeDeferred(node); return getTypeOfSymbol(getSymbolOfNode(node)); } + function checkClassExpressionDeferred(node) { + ts.forEach(node.members, checkSourceElement); + } function checkClassDeclaration(node) { if (!node.name && !(node.flags & 512)) { grammarErrorOnFirstToken(node, ts.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); @@ -21383,7 +21975,7 @@ var ts; if (derived === base) { var derivedClassDecl = getClassLikeDeclarationOfSymbol(type.symbol); if (baseDeclarationFlags & 128 && (!derivedClassDecl || !(derivedClassDecl.flags & 128))) { - if (derivedClassDecl.kind === 186) { + if (derivedClassDecl.kind === 188) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -21493,7 +22085,7 @@ var ts; checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 215); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 217); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -21558,7 +22150,8 @@ var ts; error(member.name, ts.Diagnostics.Enum_member_must_have_initializer); } if (autoValue !== undefined) { - getNodeLinks(member).enumMemberValue = autoValue++; + getNodeLinks(member).enumMemberValue = autoValue; + autoValue++; } } nodeLinks.flags |= 8192; @@ -21590,7 +22183,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 179: + case 181: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -21601,7 +22194,7 @@ var ts; case 50: return ~value_1; } return undefined; - case 181: + case 183: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -21626,11 +22219,11 @@ var ts; return undefined; case 8: return +e.text; - case 172: + case 174: return evalConstant(e.expression); case 69: - case 167: - case 166: + case 169: + case 168: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -21641,7 +22234,7 @@ var ts; } else { var expression; - if (e.kind === 167) { + if (e.kind === 169) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9) { return undefined; @@ -21658,7 +22251,7 @@ var ts; if (current.kind === 69) { break; } - else if (current.kind === 166) { + else if (current.kind === 168) { current = current.expression; } else { @@ -21717,7 +22310,7 @@ var ts; } var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { - if (declaration.kind !== 217) { + if (declaration.kind !== 219) { return false; } var enumDeclaration = declaration; @@ -21740,8 +22333,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 214 || - (declaration.kind === 213 && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 216 || + (declaration.kind === 215 && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -21792,7 +22385,7 @@ var ts; error(node.name, ts.Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged); } } - var mergedClass = ts.getDeclarationOfKind(symbol, 214); + var mergedClass = ts.getDeclarationOfKind(symbol, 216); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768; @@ -21814,7 +22407,7 @@ var ts; if (node.kind === 135) { node = node.left; } - else if (node.kind === 166) { + else if (node.kind === 168) { node = node.expression; } else { @@ -21830,9 +22423,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 219 && node.parent.parent.name.kind === 9; - if (node.parent.kind !== 248 && !inAmbientExternalModule) { - error(moduleName, node.kind === 228 ? + var inAmbientExternalModule = node.parent.kind === 221 && node.parent.parent.name.kind === 9; + if (node.parent.kind !== 250 && !inAmbientExternalModule) { + error(moduleName, node.kind === 230 ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -21851,7 +22444,7 @@ var ts; (symbol.flags & 793056 ? 793056 : 0) | (symbol.flags & 1536 ? 1536 : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 230 ? + var message = node.kind === 232 ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -21877,7 +22470,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224) { + if (importClause.namedBindings.kind === 226) { checkImportBinding(importClause.namedBindings); } else { @@ -21928,8 +22521,8 @@ var ts; if (!node.moduleSpecifier || checkExternalImportOrExportDeclaration(node)) { if (node.exportClause) { ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 219 && node.parent.parent.name.kind === 9; - if (node.parent.kind !== 248 && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 221 && node.parent.parent.name.kind === 9; + if (node.parent.kind !== 250 && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -21942,7 +22535,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 248 && node.parent.kind !== 219 && node.parent.kind !== 218) { + if (node.parent.kind !== 250 && node.parent.kind !== 221 && node.parent.kind !== 220) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -21956,8 +22549,8 @@ var ts; if (checkGrammarModuleElementContext(node, ts.Diagnostics.An_export_assignment_can_only_be_used_in_a_module)) { return; } - var container = node.parent.kind === 248 ? node.parent : node.parent.parent; - if (container.kind === 218 && container.name.kind === 69) { + var container = node.parent.kind === 250 ? node.parent : node.parent.parent; + if (container.kind === 220 && container.name.kind === 69) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -21980,15 +22573,6 @@ var ts; } } } - function getModuleStatements(node) { - if (node.kind === 248) { - return node.statements; - } - if (node.kind === 218 && node.body.kind === 219) { - return node.body.statements; - } - return emptyArray; - } function hasExportedMembers(moduleSymbol) { for (var id in moduleSymbol.exports) { if (id !== "export=") { @@ -22006,13 +22590,41 @@ var ts; var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } + var exports_2 = getExportsOfModule(moduleSymbol); + for (var id in exports_2) { + if (id === "__export") { + continue; + } + var _a = exports_2[id], declarations = _a.declarations, flags = _a.flags; + if (!(flags & (1536 | 64 | 384)) && (flags & 524288 ? declarations.length - 1 : declarations.length) > 1) { + var exportedDeclarations = ts.filter(declarations, isNotOverload); + if (exportedDeclarations.length > 1) { + for (var _i = 0, exportedDeclarations_1 = exportedDeclarations; _i < exportedDeclarations_1.length; _i++) { + var declaration = exportedDeclarations_1[_i]; + diagnostics.add(ts.createDiagnosticForNode(declaration, ts.Diagnostics.Cannot_redeclare_exported_variable_0, id)); + } + } + } + } links.exportsChecked = true; } + function isNotOverload(declaration) { + return declaration.kind !== 215 || !!declaration.body; + } } function checkTypePredicate(node) { - if (!isInLegalTypePredicatePosition(node)) { + var parameterName = node.parameterName; + if (parameterName.kind === 69 && !isInLegalParameterTypePredicatePosition(node)) { error(node, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); } + else if (parameterName.kind === 161) { + if (!isInLegalThisTypePredicatePosition(node)) { + error(node, ts.Diagnostics.A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods); + } + else { + getTypeFromThisTypeNode(parameterName); + } + } } function checkSourceElement(node) { if (!node) { @@ -22021,10 +22633,10 @@ var ts; var kind = node.kind; if (cancellationToken) { switch (kind) { - case 218: - case 214: + case 220: + case 216: + case 217: case 215: - case 213: cancellationToken.throwIfCancellationRequested(); } } @@ -22068,170 +22680,97 @@ var ts; return checkUnionOrIntersectionType(node); case 160: return checkSourceElement(node.type); - case 213: - return checkFunctionDeclaration(node); - case 192: - case 219: - return checkBlock(node); - case 193: - return checkVariableStatement(node); - case 195: - return checkExpressionStatement(node); - case 196: - return checkIfStatement(node); - case 197: - return checkDoStatement(node); - case 198: - return checkWhileStatement(node); - case 199: - return checkForStatement(node); - case 200: - return checkForInStatement(node); - case 201: - return checkForOfStatement(node); - case 202: - case 203: - return checkBreakOrContinueStatement(node); - case 204: - return checkReturnStatement(node); - case 205: - return checkWithStatement(node); - case 206: - return checkSwitchStatement(node); - case 207: - return checkLabeledStatement(node); - case 208: - return checkThrowStatement(node); - case 209: - return checkTryStatement(node); - case 211: - return checkVariableDeclaration(node); - case 163: - return checkBindingElement(node); - case 214: - return checkClassDeclaration(node); case 215: - return checkInterfaceDeclaration(node); - case 216: - return checkTypeAliasDeclaration(node); - case 217: - return checkEnumDeclaration(node); - case 218: - return checkModuleDeclaration(node); - case 222: - return checkImportDeclaration(node); - case 221: - return checkImportEqualsDeclaration(node); - case 228: - return checkExportDeclaration(node); - case 227: - return checkExportAssignment(node); + return checkFunctionDeclaration(node); case 194: - checkGrammarStatementInAmbientContext(node); - return; + case 221: + return checkBlock(node); + case 195: + return checkVariableStatement(node); + case 197: + return checkExpressionStatement(node); + case 198: + return checkIfStatement(node); + case 199: + return checkDoStatement(node); + case 200: + return checkWhileStatement(node); + case 201: + return checkForStatement(node); + case 202: + return checkForInStatement(node); + case 203: + return checkForOfStatement(node); + case 204: + case 205: + return checkBreakOrContinueStatement(node); + case 206: + return checkReturnStatement(node); + case 207: + return checkWithStatement(node); + case 208: + return checkSwitchStatement(node); + case 209: + return checkLabeledStatement(node); case 210: + return checkThrowStatement(node); + case 211: + return checkTryStatement(node); + case 213: + return checkVariableDeclaration(node); + case 165: + return checkBindingElement(node); + case 216: + return checkClassDeclaration(node); + case 217: + return checkInterfaceDeclaration(node); + case 218: + return checkTypeAliasDeclaration(node); + case 219: + return checkEnumDeclaration(node); + case 220: + return checkModuleDeclaration(node); + case 224: + return checkImportDeclaration(node); + case 223: + return checkImportEqualsDeclaration(node); + case 230: + return checkExportDeclaration(node); + case 229: + return checkExportAssignment(node); + case 196: checkGrammarStatementInAmbientContext(node); return; - case 231: + case 212: + checkGrammarStatementInAmbientContext(node); + return; + case 233: return checkMissingDeclaration(node); } } - function checkFunctionAndClassExpressionBodies(node) { - switch (node.kind) { - case 173: - case 174: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - checkFunctionExpressionOrObjectLiteralMethodBody(node); - break; - case 186: - ts.forEach(node.members, checkSourceElement); - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; - case 143: - case 142: - ts.forEach(node.decorators, checkFunctionAndClassExpressionBodies); - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - if (ts.isObjectLiteralMethod(node)) { - checkFunctionExpressionOrObjectLiteralMethodBody(node); - } - break; - case 144: - case 145: - case 146: - case 213: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - break; - case 205: - checkFunctionAndClassExpressionBodies(node.expression); - break; - case 139: - case 138: - case 141: - case 140: - case 161: - case 162: - case 163: - case 164: - case 165: - case 245: - case 166: - case 167: - case 168: - case 169: - case 170: - case 183: - case 190: - case 171: - case 189: - case 172: - case 176: - case 177: - case 178: - case 175: - case 179: - case 180: - case 181: - case 182: - case 185: - case 184: - case 192: - case 219: - case 193: - case 195: - case 196: - case 197: - case 198: - case 199: - case 200: - case 201: - case 202: - case 203: - case 204: - case 206: - case 220: - case 241: - case 242: - case 207: - case 208: - case 209: - case 244: - case 211: - case 212: - case 214: - case 243: - case 188: - case 217: - case 247: - case 227: - case 248: - case 240: - case 233: - case 234: - case 238: - case 239: - case 235: - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; + function checkNodeDeferred(node) { + if (deferredNodes) { + deferredNodes.push(node); + } + } + function checkDeferredNodes() { + for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { + var node = deferredNodes_1[_i]; + switch (node.kind) { + case 175: + case 176: + case 143: + case 142: + checkFunctionExpressionOrObjectLiteralMethodDeferred(node); + break; + case 145: + case 146: + checkAccessorDeferred(node); + break; + case 188: + checkClassExpressionDeferred(node); + break; + } } } function checkSourceFile(node) { @@ -22251,9 +22790,12 @@ var ts; emitExtends = false; emitDecorate = false; emitParam = false; + emitAwaiter = false; potentialThisCollisions.length = 0; + deferredNodes = []; ts.forEach(node.statements, checkSourceElement); - checkFunctionAndClassExpressionBodies(node); + checkDeferredNodes(); + deferredNodes = undefined; if (ts.isExternalOrCommonJsModule(node)) { checkExternalModuleExports(node); } @@ -22309,7 +22851,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 205 && node.parent.statement === node) { + if (node.parent.kind === 207 && node.parent.statement === node) { return true; } node = node.parent; @@ -22331,28 +22873,28 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 248: + case 250: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 218: + case 220: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931); break; - case 217: + case 219: copySymbols(getSymbolOfNode(location).exports, meaning & 8); break; - case 186: + case 188: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } - case 214: - case 215: + case 216: + case 217: if (!(memberFlags & 64)) { copySymbols(getSymbolOfNode(location).members, meaning & 793056); } break; - case 173: + case 175: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -22392,10 +22934,10 @@ var ts; function isTypeDeclaration(node) { switch (node.kind) { case 137: - case 214: - case 215: case 216: case 217: + case 218: + case 219: return true; } } @@ -22408,19 +22950,19 @@ var ts; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 166) { + while (node.parent && node.parent.kind === 168) { node = node.parent; } - return node.parent && node.parent.kind === 188; + return node.parent && node.parent.kind === 190; } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { while (nodeOnRightSide.parent.kind === 135) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 221) { + if (nodeOnRightSide.parent.kind === 223) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 227) { + if (nodeOnRightSide.parent.kind === 229) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -22432,10 +22974,10 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 227) { + if (entityName.parent.kind === 229) { return resolveEntityName(entityName, 107455 | 793056 | 1536 | 8388608); } - if (entityName.kind !== 166) { + if (entityName.kind !== 168) { if (isInRightSideOfImportOrExportAssignment(entityName)) { return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); } @@ -22445,7 +22987,7 @@ var ts; } if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0; - if (entityName.parent.kind === 188) { + if (entityName.parent.kind === 190) { meaning = 793056; if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { meaning |= 107455; @@ -22457,9 +22999,9 @@ var ts; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 235) || - (entityName.parent.kind === 234) || - (entityName.parent.kind === 237)) { + else if ((entityName.parent.kind === 237) || + (entityName.parent.kind === 236) || + (entityName.parent.kind === 239)) { return getJsxElementTagSymbol(entityName.parent); } else if (ts.isExpression(entityName)) { @@ -22470,7 +23012,7 @@ var ts; var meaning = 107455 | 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 166) { + else if (entityName.kind === 168) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); @@ -22490,7 +23032,7 @@ var ts; meaning |= 8388608; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 238) { + else if (entityName.parent.kind === 240) { return getJsxAttributePropertySymbol(entityName.parent); } if (entityName.parent.kind === 150) { @@ -22507,12 +23049,12 @@ var ts; } if (node.kind === 69) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 227 + return node.parent.kind === 229 ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 163 && - node.parent.parent.kind === 161 && + else if (node.parent.kind === 165 && + node.parent.parent.kind === 163 && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -22523,13 +23065,15 @@ var ts; } switch (node.kind) { case 69: - case 166: + case 168: case 135: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97: case 95: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; + case 161: + return getTypeFromTypeNode(node).symbol; case 121: var constructorDeclaration = node.parent; if (constructorDeclaration && constructorDeclaration.kind === 144) { @@ -22539,12 +23083,12 @@ var ts; case 9: if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 222 || node.parent.kind === 228) && + ((node.parent.kind === 224 || node.parent.kind === 230) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } case 8: - if (node.parent.kind === 167 && node.parent.argumentExpression === node) { + if (node.parent.kind === 169 && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -22558,7 +23102,7 @@ var ts; return undefined; } function getShorthandAssignmentValueSymbol(location) { - if (location && location.kind === 246) { + if (location && location.kind === 248) { return resolveEntityName(location.name, 107455); } return undefined; @@ -22629,9 +23173,9 @@ var ts; function getRootSymbols(symbol) { if (symbol.flags & 268435456) { var symbols = []; - var name_16 = symbol.name; + var name_15 = symbol.name; ts.forEach(getSymbolLinks(symbol).containingType.types, function (t) { - var symbol = getPropertyOfType(t, name_16); + var symbol = getPropertyOfType(t, name_15); if (symbol) { symbols.push(symbol); } @@ -22649,6 +23193,25 @@ var ts; function isArgumentsLocalBinding(node) { return getReferencedValueSymbol(node) === argumentsSymbol; } + function moduleExportsSomeValue(moduleReferenceExpression) { + var moduleSymbol = resolveExternalModuleName(moduleReferenceExpression.parent, moduleReferenceExpression); + if (!moduleSymbol) { + return true; + } + var hasExportAssignment = getExportAssignmentSymbol(moduleSymbol) !== undefined; + moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); + var symbolLinks = getSymbolLinks(moduleSymbol); + if (symbolLinks.exportsSomeValue === undefined) { + symbolLinks.exportsSomeValue = hasExportAssignment + ? !!(moduleSymbol.flags & 107455) + : ts.forEachValue(getExportsOfModule(moduleSymbol), isValue); + } + return symbolLinks.exportsSomeValue; + function isValue(s) { + s = resolveSymbol(s); + return s && !!(s.flags & 107455); + } + } function getReferencedExportContainer(node) { var symbol = getReferencedValueSymbol(node); if (symbol) { @@ -22661,11 +23224,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 248) { + if (parentSymbol.flags & 512 && parentSymbol.valueDeclaration.kind === 250) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 218 || n.kind === 217) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 220 || n.kind === 219) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -22678,11 +23241,11 @@ var ts; } function isStatementWithLocals(node) { switch (node.kind) { - case 192: - case 220: - case 199: - case 200: + case 194: + case 222: case 201: + case 202: + case 203: return true; } return false; @@ -22708,22 +23271,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 221: case 223: - case 224: + case 225: case 226: - case 230: - return isAliasResolvedToValue(getSymbolOfNode(node)); case 228: + case 232: + return isAliasResolvedToValue(getSymbolOfNode(node)); + case 230: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 227: + case 229: return node.expression && node.expression.kind === 69 ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 248 || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 250 || !ts.isInternalModuleImportEqualsDeclaration(node)) { return false; } var isValue = isAliasResolvedToValue(getSymbolOfNode(node)); @@ -22771,7 +23334,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 247) { + if (node.kind === 249) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -22857,17 +23420,6 @@ var ts; var symbol = getReferencedValueSymbol(reference); return symbol && getExportSymbolOfValueSymbolIfExported(symbol).valueDeclaration; } - function instantiateSingleCallFunctionType(functionType, typeArguments) { - if (functionType === unknownType) { - return unknownType; - } - var signature = getSingleCallSignature(functionType); - if (!signature) { - return unknownType; - } - var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); - return getOrCreateTypeFromSignature(instantiatedSignature); - } function createResolver() { return { getReferencedExportContainer: getReferencedExportContainer, @@ -22891,6 +23443,7 @@ var ts; getReferencedValueDeclaration: getReferencedValueDeclaration, getTypeReferenceSerializationKind: getTypeReferenceSerializationKind, isOptionalParameter: isOptionalParameter, + moduleExportsSomeValue: moduleExportsSomeValue, isArgumentsLocalBinding: isArgumentsLocalBinding, getExternalModuleFileFromDeclaration: getExternalModuleFileFromDeclaration }; @@ -22901,7 +23454,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 248); + return ts.getDeclarationOfKind(moduleSymbol, 250); } function initializeTypeChecker() { ts.forEach(host.getSourceFiles(), function (file) { @@ -22912,10 +23465,10 @@ var ts; mergeSymbolTable(globals, file.locals); } }); + addToSymbolTable(globals, builtinGlobals, ts.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0); getSymbolLinks(undefinedSymbol).type = undefinedType; getSymbolLinks(argumentsSymbol).type = getGlobalType("IArguments"); getSymbolLinks(unknownSymbol).type = unknownType; - globals[undefinedSymbol.name] = undefinedSymbol; globalArrayType = getGlobalType("Array", 1); globalObjectType = getGlobalType("Object"); globalFunctionType = getGlobalType("Function"); @@ -22976,7 +23529,12 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + if (node.kind === 143 && !ts.nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } + else { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + } } else if (node.kind === 145 || node.kind === 146) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); @@ -22996,30 +23554,30 @@ var ts; case 143: case 142: case 149: - case 218: - case 222: - case 221: - case 228: - case 227: + case 220: + case 224: + case 223: + case 230: + case 229: case 138: break; - case 213: - if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && - node.parent.kind !== 219 && node.parent.kind !== 248) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); - } - break; - case 214: case 215: - case 193: - case 216: - if (node.modifiers && node.parent.kind !== 219 && node.parent.kind !== 248) { + if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118) && + node.parent.kind !== 221 && node.parent.kind !== 250) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; + case 216: case 217: + case 195: + case 218: + if (node.modifiers && node.parent.kind !== 221 && node.parent.kind !== 250) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); + } + break; + case 219: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74) && - node.parent.kind !== 219 && node.parent.kind !== 248) { + node.parent.kind !== 221 && node.parent.kind !== 250) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -23034,6 +23592,11 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; switch (modifier.kind) { + case 74: + if (node.kind !== 219 && node.parent.kind === 216) { + return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74)); + } + break; case 112: case 111: case 110: @@ -23058,7 +23621,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 219 || node.parent.kind === 248) { + else if (node.parent.kind === 221 || node.parent.kind === 250) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } else if (flags & 128) { @@ -23078,7 +23641,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 219 || node.parent.kind === 248) { + else if (node.parent.kind === 221 || node.parent.kind === 250) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } else if (node.kind === 138) { @@ -23103,7 +23666,7 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } else if (node.kind === 138) { @@ -23118,13 +23681,13 @@ var ts; else if (flags & 256) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } else if (node.kind === 138) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 219) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 221) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 4; @@ -23134,11 +23697,11 @@ var ts; if (flags & 128) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 214) { + if (node.kind !== 216) { if (node.kind !== 143) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_or_method_declaration); } - if (!(node.parent.kind === 214 && node.parent.flags & 128)) { + if (!(node.parent.kind === 216 && node.parent.flags & 128)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 64) { @@ -23183,7 +23746,7 @@ var ts; } return; } - else if ((node.kind === 222 || node.kind === 221) && flags & 4) { + else if ((node.kind === 224 || node.kind === 223) && flags & 4) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } else if (node.kind === 138 && (flags & 56) && ts.isBindingPattern(node.name)) { @@ -23199,9 +23762,9 @@ var ts; } switch (node.kind) { case 143: - case 213: - case 173: - case 174: + case 215: + case 175: + case 176: if (!node.asteriskToken) { return false; } @@ -23266,7 +23829,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 174) { + if (node.kind === 176) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -23333,7 +23896,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 187) { + if (arg.kind === 189) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -23408,14 +23971,14 @@ var ts; return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 181 && computedPropertyName.expression.operatorToken.kind === 24) { + if (computedPropertyName.expression.kind === 183 && computedPropertyName.expression.operatorToken.kind === 24) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 213 || - node.kind === 173 || + ts.Debug.assert(node.kind === 215 || + node.kind === 175 || node.kind === 143); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); @@ -23439,22 +24002,26 @@ var ts; var GetAccessor = 2; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; - for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { - var prop = _a[_i]; - var name_17 = prop.name; - if (prop.kind === 187 || - name_17.kind === 136) { - checkGrammarComputedPropertyName(name_17); - continue; + var _loop_1 = function(prop) { + var name_16 = prop.name; + if (prop.kind === 189 || + name_16.kind === 136) { + checkGrammarComputedPropertyName(name_16); + return "continue"; } - if (prop.kind === 246 && !inDestructuring && prop.objectAssignmentInitializer) { - return grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment); + if (prop.kind === 248 && !inDestructuring && prop.objectAssignmentInitializer) { + return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } + ts.forEach(prop.modifiers, function (mod) { + if (mod.kind !== 118 || prop.kind !== 143) { + grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); + } + }); var currentKind = void 0; - if (prop.kind === 245 || prop.kind === 246) { + if (prop.kind === 247 || prop.kind === 248) { checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); - if (name_17.kind === 8) { - checkGrammarNumericLiteral(name_17); + if (name_16.kind === 8) { + checkGrammarNumericLiteral(name_16); } currentKind = Property; } @@ -23470,45 +24037,51 @@ var ts; else { ts.Debug.fail("Unexpected syntax kind:" + prop.kind); } - if (!ts.hasProperty(seen, name_17.text)) { - seen[name_17.text] = currentKind; + if (!ts.hasProperty(seen, name_16.text)) { + seen[name_16.text] = currentKind; } else { - var existingKind = seen[name_17.text]; + var existingKind = seen[name_16.text]; if (currentKind === Property && existingKind === Property) { - continue; + return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { - seen[name_17.text] = currentKind | existingKind; + seen[name_16.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_17, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return grammarErrorOnNode(name_17, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } + }; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var state_1 = _loop_1(prop); + if (typeof state_1 === "object") return state_1.value + if (state_1 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 239) { + if (attr.kind === 241) { continue; } var jsxAttr = attr; - var name_18 = jsxAttr.name; - if (!ts.hasProperty(seen, name_18.text)) { - seen[name_18.text] = true; + var name_17 = jsxAttr.name; + if (!ts.hasProperty(seen, name_17.text)) { + seen[name_17.text] = true; } else { - return grammarErrorOnNode(name_18, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); + return grammarErrorOnNode(name_17, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 240 && !initializer.expression) { + if (initializer && initializer.kind === 242 && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -23517,24 +24090,28 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 212) { + if (forInOrOfStatement.initializer.kind === 214) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { - if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 200 + var declarations = variableList.declarations; + if (!declarations.length) { + return false; + } + if (declarations.length > 1) { + var diagnostic = forInOrOfStatement.kind === 202 ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - var firstDeclaration = variableList.declarations[0]; + var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 200 + var diagnostic = forInOrOfStatement.kind === 202 ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 200 + var diagnostic = forInOrOfStatement.kind === 202 ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -23595,7 +24172,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 165) { + if (node.parent.kind === 167) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -23614,7 +24191,7 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 215) { + else if (node.parent.kind === 217) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } else if (node.parent.kind === 155) { @@ -23628,9 +24205,9 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 207: + case 209: if (node.label && current.label.text === node.label.text) { - var isMisplacedContinueLabel = node.kind === 202 + var isMisplacedContinueLabel = node.kind === 204 && !ts.isIterationStatement(current.statement, true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -23638,8 +24215,8 @@ var ts; return false; } break; - case 206: - if (node.kind === 203 && !node.label) { + case 208: + if (node.kind === 205 && !node.label) { return false; } break; @@ -23652,13 +24229,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 203 + var message = node.kind === 205 ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 203 + var message = node.kind === 205 ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -23670,7 +24247,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 162 || node.name.kind === 161) { + if (node.name.kind === 164 || node.name.kind === 163) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -23679,7 +24256,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 200 && node.parent.parent.kind !== 201) { + if (node.parent.parent.kind !== 202 && node.parent.parent.kind !== 203) { if (ts.isInAmbientContext(node)) { if (node.initializer) { var equalsTokenLength = "=".length; @@ -23695,12 +24272,12 @@ var ts; } } } - var checkLetConstNames = languageVersion >= 2 && (ts.isLet(node) || ts.isConst(node)); + var checkLetConstNames = (ts.isLet(node) || ts.isConst(node)); return checkLetConstNames && checkGrammarNameInLetOrConstDeclarations(node.name); } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 69) { - if (name.text === "let") { + if (name.originalKeywordKind === 108) { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } @@ -23708,7 +24285,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 187) { + if (element.kind !== 189) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -23725,15 +24302,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 196: - case 197: case 198: - case 205: case 199: case 200: - case 201: - return false; case 207: + case 201: + case 202: + case 203: + return false; + case 209: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -23748,18 +24325,6 @@ var ts; } } } - function isIntegerLiteral(expression) { - if (expression.kind === 179) { - var unaryExpression = expression; - if (unaryExpression.operator === 35 || unaryExpression.operator === 36) { - expression = unaryExpression.operand; - } - } - if (expression.kind === 8) { - return /^[0-9]+([eE]\+?[0-9]+)?$/.test(expression.text); - } - return false; - } function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } @@ -23784,10 +24349,6 @@ var ts; return true; } } - function isEvalOrArgumentsIdentifier(node) { - return node.kind === 69 && - (node.text === "eval" || node.text === "arguments"); - } function checkGrammarConstructorTypeParameters(node) { if (node.typeParameters) { return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.typeParameters.pos, node.typeParameters.end - node.typeParameters.pos, ts.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration); @@ -23805,27 +24366,33 @@ var ts; return true; } } - else if (node.parent.kind === 215) { + else if (node.parent.kind === 217) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); + } } else if (node.parent.kind === 155) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.A_type_literal_property_cannot_have_an_initializer); + } } if (ts.isInAmbientContext(node) && node.initializer) { return grammarErrorOnFirstToken(node.initializer, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); } } function checkGrammarTopLevelElementForRequiredDeclareModifier(node) { - if (node.kind === 215 || - node.kind === 216 || - node.kind === 222 || - node.kind === 221 || - node.kind === 228 || - node.kind === 227 || + if (node.kind === 217 || + node.kind === 218 || + node.kind === 224 || + node.kind === 223 || + node.kind === 230 || + node.kind === 229 || (node.flags & 4) || (node.flags & (2 | 512))) { return false; @@ -23835,7 +24402,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 193) { + if (ts.isDeclaration(decl) || decl.kind === 195) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -23854,7 +24421,7 @@ var ts; if (!links.hasReportedStatementInAmbientContext && ts.isFunctionLike(node.parent)) { return getNodeLinks(node).hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts); } - if (node.parent.kind === 192 || node.parent.kind === 219 || node.parent.kind === 248) { + if (node.parent.kind === 194 || node.parent.kind === 221 || node.parent.kind === 250) { var links_1 = getNodeLinks(node.parent); if (!links_1.hasReportedStatementInAmbientContext) { return links_1.hasReportedStatementInAmbientContext = grammarErrorOnFirstToken(node, ts.Diagnostics.Statements_are_not_allowed_in_ambient_contexts); @@ -23877,19 +24444,248 @@ var ts; return true; } } + var _a; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); var ts; +(function (ts) { + var nullSourceMapWriter; + function getNullSourceMapWriter() { + if (nullSourceMapWriter === undefined) { + nullSourceMapWriter = { + getSourceMapData: function () { return undefined; }, + setSourceFile: function (sourceFile) { }, + emitStart: function (range) { }, + emitEnd: function (range) { }, + emitPos: function (pos) { }, + getText: function () { return undefined; }, + getSourceMappingURL: function () { return undefined; }, + initialize: function (filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { }, + reset: function () { } + }; + } + return nullSourceMapWriter; + } + ts.getNullSourceMapWriter = getNullSourceMapWriter; + function createSourceMapWriter(host, writer) { + var compilerOptions = host.getCompilerOptions(); + var currentSourceFile; + var sourceMapDir; + var sourceMapSourceIndex; + var lastRecordedSourceMapSpan; + var lastEncodedSourceMapSpan; + var lastEncodedNameIndex; + var sourceMapData; + return { + getSourceMapData: function () { return sourceMapData; }, + setSourceFile: setSourceFile, + emitPos: emitPos, + emitStart: emitStart, + emitEnd: emitEnd, + getText: getText, + getSourceMappingURL: getSourceMappingURL, + initialize: initialize, + reset: reset + }; + function initialize(filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + if (sourceMapData) { + reset(); + } + currentSourceFile = undefined; + sourceMapSourceIndex = -1; + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = { + emittedLine: 1, + emittedColumn: 1, + sourceLine: 1, + sourceColumn: 1, + sourceIndex: 0 + }; + lastEncodedNameIndex = 0; + sourceMapData = { + sourceMapFilePath: sourceMapFilePath, + jsSourceMappingURL: !compilerOptions.inlineSourceMap ? ts.getBaseFileName(ts.normalizeSlashes(sourceMapFilePath)) : undefined, + sourceMapFile: ts.getBaseFileName(ts.normalizeSlashes(filePath)), + sourceMapSourceRoot: compilerOptions.sourceRoot || "", + sourceMapSources: [], + inputSourceFileNames: [], + sourceMapNames: [], + sourceMapMappings: "", + sourceMapSourcesContent: compilerOptions.inlineSources ? [] : undefined, + sourceMapDecodedMappings: [] + }; + sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); + if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47) { + sourceMapData.sourceMapSourceRoot += ts.directorySeparator; + } + if (compilerOptions.mapRoot) { + sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); + if (!isBundledEmit) { + ts.Debug.assert(sourceFiles.length === 1); + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(sourceFiles[0], host, sourceMapDir)); + } + if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { + sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); + sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(filePath)), ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), host.getCurrentDirectory(), host.getCanonicalFileName, true); + } + else { + sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); + } + } + else { + sourceMapDir = ts.getDirectoryPath(ts.normalizePath(filePath)); + } + } + function reset() { + currentSourceFile = undefined; + sourceMapDir = undefined; + sourceMapSourceIndex = undefined; + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = undefined; + lastEncodedNameIndex = undefined; + sourceMapData = undefined; + } + function encodeLastRecordedSourceMapSpan() { + if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { + return; + } + var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; + if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { + if (sourceMapData.sourceMapMappings) { + sourceMapData.sourceMapMappings += ","; + } + } + else { + for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { + sourceMapData.sourceMapMappings += ";"; + } + prevEncodedEmittedColumn = 1; + } + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); + if (lastRecordedSourceMapSpan.nameIndex >= 0) { + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); + lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; + } + lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; + sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); + } + function emitPos(pos) { + if (pos === -1) { + return; + } + var sourceLinePos = ts.getLineAndCharacterOfPosition(currentSourceFile, pos); + sourceLinePos.line++; + sourceLinePos.character++; + var emittedLine = writer.getLine(); + var emittedColumn = writer.getColumn(); + if (!lastRecordedSourceMapSpan || + lastRecordedSourceMapSpan.emittedLine !== emittedLine || + lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || + (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && + (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || + (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { + encodeLastRecordedSourceMapSpan(); + lastRecordedSourceMapSpan = { + emittedLine: emittedLine, + emittedColumn: emittedColumn, + sourceLine: sourceLinePos.line, + sourceColumn: sourceLinePos.character, + sourceIndex: sourceMapSourceIndex + }; + } + else { + lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; + lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; + lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; + } + } + function emitStart(range) { + var rangeHasDecorators = !!range.decorators; + emitPos(range.pos !== -1 ? ts.skipTrivia(currentSourceFile.text, rangeHasDecorators ? range.decorators.end : range.pos) : -1); + } + function emitEnd(range) { + emitPos(range.end); + } + function setSourceFile(sourceFile) { + currentSourceFile = sourceFile; + var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; + var source = ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, currentSourceFile.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, true); + sourceMapSourceIndex = ts.indexOf(sourceMapData.sourceMapSources, source); + if (sourceMapSourceIndex === -1) { + sourceMapSourceIndex = sourceMapData.sourceMapSources.length; + sourceMapData.sourceMapSources.push(source); + sourceMapData.inputSourceFileNames.push(sourceFile.fileName); + if (compilerOptions.inlineSources) { + sourceMapData.sourceMapSourcesContent.push(sourceFile.text); + } + } + } + function getText() { + encodeLastRecordedSourceMapSpan(); + return ts.stringify({ + version: 3, + file: sourceMapData.sourceMapFile, + sourceRoot: sourceMapData.sourceMapSourceRoot, + sources: sourceMapData.sourceMapSources, + names: sourceMapData.sourceMapNames, + mappings: sourceMapData.sourceMapMappings, + sourcesContent: sourceMapData.sourceMapSourcesContent + }); + } + function getSourceMappingURL() { + if (compilerOptions.inlineSourceMap) { + var base64SourceMapText = ts.convertToBase64(getText()); + return sourceMapData.jsSourceMappingURL = "data:application/json;base64," + base64SourceMapText; + } + else { + return sourceMapData.jsSourceMappingURL; + } + } + } + ts.createSourceMapWriter = createSourceMapWriter; + var base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + function base64FormatEncode(inValue) { + if (inValue < 64) { + return base64Chars.charAt(inValue); + } + throw TypeError(inValue + ": not a 64 based value"); + } + function base64VLQFormatEncode(inValue) { + if (inValue < 0) { + inValue = ((-inValue) << 1) + 1; + } + else { + inValue = inValue << 1; + } + var encodedStr = ""; + do { + var currentDigit = inValue & 31; + inValue = inValue >> 5; + if (inValue > 0) { + currentDigit = currentDigit | 32; + } + encodedStr = encodedStr + base64FormatEncode(currentDigit); + } while (inValue > 0); + return encodedStr; + } +})(ts || (ts = {})); +var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + var declarationDiagnostics = ts.createDiagnosticCollection(); + ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); + return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { + var declarationFilePath = _a.declarationFilePath; + emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); + } } ts.getDeclarationDiagnostics = getDeclarationDiagnostics; - function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { + function emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); var write; @@ -23907,93 +24703,67 @@ var ts; var errorNameNode; var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var noDeclare = !root; + var noDeclare; var moduleElementDeclarationEmitInfo = []; var asynchronousSubModuleDeclarationEmitInfo; var referencePathsOutput = ""; - if (root) { + var emittedReferencedFiles = []; + var addedGlobalFileReference = false; + var allSourcesModuleElementDeclarationEmitInfo = []; + ts.forEach(sourceFiles, function (sourceFile) { + if (ts.isSourceFileJavaScript(sourceFile)) { + return; + } if (!compilerOptions.noResolve) { - var addedGlobalFileReference = false; - ts.forEach(root.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - if (referencedFile && ((referencedFile.flags & 4096) || - ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || - !addedGlobalFileReference)) { - writeReferencePath(referencedFile); - if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { + ts.forEach(sourceFile.referencedFiles, function (fileReference) { + var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); + if (referencedFile && !ts.contains(emittedReferencedFiles, referencedFile)) { + if (writeReferencePath(referencedFile, !isBundledEmit && !addedGlobalFileReference)) { addedGlobalFileReference = true; } + emittedReferencedFiles.push(referencedFile); } }); } - emitSourceFile(root); + if (!isBundledEmit || !ts.isExternalModule(sourceFile)) { + noDeclare = false; + emitSourceFile(sourceFile); + } + else if (ts.isExternalModule(sourceFile)) { + noDeclare = true; + write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); + writeLine(); + increaseIndent(); + emitSourceFile(sourceFile); + decreaseIndent(); + write("}"); + writeLine(); + } if (moduleElementDeclarationEmitInfo.length) { var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222); + if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { + ts.Debug.assert(aliasEmitInfo.node.kind === 224); createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 0); + ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + increaseIndent(); + } writeImportDeclaration(aliasEmitInfo.node); aliasEmitInfo.asynchronousOutput = writer.getText(); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + decreaseIndent(); + } } }); setWriter(oldWriter); + allSourcesModuleElementDeclarationEmitInfo = allSourcesModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); + moduleElementDeclarationEmitInfo = []; } - } - else { - var emittedReferencedFiles = []; - var prevModuleElementDeclarationEmitInfo = []; - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!ts.isDeclarationFile(sourceFile)) { - if (!compilerOptions.noResolve) { - ts.forEach(sourceFile.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - if (referencedFile && (ts.isDeclarationFile(referencedFile) && - !ts.contains(emittedReferencedFiles, referencedFile))) { - writeReferencePath(referencedFile); - emittedReferencedFiles.push(referencedFile); - } - }); - } - } - if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { - noDeclare = false; - emitSourceFile(sourceFile); - } - else if (ts.isExternalModule(sourceFile)) { - noDeclare = true; - write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); - writeLine(); - increaseIndent(); - emitSourceFile(sourceFile); - decreaseIndent(); - write("}"); - writeLine(); - if (moduleElementDeclarationEmitInfo.length) { - var oldWriter = writer; - ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222); - createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 1); - increaseIndent(); - writeImportDeclaration(aliasEmitInfo.node); - aliasEmitInfo.asynchronousOutput = writer.getText(); - decreaseIndent(); - } - }); - setWriter(oldWriter); - } - prevModuleElementDeclarationEmitInfo = prevModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); - moduleElementDeclarationEmitInfo = []; - } - }); - moduleElementDeclarationEmitInfo = moduleElementDeclarationEmitInfo.concat(prevModuleElementDeclarationEmitInfo); - } + }); return { reportedDeclarationError: reportedDeclarationError, - moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: allSourcesModuleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -24036,10 +24806,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 211) { + if (declaration.kind === 213) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 225 || declaration.kind === 226 || declaration.kind === 223) { + else if (declaration.kind === 227 || declaration.kind === 228 || declaration.kind === 225) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -24050,7 +24820,7 @@ var ts; moduleElementEmitInfo = ts.forEach(asynchronousSubModuleDeclarationEmitInfo, function (declEmitInfo) { return declEmitInfo.node === nodeToCheck ? declEmitInfo : undefined; }); } if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 222) { + if (moduleElementEmitInfo.node.kind === 224) { moduleElementEmitInfo.isVisible = true; } else { @@ -24058,12 +24828,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 218) { + if (nodeToCheck.kind === 220) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 218) { + if (nodeToCheck.kind === 220) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -24084,10 +24854,10 @@ var ts; var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); if (errorInfo) { if (errorInfo.typeName) { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } else { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } } } @@ -24097,7 +24867,8 @@ var ts; } function reportInaccessibleThisError() { if (errorNameNode) { - diagnostics.push(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); + reportedDeclarationError = true; + emitterDiagnostics.add(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); } } function writeTypeOfDeclaration(declaration, type, getSymbolAccessibilityDiagnostic) { @@ -24165,10 +24936,10 @@ var ts; case 120: case 131: case 103: - case 97: - case 9: + case 161: + case 162: return writeTextOfNode(currentText, type); - case 188: + case 190: return emitExpressionWithTypeArguments(type); case 151: return emitTypeReference(type); @@ -24209,13 +24980,13 @@ var ts; } } function emitEntityName(entityName) { - var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 221 ? entityName.parent : enclosingDeclaration); + var visibilityResult = resolver.isEntityNameVisible(entityName, entityName.parent.kind === 223 ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 166); + ts.Debug.assert(node.expression.kind === 69 || node.expression.kind === 168); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -24288,9 +25059,10 @@ var ts; } var count = 0; while (true) { - var name_19 = baseName + "_" + (++count); - if (!ts.hasProperty(currentIdentifiers, name_19)) { - return name_19; + count++; + var name_18 = baseName + "_" + count; + if (!ts.hasProperty(currentIdentifiers, name_18)) { + return name_18; } } } @@ -24331,10 +25103,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 221 || - (node.parent.kind === 248 && isCurrentFileExternalModule)) { + else if (node.kind === 223 || + (node.parent.kind === 250 && isCurrentFileExternalModule)) { var isVisible; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 248) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 250) { asynchronousSubModuleDeclarationEmitInfo.push({ node: node, outputPos: writer.getTextPos(), @@ -24343,7 +25115,7 @@ var ts; }); } else { - if (node.kind === 222) { + if (node.kind === 224) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -24361,37 +25133,37 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 213: - return writeFunctionDeclaration(node); - case 193: - return writeVariableStatement(node); case 215: - return writeInterfaceDeclaration(node); - case 214: - return writeClassDeclaration(node); - case 216: - return writeTypeAliasDeclaration(node); + return writeFunctionDeclaration(node); + case 195: + return writeVariableStatement(node); case 217: - return writeEnumDeclaration(node); + return writeInterfaceDeclaration(node); + case 216: + return writeClassDeclaration(node); case 218: + return writeTypeAliasDeclaration(node); + case 219: + return writeEnumDeclaration(node); + case 220: return writeModuleDeclaration(node); - case 221: + case 223: return writeImportEqualsDeclaration(node); - case 222: + case 224: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); } } function emitModuleElementDeclarationFlags(node) { - if (node.parent.kind === 248) { + if (node.parent.kind === 250) { if (node.flags & 2) { write("export "); } if (node.flags & 512) { write("default "); } - else if (node.kind !== 215 && !noDeclare) { + else if (node.kind !== 217 && !noDeclare) { write("declare "); } } @@ -24424,7 +25196,7 @@ var ts; } else { write("require("); - writeTextOfNode(currentText, ts.getExternalModuleImportEqualsDeclarationExpression(node)); + emitExternalModuleSpecifier(node); write(");"); } writer.writeLine(); @@ -24438,7 +25210,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 224) { + if (namedBindings.kind === 226) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -24464,7 +25236,7 @@ var ts; if (currentWriterPos !== writer.getTextPos()) { write(", "); } - if (node.importClause.namedBindings.kind === 224) { + if (node.importClause.namedBindings.kind === 226) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -24476,13 +25248,22 @@ var ts; } write(" from "); } - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); write(";"); writer.writeLine(); } - function emitExternalModuleSpecifier(moduleSpecifier) { - if (moduleSpecifier.kind === 9 && (!root) && (compilerOptions.out || compilerOptions.outFile)) { - var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, moduleSpecifier.parent); + function emitExternalModuleSpecifier(parent) { + var moduleSpecifier; + if (parent.kind === 223) { + var node = parent; + moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); + } + else { + var node = parent; + moduleSpecifier = node.moduleSpecifier; + } + if (moduleSpecifier.kind === 9 && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { + var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { write("\""); write(moduleName); @@ -24517,7 +25298,7 @@ var ts; } if (node.moduleSpecifier) { write(" from "); - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); } write(";"); writer.writeLine(); @@ -24532,7 +25313,7 @@ var ts; write("module "); } writeTextOfNode(currentText, node.name); - while (node.body.kind !== 219) { + while (node.body.kind !== 221) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -24625,10 +25406,10 @@ var ts; function getTypeParameterConstraintVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; switch (node.parent.kind) { - case 214: + case 216: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 215: + case 217: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; case 148: @@ -24642,14 +25423,14 @@ var ts; if (node.parent.flags & 64) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214) { + else if (node.parent.parent.kind === 216) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 213: + case 215: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -24682,7 +25463,7 @@ var ts; } function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; - if (node.parent.parent.kind === 214) { + if (node.parent.parent.kind === 216) { diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : ts.Diagnostics.Extends_clause_of_exported_class_0_has_or_is_using_private_name_1; @@ -24762,7 +25543,7 @@ var ts; writeLine(); } function emitVariableDeclaration(node) { - if (node.kind !== 211 || resolver.isDeclarationVisible(node)) { + if (node.kind !== 213 || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } @@ -24780,7 +25561,7 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { - if (node.kind === 211) { + if (node.kind === 213) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -24795,7 +25576,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -24821,7 +25602,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187) { + if (element.kind !== 189) { elements.push(element); } } @@ -24955,13 +25736,13 @@ var ts; } if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 213) { + if (node.kind === 215) { emitModuleElementDeclarationFlags(node); } else if (node.kind === 143) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 213) { + if (node.kind === 215) { write("function "); writeTextOfNode(currentText, node.name); } @@ -24982,6 +25763,8 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; if (node.kind === 148 || node.kind === 153) { write("new "); } @@ -24992,8 +25775,6 @@ var ts; else { write("("); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; emitCommaList(node.parameters, emitParameterDeclaration); if (node.kind === 149) { write("]"); @@ -25043,7 +25824,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 214) { + else if (node.parent.kind === 216) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -25056,7 +25837,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 213: + case 215: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -25129,7 +25910,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214) { + else if (node.parent.parent.kind === 216) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -25141,7 +25922,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 213: + case 215: return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -25152,12 +25933,12 @@ var ts; } } function emitBindingPattern(bindingPattern) { - if (bindingPattern.kind === 161) { + if (bindingPattern.kind === 163) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 162) { + else if (bindingPattern.kind === 164) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -25168,18 +25949,10 @@ var ts; } } function emitBindingElement(bindingElement) { - function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); - return diagnosticMessage !== undefined ? { - diagnosticMessage: diagnosticMessage, - errorNode: bindingElement, - typeName: bindingElement.name - } : undefined; - } - if (bindingElement.kind === 187) { + if (bindingElement.kind === 189) { write(" "); } - else if (bindingElement.kind === 163) { + else if (bindingElement.kind === 165) { if (bindingElement.propertyName) { writeTextOfNode(currentText, bindingElement.propertyName); write(": "); @@ -25201,19 +25974,19 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 213: - case 218: - case 221: case 215: - case 214: - case 216: + case 220: + case 223: case 217: + case 216: + case 218: + case 219: return emitModuleElement(node, isModuleElementVisible(node)); - case 193: + case 195: return emitModuleElement(node, isVariableStatementVisible(node)); - case 222: + case 224: return emitModuleElement(node, !node.importClause); - case 228: + case 230: return emitExportDeclaration(node); case 144: case 143: @@ -25229,31 +26002,47 @@ var ts; case 141: case 140: return emitPropertyDeclaration(node); - case 247: + case 249: return emitEnumMemberDeclaration(node); - case 227: + case 229: return emitExportAssignment(node); - case 248: + case 250: return emitSourceFile(node); } } - function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 4096 - ? referencedFile.fileName - : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) - ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") - : ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out) + ".d.ts"; - declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); - referencePathsOutput += "/// " + newLine; + function writeReferencePath(referencedFile, addBundledFileReference) { + var declFileName; + var addedBundledEmitReference = false; + if (ts.isDeclarationFile(referencedFile)) { + declFileName = referencedFile.fileName; + } + else { + ts.forEachExpectedEmitFile(host, getDeclFileName, referencedFile); + } + if (declFileName) { + declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, false); + referencePathsOutput += "/// " + newLine; + } + return addedBundledEmitReference; + function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { + if (isBundledEmit && !addBundledFileReference) { + return; + } + ts.Debug.assert(!!emitFileNames.declarationFilePath || ts.isSourceFileJavaScript(referencedFile), "Declaration file is not present only for javascript files"); + declFileName = emitFileNames.declarationFilePath || emitFileNames.jsFilePath; + addedBundledEmitReference = isBundledEmit; + } } } - function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - if (!emitDeclarationResult.reportedDeclarationError) { + function writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit); + var emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath) || host.getCompilerOptions().noEmit; + if (!emitSkipped) { var declarationOutput = emitDeclarationResult.referencePathsOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); - ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + ts.writeFile(host, emitterDiagnostics, declarationFilePath, declarationOutput, host.getCompilerOptions().emitBOM); } + return emitSkipped; function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { var appliedSyncOutputPos = 0; var declarationOutput = ""; @@ -25272,10 +26061,6 @@ var ts; })(ts || (ts = {})); var ts; (function (ts) { - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; function getResolvedExternalModuleName(host, file) { return file.moduleName || ts.getExternalModuleNameFromPath(host, file.fileName); } @@ -25550,41 +26335,17 @@ var ts; var paramHelper = "\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};"; var awaiterHelper = "\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promise, generator) {\n return new Promise(function (resolve, reject) {\n generator = generator.call(thisArg, _arguments);\n function cast(value) { return value instanceof Promise && value.constructor === Promise ? value : new Promise(function (resolve) { resolve(value); }); }\n function onfulfill(value) { try { step(\"next\", value); } catch (e) { reject(e); } }\n function onreject(value) { try { step(\"throw\", value); } catch (e) { reject(e); } }\n function step(verb, value) {\n var result = generator[verb](value);\n result.done ? resolve(result.value) : cast(result.value).then(onfulfill, onreject);\n }\n step(\"next\", void 0);\n });\n};"; var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || 0; - var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 ? 5 : 0; + var languageVersion = ts.getEmitScriptTarget(compilerOptions); + var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; - var diagnostics = []; + var emitterDiagnostics = ts.createDiagnosticCollection(); + var emitSkipped = false; var newLine = host.getNewLine(); - var jsxDesugaring = host.getCompilerOptions().jsx !== 1; - var shouldEmitJsx = function (s) { return (s.languageVariant === 1 && !jsxDesugaring); }; - var outFile = compilerOptions.outFile || compilerOptions.out; var emitJavaScript = createFileEmitter(); - if (targetSourceFile === undefined) { - if (outFile) { - emitFile(outFile); - } - else { - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, shouldEmitJsx(sourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, sourceFile); - } - }); - } - } - else { - if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, shouldEmitJsx(targetSourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, targetSourceFile); - } - else if (!ts.isDeclarationFile(targetSourceFile) && outFile) { - emitFile(outFile); - } - } - diagnostics = ts.sortAndDeduplicateDiagnostics(diagnostics); + ts.forEachExpectedEmitFile(host, emitFile, targetSourceFile); return { - emitSkipped: false, - diagnostics: diagnostics, + emitSkipped: emitSkipped, + diagnostics: emitterDiagnostics.getDiagnostics(), sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -25631,6 +26392,8 @@ var ts; function createFileEmitter() { var writer = ts.createTextWriter(newLine); var write = writer.write, writeTextOfNode = writer.writeTextOfNode, writeLine = writer.writeLine, increaseIndent = writer.increaseIndent, decreaseIndent = writer.decreaseIndent; + var sourceMap = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? ts.createSourceMapWriter(host, writer) : ts.getNullSourceMapWriter(); + var setSourceFile = sourceMap.setSourceFile, emitStart = sourceMap.emitStart, emitEnd = sourceMap.emitEnd, emitPos = sourceMap.emitPos; var currentSourceFile; var currentText; var currentLineMap; @@ -25647,24 +26410,16 @@ var ts; var decorateEmitted; var paramEmitted; var awaiterEmitted; - var tempFlags; + var tempFlags = 0; var tempVariables; var tempParameters; var externalImports; var exportSpecifiers; var exportEquals; - var hasExportStars; - var writeEmittedFiles = writeJavaScriptFile; + var hasExportStarsToExportValues; var detachedCommentsInfo; - var writeComment = ts.writeCommentRange; - var emit = emitNodeWithCommentsAndWithoutSourcemap; - var emitStart = function (node) { }; - var emitEnd = function (node) { }; - var emitToken = emitTokenText; - var scopeEmitStart = function (scopeDeclaration, scopeName) { }; - var scopeEmitEnd = function () { }; var sourceMapData; - var root; + var isOwnFileEmit; var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; var moduleEmitDelegates = (_a = {}, _a[5] = emitES6Module, @@ -25683,14 +26438,29 @@ var ts; _b ); return doEmit; - function doEmit(jsFilePath, rootFile) { + function doEmit(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + sourceMap.initialize(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + generatedNameSet = {}; + nodeToGeneratedName = []; + isOwnFileEmit = !isBundledEmit; + if (isBundledEmit && modulekind) { + ts.forEach(sourceFiles, emitEmitHelpers); + } + ts.forEach(sourceFiles, emitSourceFile); + writeLine(); + var sourceMappingURL = sourceMap.getSourceMappingURL(); + if (sourceMappingURL) { + write("//# sourceMappingURL=" + sourceMappingURL); + } + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, compilerOptions.emitBOM); + sourceMap.reset(); writer.reset(); currentSourceFile = undefined; currentText = undefined; currentLineMap = undefined; exportFunctionForFile = undefined; - generatedNameSet = {}; - nodeToGeneratedName = []; + generatedNameSet = undefined; + nodeToGeneratedName = undefined; computedPropertyNamesToGeneratedNames = undefined; convertedLoopState = undefined; extendsEmitted = false; @@ -25703,31 +26473,12 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = undefined; + hasExportStarsToExportValues = undefined; detachedCommentsInfo = undefined; sourceMapData = undefined; isEs6Module = false; renamedDependencies = undefined; isCurrentFileExternalModule = false; - root = rootFile; - if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { - initializeEmitterWithSourceMaps(jsFilePath, root); - } - if (root) { - emitSourceFile(root); - } - else { - if (modulekind) { - ts.forEach(host.getSourceFiles(), emitEmitHelpers); - } - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if ((!isExternalModuleOrDeclarationFile(sourceFile)) || (modulekind && ts.isExternalModule(sourceFile))) { - emitSourceFile(sourceFile); - } - }); - } - writeLine(); - writeEmittedFiles(writer.getText(), jsFilePath, compilerOptions.emitBOM); } function emitSourceFile(sourceFile) { currentSourceFile = sourceFile; @@ -25738,7 +26489,8 @@ var ts; renamedDependencies = sourceFile.renamedDependencies; currentFileIdentifiers = sourceFile.identifiers; isCurrentFileExternalModule = ts.isExternalModule(sourceFile); - emit(sourceFile); + setSourceFile(sourceFile); + emitNodeWithCommentsAndWithoutSourcemap(sourceFile); } function isUniqueName(name) { return !resolver.hasGlobalName(name) && @@ -25747,19 +26499,19 @@ var ts; } function makeTempVariableName(flags) { if (flags && !(tempFlags & flags)) { - var name_20 = flags === 268435456 ? "_i" : "_n"; - if (isUniqueName(name_20)) { + var name_19 = flags === 268435456 ? "_i" : "_n"; + if (isUniqueName(name_19)) { tempFlags |= flags; - return name_20; + return name_19; } } while (true) { var count = tempFlags & 268435455; tempFlags++; if (count !== 8 && count !== 13) { - var name_21 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); - if (isUniqueName(name_21)) { - return name_21; + var name_20 = count < 26 ? "_" + String.fromCharCode(97 + count) : "_" + (count - 26); + if (isUniqueName(name_20)) { + return name_20; } } } @@ -25797,17 +26549,17 @@ var ts; switch (node.kind) { case 69: return makeUniqueName(node.text); - case 218: - case 217: + case 220: + case 219: return generateNameForModuleOrEnum(node); - case 222: - case 228: + case 224: + case 230: return generateNameForImportOrExportDeclaration(node); - case 213: - case 214: - case 227: + case 215: + case 216: + case 229: return generateNameForExportDefault(); - case 186: + case 188: return generateNameForClassExpression(); } } @@ -25815,289 +26567,14 @@ var ts; var id = ts.getNodeId(node); return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } - function initializeEmitterWithSourceMaps(jsFilePath, root) { - var sourceMapDir; - var sourceMapSourceIndex = -1; - var sourceMapNameIndexMap = {}; - var sourceMapNameIndices = []; - function getSourceMapNameIndex() { - return sourceMapNameIndices.length ? ts.lastOrUndefined(sourceMapNameIndices) : -1; + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), false); } - var lastRecordedSourceMapSpan; - var lastEncodedSourceMapSpan = { - emittedLine: 1, - emittedColumn: 1, - sourceLine: 1, - sourceColumn: 1, - sourceIndex: 0 - }; - var lastEncodedNameIndex = 0; - function encodeLastRecordedSourceMapSpan() { - if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { - return; - } - var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; - if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { - if (sourceMapData.sourceMapMappings) { - sourceMapData.sourceMapMappings += ","; - } - } - else { - for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { - sourceMapData.sourceMapMappings += ";"; - } - prevEncodedEmittedColumn = 1; - } - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); - if (lastRecordedSourceMapSpan.nameIndex >= 0) { - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); - lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; - } - lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; - sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); - function base64VLQFormatEncode(inValue) { - function base64FormatEncode(inValue) { - if (inValue < 64) { - return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(inValue); - } - throw TypeError(inValue + ": not a 64 based value"); - } - if (inValue < 0) { - inValue = ((-inValue) << 1) + 1; - } - else { - inValue = inValue << 1; - } - var encodedStr = ""; - do { - var currentDigit = inValue & 31; - inValue = inValue >> 5; - if (inValue > 0) { - currentDigit = currentDigit | 32; - } - encodedStr = encodedStr + base64FormatEncode(currentDigit); - } while (inValue > 0); - return encodedStr; - } + if (sourceMapDataList) { + sourceMapDataList.push(sourceMap.getSourceMapData()); } - function recordSourceMapSpan(pos) { - var sourceLinePos = ts.computeLineAndCharacterOfPosition(currentLineMap, pos); - sourceLinePos.line++; - sourceLinePos.character++; - var emittedLine = writer.getLine(); - var emittedColumn = writer.getColumn(); - if (!lastRecordedSourceMapSpan || - lastRecordedSourceMapSpan.emittedLine !== emittedLine || - lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || - (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && - (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || - (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { - encodeLastRecordedSourceMapSpan(); - lastRecordedSourceMapSpan = { - emittedLine: emittedLine, - emittedColumn: emittedColumn, - sourceLine: sourceLinePos.line, - sourceColumn: sourceLinePos.character, - nameIndex: getSourceMapNameIndex(), - sourceIndex: sourceMapSourceIndex - }; - } - else { - lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; - lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; - lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; - } - } - function recordEmitNodeStartSpan(node) { - recordSourceMapSpan(ts.skipTrivia(currentText, node.pos)); - } - function recordEmitNodeEndSpan(node) { - recordSourceMapSpan(node.end); - } - function writeTextWithSpanRecord(tokenKind, startPos, emitFn) { - var tokenStartPos = ts.skipTrivia(currentText, startPos); - recordSourceMapSpan(tokenStartPos); - var tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); - recordSourceMapSpan(tokenEndPos); - return tokenEndPos; - } - function recordNewSourceFileStart(node) { - var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; - sourceMapData.sourceMapSources.push(ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, node.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, true)); - sourceMapSourceIndex = sourceMapData.sourceMapSources.length - 1; - sourceMapData.inputSourceFileNames.push(node.fileName); - if (compilerOptions.inlineSources) { - if (!sourceMapData.sourceMapSourcesContent) { - sourceMapData.sourceMapSourcesContent = []; - } - sourceMapData.sourceMapSourcesContent.push(node.text); - } - } - function recordScopeNameOfNode(node, scopeName) { - function recordScopeNameIndex(scopeNameIndex) { - sourceMapNameIndices.push(scopeNameIndex); - } - function recordScopeNameStart(scopeName) { - var scopeNameIndex = -1; - if (scopeName) { - var parentIndex = getSourceMapNameIndex(); - if (parentIndex !== -1) { - var name_22 = node.name; - if (!name_22 || name_22.kind !== 136) { - scopeName = "." + scopeName; - } - scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; - } - scopeNameIndex = ts.getProperty(sourceMapNameIndexMap, scopeName); - if (scopeNameIndex === undefined) { - scopeNameIndex = sourceMapData.sourceMapNames.length; - sourceMapData.sourceMapNames.push(scopeName); - sourceMapNameIndexMap[scopeName] = scopeNameIndex; - } - } - recordScopeNameIndex(scopeNameIndex); - } - if (scopeName) { - recordScopeNameStart(scopeName); - } - else if (node.kind === 213 || - node.kind === 173 || - node.kind === 143 || - node.kind === 142 || - node.kind === 145 || - node.kind === 146 || - node.kind === 218 || - node.kind === 214 || - node.kind === 217) { - if (node.name) { - var name_23 = node.name; - scopeName = name_23.kind === 136 - ? ts.getTextOfNode(name_23) - : node.name.text; - } - recordScopeNameStart(scopeName); - } - else { - recordScopeNameIndex(getSourceMapNameIndex()); - } - } - function recordScopeNameEnd() { - sourceMapNameIndices.pop(); - } - ; - function writeCommentRangeWithMap(currentText, currentLineMap, writer, comment, newLine) { - recordSourceMapSpan(comment.pos); - ts.writeCommentRange(currentText, currentLineMap, writer, comment, newLine); - recordSourceMapSpan(comment.end); - } - function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings, sourcesContent) { - if (typeof JSON !== "undefined") { - var map_2 = { - version: version, - file: file, - sourceRoot: sourceRoot, - sources: sources, - names: names, - mappings: mappings - }; - if (sourcesContent !== undefined) { - map_2.sourcesContent = sourcesContent; - } - return JSON.stringify(map_2); - } - return "{\"version\":" + version + ",\"file\":\"" + ts.escapeString(file) + "\",\"sourceRoot\":\"" + ts.escapeString(sourceRoot) + "\",\"sources\":[" + serializeStringArray(sources) + "],\"names\":[" + serializeStringArray(names) + "],\"mappings\":\"" + ts.escapeString(mappings) + "\" " + (sourcesContent !== undefined ? ",\"sourcesContent\":[" + serializeStringArray(sourcesContent) + "]" : "") + "}"; - function serializeStringArray(list) { - var output = ""; - for (var i = 0, n = list.length; i < n; i++) { - if (i) { - output += ","; - } - output += "\"" + ts.escapeString(list[i]) + "\""; - } - return output; - } - } - function writeJavaScriptAndSourceMapFile(emitOutput, jsFilePath, writeByteOrderMark) { - encodeLastRecordedSourceMapSpan(); - var sourceMapText = serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings, sourceMapData.sourceMapSourcesContent); - sourceMapDataList.push(sourceMapData); - var sourceMapUrl; - if (compilerOptions.inlineSourceMap) { - var base64SourceMapText = ts.convertToBase64(sourceMapText); - sourceMapUrl = "//# sourceMappingURL=data:application/json;base64," + base64SourceMapText; - } - else { - ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, sourceMapText, false); - sourceMapUrl = "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL; - } - writeJavaScriptFile(emitOutput + sourceMapUrl, jsFilePath, writeByteOrderMark); - } - var sourceMapJsFile = ts.getBaseFileName(ts.normalizeSlashes(jsFilePath)); - sourceMapData = { - sourceMapFilePath: jsFilePath + ".map", - jsSourceMappingURL: sourceMapJsFile + ".map", - sourceMapFile: sourceMapJsFile, - sourceMapSourceRoot: compilerOptions.sourceRoot || "", - sourceMapSources: [], - inputSourceFileNames: [], - sourceMapNames: [], - sourceMapMappings: "", - sourceMapSourcesContent: undefined, - sourceMapDecodedMappings: [] - }; - sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); - if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47) { - sourceMapData.sourceMapSourceRoot += ts.directorySeparator; - } - if (compilerOptions.mapRoot) { - sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); - if (root) { - sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); - } - if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { - sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); - sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(jsFilePath)), ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), host.getCurrentDirectory(), host.getCanonicalFileName, true); - } - else { - sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); - } - } - else { - sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); - } - function emitNodeWithSourceMap(node) { - if (node) { - if (ts.nodeIsSynthesized(node)) { - return emitNodeWithoutSourceMap(node); - } - if (node.kind !== 248) { - recordEmitNodeStartSpan(node); - emitNodeWithoutSourceMap(node); - recordEmitNodeEndSpan(node); - } - else { - recordNewSourceFileStart(node); - emitNodeWithoutSourceMap(node); - } - } - } - function emitNodeWithCommentsAndWithSourcemap(node) { - emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); - } - writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithCommentsAndWithSourcemap; - emitStart = recordEmitNodeStartSpan; - emitEnd = recordEmitNodeEndSpan; - emitToken = writeTextWithSpanRecord; - scopeEmitStart = recordScopeNameOfNode; - scopeEmitEnd = recordScopeNameEnd; - writeComment = writeCommentRangeWithMap; - } - function writeJavaScriptFile(emitOutput, jsFilePath, writeByteOrderMark) { - ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); } function createTempVariable(flags) { var result = ts.createSynthesizedNode(69); @@ -26128,7 +26605,9 @@ var ts; write(";"); } } - function emitTokenText(tokenKind, startPos, emitFn) { + function emitToken(tokenKind, startPos, emitFn) { + var tokenStartPos = ts.skipTrivia(currentText, startPos); + emitPos(tokenStartPos); var tokenString = ts.tokenToString(tokenKind); if (emitFn) { emitFn(); @@ -26136,7 +26615,9 @@ var ts; else { write(tokenString); } - return startPos + tokenString.length; + var tokenEndPos = tokenStartPos + tokenString.length; + emitPos(tokenEndPos); + return tokenEndPos; } function emitOptional(prefix, node) { if (node) { @@ -26153,11 +26634,6 @@ var ts; write(")"); } } - function emitTrailingCommaIfPresent(nodeList) { - if (nodeList.hasTrailingComma) { - write(","); - } - } function emitLinePreservingList(parent, nodes, allowTrailingComma, spacesBetweenBraces) { ts.Debug.assert(nodes.length > 0); increaseIndent(); @@ -26323,10 +26799,10 @@ var ts; emitParenthesizedIf(node.tag, needsParenthesisForPropertyAccessOrInvocation(node.tag)); write("("); emit(tempVariable); - if (node.template.kind === 183) { + if (node.template.kind === 185) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 181 + var needsParens = templateSpan.expression.kind === 183 && templateSpan.expression.operatorToken.kind === 24; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -26350,7 +26826,7 @@ var ts; } for (var i = 0, n = node.templateSpans.length; i < n; i++) { var templateSpan = node.templateSpans[i]; - var needsParens = templateSpan.expression.kind !== 172 + var needsParens = templateSpan.expression.kind !== 174 && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1; if (i > 0 || headEmitted) { write(" + "); @@ -26370,11 +26846,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 168: - case 169: - return parent.expression === template; case 170: + case 171: + return parent.expression === template; case 172: + case 174: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1; @@ -26382,7 +26858,7 @@ var ts; } function comparePrecedenceToBinaryPlus(expression) { switch (expression.kind) { - case 181: + case 183: switch (expression.operatorToken.kind) { case 37: case 39: @@ -26394,8 +26870,8 @@ var ts; default: return -1; } + case 186: case 184: - case 182: return -1; default: return 1; @@ -26418,13 +26894,13 @@ var ts; } } function emitAttributeName(name) { - if (/[A-Za-z_]+[\w*]/.test(name.text)) { - write("\""); + if (/^[A-Za-z_]\w*$/.test(name.text)) { emit(name); - write("\""); } else { + write("\""); emit(name); + write("\""); } } function emitJsxAttribute(node) { @@ -26439,7 +26915,7 @@ var ts; } function emitJsxElement(openingNode, children) { var syntheticReactRef = ts.createSynthesizedNode(69); - syntheticReactRef.text = "React"; + syntheticReactRef.text = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; syntheticReactRef.parent = openingNode; emitLeadingComments(openingNode); emitExpressionIdentifier(syntheticReactRef); @@ -26451,12 +26927,12 @@ var ts; } else { var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 239; })) { + if (ts.forEach(attrs, function (attr) { return attr.kind === 241; })) { emitExpressionIdentifier(syntheticReactRef); write(".__spread("); var haveOpenedObjectLiteral = false; for (var i_1 = 0; i_1 < attrs.length; i_1++) { - if (attrs[i_1].kind === 239) { + if (attrs[i_1].kind === 241) { if (i_1 === 0) { write("{}, "); } @@ -26470,7 +26946,7 @@ var ts; emit(attrs[i_1].expression); } else { - ts.Debug.assert(attrs[i_1].kind === 238); + ts.Debug.assert(attrs[i_1].kind === 240); if (haveOpenedObjectLiteral) { write(", "); } @@ -26501,10 +26977,10 @@ var ts; } if (children) { for (var i = 0; i < children.length; i++) { - if (children[i].kind === 240 && !(children[i].expression)) { + if (children[i].kind === 242 && !(children[i].expression)) { continue; } - if (children[i].kind === 236) { + if (children[i].kind === 238) { var text = getTextToEmit(children[i]); if (text !== undefined) { write(", \""); @@ -26521,11 +26997,11 @@ var ts; write(")"); emitTrailingComments(openingNode); } - if (node.kind === 233) { + if (node.kind === 235) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 234); + ts.Debug.assert(node.kind === 236); emitJsxElement(node); } } @@ -26547,11 +27023,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 239) { + if (attribs[i].kind === 241) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 238); + ts.Debug.assert(attribs[i].kind === 240); emitJsxAttribute(attribs[i]); } } @@ -26559,11 +27035,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 234)) { + if (node.attributes.length > 0 || (node.kind === 236)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 234) { + if (node.kind === 236) { write("/>"); } else { @@ -26582,16 +27058,16 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 233) { + if (node.kind === 235) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 234); + ts.Debug.assert(node.kind === 236); emitJsxOpeningOrSelfClosingElement(node); } } function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 163); + ts.Debug.assert(node.kind !== 165); if (node.kind === 9) { emitLiteral(node); } @@ -26626,59 +27102,60 @@ var ts; function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 164: - case 189: - case 181: - case 168: - case 241: - case 136: - case 182: - case 139: - case 175: - case 197: - case 167: - case 227: - case 195: - case 188: - case 199: - case 200: - case 201: - case 196: - case 234: - case 235: - case 239: - case 240: - case 169: - case 172: - case 180: - case 179: - case 204: - case 246: - case 185: - case 206: - case 170: - case 190: - case 208: - case 171: - case 176: - case 177: - case 198: - case 205: - case 184: - return true; - case 163: - case 247: - case 138: - case 245: - case 141: - case 211: - return parent.initializer === node; case 166: - return parent.expression === node; + case 191: + case 183: + case 170: + case 243: + case 136: + case 184: + case 139: + case 177: + case 199: + case 169: + case 229: + case 197: + case 190: + case 201: + case 202: + case 203: + case 198: + case 239: + case 236: + case 237: + case 241: + case 242: + case 171: case 174: + case 182: + case 181: + case 206: + case 248: + case 187: + case 208: + case 172: + case 192: + case 210: case 173: + case 178: + case 179: + case 200: + case 207: + case 186: + return true; + case 165: + case 249: + case 138: + case 247: + case 141: + case 213: + return parent.initializer === node; + case 168: + return parent.expression === node; + case 176: + case 175: return parent.body === node; - case 221: + case 223: return parent.moduleReference === node; case 135: return parent.left === node; @@ -26692,7 +27169,7 @@ var ts; } var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 248) { + if (container.kind === 250) { if (modulekind !== 5 && modulekind !== 4) { write("exports."); } @@ -26706,15 +27183,15 @@ var ts; if (modulekind !== 5) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 223) { + if (declaration.kind === 225) { write(getGeneratedNameForNode(declaration.parent)); write(languageVersion === 0 ? "[\"default\"]" : ".default"); return; } - else if (declaration.kind === 226) { + else if (declaration.kind === 228) { write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_24 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_24); + var name_21 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_21); if (languageVersion === 0 && identifier === "default") { write("[\"default\"]"); } @@ -26745,10 +27222,10 @@ var ts; if (languageVersion < 2) { var parent_6 = node.parent; switch (parent_6.kind) { - case 163: - case 214: - case 217: - case 211: + case 165: + case 216: + case 219: + case 213: return parent_6.name === node && resolver.isNestedRedeclaration(parent_6); } } @@ -26757,8 +27234,8 @@ var ts; function emitIdentifier(node) { if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { - var name_25 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_25); + var name_22 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_22); return; } } @@ -26782,6 +27259,9 @@ var ts; if (resolver.getNodeCheckFlags(node) & 2) { write("_this"); } + else if (convertedLoopState) { + write(convertedLoopState.thisName || (convertedLoopState.thisName = makeUniqueName("this"))); + } else { write("this"); } @@ -26855,10 +27335,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 181 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 183 && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 182 && node.parent.condition === node) { + else if (node.parent.kind === 184 && node.parent.condition === node) { return true; } return false; @@ -26866,11 +27346,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69: - case 164: case 166: - case 167: case 168: - case 172: + case 169: + case 170: + case 174: return false; } return true; @@ -26887,17 +27367,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 185) { + if (e.kind === 187) { e = e.expression; emitParenthesizedIf(e, group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 164) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 166) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 185) { + while (i < length && elements[i].kind !== 187) { i++; } write("["); @@ -26920,7 +27400,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 185; + return node.kind === 187; } function emitArrayLiteral(node) { var elements = node.elements; @@ -27032,10 +27512,10 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 245) { + if (property.kind === 247) { emit(property.initializer); } - else if (property.kind === 246) { + else if (property.kind === 248) { emitExpressionIdentifier(property.name); } else if (property.kind === 143) { @@ -27084,35 +27564,35 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(181, startsOnNewLine); + var result = ts.createSynthesizedNode(183, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(166); + var result = ts.createSynthesizedNode(168); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(167); + var result = ts.createSynthesizedNode(169); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; } function parenthesizeForAccess(expr) { - while (expr.kind === 171 || expr.kind === 189) { + while (expr.kind === 173 || expr.kind === 191) { expr = expr.expression; } if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 169 && + expr.kind !== 171 && expr.kind !== 8) { return expr; } - var node = ts.createSynthesizedNode(172); + var node = ts.createSynthesizedNode(174); node.expression = expr; return node; } @@ -27139,7 +27619,7 @@ var ts; } function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 248; + return container && container.kind !== 250; } function emitShorthandPropertyAssignment(node) { writeTextOfNode(currentText, node.name); @@ -27157,7 +27637,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 166 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 168 ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -27168,7 +27648,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 166 || node.kind === 167 + return node.kind === 168 || node.kind === 169 ? resolver.getConstantValue(node) : undefined; } @@ -27251,6 +27731,9 @@ var ts; case 135: emitQualifiedNameAsExpression(node, useFallback); break; + default: + emitNodeWithoutSourceMap(node); + break; } } function emitIndexedAccess(node) { @@ -27263,10 +27746,10 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 185; }); + return ts.forEach(elements, function (e) { return e.kind === 187; }); } function skipParentheses(node) { - while (node.kind === 172 || node.kind === 171 || node.kind === 189) { + while (node.kind === 174 || node.kind === 173 || node.kind === 191) { node = node.expression; } return node; @@ -27287,12 +27770,12 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 166) { + if (expr.kind === 168) { target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 167) { + else if (expr.kind === 169) { target = emitCallTarget(expr.expression); write("["); emit(expr.argumentExpression); @@ -27333,7 +27816,7 @@ var ts; } else { emit(node.expression); - superCall = node.expression.kind === 166 && node.expression.expression.kind === 95; + superCall = node.expression.kind === 168 && node.expression.expression.kind === 95; } if (superCall && languageVersion < 2) { write(".call("); @@ -27384,21 +27867,21 @@ var ts; } } function emitParenExpression(node) { - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 174) { - if (node.expression.kind === 171 || node.expression.kind === 189) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 176) { + if (node.expression.kind === 173 || node.expression.kind === 191) { var operand = node.expression.expression; - while (operand.kind === 171 || operand.kind === 189) { + while (operand.kind === 173 || operand.kind === 191) { operand = operand.expression; } - if (operand.kind !== 179 && + if (operand.kind !== 181 && + operand.kind !== 179 && + operand.kind !== 178 && operand.kind !== 177 && - operand.kind !== 176 && - operand.kind !== 175 && - operand.kind !== 180 && - operand.kind !== 169 && - !(operand.kind === 168 && node.parent.kind === 169) && - !(operand.kind === 173 && node.parent.kind === 168) && - !(operand.kind === 8 && node.parent.kind === 166)) { + operand.kind !== 182 && + operand.kind !== 171 && + !(operand.kind === 170 && node.parent.kind === 171) && + !(operand.kind === 175 && node.parent.kind === 170) && + !(operand.kind === 8 && node.parent.kind === 168)) { emit(operand); return; } @@ -27427,21 +27910,22 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 211 || node.parent.kind === 163); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 213 || node.parent.kind === 165); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); return isSourceFileLevelDeclarationInSystemJsModule(targetDeclaration, true); } function emitPrefixUnaryExpression(node) { - var exportChanged = isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); + var exportChanged = (node.operator === 41 || node.operator === 42) && + isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); if (exportChanged) { write(exportFunctionForFile + "(\""); emitNodeWithoutSourceMap(node.operand); write("\", "); } write(ts.tokenToString(node.operator)); - if (node.operand.kind === 179) { + if (node.operand.kind === 181) { var operand = node.operand; if (node.operator === 35 && (operand.operator === 35 || operand.operator === 41)) { write(" "); @@ -27484,10 +27968,10 @@ var ts; } var current = node; while (current) { - if (current.kind === 248) { + if (current.kind === 250) { return !isExported || ((ts.getCombinedNodeFlags(node) & 2) !== 0); } - else if (ts.isFunctionLike(current) || current.kind === 219) { + else if (ts.isFunctionLike(current) || current.kind === 221) { return false; } else { @@ -27503,7 +27987,7 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(167, false); + synthesizedLHS = ts.createSynthesizedNode(169, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 && @@ -27520,7 +28004,7 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(166, false); + synthesizedLHS = ts.createSynthesizedNode(168, false); var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, false, false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; @@ -27548,8 +28032,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 && node.operatorToken.kind === 56 && - (node.left.kind === 165 || node.left.kind === 164)) { - emitDestructuring(node, node.parent.kind === 195); + (node.left.kind === 167 || node.left.kind === 166)) { + emitDestructuring(node, node.parent.kind === 197); } else { var exportChanged = node.operatorToken.kind >= 56 && @@ -27601,7 +28085,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 192) { + if (node && node.kind === 194) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -27615,22 +28099,20 @@ var ts; } emitToken(15, node.pos); increaseIndent(); - scopeEmitStart(node.parent); - if (node.kind === 219) { - ts.Debug.assert(node.parent.kind === 218); + if (node.kind === 221) { + ts.Debug.assert(node.parent.kind === 220); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 219) { + if (node.kind === 221) { emitTempDeclarations(true); } decreaseIndent(); writeLine(); emitToken(16, node.statements.end); - scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 192) { + if (node.kind === 194) { write(" "); emit(node); } @@ -27642,7 +28124,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, node.expression.kind === 174); + emitParenthesizedIf(node.expression, node.expression.kind === 176); write(";"); } function emitIfStatement(node) { @@ -27655,7 +28137,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80, node.thenStatement.end); - if (node.elseStatement.kind === 196) { + if (node.elseStatement.kind === 198) { write(" "); emit(node.elseStatement); } @@ -27675,7 +28157,7 @@ var ts; else { emitNormalLoopBody(node, true); } - if (node.statement.kind === 192) { + if (node.statement.kind === 194) { write(" "); } else { @@ -27766,7 +28248,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 207) { + if (node.parent.kind === 209) { emitLabelAndColon(node.parent); } loopEmitter(node, loop); @@ -27776,10 +28258,10 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 199: - case 200: case 201: - if (node.initializer.kind === 212) { + case 202: + case 203: + if (node.initializer.kind === 214) { loopInitializer = node.initializer; } break; @@ -27792,7 +28274,7 @@ var ts; collectNames(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 192; + var bodyIsBlock = node.statement.kind === 194; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -27807,6 +28289,9 @@ var ts; if (convertedOuterLoopState.argumentsName) { convertedLoopState.argumentsName = convertedOuterLoopState.argumentsName; } + if (convertedOuterLoopState.thisName) { + convertedLoopState.thisName = convertedOuterLoopState.thisName; + } if (convertedOuterLoopState.hoistedLocalVariables) { convertedLoopState.hoistedLocalVariables = convertedOuterLoopState.hoistedLocalVariables; } @@ -27828,6 +28313,15 @@ var ts; writeLine(); } } + if (convertedLoopState.thisName) { + if (convertedOuterLoopState) { + convertedOuterLoopState.thisName = convertedLoopState.thisName; + } + else { + write("var " + convertedLoopState.thisName + " = this;"); + writeLine(); + } + } if (convertedLoopState.hoistedLocalVariables) { if (convertedOuterLoopState) { convertedOuterLoopState.hoistedLocalVariables = convertedLoopState.hoistedLocalVariables; @@ -27877,7 +28371,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 192) { + else if (node.statement.kind === 194) { emitLines(node.statement.statements); } else { @@ -27973,7 +28467,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer && node.initializer.kind === 212) { + if (node.initializer && node.initializer.kind === 214) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); if (startIsEmitted) { @@ -27999,7 +28493,7 @@ var ts; } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 && node.kind === 201) { + if (languageVersion < 2 && node.kind === 203) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -28010,7 +28504,7 @@ var ts; var endPos = emitToken(86, node.pos); write(" "); endPos = emitToken(17, endPos); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); @@ -28020,7 +28514,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 200) { + if (node.kind === 202) { write(" in "); } else { @@ -28035,9 +28529,6 @@ var ts; emitNormalLoopBody(node, true); } } - function emitDownLevelForOfStatement(node) { - emitLoop(node, emitDownLevelForOfStatementWorker); - } function emitDownLevelForOfStatementWorker(node, loop) { var endPos = emitToken(86, node.pos); write(" "); @@ -28076,7 +28567,7 @@ var ts; increaseIndent(); var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 212) { + if (node.initializer.kind === 214) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -28098,7 +28589,7 @@ var ts; } else { var assignmentExpression = createBinaryExpression(node.initializer, 56, rhsIterationValue, false); - if (node.initializer.kind === 164 || node.initializer.kind === 165) { + if (node.initializer.kind === 166 || node.initializer.kind === 167) { emitDestructuring(assignmentExpression, true, undefined); } else { @@ -28120,12 +28611,12 @@ var ts; } function emitBreakOrContinueStatement(node) { if (convertedLoopState) { - var jump = node.kind === 203 ? 2 : 4; + var jump = node.kind === 205 ? 2 : 4; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { if (!node.label) { - if (node.kind === 203) { + if (node.kind === 205) { convertedLoopState.nonLocalJumps |= 2; write("return \"break\";"); } @@ -28136,7 +28627,7 @@ var ts; } else { var labelMarker; - if (node.kind === 203) { + if (node.kind === 205) { labelMarker = "break-" + node.label.text; setLabeledJump(convertedLoopState, true, node.label.text, labelMarker); } @@ -28149,7 +28640,7 @@ var ts; return; } } - emitToken(node.kind === 203 ? 70 : 75, node.pos); + emitToken(node.kind === 205 ? 70 : 75, node.pos); emitOptional(" ", node.label); write(";"); } @@ -28214,7 +28705,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 241) { + if (node.kind === 243) { write("case "); emit(node.expression); write(":"); @@ -28283,7 +28774,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 218); + } while (node && node.kind !== 220); return node; } function emitContainingModuleName(node) { @@ -28308,20 +28799,20 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8); zero.text = "0"; - var result = ts.createSynthesizedNode(177); + var result = ts.createSynthesizedNode(179); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 248) { - ts.Debug.assert(!!(node.flags & 512) || node.kind === 227); + if (node.parent.kind === 250) { + ts.Debug.assert(!!(node.flags & 512) || node.kind === 229); if (modulekind === 1 || modulekind === 2 || modulekind === 3) { if (!isEs6Module) { - if (languageVersion === 1) { + if (languageVersion !== 0) { write("Object.defineProperty(exports, \"__esModule\", { value: true });"); writeLine(); } - else if (languageVersion === 0) { + else { write("exports.__esModule = true;"); writeLine(); } @@ -28409,7 +28900,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 211 || name.parent.kind === 163); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 213 || name.parent.kind === 165); if (isVariableDeclarationOrBindingElement) { emitModuleMemberName(name.parent); } @@ -28433,7 +28924,7 @@ var ts; function emitDestructuring(root, isAssignmentExpressionStatement, value) { var emitCount = 0; var canDefineTempVariablesInPlace = false; - if (root.kind === 211) { + if (root.kind === 213) { var isExported = ts.getCombinedNodeFlags(root) & 2; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; @@ -28441,7 +28932,7 @@ var ts; else if (root.kind === 138) { canDefineTempVariablesInPlace = true; } - if (root.kind === 181) { + if (root.kind === 183) { emitAssignmentExpression(root); } else { @@ -28458,14 +28949,14 @@ var ts; } function createDefaultValueCheck(value, defaultValue) { value = ensureIdentifier(value, true); - var equals = ts.createSynthesizedNode(181); + var equals = ts.createSynthesizedNode(183); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(182); + var cond = ts.createSynthesizedNode(184); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53); cond.whenTrue = whenTrue; @@ -28493,7 +28984,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(168); + var call = ts.createSynthesizedNode(170); var sliceIdentifier = ts.createSynthesizedNode(69); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -28508,9 +28999,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 245 || p.kind === 246) { + if (p.kind === 247 || p.kind === 248) { var propName = p.name; - var target_1 = p.kind === 246 ? p : p.initializer || propName; + var target_1 = p.kind === 248 ? p : p.initializer || propName; emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName)); } } @@ -28522,8 +29013,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187) { - if (e.kind !== 185) { + if (e.kind !== 189) { + if (e.kind !== 187) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i))); } else if (i === elements.length - 1) { @@ -28533,20 +29024,20 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 246) { + if (target.kind === 248) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer); } target = target.name; } - else if (target.kind === 181 && target.operatorToken.kind === 56) { + else if (target.kind === 183 && target.operatorToken.kind === 56) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 165) { + if (target.kind === 167) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 164) { + else if (target.kind === 166) { emitArrayLiteralAssignment(target, value); } else { @@ -28564,14 +29055,14 @@ var ts; emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 172) { + if (root.parent.kind !== 174) { write("("); } value = ensureIdentifier(value, true); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 172) { + if (root.parent.kind !== 174) { write(")"); } } @@ -28592,11 +29083,11 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 161) { + if (pattern.kind === 163) { var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 187) { + else if (element.kind !== 189) { if (!element.dotDotDotToken) { emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); } @@ -28628,8 +29119,8 @@ var ts; var isLetDefinedInLoop = (resolver.getNodeCheckFlags(node) & 16384) && (getCombinedFlagsForIdentifier(node.name) & 8192); if (isLetDefinedInLoop && - node.parent.parent.kind !== 200 && - node.parent.parent.kind !== 201) { + node.parent.parent.kind !== 202 && + node.parent.parent.kind !== 203) { initializer = createVoidZero(); } } @@ -28647,7 +29138,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 187) { + if (node.kind === 189) { return; } var name = node.name; @@ -28659,7 +29150,7 @@ var ts; } } function getCombinedFlagsForIdentifier(node) { - if (!node.parent || (node.parent.kind !== 211 && node.parent.kind !== 163)) { + if (!node.parent || (node.parent.kind !== 213 && node.parent.kind !== 165)) { return 0; } return ts.getCombinedNodeFlags(node.parent); @@ -28667,7 +29158,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 2) && modulekind === 5 && - node.parent.kind === 248; + node.parent.kind === 250; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -28712,12 +29203,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2) { if (ts.isBindingPattern(node.name)) { - var name_26 = createTempVariable(0); + var name_23 = createTempVariable(0); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_26); - emit(name_26); + tempParameters.push(name_23); + emit(name_23); } else { emit(node.name); @@ -28821,7 +29312,7 @@ var ts; emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 174 && languageVersion >= 2; + return node.kind === 176 && languageVersion >= 2; } function emitDeclarationName(node) { if (node.name) { @@ -28832,20 +29323,24 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 173) { + if (node.kind === 175) { return !!node.name; } - if (node.kind === 213) { - return !!node.name || languageVersion < 2; + if (node.kind === 215) { + return !!node.name || modulekind !== 5; } } function emitFunctionDeclaration(node) { if (ts.nodeIsMissing(node.body)) { return emitCommentsOnNotEmittedNode(node); } - if (node.kind !== 143 && node.kind !== 142 && - node.parent && node.parent.kind !== 245 && - node.parent.kind !== 168) { + var kind = node.kind, parent = node.parent; + if (kind !== 143 && + kind !== 142 && + parent && + parent.kind !== 247 && + parent.kind !== 170 && + parent.kind !== 166) { emitLeadingComments(node); } emitStart(node); @@ -28866,11 +29361,11 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== 5 && node.kind === 213 && node.parent === currentSourceFile && node.name) { + if (modulekind !== 5 && kind === 215 && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (node.kind !== 143 && node.kind !== 142) { + if (kind !== 143 && kind !== 142) { emitTrailingComments(node); } } @@ -28902,7 +29397,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 174; + var isArrowFunction = node.kind === 176; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 4096) !== 0; if (!isArrowFunction) { write(" {"); @@ -28912,17 +29407,16 @@ var ts; } write(" __awaiter(this"); if (hasLexicalArguments) { - write(", arguments"); + write(", arguments, "); } else { - write(", void 0"); + write(", void 0, "); } if (promiseConstructor) { - write(", "); - emitNodeWithoutSourceMap(promiseConstructor); + emitEntityNameAsExpression(promiseConstructor, false); } else { - write(", Promise"); + write("Promise"); } if (hasLexicalArguments) { write(", function* (_arguments)"); @@ -28944,7 +29438,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 192) { + if (node.body.kind === 194) { emitBlockFunctionBody(node, node.body); } else { @@ -28969,7 +29463,7 @@ var ts; emitSignatureParameters(node); } var isAsync = ts.isAsyncFunctionLike(node); - if (isAsync && languageVersion === 2) { + if (isAsync) { emitAsyncFunctionBodyForES6(node); } else { @@ -28996,14 +29490,13 @@ var ts; } write(" "); var current = body; - while (current.kind === 171) { + while (current.kind === 173) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 165); + emitParenthesizedIf(body, current.kind === 167); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); increaseIndent(); var outPos = writer.getTextPos(); emitDetachedCommentsAndUpdateCommentsInfo(node.body); @@ -29024,8 +29517,10 @@ var ts; increaseIndent(); writeLine(); emitLeadingComments(node.body); + emitStart(body); write("return "); emit(body); + emitEnd(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(true); @@ -29035,11 +29530,9 @@ var ts; emitStart(node.body); write("}"); emitEnd(node.body); - scopeEmitEnd(); } function emitBlockFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedCommentsAndUpdateCommentsInfo(body.statements); @@ -29066,14 +29559,13 @@ var ts; decreaseIndent(); } emitToken(16, body.statements.end); - scopeEmitEnd(); } function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 195) { + if (statement && statement.kind === 197) { var expr = statement.expression; - if (expr && expr.kind === 168) { + if (expr && expr.kind === 170) { var func = expr.expression; if (func && func.kind === 95) { return statement; @@ -29156,7 +29648,7 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 191) { + if (member.kind === 193) { writeLine(); write(";"); } @@ -29253,7 +29745,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 191) { + else if (member.kind === 193) { writeLine(); write(";"); } @@ -29314,7 +29806,6 @@ var ts; } var startIndex = 0; write(" {"); - scopeEmitStart(node, "constructor"); increaseIndent(); if (ctor) { startIndex = emitDirectivePrologues(ctor.body.statements, true); @@ -29362,7 +29853,6 @@ var ts; } decreaseIndent(); emitToken(16, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); emitEnd(ctor || node); if (ctor) { emitTrailingComments(ctor); @@ -29387,7 +29877,7 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 214) { + if (node.kind === 216) { if (thisNodeIsDecorated) { if (isES6ExportedDeclaration(node) && !(node.flags & 512)) { write("export "); @@ -29404,7 +29894,7 @@ var ts; } } var staticProperties = getInitializedProperties(node, true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 186; + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 188; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0); @@ -29414,7 +29904,7 @@ var ts; write(" = "); } write("class"); - if ((node.name || (node.flags & 512 && staticProperties.length > 0)) && !thisNodeIsDecorated) { + if ((node.name || (node.flags & 512 && (staticProperties.length > 0 || modulekind !== 5))) && !thisNodeIsDecorated) { write(" "); emitDeclarationName(node); } @@ -29425,14 +29915,12 @@ var ts; } write(" {"); increaseIndent(); - scopeEmitStart(node); writeLine(); emitConstructor(node, baseTypeNode); emitMemberFunctionsForES6AndHigher(node); decreaseIndent(); writeLine(); emitToken(16, node.members.end); - scopeEmitEnd(); if (thisNodeIsDecorated) { write(";"); } @@ -29454,24 +29942,34 @@ var ts; emitPropertyDeclarations(node, staticProperties); emitDecoratorsOfClass(node); } - if (!isES6ExportedDeclaration(node) && (node.flags & 2)) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emitDeclarationName(node); - emitEnd(node); - write(";"); + if (!(node.flags & 2)) { + return; } - else if (isES6ExportedDeclaration(node) && (node.flags & 512) && thisNodeIsDecorated) { - writeLine(); - write("export default "); - emitDeclarationName(node); - write(";"); + if (modulekind !== 5) { + emitExportMemberAssignment(node); + } + else { + if (node.flags & 512) { + if (thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + else if (node.parent.kind !== 250) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 214) { + if (node.kind === 216) { if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); } @@ -29495,7 +29993,6 @@ var ts; tempParameters = undefined; computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); - scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); @@ -29526,18 +30023,17 @@ var ts; decreaseIndent(); writeLine(); emitToken(16, node.members.end); - scopeEmitEnd(); emitStart(node); - write(")("); + write("("); if (baseTypeNode) { emit(baseTypeNode.expression); } - write(")"); - if (node.kind === 214) { + write("))"); + if (node.kind === 216) { write(";"); } emitEnd(node); - if (node.kind === 214) { + if (node.kind === 216) { emitExportMemberAssignment(node); } } @@ -29555,30 +30051,29 @@ var ts; function emitDecoratorsOfConstructor(node) { var decorators = node.decorators; var constructor = ts.getFirstConstructorWithBody(node); - var hasDecoratedParameters = constructor && ts.forEach(constructor.parameters, ts.nodeIsDecorated); - if (!decorators && !hasDecoratedParameters) { + var firstParameterDecorator = constructor && ts.forEach(constructor.parameters, function (parameter) { return parameter.decorators; }); + if (!decorators && !firstParameterDecorator) { return; } writeLine(); - emitStart(node); + emitStart(node.decorators || firstParameterDecorator); emitDeclarationName(node); write(" = __decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(constructor, argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(constructor, argumentsWritten > 0); + } emitSerializedTypeMetadata(node, argumentsWritten >= 0); decreaseIndent(); writeLine(); write("], "); emitDeclarationName(node); - write(");"); - emitEnd(node); + write(")"); + emitEnd(node.decorators || firstParameterDecorator); + write(";"); writeLine(); } function emitDecoratorsOfMembers(node, staticFlag) { @@ -29590,9 +30085,6 @@ var ts; if (!ts.nodeCanBeDecorated(member)) { continue; } - if (!ts.nodeOrChildIsDecorated(member)) { - continue; - } var decorators = void 0; var functionLikeMember = void 0; if (ts.isAccessor(member)) { @@ -29612,27 +30104,27 @@ var ts; functionLikeMember = member; } } + var firstParameterDecorator = functionLikeMember && ts.forEach(functionLikeMember.parameters, function (parameter) { return parameter.decorators; }); + if (!decorators && !firstParameterDecorator) { + continue; + } writeLine(); - emitStart(member); + emitStart(decorators || firstParameterDecorator); write("__decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, true, false, false, true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + } emitSerializedTypeMetadata(member, argumentsWritten > 0); decreaseIndent(); writeLine(); write("], "); - emitStart(member.name); emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); - emitEnd(member.name); if (languageVersion > 0) { if (member.kind !== 141) { write(", null"); @@ -29641,8 +30133,9 @@ var ts; write(", void 0"); } } - write(");"); - emitEnd(member); + write(")"); + emitEnd(decorators || firstParameterDecorator); + write(";"); writeLine(); } } @@ -29655,15 +30148,13 @@ var ts; if (ts.nodeIsDecorated(parameter)) { var decorators = parameter.decorators; argumentsWritten += emitList(decorators, 0, decorators.length, true, false, leadingComma, true, function (decorator) { - emitStart(decorator); write("__param(" + parameterIndex + ", "); emit(decorator.expression); write(")"); - emitEnd(decorator); }); leadingComma = true; } - ++parameterIndex; + parameterIndex++; } } return argumentsWritten; @@ -29687,7 +30178,7 @@ var ts; } function shouldEmitParamTypesMetadata(node) { switch (node.kind) { - case 214: + case 216: case 143: case 146: return true; @@ -29696,7 +30187,7 @@ var ts; } function emitSerializedTypeOfNode(node) { switch (node.kind) { - case 214: + case 216: write("Function"); return; case 141: @@ -29740,7 +30231,7 @@ var ts; write("Boolean"); return; case 130: - case 9: + case 162: write("String"); return; case 128: @@ -29757,6 +30248,7 @@ var ts; case 158: case 159: case 117: + case 161: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -29770,8 +30262,7 @@ var ts; while (ts.isDeclaration(location) || ts.isTypeNode(location)) { location = location.parent; } - var typeName = ts.cloneEntityName(node.typeName); - typeName.parent = location; + var typeName = ts.cloneEntityName(node.typeName, location); var result = resolver.getTypeReferenceSerializationKind(typeName); switch (result) { case ts.TypeReferenceSerializationKind.Unknown: @@ -29821,7 +30312,7 @@ var ts; function emitSerializedParameterTypesOfNode(node) { if (node) { var valueDeclaration; - if (node.kind === 214) { + if (node.kind === 216) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -29911,9 +30402,10 @@ var ts; return; } if (!shouldHoistDeclarationInSystemJsModule(node)) { - if (!(node.flags & 2) || isES6ExportedDeclaration(node)) { + var isES6ExportedEnum = isES6ExportedDeclaration(node); + if (!(node.flags & 2) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 219))) { emitStart(node); - if (isES6ExportedDeclaration(node)) { + if (isES6ExportedEnum) { write("export "); } write("var "); @@ -29930,12 +30422,10 @@ var ts; emitEnd(node.name); write(") {"); increaseIndent(); - scopeEmitStart(node); emitLines(node.members); decreaseIndent(); writeLine(); emitToken(16, node.members.end); - scopeEmitEnd(); write(")("); emitModuleMemberName(node); write(" || ("); @@ -29993,7 +30483,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 218) { + if (moduleDeclaration.body.kind === 220) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -30004,6 +30494,9 @@ var ts; function isModuleMergedWithES6Class(node) { return languageVersion === 2 && !!(resolver.getNodeCheckFlags(node) & 32768); } + function isFirstDeclarationOfKind(node, declarations, kind) { + return !ts.forEach(declarations, function (declaration) { return declaration.kind === kind && declaration.pos < node.pos; }); + } function emitModuleDeclaration(node) { var shouldEmit = shouldEmitModuleDeclaration(node); if (!shouldEmit) { @@ -30012,15 +30505,18 @@ var ts; var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { - emitStart(node); - if (isES6ExportedDeclaration(node)) { - write("export "); + var isES6ExportedNamespace = isES6ExportedDeclaration(node); + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 220)) { + 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); write("(function ("); @@ -30028,7 +30524,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 219) { + if (node.body.kind === 221) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -30044,7 +30540,6 @@ var ts; else { write("{"); increaseIndent(); - scopeEmitStart(node); emitCaptureThisForNodeIfNecessary(node); writeLine(); emit(node.body); @@ -30052,7 +30547,6 @@ var ts; writeLine(); var moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; emitToken(16, moduleBlock.statements.end); - scopeEmitEnd(); } write(")("); if ((node.flags & 2) && !isES6ExportedDeclaration(node)) { @@ -30101,16 +30595,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 221) { + if (node.kind === 223) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 224) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 226) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 222 && node.importClause && !!node.importClause.name; + return node.kind === 224 && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -30137,7 +30631,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 224) { + if (node.importClause.namedBindings.kind === 226) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -30163,7 +30657,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 221 && (node.flags & 2) !== 0; + var isExportedImport = node.kind === 223 && (node.flags & 2) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); if (modulekind !== 2) { emitLeadingComments(node); @@ -30175,7 +30669,7 @@ var ts; write(" = "); } else { - var isNakedImport = 222 && !node.importClause; + var isNakedImport = 224 && !node.importClause; if (!isNakedImport) { write("var "); write(getGeneratedNameForNode(node)); @@ -30282,15 +30776,17 @@ var ts; } } else { - writeLine(); - write("__export("); - if (modulekind !== 2) { - emitRequire(ts.getExternalModuleName(node)); + if (hasExportStarsToExportValues && resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + writeLine(); + write("__export("); + if (modulekind !== 2) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); } - else { - write(generatedName); - } - write(");"); } emitEnd(node); } @@ -30340,8 +30836,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 213 && - expression.kind !== 214) { + if (expression.kind !== 215 && + expression.kind !== 216) { write(";"); } emitEnd(node); @@ -30374,26 +30870,28 @@ var ts; externalImports = []; exportSpecifiers = {}; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 222: + case 224: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, true)) { externalImports.push(node); } break; - case 221: - if (node.moduleReference.kind === 232 && resolver.isReferencedAliasDeclaration(node)) { + case 223: + if (node.moduleReference.kind === 234 && resolver.isReferencedAliasDeclaration(node)) { externalImports.push(node); } break; - case 228: + case 230: if (node.moduleSpecifier) { if (!node.exportClause) { - externalImports.push(node); - hasExportStars = true; + if (resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + externalImports.push(node); + hasExportStarsToExportValues = true; + } } else if (resolver.isValueAliasDeclaration(node)) { externalImports.push(node); @@ -30402,12 +30900,12 @@ var ts; else { for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_27 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_27] || (exportSpecifiers[name_27] = [])).push(specifier); + var name_24 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_24] || (exportSpecifiers[name_24] = [])).push(specifier); } } break; - case 227: + case 229: if (node.isExportEquals && !exportEquals) { exportEquals = node; } @@ -30416,7 +30914,7 @@ var ts; } } function emitExportStarHelper() { - if (hasExportStars) { + if (hasExportStarsToExportValues) { writeLine(); write("function __export(m) {"); increaseIndent(); @@ -30432,14 +30930,20 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 222 && node.importClause) { + if (node.kind === 224 && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 228 && node.moduleSpecifier) { + if (node.kind === 230 && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } - function getExternalModuleNameText(importNode) { + function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { + if (emitRelativePathAsModuleName) { + var name_25 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_25) { + return "\"" + name_25 + "\""; + } + } var moduleName = ts.getExternalModuleName(importNode); if (moduleName.kind === 9) { return tryRenameExternalModule(moduleName) || getLiteralText(moduleName); @@ -30454,8 +30958,8 @@ var ts; var started = false; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; - var skipNode = importNode.kind === 228 || - (importNode.kind === 222 && !importNode.importClause); + var skipNode = importNode.kind === 230 || + (importNode.kind === 224 && !importNode.importClause); if (skipNode) { continue; } @@ -30473,14 +30977,14 @@ var ts; } } function emitLocalStorageForExportedNamesIfNecessary(exportedDeclarations) { - if (!hasExportStars) { + if (!hasExportStarsToExportValues) { return undefined; } if (!exportedDeclarations && ts.isEmpty(exportSpecifiers)) { var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 228 && externalImport.exportClause) { + if (externalImport.kind === 230 && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -30495,7 +30999,7 @@ var ts; increaseIndent(); var started = false; if (exportedDeclarations) { - for (var i = 0; i < exportedDeclarations.length; ++i) { + for (var i = 0; i < exportedDeclarations.length; i++) { writeExportedName(exportedDeclarations[i]); } } @@ -30509,7 +31013,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 228) { + if (externalImport.kind !== 230) { continue; } var exportDecl = externalImport; @@ -30581,13 +31085,13 @@ var ts; writeLine(); write("var "); var seen = {}; - for (var i = 0; i < hoistedVars.length; ++i) { + for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_28 = local.kind === 69 + var name_26 = local.kind === 69 ? local : local.name; - if (name_28) { - var text = ts.unescapeIdentifier(name_28.text); + if (name_26) { + var text = ts.unescapeIdentifier(name_26.text); if (ts.hasProperty(seen, text)) { continue; } @@ -30598,7 +31102,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 214 || local.kind === 218 || local.kind === 217) { + if (local.kind === 216 || local.kind === 220 || local.kind === 219) { emitDeclarationName(local); } else { @@ -30632,21 +31136,21 @@ var ts; if (node.flags & 4) { return; } - if (node.kind === 213) { + if (node.kind === 215) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 214) { + if (node.kind === 216) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 217) { + if (node.kind === 219) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -30655,7 +31159,7 @@ var ts; } return; } - if (node.kind === 218) { + if (node.kind === 220) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -30664,17 +31168,17 @@ var ts; } return; } - if (node.kind === 211 || node.kind === 163) { + if (node.kind === 213 || node.kind === 165) { if (shouldHoistVariable(node, false)) { - var name_29 = node.name; - if (name_29.kind === 69) { + var name_27 = node.name; + if (name_27.kind === 69) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_29); + hoistedVars.push(name_27); } else { - ts.forEachChild(name_29, visit); + ts.forEachChild(name_27, visit); } } return; @@ -30700,7 +31204,7 @@ var ts; return false; } return (ts.getCombinedNodeFlags(node) & 24576) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 248; + ts.getEnclosingBlockScopeContainer(node).kind === 250; } function isCurrentFileSystemExternalModule() { return modulekind === 4 && isCurrentFileExternalModule; @@ -30724,7 +31228,7 @@ var ts; } function emitSetters(exportStarFunction, dependencyGroups) { write("setters:["); - for (var i = 0; i < dependencyGroups.length; ++i) { + for (var i = 0; i < dependencyGroups.length; i++) { if (i !== 0) { write(","); } @@ -30738,24 +31242,24 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 222: + case 224: if (!entry.importClause) { break; } - case 221: + case 223: ts.Debug.assert(importVariableName !== ""); writeLine(); write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 228: + case 230: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { writeLine(); write(exportFunctionForFile + "({"); writeLine(); increaseIndent(); - for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; ++i_2) { + for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; i_2++) { if (i_2 !== 0) { write(","); writeLine(); @@ -30789,13 +31293,13 @@ var ts; write("execute: function() {"); increaseIndent(); writeLine(); - for (var i = startIndex; i < node.statements.length; ++i) { + for (var i = startIndex; i < node.statements.length; i++) { var statement = node.statements[i]; switch (statement.kind) { - case 213: - case 222: + case 215: + case 224: continue; - case 228: + case 230: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -30803,7 +31307,7 @@ var ts; } } continue; - case 221: + case 223: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { continue; } @@ -30832,8 +31336,8 @@ var ts; write("["); var groupIndices = {}; var dependencyGroups = []; - for (var i = 0; i < externalImports.length; ++i) { - var text = getExternalModuleNameText(externalImports[i]); + for (var i = 0; i < externalImports.length; i++) { + var text = getExternalModuleNameText(externalImports[i], emitRelativePathAsModuleName); if (ts.hasProperty(groupIndices, text)) { var groupIndex = groupIndices[text]; dependencyGroups[groupIndex].push(externalImports[i]); @@ -30846,18 +31350,12 @@ var ts; if (i !== 0) { write(", "); } - if (emitRelativePathAsModuleName) { - var name_30 = getExternalModuleNameFromDeclaration(host, resolver, externalImports[i]); - if (name_30) { - text = "\"" + name_30 + "\""; - } - } write(text); } write("], function(" + exportFunctionForFile + ") {"); writeLine(); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, true); + var startIndex = emitDirectivePrologues(node.statements, true, true); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitSystemModuleBody(node, dependencyGroups, startIndex); @@ -30881,13 +31379,7 @@ var ts; } for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { var importNode = externalImports_4[_c]; - var externalModuleName = getExternalModuleNameText(importNode); - if (emitRelativePathAsModuleName) { - var name_31 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_31) { - externalModuleName = "\"" + name_31 + "\""; - } - } + var externalModuleName = getExternalModuleNameText(importNode, emitRelativePathAsModuleName); var importAliasName = getLocalNameForExternalImport(importNode); if (includeNonAmdDependencies && importAliasName) { aliasedModuleNames.push(externalModuleName); @@ -30935,7 +31427,7 @@ var ts; writeModuleName(node, emitRelativePathAsModuleName); emitAMDDependencies(node, true, emitRelativePathAsModuleName); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, true); + var startIndex = emitDirectivePrologues(node.statements, true, true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -30946,7 +31438,7 @@ var ts; write("});"); } function emitCommonJSModule(node) { - var startIndex = emitDirectivePrologues(node.statements, false); + var startIndex = emitDirectivePrologues(node.statements, false, true); emitEmitHelpers(node); collectExternalModuleInfo(node); emitExportStarHelper(); @@ -30965,7 +31457,7 @@ var ts; writeLines(" }\n})("); emitAMDFactoryHeader(dependencyNames); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, true); + var startIndex = emitDirectivePrologues(node.statements, true, true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -30979,7 +31471,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; var startIndex = emitDirectivePrologues(node.statements, false); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); @@ -31035,7 +31527,8 @@ var ts; if (result) { result = result.replace(/&(\w+);/g, function (s, m) { if (entities[m] !== undefined) { - return String.fromCharCode(entities[m]); + var ch = String.fromCharCode(entities[m]); + return ch === "\"" ? "\\\"" : ch; } else { return s; @@ -31087,23 +31580,40 @@ var ts; } } } - function emitDirectivePrologues(statements, startWithNewLine) { - for (var i = 0; i < statements.length; ++i) { + function isUseStrictPrologue(node) { + return !!node.expression.text.match(/use strict/); + } + function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { + if (writeUseStrict) { + if (startWithNewLine) { + writeLine(); + } + write("\"use strict\";"); + } + } + function emitDirectivePrologues(statements, startWithNewLine, ensureUseStrict) { + var foundUseStrict = false; + for (var i = 0; i < statements.length; i++) { if (ts.isPrologueDirective(statements[i])) { + if (isUseStrictPrologue(statements[i])) { + foundUseStrict = true; + } if (startWithNewLine || i > 0) { writeLine(); } emit(statements[i]); } else { + ensureUseStrictPrologue(startWithNewLine || i > 0, !foundUseStrict && ensureUseStrict); return i; } } + ensureUseStrictPrologue(startWithNewLine, !foundUseStrict && ensureUseStrict); return statements.length; } function writeLines(text) { var lines = text.split(/\r\n|\r|\n/g); - for (var i = 0; i < lines.length; ++i) { + for (var i = 0; i < lines.length; i++) { var line = lines[i]; if (line.length) { writeLine(); @@ -31139,7 +31649,7 @@ var ts; emitShebang(); emitDetachedCommentsAndUpdateCommentsInfo(node); if (ts.isExternalModule(node) || compilerOptions.isolatedModules) { - if (root || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { + if (isOwnFileEmit || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { var emitModule = moduleEmitDelegates[modulekind] || moduleEmitDelegates[1]; emitModule(node); } @@ -31152,7 +31662,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -31160,6 +31670,9 @@ var ts; } emitLeadingComments(node.endOfFileToken); } + function emit(node) { + emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); + } function emitNodeWithCommentsAndWithoutSourcemap(node) { emitNodeConsideringCommentsOption(node, emitNodeWithoutSourceMap); } @@ -31181,6 +31694,13 @@ var ts; } } } + function emitNodeWithSourceMap(node) { + if (node) { + emitStart(node); + emitNodeWithoutSourceMap(node); + emitEnd(node); + } + } function emitNodeWithoutSourceMap(node) { if (node) { emitJavaScriptWorker(node); @@ -31188,28 +31708,28 @@ var ts; } function isSpecializedCommentHandling(node) { switch (node.kind) { + case 217: case 215: - case 213: - case 222: - case 221: - case 216: - case 227: + case 224: + case 223: + case 218: + case 229: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 193: + case 195: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 218: + case 220: return shouldEmitModuleDeclaration(node); - case 217: + case 219: return shouldEmitEnumDeclaration(node); } ts.Debug.assert(!isSpecializedCommentHandling(node)); - if (node.kind !== 192 && + if (node.kind !== 194 && node.parent && - node.parent.kind === 174 && + node.parent.kind === 176 && node.parent.body === node && compilerOptions.target <= 1) { return false; @@ -31246,142 +31766,142 @@ var ts; case 13: case 14: return emitLiteral(node); - case 183: + case 185: return emitTemplateExpression(node); - case 190: + case 192: return emitTemplateSpan(node); - case 233: - case 234: - return emitJsxElement(node); + case 235: case 236: + return emitJsxElement(node); + case 238: return emitJsxText(node); - case 240: + case 242: return emitJsxExpression(node); case 135: return emitQualifiedName(node); - case 161: - return emitObjectBindingPattern(node); - case 162: - return emitArrayBindingPattern(node); case 163: - return emitBindingElement(node); + return emitObjectBindingPattern(node); case 164: - return emitArrayLiteral(node); + return emitArrayBindingPattern(node); case 165: + return emitBindingElement(node); + case 166: + return emitArrayLiteral(node); + case 167: return emitObjectLiteral(node); - case 245: + case 247: return emitPropertyAssignment(node); - case 246: + case 248: return emitShorthandPropertyAssignment(node); case 136: return emitComputedPropertyName(node); - case 166: - return emitPropertyAccess(node); - case 167: - return emitIndexedAccess(node); case 168: - return emitCallExpression(node); + return emitPropertyAccess(node); case 169: - return emitNewExpression(node); + return emitIndexedAccess(node); case 170: - return emitTaggedTemplateExpression(node); + return emitCallExpression(node); case 171: - return emit(node.expression); - case 189: - return emit(node.expression); + return emitNewExpression(node); case 172: - return emitParenExpression(node); - case 213: + return emitTaggedTemplateExpression(node); case 173: + return emit(node.expression); + case 191: + return emit(node.expression); case 174: - return emitFunctionDeclaration(node); - case 175: - return emitDeleteExpression(node); - case 176: - return emitTypeOfExpression(node); - case 177: - return emitVoidExpression(node); - case 178: - return emitAwaitExpression(node); - case 179: - return emitPrefixUnaryExpression(node); - case 180: - return emitPostfixUnaryExpression(node); - case 181: - return emitBinaryExpression(node); - case 182: - return emitConditionalExpression(node); - case 185: - return emitSpreadElementExpression(node); - case 184: - return emitYieldExpression(node); - case 187: - return; - case 192: - case 219: - return emitBlock(node); - case 193: - return emitVariableStatement(node); - case 194: - return write(";"); - case 195: - return emitExpressionStatement(node); - case 196: - return emitIfStatement(node); - case 197: - return emitDoStatement(node); - case 198: - return emitWhileStatement(node); - case 199: - return emitForStatement(node); - case 201: - case 200: - return emitForInOrForOfStatement(node); - case 202: - case 203: - return emitBreakOrContinueStatement(node); - case 204: - return emitReturnStatement(node); - case 205: - return emitWithStatement(node); - case 206: - return emitSwitchStatement(node); - case 241: - case 242: - return emitCaseOrDefaultClause(node); - case 207: - return emitLabeledStatement(node); - case 208: - return emitThrowStatement(node); - case 209: - return emitTryStatement(node); - case 244: - return emitCatchClause(node); - case 210: - return emitDebuggerStatement(node); - case 211: - return emitVariableDeclaration(node); - case 186: - return emitClassExpression(node); - case 214: - return emitClassDeclaration(node); + return emitParenExpression(node); case 215: - return emitInterfaceDeclaration(node); - case 217: - return emitEnumDeclaration(node); - case 247: - return emitEnumMember(node); - case 218: - return emitModuleDeclaration(node); - case 222: - return emitImportDeclaration(node); + case 175: + case 176: + return emitFunctionDeclaration(node); + case 177: + return emitDeleteExpression(node); + case 178: + return emitTypeOfExpression(node); + case 179: + return emitVoidExpression(node); + case 180: + return emitAwaitExpression(node); + case 181: + return emitPrefixUnaryExpression(node); + case 182: + return emitPostfixUnaryExpression(node); + case 183: + return emitBinaryExpression(node); + case 184: + return emitConditionalExpression(node); + case 187: + return emitSpreadElementExpression(node); + case 186: + return emitYieldExpression(node); + case 189: + return; + case 194: case 221: + return emitBlock(node); + case 195: + return emitVariableStatement(node); + case 196: + return write(";"); + case 197: + return emitExpressionStatement(node); + case 198: + return emitIfStatement(node); + case 199: + return emitDoStatement(node); + case 200: + return emitWhileStatement(node); + case 201: + return emitForStatement(node); + case 203: + case 202: + return emitForInOrForOfStatement(node); + case 204: + case 205: + return emitBreakOrContinueStatement(node); + case 206: + return emitReturnStatement(node); + case 207: + return emitWithStatement(node); + case 208: + return emitSwitchStatement(node); + case 243: + case 244: + return emitCaseOrDefaultClause(node); + case 209: + return emitLabeledStatement(node); + case 210: + return emitThrowStatement(node); + case 211: + return emitTryStatement(node); + case 246: + return emitCatchClause(node); + case 212: + return emitDebuggerStatement(node); + case 213: + return emitVariableDeclaration(node); + case 188: + return emitClassExpression(node); + case 216: + return emitClassDeclaration(node); + case 217: + return emitInterfaceDeclaration(node); + case 219: + return emitEnumDeclaration(node); + case 249: + return emitEnumMember(node); + case 220: + return emitModuleDeclaration(node); + case 224: + return emitImportDeclaration(node); + case 223: return emitImportEqualsDeclaration(node); - case 228: + case 230: return emitExportDeclaration(node); - case 227: + case 229: return emitExportAssignment(node); - case 248: + case 250: return emitSourceFileNode(node); } } @@ -31411,7 +31931,7 @@ var ts; } function getLeadingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 248 || node.pos !== node.parent.pos) { + if (node.parent.kind === 250 || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { return getLeadingCommentsWithoutDetachedComments(); } @@ -31423,7 +31943,7 @@ var ts; } function getTrailingCommentsToEmit(node) { if (node.parent) { - if (node.parent.kind === 248 || node.end !== node.parent.end) { + if (node.parent.kind === 250 || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -31489,18 +32009,30 @@ var ts; } } } + function writeComment(text, lineMap, writer, comment, newLine) { + emitPos(comment.pos); + ts.writeCommentRange(text, lineMap, writer, comment, newLine); + emitPos(comment.end); + } function emitShebang() { var shebang = ts.getShebang(currentText); if (shebang) { write(shebang); + writeLine(); } } var _a, _b; } - function emitFile(jsFilePath, sourceFile) { - emitJavaScript(jsFilePath, sourceFile); - if (compilerOptions.declaration) { - ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); + function emitFile(_a, sourceFiles, isBundledEmit) { + var jsFilePath = _a.jsFilePath, sourceMapFilePath = _a.sourceMapFilePath, declarationFilePath = _a.declarationFilePath; + if (!host.isEmitBlocked(jsFilePath) && !compilerOptions.noEmit) { + emitJavaScript(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + } + else { + emitSkipped = true; + } + if (declarationFilePath) { + emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } } } @@ -31514,10 +32046,10 @@ var ts; ts.ioWriteTime = 0; var emptyArray = []; ts.version = "1.8.0"; - function findConfigFile(searchPath) { + function findConfigFile(searchPath, fileExists) { var fileName = "tsconfig.json"; while (true) { - if (ts.sys.fileExists(fileName)) { + if (fileExists(fileName)) { return fileName; } var parentPath = ts.getDirectoryPath(searchPath); @@ -31541,21 +32073,22 @@ var ts; ? compilerOptions.moduleResolution : compilerOptions.module === 1 ? 2 : 1; switch (moduleResolution) { - case 2: return nodeModuleNameResolver(moduleName, containingFile, host); + case 2: return nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host); case 1: return classicNameResolver(moduleName, containingFile, compilerOptions, host); } } ts.resolveModuleName = resolveModuleName; - function nodeModuleNameResolver(moduleName, containingFile, host) { + function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host) { var containingDirectory = ts.getDirectoryPath(containingFile); + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); if (ts.getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { var failedLookupLocations = []; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); - var resolvedFileName = loadNodeModuleFromFile(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + var resolvedFileName = loadNodeModuleFromFile(supportedExtensions, candidate, failedLookupLocations, false, host); if (resolvedFileName) { return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } - resolvedFileName = loadNodeModuleFromDirectory(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + resolvedFileName = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, false, host); return resolvedFileName ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; @@ -31565,11 +32098,15 @@ var ts; } } ts.nodeModuleNameResolver = nodeModuleNameResolver; - function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, host) { + function directoryProbablyExists(directoryName, host) { + return !host.directoryExists || host.directoryExists(directoryName); + } + ts.directoryProbablyExists = directoryProbablyExists; + function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { return ts.forEach(extensions, tryLoad); function tryLoad(ext) { var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; - if (host.fileExists(fileName)) { + if (!onlyRecordFailures && host.fileExists(fileName)) { return fileName; } else { @@ -31578,9 +32115,10 @@ var ts; } } } - function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, host) { + function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { var packageJsonPath = ts.combinePaths(candidate, "package.json"); - if (host.fileExists(packageJsonPath)) { + var directoryExists = !onlyRecordFailures && directoryProbablyExists(candidate, host); + if (directoryExists && host.fileExists(packageJsonPath)) { var jsonContent; try { var jsonText = host.readFile(packageJsonPath); @@ -31589,8 +32127,9 @@ var ts; catch (e) { jsonContent = { typings: undefined }; } - if (jsonContent.typings) { - var result = loadNodeModuleFromFile(extensions, ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)), failedLookupLocation, host); + if (typeof jsonContent.typings === "string") { + var path = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); + var result = loadNodeModuleFromFile(extensions, path, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(path), host), host); if (result) { return result; } @@ -31599,7 +32138,7 @@ var ts; else { failedLookupLocation.push(packageJsonPath); } - return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, host); + return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, !directoryExists, host); } function loadModuleFromNodeModules(moduleName, directory, host) { var failedLookupLocations = []; @@ -31608,12 +32147,13 @@ var ts; var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); + var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, host); var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); - var result = loadNodeModuleFromFile(ts.supportedExtensions, candidate, failedLookupLocations, host); + var result = loadNodeModuleFromFile(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } - result = loadNodeModuleFromDirectory(ts.supportedExtensions, candidate, failedLookupLocations, host); + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } @@ -31638,10 +32178,10 @@ var ts; var searchName; var failedLookupLocations = []; var referencedSourceFile; - var extensions = compilerOptions.allowNonTsExtensions ? ts.supportedJsExtensions : ts.supportedExtensions; + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); while (true) { searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - referencedSourceFile = ts.forEach(extensions, function (extension) { + referencedSourceFile = ts.forEach(supportedExtensions, function (extension) { if (extension === ".tsx" && !compilerOptions.jsx) { return undefined; } @@ -31736,14 +32276,15 @@ var ts; getCanonicalFileName: getCanonicalFileName, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return ts.sys.fileExists(fileName); }, - readFile: function (fileName) { return ts.sys.readFile(fileName); } + readFile: function (fileName) { return ts.sys.readFile(fileName); }, + directoryExists: function (directoryName) { return ts.sys.directoryExists(directoryName); } }; } ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program, sourceFile, cancellationToken) { var diagnostics = program.getOptionsDiagnostics(cancellationToken).concat(program.getSyntacticDiagnostics(sourceFile, cancellationToken), program.getGlobalDiagnostics(cancellationToken), program.getSemanticDiagnostics(sourceFile, cancellationToken)); if (program.getCompilerOptions().declaration) { - diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); + diagnostics = diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); } return ts.sortAndDeduplicateDiagnostics(diagnostics); } @@ -31781,8 +32322,10 @@ var ts; var noDiagnosticsTypeChecker; var classifiableNames; var skipDefaultLib = options.noLib; + var supportedExtensions = ts.getSupportedExtensions(options); var start = new Date().getTime(); host = host || createCompilerHost(options); + var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); var currentDirectory = host.getCurrentDirectory(); var resolveModuleNamesWorker = host.resolveModuleNames ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) @@ -31795,7 +32338,8 @@ var ts; (oldOptions.noResolve !== options.noResolve) || (oldOptions.target !== options.target) || (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx)) { + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs)) { oldProgram = undefined; } } @@ -31805,9 +32349,7 @@ var ts; processRootFile(host.getDefaultLibFileName(options), true); } } - verifyCompilerOptions(); oldProgram = undefined; - ts.programTime += new Date().getTime() - start; program = { getRootFileNames: function () { return rootNames; }, getSourceFile: getSourceFile, @@ -31821,7 +32363,7 @@ var ts; getTypeChecker: getTypeChecker, getClassifiableNames: getClassifiableNames, getDiagnosticsProducingTypeChecker: getDiagnosticsProducingTypeChecker, - getCommonSourceDirectory: function () { return commonSourceDirectory; }, + getCommonSourceDirectory: getCommonSourceDirectory, emit: emit, getCurrentDirectory: function () { return currentDirectory; }, getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, @@ -31830,7 +32372,23 @@ var ts; getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; + verifyCompilerOptions(); + ts.programTime += new Date().getTime() - start; return program; + function getCommonSourceDirectory() { + if (typeof commonSourceDirectory === "undefined") { + if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { + commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); + } + else { + commonSourceDirectory = computeCommonSourceDirectory(files); + } + if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { + commonSourceDirectory += ts.directorySeparator; + } + } + return commonSourceDirectory; + } function getClassifiableNames() { if (!classifiableNames) { getTypeChecker(); @@ -31876,7 +32434,7 @@ var ts; if (resolveModuleNamesWorker) { var moduleNames = ts.map(newSourceFile.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); - for (var i = 0; i < moduleNames.length; ++i) { + for (var i = 0; i < moduleNames.length; i++) { var newResolution = resolutions[i]; var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); var resolutionChanged = oldResolution @@ -31897,7 +32455,7 @@ var ts; } newSourceFiles.push(newSourceFile); } - for (var i = 0, len = newSourceFiles.length; i < len; ++i) { + for (var i = 0, len = newSourceFiles.length; i < len; i++) { filesByName.set(filePaths[i], newSourceFiles[i]); } files = newSourceFiles; @@ -31918,7 +32476,8 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }) + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + isEmitBlocked: isEmitBlocked }; } function getDiagnosticsProducingTypeChecker() { @@ -31931,9 +32490,15 @@ var ts; var _this = this; return runWithCancellationToken(function () { return emitWorker(_this, sourceFile, writeFileCallback, cancellationToken); }); } + function isEmitBlocked(emitFileName) { + return hasEmitBlockingDiagnostics.contains(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName)); + } function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { - if (options.noEmitOnError && getPreEmitDiagnostics(program, undefined, cancellationToken).length > 0) { - return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; + if (options.noEmitOnError) { + var preEmitDiagnostics = getPreEmitDiagnostics(program, undefined, cancellationToken); + if (preEmitDiagnostics.length > 0) { + return { diagnostics: preEmitDiagnostics, sourceMaps: undefined, emitSkipped: true }; + } } var emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver((options.outFile || options.out) ? undefined : sourceFile); var start = new Date().getTime(); @@ -31986,12 +32551,160 @@ var ts; var typeChecker = getDiagnosticsProducingTypeChecker(); ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; - var checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); + var checkDiagnostics = ts.isSourceFileJavaScript(sourceFile) ? + getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) : + typeChecker.getDiagnostics(sourceFile, cancellationToken); var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } + function getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) { + return runWithCancellationToken(function () { + var diagnostics = []; + walk(sourceFile); + return diagnostics; + function walk(node) { + if (!node) { + return false; + } + switch (node.kind) { + case 223: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); + return true; + case 229: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); + return true; + case 216: + var classDeclaration = node; + if (checkModifiers(classDeclaration.modifiers) || + checkTypeParameters(classDeclaration.typeParameters)) { + return true; + } + break; + case 245: + var heritageClause = node; + if (heritageClause.token === 106) { + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 217: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 220: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 218: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); + return true; + case 143: + case 142: + case 144: + case 145: + case 146: + case 175: + case 215: + case 176: + case 215: + var functionDeclaration = node; + if (checkModifiers(functionDeclaration.modifiers) || + checkTypeParameters(functionDeclaration.typeParameters) || + checkTypeAnnotation(functionDeclaration.type)) { + return true; + } + break; + case 195: + var variableStatement = node; + if (checkModifiers(variableStatement.modifiers)) { + return true; + } + break; + case 213: + var variableDeclaration = node; + if (checkTypeAnnotation(variableDeclaration.type)) { + return true; + } + break; + case 170: + case 171: + var expression = node; + if (expression.typeArguments && expression.typeArguments.length > 0) { + var start_2 = expression.typeArguments.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_2, expression.typeArguments.end - start_2, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 138: + var parameter = node; + if (parameter.modifiers) { + var start_3 = parameter.modifiers.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_3, parameter.modifiers.end - start_3, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); + return true; + } + if (parameter.questionToken) { + diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, "?")); + return true; + } + if (parameter.type) { + diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 141: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 219: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 173: + var typeAssertionExpression = node; + diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); + return true; + case 139: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); + return true; + } + return ts.forEachChild(node, walk); + } + function checkTypeParameters(typeParameters) { + if (typeParameters) { + var start_4 = typeParameters.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_4, typeParameters.end - start_4, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkTypeAnnotation(type) { + if (type) { + diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkModifiers(modifiers) { + if (modifiers) { + for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { + var modifier = modifiers_1[_i]; + switch (modifier.kind) { + case 112: + case 110: + case 111: + case 122: + diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); + return true; + case 113: + case 82: + case 74: + case 77: + case 115: + } + } + } + return false; + } + }); + } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { return runWithCancellationToken(function () { if (!ts.isDeclarationFile(sourceFile)) { @@ -32039,9 +32752,9 @@ var ts; function collect(node, allowRelativeModuleNames, collectOnlyRequireCalls) { if (!collectOnlyRequireCalls) { switch (node.kind) { - case 222: - case 221: - case 228: + case 224: + case 223: + case 230: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9) { break; @@ -32053,7 +32766,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 218: + case 220: if (node.name.kind === 9 && (node.flags & 4 || ts.isDeclarationFile(file))) { ts.forEachChild(node.body, function (node) { collect(node, false, collectOnlyRequireCalls); @@ -32076,9 +32789,9 @@ var ts; var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { - if (!options.allowNonTsExtensions && !ts.forEach(ts.supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { + if (!options.allowNonTsExtensions && !ts.forEach(supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; - diagnosticArgument = [fileName, "'" + ts.supportedExtensions.join("', '") + "'"]; + diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; @@ -32096,7 +32809,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(ts.supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -32120,10 +32833,10 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, existingFileName)); } } - function findSourceFile(fileName, normalizedAbsolutePath, isDefaultLib, refFile, refPos, refEnd) { - if (filesByName.contains(normalizedAbsolutePath)) { - var file_1 = filesByName.get(normalizedAbsolutePath); - if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== normalizedAbsolutePath) { + function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + if (filesByName.contains(path)) { + var file_1 = filesByName.get(path); + if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== ts.getNormalizedAbsolutePath(fileName, currentDirectory)) { reportFileNamesDifferOnlyInCasingError(fileName, file_1.fileName, refFile, refPos, refEnd); } return file_1; @@ -32136,16 +32849,16 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); - filesByName.set(normalizedAbsolutePath, file); + filesByName.set(path, file); if (file) { - file.path = normalizedAbsolutePath; + file.path = path; if (host.useCaseSensitiveFileNames()) { - var existingFile = filesByNameIgnoreCase.get(normalizedAbsolutePath); + var existingFile = filesByNameIgnoreCase.get(path); if (existingFile) { reportFileNamesDifferOnlyInCasingError(fileName, existingFile.fileName, refFile, refPos, refEnd); } else { - filesByNameIgnoreCase.set(normalizedAbsolutePath, file); + filesByNameIgnoreCase.set(path, file); } } skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; @@ -32178,15 +32891,15 @@ var ts; file.resolvedModules = {}; var moduleNames = ts.map(file.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(file.fileName, currentDirectory)); - for (var i = 0; i < file.imports.length; ++i) { + for (var i = 0; i < file.imports.length; i++) { var resolution = resolutions[i]; ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { if (!ts.isExternalModule(importedFile)) { - var start_2 = ts.getTokenPosOfNode(file.imports[i], file); - fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + var start_5 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_5, file.imports[i].end - start_5, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); } else if (importedFile.referencedFiles.length) { var firstRef = importedFile.referencedFiles[0]; @@ -32203,7 +32916,7 @@ var ts; } function computeCommonSourceDirectory(sourceFiles) { var commonPathComponents; - ts.forEach(files, function (sourceFile) { + var failed = ts.forEach(files, function (sourceFile) { if (ts.isDeclarationFile(sourceFile)) { return; } @@ -32214,10 +32927,9 @@ var ts; return; } for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (commonPathComponents[i] !== sourcePathComponents[i]) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { if (i === 0) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); - return; + return true; } commonPathComponents.length = i; break; @@ -32227,6 +32939,9 @@ var ts; commonPathComponents.length = sourcePathComponents.length; } }); + if (failed) { + return ""; + } if (!commonPathComponents) { return currentDirectory; } @@ -32236,8 +32951,8 @@ var ts; var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { - var sourceFile = sourceFiles_1[_i]; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var sourceFile = sourceFiles_2[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -32271,14 +32986,14 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } - if (options.sourceRoot) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); - } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } + if (options.sourceRoot) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSources")); + } } if (options.out && options.outFile) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); @@ -32287,10 +33002,9 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } - if (options.sourceRoot) { + if (options.sourceRoot && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } - return; } var languageVersion = options.target || 0; var outFile = options.outFile || options.out; @@ -32307,7 +33021,7 @@ var ts; } else if (firstExternalModuleSourceFile && languageVersion < 2 && !options.module) { var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file)); } if (options.module === 5 && languageVersion < 2) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_compile_modules_into_es2015_when_targeting_ES5_or_lower)); @@ -32318,14 +33032,9 @@ var ts; if (options.outDir || options.sourceRoot || options.mapRoot) { - if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { - commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); - } - else { - commonSourceDirectory = computeCommonSourceDirectory(files); - } - if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { - commonSourceDirectory += ts.directorySeparator; + var dir = getCommonSourceDirectory(); + if (options.outDir && dir === "" && ts.forEach(files, function (file) { return ts.getRootLength(file.fileName) > 1; })) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } if (options.noEmit) { @@ -32342,10 +33051,42 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } + else if (options.allowJs && options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); + } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } + if (options.reactNamespace && !ts.isIdentifier(options.reactNamespace, languageVersion)) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier, options.reactNamespace)); + } + if (!options.noEmit) { + var emitHost = getEmitHost(); + var emitFilesSeen = ts.createFileMap(!host.useCaseSensitiveFileNames() ? function (key) { return key.toLocaleLowerCase(); } : undefined); + ts.forEachExpectedEmitFile(emitHost, function (emitFileNames, sourceFiles, isBundledEmit) { + verifyEmitFilePath(emitFileNames.jsFilePath, emitFilesSeen); + verifyEmitFilePath(emitFileNames.declarationFilePath, emitFilesSeen); + }); + } + function verifyEmitFilePath(emitFileName, emitFilesSeen) { + if (emitFileName) { + var emitFilePath = ts.toPath(emitFileName, currentDirectory, getCanonicalFileName); + if (filesByName.contains(emitFilePath)) { + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file); + } + if (emitFilesSeen.contains(emitFilePath)) { + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files); + } + else { + emitFilesSeen.set(emitFilePath, true); + } + } + } + } + function createEmitBlockingDiagnostics(emitFileName, emitFilePath, message) { + hasEmitBlockingDiagnostics.set(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName), true); + programDiagnostics.add(ts.createCompilerDiagnostic(message, emitFileName)); } } ts.createProgram = createProgram; @@ -32360,7 +33101,7 @@ var ts; } var tokenAtLocation = ts.getTokenAtPosition(sourceFile, position); var lineOfPosition = sourceFile.getLineAndCharacterOfPosition(position).line; - if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart()).line > lineOfPosition) { + if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart(sourceFile)).line > lineOfPosition) { tokenAtLocation = ts.findPrecedingToken(tokenAtLocation.pos, sourceFile); if (!tokenAtLocation || sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getEnd()).line !== lineOfPosition) { return undefined; @@ -32371,14 +33112,20 @@ var ts; } return spanInNode(tokenAtLocation); function textSpan(startNode, endNode) { - return ts.createTextSpanFromBounds(startNode.getStart(), (endNode || startNode).getEnd()); + var start = startNode.decorators ? + ts.skipTrivia(sourceFile.text, startNode.decorators.end) : + startNode.getStart(sourceFile); + return ts.createTextSpanFromBounds(start, (endNode || startNode).getEnd()); } function spanInNodeIfStartsOnSameLine(node, otherwiseOnNode) { - if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart()).line) { + if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line) { return spanInNode(node); } return spanInNode(otherwiseOnNode); } + function spanInNodeArray(nodeArray) { + return ts.createTextSpanFromBounds(ts.skipTrivia(sourceFile.text, nodeArray.pos), nodeArray.end); + } function spanInPreviousNode(node) { return spanInNode(ts.findPrecedingToken(node.pos, sourceFile)); } @@ -32388,98 +33135,103 @@ var ts; function spanInNode(node) { if (node) { if (ts.isExpression(node)) { - if (node.parent.kind === 197) { + if (node.parent.kind === 199) { return spanInPreviousNode(node); } - if (node.parent.kind === 199) { + if (node.parent.kind === 139) { + return spanInNode(node.parent); + } + if (node.parent.kind === 201) { return textSpan(node); } - if (node.parent.kind === 181 && node.parent.operatorToken.kind === 24) { + if (node.parent.kind === 183 && node.parent.operatorToken.kind === 24) { return textSpan(node); } - if (node.parent.kind === 174 && node.parent.body === node) { + if (node.parent.kind === 176 && node.parent.body === node) { return textSpan(node); } } switch (node.kind) { - case 193: + case 195: return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 211: + case 213: case 141: case 140: return spanInVariableDeclaration(node); case 138: return spanInParameterDeclaration(node); - case 213: + case 215: case 143: case 142: case 145: case 146: case 144: - case 173: - case 174: + case 175: + case 176: return spanInFunctionDeclaration(node); - case 192: + case 194: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } - case 219: + case 221: return spanInBlock(node); - case 244: + case 246: return spanInBlock(node.block); - case 195: + case 197: return textSpan(node.expression); - case 204: + case 206: return textSpan(node.getChildAt(0), node.expression); + case 200: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 199: + return spanInNode(node.statement); + case 212: + return textSpan(node.getChildAt(0)); case 198: return textSpan(node, ts.findNextToken(node.expression, node)); - case 197: - return spanInNode(node.statement); - case 210: - return textSpan(node.getChildAt(0)); - case 196: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 207: - return spanInNode(node.statement); - case 203: - case 202: - return textSpan(node.getChildAt(0), node.label); - case 199: - return spanInForStatement(node); - case 200: - case 201: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 206: - return textSpan(node, ts.findNextToken(node.expression, node)); - case 241: - case 242: - return spanInNode(node.statements[0]); case 209: - return spanInBlock(node.tryBlock); + return spanInNode(node.statement); + case 205: + case 204: + return textSpan(node.getChildAt(0), node.label); + case 201: + return spanInForStatement(node); + case 202: + case 203: + return textSpan(node, ts.findNextToken(node.expression, node)); case 208: + return textSpan(node, ts.findNextToken(node.expression, node)); + case 243: + case 244: + return spanInNode(node.statements[0]); + case 211: + return spanInBlock(node.tryBlock); + case 210: return textSpan(node, node.expression); - case 227: + case 229: return textSpan(node, node.expression); - case 221: + case 223: return textSpan(node, node.moduleReference); - case 222: + case 224: return textSpan(node, node.moduleSpecifier); - case 228: + case 230: return textSpan(node, node.moduleSpecifier); - case 218: + case 220: if (ts.getModuleInstanceState(node) !== 1) { return undefined; } - case 214: - case 217: - case 247: - case 168: - case 169: - return textSpan(node); - case 205: - return spanInNode(node.statement); - case 215: case 216: + case 219: + case 249: + case 170: + case 171: + return textSpan(node); + case 207: + return spanInNode(node.statement); + case 139: + return spanInNodeArray(node.parent.decorators); + case 217: + case 218: return undefined; case 23: case 1: @@ -32506,10 +33258,10 @@ var ts; case 85: return spanInNextNode(node); default: - if (node.parent.kind === 245 && node.parent.name === node) { + if (node.parent.kind === 247 && node.parent.name === node) { return spanInNode(node.parent.initializer); } - if (node.parent.kind === 171 && node.parent.type === node) { + if (node.parent.kind === 173 && node.parent.type === node) { return spanInNode(node.parent.expression); } if (ts.isFunctionLike(node.parent) && node.parent.type === node) { @@ -32519,12 +33271,12 @@ var ts; } } function spanInVariableDeclaration(variableDeclaration) { - if (variableDeclaration.parent.parent.kind === 200 || - variableDeclaration.parent.parent.kind === 201) { + if (variableDeclaration.parent.parent.kind === 202 || + variableDeclaration.parent.parent.kind === 203) { return spanInNode(variableDeclaration.parent.parent); } - var isParentVariableStatement = variableDeclaration.parent.parent.kind === 193; - var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 199 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); + var isParentVariableStatement = variableDeclaration.parent.parent.kind === 195; + var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 201 && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); var declarations = isParentVariableStatement ? variableDeclaration.parent.parent.declarationList.declarations : isDeclarationOfForStatement @@ -32570,7 +33322,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 2) || - (functionDeclaration.parent.kind === 214 && functionDeclaration.kind !== 144); + (functionDeclaration.parent.kind === 216 && functionDeclaration.kind !== 144); } function spanInFunctionDeclaration(functionDeclaration) { if (!functionDeclaration.body) { @@ -32590,23 +33342,23 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 218: + case 220: if (ts.getModuleInstanceState(block.parent) !== 1) { return undefined; } - case 198: - case 196: case 200: - case 201: + case 198: + case 202: + case 203: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); - case 199: + case 201: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } return spanInNode(block.statements[0]); } function spanInForStatement(forStatement) { if (forStatement.initializer) { - if (forStatement.initializer.kind === 212) { + if (forStatement.initializer.kind === 214) { var variableDeclarationList = forStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); @@ -32625,33 +33377,33 @@ var ts; } function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 217: + case 219: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 214: + case 216: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 220: + case 222: return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } return spanInNode(node.parent); } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 219: + case 221: if (ts.getModuleInstanceState(node.parent.parent) !== 1) { return undefined; } - case 217: - case 214: + case 219: + case 216: return textSpan(node); - case 192: + case 194: if (ts.isFunctionBlock(node.parent)) { return textSpan(node); } - case 244: + case 246: return spanInNode(ts.lastOrUndefined(node.parent.statements)); - case 220: + case 222: var caseBlock = node.parent; var lastClause = ts.lastOrUndefined(caseBlock.clauses); if (lastClause) { @@ -32663,43 +33415,43 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 197) { + if (node.parent.kind === 199) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInCloseParenToken(node) { switch (node.parent.kind) { - case 173: - case 213: - case 174: + case 175: + case 215: + case 176: case 143: case 142: case 145: case 146: case 144: - case 198: - case 197: + case 200: case 199: + case 201: return spanInPreviousNode(node); default: return spanInNode(node.parent); } } function spanInColonToken(node) { - if (ts.isFunctionLike(node.parent) || node.parent.kind === 245) { + if (ts.isFunctionLike(node.parent) || node.parent.kind === 247) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 171) { + if (node.parent.kind === 173) { return spanInNode(node.parent.expression); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 197) { + if (node.parent.kind === 199) { return textSpan(node, ts.findNextToken(node.parent.expression, node.parent)); } return spanInNode(node.parent); @@ -32777,7 +33529,7 @@ var ts; } } function autoCollapse(node) { - return ts.isFunctionBlock(node) && node.parent.kind !== 174; + return ts.isFunctionBlock(node) && node.parent.kind !== 176; } var depth = 0; var maxDepth = 20; @@ -32789,23 +33541,23 @@ var ts; addOutliningForLeadingCommentsForNode(n); } switch (n.kind) { - case 192: + case 194: if (!ts.isFunctionBlock(n)) { var parent_7 = n.parent; var openBrace = ts.findChildOfKind(n, 15, sourceFile); var closeBrace = ts.findChildOfKind(n, 16, sourceFile); - if (parent_7.kind === 197 || - parent_7.kind === 200 || + if (parent_7.kind === 199 || + parent_7.kind === 202 || + parent_7.kind === 203 || parent_7.kind === 201 || - parent_7.kind === 199 || - parent_7.kind === 196 || parent_7.kind === 198 || - parent_7.kind === 205 || - parent_7.kind === 244) { + parent_7.kind === 200 || + parent_7.kind === 207 || + parent_7.kind === 246) { addOutliningSpan(parent_7, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent_7.kind === 209) { + if (parent_7.kind === 211) { var tryStatement = parent_7; if (tryStatement.tryBlock === n) { addOutliningSpan(parent_7, openBrace, closeBrace, autoCollapse(n)); @@ -32828,23 +33580,23 @@ var ts; }); break; } - case 219: { + case 221: { var openBrace = ts.findChildOfKind(n, 15, sourceFile); var closeBrace = ts.findChildOfKind(n, 16, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } - case 214: - case 215: + case 216: case 217: - case 165: - case 220: { + case 219: + case 167: + case 222: { var openBrace = ts.findChildOfKind(n, 15, sourceFile); var closeBrace = ts.findChildOfKind(n, 16, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } - case 164: + case 166: var openBracket = ts.findChildOfKind(n, 19, sourceFile); var closeBracket = ts.findChildOfKind(n, 20, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -32871,10 +33623,10 @@ var ts; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); var nameToDeclarations = sourceFile.getNamedDeclarations(); - for (var name_32 in nameToDeclarations) { - var declarations = ts.getProperty(nameToDeclarations, name_32); + for (var name_28 in nameToDeclarations) { + var declarations = ts.getProperty(nameToDeclarations, name_28); if (declarations) { - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_32); + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_28); if (!matches) { continue; } @@ -32885,14 +33637,14 @@ var ts; if (!containers) { return undefined; } - matches = patternMatcher.getMatches(containers, name_32); + matches = patternMatcher.getMatches(containers, name_28); if (!matches) { continue; } } var fileName = sourceFile.fileName; var matchKind = bestMatchKind(matches); - rawItems.push({ name: name_32, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + rawItems.push({ name: name_28, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } } @@ -32946,7 +33698,7 @@ var ts; } return true; } - if (expression.kind === 166) { + if (expression.kind === 168) { var propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); @@ -33011,7 +33763,7 @@ var ts; (function (ts) { var NavigationBar; (function (NavigationBar) { - function getNavigationBarItems(sourceFile) { + function getNavigationBarItems(sourceFile, compilerOptions) { var hasGlobalNode = false; return getItemsWorker(getTopLevelNodes(sourceFile), createTopLevelItem); function getIndent(node) { @@ -33019,14 +33771,14 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 218: + case 220: do { current = current.parent; - } while (current.kind === 218); - case 214: + } while (current.kind === 220); + case 216: + case 219: case 217: case 215: - case 213: indent++; } current = current.parent; @@ -33037,26 +33789,26 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 193: + case 195: ts.forEach(node.declarationList.declarations, visit); break; - case 161: - case 162: + case 163: + case 164: ts.forEach(node.elements, visit); break; - case 228: + case 230: if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 222: + case 224: var importClause = node.importClause; if (importClause) { if (importClause.name) { childNodes.push(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224) { + if (importClause.namedBindings.kind === 226) { childNodes.push(importClause.namedBindings); } else { @@ -33065,20 +33817,20 @@ var ts; } } break; - case 163: - case 211: + case 165: + case 213: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } - case 214: + case 216: + case 219: case 217: + case 220: case 215: - case 218: - case 213: - case 221: - case 226: - case 230: + case 223: + case 228: + case 232: childNodes.push(node); break; } @@ -33113,17 +33865,17 @@ var ts; for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) { var node = nodes_4[_i]; switch (node.kind) { - case 214: + case 216: + case 219: case 217: - case 215: topLevelNodes.push(node); break; - case 218: + case 220: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 213: + case 215: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -33134,9 +33886,9 @@ var ts; } } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 213) { - if (functionDeclaration.body && functionDeclaration.body.kind === 192) { - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 213 && !isEmpty(s.name.text); })) { + if (functionDeclaration.kind === 215) { + if (functionDeclaration.body && functionDeclaration.body.kind === 194) { + if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 215 && !isEmpty(s.name.text); })) { return true; } if (!ts.isFunctionBlock(functionDeclaration.parent)) { @@ -33206,7 +33958,7 @@ var ts; return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); case 149: return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 247: + case 249: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); case 147: return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); @@ -33215,16 +33967,16 @@ var ts; case 141: case 140: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 213: + case 215: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 211: - case 163: + case 213: + case 165: var variableDeclarationNode; - var name_33; - if (node.kind === 163) { - name_33 = node.name; + var name_29; + if (node.kind === 165) { + name_29 = node.name; variableDeclarationNode = node; - while (variableDeclarationNode && variableDeclarationNode.kind !== 211) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 213) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -33232,24 +33984,24 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_33 = node.name; + name_29 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.variableElement); } case 144: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); - case 230: - case 226: - case 221: + case 232: + case 228: case 223: - case 224: + case 225: + case 226: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; @@ -33279,17 +34031,17 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 248: + case 250: return createSourceFileItem(node); - case 214: + case 216: return createClassItem(node); - case 217: + case 219: return createEnumItem(node); - case 215: + case 217: return createIterfaceItem(node); - case 218: + case 220: return createModuleItem(node); - case 213: + case 215: return createFunctionItem(node); } return undefined; @@ -33299,7 +34051,7 @@ var ts; } var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 218) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 220) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -33311,7 +34063,7 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.body && node.body.kind === 192) { + if (node.body && node.body.kind === 194) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); return getNavigationBarItem(!node.name ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } @@ -33359,13 +34111,13 @@ var ts; return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 218) { + while (node.body.kind === 220) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 248 + return node.kind === 250 ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } @@ -33396,7 +34148,6 @@ var ts; function createPatternMatcher(pattern) { var stringToWordSpans = {}; pattern = pattern.trim(); - var fullPatternSegment = createSegment(pattern); var dotSeparatedSegments = pattern.split(".").map(function (p) { return createSegment(p.trim()); }); var invalidPattern = dotSeparatedSegments.length === 0 || ts.forEach(dotSeparatedSegments, segmentIsInvalid); return { @@ -33426,7 +34177,7 @@ var ts; return undefined; } var totalMatch = candidateMatch; - for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { + for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i -= 1, j -= 1) { var segment = dotSeparatedSegments[i]; var containerName = candidateContainers[j]; var containerMatch = matchSegment(containerName, segment); @@ -33593,33 +34344,6 @@ var ts; } } ts.createPatternMatcher = createPatternMatcher; - function patternMatchCompareTo(match1, match2) { - return compareType(match1, match2) || - compareCamelCase(match1, match2) || - compareCase(match1, match2) || - comparePunctuation(match1, match2); - } - function comparePunctuation(result1, result2) { - if (result1.punctuationStripped !== result2.punctuationStripped) { - return result1.punctuationStripped ? 1 : -1; - } - return 0; - } - function compareCase(result1, result2) { - if (result1.isCaseSensitive !== result2.isCaseSensitive) { - return result1.isCaseSensitive ? -1 : 1; - } - return 0; - } - function compareType(result1, result2) { - return result1.kind - result2.kind; - } - function compareCamelCase(result1, result2) { - if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { - return result2.camelCaseWeight - result1.camelCaseWeight; - } - return 0; - } function createSegment(text) { return { totalTextChunk: createTextChunk(text), @@ -33649,14 +34373,6 @@ var ts; var str = String.fromCharCode(ch); return str === str.toLowerCase(); } - function containsUpperCaseLetter(string) { - for (var i = 0, n = string.length; i < n; i++) { - if (isUpperCaseLetter(string.charCodeAt(i))) { - return true; - } - } - return false; - } function startsWith(string, search) { for (var i = 0, n = search.length; i < n; i++) { if (string.charCodeAt(i) !== search.charCodeAt(i)) { @@ -33705,9 +34421,10 @@ var ts; for (var i = 0; i < pattern.length; i++) { var ch = pattern.charCodeAt(i); if (isWordChar(ch)) { - if (wordLength++ === 0) { + if (wordLength === 0) { wordStart = i; } + wordLength++; } else { if (wordLength > 0) { @@ -33855,14 +34572,14 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function createJavaScriptSignatureHelpItems(argumentInfo) { - if (argumentInfo.invocation.kind !== 168) { + if (argumentInfo.invocation.kind !== 170) { return undefined; } var callExpression = argumentInfo.invocation; var expression = callExpression.expression; var name = expression.kind === 69 ? expression - : expression.kind === 166 + : expression.kind === 168 ? expression.name : undefined; if (!name || !name.text) { @@ -33891,7 +34608,7 @@ var ts; } } function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 168 || node.parent.kind === 169) { + if (node.parent.kind === 170 || node.parent.kind === 171) { var callExpression = node.parent; if (node.kind === 25 || node.kind === 17) { @@ -33922,23 +34639,23 @@ var ts; }; } } - else if (node.kind === 11 && node.parent.kind === 170) { + else if (node.kind === 11 && node.parent.kind === 172) { if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, 0); } } - else if (node.kind === 12 && node.parent.parent.kind === 170) { + else if (node.kind === 12 && node.parent.parent.kind === 172) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 183); + ts.Debug.assert(templateExpression.kind === 185); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 190 && node.parent.parent.parent.kind === 170) { + else if (node.parent.kind === 192 && node.parent.parent.parent.kind === 172) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 183); + ts.Debug.assert(templateExpression.kind === 185); if (node.kind === 14 && !ts.isInsideTemplateLiteral(node, position)) { return undefined; } @@ -34002,7 +34719,7 @@ var ts; var template = taggedTemplate.template; var applicableSpanStart = template.getStart(); var applicableSpanEnd = template.getEnd(); - if (template.kind === 183) { + if (template.kind === 185) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, false); @@ -34011,7 +34728,7 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 248; n = n.parent) { + for (var n = node; n.kind !== 250; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } @@ -34191,24 +34908,24 @@ var ts; return false; } switch (n.kind) { - case 214: - case 215: + case 216: case 217: - case 165: - case 161: - case 155: - case 192: case 219: - case 220: + case 167: + case 163: + case 155: + case 194: + case 221: + case 222: return nodeEndsWith(n, 16, sourceFile); - case 244: + case 246: return isCompletedNode(n.block, sourceFile); - case 169: + case 171: if (!n.arguments) { return true; } - case 168: - case 172: + case 170: + case 174: case 160: return nodeEndsWith(n, 18, sourceFile); case 152: @@ -34217,13 +34934,13 @@ var ts; case 144: case 145: case 146: - case 213: - case 173: + case 215: + case 175: case 143: case 142: case 148: case 147: - case 174: + case 176: if (n.body) { return isCompletedNode(n.body, sourceFile); } @@ -34231,19 +34948,19 @@ var ts; return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 18, sourceFile); - case 218: + case 220: return n.body && isCompletedNode(n.body, sourceFile); - case 196: + case 198: if (n.elseStatement) { return isCompletedNode(n.elseStatement, sourceFile); } return isCompletedNode(n.thenStatement, sourceFile); - case 195: + case 197: return isCompletedNode(n.expression, sourceFile) || hasChildOfKind(n, 23); + case 166: case 164: - case 162: - case 167: + case 169: case 136: case 157: return nodeEndsWith(n, 20, sourceFile); @@ -34252,15 +34969,15 @@ var ts; return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 20, sourceFile); - case 241: - case 242: + case 243: + case 244: return false; - case 199: - case 200: case 201: - case 198: + case 202: + case 203: + case 200: return isCompletedNode(n.statement, sourceFile); - case 197: + case 199: var hasWhileKeyword = findChildOfKind(n, 104, sourceFile); if (hasWhileKeyword) { return nodeEndsWith(n, 18, sourceFile); @@ -34268,25 +34985,25 @@ var ts; return isCompletedNode(n.statement, sourceFile); case 154: return isCompletedNode(n.exprName, sourceFile); - case 176: - case 175: + case 178: case 177: - case 184: - case 185: + case 179: + case 186: + case 187: var unaryWordExpression = n; return isCompletedNode(unaryWordExpression.expression, sourceFile); - case 170: + case 172: return isCompletedNode(n.template, sourceFile); - case 183: + case 185: var lastSpan = ts.lastOrUndefined(n.templateSpans); return isCompletedNode(lastSpan, sourceFile); - case 190: + case 192: return ts.nodeIsPresent(n.literal); - case 179: - return isCompletedNode(n.operand, sourceFile); case 181: + return isCompletedNode(n.operand, sourceFile); + case 183: return isCompletedNode(n.right, sourceFile); - case 182: + case 184: return isCompletedNode(n.whenFalse, sourceFile); default: return true; @@ -34329,7 +35046,7 @@ var ts; ts.findChildOfKind = findChildOfKind; function findContainingList(node) { var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { - if (c.kind === 271 && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 273 && c.pos <= node.pos && c.end >= node.end) { return c; } }); @@ -34409,7 +35126,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n) || n.kind === 236) { + if (isToken(n) || n.kind === 238) { return n; } var children = n.getChildren(); @@ -34417,16 +35134,16 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n) || n.kind === 236) { + if (isToken(n) || n.kind === 238) { return n; } var children = n.getChildren(); for (var i = 0, len = children.length; i < len; i++) { var child = children[i]; - if (position < child.end && (nodeHasTokens(child) || child.kind === 236)) { + if (position < child.end && (nodeHasTokens(child) || child.kind === 238)) { var start = child.getStart(sourceFile); var lookInPreviousChild = (start >= position) || - (child.kind === 236 && start === child.end); + (child.kind === 238 && start === child.end); if (lookInPreviousChild) { var candidate = findRightmostChildNodeWithTokens(children, i); return candidate && findRightmostToken(candidate); @@ -34436,7 +35153,7 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 248); + ts.Debug.assert(startNode !== undefined || n.kind === 250); if (children.length) { var candidate = findRightmostChildNodeWithTokens(children, children.length); return candidate && findRightmostToken(candidate); @@ -34453,7 +35170,7 @@ var ts; ts.findPrecedingToken = findPrecedingToken; function isInString(sourceFile, position) { var token = getTokenAtPosition(sourceFile, position); - return token && token.kind === 9 && position > token.getStart(); + return token && (token.kind === 9 || token.kind === 162) && position > token.getStart(); } ts.isInString = isInString; function isInComment(sourceFile, position) { @@ -34536,10 +35253,10 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 151 || node.kind === 168) { + if (node.kind === 151 || node.kind === 170) { return node.typeArguments; } - if (ts.isFunctionLike(node) || node.kind === 214 || node.kind === 215) { + if (ts.isFunctionLike(node) || node.kind === 216 || node.kind === 217) { return node.typeParameters; } return undefined; @@ -34562,6 +35279,7 @@ var ts; ts.isComment = isComment; function isStringOrRegularExpressionOrTemplateLiteral(kind) { if (kind === 9 + || kind === 162 || kind === 10 || ts.isTemplateLiteralKind(kind)) { return true; @@ -34789,7 +35507,7 @@ var ts; ts.getDeclaredName = getDeclaredName; function isImportOrExportSpecifierName(location) { return location.parent && - (location.parent.kind === 226 || location.parent.kind === 230) && + (location.parent.kind === 228 || location.parent.kind === 232) && location.parent.propertyName === location; } ts.isImportOrExportSpecifierName = isImportOrExportSpecifierName; @@ -34827,6 +35545,7 @@ var ts; advance: advance, readTokenInfo: readTokenInfo, isOnToken: isOnToken, + getCurrentLeadingTrivia: function () { return leadingTrivia; }, lastTrailingTriviaWasNewLine: function () { return wasNewLine; }, close: function () { ts.Debug.assert(scanner !== undefined); @@ -34890,10 +35609,10 @@ var ts; function shouldRescanJsxIdentifier(node) { if (node.parent) { switch (node.parent.kind) { - case 238: - case 235: + case 240: case 237: - case 234: + case 239: + case 236: return node.kind === 69; } } @@ -35081,7 +35800,7 @@ var ts; return false; }; return FormattingContext; - })(); + }()); formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35102,7 +35821,7 @@ var ts; "flag=" + this.Flag + "]"; }; return Rule; - })(); + }()); formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35132,7 +35851,7 @@ var ts; return new RuleDescriptor(left, right); }; return RuleDescriptor; - })(); + }()); formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35159,7 +35878,7 @@ var ts; return result; }; return RuleOperation; - })(); + }()); formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35192,7 +35911,7 @@ var ts; }; RuleOperationContext.Any = new RuleOperationContext(); return RuleOperationContext; - })(); + }()); formatting.RuleOperationContext = RuleOperationContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35259,6 +35978,7 @@ var ts; this.SpaceAfterCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([115, 73, 122, 77, 81, 82, 83, 123, 106, 89, 107, 125, 126, 110, 112, 111, 129, 113, 132]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceBeforeCertainTypeScriptKeywords = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([83, 106])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(9, 15), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2)); + this.SpaceBeforeArrow = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 34), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(34, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(22, 69), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterOptionalParameters = new formatting.Rule(formatting.RuleDescriptor.create3(53, formatting.Shared.TokenRange.FromTokens([18, 24])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNotBinaryOpContext), 8)); @@ -35278,65 +35998,61 @@ var ts; this.SpaceBetweenYieldOrYieldStarAndOperand = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([114, 37]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsYieldOrYieldStarWithOperand), 2)); this.SpaceBetweenAsyncAndOpenParen = new formatting.Rule(formatting.RuleDescriptor.create1(118, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsArrowFunctionContext, Rules.IsSameLineTokenContext), 2)); this.SpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(118, 87), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.SpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(69, formatting.Shared.TokenRange.FromTokens([11, 12])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); - this.NoSpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12, 13]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.NoSpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13, 14])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); - this.HighPriorityCommonRules = - [ - this.IgnoreBeforeComment, this.IgnoreAfterLineComment, - this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, - this.NoSpaceAfterQuestionMark, - this.NoSpaceBeforeDot, this.NoSpaceAfterDot, - this.NoSpaceAfterUnaryPrefixOperator, - this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, - this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, - this.SpaceAfterPostincrementWhenFollowedByAdd, - this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, - this.SpaceAfterPostdecrementWhenFollowedBySubtract, - this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, - this.NoSpaceAfterCloseBrace, - this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, - this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, - this.NoSpaceBetweenFunctionKeywordAndStar, this.SpaceAfterStarInGeneratorDeclaration, - this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, - this.NoSpaceBetweenYieldKeywordAndStar, this.SpaceBetweenYieldOrYieldStarAndOperand, - this.NoSpaceBetweenReturnAndSemicolon, - this.SpaceAfterCertainKeywords, - this.SpaceAfterLetConstInVariableDeclaration, - this.NoSpaceBeforeOpenParenInFuncCall, - this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, - this.SpaceAfterVoidOperator, - this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceAfterTemplateHeadAndMiddle, this.NoSpaceBeforeTemplateMiddleAndTail, - this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, - this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, - this.SpaceAfterModuleName, - this.SpaceAfterArrow, - this.NoSpaceAfterEllipsis, - this.NoSpaceAfterOptionalParameters, - this.NoSpaceBetweenEmptyInterfaceBraceBrackets, - this.NoSpaceBeforeOpenAngularBracket, - this.NoSpaceBetweenCloseParenAndAngularBracket, - this.NoSpaceAfterOpenAngularBracket, - this.NoSpaceBeforeCloseAngularBracket, - this.NoSpaceAfterCloseAngularBracket, - this.NoSpaceAfterTypeAssertion, - this.SpaceBeforeAt, - this.NoSpaceAfterAt, - this.SpaceAfterDecorator, - ]; - this.LowPriorityCommonRules = - [ - this.NoSpaceBeforeSemicolon, - this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, - this.NoSpaceBeforeComma, - this.NoSpaceBeforeOpenBracket, - this.NoSpaceAfterCloseBracket, - this.SpaceAfterSemicolon, - this.NoSpaceBeforeOpenParenInFuncDecl, - this.SpaceBetweenStatements, this.SpaceAfterTryFinally - ]; - this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(69, formatting.Shared.TokenRange.FromTokens([11, 12])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.HighPriorityCommonRules = [ + this.IgnoreBeforeComment, this.IgnoreAfterLineComment, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, + this.NoSpaceBeforeDot, this.NoSpaceAfterDot, + this.NoSpaceAfterUnaryPrefixOperator, + this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, + this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, + this.SpaceAfterPostincrementWhenFollowedByAdd, + this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, + this.SpaceAfterPostdecrementWhenFollowedBySubtract, + this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, + this.NoSpaceAfterCloseBrace, + this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, + this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, + this.NoSpaceBetweenFunctionKeywordAndStar, this.SpaceAfterStarInGeneratorDeclaration, + this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, + this.NoSpaceBetweenYieldKeywordAndStar, this.SpaceBetweenYieldOrYieldStarAndOperand, + this.NoSpaceBetweenReturnAndSemicolon, + this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, + this.NoSpaceBeforeOpenParenInFuncCall, + this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, + this.SpaceAfterVoidOperator, + this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, + this.NoSpaceBetweenTagAndTemplateString, + this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, + this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, + this.SpaceAfterModuleName, + this.SpaceBeforeArrow, this.SpaceAfterArrow, + this.NoSpaceAfterEllipsis, + this.NoSpaceAfterOptionalParameters, + this.NoSpaceBetweenEmptyInterfaceBraceBrackets, + this.NoSpaceBeforeOpenAngularBracket, + this.NoSpaceBetweenCloseParenAndAngularBracket, + this.NoSpaceAfterOpenAngularBracket, + this.NoSpaceBeforeCloseAngularBracket, + this.NoSpaceAfterCloseAngularBracket, + this.NoSpaceAfterTypeAssertion, + this.SpaceBeforeAt, + this.NoSpaceAfterAt, + this.SpaceAfterDecorator, + ]; + this.LowPriorityCommonRules = [ + this.NoSpaceBeforeSemicolon, + this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, + this.NoSpaceBeforeComma, + this.NoSpaceBeforeOpenBracket, + this.NoSpaceAfterCloseBracket, + this.SpaceAfterSemicolon, + this.NoSpaceBeforeOpenParenInFuncDecl, + this.SpaceBetweenStatements, this.SpaceAfterTryFinally + ]; + this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNextTokenNotCloseBracket), 2)); this.NoSpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.SpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); this.SpaceAfterBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.BinaryOperators, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2)); @@ -35359,45 +36075,49 @@ var ts; this.NoSpaceBetweenBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(19, 20), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceAfterOpenBracket = new formatting.Rule(formatting.RuleDescriptor.create3(19, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); this.NoSpaceBeforeCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 20), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.NoSpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12, 13]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12, 13]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); + this.NoSpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13, 14])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8)); + this.SpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13, 14])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2)); this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(87, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2)); this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(87, 17), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8)); } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_34 in o) { - if (o[name_34] === rule) { - return name_34; + for (var name_30 in o) { + if (o[name_30] === rule) { + return name_30; } } throw new Error("Unknown rule"); }; Rules.IsForContext = function (context) { - return context.contextNode.kind === 199; + return context.contextNode.kind === 201; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 181: - case 182: - case 189: + case 183: + case 184: + case 191: case 150: case 158: case 159: return true; - case 163: - case 216: - case 221: - case 211: + case 165: + case 218: + case 223: + case 213: case 138: - case 247: + case 249: case 141: case 140: return context.currentTokenSpan.kind === 56 || context.nextTokenSpan.kind === 56; - case 200: + case 202: return context.currentTokenSpan.kind === 90 || context.nextTokenSpan.kind === 90; - case 201: + case 203: return context.currentTokenSpan.kind === 134 || context.nextTokenSpan.kind === 134; } return false; @@ -35406,7 +36126,7 @@ var ts; return !Rules.IsBinaryOpContext(context); }; Rules.IsConditionalOperatorContext = function (context) { - return context.contextNode.kind === 182; + return context.contextNode.kind === 184; }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { return context.TokensAreOnSameLine() || Rules.IsBeforeMultilineBlockContext(context); @@ -35431,86 +36151,86 @@ var ts; return true; } switch (node.kind) { - case 192: - case 220: - case 165: - case 219: + case 194: + case 222: + case 167: + case 221: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 213: + case 215: case 143: case 142: case 145: case 146: case 147: - case 173: + case 175: case 144: - case 174: - case 215: + case 176: + case 217: return true; } return false; }; Rules.IsFunctionDeclarationOrFunctionExpressionContext = function (context) { - return context.contextNode.kind === 213 || context.contextNode.kind === 173; + return context.contextNode.kind === 215 || context.contextNode.kind === 175; }; Rules.IsTypeScriptDeclWithBlockContext = function (context) { return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 214: - case 186: - case 215: + case 216: + case 188: case 217: + case 219: case 155: - case 218: + case 220: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 214: - case 218: - case 217: - case 192: - case 244: + case 216: + case 220: case 219: - case 206: + case 194: + case 246: + case 221: + case 208: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 196: - case 206: - case 199: - case 200: - case 201: case 198: - case 209: - case 197: - case 205: - case 244: + case 208: + case 201: + case 202: + case 203: + case 200: + case 211: + case 199: + case 207: + case 246: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 165; + return context.contextNode.kind === 167; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 168; + return context.contextNode.kind === 170; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 169; + return context.contextNode.kind === 171; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -35518,8 +36238,11 @@ var ts; Rules.IsPreviousTokenNotComma = function (context) { return context.currentTokenSpan.kind !== 24; }; + Rules.IsNextTokenNotCloseBracket = function (context) { + return context.nextTokenSpan.kind !== 20; + }; Rules.IsArrowFunctionContext = function (context) { - return context.contextNode.kind === 174; + return context.contextNode.kind === 176; }; Rules.IsSameLineTokenContext = function (context) { return context.TokensAreOnSameLine(); @@ -35540,14 +36263,14 @@ var ts; return node.kind === 139; }; Rules.IsStartOfVariableDeclarationList = function (context) { - return context.currentTokenParent.kind === 212 && + return context.currentTokenParent.kind === 214 && context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind !== 2; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 218; + return context.contextNode.kind === 220; }; Rules.IsObjectTypeContext = function (context) { return context.contextNode.kind === 155; @@ -35558,20 +36281,20 @@ var ts; } switch (parent.kind) { case 151: - case 171: - case 214: - case 186: - case 215: - case 213: case 173: - case 174: + case 216: + case 188: + case 217: + case 215: + case 175: + case 176: case 143: case 142: case 147: case 148: - case 168: - case 169: - case 188: + case 170: + case 171: + case 190: return true; default: return false; @@ -35582,16 +36305,16 @@ var ts; Rules.IsTypeArgumentOrParameterOrAssertion(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsTypeAssertionContext = function (context) { - return context.contextNode.kind === 171; + return context.contextNode.kind === 173; }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 103 && context.currentTokenParent.kind === 177; + return context.currentTokenSpan.kind === 103 && context.currentTokenParent.kind === 179; }; Rules.IsYieldOrYieldStarWithOperand = function (context) { - return context.contextNode.kind === 184 && context.contextNode.expression !== undefined; + return context.contextNode.kind === 186 && context.contextNode.expression !== undefined; }; return Rules; - })(); + }()); formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35655,7 +36378,7 @@ var ts; return null; }; return RulesMap; - })(); + }()); formatting.RulesMap = RulesMap; var MaskBitSize = 5; var Mask = 0x1f; @@ -35692,7 +36415,7 @@ var ts; this.rulesInsertionIndexBitmap = temp; }; return RulesBucketConstructionState; - })(); + }()); formatting.RulesBucketConstructionState = RulesBucketConstructionState; var RulesBucket = (function () { function RulesBucket() { @@ -35727,7 +36450,7 @@ var ts; state.IncreaseInsertionIndex(position); }; return RulesBucket; - })(); + }()); formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -35753,7 +36476,7 @@ var ts; return this.tokens.indexOf(token) >= 0; }; return TokenRangeAccess; - })(); + }()); Shared.TokenRangeAccess = TokenRangeAccess; var TokenValuesAccess = (function () { function TokenValuesAccess(tks) { @@ -35766,7 +36489,7 @@ var ts; return this.tokens.indexOf(token) >= 0; }; return TokenValuesAccess; - })(); + }()); Shared.TokenValuesAccess = TokenValuesAccess; var TokenSingleValueAccess = (function () { function TokenSingleValueAccess(token) { @@ -35779,7 +36502,7 @@ var ts; return tokenValue === this.token; }; return TokenSingleValueAccess; - })(); + }()); Shared.TokenSingleValueAccess = TokenSingleValueAccess; var TokenAllAccess = (function () { function TokenAllAccess() { @@ -35798,7 +36521,7 @@ var ts; return "[allTokens]"; }; return TokenAllAccess; - })(); + }()); Shared.TokenAllAccess = TokenAllAccess; var TokenRange = (function () { function TokenRange(tokenAccess) { @@ -35840,7 +36563,7 @@ var ts; TokenRange.Comments = TokenRange.FromTokens([2, 3]); TokenRange.TypeNames = TokenRange.FromTokens([69, 128, 130, 120, 131, 103, 117]); return TokenRange; - })(); + }()); Shared.TokenRange = TokenRange; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); @@ -35911,6 +36634,14 @@ var ts; rules.push(this.globalRules.NoSpaceBeforeCloseBracket); rules.push(this.globalRules.NoSpaceBetweenBrackets); } + if (options.InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces) { + rules.push(this.globalRules.SpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.SpaceBeforeTemplateMiddleAndTail); + } + else { + rules.push(this.globalRules.NoSpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.NoSpaceBeforeTemplateMiddleAndTail); + } if (options.InsertSpaceAfterSemicolonInForStatements) { rules.push(this.globalRules.SpaceAfterSemicolonInFor); } @@ -35936,7 +36667,7 @@ var ts; return rules; }; return RulesProvider; - })(); + }()); formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -36009,17 +36740,17 @@ var ts; } function isListElement(parent, node) { switch (parent.kind) { - case 214: - case 215: + case 216: + case 217: return ts.rangeContainsRange(parent.members, node); - case 218: + case 220: var body = parent.body; - return body && body.kind === 192 && ts.rangeContainsRange(body.statements, node); - case 248: - case 192: - case 219: + return body && body.kind === 194 && ts.rangeContainsRange(body.statements, node); + case 250: + case 194: + case 221: return ts.rangeContainsRange(parent.statements, node); - case 244: + case 246: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -36083,17 +36814,17 @@ var ts; } function getOwnOrInheritedDelta(n, options, sourceFile) { var previousLine = -1; - var childKind = 0; + var child; while (n) { var line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; if (previousLine !== -1 && line !== previousLine) { break; } - if (formatting.SmartIndenter.shouldIndentChildNode(n.kind, childKind)) { + if (formatting.SmartIndenter.shouldIndentChildNode(n, child)) { return options.IndentSize; } previousLine = line; - childKind = n.kind; + child = n; n = n.parent; } return 0; @@ -36121,10 +36852,18 @@ var ts; var delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); processNode(enclosingNode, enclosingNode, startLine, undecoratedStartLine, initialIndentation, delta); } + if (!formattingScanner.isOnToken()) { + var leadingTrivia = formattingScanner.getCurrentLeadingTrivia(); + if (leadingTrivia) { + processTrivia(leadingTrivia, enclosingNode, enclosingNode, undefined); + trimTrailingWhitespacesForRemainingRange(); + } + } formattingScanner.close(); return edits; function tryComputeIndentationForListItem(startPos, endPos, parentStartLine, range, inheritedIndentation) { - if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos)) { + if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos) || + ts.rangeContainsStartEnd(range, startPos, endPos)) { if (inheritedIndentation !== -1) { return inheritedIndentation; } @@ -36141,33 +36880,20 @@ var ts; } function computeIndentation(node, startLine, inheritedIndentation, parent, parentDynamicIndentation, effectiveParentStartLine) { var indentation = inheritedIndentation; - if (indentation === -1) { - if (isSomeBlock(node.kind)) { - if (isSomeBlock(parent.kind) || - parent.kind === 248 || - parent.kind === 241 || - parent.kind === 242) { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - else { - indentation = parentDynamicIndentation.getIndentation(); - } - } - else { - if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - indentation = parentDynamicIndentation.getIndentation(); - } - else { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - } - } - var delta = formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0) ? options.IndentSize : 0; + var delta = formatting.SmartIndenter.shouldIndentChildNode(node) ? options.IndentSize : 0; if (effectiveParentStartLine === startLine) { 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 === -1) { + if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { + indentation = parentDynamicIndentation.getIndentation(); + } + else { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(node); + } } return { indentation: indentation, @@ -36179,10 +36905,10 @@ var ts; return node.modifiers[0].kind; } switch (node.kind) { - case 214: return 73; - case 215: return 107; - case 213: return 87; - case 217: return 217; + case 216: return 73; + case 217: return 107; + case 215: return 87; + case 219: return 219; case 145: return 123; case 146: return 129; case 143: @@ -36196,16 +36922,16 @@ var ts; } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { - getIndentationForComment: function (kind, tokenIndentation) { + getIndentationForComment: function (kind, tokenIndentation, container) { switch (kind) { case 16: case 20: case 18: - return indentation + delta; + return indentation + getEffectiveDelta(delta, container); } return tokenIndentation !== -1 ? tokenIndentation : indentation; }, - getIndentationForToken: function (line, kind) { + getIndentationForToken: function (line, kind, container) { if (nodeStartLine !== line && node.decorators) { if (kind === getFirstNonDecoratorTokenOfNode(node)) { return indentation; @@ -36223,20 +36949,20 @@ var ts; case 55: return indentation; default: - return nodeStartLine !== line ? indentation + delta : indentation; + return nodeStartLine !== line ? indentation + getEffectiveDelta(delta, container) : indentation; } }, getIndentation: function () { return indentation; }, - getDelta: function () { return delta; }, + getDelta: function (child) { return getEffectiveDelta(delta, child); }, recomputeIndentation: function (lineAdded) { - if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent.kind, node.kind)) { + if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { indentation += options.IndentSize; } else { indentation -= options.IndentSize; } - if (formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0)) { + if (formatting.SmartIndenter.shouldIndentChildNode(node)) { delta = options.IndentSize; } else { @@ -36245,6 +36971,9 @@ var ts; } } }; + function getEffectiveDelta(delta, child) { + return formatting.SmartIndenter.nodeWillIndentChild(node, child, true) ? delta : 0; + } } function processNode(node, contextNode, nodeStartLine, undecoratedNodeStartLine, indentation, delta) { if (!ts.rangeOverlapsWithStartEnd(originalRange, node.getStart(sourceFile), node.getEnd())) { @@ -36297,7 +37026,7 @@ var ts; if (ts.isToken(child)) { var tokenInfo = formattingScanner.readTokenInfo(child); ts.Debug.assert(tokenInfo.token.end === child.end); - consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } var effectiveParentStartLine = child.kind === 139 ? childStartLine : undecoratedParentStartLine; @@ -36342,7 +37071,7 @@ var ts; } } } - function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation) { + function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation, container) { ts.Debug.assert(ts.rangeContainsRange(parent, currentTokenInfo.token)); var lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); var indentToken = false; @@ -36374,10 +37103,10 @@ var ts; } if (indentToken) { var tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? - dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind, container) : -1; if (currentTokenInfo.leadingTrivia) { - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation, container); var indentNextTokenOrTrivia = true; for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { var triviaItem = _a[_i]; @@ -36458,9 +37187,7 @@ var ts; dynamicIndentation.recomputeIndentation(true); } } - trimTrailingWhitespaces = - (rule.Operation.Action & (4 | 2)) && - rule.Flag !== 1; + trimTrailingWhitespaces = !(rule.Operation.Action & 8) && rule.Flag !== 1; } else { trimTrailingWhitespaces = true; @@ -36536,16 +37263,29 @@ var ts; if (range && (ts.isComment(range.kind) || ts.isStringOrRegularExpressionOrTemplateLiteral(range.kind)) && range.pos <= lineEndPosition && range.end > lineEndPosition) { continue; } - var pos = lineEndPosition; - while (pos >= lineStartPosition && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { - pos--; - } - if (pos !== lineEndPosition) { - ts.Debug.assert(pos === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))); - recordDelete(pos + 1, lineEndPosition - pos); + var whitespaceStart = getTrailingWhitespaceStartPosition(lineStartPosition, lineEndPosition); + if (whitespaceStart !== -1) { + ts.Debug.assert(whitespaceStart === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(whitespaceStart - 1))); + recordDelete(whitespaceStart, lineEndPosition + 1 - whitespaceStart); } } } + function getTrailingWhitespaceStartPosition(start, end) { + var pos = end; + while (pos >= start && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { + pos--; + } + if (pos !== end) { + return pos + 1; + } + return -1; + } + function trimTrailingWhitespacesForRemainingRange() { + var startPosition = previousRange ? previousRange.end : originalRange.pos; + var startLine = sourceFile.getLineAndCharacterOfPosition(startPosition).line; + var endLine = sourceFile.getLineAndCharacterOfPosition(originalRange.end).line; + trimTrailingWhitespacesForLines(startLine, endLine + 1, previousRange); + } function newTextChange(start, len, newText) { return { span: ts.createTextSpan(start, len), newText: newText }; } @@ -36592,8 +37332,8 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 192: - case 219: + case 194: + case 221: return true; } return false; @@ -36601,11 +37341,11 @@ var ts; function getOpenTokenForList(node, list) { switch (node.kind) { case 144: - case 213: - case 173: + case 215: + case 175: case 143: case 142: - case 174: + case 176: if (node.typeParameters === list) { return 25; } @@ -36613,8 +37353,8 @@ var ts; return 17; } break; - case 168: - case 169: + case 170: + case 171: if (node.typeArguments === list) { return 25; } @@ -36723,7 +37463,7 @@ var ts; var lineStart = ts.getLineStartPositionForPosition(current_1, sourceFile); return SmartIndenter.findFirstNonWhitespaceColumn(lineStart, current_1, sourceFile, options); } - if (precedingToken.kind === 24 && precedingToken.parent.kind !== 181) { + if (precedingToken.kind === 24 && precedingToken.parent.kind !== 183) { var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1) { return actualIndentation; @@ -36734,7 +37474,7 @@ var ts; var currentStart; var indentationDelta; while (current) { - if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0)) { + if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current, previous)) { currentStart = getStartLineAndCharacterForNode(current, sourceFile); if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { indentationDelta = 0; @@ -36794,7 +37534,7 @@ var ts; return actualIndentation + indentationDelta; } } - if (shouldIndentChildNode(parent.kind, current.kind) && !parentAndChildShareLine) { + if (shouldIndentChildNode(parent, current) && !parentAndChildShareLine) { indentationDelta += options.IndentSize; } current = parent; @@ -36821,7 +37561,7 @@ var ts; } function getActualIndentationForNode(current, parent, currentLineAndChar, parentAndChildShareLine, sourceFile, options) { var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 248 || !parentAndChildShareLine); + (parent.kind === 250 || !parentAndChildShareLine); if (!useActualIndentation) { return -1; } @@ -36845,7 +37585,7 @@ var ts; return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 196 && parent.elseStatement === child) { + if (parent.kind === 198 && parent.elseStatement === child) { var elseKeyword = ts.findChildOfKind(parent, 80, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; @@ -36863,13 +37603,13 @@ var ts; return node.parent.typeArguments; } break; - case 165: + case 167: return node.parent.properties; - case 164: + case 166: return node.parent.elements; - case 213: - case 173: - case 174: + case 215: + case 175: + case 176: case 143: case 142: case 147: @@ -36884,8 +37624,8 @@ var ts; } break; } - case 169: - case 168: { + case 171: + case 170: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -36913,8 +37653,8 @@ var ts; if (node.kind === 18) { return -1; } - if (node.parent && (node.parent.kind === 168 || - node.parent.kind === 169) && + if (node.parent && (node.parent.kind === 170 || + node.parent.kind === 171) && node.parent.expression !== node) { var fullCallOrNewExpression = node.parent.expression; var startingExpression = getStartingExpression(fullCallOrNewExpression); @@ -36932,10 +37672,10 @@ var ts; function getStartingExpression(node) { while (true) { switch (node.kind) { + case 170: + case 171: case 168: case 169: - case 166: - case 167: node = node.expression; break; default: @@ -36989,34 +37729,35 @@ var ts; SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 195: - case 214: - case 186: - case 215: - case 217: + case 197: case 216: - case 164: - case 192: + case 188: + case 217: case 219: - case 165: + case 218: + case 166: + case 194: + case 221: + case 167: case 155: case 157: - case 220: - case 242: - case 241: - case 172: - case 166: + case 222: + case 244: + case 243: + case 174: case 168: - case 169: - case 193: - case 211: - case 227: - case 204: - case 182: - case 162: - case 161: - case 233: - case 234: + case 170: + case 171: + case 195: + case 213: + case 229: + case 206: + case 184: + case 164: + case 163: + case 237: + case 236: + case 242: case 142: case 147: case 148: @@ -37024,34 +37765,38 @@ var ts; case 152: case 153: case 160: - case 170: - case 178: + case 172: + case 180: + case 227: return true; } return false; } - function shouldIndentChildNode(parent, child) { - if (nodeContentIsAlwaysIndented(parent)) { - return true; - } - switch (parent) { - case 197: - case 198: - case 200: - case 201: + function nodeWillIndentChild(parent, child, indentByDefault) { + var childKind = child ? child.kind : 0; + switch (parent.kind) { case 199: - case 196: - case 213: - case 173: + case 200: + case 202: + case 203: + case 201: + case 198: + case 215: + case 175: case 143: - case 174: + case 176: case 144: case 145: case 146: - return child !== 192; - default: - return false; + return childKind !== 194; + case 235: + return childKind !== 239; } + return indentByDefault; + } + SmartIndenter.nodeWillIndentChild = nodeWillIndentChild; + function shouldIndentChildNode(parent, child) { + return nodeContentIsAlwaysIndented(parent.kind) || nodeWillIndentChild(parent, child, false); } SmartIndenter.shouldIndentChildNode = shouldIndentChildNode; })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); @@ -37081,7 +37826,7 @@ var ts; return undefined; }; return StringScriptSnapshot; - })(); + }()); function fromString(text) { return new StringScriptSnapshot(text); } @@ -37180,7 +37925,7 @@ var ts; return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(271, nodes.pos, nodes.end, 2048, this); + var list = createNode(273, nodes.pos, nodes.end, 2048, this); list._children = []; var pos = nodes.pos; for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { @@ -37257,7 +38002,7 @@ var ts; return child.kind < 135 ? child : child.getLastToken(sourceFile); }; return NodeObject; - })(); + }()); var SymbolObject = (function () { function SymbolObject(flags, name) { this.flags = flags; @@ -37279,7 +38024,7 @@ var ts; return this.documentationComment; }; return SymbolObject; - })(); + }()); function getJsDocCommentsFromDeclarations(declarations, name, canUseParsedParamTagComments) { var documentationComment = []; var docComments = getJsDocCommentsSeparatedByNewLines(); @@ -37304,13 +38049,13 @@ var ts; } }); } - if (declaration.kind === 218 && declaration.body.kind === 218) { + if (declaration.kind === 220 && declaration.body.kind === 220) { return; } - while (declaration.kind === 218 && declaration.parent.kind === 218) { + while (declaration.kind === 220 && declaration.parent.kind === 220) { declaration = declaration.parent; } - ts.forEach(getJsDocCommentTextRange(declaration.kind === 211 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 213 ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedJsDocComment) { ts.addRange(jsDocCommentParts, cleanedJsDocComment); @@ -37355,7 +38100,8 @@ var ts; return isName(pos, end, sourceFile, paramTag); } function pushDocCommentLineText(docComments, text, blankLineCount) { - while (blankLineCount--) { + while (blankLineCount) { + blankLineCount--; docComments.push(ts.textPart("")); } docComments.push(ts.textPart(text)); @@ -37552,7 +38298,7 @@ var ts; : undefined; }; return TypeObject; - })(); + }()); var SignatureObject = (function () { function SignatureObject(checker) { this.checker = checker; @@ -37576,7 +38322,7 @@ var ts; return this.documentationComment; }; return SignatureObject; - })(); + }()); var SourceFileObject = (function (_super) { __extends(SourceFileObject, _super); function SourceFileObject(kind, pos, end) { @@ -37622,7 +38368,7 @@ var ts; } if (declaration.name.kind === 136) { var expr = declaration.name.expression; - if (expr.kind === 166) { + if (expr.kind === 168) { return expr.name.text; } return getTextOfIdentifierOrLiteral(expr); @@ -37642,7 +38388,7 @@ var ts; } function visit(node) { switch (node.kind) { - case 213: + case 215: case 143: case 142: var functionDeclaration = node; @@ -37661,30 +38407,30 @@ var ts; ts.forEachChild(node, visit); } break; - case 214: - case 215: case 216: case 217: case 218: - case 221: - case 230: - case 226: - case 221: + case 219: + case 220: case 223: - case 224: + case 232: + case 228: + case 223: + case 225: + case 226: case 145: case 146: case 155: addDeclaration(node); case 144: - case 193: - case 212: - case 161: - case 162: - case 219: + case 195: + case 214: + case 163: + case 164: + case 221: ts.forEachChild(node, visit); break; - case 192: + case 194: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } @@ -37693,30 +38439,30 @@ var ts; if (!(node.flags & 56)) { break; } - case 211: - case 163: + case 213: + case 165: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 247: + case 249: case 141: case 140: addDeclaration(node); break; - case 228: + case 230: if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 222: + case 224: var importClause = node.importClause; if (importClause) { if (importClause.name) { addDeclaration(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224) { + if (importClause.namedBindings.kind === 226) { addDeclaration(importClause.namedBindings); } else { @@ -37729,12 +38475,12 @@ var ts; } }; return SourceFileObject; - })(NodeObject); + }(NodeObject)); var TextChange = (function () { function TextChange() { } return TextChange; - })(); + }()); ts.TextChange = TextChange; var HighlightSpanKind; (function (HighlightSpanKind) { @@ -37853,7 +38599,7 @@ var ts; ClassificationTypeNames.jsxCloseTagName = "jsx close tag name"; ClassificationTypeNames.jsxSelfClosingTagName = "jsx self closing tag name"; return ClassificationTypeNames; - })(); + }()); ts.ClassificationTypeNames = ClassificationTypeNames; function displayPartsToString(displayParts) { if (displayParts) { @@ -37867,14 +38613,14 @@ var ts; return false; } return ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 173) { + if (declaration.kind === 175) { return true; } - if (declaration.kind !== 211 && declaration.kind !== 213) { + if (declaration.kind !== 213 && declaration.kind !== 215) { return false; } for (var parent_8 = declaration.parent; !ts.isFunctionBlock(parent_8); parent_8 = parent_8.parent) { - if (parent_8.kind === 248 || parent_8.kind === 219) { + if (parent_8.kind === 250 || parent_8.kind === 221) { return false; } } @@ -37949,7 +38695,7 @@ var ts; return file && file.scriptSnapshot; }; return HostCache; - })(); + }()); var SyntaxTreeCache = (function () { function SyntaxTreeCache(host) { this.host = host; @@ -37977,7 +38723,7 @@ var ts; return this.currentSourceFile; }; return SyntaxTreeCache; - })(); + }()); function setSourceFileFields(sourceFile, scriptSnapshot, version) { sourceFile.version = version; sourceFile.scriptSnapshot = scriptSnapshot; @@ -38005,7 +38751,7 @@ var ts; sourceMapText = text; } else { - ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: '" + name + "'"); outputText = text; } }, @@ -38015,7 +38761,8 @@ var ts; getCurrentDirectory: function () { return ""; }, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return fileName === inputFileName; }, - readFile: function (fileName) { return ""; } + readFile: function (fileName) { return ""; }, + directoryExists: function (directoryExists) { return true; } }; var program = ts.createProgram([inputFileName], options, compilerHost); var diagnostics; @@ -38093,7 +38840,7 @@ var ts; var buckets = {}; var getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames); function getKeyFromCompilationSettings(settings) { - return "_" + settings.target + "|" + settings.module + "|" + settings.noResolve + "|" + settings.jsx; + return "_" + settings.target + "|" + settings.module + "|" + settings.noResolve + "|" + settings.jsx + +"|" + settings.allowJs; } function getBucketForCompilationSettings(settings, createIfMissing) { var key = getKeyFromCompilationSettings(settings); @@ -38104,7 +38851,7 @@ var ts; return bucket; } function reportStats() { - var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === '_'; }).map(function (name) { + var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === "_"; }).map(function (name) { var entries = ts.lookUp(buckets, name); var sourceFiles = []; entries.forEachValue(function (key, entry) { @@ -38120,7 +38867,7 @@ var ts; sourceFiles: sourceFiles }; }); - return JSON.stringify(bucketInfoArray, null, 2); + return JSON.stringify(bucketInfoArray, undefined, 2); } function acquireDocument(fileName, compilationSettings, scriptSnapshot, version) { return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, true); @@ -38404,7 +39151,7 @@ var ts; ts.preProcessFile = preProcessFile; function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 207 && referenceNode.label.text === labelName) { + if (referenceNode.kind === 209 && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -38413,16 +39160,16 @@ var ts; } function isJumpStatementTarget(node) { return node.kind === 69 && - (node.parent.kind === 203 || node.parent.kind === 202) && + (node.parent.kind === 205 || node.parent.kind === 204) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { return node.kind === 69 && - node.parent.kind === 207 && + node.parent.kind === 209 && node.parent.label === node; } function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 207; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 209; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -38436,22 +39183,22 @@ var ts; return node.parent.kind === 135 && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 166 && node.parent.name === node; + return node && node.parent && node.parent.kind === 168 && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 168 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 170 && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 169 && node.parent.expression === node; + return node && node.parent && node.parent.kind === 171 && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 218 && node.parent.name === node; + return node.parent.kind === 220 && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { return node.kind === 69 && @@ -38459,22 +39206,22 @@ var ts; } function isNameOfPropertyAssignment(node) { return (node.kind === 69 || node.kind === 9 || node.kind === 8) && - (node.parent.kind === 245 || node.parent.kind === 246) && node.parent.name === node; + (node.parent.kind === 247 || node.parent.kind === 248) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 9 || node.kind === 8) { switch (node.parent.kind) { case 141: case 140: - case 245: case 247: + case 249: case 143: case 142: case 145: case 146: - case 218: + case 220: return node.parent.name === node; - case 167: + case 169: return node.parent.argumentExpression === node; } } @@ -38527,17 +39274,17 @@ var ts; return undefined; } switch (node.kind) { - case 248: + case 250: case 143: case 142: - case 213: - case 173: + case 215: + case 175: case 145: case 146: - case 214: - case 215: + case 216: case 217: - case 218: + case 219: + case 220: return node; } } @@ -38545,18 +39292,18 @@ var ts; ts.getContainerNode = getContainerNode; function getNodeKind(node) { switch (node.kind) { - case 218: return ScriptElementKind.moduleElement; - case 214: return ScriptElementKind.classElement; - case 215: return ScriptElementKind.interfaceElement; - case 216: return ScriptElementKind.typeElement; - case 217: return ScriptElementKind.enumElement; - case 211: + case 220: return ScriptElementKind.moduleElement; + case 216: return ScriptElementKind.classElement; + case 217: return ScriptElementKind.interfaceElement; + case 218: return ScriptElementKind.typeElement; + case 219: return ScriptElementKind.enumElement; + case 213: return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 213: return ScriptElementKind.functionElement; + case 215: return ScriptElementKind.functionElement; case 145: return ScriptElementKind.memberGetAccessorElement; case 146: return ScriptElementKind.memberSetAccessorElement; case 143: @@ -38570,13 +39317,13 @@ var ts; case 147: return ScriptElementKind.callSignatureElement; case 144: return ScriptElementKind.constructorImplementationElement; case 137: return ScriptElementKind.typeParameterElement; - case 247: return ScriptElementKind.variableElement; + case 249: return ScriptElementKind.variableElement; case 138: return (node.flags & 56) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; - case 221: - case 226: case 223: - case 230: - case 224: + case 228: + case 225: + case 232: + case 226: return ScriptElementKind.alias; } return ScriptElementKind.unknown; @@ -38595,7 +39342,7 @@ var ts; } }; return CancellationTokenObject; - })(); + }()); function createLanguageService(host, documentRegistry) { if (documentRegistry === void 0) { documentRegistry = createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames(), host.getCurrentDirectory()); } var syntaxTreeCache = new SyntaxTreeCache(host); @@ -38648,7 +39395,8 @@ var ts; (oldSettings.target !== newSettings.target || oldSettings.module !== newSettings.module || oldSettings.noResolve !== newSettings.noResolve || - oldSettings.jsx !== newSettings.jsx); + oldSettings.jsx !== newSettings.jsx || + oldSettings.allowJs !== newSettings.allowJs); var compilerHost = { getSourceFile: getOrCreateSourceFile, getCancellationToken: function () { return cancellationToken; }, @@ -38665,6 +39413,10 @@ var ts; readFile: function (fileName) { var entry = hostCache.getOrCreateEntry(fileName); return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); + }, + directoryExists: function (directoryName) { + ts.Debug.assert(!host.resolveModuleNames); + return ts.directoryProbablyExists(directoryName, host); } }; if (host.resolveModuleNames) { @@ -38699,8 +39451,11 @@ var ts; return documentRegistry.acquireDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); } function sourceFileUpToDate(sourceFile) { + if (!sourceFile) { + return false; + } var path = sourceFile.path || ts.toPath(sourceFile.fileName, currentDirectory, getCanonicalFileName); - return sourceFile && sourceFile.version === hostCache.getVersion(path); + return sourceFile.version === hostCache.getVersion(path); } function programUpToDate() { if (!program) { @@ -38739,9 +39494,6 @@ var ts; function getSemanticDiagnostics(fileName) { synchronizeHostData(); var targetSourceFile = getValidSourceFile(fileName); - if (ts.isSourceFileJavaScript(targetSourceFile)) { - return getJavaScriptSemanticDiagnostics(targetSourceFile); - } var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile, cancellationToken); if (!program.getCompilerOptions().declaration) { return semanticDiagnostics; @@ -38749,150 +39501,6 @@ var ts; var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile, cancellationToken); return ts.concatenate(semanticDiagnostics, declarationDiagnostics); } - function getJavaScriptSemanticDiagnostics(sourceFile) { - var diagnostics = []; - walk(sourceFile); - return diagnostics; - function walk(node) { - if (!node) { - return false; - } - switch (node.kind) { - case 221: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); - return true; - case 227: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); - return true; - case 214: - var classDeclaration = node; - if (checkModifiers(classDeclaration.modifiers) || - checkTypeParameters(classDeclaration.typeParameters)) { - return true; - } - break; - case 243: - var heritageClause = node; - if (heritageClause.token === 106) { - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 215: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 218: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 216: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); - return true; - case 143: - case 142: - case 144: - case 145: - case 146: - case 173: - case 213: - case 174: - case 213: - var functionDeclaration = node; - if (checkModifiers(functionDeclaration.modifiers) || - checkTypeParameters(functionDeclaration.typeParameters) || - checkTypeAnnotation(functionDeclaration.type)) { - return true; - } - break; - case 193: - var variableStatement = node; - if (checkModifiers(variableStatement.modifiers)) { - return true; - } - break; - case 211: - var variableDeclaration = node; - if (checkTypeAnnotation(variableDeclaration.type)) { - return true; - } - break; - case 168: - case 169: - var expression = node; - if (expression.typeArguments && expression.typeArguments.length > 0) { - var start = expression.typeArguments.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, expression.typeArguments.end - start, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 138: - var parameter = node; - if (parameter.modifiers) { - var start = parameter.modifiers.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, parameter.modifiers.end - start, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); - return true; - } - if (parameter.questionToken) { - diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, '?')); - return true; - } - if (parameter.type) { - diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 141: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 217: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 171: - var typeAssertionExpression = node; - diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); - return true; - case 139: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); - return true; - } - return ts.forEachChild(node, walk); - } - function checkTypeParameters(typeParameters) { - if (typeParameters) { - var start = typeParameters.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, typeParameters.end - start, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); - return true; - } - return false; - } - function checkTypeAnnotation(type) { - if (type) { - diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); - return true; - } - return false; - } - function checkModifiers(modifiers) { - if (modifiers) { - for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { - var modifier = modifiers_1[_i]; - switch (modifier.kind) { - case 112: - case 110: - case 111: - case 122: - diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); - return true; - case 113: - case 82: - case 74: - case 77: - case 115: - } - } - } - return false; - } - } function getCompilerOptionsDiagnostics() { synchronizeHostData(); return program.getOptionsDiagnostics(cancellationToken).concat(program.getGlobalDiagnostics(cancellationToken)); @@ -38916,20 +39524,14 @@ var ts; return undefined; } if (performCharacterChecks) { - if (!ts.isIdentifierStart(name.charCodeAt(0), target)) { + if (!ts.isIdentifier(name, target)) { return undefined; } - for (var i = 1, n = name.length; i < n; i++) { - if (!ts.isIdentifierPart(name.charCodeAt(i), target)) { - return undefined; - } - } } return name; } function getCompletionData(fileName, position) { var typeChecker = program.getTypeChecker(); - var syntacticStart = new Date().getTime(); var sourceFile = getValidSourceFile(fileName); var isJavaScriptFile = ts.isSourceFileJavaScript(sourceFile); var isJsDocTagName = false; @@ -38950,9 +39552,9 @@ var ts; isJsDocTagName = true; } switch (tag.kind) { + case 271: case 269: - case 267: - case 268: + case 270: var tagWithExpression = tag; if (tagWithExpression.typeExpression) { insideJsDocTagExpression = tagWithExpression.typeExpression.pos < position && position < tagWithExpression.typeExpression.end; @@ -38973,9 +39575,9 @@ var ts; log("getCompletionData: Get previous token 1: " + (new Date().getTime() - start)); var contextToken = previousToken; if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { - var start_3 = new Date().getTime(); + var start_6 = new Date().getTime(); contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); - log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_3)); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_6)); } var node = currentToken; var isRightOfDot = false; @@ -38989,7 +39591,7 @@ var ts; } var parent_9 = contextToken.parent, kind = contextToken.kind; if (kind === 21) { - if (parent_9.kind === 166) { + if (parent_9.kind === 168) { node = contextToken.parent.expression; isRightOfDot = true; } @@ -39006,7 +39608,7 @@ var ts; isRightOfOpenTag = true; location = contextToken; } - else if (kind === 39 && contextToken.parent.kind === 237) { + else if (kind === 39 && contextToken.parent.kind === 239) { isStartingCloseTag = true; } } @@ -39045,7 +39647,7 @@ var ts; function getTypeScriptMemberSymbols() { isMemberCompletion = true; isNewIdentifierLocation = false; - if (node.kind === 69 || node.kind === 135 || node.kind === 166) { + if (node.kind === 69 || node.kind === 135 || node.kind === 168) { var symbol = typeChecker.getSymbolAtLocation(node); if (symbol && symbol.flags & 8388608) { symbol = typeChecker.getAliasedSymbol(symbol); @@ -39091,7 +39693,7 @@ var ts; } if (jsxContainer = tryGetContainingJsxElement(contextToken)) { var attrsType; - if ((jsxContainer.kind === 234) || (jsxContainer.kind === 235)) { + if ((jsxContainer.kind === 236) || (jsxContainer.kind === 237)) { attrsType = typeChecker.getJsxElementAttributesType(jsxContainer); if (attrsType) { symbols = filterJsxAttributes(typeChecker.getPropertiesOfType(attrsType), jsxContainer.attributes); @@ -39131,15 +39733,15 @@ var ts; return result; } function isInJsxText(contextToken) { - if (contextToken.kind === 236) { + if (contextToken.kind === 238) { return true; } if (contextToken.kind === 27 && contextToken.parent) { - if (contextToken.parent.kind === 235) { + if (contextToken.parent.kind === 237) { return true; } - if (contextToken.parent.kind === 237 || contextToken.parent.kind === 234) { - return contextToken.parent.parent && contextToken.parent.parent.kind === 233; + if (contextToken.parent.kind === 239 || contextToken.parent.kind === 236) { + return contextToken.parent.parent && contextToken.parent.parent.kind === 235; } } return false; @@ -39149,36 +39751,36 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 24: - return containingNodeKind === 168 + return containingNodeKind === 170 || containingNodeKind === 144 - || containingNodeKind === 169 - || containingNodeKind === 164 - || containingNodeKind === 181 + || containingNodeKind === 171 + || containingNodeKind === 166 + || containingNodeKind === 183 || containingNodeKind === 152; case 17: - return containingNodeKind === 168 + return containingNodeKind === 170 || containingNodeKind === 144 - || containingNodeKind === 169 - || containingNodeKind === 172 + || containingNodeKind === 171 + || containingNodeKind === 174 || containingNodeKind === 160; case 19: - return containingNodeKind === 164 + return containingNodeKind === 166 || containingNodeKind === 149 || containingNodeKind === 136; case 125: case 126: return true; case 21: - return containingNodeKind === 218; + return containingNodeKind === 220; case 15: - return containingNodeKind === 214; + return containingNodeKind === 216; case 56: - return containingNodeKind === 211 - || containingNodeKind === 181; + return containingNodeKind === 213 + || containingNodeKind === 183; case 12: - return containingNodeKind === 183; + return containingNodeKind === 185; case 13: - return containingNodeKind === 190; + return containingNodeKind === 192; case 112: case 110: case 111: @@ -39195,11 +39797,12 @@ var ts; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken) { if (contextToken.kind === 9 + || contextToken.kind === 162 || contextToken.kind === 10 || ts.isTemplateLiteralKind(contextToken.kind)) { - var start_4 = contextToken.getStart(); + var start_7 = contextToken.getStart(); var end = contextToken.getEnd(); - if (start_4 < position && position < end) { + if (start_7 < position && position < end) { return true; } if (position === end) { @@ -39213,12 +39816,12 @@ var ts; isMemberCompletion = true; var typeForObject; var existingMembers; - if (objectLikeContainer.kind === 165) { + if (objectLikeContainer.kind === 167) { isNewIdentifierLocation = true; typeForObject = typeChecker.getContextualType(objectLikeContainer); existingMembers = objectLikeContainer.properties; } - else if (objectLikeContainer.kind === 161) { + else if (objectLikeContainer.kind === 163) { isNewIdentifierLocation = false; var rootDeclaration = ts.getRootDeclaration(objectLikeContainer.parent); if (ts.isVariableLike(rootDeclaration)) { @@ -39244,9 +39847,9 @@ var ts; return true; } function tryGetImportOrExportClauseCompletionSymbols(namedImportsOrExports) { - var declarationKind = namedImportsOrExports.kind === 225 ? - 222 : - 228; + var declarationKind = namedImportsOrExports.kind === 227 ? + 224 : + 230; var importOrExportDeclaration = ts.getAncestor(namedImportsOrExports, declarationKind); var moduleSpecifier = importOrExportDeclaration.moduleSpecifier; if (!moduleSpecifier) { @@ -39268,7 +39871,7 @@ var ts; case 15: case 24: var parent_10 = contextToken.parent; - if (parent_10 && (parent_10.kind === 165 || parent_10.kind === 161)) { + if (parent_10 && (parent_10.kind === 167 || parent_10.kind === 163)) { return parent_10; } break; @@ -39282,8 +39885,8 @@ var ts; case 15: case 24: switch (contextToken.parent.kind) { - case 225: - case 229: + case 227: + case 231: return contextToken.parent; } } @@ -39297,28 +39900,28 @@ var ts; case 26: case 39: case 69: - case 238: - case 239: - if (parent_11 && (parent_11.kind === 234 || parent_11.kind === 235)) { + case 240: + case 241: + if (parent_11 && (parent_11.kind === 236 || parent_11.kind === 237)) { return parent_11; } - else if (parent_11.kind === 238) { + else if (parent_11.kind === 240) { return parent_11.parent; } break; case 9: - if (parent_11 && ((parent_11.kind === 238) || (parent_11.kind === 239))) { + if (parent_11 && ((parent_11.kind === 240) || (parent_11.kind === 241))) { return parent_11.parent; } break; case 16: if (parent_11 && - parent_11.kind === 240 && + parent_11.kind === 242 && parent_11.parent && - (parent_11.parent.kind === 238)) { + (parent_11.parent.kind === 240)) { return parent_11.parent.parent; } - if (parent_11 && parent_11.kind === 239) { + if (parent_11 && parent_11.kind === 241) { return parent_11.parent; } break; @@ -39328,9 +39931,9 @@ var ts; } function isFunction(kind) { switch (kind) { - case 173: - case 174: - case 213: + case 175: + case 176: + case 215: case 143: case 142: case 145: @@ -39346,54 +39949,54 @@ var ts; var containingNodeKind = contextToken.parent.kind; switch (contextToken.kind) { case 24: - return containingNodeKind === 211 || - containingNodeKind === 212 || - containingNodeKind === 193 || - containingNodeKind === 217 || - isFunction(containingNodeKind) || + return containingNodeKind === 213 || containingNodeKind === 214 || - containingNodeKind === 186 || - containingNodeKind === 215 || - containingNodeKind === 162 || - containingNodeKind === 216; + containingNodeKind === 195 || + containingNodeKind === 219 || + isFunction(containingNodeKind) || + containingNodeKind === 216 || + containingNodeKind === 188 || + containingNodeKind === 217 || + containingNodeKind === 164 || + containingNodeKind === 218; case 21: - return containingNodeKind === 162; + return containingNodeKind === 164; case 54: - return containingNodeKind === 163; + return containingNodeKind === 165; case 19: - return containingNodeKind === 162; + return containingNodeKind === 164; case 17: - return containingNodeKind === 244 || + return containingNodeKind === 246 || isFunction(containingNodeKind); case 15: - return containingNodeKind === 217 || - containingNodeKind === 215 || + return containingNodeKind === 219 || + containingNodeKind === 217 || containingNodeKind === 155; case 23: return containingNodeKind === 140 && contextToken.parent && contextToken.parent.parent && - (contextToken.parent.parent.kind === 215 || + (contextToken.parent.parent.kind === 217 || contextToken.parent.parent.kind === 155); case 25: - return containingNodeKind === 214 || - containingNodeKind === 186 || - containingNodeKind === 215 || - containingNodeKind === 216 || + return containingNodeKind === 216 || + containingNodeKind === 188 || + containingNodeKind === 217 || + containingNodeKind === 218 || isFunction(containingNodeKind); case 113: return containingNodeKind === 141; case 22: return containingNodeKind === 138 || (contextToken.parent && contextToken.parent.parent && - contextToken.parent.parent.kind === 162); + contextToken.parent.parent.kind === 164); case 112: case 110: case 111: return containingNodeKind === 138; case 116: - return containingNodeKind === 226 || - containingNodeKind === 230 || - containingNodeKind === 224; + return containingNodeKind === 228 || + containingNodeKind === 232 || + containingNodeKind === 226; case 73: case 81: case 107: @@ -39442,8 +40045,8 @@ var ts; if (element.getStart() <= position && position <= element.getEnd()) { continue; } - var name_35 = element.propertyName || element.name; - exisingImportsOrExports[name_35.text] = true; + var name_31 = element.propertyName || element.name; + exisingImportsOrExports[name_31.text] = true; } if (ts.isEmpty(exisingImportsOrExports)) { return exportsOfModule; @@ -39457,16 +40060,17 @@ var ts; var existingMemberNames = {}; for (var _i = 0, existingMembers_1 = existingMembers; _i < existingMembers_1.length; _i++) { var m = existingMembers_1[_i]; - if (m.kind !== 245 && - m.kind !== 246 && - m.kind !== 163) { + if (m.kind !== 247 && + m.kind !== 248 && + m.kind !== 165 && + m.kind !== 143) { continue; } if (m.getStart() <= position && position <= m.getEnd()) { continue; } var existingName = void 0; - if (m.kind === 163 && m.propertyName) { + if (m.kind === 165 && m.propertyName) { if (m.propertyName.kind === 69) { existingName = m.propertyName.text; } @@ -39485,7 +40089,7 @@ var ts; if (attr.getStart() <= position && position <= attr.getEnd()) { continue; } - if (attr.kind === 238) { + if (attr.kind === 240) { seenNames[attr.name.text] = true; } } @@ -39522,10 +40126,10 @@ var ts; var entries = []; var target = program.getCompilerOptions().target; var nameTable = getNameTable(sourceFile); - for (var name_36 in nameTable) { - if (!uniqueNames[name_36]) { - uniqueNames[name_36] = name_36; - var displayName = getCompletionEntryDisplayName(name_36, target, true); + for (var name_32 in nameTable) { + if (!uniqueNames[name_32]) { + uniqueNames[name_32] = name_32; + var displayName = getCompletionEntryDisplayName(name_32, target, true); if (displayName) { var entry = { name: displayName, @@ -39614,7 +40218,7 @@ var ts; function getSymbolKind(symbol, location) { var flags = symbol.getFlags(); if (flags & 32) - return ts.getDeclarationOfKind(symbol, 186) ? + return ts.getDeclarationOfKind(symbol, 188) ? ScriptElementKind.localClassElement : ScriptElementKind.classElement; if (flags & 384) return ScriptElementKind.enumElement; @@ -39710,14 +40314,14 @@ var ts; var signature; type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 166) { + if (location.parent && location.parent.kind === 168) { var right = location.parent.name; if (right === location || (right && right.getFullWidth() === 0)) { location = location.parent; } } var callExpression; - if (location.kind === 168 || location.kind === 169) { + if (location.kind === 170 || location.kind === 171) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -39729,7 +40333,7 @@ var ts; if (!signature && candidateSignatures.length) { signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 169 || callExpression.expression.kind === 95; + var useConstructSignatures = callExpression.kind === 171 || callExpression.expression.kind === 95; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target) && !ts.contains(allSignatures, signature)) { signature = allSignatures.length ? allSignatures[0] : undefined; @@ -39759,16 +40363,16 @@ var ts; case ScriptElementKind.letElement: case ScriptElementKind.parameterElement: case ScriptElementKind.localVariableElement: - displayParts.push(ts.punctuationPart(ts.SyntaxKind.ColonToken)); + displayParts.push(ts.punctuationPart(54)); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(ts.SyntaxKind.NewKeyword)); + displayParts.push(ts.keywordPart(92)); displayParts.push(ts.spacePart()); } - if (!(type.flags & ts.TypeFlags.Anonymous)) { - ts.addRange(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, undefined, ts.SymbolFormatFlags.WriteTypeParametersOrArguments)); + if (!(type.flags & 65536)) { + ts.addRange(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, undefined, 1)); } - addSignatureDisplayParts(signature, allSignatures, ts.TypeFormatFlags.WriteArrowStyleSignature); + addSignatureDisplayParts(signature, allSignatures, 8); break; default: addSignatureDisplayParts(signature, allSignatures); @@ -39800,7 +40404,7 @@ var ts; } } if (symbolFlags & 32 && !hasAddedSymbolInfo) { - if (ts.getDeclarationOfKind(symbol, 186)) { + if (ts.getDeclarationOfKind(symbol, 188)) { pushTypePart(ScriptElementKind.localClassElement); } else { @@ -39840,7 +40444,7 @@ var ts; } if (symbolFlags & 1536) { addNewLineIfDisplayPartsExist(); - var declaration = ts.getDeclarationOfKind(symbol, 218); + var declaration = ts.getDeclarationOfKind(symbol, 220); var isNamespace = declaration && declaration.name && declaration.name.kind === 69; displayParts.push(ts.keywordPart(isNamespace ? 126 : 125)); displayParts.push(ts.spacePart()); @@ -39861,32 +40465,34 @@ var ts; writeTypeParametersOfSymbol(symbol.parent, enclosingDeclaration); } else { - var container = ts.getContainingFunction(location); - if (container) { - var signatureDeclaration = ts.getDeclarationOfKind(symbol, 137).parent; - var signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration); - if (signatureDeclaration.kind === 148) { - displayParts.push(ts.keywordPart(92)); + var declaration = ts.getDeclarationOfKind(symbol, 137); + ts.Debug.assert(declaration !== undefined); + declaration = declaration.parent; + if (declaration) { + if (ts.isFunctionLikeKind(declaration.kind)) { + var signature = typeChecker.getSignatureFromDeclaration(declaration); + if (declaration.kind === 148) { + displayParts.push(ts.keywordPart(92)); + displayParts.push(ts.spacePart()); + } + else if (declaration.kind !== 147 && declaration.name) { + addFullSymbolName(declaration.symbol); + } + ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32)); + } + else { + displayParts.push(ts.keywordPart(132)); displayParts.push(ts.spacePart()); + addFullSymbolName(declaration.symbol); + writeTypeParametersOfSymbol(declaration.symbol, sourceFile); } - else if (signatureDeclaration.kind !== 147 && signatureDeclaration.name) { - addFullSymbolName(signatureDeclaration.symbol); - } - ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32)); - } - else { - var declaration = ts.getDeclarationOfKind(symbol, 137).parent; - displayParts.push(ts.keywordPart(132)); - displayParts.push(ts.spacePart()); - addFullSymbolName(declaration.symbol); - writeTypeParametersOfSymbol(declaration.symbol, sourceFile); } } } if (symbolFlags & 8) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 247) { + if (declaration.kind === 249) { var constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); @@ -39902,7 +40508,7 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 221) { + if (declaration.kind === 223) { var importEqualsDeclaration = declaration; if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); @@ -40032,9 +40638,10 @@ var ts; if (!symbol) { switch (node.kind) { case 69: - case 166: + case 168: case 135: case 97: + case 161: case 95: var type = typeChecker.getTypeAtLocation(node); if (type) { @@ -40108,7 +40715,7 @@ var ts; var definition; ts.forEach(signatureDeclarations, function (d) { if ((selectConstructors && d.kind === 144) || - (!selectConstructors && (d.kind === 213 || d.kind === 143 || d.kind === 142))) { + (!selectConstructors && (d.kind === 215 || d.kind === 143 || d.kind === 142))) { declarations.push(d); if (d.body) definition = d; @@ -40163,7 +40770,7 @@ var ts; symbol = typeChecker.getAliasedSymbol(symbol); } } - if (node.parent.kind === 246) { + if (node.parent.kind === 248) { var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; @@ -40236,6 +40843,7 @@ var ts; function getSemanticDocumentHighlights(node) { if (node.kind === 69 || node.kind === 97 || + node.kind === 161 || node.kind === 95 || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { @@ -40287,58 +40895,58 @@ var ts; switch (node.kind) { case 88: case 80: - if (hasKind(node.parent, 196)) { + if (hasKind(node.parent, 198)) { return getIfElseOccurrences(node.parent); } break; case 94: - if (hasKind(node.parent, 204)) { + if (hasKind(node.parent, 206)) { return getReturnOccurrences(node.parent); } break; case 98: - if (hasKind(node.parent, 208)) { + if (hasKind(node.parent, 210)) { return getThrowOccurrences(node.parent); } break; case 72: - if (hasKind(parent(parent(node)), 209)) { + if (hasKind(parent(parent(node)), 211)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; case 100: case 85: - if (hasKind(parent(node), 209)) { + if (hasKind(parent(node), 211)) { return getTryCatchFinallyOccurrences(node.parent); } break; case 96: - if (hasKind(node.parent, 206)) { + if (hasKind(node.parent, 208)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; case 71: case 77: - if (hasKind(parent(parent(parent(node))), 206)) { + if (hasKind(parent(parent(parent(node))), 208)) { return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case 70: case 75: - if (hasKind(node.parent, 203) || hasKind(node.parent, 202)) { + if (hasKind(node.parent, 205) || hasKind(node.parent, 204)) { return getBreakOrContinueStatementOccurrences(node.parent); } break; case 86: - if (hasKind(node.parent, 199) || - hasKind(node.parent, 200) || - hasKind(node.parent, 201)) { + if (hasKind(node.parent, 201) || + hasKind(node.parent, 202) || + hasKind(node.parent, 203)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 104: case 79: - if (hasKind(node.parent, 198) || hasKind(node.parent, 197)) { + if (hasKind(node.parent, 200) || hasKind(node.parent, 199)) { return getLoopBreakContinueOccurrences(node.parent); } break; @@ -40354,8 +40962,8 @@ var ts; } break; default: - if (ts.isModifier(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 193)) { + if (ts.isModifierKind(node.kind) && node.parent && + (ts.isDeclaration(node.parent) || node.parent.kind === 195)) { return getModifierOccurrences(node.kind, node.parent); } } @@ -40367,10 +40975,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 208) { + if (node.kind === 210) { statementAccumulator.push(node); } - else if (node.kind === 209) { + else if (node.kind === 211) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -40391,10 +40999,10 @@ var ts; var child = throwStatement; while (child.parent) { var parent_12 = child.parent; - if (ts.isFunctionBlock(parent_12) || parent_12.kind === 248) { + if (ts.isFunctionBlock(parent_12) || parent_12.kind === 250) { return parent_12; } - if (parent_12.kind === 209) { + if (parent_12.kind === 211) { var tryStatement = parent_12; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; @@ -40409,7 +41017,7 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 203 || node.kind === 202) { + if (node.kind === 205 || node.kind === 204) { statementAccumulator.push(node); } else if (!ts.isFunctionLike(node)) { @@ -40424,15 +41032,15 @@ var ts; function getBreakOrContinueOwner(statement) { for (var node_2 = statement.parent; node_2; node_2 = node_2.parent) { switch (node_2.kind) { - case 206: - if (statement.kind === 202) { + case 208: + if (statement.kind === 204) { continue; } - case 199: - case 200: case 201: - case 198: - case 197: + case 202: + case 203: + case 200: + case 199: if (!statement.label || isLabeledBy(node_2, statement.label.text)) { return node_2; } @@ -40449,24 +41057,24 @@ var ts; function getModifierOccurrences(modifier, declaration) { var container = declaration.parent; if (ts.isAccessibilityModifier(modifier)) { - if (!(container.kind === 214 || - container.kind === 186 || + if (!(container.kind === 216 || + container.kind === 188 || (declaration.kind === 138 && hasKind(container, 144)))) { return undefined; } } else if (modifier === 113) { - if (!(container.kind === 214 || container.kind === 186)) { + if (!(container.kind === 216 || container.kind === 188)) { return undefined; } } else if (modifier === 82 || modifier === 122) { - if (!(container.kind === 219 || container.kind === 248)) { + if (!(container.kind === 221 || container.kind === 250)) { return undefined; } } else if (modifier === 115) { - if (!(container.kind === 214 || declaration.kind === 214)) { + if (!(container.kind === 216 || declaration.kind === 216)) { return undefined; } } @@ -40477,8 +41085,8 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 219: - case 248: + case 221: + case 250: if (modifierFlag & 128) { nodes = declaration.members.concat(declaration); } @@ -40489,8 +41097,8 @@ var ts; case 144: nodes = container.parameters.concat(container.parent.members); break; - case 214: - case 186: + case 216: + case 188: nodes = container.members; if (modifierFlag & 56) { var constructor = ts.forEach(container.members, function (member) { @@ -40570,7 +41178,7 @@ var ts; function getLoopBreakContinueOccurrences(loopNode) { var keywords = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), 86, 104, 79)) { - if (loopNode.kind === 197) { + if (loopNode.kind === 199) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], 104)) { @@ -40591,13 +41199,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { + case 201: + case 202: + case 203: case 199: case 200: - case 201: - case 197: - case 198: return getLoopBreakContinueOccurrences(owner); - case 206: + case 208: return getSwitchCaseDefaultOccurrences(owner); } } @@ -40647,7 +41255,7 @@ var ts; } function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); - if (!(func && hasKind(func.body, 192))) { + if (!(func && hasKind(func.body, 194))) { return undefined; } var keywords = []; @@ -40661,7 +41269,7 @@ var ts; } function getIfElseOccurrences(ifStatement) { var keywords = []; - while (hasKind(ifStatement.parent, 196) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 198) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } while (ifStatement) { @@ -40672,7 +41280,7 @@ var ts; break; } } - if (!hasKind(ifStatement.elseStatement, 196)) { + if (!hasKind(ifStatement.elseStatement, 198)) { break; } ifStatement = ifStatement.elseStatement; @@ -40776,7 +41384,7 @@ var ts; return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 97) { + if (node.kind === 97 || node.kind === 161) { return getReferencesForThisKeyword(node, sourceFiles); } if (node.kind === 95) { @@ -40801,8 +41409,8 @@ var ts; } else { var internedName = getInternedName(symbol, node, declarations); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; cancellationToken.throwIfCancellationRequested(); var nameTable = getNameTable(sourceFile); if (ts.lookUp(nameTable, internedName)) { @@ -40830,7 +41438,7 @@ var ts; } function isImportOrExportSpecifierImportSymbol(symbol) { return (symbol.flags & 8388608) && ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 226 || declaration.kind === 230; + return declaration.kind === 228 || declaration.kind === 232; }); } function getInternedName(symbol, location, declarations) { @@ -40843,13 +41451,13 @@ var ts; } function getSymbolScope(symbol) { var valueDeclaration = symbol.valueDeclaration; - if (valueDeclaration && (valueDeclaration.kind === 173 || valueDeclaration.kind === 186)) { + if (valueDeclaration && (valueDeclaration.kind === 175 || valueDeclaration.kind === 188)) { return valueDeclaration; } if (symbol.flags & (4 | 8192)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 16) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 214); + return ts.getAncestor(privateDeclaration, 216); } } if (symbol.flags & 8388608) { @@ -40858,7 +41466,7 @@ var ts; if (symbol.parent || (symbol.flags & 268435456)) { return undefined; } - var scope = undefined; + var scope; var declarations = symbol.getDeclarations(); if (declarations) { for (var _i = 0, declarations_8 = declarations; _i < declarations_8.length; _i++) { @@ -40870,7 +41478,7 @@ var ts; if (scope && scope !== container) { return undefined; } - if (container.kind === 248 && !ts.isExternalModule(container)) { + if (container.kind === 250 && !ts.isExternalModule(container)) { return undefined; } scope = container; @@ -41064,19 +41672,19 @@ var ts; staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; break; - case 248: + case 250: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } - case 213: - case 173: + case 215: + case 175: break; default: return undefined; } var references = []; var possiblePositions; - if (searchSpaceNode.kind === 248) { + if (searchSpaceNode.kind === 250) { ts.forEach(sourceFiles, function (sourceFile) { possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); @@ -41102,13 +41710,13 @@ var ts; ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 97) { + if (!node || (node.kind !== 97 && node.kind !== 161)) { return; } var container = ts.getThisContainer(node, false); switch (searchSpaceNode.kind) { - case 173: - case 213: + case 175: + case 215: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } @@ -41119,14 +41727,14 @@ var ts; result.push(getReferenceEntryFromNode(node)); } break; - case 186: - case 214: + case 188: + case 216: if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 64) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 248: - if (container.kind === 248 && !ts.isExternalModule(container)) { + case 250: + if (container.kind === 250 && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -41148,6 +41756,10 @@ var ts; result.push(shorthandValueSymbol); } } + if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 138 && + ts.isParameterPropertyDeclaration(symbol.valueDeclaration)) { + result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); + } ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) { if (rootSymbol !== symbol) { result.push(rootSymbol); @@ -41161,11 +41773,11 @@ var ts; function getPropertySymbolsFromBaseTypes(symbol, propertyName, result) { if (symbol && symbol.flags & (32 | 64)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 214) { + if (declaration.kind === 216) { getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 215) { + else if (declaration.kind === 217) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -41215,17 +41827,17 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeChecker.getContextualType(objectLiteral); - var name_37 = node.text; + var name_33 = node.text; if (contextualType) { if (contextualType.flags & 16384) { - var unionProperty = contextualType.getProperty(name_37); + var unionProperty = contextualType.getProperty(name_33); if (unionProperty) { return [unionProperty]; } else { var result_4 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_37); + var symbol = t.getProperty(name_33); if (symbol) { result_4.push(symbol); } @@ -41234,7 +41846,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_37); + var symbol_1 = contextualType.getProperty(name_33); if (symbol_1) { return [symbol_1]; } @@ -41279,10 +41891,10 @@ var ts; } var parent = node.parent; if (parent) { - if (parent.kind === 180 || parent.kind === 179) { + if (parent.kind === 182 || parent.kind === 181) { return true; } - else if (parent.kind === 181 && parent.left === node) { + else if (parent.kind === 183 && parent.left === node) { var operator = parent.operatorToken.kind; return 56 <= operator && operator <= 68; } @@ -41293,9 +41905,6 @@ var ts; synchronizeHostData(); return ts.NavigateTo.getNavigateToItems(program, cancellationToken, searchValue, maxResultCount); } - function containErrors(diagnostics) { - return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === ts.DiagnosticCategory.Error; }); - } function getEmitOutput(fileName) { synchronizeHostData(); var sourceFile = getValidSourceFile(fileName); @@ -41316,32 +41925,32 @@ var ts; function getMeaningFromDeclaration(node) { switch (node.kind) { case 138: - case 211: - case 163: + case 213: + case 165: case 141: case 140: - case 245: - case 246: case 247: + case 248: + case 249: case 143: case 142: case 144: case 145: case 146: - case 213: - case 173: - case 174: - case 244: + case 215: + case 175: + case 176: + case 246: return 1; case 137: - case 215: - case 216: + case 217: + case 218: case 155: return 2; - case 214: - case 217: + case 216: + case 219: return 1 | 2; - case 218: + case 220: if (node.name.kind === 9) { return 4 | 1; } @@ -41351,14 +41960,14 @@ var ts; else { return 4; } - case 225: - case 226: - case 221: - case 222: case 227: case 228: + case 223: + case 224: + case 229: + case 230: return 1 | 2 | 4; - case 248: + case 250: return 4 | 1; } return 1 | 2 | 4; @@ -41368,8 +41977,9 @@ var ts; node = node.parent; } return node.parent.kind === 151 || - (node.parent.kind === 188 && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || - node.kind === 97 && !ts.isExpression(node); + (node.parent.kind === 190 && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + (node.kind === 97 && !ts.isExpression(node)) || + node.kind === 161; } function isNamespaceReference(node) { return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); @@ -41377,16 +41987,16 @@ var ts; function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 166) { - while (root.parent && root.parent.kind === 166) { + if (root.parent.kind === 168) { + while (root.parent && root.parent.kind === 168) { root = root.parent; } isLastClause = root.name === node; } - if (!isLastClause && root.parent.kind === 188 && root.parent.parent.kind === 243) { + if (!isLastClause && root.parent.kind === 190 && root.parent.parent.kind === 245) { var decl = root.parent.parent.parent; - return (decl.kind === 214 && root.parent.parent.token === 106) || - (decl.kind === 215 && root.parent.parent.token === 83); + return (decl.kind === 216 && root.parent.parent.token === 106) || + (decl.kind === 217 && root.parent.parent.token === 83); } return false; } @@ -41411,13 +42021,13 @@ var ts; ts.Debug.assert(node.kind === 69); if (node.parent.kind === 135 && node.parent.right === node && - node.parent.parent.kind === 221) { + node.parent.parent.kind === 223) { return 1 | 2 | 4; } return 4; } function getMeaningFromLocation(node) { - if (node.parent.kind === 227) { + if (node.parent.kind === 229) { return 1 | 2 | 4; } else if (isInRightSideOfImport(node)) { @@ -41451,14 +42061,16 @@ var ts; return; } switch (node.kind) { - case 166: + case 168: case 135: case 9: + case 162: case 84: case 99: case 93: case 95: case 97: + case 161: case 69: break; default: @@ -41470,7 +42082,7 @@ var ts; nodeForStartPos = nodeForStartPos.parent; } else if (isNameOfModuleDeclaration(nodeForStartPos)) { - if (nodeForStartPos.parent.parent.kind === 218 && + if (nodeForStartPos.parent.parent.kind === 220 && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { nodeForStartPos = nodeForStartPos.parent.parent.name; } @@ -41490,17 +42102,17 @@ var ts; } function getNavigationBarItems(fileName) { var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); - return ts.NavigationBar.getNavigationBarItems(sourceFile); + return ts.NavigationBar.getNavigationBarItems(sourceFile, host.getCompilationSettings()); } function getSemanticClassifications(fileName, span) { return convertClassifications(getEncodedSemanticClassifications(fileName, span)); } function checkForClassificationCancellation(kind) { switch (kind) { - case 218: - case 214: + case 220: + case 216: + case 217: case 215: - case 213: cancellationToken.throwIfCancellationRequested(); } } @@ -41548,7 +42160,7 @@ var ts; return undefined; function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 218 && + return declaration.kind === 220 && ts.getModuleInstanceState(declaration) === 1; }); } @@ -41684,16 +42296,16 @@ var ts; pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, 18); pos = tag.tagName.end; switch (tag.kind) { - case 267: + case 269: processJSDocParameterTag(tag); break; - case 270: + case 272: processJSDocTemplateTag(tag); break; - case 269: + case 271: processElement(tag.typeExpression); break; - case 268: + case 270: processElement(tag.typeExpression); break; } @@ -41774,16 +42386,16 @@ var ts; if (ts.isPunctuation(tokenKind)) { if (token) { if (tokenKind === 56) { - if (token.parent.kind === 211 || + if (token.parent.kind === 213 || token.parent.kind === 141 || token.parent.kind === 138) { return 5; } } - if (token.parent.kind === 181 || - token.parent.kind === 179 || - token.parent.kind === 180 || - token.parent.kind === 182) { + if (token.parent.kind === 183 || + token.parent.kind === 181 || + token.parent.kind === 182 || + token.parent.kind === 184) { return 5; } } @@ -41792,7 +42404,7 @@ var ts; else if (tokenKind === 8) { return 4; } - else if (tokenKind === 9) { + else if (tokenKind === 9 || tokenKind === 162) { return 6; } else if (tokenKind === 10) { @@ -41804,7 +42416,7 @@ var ts; else if (tokenKind === 69) { if (token) { switch (token.parent.kind) { - case 214: + case 216: if (token.parent.name === token) { return 11; } @@ -41814,17 +42426,17 @@ var ts; return 15; } return; - case 215: + case 217: if (token.parent.name === token) { return 13; } return; - case 217: + case 219: if (token.parent.name === token) { return 12; } return; - case 218: + case 220: if (token.parent.name === token) { return 14; } @@ -41834,17 +42446,17 @@ var ts; return 17; } return; - case 235: + case 237: if (token.parent.tagName === token) { return 19; } return; - case 237: + case 239: if (token.parent.tagName === token) { return 20; } return; - case 234: + case 236: if (token.parent.tagName === token) { return 21; } @@ -41948,7 +42560,6 @@ var ts; return []; } function getDocCommentTemplateAtPosition(fileName, position) { - var start = new Date().getTime(); var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); if (ts.isInString(sourceFile, position) || ts.isInComment(sourceFile, position) || ts.hasDocComment(sourceFile, position)) { return undefined; @@ -41961,16 +42572,16 @@ var ts; var commentOwner; findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { switch (commentOwner.kind) { - case 213: + case 215: case 143: case 144: - case 214: - case 193: + case 216: + case 195: break findOwner; - case 248: + case 250: return undefined; - case 218: - if (commentOwner.parent.kind === 218) { + case 220: + if (commentOwner.parent.kind === 220) { return undefined; } break findOwner; @@ -42004,7 +42615,7 @@ var ts; if (ts.isFunctionLike(commentOwner)) { return commentOwner.parameters; } - if (commentOwner.kind === 193) { + if (commentOwner.kind === 195) { var varStatement = commentOwner; var varDeclarations = varStatement.declarationList.declarations; if (varDeclarations.length === 1 && varDeclarations[0].initializer) { @@ -42014,14 +42625,14 @@ var ts; return emptyArray; } function getParametersFromRightHandSideOfAssignment(rightHandSide) { - while (rightHandSide.kind === 172) { + while (rightHandSide.kind === 174) { rightHandSide = rightHandSide.expression; } switch (rightHandSide.kind) { - case 173: - case 174: + case 175: + case 176: return rightHandSide.parameters; - case 186: + case 188: for (var _i = 0, _a = rightHandSide.members; _i < _a.length; _i++) { var member = _a[_i]; if (member.kind === 144) { @@ -42102,12 +42713,16 @@ var ts; var declarations = symbol.getDeclarations(); if (declarations && declarations.length > 0) { var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); + var canonicalDefaultLibName = getCanonicalFileName(ts.normalizePath(defaultLibFileName)); if (defaultLibFileName) { for (var _i = 0, declarations_10 = declarations; _i < declarations_10.length; _i++) { var current = declarations_10[_i]; var sourceFile_2 = current.getSourceFile(); + if (!sourceFile_2) { + continue; + } var canonicalName = getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)); - if (sourceFile_2 && getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { + if (canonicalName === canonicalDefaultLibName) { return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library)); } } @@ -42117,10 +42732,10 @@ var ts; if (kind) { return { canRename: true, - localizedErrorMessage: undefined, - displayName: displayName, - fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kind: kind, + displayName: displayName, + localizedErrorMessage: undefined, + fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kindModifiers: getSymbolModifiers(symbol), triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth()) }; @@ -42200,7 +42815,7 @@ var ts; case 9: case 8: if (ts.isDeclarationName(node) || - node.parent.kind === 232 || + node.parent.kind === 234 || isArgumentOfElementAccessExpression(node)) { nameTable[node.text] = node.text; } @@ -42213,7 +42828,7 @@ var ts; function isArgumentOfElementAccessExpression(node) { return node && node.parent && - node.parent.kind === 167 && + node.parent.kind === 169 && node.parent.argumentExpression === node; } function createClassifier() { @@ -42301,7 +42916,7 @@ var ts; } switch (lexState) { case 3: - text = '"\\\n' + text; + text = "\"\\\n" + text; offset = 3; break; case 2: @@ -42395,7 +43010,7 @@ var ts; var end = scanner.getTextPos(); addResult(start, end, classFromKind(token)); if (end >= text.length) { - if (token === 9) { + if (token === 9 || token === 162) { var tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { var lastCharIndex = tokenText.length - 1; @@ -42525,6 +43140,7 @@ var ts; case 8: return 4; case 9: + case 162: return 6; case 10: return 7; @@ -42681,9 +43297,6 @@ var ts; this.byteLength = byteLength; this.hrtime = hrtime; this.logger = logger; - this.pendingOperation = false; - this.fileHash = {}; - this.nextFileId = 1; this.changeSeq = 0; this.handlers = (_a = {}, _a[CommandNames.Exit] = function () { @@ -42708,7 +43321,7 @@ var ts; }, _a[CommandNames.Open] = function (request) { var openArgs = request.arguments; - _this.openClientFile(openArgs.file); + _this.openClientFile(openArgs.file, openArgs.fileContent); return { responseRequired: false }; }, _a[CommandNames.Quickinfo] = function (request) { @@ -42888,10 +43501,6 @@ var ts; this.logError(err, "syntactic check"); } }; - Session.prototype.errorCheck = function (file, project) { - this.syntacticCheck(file, project); - this.semanticCheck(file, project); - }; Session.prototype.reloadProjects = function () { this.projectService.reloadProjects(); }; @@ -42922,7 +43531,8 @@ var ts; var index = 0; var checkOne = function () { if (matchSeq(seq)) { - var checkSpec = checkList[index++]; + var checkSpec = checkList[index]; + index++; if (checkSpec.project.getSourceFileFromName(checkSpec.fileName, requireOpen)) { _this.syntacticCheck(checkSpec.fileName, checkSpec.project); _this.immediateId = setImmediate(function () { @@ -43141,9 +43751,9 @@ var ts; symbolDisplayString: displayString }; }; - Session.prototype.openClientFile = function (fileName) { + Session.prototype.openClientFile = function (fileName, fileContent) { var file = ts.normalizePath(fileName); - this.projectService.openClientFile(file); + this.projectService.openClientFile(file, fileContent); }; Session.prototype.getQuickInfo = function (line, offset, fileName) { var file = ts.normalizePath(fileName); @@ -43454,7 +44064,7 @@ var ts; }; Session.prototype.getDiagnosticsForProject = function (delay, fileName) { var _this = this; - var _a = this.getProjectInfo(fileName, true), configFileName = _a.configFileName, fileNames = _a.fileNames; + var fileNames = this.getProjectInfo(fileName, true).fileNames; var fileNamesInProject = fileNames.filter(function (value, index, array) { return value.indexOf("lib.d.ts") < 0; }); var highPriorityFiles = []; var mediumPriorityFiles = []; @@ -43546,7 +44156,7 @@ var ts; } }; return Session; - })(); + }()); server.Session = Session; })(server = ts.server || (ts.server = {})); })(ts || (ts = {})); @@ -43608,7 +44218,7 @@ var ts; return this.snap().getChangeRange(oldSnapshot); }; return ScriptInfo; - })(); + }()); server.ScriptInfo = ScriptInfo; var LSHost = (function () { function LSHost(host, project) { @@ -43621,7 +44231,8 @@ var ts; this.filenameToScript = ts.createFileMap(); this.moduleResolutionHost = { fileExists: function (fileName) { return _this.fileExists(fileName); }, - readFile: function (fileName) { return _this.host.readFile(fileName); } + readFile: function (fileName) { return _this.host.readFile(fileName); }, + directoryExists: function (directoryName) { return _this.host.directoryExists(directoryName); } }; } LSHost.prototype.resolveModuleNames = function (moduleNames, containingFile) { @@ -43748,12 +44359,10 @@ var ts; throw new Error("No script with name '" + filename + "'"); }; LSHost.prototype.resolvePath = function (path) { - var start = new Date().getTime(); var result = this.host.resolvePath(path); return result; }; LSHost.prototype.fileExists = function (path) { - var start = new Date().getTime(); var result = this.host.fileExists(path); return result; }; @@ -43790,32 +44399,8 @@ var ts; return { line: lineOffset.line, offset: lineOffset.offset + 1 }; }; return LSHost; - })(); + }()); server.LSHost = LSHost; - function getAbsolutePath(filename, directory) { - var rootLength = ts.getRootLength(filename); - if (rootLength > 0) { - return filename; - } - else { - var splitFilename = filename.split("/"); - var splitDir = directory.split("/"); - var i = 0; - var dirTail = 0; - var sflen = splitFilename.length; - while ((i < sflen) && (splitFilename[i].charAt(0) == ".")) { - var dots = splitFilename[i]; - if (dots == "..") { - dirTail++; - } - else if (dots != ".") { - return undefined; - } - i++; - } - return splitDir.slice(0, splitDir.length - dirTail).concat(splitFilename.slice(i)).join("/"); - } - } var Project = (function () { function Project(projectService, projectOptions) { this.projectService = projectService; @@ -43902,7 +44487,7 @@ var ts; } }; return Project; - })(); + }()); server.Project = Project; function copyListRemovingItem(item, list) { var copiedList = []; @@ -43926,7 +44511,7 @@ var ts; this.openFileRootsConfigured = []; this.directoryWatchersForTsconfig = {}; this.directoryWatchersRefCount = {}; - this.timerForDetectingProjectFilelistChanges = {}; + this.timerForDetectingProjectFileListChanges = {}; this.addDefaultHostConfiguration(); } ProjectService.prototype.addDefaultHostConfiguration = function () { @@ -43959,22 +44544,22 @@ var ts; } }; ProjectService.prototype.directoryWatchedForSourceFilesChanged = function (project, fileName) { - if (fileName && !ts.isSupportedSourceFileName(fileName)) { + if (fileName && !ts.isSupportedSourceFileName(fileName, project.projectOptions ? project.projectOptions.compilerOptions : undefined)) { return; } this.log("Detected source file changes: " + fileName); - this.startTimerForDetectingProjectFilelistChanges(project); + this.startTimerForDetectingProjectFileListChanges(project); }; - ProjectService.prototype.startTimerForDetectingProjectFilelistChanges = function (project) { + ProjectService.prototype.startTimerForDetectingProjectFileListChanges = function (project) { var _this = this; - if (this.timerForDetectingProjectFilelistChanges[project.projectFilename]) { - clearTimeout(this.timerForDetectingProjectFilelistChanges[project.projectFilename]); + if (this.timerForDetectingProjectFileListChanges[project.projectFilename]) { + clearTimeout(this.timerForDetectingProjectFileListChanges[project.projectFilename]); } - this.timerForDetectingProjectFilelistChanges[project.projectFilename] = setTimeout(function () { return _this.handleProjectFilelistChanges(project); }, 250); + this.timerForDetectingProjectFileListChanges[project.projectFilename] = setTimeout(function () { return _this.handleProjectFileListChanges(project); }, 250); }; - ProjectService.prototype.handleProjectFilelistChanges = function (project) { + ProjectService.prototype.handleProjectFileListChanges = function (project) { var _this = this; - var _a = this.configFileToProjectOptions(project.projectFilename), succeeded = _a.succeeded, projectOptions = _a.projectOptions, error = _a.error; + var projectOptions = this.configFileToProjectOptions(project.projectFilename).projectOptions; var newRootFiles = projectOptions.files.map((function (f) { return _this.getCanonicalFileName(f); })); var currentRootFiles = project.getRootFiles().map((function (f) { return _this.getCanonicalFileName(f); })); if (!ts.arrayIsEqualTo(currentRootFiles && currentRootFiles.sort(), newRootFiles && newRootFiles.sort())) { @@ -43989,7 +44574,7 @@ var ts; return; } this.log("Detected newly added tsconfig file: " + fileName); - var _a = this.configFileToProjectOptions(fileName), succeeded = _a.succeeded, projectOptions = _a.projectOptions, error = _a.error; + var projectOptions = this.configFileToProjectOptions(fileName).projectOptions; var rootFilesInTsconfig = projectOptions.files.map(function (f) { return _this.getCanonicalFileName(f); }); var openFileRoots = this.openFileRoots.map(function (s) { return _this.getCanonicalFileName(s.fileName); }); for (var _i = 0, openFileRoots_1 = openFileRoots; _i < openFileRoots_1.length; _i++) { @@ -44108,7 +44693,8 @@ var ts; else { for (var _i = 0, _a = project.directoriesWatchedForTsconfig; _i < _a.length; _i++) { var directory = _a[_i]; - if (!(--project.projectService.directoryWatchersRefCount[directory])) { + project.projectService.directoryWatchersRefCount[directory]--; + if (!project.projectService.directoryWatchersRefCount[directory]) { this.log("Close directory watcher for: " + directory); project.projectService.directoryWatchersForTsconfig[directory].close(); delete project.projectService.directoryWatchersForTsconfig[directory]; @@ -44308,14 +44894,14 @@ var ts; filename = ts.normalizePath(filename); return ts.lookUp(this.filenameToScriptInfo, filename); }; - ProjectService.prototype.openFile = function (fileName, openedByClient) { + ProjectService.prototype.openFile = function (fileName, openedByClient, fileContent) { var _this = this; fileName = ts.normalizePath(fileName); var info = ts.lookUp(this.filenameToScriptInfo, fileName); if (!info) { var content; if (this.host.fileExists(fileName)) { - content = this.host.readFile(fileName); + content = fileContent || this.host.readFile(fileName); } if (!content) { if (openedByClient) { @@ -44332,6 +44918,9 @@ var ts; } } if (info) { + if (fileContent) { + info.svc.reload(fileContent); + } if (openedByClient) { info.isOpen = true; } @@ -44352,9 +44941,9 @@ var ts; } return undefined; }; - ProjectService.prototype.openClientFile = function (fileName) { + ProjectService.prototype.openClientFile = function (fileName, fileContent) { this.openOrUpdateConfiguredProjectForFile(fileName); - var info = this.openFile(fileName, true); + var info = this.openFile(fileName, true, fileContent); this.addOpenFile(info); this.printProjects(); return info; @@ -44568,7 +45157,7 @@ var ts; return project; }; return ProjectService; - })(); + }()); server.ProjectService = ProjectService; var CompilerService = (function () { function CompilerService(project, opt) { @@ -44607,11 +45196,12 @@ var ts; InsertSpaceAfterFunctionKeywordForAnonymousFunctions: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, PlaceOpenBraceOnNewLineForFunctions: false, PlaceOpenBraceOnNewLineForControlBlocks: false }; return CompilerService; - })(); + }()); server.CompilerService = CompilerService; (function (CharRangeSection) { CharRangeSection[CharRangeSection["PreStart"] = 0] = "PreStart"; @@ -44630,7 +45220,7 @@ var ts; BaseLineIndexWalker.prototype.leaf = function (rangeStart, rangeLength, ll) { }; return BaseLineIndexWalker; - })(); + }()); var EditWalker = (function (_super) { __extends(EditWalker, _super); function EditWalker() { @@ -44814,7 +45404,7 @@ var ts; } }; return EditWalker; - })(BaseLineIndexWalker); + }(BaseLineIndexWalker)); var TextChange = (function () { function TextChange(pos, deleteLen, insertedText) { this.pos = pos; @@ -44825,7 +45415,7 @@ var ts; return ts.createTextChangeRange(ts.createTextSpan(this.pos, this.deleteLen), this.insertedText ? this.insertedText.length : 0); }; return TextChange; - })(); + }()); server.TextChange = TextChange; var ScriptVersionCache = (function () { function ScriptVersionCache() { @@ -44929,7 +45519,7 @@ var ts; ScriptVersionCache.changeLengthThreshold = 256; ScriptVersionCache.maxVersions = 8; return ScriptVersionCache; - })(); + }()); server.ScriptVersionCache = ScriptVersionCache; var LineIndexSnapshot = (function () { function LineIndexSnapshot(version, cache) { @@ -44948,7 +45538,8 @@ var ts; var count = 1; var pos = 0; this.index.every(function (ll, s, len) { - starts[count++] = pos; + starts[count] = pos; + count++; pos += ll.text.length; return true; }, 0); @@ -44956,9 +45547,9 @@ var ts; }; LineIndexSnapshot.prototype.getLineMapper = function () { var _this = this; - return (function (line) { + return function (line) { return _this.index.lineNumberToInfo(line).offset; - }); + }; }; LineIndexSnapshot.prototype.getTextChangeRangeSinceVersion = function (scriptVersion) { if (this.version <= scriptVersion) { @@ -44973,7 +45564,7 @@ var ts; return this.getTextChangeRangeSinceVersion(oldSnap.version); }; return LineIndexSnapshot; - })(); + }()); server.LineIndexSnapshot = LineIndexSnapshot; var LineIndex = (function () { function LineIndex() { @@ -45145,7 +45736,7 @@ var ts; return { lines: lines, lineMap: lineStarts }; }; return LineIndex; - })(); + }()); server.LineIndex = LineIndex; var LineNode = (function () { function LineNode() { @@ -45194,7 +45785,8 @@ var ts; while (adjustedStart >= childCharCount) { this.skipChild(adjustedStart, rangeLength, childIndex, walkFns, CharRangeSection.PreStart); adjustedStart -= childCharCount; - child = this.children[++childIndex]; + childIndex++; + child = this.children[childIndex]; childCharCount = child.charCount(); } if ((adjustedStart + rangeLength) <= childCharCount) { @@ -45207,14 +45799,16 @@ var ts; return; } var adjustedLength = rangeLength - (childCharCount - adjustedStart); - child = this.children[++childIndex]; + childIndex++; + child = this.children[childIndex]; childCharCount = child.charCount(); while (adjustedLength > childCharCount) { if (this.execWalk(0, childCharCount, walkFns, childIndex, CharRangeSection.Mid)) { return; } adjustedLength -= childCharCount; - child = this.children[++childIndex]; + childIndex++; + child = this.children[childIndex]; childCharCount = child.charCount(); } if (adjustedLength > 0) { @@ -45332,7 +45926,8 @@ var ts; if (childIndex < clen) { splitNode = new LineNode(); while (childIndex < clen) { - splitNode.add(this.children[childIndex++]); + splitNode.add(this.children[childIndex]); + childIndex++; } splitNode.updateCounts(); } @@ -45370,7 +45965,9 @@ var ts; var nodeIndex = 0; childIndex++; while ((childIndex < lineCollectionCapacity) && (nodeIndex < nodeCount)) { - this.children[childIndex++] = nodes[nodeIndex++]; + this.children[childIndex] = nodes[nodeIndex]; + childIndex++; + nodeIndex++; } var splitNodes = []; var splitNodeCount = 0; @@ -45383,7 +45980,8 @@ var ts; } var splitNode = splitNodes[0]; while (nodeIndex < nodeCount) { - splitNode.add(nodes[nodeIndex++]); + splitNode.add(nodes[nodeIndex]); + nodeIndex++; if (splitNode.children.length === lineCollectionCapacity) { splitNodeIndex++; splitNode = splitNodes[splitNodeIndex]; @@ -45416,7 +46014,7 @@ var ts; return this.totalLines; }; return LineNode; - })(); + }()); server.LineNode = LineNode; var LineLeaf = (function () { function LineLeaf(text) { @@ -45441,7 +46039,7 @@ var ts; return 1; }; return LineLeaf; - })(); + }()); server.LineLeaf = LineLeaf; })(server = ts.server || (ts.server = {})); })(ts || (ts = {})); @@ -45449,9 +46047,7 @@ var ts; (function (ts) { var server; (function (server) { - var nodeproto = require("_debugger"); var readline = require("readline"); - var path = require("path"); var fs = require("fs"); var rl = readline.createInterface({ input: process.stdin, @@ -45519,7 +46115,7 @@ var ts; } }; return Logger; - })(); + }()); var IOSession = (function (_super) { __extends(IOSession, _super); function IOSession(host, logger) { @@ -45541,7 +46137,7 @@ var ts; }); }; return IOSession; - })(server.Session); + }(server.Session)); function parseLoggingEnvironmentString(logEnvStr) { var logEnv = {}; var args = logEnvStr.split(" "); @@ -45616,7 +46212,6 @@ var ts; var ScriptSnapshotShimAdapter = (function () { function ScriptSnapshotShimAdapter(scriptSnapshotShim) { this.scriptSnapshotShim = scriptSnapshotShim; - this.lineStartPositions = null; } ScriptSnapshotShimAdapter.prototype.getText = function (start, end) { return this.scriptSnapshotShim.getText(start, end); @@ -45639,7 +46234,7 @@ var ts; } }; return ScriptSnapshotShimAdapter; - })(); + }()); var LanguageServiceShimHostAdapter = (function () { function LanguageServiceShimHostAdapter(shimHost) { var _this = this; @@ -45655,6 +46250,9 @@ var ts; }); }; } + if ("directoryExists" in this.shimHost) { + this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; + } } LanguageServiceShimHostAdapter.prototype.log = function (s) { if (this.loggingEnabled) { @@ -45690,9 +46288,6 @@ var ts; return this.files = JSON.parse(encoded); }; LanguageServiceShimHostAdapter.prototype.getScriptSnapshot = function (fileName) { - if (this.files && this.files.indexOf(fileName) < 0) { - return undefined; - } var scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); return scriptSnapshot && new ScriptSnapshotShimAdapter(scriptSnapshot); }; @@ -45720,15 +46315,10 @@ var ts; return this.shimHost.getCurrentDirectory(); }; LanguageServiceShimHostAdapter.prototype.getDefaultLibFileName = function (options) { - try { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); - } - catch (e) { - return ""; - } + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); }; return LanguageServiceShimHostAdapter; - })(); + }()); ts.LanguageServiceShimHostAdapter = LanguageServiceShimHostAdapter; var ThrottledCancellationToken = (function () { function ThrottledCancellationToken(hostCancellationToken) { @@ -45745,19 +46335,17 @@ var ts; return false; }; return ThrottledCancellationToken; - })(); + }()); var CoreServicesShimHostAdapter = (function () { function CoreServicesShimHostAdapter(shimHost) { + var _this = this; this.shimHost = shimHost; + if ("directoryExists" in this.shimHost) { + this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; + } } CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude) { - var encoded; - try { - encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); - } - catch (e) { - encoded = this.shimHost.readDirectory(rootDir, extension); - } + var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); }; CoreServicesShimHostAdapter.prototype.fileExists = function (fileName) { @@ -45767,18 +46355,19 @@ var ts; return this.shimHost.readFile(fileName); }; return CoreServicesShimHostAdapter; - })(); + }()); ts.CoreServicesShimHostAdapter = CoreServicesShimHostAdapter; function simpleForwardCall(logger, actionDescription, action, logPerformance) { + var start; if (logPerformance) { logger.log(actionDescription); - var start = Date.now(); + start = Date.now(); } var result = action(); if (logPerformance) { var end = Date.now(); logger.log(actionDescription + " completed in " + (end - start) + " msec"); - if (typeof (result) === "string") { + if (typeof result === "string") { var str = result; if (str.length > 128) { str = str.substring(0, 128) + "..."; @@ -45811,7 +46400,7 @@ var ts; this.factory.unregisterShim(this); }; return ShimBase; - })(); + }()); function realizeDiagnostics(diagnostics, newLine) { return diagnostics.map(function (d) { return realizeDiagnostic(d, newLine); }); } @@ -45849,9 +46438,7 @@ var ts; _super.prototype.dispose.call(this, dummy); }; LanguageServiceShimObject.prototype.refresh = function (throwOnError) { - this.forwardJSONCall("refresh(" + throwOnError + ")", function () { - return null; - }); + this.forwardJSONCall("refresh(" + throwOnError + ")", function () { return null; }); }; LanguageServiceShimObject.prototype.cleanupSemanticCache = function () { var _this = this; @@ -45866,29 +46453,19 @@ var ts; }; LanguageServiceShimObject.prototype.getSyntacticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - var classifications = _this.languageService.getSyntacticClassifications(fileName, ts.createTextSpan(start, length)); - return classifications; - }); + return this.forwardJSONCall("getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return _this.languageService.getSyntacticClassifications(fileName, ts.createTextSpan(start, length)); }); }; LanguageServiceShimObject.prototype.getSemanticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - var classifications = _this.languageService.getSemanticClassifications(fileName, ts.createTextSpan(start, length)); - return classifications; - }); + return this.forwardJSONCall("getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return _this.languageService.getSemanticClassifications(fileName, ts.createTextSpan(start, length)); }); }; LanguageServiceShimObject.prototype.getEncodedSyntacticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - return convertClassifications(_this.languageService.getEncodedSyntacticClassifications(fileName, ts.createTextSpan(start, length))); - }); + return this.forwardJSONCall("getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return convertClassifications(_this.languageService.getEncodedSyntacticClassifications(fileName, ts.createTextSpan(start, length))); }); }; LanguageServiceShimObject.prototype.getEncodedSemanticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - return convertClassifications(_this.languageService.getEncodedSemanticClassifications(fileName, ts.createTextSpan(start, length))); - }); + return this.forwardJSONCall("getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return convertClassifications(_this.languageService.getEncodedSemanticClassifications(fileName, ts.createTextSpan(start, length))); }); }; LanguageServiceShimObject.prototype.getSyntacticDiagnostics = function (fileName) { var _this = this; @@ -45913,62 +46490,39 @@ var ts; }; LanguageServiceShimObject.prototype.getQuickInfoAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getQuickInfoAtPosition('" + fileName + "', " + position + ")", function () { - var quickInfo = _this.languageService.getQuickInfoAtPosition(fileName, position); - return quickInfo; - }); + return this.forwardJSONCall("getQuickInfoAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getQuickInfoAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getNameOrDottedNameSpan = function (fileName, startPos, endPos) { var _this = this; - return this.forwardJSONCall("getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", function () { - var spanInfo = _this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); - return spanInfo; - }); + return this.forwardJSONCall("getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", function () { return _this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); }); }; LanguageServiceShimObject.prototype.getBreakpointStatementAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", function () { - var spanInfo = _this.languageService.getBreakpointStatementAtPosition(fileName, position); - return spanInfo; - }); + return this.forwardJSONCall("getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getBreakpointStatementAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getSignatureHelpItems = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getSignatureHelpItems('" + fileName + "', " + position + ")", function () { - var signatureInfo = _this.languageService.getSignatureHelpItems(fileName, position); - return signatureInfo; - }); + return this.forwardJSONCall("getSignatureHelpItems('" + fileName + "', " + position + ")", function () { return _this.languageService.getSignatureHelpItems(fileName, position); }); }; LanguageServiceShimObject.prototype.getDefinitionAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getDefinitionAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getDefinitionAtPosition(fileName, position); - }); + return this.forwardJSONCall("getDefinitionAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getDefinitionAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getTypeDefinitionAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getTypeDefinitionAtPosition(fileName, position); - }); + return this.forwardJSONCall("getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getTypeDefinitionAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getRenameInfo = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getRenameInfo('" + fileName + "', " + position + ")", function () { - return _this.languageService.getRenameInfo(fileName, position); - }); + return this.forwardJSONCall("getRenameInfo('" + fileName + "', " + position + ")", function () { return _this.languageService.getRenameInfo(fileName, position); }); }; LanguageServiceShimObject.prototype.findRenameLocations = function (fileName, position, findInStrings, findInComments) { var _this = this; - return this.forwardJSONCall("findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", function () { - return _this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); - }); + return this.forwardJSONCall("findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", function () { return _this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); }); }; LanguageServiceShimObject.prototype.getBraceMatchingAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getBraceMatchingAtPosition('" + fileName + "', " + position + ")", function () { - var textRanges = _this.languageService.getBraceMatchingAtPosition(fileName, position); - return textRanges; - }); + return this.forwardJSONCall("getBraceMatchingAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getBraceMatchingAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getIndentationAtPosition = function (fileName, position, options) { var _this = this; @@ -45979,21 +46533,15 @@ var ts; }; LanguageServiceShimObject.prototype.getReferencesAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getReferencesAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getReferencesAtPosition(fileName, position); - }); + return this.forwardJSONCall("getReferencesAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getReferencesAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.findReferences = function (fileName, position) { var _this = this; - return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { - return _this.languageService.findReferences(fileName, position); - }); + return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { return _this.languageService.findReferences(fileName, position); }); }; LanguageServiceShimObject.prototype.getOccurrencesAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getOccurrencesAtPosition(fileName, position); - }); + return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getOccurrencesAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getDocumentHighlights = function (fileName, position, filesToSearch) { var _this = this; @@ -46005,40 +46553,31 @@ var ts; }; LanguageServiceShimObject.prototype.getCompletionsAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getCompletionsAtPosition('" + fileName + "', " + position + ")", function () { - var completion = _this.languageService.getCompletionsAtPosition(fileName, position); - return completion; - }); + return this.forwardJSONCall("getCompletionsAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getCompletionsAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getCompletionEntryDetails = function (fileName, position, entryName) { var _this = this; - return this.forwardJSONCall("getCompletionEntryDetails('" + fileName + "', " + position + ", " + entryName + ")", function () { - var details = _this.languageService.getCompletionEntryDetails(fileName, position, entryName); - return details; - }); + return this.forwardJSONCall("getCompletionEntryDetails('" + fileName + "', " + position + ", '" + entryName + "')", function () { return _this.languageService.getCompletionEntryDetails(fileName, position, entryName); }); }; LanguageServiceShimObject.prototype.getFormattingEditsForRange = function (fileName, start, end, options) { var _this = this; return this.forwardJSONCall("getFormattingEditsForRange('" + fileName + "', " + start + ", " + end + ")", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); - return edits; + return _this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); }); }; LanguageServiceShimObject.prototype.getFormattingEditsForDocument = function (fileName, options) { var _this = this; return this.forwardJSONCall("getFormattingEditsForDocument('" + fileName + "')", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsForDocument(fileName, localOptions); - return edits; + return _this.languageService.getFormattingEditsForDocument(fileName, localOptions); }); }; LanguageServiceShimObject.prototype.getFormattingEditsAfterKeystroke = function (fileName, position, key, options) { var _this = this; return this.forwardJSONCall("getFormattingEditsAfterKeystroke('" + fileName + "', " + position + ", '" + key + "')", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); - return edits; + return _this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); }); }; LanguageServiceShimObject.prototype.getDocCommentTemplateAtPosition = function (fileName, position) { @@ -46047,42 +46586,26 @@ var ts; }; LanguageServiceShimObject.prototype.getNavigateToItems = function (searchValue, maxResultCount) { var _this = this; - return this.forwardJSONCall("getNavigateToItems('" + searchValue + "', " + maxResultCount + ")", function () { - var items = _this.languageService.getNavigateToItems(searchValue, maxResultCount); - return items; - }); + return this.forwardJSONCall("getNavigateToItems('" + searchValue + "', " + maxResultCount + ")", function () { return _this.languageService.getNavigateToItems(searchValue, maxResultCount); }); }; LanguageServiceShimObject.prototype.getNavigationBarItems = function (fileName) { var _this = this; - return this.forwardJSONCall("getNavigationBarItems('" + fileName + "')", function () { - var items = _this.languageService.getNavigationBarItems(fileName); - return items; - }); + return this.forwardJSONCall("getNavigationBarItems('" + fileName + "')", function () { return _this.languageService.getNavigationBarItems(fileName); }); }; LanguageServiceShimObject.prototype.getOutliningSpans = function (fileName) { var _this = this; - return this.forwardJSONCall("getOutliningSpans('" + fileName + "')", function () { - var items = _this.languageService.getOutliningSpans(fileName); - return items; - }); + return this.forwardJSONCall("getOutliningSpans('" + fileName + "')", function () { return _this.languageService.getOutliningSpans(fileName); }); }; LanguageServiceShimObject.prototype.getTodoComments = function (fileName, descriptors) { var _this = this; - return this.forwardJSONCall("getTodoComments('" + fileName + "')", function () { - var items = _this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); - return items; - }); + return this.forwardJSONCall("getTodoComments('" + fileName + "')", function () { return _this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); }); }; LanguageServiceShimObject.prototype.getEmitOutput = function (fileName) { var _this = this; - return this.forwardJSONCall("getEmitOutput('" + fileName + "')", function () { - var output = _this.languageService.getEmitOutput(fileName); - output.emitOutputStatus = output.emitSkipped ? 1 : 0; - return output; - }); + return this.forwardJSONCall("getEmitOutput('" + fileName + "')", function () { return _this.languageService.getEmitOutput(fileName); }); }; return LanguageServiceShimObject; - })(ShimBase); + }(ShimBase)); function convertClassifications(classifications) { return { spans: classifications.spans.join(","), endOfLineState: classifications.endOfLineState }; } @@ -46100,17 +46623,17 @@ var ts; }; ClassifierShimObject.prototype.getClassificationsForLine = function (text, lexState, classifyKeywordsInGenerics) { var classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); - var items = classification.entries; var result = ""; - for (var i = 0; i < items.length; i++) { - result += items[i].length + "\n"; - result += items[i].classification + "\n"; + for (var _i = 0, _a = classification.entries; _i < _a.length; _i++) { + var item = _a[_i]; + result += item.length + "\n"; + result += item.classification + "\n"; } result += classification.finalLexState; return result; }; return ClassifierShimObject; - })(ShimBase); + }(ShimBase)); var CoreServicesShimObject = (function (_super) { __extends(CoreServicesShimObject, _super); function CoreServicesShimObject(factory, logger, host) { @@ -46168,24 +46691,22 @@ var ts; return { options: {}, files: [], - errors: [realizeDiagnostic(result.error, '\r\n')] + errors: [realizeDiagnostic(result.error, "\r\n")] }; } var configFile = ts.parseJsonConfigFileContent(result.config, _this.host, ts.getDirectoryPath(ts.normalizeSlashes(fileName))); return { options: configFile.options, files: configFile.fileNames, - errors: realizeDiagnostics(configFile.errors, '\r\n') + errors: realizeDiagnostics(configFile.errors, "\r\n") }; }); }; CoreServicesShimObject.prototype.getDefaultCompilationSettings = function () { - return this.forwardJSONCall("getDefaultCompilationSettings()", function () { - return ts.getDefaultCompilerOptions(); - }); + return this.forwardJSONCall("getDefaultCompilationSettings()", function () { return ts.getDefaultCompilerOptions(); }); }; return CoreServicesShimObject; - })(ShimBase); + }(ShimBase)); var TypeScriptServicesFactory = (function () { function TypeScriptServicesFactory() { this._shims = []; @@ -46243,7 +46764,7 @@ var ts; throw new Error("Invalid operation"); }; return TypeScriptServicesFactory; - })(); + }()); ts.TypeScriptServicesFactory = TypeScriptServicesFactory; if (typeof module !== "undefined" && module.exports) { module.exports = ts; @@ -46256,4 +46777,4 @@ var TypeScript; Services.TypeScriptServicesFactory = ts.TypeScriptServicesFactory; })(Services = TypeScript.Services || (TypeScript.Services = {})); })(TypeScript || (TypeScript = {})); -var toolsVersion = "1.6"; +var toolsVersion = "1.8"; diff --git a/lib/typescript.d.ts b/lib/typescript.d.ts index 32a6dee4623..3196ae2199f 100644 --- a/lib/typescript.d.ts +++ b/lib/typescript.d.ts @@ -194,118 +194,120 @@ declare namespace ts { UnionType = 158, IntersectionType = 159, ParenthesizedType = 160, - ObjectBindingPattern = 161, - ArrayBindingPattern = 162, - BindingElement = 163, - ArrayLiteralExpression = 164, - ObjectLiteralExpression = 165, - PropertyAccessExpression = 166, - ElementAccessExpression = 167, - CallExpression = 168, - NewExpression = 169, - TaggedTemplateExpression = 170, - TypeAssertionExpression = 171, - ParenthesizedExpression = 172, - FunctionExpression = 173, - ArrowFunction = 174, - DeleteExpression = 175, - TypeOfExpression = 176, - VoidExpression = 177, - AwaitExpression = 178, - PrefixUnaryExpression = 179, - PostfixUnaryExpression = 180, - BinaryExpression = 181, - ConditionalExpression = 182, - TemplateExpression = 183, - YieldExpression = 184, - SpreadElementExpression = 185, - ClassExpression = 186, - OmittedExpression = 187, - ExpressionWithTypeArguments = 188, - AsExpression = 189, - TemplateSpan = 190, - SemicolonClassElement = 191, - Block = 192, - VariableStatement = 193, - EmptyStatement = 194, - ExpressionStatement = 195, - IfStatement = 196, - DoStatement = 197, - WhileStatement = 198, - ForStatement = 199, - ForInStatement = 200, - ForOfStatement = 201, - ContinueStatement = 202, - BreakStatement = 203, - ReturnStatement = 204, - WithStatement = 205, - SwitchStatement = 206, - LabeledStatement = 207, - ThrowStatement = 208, - TryStatement = 209, - DebuggerStatement = 210, - VariableDeclaration = 211, - VariableDeclarationList = 212, - FunctionDeclaration = 213, - ClassDeclaration = 214, - InterfaceDeclaration = 215, - TypeAliasDeclaration = 216, - EnumDeclaration = 217, - ModuleDeclaration = 218, - ModuleBlock = 219, - CaseBlock = 220, - ImportEqualsDeclaration = 221, - ImportDeclaration = 222, - ImportClause = 223, - NamespaceImport = 224, - NamedImports = 225, - ImportSpecifier = 226, - ExportAssignment = 227, - ExportDeclaration = 228, - NamedExports = 229, - ExportSpecifier = 230, - MissingDeclaration = 231, - ExternalModuleReference = 232, - JsxElement = 233, - JsxSelfClosingElement = 234, - JsxOpeningElement = 235, - JsxText = 236, - JsxClosingElement = 237, - JsxAttribute = 238, - JsxSpreadAttribute = 239, - JsxExpression = 240, - CaseClause = 241, - DefaultClause = 242, - HeritageClause = 243, - CatchClause = 244, - PropertyAssignment = 245, - ShorthandPropertyAssignment = 246, - EnumMember = 247, - SourceFile = 248, - JSDocTypeExpression = 249, - JSDocAllType = 250, - JSDocUnknownType = 251, - JSDocArrayType = 252, - JSDocUnionType = 253, - JSDocTupleType = 254, - JSDocNullableType = 255, - JSDocNonNullableType = 256, - JSDocRecordType = 257, - JSDocRecordMember = 258, - JSDocTypeReference = 259, - JSDocOptionalType = 260, - JSDocFunctionType = 261, - JSDocVariadicType = 262, - JSDocConstructorType = 263, - JSDocThisType = 264, - JSDocComment = 265, - JSDocTag = 266, - JSDocParameterTag = 267, - JSDocReturnTag = 268, - JSDocTypeTag = 269, - JSDocTemplateTag = 270, - SyntaxList = 271, - Count = 272, + ThisType = 161, + StringLiteralType = 162, + ObjectBindingPattern = 163, + ArrayBindingPattern = 164, + BindingElement = 165, + ArrayLiteralExpression = 166, + ObjectLiteralExpression = 167, + PropertyAccessExpression = 168, + ElementAccessExpression = 169, + CallExpression = 170, + NewExpression = 171, + TaggedTemplateExpression = 172, + TypeAssertionExpression = 173, + ParenthesizedExpression = 174, + FunctionExpression = 175, + ArrowFunction = 176, + DeleteExpression = 177, + TypeOfExpression = 178, + VoidExpression = 179, + AwaitExpression = 180, + PrefixUnaryExpression = 181, + PostfixUnaryExpression = 182, + BinaryExpression = 183, + ConditionalExpression = 184, + TemplateExpression = 185, + YieldExpression = 186, + SpreadElementExpression = 187, + ClassExpression = 188, + OmittedExpression = 189, + ExpressionWithTypeArguments = 190, + AsExpression = 191, + TemplateSpan = 192, + SemicolonClassElement = 193, + Block = 194, + VariableStatement = 195, + EmptyStatement = 196, + ExpressionStatement = 197, + IfStatement = 198, + DoStatement = 199, + WhileStatement = 200, + ForStatement = 201, + ForInStatement = 202, + ForOfStatement = 203, + ContinueStatement = 204, + BreakStatement = 205, + ReturnStatement = 206, + WithStatement = 207, + SwitchStatement = 208, + LabeledStatement = 209, + ThrowStatement = 210, + TryStatement = 211, + DebuggerStatement = 212, + VariableDeclaration = 213, + VariableDeclarationList = 214, + FunctionDeclaration = 215, + ClassDeclaration = 216, + InterfaceDeclaration = 217, + TypeAliasDeclaration = 218, + EnumDeclaration = 219, + ModuleDeclaration = 220, + ModuleBlock = 221, + CaseBlock = 222, + ImportEqualsDeclaration = 223, + ImportDeclaration = 224, + ImportClause = 225, + NamespaceImport = 226, + NamedImports = 227, + ImportSpecifier = 228, + ExportAssignment = 229, + ExportDeclaration = 230, + NamedExports = 231, + ExportSpecifier = 232, + MissingDeclaration = 233, + ExternalModuleReference = 234, + JsxElement = 235, + JsxSelfClosingElement = 236, + JsxOpeningElement = 237, + JsxText = 238, + JsxClosingElement = 239, + JsxAttribute = 240, + JsxSpreadAttribute = 241, + JsxExpression = 242, + CaseClause = 243, + DefaultClause = 244, + HeritageClause = 245, + CatchClause = 246, + PropertyAssignment = 247, + ShorthandPropertyAssignment = 248, + EnumMember = 249, + SourceFile = 250, + JSDocTypeExpression = 251, + JSDocAllType = 252, + JSDocUnknownType = 253, + JSDocArrayType = 254, + JSDocUnionType = 255, + JSDocTupleType = 256, + JSDocNullableType = 257, + JSDocNonNullableType = 258, + JSDocRecordType = 259, + JSDocRecordMember = 260, + JSDocTypeReference = 261, + JSDocOptionalType = 262, + JSDocFunctionType = 263, + JSDocVariadicType = 264, + JSDocConstructorType = 265, + JSDocThisType = 266, + JSDocComment = 267, + JSDocTag = 268, + JSDocParameterTag = 269, + JSDocReturnTag = 270, + JSDocTypeTag = 271, + JSDocTemplateTag = 272, + SyntaxList = 273, + Count = 274, FirstAssignment = 56, LastAssignment = 68, FirstReservedWord = 70, @@ -314,8 +316,8 @@ declare namespace ts { LastKeyword = 134, FirstFutureReservedWord = 106, LastFutureReservedWord = 114, - FirstTypeNode = 151, - LastTypeNode = 160, + FirstTypeNode = 150, + LastTypeNode = 162, FirstPunctuation = 15, LastPunctuation = 68, FirstToken = 0, @@ -359,10 +361,14 @@ declare namespace ts { } enum JsxFlags { None = 0, + /** An element from a named property of the JSX.IntrinsicElements interface */ IntrinsicNamedElement = 1, + /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */ IntrinsicIndexedElement = 2, - ClassElement = 4, - UnknownElement = 8, + /** An element backed by a class, class-like, or function value */ + ValueElement = 4, + /** Element resolution failed */ + UnknownElement = 16, IntrinsicElement = 3, } interface Node extends TextRange { @@ -375,9 +381,11 @@ declare namespace ts { interface NodeArray extends Array, TextRange { hasTrailingComma?: boolean; } - interface ModifiersArray extends NodeArray { + interface ModifiersArray extends NodeArray { flags: number; } + interface Modifier extends Node { + } interface Identifier extends PrimaryExpression { text: string; originalKeywordKind?: SyntaxKind; @@ -393,6 +401,9 @@ declare namespace ts { _declarationBrand: any; name?: DeclarationName; } + interface DeclarationStatement extends Declaration, Statement { + name?: Identifier; + } interface ComputedPropertyName extends Node { expression: Expression; } @@ -405,10 +416,15 @@ declare namespace ts { expression?: Expression; } interface SignatureDeclaration extends Declaration { + name?: PropertyName; typeParameters?: NodeArray; parameters: NodeArray; type?: TypeNode; } + interface CallSignatureDeclaration extends SignatureDeclaration, TypeElement { + } + interface ConstructSignatureDeclaration extends SignatureDeclaration, TypeElement { + } interface VariableDeclaration extends Declaration { parent?: VariableDeclarationList; name: Identifier | BindingPattern; @@ -431,18 +447,25 @@ declare namespace ts { name: Identifier | BindingPattern; initializer?: Expression; } - interface PropertyDeclaration extends Declaration, ClassElement { - name: DeclarationName; + interface PropertySignature extends TypeElement { + name: PropertyName; questionToken?: Node; type?: TypeNode; initializer?: Expression; } + interface PropertyDeclaration extends ClassElement { + questionToken?: Node; + name: PropertyName; + type?: TypeNode; + initializer?: Expression; + } interface ObjectLiteralElement extends Declaration { _objectLiteralBrandBrand: any; + name?: PropertyName; } interface PropertyAssignment extends ObjectLiteralElement { _propertyAssignmentBrand: any; - name: DeclarationName; + name: PropertyName; questionToken?: Node; initializer: Expression; } @@ -460,9 +483,16 @@ declare namespace ts { type?: TypeNode; initializer?: Expression; } + interface PropertyLikeDeclaration extends Declaration { + name: PropertyName; + } interface BindingPattern extends Node { elements: NodeArray; } + interface ObjectBindingPattern extends BindingPattern { + } + interface ArrayBindingPattern extends BindingPattern { + } /** * Several node kinds share function-like features such as a signature, * a name, and a body. These nodes should extend FunctionLikeDeclaration. @@ -477,45 +507,61 @@ declare namespace ts { questionToken?: Node; body?: Block | Expression; } - interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { + interface FunctionDeclaration extends FunctionLikeDeclaration, DeclarationStatement { name?: Identifier; - body?: Block; + body?: FunctionBody; + } + interface MethodSignature extends SignatureDeclaration, TypeElement { + name: PropertyName; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { - body?: Block; + name: PropertyName; + body?: FunctionBody; } interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { - body?: Block; + body?: FunctionBody; } interface SemicolonClassElement extends ClassElement { _semicolonClassElementBrand: any; } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; - body: Block; + name: PropertyName; + body: FunctionBody; } - interface IndexSignatureDeclaration extends SignatureDeclaration, ClassElement { + interface GetAccessorDeclaration extends AccessorDeclaration { + } + interface SetAccessorDeclaration extends AccessorDeclaration { + } + interface IndexSignatureDeclaration extends SignatureDeclaration, ClassElement, TypeElement { _indexSignatureDeclarationBrand: any; } interface TypeNode extends Node { _typeNodeBrand: any; } + interface ThisTypeNode extends TypeNode { + _thisTypeNodeBrand: any; + } interface FunctionOrConstructorTypeNode extends TypeNode, SignatureDeclaration { _functionOrConstructorTypeNodeBrand: any; } + interface FunctionTypeNode extends FunctionOrConstructorTypeNode { + } + interface ConstructorTypeNode extends FunctionOrConstructorTypeNode { + } interface TypeReferenceNode extends TypeNode { typeName: EntityName; typeArguments?: NodeArray; } interface TypePredicateNode extends TypeNode { - parameterName: Identifier; + parameterName: Identifier | ThisTypeNode; type: TypeNode; } interface TypeQueryNode extends TypeNode { exprName: EntityName; } interface TypeLiteralNode extends TypeNode, Declaration { - members: NodeArray; + members: NodeArray; } interface ArrayTypeNode extends TypeNode { elementType: TypeNode; @@ -533,13 +579,18 @@ declare namespace ts { interface ParenthesizedTypeNode extends TypeNode { type: TypeNode; } - interface StringLiteral extends LiteralExpression, TypeNode { + interface StringLiteralTypeNode extends LiteralLikeNode, TypeNode { + _stringLiteralTypeBrand: any; + } + interface StringLiteral extends LiteralExpression { _stringLiteralBrand: any; } interface Expression extends Node { _expressionBrand: any; contextualType?: Type; } + interface OmittedExpression extends Expression { + } interface UnaryExpression extends Expression { _unaryExpressionBrand: any; } @@ -594,25 +645,34 @@ declare namespace ts { colonToken: Node; whenFalse: Expression; } + type FunctionBody = Block; + type ConciseBody = FunctionBody | Expression; interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; - body: Block | Expression; + body: FunctionBody; } interface ArrowFunction extends Expression, FunctionLikeDeclaration { equalsGreaterThanToken: Node; + body: ConciseBody; } - interface LiteralExpression extends PrimaryExpression { + interface LiteralLikeNode extends Node { text: string; isUnterminated?: boolean; hasExtendedUnicodeEscape?: boolean; } + interface LiteralExpression extends LiteralLikeNode, PrimaryExpression { + _literalExpressionBrand: any; + } + interface TemplateLiteralFragment extends LiteralLikeNode { + _templateLiteralFragmentBrand: any; + } interface TemplateExpression extends PrimaryExpression { - head: LiteralExpression; + head: TemplateLiteralFragment; templateSpans: NodeArray; } interface TemplateSpan extends Node { expression: Expression; - literal: LiteralExpression; + literal: TemplateLiteralFragment; } interface ParenthesizedExpression extends PrimaryExpression { expression: Expression; @@ -694,6 +754,14 @@ declare namespace ts { interface Statement extends Node { _statementBrand: any; } + interface EmptyStatement extends Statement { + } + interface DebuggerStatement extends Statement { + } + interface MissingDeclaration extends DeclarationStatement, ClassElement, ObjectLiteralElement, TypeElement { + name?: Identifier; + } + type BlockLike = SourceFile | Block | ModuleBlock | CaseClause; interface Block extends Statement { statements: NodeArray; } @@ -730,9 +798,13 @@ declare namespace ts { initializer: VariableDeclarationList | Expression; expression: Expression; } - interface BreakOrContinueStatement extends Statement { + interface BreakStatement extends Statement { label?: Identifier; } + interface ContinueStatement extends Statement { + label?: Identifier; + } + type BreakOrContinueStatement = BreakStatement | ContinueStatement; interface ReturnStatement extends Statement { expression?: Expression; } @@ -748,7 +820,7 @@ declare namespace ts { clauses: NodeArray; } interface CaseClause extends Node { - expression?: Expression; + expression: Expression; statements: NodeArray; } interface DefaultClause extends Node { @@ -777,24 +849,31 @@ declare namespace ts { heritageClauses?: NodeArray; members: NodeArray; } - interface ClassDeclaration extends ClassLikeDeclaration, Statement { + interface ClassDeclaration extends ClassLikeDeclaration, DeclarationStatement { + name?: Identifier; } interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { } interface ClassElement extends Declaration { _classElementBrand: any; + name?: PropertyName; } - interface InterfaceDeclaration extends Declaration, Statement { + interface TypeElement extends Declaration { + _typeElementBrand: any; + name?: PropertyName; + questionToken?: Node; + } + interface InterfaceDeclaration extends DeclarationStatement { name: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; - members: NodeArray; + members: NodeArray; } interface HeritageClause extends Node { token: SyntaxKind; types?: NodeArray; } - interface TypeAliasDeclaration extends Declaration, Statement { + interface TypeAliasDeclaration extends DeclarationStatement { name: Identifier; typeParameters?: NodeArray; type: TypeNode; @@ -803,18 +882,19 @@ declare namespace ts { name: DeclarationName; initializer?: Expression; } - interface EnumDeclaration extends Declaration, Statement { + interface EnumDeclaration extends DeclarationStatement { name: Identifier; members: NodeArray; } - interface ModuleDeclaration extends Declaration, Statement { + type ModuleBody = ModuleBlock | ModuleDeclaration; + interface ModuleDeclaration extends DeclarationStatement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } interface ModuleBlock extends Node, Statement { statements: NodeArray; } - interface ImportEqualsDeclaration extends Declaration, Statement { + interface ImportEqualsDeclaration extends DeclarationStatement { name: Identifier; moduleReference: EntityName | ExternalModuleReference; } @@ -832,22 +912,27 @@ declare namespace ts { interface NamespaceImport extends Declaration { name: Identifier; } - interface ExportDeclaration extends Declaration, Statement { + interface ExportDeclaration extends DeclarationStatement { exportClause?: NamedExports; moduleSpecifier?: Expression; } - interface NamedImportsOrExports extends Node { - elements: NodeArray; + interface NamedImports extends Node { + elements: NodeArray; } - type NamedImports = NamedImportsOrExports; - type NamedExports = NamedImportsOrExports; - interface ImportOrExportSpecifier extends Declaration { + interface NamedExports extends Node { + elements: NodeArray; + } + type NamedImportsOrExports = NamedImports | NamedExports; + interface ImportSpecifier extends Declaration { propertyName?: Identifier; name: Identifier; } - type ImportSpecifier = ImportOrExportSpecifier; - type ExportSpecifier = ImportOrExportSpecifier; - interface ExportAssignment extends Declaration, Statement { + interface ExportSpecifier extends Declaration { + propertyName?: Identifier; + name: Identifier; + } + type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier; + interface ExportAssignment extends DeclarationStatement { isExportEquals?: boolean; expression: Expression; } @@ -908,7 +993,7 @@ declare namespace ts { interface JSDocThisType extends JSDocType { type: JSDocType; } - interface JSDocRecordMember extends PropertyDeclaration { + interface JSDocRecordMember extends PropertySignature { name: Identifier | LiteralExpression; type?: JSDocType; } @@ -934,16 +1019,17 @@ declare namespace ts { postParameterName?: Identifier; isBracketed: boolean; } + interface AmdDependency { + path: string; + name: string; + } interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; fileName: string; path: Path; text: string; - amdDependencies: { - path: string; - name: string; - }[]; + amdDependencies: AmdDependency[]; moduleName: string; referencedFiles: FileReference[]; languageVariant: LanguageVariant; @@ -1053,6 +1139,7 @@ declare namespace ts { getReturnTypeOfSignature(signature: Signature): Type; getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; getSymbolAtLocation(node: Node): Symbol; + getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[]; getShorthandAssignmentValueSymbol(location: Node): Symbol; getTypeAtLocation(node: Node): Type; typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; @@ -1078,7 +1165,7 @@ declare namespace ts { 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; @@ -1117,10 +1204,20 @@ declare namespace ts { WriteTypeParametersOrArguments = 1, UseOnlyExternalAliasing = 2, } + enum TypePredicateKind { + This = 0, + Identifier = 1, + } interface TypePredicate { + kind: TypePredicateKind; + type: Type; + } + interface ThisTypePredicate extends TypePredicate { + _thisTypePredicateBrand: any; + } + interface IdentifierTypePredicate extends TypePredicate { parameterName: string; parameterIndex: number; - type: Type; } enum SymbolFlags { None = 0, @@ -1222,6 +1319,7 @@ declare namespace ts { ESSymbol = 16777216, ThisType = 33554432, ObjectLiteralPatternWithComputedProperties = 67108864, + PredicateType = 134217728, StringLike = 258, NumberLike = 132, ObjectType = 80896, @@ -1234,6 +1332,9 @@ declare namespace ts { symbol?: Symbol; pattern?: DestructuringPattern; } + interface PredicateType extends Type { + predicate: ThisTypePredicate | IdentifierTypePredicate; + } interface StringLiteralType extends Type { text: string; } @@ -1279,7 +1380,6 @@ declare namespace ts { declaration: SignatureDeclaration; typeParameters: TypeParameter[]; parameters: Symbol[]; - typePredicate?: TypePredicate; } enum IndexKind { String = 0, @@ -1331,6 +1431,7 @@ declare namespace ts { inlineSourceMap?: boolean; inlineSources?: boolean; jsx?: JsxEmit; + reactNamespace?: string; listFiles?: boolean; locale?: string; mapRoot?: string; @@ -1366,6 +1467,8 @@ declare namespace ts { noImplicitReturns?: boolean; noFallthroughCasesInSwitch?: boolean; forceConsistentCasingInFileNames?: boolean; + allowSyntheticDefaultImports?: boolean; + allowJs?: boolean; [option: string]: string | number | boolean; } enum ModuleKind { @@ -1409,6 +1512,7 @@ declare namespace ts { interface ModuleResolutionHost { fileExists(fileName: string): boolean; readFile(fileName: string): string; + directoryExists?(directoryName: string): boolean; } interface ResolvedModule { resolvedFileName: string; @@ -1537,6 +1641,7 @@ declare namespace ts { */ function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; function getTypeParameterOwner(d: Declaration): Declaration; + function isParameterPropertyDeclaration(node: ParameterDeclaration): boolean; } declare namespace ts { function createNode(kind: SyntaxKind, pos?: number, end?: number): Node; @@ -1546,10 +1651,10 @@ declare namespace ts { } declare namespace ts { const version: string; - function findConfigFile(searchPath: string): string; + function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string; function resolveTripleslashReference(moduleName: string, containingFile: string): string; function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; - function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; + function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): Diagnostic[]; @@ -1582,7 +1687,7 @@ declare namespace ts { * @param basePath A root directory to resolve relative path entries in the config * file to. e.g. outDir */ - function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string): ParsedCommandLine; + function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions): ParsedCommandLine; function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string): { options: CompilerOptions; errors: Diagnostic[]; @@ -1590,7 +1695,7 @@ declare namespace ts { } declare namespace ts { /** The version of the language service API */ - let servicesVersion: string; + const servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1659,7 +1764,7 @@ declare namespace ts { /** Releases all resources held by this script snapshot */ dispose?(): void; } - module ScriptSnapshot { + namespace ScriptSnapshot { function fromString(text: string): IScriptSnapshot; } interface PreProcessedFileInfo { @@ -1687,6 +1792,7 @@ declare namespace ts { error?(s: string): void; useCaseSensitiveFileNames?(): boolean; resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + directoryExists?(directoryName: string): boolean; } interface LanguageService { cleanupSemanticCache(): void; @@ -1782,7 +1888,7 @@ declare namespace ts { fileName: string; highlightSpans: HighlightSpan[]; } - module HighlightSpanKind { + namespace HighlightSpanKind { const none: string; const definition: string; const reference: string; @@ -1824,6 +1930,7 @@ declare namespace ts { InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean; + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean; PlaceOpenBraceOnNewLineForFunctions: boolean; PlaceOpenBraceOnNewLineForControlBlocks: boolean; [s: string]: boolean | number | string; @@ -2068,7 +2175,7 @@ declare namespace ts { releaseDocument(fileName: string, compilationSettings: CompilerOptions): void; reportStats(): string; } - module ScriptElementKind { + namespace ScriptElementKind { const unknown: string; const warning: string; const keyword: string; @@ -2099,7 +2206,7 @@ declare namespace ts { const constElement: string; const letElement: string; } - module ScriptElementKindModifier { + namespace ScriptElementKindModifier { const none: string; const publicMemberModifier: string; const privateMemberModifier: string; diff --git a/lib/typescript.js b/lib/typescript.js index 498ddc37860..1e2f51f5aae 100644 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -195,133 +195,135 @@ var ts; SyntaxKind[SyntaxKind["UnionType"] = 158] = "UnionType"; SyntaxKind[SyntaxKind["IntersectionType"] = 159] = "IntersectionType"; SyntaxKind[SyntaxKind["ParenthesizedType"] = 160] = "ParenthesizedType"; + SyntaxKind[SyntaxKind["ThisType"] = 161] = "ThisType"; + SyntaxKind[SyntaxKind["StringLiteralType"] = 162] = "StringLiteralType"; // Binding patterns - SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 161] = "ObjectBindingPattern"; - SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 162] = "ArrayBindingPattern"; - SyntaxKind[SyntaxKind["BindingElement"] = 163] = "BindingElement"; + SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 163] = "ObjectBindingPattern"; + SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 164] = "ArrayBindingPattern"; + SyntaxKind[SyntaxKind["BindingElement"] = 165] = "BindingElement"; // Expression - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 164] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 165] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 166] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 167] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["CallExpression"] = 168] = "CallExpression"; - SyntaxKind[SyntaxKind["NewExpression"] = 169] = "NewExpression"; - SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 170] = "TaggedTemplateExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 171] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 172] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 173] = "FunctionExpression"; - SyntaxKind[SyntaxKind["ArrowFunction"] = 174] = "ArrowFunction"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 175] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 176] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 177] = "VoidExpression"; - SyntaxKind[SyntaxKind["AwaitExpression"] = 178] = "AwaitExpression"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 179] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 180] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 181] = "BinaryExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 182] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 183] = "TemplateExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 184] = "YieldExpression"; - SyntaxKind[SyntaxKind["SpreadElementExpression"] = 185] = "SpreadElementExpression"; - SyntaxKind[SyntaxKind["ClassExpression"] = 186] = "ClassExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 187] = "OmittedExpression"; - SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 188] = "ExpressionWithTypeArguments"; - SyntaxKind[SyntaxKind["AsExpression"] = 189] = "AsExpression"; + SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 166] = "ArrayLiteralExpression"; + SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 167] = "ObjectLiteralExpression"; + SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 168] = "PropertyAccessExpression"; + SyntaxKind[SyntaxKind["ElementAccessExpression"] = 169] = "ElementAccessExpression"; + SyntaxKind[SyntaxKind["CallExpression"] = 170] = "CallExpression"; + SyntaxKind[SyntaxKind["NewExpression"] = 171] = "NewExpression"; + SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 172] = "TaggedTemplateExpression"; + SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 173] = "TypeAssertionExpression"; + SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 174] = "ParenthesizedExpression"; + SyntaxKind[SyntaxKind["FunctionExpression"] = 175] = "FunctionExpression"; + SyntaxKind[SyntaxKind["ArrowFunction"] = 176] = "ArrowFunction"; + SyntaxKind[SyntaxKind["DeleteExpression"] = 177] = "DeleteExpression"; + SyntaxKind[SyntaxKind["TypeOfExpression"] = 178] = "TypeOfExpression"; + SyntaxKind[SyntaxKind["VoidExpression"] = 179] = "VoidExpression"; + SyntaxKind[SyntaxKind["AwaitExpression"] = 180] = "AwaitExpression"; + SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 181] = "PrefixUnaryExpression"; + SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 182] = "PostfixUnaryExpression"; + SyntaxKind[SyntaxKind["BinaryExpression"] = 183] = "BinaryExpression"; + SyntaxKind[SyntaxKind["ConditionalExpression"] = 184] = "ConditionalExpression"; + SyntaxKind[SyntaxKind["TemplateExpression"] = 185] = "TemplateExpression"; + SyntaxKind[SyntaxKind["YieldExpression"] = 186] = "YieldExpression"; + SyntaxKind[SyntaxKind["SpreadElementExpression"] = 187] = "SpreadElementExpression"; + SyntaxKind[SyntaxKind["ClassExpression"] = 188] = "ClassExpression"; + SyntaxKind[SyntaxKind["OmittedExpression"] = 189] = "OmittedExpression"; + SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 190] = "ExpressionWithTypeArguments"; + SyntaxKind[SyntaxKind["AsExpression"] = 191] = "AsExpression"; // Misc - SyntaxKind[SyntaxKind["TemplateSpan"] = 190] = "TemplateSpan"; - SyntaxKind[SyntaxKind["SemicolonClassElement"] = 191] = "SemicolonClassElement"; + SyntaxKind[SyntaxKind["TemplateSpan"] = 192] = "TemplateSpan"; + SyntaxKind[SyntaxKind["SemicolonClassElement"] = 193] = "SemicolonClassElement"; // Element - SyntaxKind[SyntaxKind["Block"] = 192] = "Block"; - SyntaxKind[SyntaxKind["VariableStatement"] = 193] = "VariableStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 194] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 195] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["IfStatement"] = 196] = "IfStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 197] = "DoStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 198] = "WhileStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 199] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 200] = "ForInStatement"; - SyntaxKind[SyntaxKind["ForOfStatement"] = 201] = "ForOfStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 202] = "ContinueStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 203] = "BreakStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 204] = "ReturnStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 205] = "WithStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 206] = "SwitchStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 207] = "LabeledStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 208] = "ThrowStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 209] = "TryStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 210] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 211] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarationList"] = 212] = "VariableDeclarationList"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 213] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 214] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 215] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 216] = "TypeAliasDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 217] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 218] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ModuleBlock"] = 219] = "ModuleBlock"; - SyntaxKind[SyntaxKind["CaseBlock"] = 220] = "CaseBlock"; - SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 221] = "ImportEqualsDeclaration"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 222] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ImportClause"] = 223] = "ImportClause"; - SyntaxKind[SyntaxKind["NamespaceImport"] = 224] = "NamespaceImport"; - SyntaxKind[SyntaxKind["NamedImports"] = 225] = "NamedImports"; - SyntaxKind[SyntaxKind["ImportSpecifier"] = 226] = "ImportSpecifier"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 227] = "ExportAssignment"; - SyntaxKind[SyntaxKind["ExportDeclaration"] = 228] = "ExportDeclaration"; - SyntaxKind[SyntaxKind["NamedExports"] = 229] = "NamedExports"; - SyntaxKind[SyntaxKind["ExportSpecifier"] = 230] = "ExportSpecifier"; - SyntaxKind[SyntaxKind["MissingDeclaration"] = 231] = "MissingDeclaration"; + SyntaxKind[SyntaxKind["Block"] = 194] = "Block"; + SyntaxKind[SyntaxKind["VariableStatement"] = 195] = "VariableStatement"; + SyntaxKind[SyntaxKind["EmptyStatement"] = 196] = "EmptyStatement"; + SyntaxKind[SyntaxKind["ExpressionStatement"] = 197] = "ExpressionStatement"; + SyntaxKind[SyntaxKind["IfStatement"] = 198] = "IfStatement"; + SyntaxKind[SyntaxKind["DoStatement"] = 199] = "DoStatement"; + SyntaxKind[SyntaxKind["WhileStatement"] = 200] = "WhileStatement"; + SyntaxKind[SyntaxKind["ForStatement"] = 201] = "ForStatement"; + SyntaxKind[SyntaxKind["ForInStatement"] = 202] = "ForInStatement"; + SyntaxKind[SyntaxKind["ForOfStatement"] = 203] = "ForOfStatement"; + SyntaxKind[SyntaxKind["ContinueStatement"] = 204] = "ContinueStatement"; + SyntaxKind[SyntaxKind["BreakStatement"] = 205] = "BreakStatement"; + SyntaxKind[SyntaxKind["ReturnStatement"] = 206] = "ReturnStatement"; + SyntaxKind[SyntaxKind["WithStatement"] = 207] = "WithStatement"; + SyntaxKind[SyntaxKind["SwitchStatement"] = 208] = "SwitchStatement"; + SyntaxKind[SyntaxKind["LabeledStatement"] = 209] = "LabeledStatement"; + SyntaxKind[SyntaxKind["ThrowStatement"] = 210] = "ThrowStatement"; + SyntaxKind[SyntaxKind["TryStatement"] = 211] = "TryStatement"; + SyntaxKind[SyntaxKind["DebuggerStatement"] = 212] = "DebuggerStatement"; + SyntaxKind[SyntaxKind["VariableDeclaration"] = 213] = "VariableDeclaration"; + SyntaxKind[SyntaxKind["VariableDeclarationList"] = 214] = "VariableDeclarationList"; + SyntaxKind[SyntaxKind["FunctionDeclaration"] = 215] = "FunctionDeclaration"; + SyntaxKind[SyntaxKind["ClassDeclaration"] = 216] = "ClassDeclaration"; + SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 217] = "InterfaceDeclaration"; + SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 218] = "TypeAliasDeclaration"; + SyntaxKind[SyntaxKind["EnumDeclaration"] = 219] = "EnumDeclaration"; + SyntaxKind[SyntaxKind["ModuleDeclaration"] = 220] = "ModuleDeclaration"; + SyntaxKind[SyntaxKind["ModuleBlock"] = 221] = "ModuleBlock"; + SyntaxKind[SyntaxKind["CaseBlock"] = 222] = "CaseBlock"; + SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 223] = "ImportEqualsDeclaration"; + SyntaxKind[SyntaxKind["ImportDeclaration"] = 224] = "ImportDeclaration"; + SyntaxKind[SyntaxKind["ImportClause"] = 225] = "ImportClause"; + SyntaxKind[SyntaxKind["NamespaceImport"] = 226] = "NamespaceImport"; + SyntaxKind[SyntaxKind["NamedImports"] = 227] = "NamedImports"; + SyntaxKind[SyntaxKind["ImportSpecifier"] = 228] = "ImportSpecifier"; + SyntaxKind[SyntaxKind["ExportAssignment"] = 229] = "ExportAssignment"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 230] = "ExportDeclaration"; + SyntaxKind[SyntaxKind["NamedExports"] = 231] = "NamedExports"; + SyntaxKind[SyntaxKind["ExportSpecifier"] = 232] = "ExportSpecifier"; + SyntaxKind[SyntaxKind["MissingDeclaration"] = 233] = "MissingDeclaration"; // Module references - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 232] = "ExternalModuleReference"; + SyntaxKind[SyntaxKind["ExternalModuleReference"] = 234] = "ExternalModuleReference"; // JSX - SyntaxKind[SyntaxKind["JsxElement"] = 233] = "JsxElement"; - SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 234] = "JsxSelfClosingElement"; - SyntaxKind[SyntaxKind["JsxOpeningElement"] = 235] = "JsxOpeningElement"; - SyntaxKind[SyntaxKind["JsxText"] = 236] = "JsxText"; - SyntaxKind[SyntaxKind["JsxClosingElement"] = 237] = "JsxClosingElement"; - SyntaxKind[SyntaxKind["JsxAttribute"] = 238] = "JsxAttribute"; - SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 239] = "JsxSpreadAttribute"; - SyntaxKind[SyntaxKind["JsxExpression"] = 240] = "JsxExpression"; + SyntaxKind[SyntaxKind["JsxElement"] = 235] = "JsxElement"; + SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 236] = "JsxSelfClosingElement"; + SyntaxKind[SyntaxKind["JsxOpeningElement"] = 237] = "JsxOpeningElement"; + SyntaxKind[SyntaxKind["JsxText"] = 238] = "JsxText"; + SyntaxKind[SyntaxKind["JsxClosingElement"] = 239] = "JsxClosingElement"; + SyntaxKind[SyntaxKind["JsxAttribute"] = 240] = "JsxAttribute"; + SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 241] = "JsxSpreadAttribute"; + SyntaxKind[SyntaxKind["JsxExpression"] = 242] = "JsxExpression"; // Clauses - SyntaxKind[SyntaxKind["CaseClause"] = 241] = "CaseClause"; - SyntaxKind[SyntaxKind["DefaultClause"] = 242] = "DefaultClause"; - SyntaxKind[SyntaxKind["HeritageClause"] = 243] = "HeritageClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 244] = "CatchClause"; + SyntaxKind[SyntaxKind["CaseClause"] = 243] = "CaseClause"; + SyntaxKind[SyntaxKind["DefaultClause"] = 244] = "DefaultClause"; + SyntaxKind[SyntaxKind["HeritageClause"] = 245] = "HeritageClause"; + SyntaxKind[SyntaxKind["CatchClause"] = 246] = "CatchClause"; // Property assignments - SyntaxKind[SyntaxKind["PropertyAssignment"] = 245] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 246] = "ShorthandPropertyAssignment"; + SyntaxKind[SyntaxKind["PropertyAssignment"] = 247] = "PropertyAssignment"; + SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 248] = "ShorthandPropertyAssignment"; // Enum - SyntaxKind[SyntaxKind["EnumMember"] = 247] = "EnumMember"; + SyntaxKind[SyntaxKind["EnumMember"] = 249] = "EnumMember"; // Top-level nodes - SyntaxKind[SyntaxKind["SourceFile"] = 248] = "SourceFile"; + SyntaxKind[SyntaxKind["SourceFile"] = 250] = "SourceFile"; // JSDoc nodes. - SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 249] = "JSDocTypeExpression"; + SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 251] = "JSDocTypeExpression"; // The * type. - SyntaxKind[SyntaxKind["JSDocAllType"] = 250] = "JSDocAllType"; + SyntaxKind[SyntaxKind["JSDocAllType"] = 252] = "JSDocAllType"; // The ? type. - SyntaxKind[SyntaxKind["JSDocUnknownType"] = 251] = "JSDocUnknownType"; - SyntaxKind[SyntaxKind["JSDocArrayType"] = 252] = "JSDocArrayType"; - SyntaxKind[SyntaxKind["JSDocUnionType"] = 253] = "JSDocUnionType"; - SyntaxKind[SyntaxKind["JSDocTupleType"] = 254] = "JSDocTupleType"; - SyntaxKind[SyntaxKind["JSDocNullableType"] = 255] = "JSDocNullableType"; - SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 256] = "JSDocNonNullableType"; - SyntaxKind[SyntaxKind["JSDocRecordType"] = 257] = "JSDocRecordType"; - SyntaxKind[SyntaxKind["JSDocRecordMember"] = 258] = "JSDocRecordMember"; - SyntaxKind[SyntaxKind["JSDocTypeReference"] = 259] = "JSDocTypeReference"; - SyntaxKind[SyntaxKind["JSDocOptionalType"] = 260] = "JSDocOptionalType"; - SyntaxKind[SyntaxKind["JSDocFunctionType"] = 261] = "JSDocFunctionType"; - SyntaxKind[SyntaxKind["JSDocVariadicType"] = 262] = "JSDocVariadicType"; - SyntaxKind[SyntaxKind["JSDocConstructorType"] = 263] = "JSDocConstructorType"; - SyntaxKind[SyntaxKind["JSDocThisType"] = 264] = "JSDocThisType"; - SyntaxKind[SyntaxKind["JSDocComment"] = 265] = "JSDocComment"; - SyntaxKind[SyntaxKind["JSDocTag"] = 266] = "JSDocTag"; - SyntaxKind[SyntaxKind["JSDocParameterTag"] = 267] = "JSDocParameterTag"; - SyntaxKind[SyntaxKind["JSDocReturnTag"] = 268] = "JSDocReturnTag"; - SyntaxKind[SyntaxKind["JSDocTypeTag"] = 269] = "JSDocTypeTag"; - SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 270] = "JSDocTemplateTag"; + SyntaxKind[SyntaxKind["JSDocUnknownType"] = 253] = "JSDocUnknownType"; + SyntaxKind[SyntaxKind["JSDocArrayType"] = 254] = "JSDocArrayType"; + SyntaxKind[SyntaxKind["JSDocUnionType"] = 255] = "JSDocUnionType"; + SyntaxKind[SyntaxKind["JSDocTupleType"] = 256] = "JSDocTupleType"; + SyntaxKind[SyntaxKind["JSDocNullableType"] = 257] = "JSDocNullableType"; + SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 258] = "JSDocNonNullableType"; + SyntaxKind[SyntaxKind["JSDocRecordType"] = 259] = "JSDocRecordType"; + SyntaxKind[SyntaxKind["JSDocRecordMember"] = 260] = "JSDocRecordMember"; + SyntaxKind[SyntaxKind["JSDocTypeReference"] = 261] = "JSDocTypeReference"; + SyntaxKind[SyntaxKind["JSDocOptionalType"] = 262] = "JSDocOptionalType"; + SyntaxKind[SyntaxKind["JSDocFunctionType"] = 263] = "JSDocFunctionType"; + SyntaxKind[SyntaxKind["JSDocVariadicType"] = 264] = "JSDocVariadicType"; + SyntaxKind[SyntaxKind["JSDocConstructorType"] = 265] = "JSDocConstructorType"; + SyntaxKind[SyntaxKind["JSDocThisType"] = 266] = "JSDocThisType"; + SyntaxKind[SyntaxKind["JSDocComment"] = 267] = "JSDocComment"; + SyntaxKind[SyntaxKind["JSDocTag"] = 268] = "JSDocTag"; + SyntaxKind[SyntaxKind["JSDocParameterTag"] = 269] = "JSDocParameterTag"; + SyntaxKind[SyntaxKind["JSDocReturnTag"] = 270] = "JSDocReturnTag"; + SyntaxKind[SyntaxKind["JSDocTypeTag"] = 271] = "JSDocTypeTag"; + SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 272] = "JSDocTemplateTag"; // Synthesized list - SyntaxKind[SyntaxKind["SyntaxList"] = 271] = "SyntaxList"; + SyntaxKind[SyntaxKind["SyntaxList"] = 273] = "SyntaxList"; // Enum value count - SyntaxKind[SyntaxKind["Count"] = 272] = "Count"; + SyntaxKind[SyntaxKind["Count"] = 274] = "Count"; // Markers SyntaxKind[SyntaxKind["FirstAssignment"] = 56] = "FirstAssignment"; SyntaxKind[SyntaxKind["LastAssignment"] = 68] = "LastAssignment"; @@ -331,8 +333,8 @@ var ts; SyntaxKind[SyntaxKind["LastKeyword"] = 134] = "LastKeyword"; SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 106] = "FirstFutureReservedWord"; SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 114] = "LastFutureReservedWord"; - SyntaxKind[SyntaxKind["FirstTypeNode"] = 151] = "FirstTypeNode"; - SyntaxKind[SyntaxKind["LastTypeNode"] = 160] = "LastTypeNode"; + SyntaxKind[SyntaxKind["FirstTypeNode"] = 150] = "FirstTypeNode"; + SyntaxKind[SyntaxKind["LastTypeNode"] = 162] = "LastTypeNode"; SyntaxKind[SyntaxKind["FirstPunctuation"] = 15] = "FirstPunctuation"; SyntaxKind[SyntaxKind["LastPunctuation"] = 68] = "LastPunctuation"; SyntaxKind[SyntaxKind["FirstToken"] = 0] = "FirstToken"; @@ -408,10 +410,14 @@ var ts; var ParserContextFlags = ts.ParserContextFlags; (function (JsxFlags) { JsxFlags[JsxFlags["None"] = 0] = "None"; + /** An element from a named property of the JSX.IntrinsicElements interface */ JsxFlags[JsxFlags["IntrinsicNamedElement"] = 1] = "IntrinsicNamedElement"; + /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */ JsxFlags[JsxFlags["IntrinsicIndexedElement"] = 2] = "IntrinsicIndexedElement"; - JsxFlags[JsxFlags["ClassElement"] = 4] = "ClassElement"; - JsxFlags[JsxFlags["UnknownElement"] = 8] = "UnknownElement"; + /** An element backed by a class, class-like, or function value */ + JsxFlags[JsxFlags["ValueElement"] = 4] = "ValueElement"; + /** Element resolution failed */ + JsxFlags[JsxFlags["UnknownElement"] = 16] = "UnknownElement"; JsxFlags[JsxFlags["IntrinsicElement"] = 3] = "IntrinsicElement"; })(ts.JsxFlags || (ts.JsxFlags = {})); var JsxFlags = ts.JsxFlags; @@ -426,7 +432,7 @@ var ts; function OperationCanceledException() { } return OperationCanceledException; - })(); + }()); ts.OperationCanceledException = OperationCanceledException; /** Return code used by getEmitOutput function to indicate status of the function */ (function (ExitStatus) { @@ -472,6 +478,11 @@ var ts; SymbolAccessibility[SymbolAccessibility["CannotBeNamed"] = 2] = "CannotBeNamed"; })(ts.SymbolAccessibility || (ts.SymbolAccessibility = {})); var SymbolAccessibility = ts.SymbolAccessibility; + (function (TypePredicateKind) { + TypePredicateKind[TypePredicateKind["This"] = 0] = "This"; + TypePredicateKind[TypePredicateKind["Identifier"] = 1] = "Identifier"; + })(ts.TypePredicateKind || (ts.TypePredicateKind = {})); + var TypePredicateKind = ts.TypePredicateKind; /** Indicates how to serialize the name for a TypeReferenceNode when emitting decorator * metadata */ /* @internal */ @@ -623,6 +634,7 @@ var ts; TypeFlags[TypeFlags["ESSymbol"] = 16777216] = "ESSymbol"; TypeFlags[TypeFlags["ThisType"] = 33554432] = "ThisType"; TypeFlags[TypeFlags["ObjectLiteralPatternWithComputedProperties"] = 67108864] = "ObjectLiteralPatternWithComputedProperties"; + TypeFlags[TypeFlags["PredicateType"] = 134217728] = "PredicateType"; /* @internal */ TypeFlags[TypeFlags["Intrinsic"] = 16777343] = "Intrinsic"; /* @internal */ @@ -633,7 +645,7 @@ var ts; TypeFlags[TypeFlags["UnionOrIntersection"] = 49152] = "UnionOrIntersection"; TypeFlags[TypeFlags["StructuredType"] = 130048] = "StructuredType"; /* @internal */ - TypeFlags[TypeFlags["RequiresWidening"] = 6291456] = "RequiresWidening"; + TypeFlags[TypeFlags["RequiresWidening"] = 140509184] = "RequiresWidening"; /* @internal */ TypeFlags[TypeFlags["PropagatingFlags"] = 14680064] = "PropagatingFlags"; })(ts.TypeFlags || (ts.TypeFlags = {})); @@ -648,6 +660,19 @@ var ts; IndexKind[IndexKind["Number"] = 1] = "Number"; })(ts.IndexKind || (ts.IndexKind = {})); var IndexKind = ts.IndexKind; + /* @internal */ + (function (SpecialPropertyAssignmentKind) { + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["None"] = 0] = "None"; + /// exports.name = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["ExportsProperty"] = 1] = "ExportsProperty"; + /// module.exports = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["ModuleExports"] = 2] = "ModuleExports"; + /// className.prototype.name = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["PrototypeProperty"] = 3] = "PrototypeProperty"; + /// this.name = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["ThisProperty"] = 4] = "ThisProperty"; + })(ts.SpecialPropertyAssignmentKind || (ts.SpecialPropertyAssignmentKind = {})); + var SpecialPropertyAssignmentKind = ts.SpecialPropertyAssignmentKind; (function (DiagnosticCategory) { DiagnosticCategory[DiagnosticCategory["Warning"] = 0] = "Warning"; DiagnosticCategory[DiagnosticCategory["Error"] = 1] = "Error"; @@ -1068,9 +1093,11 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos++] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos++; while (pos < count) { - result = f(result, array[pos++]); + result = f(result, array[pos]); + pos++; } return result; } @@ -1082,9 +1109,11 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos--] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos--; while (pos >= 0) { - result = f(result, array[pos--]); + result = f(result, array[pos]); + pos--; } return result; } @@ -1177,6 +1206,32 @@ var ts; return result; } ts.arrayToMap = arrayToMap; + /** + * Reduce the properties of a map. + * + * @param map The map to reduce + * @param callback An aggregation function that is called for each entry in the map + * @param initial The initial value for the reduction. + */ + function reduceProperties(map, callback, initial) { + var result = initial; + if (map) { + for (var key in map) { + if (hasProperty(map, key)) { + result = callback(result, map[key], String(key)); + } + } + } + return result; + } + ts.reduceProperties = reduceProperties; + /** + * Tests whether a value is an array. + */ + function isArray(value) { + return Array.isArray ? Array.isArray(value) : value instanceof Array; + } + ts.isArray = isArray; function memoize(callback) { var value; return function () { @@ -1502,7 +1557,7 @@ var ts; } ts.getRelativePathToDirectoryOrUrl = getRelativePathToDirectoryOrUrl; function getBaseFileName(path) { - if (!path) { + if (path === undefined) { return undefined; } var i = path.lastIndexOf(ts.directorySeparator); @@ -1530,14 +1585,19 @@ var ts; /** * List of supported extensions in order of file resolution precedence. */ - ts.supportedExtensions = [".ts", ".tsx", ".d.ts"]; - ts.supportedJsExtensions = ts.supportedExtensions.concat(".js", ".jsx"); - function isSupportedSourceFileName(fileName) { + ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"]; + ts.supportedJavascriptExtensions = [".js", ".jsx"]; + var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions); + function getSupportedExtensions(options) { + return options && options.allowJs ? allSupportedExtensions : ts.supportedTypeScriptExtensions; + } + ts.getSupportedExtensions = getSupportedExtensions; + function isSupportedSourceFileName(fileName, compilerOptions) { if (!fileName) { return false; } - for (var _i = 0, supportedExtensions_1 = ts.supportedExtensions; _i < supportedExtensions_1.length; _i++) { - var extension = supportedExtensions_1[_i]; + for (var _i = 0, _a = getSupportedExtensions(compilerOptions); _i < _a.length; _i++) { + var extension = _a[_i]; if (fileExtensionIs(fileName, extension)) { return true; } @@ -1556,22 +1616,6 @@ var ts; return path; } ts.removeFileExtension = removeFileExtension; - var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; - var escapedCharsMap = { - "\0": "\\0", - "\t": "\\t", - "\v": "\\v", - "\f": "\\f", - "\b": "\\b", - "\r": "\\r", - "\n": "\\n", - "\\": "\\\\", - "\"": "\\\"", - "\u2028": "\\u2028", - "\u2029": "\\u2029", - "\u0085": "\\u0085" // nextLine - }; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -1622,7 +1666,7 @@ var ts; } Debug.assert = assert; function fail(message) { - Debug.assert(false, message); + Debug.assert(/*expression*/ false, message); } Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); @@ -1783,7 +1827,6 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); - var _tty = require("tty"); // average async stat takes about 30 microseconds // set chunk size to do 30 files in < 1 millisecond function createWatchedFileSet(interval, chunkSize) { @@ -1858,7 +1901,7 @@ var 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 @@ -1869,9 +1912,6 @@ var ts; // to increase the chunk size or decrease the interval // time dynamically to match the large reference set? var watchedFileSet = createWatchedFileSet(); - function isNode4OrLater() { - return parseInt(process.version.charAt(1)) >= 4; - } var platform = _os.platform(); // win32\win64 are case insensitive platforms, MacOS (darwin) by default is also case insensitive var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; @@ -1965,17 +2005,13 @@ var ts; // and is more efficient than `fs.watchFile` (ref: https://github.com/nodejs/node/pull/2649 // and https://github.com/Microsoft/TypeScript/issues/4643), therefore // if the current node.js version is newer than 4, use `fs.watch` instead. - if (isNode4OrLater()) { - // Note: in node the callback of fs.watch is given only the relative file name as a parameter - return _fs.watch(fileName, function (eventName, relativeFileName) { return callback(fileName); }); - } var watchedFile = watchedFileSet.addFile(fileName, callback); return { close: function () { return watchedFileSet.removeFile(watchedFile); } }; }, watchDirectory: function (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, { persistent: true, recursive: !!recursive }, function (eventName, relativeFileName) { // In watchDirectory we only care about adding and removing files (when event name is @@ -2020,6 +2056,33 @@ var ts; } }; } + function getChakraSystem() { + return { + newLine: ChakraHost.newLine || "\r\n", + args: ChakraHost.args, + useCaseSensitiveFileNames: !!ChakraHost.useCaseSensitiveFileNames, + write: ChakraHost.echo, + readFile: function (path, encoding) { + // encoding is automatically handled by the implementation in ChakraHost + return ChakraHost.readFile(path); + }, + writeFile: function (path, data, writeByteOrderMark) { + // If a BOM is required, emit one + if (writeByteOrderMark) { + data = "\uFEFF" + data; + } + ChakraHost.writeFile(path, data); + }, + resolvePath: ChakraHost.resolvePath, + fileExists: ChakraHost.fileExists, + directoryExists: ChakraHost.directoryExists, + createDirectory: ChakraHost.createDirectory, + getExecutingFilePath: function () { return ChakraHost.executingFile; }, + getCurrentDirectory: function () { return ChakraHost.currentDirectory; }, + readDirectory: ChakraHost.readDirectory, + exit: ChakraHost.quit + }; + } if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } @@ -2028,6 +2091,9 @@ var ts; // process.browser check excludes webpack and browserify return getNodeSystem(); } + else if (typeof ChakraHost !== "undefined") { + return getChakraSystem(); + } else { return undefined; // Unsupported host } @@ -2148,7 +2214,7 @@ var ts; Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers_not_permitted_on_index_signature_members_1145", message: "Modifiers not permitted on index signature members." }, Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration_expected_1146", message: "Declaration expected." }, Import_declarations_in_a_namespace_cannot_reference_a_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import_declarations_in_a_namespace_cannot_reference_a_module_1147", message: "Import declarations in a namespace cannot reference a module." }, - Cannot_compile_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_1148", message: "Cannot compile modules unless the '--module' flag is provided." }, + Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_optio_1148", message: "Cannot compile modules unless the '--module' flag is provided. Consider setting the 'module' compiler option in a 'tsconfig.json' file." }, File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149", message: "File name '{0}' differs from already included file name '{1}' only in casing" }, new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead_1150", message: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "const_declarations_must_be_initialized_1155", message: "'const' declarations must be initialized" }, @@ -2235,6 +2301,10 @@ var ts; _0_modifier_cannot_be_used_with_1_modifier: { code: 1243, category: ts.DiagnosticCategory.Error, key: "_0_modifier_cannot_be_used_with_1_modifier_1243", message: "'{0}' modifier cannot be used with '{1}' modifier." }, Abstract_methods_can_only_appear_within_an_abstract_class: { code: 1244, category: ts.DiagnosticCategory.Error, key: "Abstract_methods_can_only_appear_within_an_abstract_class_1244", message: "Abstract methods can only appear within an abstract class." }, Method_0_cannot_have_an_implementation_because_it_is_marked_abstract: { code: 1245, category: ts.DiagnosticCategory.Error, key: "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245", message: "Method '{0}' cannot have an implementation because it is marked abstract." }, + An_interface_property_cannot_have_an_initializer: { code: 1246, category: ts.DiagnosticCategory.Error, key: "An_interface_property_cannot_have_an_initializer_1246", message: "An interface property cannot have an initializer." }, + A_type_literal_property_cannot_have_an_initializer: { code: 1247, category: ts.DiagnosticCategory.Error, key: "A_type_literal_property_cannot_have_an_initializer_1247", message: "A type literal property cannot have an initializer." }, + A_class_member_cannot_have_the_0_keyword: { code: 1248, category: ts.DiagnosticCategory.Error, key: "A_class_member_cannot_have_the_0_keyword_1248", message: "A class member cannot have the '{0}' keyword." }, + A_decorator_can_only_decorate_a_method_implementation_not_an_overload: { code: 1249, category: ts.DiagnosticCategory.Error, key: "A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249", message: "A decorator can only decorate a method implementation, not an overload." }, with_statements_are_not_allowed_in_an_async_function_block: { code: 1300, category: ts.DiagnosticCategory.Error, key: "with_statements_are_not_allowed_in_an_async_function_block_1300", message: "'with' statements are not allowed in an async function block." }, await_expression_is_only_allowed_within_an_async_function: { code: 1308, category: ts.DiagnosticCategory.Error, key: "await_expression_is_only_allowed_within_an_async_function_1308", message: "'await' expression is only allowed within an async function." }, Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, @@ -2248,11 +2318,12 @@ var ts; Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module_0_has_no_exported_member_1_2305", message: "Module '{0}' has no exported member '{1}'." }, File_0_is_not_a_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_a_module_2306", message: "File '{0}' is not a module." }, Cannot_find_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot_find_module_0_2307", message: "Cannot find module '{0}'." }, + Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity: { code: 2308, category: ts.DiagnosticCategory.Error, key: "Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308", message: "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity." }, An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309", message: "An export assignment cannot be used in a module with other exported elements." }, Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type_0_recursively_references_itself_as_a_base_type_2310", message: "Type '{0}' recursively references itself as a base type." }, A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A_class_may_only_extend_another_class_2311", message: "A class may only extend another class." }, An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An_interface_may_only_extend_a_class_or_another_interface_2312", message: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list_2313", message: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Type_parameter_0_has_a_circular_constraint: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_has_a_circular_constraint_2313", message: "Type parameter '{0}' has a circular constraint." }, Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic_type_0_requires_1_type_argument_s_2314", message: "Generic type '{0}' requires {1} type argument(s)." }, Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_generic_2315", message: "Type '{0}' is not generic." }, Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global_type_0_must_be_a_class_or_interface_type_2316", message: "Global type '{0}' must be a class or interface type." }, @@ -2262,6 +2333,7 @@ var ts; Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface_0_cannot_simultaneously_extend_types_1_and_2_2320", message: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive_stack_depth_comparing_types_0_and_1_2321", message: "Excessive stack depth comparing types '{0}' and '{1}'." }, Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_assignable_to_type_1_2322", message: "Type '{0}' is not assignable to type '{1}'." }, + Cannot_redeclare_exported_variable_0: { code: 2323, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_exported_variable_0_2323", message: "Cannot redeclare exported variable '{0}'." }, Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property_0_is_missing_in_type_1_2324", message: "Property '{0}' is missing in type '{1}'." }, Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property_0_is_private_in_type_1_but_not_in_type_2_2325", message: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types_of_property_0_are_incompatible_2326", message: "Types of property '{0}' are incompatible." }, @@ -2332,6 +2404,7 @@ var ts; Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload_signature_is_not_compatible_with_function_implementation_2394", message: "Overload signature is not compatible with function implementation." }, Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395", message: "Individual declarations in merged declaration '{0}' must be all exported or all local." }, Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396", message: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Declaration_name_conflicts_with_built_in_global_identifier_0: { code: 2397, category: ts.DiagnosticCategory.Error, key: "Declaration_name_conflicts_with_built_in_global_identifier_0_2397", message: "Declaration name conflicts with built-in global identifier '{0}'." }, Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399", message: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400", message: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference_2401", message: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, @@ -2445,6 +2518,8 @@ var ts; Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: { code: 2515, category: ts.DiagnosticCategory.Error, key: "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", message: "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'." }, All_declarations_of_an_abstract_method_must_be_consecutive: { code: 2516, category: ts.DiagnosticCategory.Error, key: "All_declarations_of_an_abstract_method_must_be_consecutive_2516", message: "All declarations of an abstract method must be consecutive." }, Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: { code: 2517, category: ts.DiagnosticCategory.Error, key: "Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517", message: "Cannot assign an abstract constructor type to a non-abstract constructor type." }, + A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard: { code: 2518, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518", message: "A 'this'-based type guard is not compatible with a parameter-based type guard." }, + A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods: { code: 2519, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_r_2519", message: "A 'this'-based type predicate is only allowed within a class or interface's members, get accessors, or return type positions for functions and methods." }, Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: { code: 2520, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520", message: "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions." }, Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions: { code: 2521, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions_2521", message: "Expression resolves to variable declaration '{0}' that compiler uses to support async functions." }, The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_2522", message: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, @@ -2454,7 +2529,7 @@ var ts; A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface: { code: 2526, category: ts.DiagnosticCategory.Error, key: "A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526", message: "A 'this' type is available only in a non-static member of a class or interface." }, The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary: { code: 2527, category: ts.DiagnosticCategory.Error, key: "The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary_2527", message: "The inferred type of '{0}' references an inaccessible 'this' type. A type annotation is necessary." }, A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, - JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_must_be_an_object_type_2600", message: "JSX element attributes type '{0}' must be an object type." }, + JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, Property_0_in_type_1_is_not_assignable_to_type_2: { code: 2603, category: ts.DiagnosticCategory.Error, key: "Property_0_in_type_1_is_not_assignable_to_type_2_2603", message: "Property '{0}' in type '{1}' is not assignable to type '{2}'" }, @@ -2470,6 +2545,9 @@ var ts; Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_pack_2654", message: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_2656", message: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, JSX_expressions_must_have_one_parent_element: { code: 2657, category: ts.DiagnosticCategory.Error, key: "JSX_expressions_must_have_one_parent_element_2657", message: "JSX expressions must have one parent element" }, + Type_0_provides_no_match_for_the_signature_1: { code: 2658, category: ts.DiagnosticCategory.Error, key: "Type_0_provides_no_match_for_the_signature_1_2658", message: "Type '{0}' provides no match for the signature '{1}'" }, + super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher: { code: 2659, category: ts.DiagnosticCategory.Error, key: "super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659", message: "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher." }, + super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions: { code: 2660, category: ts.DiagnosticCategory.Error, key: "super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660", message: "'super' can only be referenced in members of derived classes or object literal expressions." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -2554,6 +2632,11 @@ var ts; Option_0_cannot_be_specified_without_specifying_option_1: { code: 5052, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_without_specifying_option_1_5052", message: "Option '{0}' cannot be specified without specifying option '{1}'." }, Option_0_cannot_be_specified_with_option_1: { code: 5053, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_with_option_1_5053", message: "Option '{0}' cannot be specified with option '{1}'." }, A_tsconfig_json_file_is_already_defined_at_Colon_0: { code: 5054, category: ts.DiagnosticCategory.Error, key: "A_tsconfig_json_file_is_already_defined_at_Colon_0_5054", message: "A 'tsconfig.json' file is already defined at: '{0}'." }, + Cannot_write_file_0_because_it_would_overwrite_input_file: { code: 5055, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_overwrite_input_file_5055", message: "Cannot write file '{0}' because it would overwrite input file." }, + Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files: { code: 5056, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056", message: "Cannot write file '{0}' because it would be overwritten by multiple input files." }, + Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0: { code: 5057, category: ts.DiagnosticCategory.Error, key: "Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057", message: "Cannot find a tsconfig.json file at the specified directory: '{0}'" }, + The_specified_path_does_not_exist_Colon_0: { code: 5058, category: ts.DiagnosticCategory.Error, key: "The_specified_path_does_not_exist_Colon_0_5058", message: "The specified path does not exist: '{0}'" }, + Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier: { code: 5059, category: ts.DiagnosticCategory.Error, key: "Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier_5059", message: "Invalide value for '--reactNamespace'. '{0}' is not a valid identifier." }, Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate_and_emit_output_to_single_file_6001", message: "Concatenate and emit output to single file." }, Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_d_ts_file_6002", message: "Generates corresponding '.d.ts' file." }, Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, @@ -2564,6 +2647,7 @@ var ts; Do_not_emit_outputs_if_any_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_if_any_errors_were_reported_6008", message: "Do not emit outputs if any errors were reported." }, Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, + Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, @@ -2619,6 +2703,8 @@ var ts; Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, + Allow_javascript_files_to_be_compiled: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6083", message: "Allow javascript files to be compiled." }, + Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable_0_implicitly_has_an_1_type_7005", message: "Variable '{0}' implicitly has an '{1}' type." }, Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter_0_implicitly_has_an_1_type_7006", message: "Parameter '{0}' implicitly has an '{1}' type." }, Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member_0_implicitly_has_an_1_type_7008", message: "Member '{0}' implicitly has an '{1}' type." }, @@ -2666,7 +2752,8 @@ var ts; Cannot_use_JSX_unless_the_jsx_flag_is_provided: { code: 17004, category: ts.DiagnosticCategory.Error, key: "Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004", message: "Cannot use JSX unless the '--jsx' flag is provided." }, A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005", message: "A constructor cannot contain a 'super' call when its class extends 'null'" }, An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, - A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." } + A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, + JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." } }; })(ts || (ts = {})); /// @@ -2906,7 +2993,8 @@ var ts; var pos = 0; var lineStart = 0; while (pos < text.length) { - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 13 /* carriageReturn */: if (text.charCodeAt(pos) === 10 /* lineFeed */) { @@ -3040,6 +3128,11 @@ var ts; ts.couldStartTrivia = couldStartTrivia; /* @internal */ function skipTrivia(text, pos, stopAfterLineBreak) { + // Using ! with a greater than test is a fast way of testing the following conditions: + // pos === undefined || pos === null || isNaN(pos) || pos < 0; + if (!(pos >= 0)) { + return pos; + } // Keep in sync with couldStartTrivia while (true) { var ch = text.charCodeAt(pos); @@ -3276,6 +3369,19 @@ var ts; ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierPart(ch, languageVersion); } ts.isIdentifierPart = isIdentifierPart; + /* @internal */ + function isIdentifier(name, languageVersion) { + if (!isIdentifierStart(name.charCodeAt(0), languageVersion)) { + return false; + } + for (var i = 1, n = name.length; i < n; i++) { + if (!isIdentifierPart(name.charCodeAt(i), languageVersion)) { + return false; + } + } + return true; + } + ts.isIdentifier = isIdentifier; // Creates a scanner over a (possibly unspecified) range of a piece of text. function createScanner(languageVersion, skipTrivia, languageVariant, text, onError, start, length) { if (languageVariant === void 0) { languageVariant = 0 /* Standard */; } @@ -3398,7 +3504,8 @@ var ts; return value; } function scanString() { - var quote = text.charCodeAt(pos++); + var quote = text.charCodeAt(pos); + pos++; var result = ""; var start = pos; while (true) { @@ -3494,7 +3601,8 @@ var ts; error(ts.Diagnostics.Unexpected_end_of_text); return ""; } - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 48 /* _0 */: return "\0"; @@ -3721,7 +3829,8 @@ var ts; } return pos += 2, token = 31 /* ExclamationEqualsToken */; } - return pos++, token = 49 /* ExclamationToken */; + pos++; + return token = 49 /* ExclamationToken */; case 34 /* doubleQuote */: case 39 /* singleQuote */: tokenValue = scanString(); @@ -3732,7 +3841,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 62 /* PercentEqualsToken */; } - return pos++, token = 40 /* PercentToken */; + pos++; + return token = 40 /* PercentToken */; case 38 /* ampersand */: if (text.charCodeAt(pos + 1) === 38 /* ampersand */) { return pos += 2, token = 51 /* AmpersandAmpersandToken */; @@ -3740,11 +3850,14 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 66 /* AmpersandEqualsToken */; } - return pos++, token = 46 /* AmpersandToken */; + pos++; + return token = 46 /* AmpersandToken */; case 40 /* openParen */: - return pos++, token = 17 /* OpenParenToken */; + pos++; + return token = 17 /* OpenParenToken */; case 41 /* closeParen */: - return pos++, token = 18 /* CloseParenToken */; + pos++; + return token = 18 /* CloseParenToken */; case 42 /* asterisk */: if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 59 /* AsteriskEqualsToken */; @@ -3755,7 +3868,8 @@ var ts; } return pos += 2, token = 38 /* AsteriskAsteriskToken */; } - return pos++, token = 37 /* AsteriskToken */; + pos++; + return token = 37 /* AsteriskToken */; case 43 /* plus */: if (text.charCodeAt(pos + 1) === 43 /* plus */) { return pos += 2, token = 41 /* PlusPlusToken */; @@ -3763,9 +3877,11 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 57 /* PlusEqualsToken */; } - return pos++, token = 35 /* PlusToken */; + pos++; + return token = 35 /* PlusToken */; case 44 /* comma */: - return pos++, token = 24 /* CommaToken */; + pos++; + return token = 24 /* CommaToken */; case 45 /* minus */: if (text.charCodeAt(pos + 1) === 45 /* minus */) { return pos += 2, token = 42 /* MinusMinusToken */; @@ -3773,7 +3889,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 58 /* MinusEqualsToken */; } - return pos++, token = 36 /* MinusToken */; + pos++; + return token = 36 /* MinusToken */; case 46 /* dot */: if (isDigit(text.charCodeAt(pos + 1))) { tokenValue = scanNumber(); @@ -3782,7 +3899,8 @@ var ts; if (text.charCodeAt(pos + 1) === 46 /* dot */ && text.charCodeAt(pos + 2) === 46 /* dot */) { return pos += 3, token = 22 /* DotDotDotToken */; } - return pos++, token = 21 /* DotToken */; + pos++; + return token = 21 /* DotToken */; case 47 /* slash */: // Single-line comment if (text.charCodeAt(pos + 1) === 47 /* slash */) { @@ -3830,7 +3948,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 61 /* SlashEqualsToken */; } - return pos++, token = 39 /* SlashToken */; + pos++; + return token = 39 /* SlashToken */; case 48 /* _0 */: if (pos + 2 < end && (text.charCodeAt(pos + 1) === 88 /* X */ || text.charCodeAt(pos + 1) === 120 /* x */)) { pos += 2; @@ -3882,9 +4001,11 @@ var ts; tokenValue = scanNumber(); return token = 8 /* NumericLiteral */; case 58 /* colon */: - return pos++, token = 54 /* ColonToken */; + pos++; + return token = 54 /* ColonToken */; case 59 /* semicolon */: - return pos++, token = 23 /* SemicolonToken */; + pos++; + return token = 23 /* SemicolonToken */; case 60 /* lessThan */: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -3909,7 +4030,8 @@ var ts; text.charCodeAt(pos + 2) !== 42 /* asterisk */) { return pos += 2, token = 26 /* LessThanSlashToken */; } - return pos++, token = 25 /* LessThanToken */; + pos++; + return token = 25 /* LessThanToken */; case 61 /* equals */: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -3929,7 +4051,8 @@ var ts; if (text.charCodeAt(pos + 1) === 62 /* greaterThan */) { return pos += 2, token = 34 /* EqualsGreaterThanToken */; } - return pos++, token = 56 /* EqualsToken */; + pos++; + return token = 56 /* EqualsToken */; case 62 /* greaterThan */: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -3940,20 +4063,26 @@ var ts; return token = 7 /* ConflictMarkerTrivia */; } } - return pos++, token = 27 /* GreaterThanToken */; + pos++; + return token = 27 /* GreaterThanToken */; case 63 /* question */: - return pos++, token = 53 /* QuestionToken */; + pos++; + return token = 53 /* QuestionToken */; case 91 /* openBracket */: - return pos++, token = 19 /* OpenBracketToken */; + pos++; + return token = 19 /* OpenBracketToken */; case 93 /* closeBracket */: - return pos++, token = 20 /* CloseBracketToken */; + pos++; + return token = 20 /* CloseBracketToken */; case 94 /* caret */: if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 68 /* CaretEqualsToken */; } - return pos++, token = 48 /* CaretToken */; + pos++; + return token = 48 /* CaretToken */; case 123 /* openBrace */: - return pos++, token = 15 /* OpenBraceToken */; + pos++; + return token = 15 /* OpenBraceToken */; case 124 /* bar */: if (text.charCodeAt(pos + 1) === 124 /* bar */) { return pos += 2, token = 52 /* BarBarToken */; @@ -3961,13 +4090,17 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 67 /* BarEqualsToken */; } - return pos++, token = 47 /* BarToken */; + pos++; + return token = 47 /* BarToken */; case 125 /* closeBrace */: - return pos++, token = 16 /* CloseBraceToken */; + pos++; + return token = 16 /* CloseBraceToken */; case 126 /* tilde */: - return pos++, token = 50 /* TildeToken */; + pos++; + return token = 50 /* TildeToken */; case 64 /* at */: - return pos++, token = 55 /* AtToken */; + pos++; + return token = 55 /* AtToken */; case 92 /* backslash */: var cookedChar = peekUnicodeEscape(); if (cookedChar >= 0 && isIdentifierStart(cookedChar, languageVersion)) { @@ -3976,7 +4109,8 @@ var ts; return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0 /* Unknown */; + pos++; + return token = 0 /* Unknown */; default: if (isIdentifierStart(ch, languageVersion)) { pos++; @@ -3998,7 +4132,8 @@ var ts; continue; } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0 /* Unknown */; + pos++; + return token = 0 /* Unknown */; } } } @@ -4014,10 +4149,12 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 64 /* GreaterThanGreaterThanEqualsToken */; } - return pos++, token = 44 /* GreaterThanGreaterThanToken */; + pos++; + return token = 44 /* GreaterThanGreaterThanToken */; } if (text.charCodeAt(pos) === 61 /* equals */) { - return pos++, token = 29 /* GreaterThanEqualsToken */; + pos++; + return token = 29 /* GreaterThanEqualsToken */; } } return token; @@ -4109,7 +4246,7 @@ var ts; break; } } - return token = 236 /* JsxText */; + return token = 238 /* JsxText */; } // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes @@ -4150,10 +4287,10 @@ var ts; return result; } function lookAhead(callback) { - return speculationHelper(callback, /*isLookahead:*/ true); + return speculationHelper(callback, /*isLookahead*/ true); } function tryScan(callback) { - return speculationHelper(callback, /*isLookahead:*/ false); + return speculationHelper(callback, /*isLookahead*/ false); } function setText(newText, start, length) { text = newText || ""; @@ -4244,7 +4381,7 @@ var ts; if (array1.length !== array2.length) { return false; } - for (var i = 0; i < array1.length; ++i) { + for (var i = 0; i < array1.length; i++) { var equals = equaler ? equaler(array1[i], array2[i]) : array1[i] === array2[i]; if (!equals) { return false; @@ -4292,7 +4429,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 248 /* SourceFile */) { + while (node && node.kind !== 250 /* SourceFile */) { node = node.parent; } return node; @@ -4404,15 +4541,15 @@ var ts; return current; } switch (current.kind) { - case 248 /* SourceFile */: - case 220 /* CaseBlock */: - case 244 /* CatchClause */: - case 218 /* ModuleDeclaration */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 250 /* SourceFile */: + case 222 /* CaseBlock */: + case 246 /* CatchClause */: + case 220 /* ModuleDeclaration */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return current; - case 192 /* Block */: + case 194 /* Block */: // function block is not considered block-scope container // see comment in binder.ts: bind(...), case for SyntaxKind.Block if (!isFunctionLike(current.parent)) { @@ -4425,9 +4562,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 211 /* VariableDeclaration */ && + declaration.kind === 213 /* VariableDeclaration */ && declaration.parent && - declaration.parent.kind === 244 /* CatchClause */; + declaration.parent.kind === 246 /* CatchClause */; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; // Return display name of an identifier @@ -4466,7 +4603,7 @@ var ts; function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: var pos_1 = ts.skipTrivia(sourceFile.text, 0, /*stopAfterLineBreak*/ false); if (pos_1 === sourceFile.text.length) { // file is empty - return span for the beginning of the file @@ -4475,16 +4612,17 @@ var ts; return getSpanOfTokenAtPosition(sourceFile, pos_1); // This list is a work in progress. Add missing node kinds to improve their error // spans. - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 218 /* ModuleDeclaration */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 220 /* ModuleDeclaration */: + case 219 /* EnumDeclaration */: + case 249 /* EnumMember */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 143 /* MethodDeclaration */: errorNode = node.name; break; } @@ -4512,11 +4650,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 217 /* EnumDeclaration */ && isConst(node); + return node.kind === 219 /* EnumDeclaration */ && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 163 /* BindingElement */ || isBindingPattern(node))) { + while (node && (node.kind === 165 /* BindingElement */ || isBindingPattern(node))) { node = node.parent; } return node; @@ -4531,14 +4669,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 211 /* VariableDeclaration */) { + if (node.kind === 213 /* VariableDeclaration */) { node = node.parent; } - if (node && node.kind === 212 /* VariableDeclarationList */) { + if (node && node.kind === 214 /* VariableDeclarationList */) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 193 /* VariableStatement */) { + if (node && node.kind === 195 /* VariableStatement */) { flags |= node.flags; } return flags; @@ -4553,7 +4691,7 @@ var ts; } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 195 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; + return node.kind === 197 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -4584,7 +4722,7 @@ var ts; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (151 /* FirstTypeNode */ <= node.kind && node.kind <= 160 /* LastTypeNode */) { + if (150 /* FirstTypeNode */ <= node.kind && node.kind <= 162 /* LastTypeNode */) { return true; } switch (node.kind) { @@ -4595,11 +4733,8 @@ var ts; case 131 /* SymbolKeyword */: return true; case 103 /* VoidKeyword */: - return node.parent.kind !== 177 /* VoidExpression */; - case 9 /* StringLiteral */: - // Specialized signatures can have string literals as their parameters' type names - return node.parent.kind === 138 /* Parameter */; - case 188 /* ExpressionWithTypeArguments */: + return node.parent.kind !== 179 /* VoidExpression */; + case 190 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container @@ -4608,13 +4743,13 @@ var ts; if (node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.name === node) { + else if (node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.name === node) { node = node.parent; } // At this point, node is either a qualified name or an identifier - ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 166 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 168 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); case 135 /* QualifiedName */: - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 97 /* ThisKeyword */: var parent_1 = node.parent; if (parent_1.kind === 154 /* TypeQuery */) { @@ -4626,22 +4761,22 @@ var ts; // // Calling isTypeNode would consider the qualified name A.B a type node. Only C or // A.B.C is a type node. - if (151 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 160 /* LastTypeNode */) { + if (150 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 162 /* LastTypeNode */) { return true; } switch (parent_1.kind) { - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); case 137 /* TypeParameter */: return node === parent_1.constraint; case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: case 138 /* Parameter */: - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return node === parent_1.type; - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: case 144 /* Constructor */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: @@ -4652,12 +4787,12 @@ var ts; case 148 /* ConstructSignature */: case 149 /* IndexSignature */: return node === parent_1.type; - case 171 /* TypeAssertionExpression */: + case 173 /* TypeAssertionExpression */: return node === parent_1.type; - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: // TODO (drosen): TaggedTemplateExpressions may eventually support type arguments. return false; } @@ -4671,23 +4806,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return visitor(node); - case 220 /* CaseBlock */: - case 192 /* Block */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 205 /* WithStatement */: - case 206 /* SwitchStatement */: - case 241 /* CaseClause */: - case 242 /* DefaultClause */: - case 207 /* LabeledStatement */: - case 209 /* TryStatement */: - case 244 /* CatchClause */: + case 222 /* CaseBlock */: + case 194 /* Block */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 207 /* WithStatement */: + case 208 /* SwitchStatement */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: + case 209 /* LabeledStatement */: + case 211 /* TryStatement */: + case 246 /* CatchClause */: return ts.forEachChild(node, traverse); } } @@ -4697,18 +4832,18 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: - case 218 /* ModuleDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: + case 220 /* ModuleDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: // These are not allowed inside a generator now, but eventually they may be allowed // as local types. Regardless, any yield statements contained within them should be // skipped in this traversal. @@ -4735,14 +4870,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 163 /* BindingElement */: - case 247 /* EnumMember */: + case 165 /* BindingElement */: + case 249 /* EnumMember */: case 138 /* Parameter */: - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 246 /* ShorthandPropertyAssignment */: - case 211 /* VariableDeclaration */: + case 248 /* ShorthandPropertyAssignment */: + case 213 /* VariableDeclaration */: return true; } } @@ -4754,7 +4889,7 @@ var ts; } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 214 /* ClassDeclaration */ || node.kind === 186 /* ClassExpression */); + return node && (node.kind === 216 /* ClassDeclaration */ || node.kind === 188 /* ClassExpression */); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -4764,9 +4899,9 @@ var ts; function isFunctionLikeKind(kind) { switch (kind) { case 144 /* Constructor */: - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: @@ -4787,8 +4922,8 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: return true; } return false; @@ -4796,26 +4931,30 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: return true; - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 192 /* Block */ && isFunctionLike(node.parent); + return node && node.kind === 194 /* Block */ && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 143 /* MethodDeclaration */ && node.parent.kind === 165 /* ObjectLiteralExpression */; + return node && node.kind === 143 /* MethodDeclaration */ && node.parent.kind === 167 /* ObjectLiteralExpression */; } ts.isObjectLiteralMethod = isObjectLiteralMethod; + function isIdentifierTypePredicate(predicate) { + return predicate && predicate.kind === 1 /* Identifier */; + } + ts.isIdentifierTypePredicate = isIdentifierTypePredicate; function getContainingFunction(node) { while (true) { node = node.parent; @@ -4869,14 +5008,14 @@ var ts; node = node.parent; } break; - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: if (!includeArrowFunctions) { continue; } // Fall through - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 218 /* ModuleDeclaration */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 220 /* ModuleDeclaration */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: case 143 /* MethodDeclaration */: @@ -4887,34 +5026,45 @@ var ts; case 147 /* CallSignature */: case 148 /* ConstructSignature */: case 149 /* IndexSignature */: - case 217 /* EnumDeclaration */: - case 248 /* SourceFile */: + case 219 /* EnumDeclaration */: + case 250 /* SourceFile */: return node; } } } ts.getThisContainer = getThisContainer; - function getSuperContainer(node, includeFunctions) { + /** + * Given an super call\property node returns a closest node where either + * - super call\property is legal in the node and not legal in the parent node the node. + * i.e. super call is legal in constructor but not legal in the class body. + * - node is arrow function (so caller might need to call getSuperContainer in case if he needs to climb higher) + * - super call\property is definitely illegal in the node (but might be legal in some subnode) + * i.e. super property access is illegal in function declaration but can be legal in the statement list + */ + function getSuperContainer(node, stopOnFunctions) { while (true) { node = node.parent; - if (!node) + if (!node) { return node; + } switch (node.kind) { case 136 /* ComputedPropertyName */: - // If the grandparent node is an object literal (as opposed to a class), - // then the computed property is not a 'super' container. - // A computed property name in a class needs to be a super container - // so that we can error on it. - if (isClassLike(node.parent.parent)) { - return node; - } - // If this is a computed property, then the parent should not - // make it a super container. The parent might be a property - // in an object literal, like a method or accessor. But in order for - // such a parent to be a super container, the reference must be in - // the *body* of the container. node = node.parent; break; + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + if (!stopOnFunctions) { + continue; + } + case 141 /* PropertyDeclaration */: + case 140 /* PropertySignature */: + case 143 /* MethodDeclaration */: + case 142 /* MethodSignature */: + case 144 /* Constructor */: + case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + return node; case 139 /* Decorator */: // Decorators are always applied outside of the body of a class or method. if (node.parent.kind === 138 /* Parameter */ && isClassElement(node.parent.parent)) { @@ -4928,20 +5078,6 @@ var ts; node = node.parent; } break; - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - if (!includeFunctions) { - continue; - } - case 141 /* PropertyDeclaration */: - case 140 /* PropertySignature */: - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - case 144 /* Constructor */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - return node; } } } @@ -4951,7 +5087,7 @@ var ts; switch (node.kind) { case 151 /* TypeReference */: return node.typeName; - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return node.expression; case 69 /* Identifier */: case 135 /* QualifiedName */: @@ -4962,7 +5098,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { return node.tag; } // Will either be a CallExpression, NewExpression, or Decorator. @@ -4971,27 +5107,27 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: // classes are valid targets return true; case 141 /* PropertyDeclaration */: // property declarations are valid if their parent is a class declaration. - return node.parent.kind === 214 /* ClassDeclaration */; + return node.parent.kind === 216 /* ClassDeclaration */; case 138 /* Parameter */: // if the parameter's parent has a body and its grandparent is a class declaration, this is a valid target; - return node.parent.body && node.parent.parent.kind === 214 /* ClassDeclaration */; + return node.parent.body && node.parent.parent.kind === 216 /* ClassDeclaration */; case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 143 /* MethodDeclaration */: // if this method has a body and its parent is a class declaration, this is a valid target. - return node.body && node.parent.kind === 214 /* ClassDeclaration */; + return node.body && node.parent.kind === 216 /* ClassDeclaration */; } return false; } ts.nodeCanBeDecorated = nodeCanBeDecorated; function nodeIsDecorated(node) { switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: if (node.decorators) { return true; } @@ -5017,27 +5153,12 @@ var ts; return false; } ts.nodeIsDecorated = nodeIsDecorated; - function childIsDecorated(node) { - switch (node.kind) { - case 214 /* ClassDeclaration */: - return ts.forEach(node.members, nodeOrChildIsDecorated); - case 143 /* MethodDeclaration */: - case 146 /* SetAccessor */: - return ts.forEach(node.parameters, nodeIsDecorated); - } - return false; - } - ts.childIsDecorated = childIsDecorated; - function nodeOrChildIsDecorated(node) { - return nodeIsDecorated(node) || childIsDecorated(node); - } - ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 166 /* PropertyAccessExpression */; + return node.kind === 168 /* PropertyAccessExpression */; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 167 /* ElementAccessExpression */; + return node.kind === 169 /* ElementAccessExpression */; } ts.isElementAccessExpression = isElementAccessExpression; function isExpression(node) { @@ -5047,34 +5168,34 @@ var ts; case 99 /* TrueKeyword */: case 84 /* FalseKeyword */: case 10 /* RegularExpressionLiteral */: - case 164 /* ArrayLiteralExpression */: - case 165 /* ObjectLiteralExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 170 /* TaggedTemplateExpression */: - case 189 /* AsExpression */: - case 171 /* TypeAssertionExpression */: - case 172 /* ParenthesizedExpression */: - case 173 /* FunctionExpression */: - case 186 /* ClassExpression */: - case 174 /* ArrowFunction */: - case 177 /* VoidExpression */: - case 175 /* DeleteExpression */: - case 176 /* TypeOfExpression */: - case 179 /* PrefixUnaryExpression */: - case 180 /* PostfixUnaryExpression */: - case 181 /* BinaryExpression */: - case 182 /* ConditionalExpression */: - case 185 /* SpreadElementExpression */: - case 183 /* TemplateExpression */: + case 166 /* ArrayLiteralExpression */: + case 167 /* ObjectLiteralExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 172 /* TaggedTemplateExpression */: + case 191 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 174 /* ParenthesizedExpression */: + case 175 /* FunctionExpression */: + case 188 /* ClassExpression */: + case 176 /* ArrowFunction */: + case 179 /* VoidExpression */: + case 177 /* DeleteExpression */: + case 178 /* TypeOfExpression */: + case 181 /* PrefixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: + case 183 /* BinaryExpression */: + case 184 /* ConditionalExpression */: + case 187 /* SpreadElementExpression */: + case 185 /* TemplateExpression */: case 11 /* NoSubstitutionTemplateLiteral */: - case 187 /* OmittedExpression */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 184 /* YieldExpression */: - case 178 /* AwaitExpression */: + case 189 /* OmittedExpression */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: + case 186 /* YieldExpression */: + case 180 /* AwaitExpression */: return true; case 135 /* QualifiedName */: while (node.parent.kind === 135 /* QualifiedName */) { @@ -5091,47 +5212,47 @@ var ts; case 97 /* ThisKeyword */: var parent_2 = node.parent; switch (parent_2.kind) { - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: case 138 /* Parameter */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 247 /* EnumMember */: - case 245 /* PropertyAssignment */: - case 163 /* BindingElement */: + case 249 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 165 /* BindingElement */: return parent_2.initializer === node; - case 195 /* ExpressionStatement */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 204 /* ReturnStatement */: - case 205 /* WithStatement */: - case 206 /* SwitchStatement */: - case 241 /* CaseClause */: - case 208 /* ThrowStatement */: - case 206 /* SwitchStatement */: + case 197 /* ExpressionStatement */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 206 /* ReturnStatement */: + case 207 /* WithStatement */: + case 208 /* SwitchStatement */: + case 243 /* CaseClause */: + case 210 /* ThrowStatement */: + case 208 /* SwitchStatement */: return parent_2.expression === node; - case 199 /* ForStatement */: + case 201 /* ForStatement */: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 212 /* VariableDeclarationList */) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 214 /* VariableDeclarationList */) || forStatement.condition === node || forStatement.incrementor === node; - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 212 /* VariableDeclarationList */) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 214 /* VariableDeclarationList */) || forInStatement.expression === node; - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: return node === parent_2.expression; - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return node === parent_2.expression; case 136 /* ComputedPropertyName */: return node === parent_2.expression; case 139 /* Decorator */: - case 240 /* JsxExpression */: - case 239 /* JsxSpreadAttribute */: + case 242 /* JsxExpression */: + case 241 /* JsxSpreadAttribute */: return true; - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -5155,7 +5276,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 232 /* ExternalModuleReference */; + return node.kind === 223 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 234 /* ExternalModuleReference */; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -5164,7 +5285,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 232 /* ExternalModuleReference */; + return node.kind === 223 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 234 /* ExternalModuleReference */; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -5182,53 +5303,59 @@ var ts; */ function isRequireCall(expression) { // of the form 'require("name")' - return expression.kind === 168 /* CallExpression */ && + return expression.kind === 170 /* CallExpression */ && expression.expression.kind === 69 /* Identifier */ && expression.expression.text === "require" && expression.arguments.length === 1 && expression.arguments[0].kind === 9 /* StringLiteral */; } ts.isRequireCall = isRequireCall; - /** - * 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. - */ - function isExportsPropertyAssignment(expression) { - // of the form 'exports.name = expr' where 'name' and 'expr' are arbitrary - return isInJavaScriptFile(expression) && - (expression.kind === 181 /* BinaryExpression */) && - (expression.operatorToken.kind === 56 /* EqualsToken */) && - (expression.left.kind === 166 /* PropertyAccessExpression */) && - (expression.left.expression.kind === 69 /* Identifier */) && - ((expression.left.expression).text === "exports"); + /// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property + /// assignments we treat as special in the binder + function getSpecialPropertyAssignmentKind(expression) { + if (expression.kind !== 183 /* BinaryExpression */) { + return 0 /* None */; + } + var expr = expression; + if (expr.operatorToken.kind !== 56 /* EqualsToken */ || expr.left.kind !== 168 /* PropertyAccessExpression */) { + return 0 /* None */; + } + var lhs = expr.left; + if (lhs.expression.kind === 69 /* Identifier */) { + var lhsId = lhs.expression; + if (lhsId.text === "exports") { + // exports.name = expr + return 1 /* ExportsProperty */; + } + else if (lhsId.text === "module" && lhs.name.text === "exports") { + // module.exports = expr + return 2 /* ModuleExports */; + } + } + else if (lhs.expression.kind === 97 /* ThisKeyword */) { + return 4 /* ThisProperty */; + } + else if (lhs.expression.kind === 168 /* PropertyAccessExpression */) { + // chained dot, e.g. x.y.z = expr; this var is the 'x.y' part + var innerPropertyAccess = lhs.expression; + if (innerPropertyAccess.expression.kind === 69 /* Identifier */ && innerPropertyAccess.name.text === "prototype") { + return 3 /* PrototypeProperty */; + } + } + return 0 /* None */; } - ts.isExportsPropertyAssignment = isExportsPropertyAssignment; - /** - * 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. - */ - function isModuleExportsAssignment(expression) { - // of the form 'module.exports = expr' where 'expr' is arbitrary - return isInJavaScriptFile(expression) && - (expression.kind === 181 /* BinaryExpression */) && - (expression.operatorToken.kind === 56 /* EqualsToken */) && - (expression.left.kind === 166 /* PropertyAccessExpression */) && - (expression.left.expression.kind === 69 /* Identifier */) && - ((expression.left.expression).text === "module") && - (expression.left.name.text === "exports"); - } - ts.isModuleExportsAssignment = isModuleExportsAssignment; + ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 222 /* ImportDeclaration */) { + if (node.kind === 224 /* ImportDeclaration */) { return node.moduleSpecifier; } - if (node.kind === 221 /* ImportEqualsDeclaration */) { + if (node.kind === 223 /* ImportEqualsDeclaration */) { var reference = node.moduleReference; - if (reference.kind === 232 /* ExternalModuleReference */) { + if (reference.kind === 234 /* ExternalModuleReference */) { return reference.expression; } } - if (node.kind === 228 /* ExportDeclaration */) { + if (node.kind === 230 /* ExportDeclaration */) { return node.moduleSpecifier; } } @@ -5239,8 +5366,8 @@ var ts; case 138 /* Parameter */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 246 /* ShorthandPropertyAssignment */: - case 245 /* PropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return node.questionToken !== undefined; @@ -5250,9 +5377,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 261 /* JSDocFunctionType */ && + return node.kind === 263 /* JSDocFunctionType */ && node.parameters.length > 0 && - node.parameters[0].type.kind === 263 /* JSDocConstructorType */; + node.parameters[0].type.kind === 265 /* JSDocConstructorType */; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind) { @@ -5266,15 +5393,15 @@ var ts; } } function getJSDocTypeTag(node) { - return getJSDocTag(node, 269 /* JSDocTypeTag */); + return getJSDocTag(node, 271 /* JSDocTypeTag */); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 268 /* JSDocReturnTag */); + return getJSDocTag(node, 270 /* JSDocReturnTag */); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 270 /* JSDocTemplateTag */); + return getJSDocTag(node, 272 /* JSDocTemplateTag */); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -5285,7 +5412,7 @@ var ts; var docComment = parameter.parent.jsDocComment; if (docComment) { return ts.forEach(docComment.tags, function (t) { - if (t.kind === 267 /* JSDocParameterTag */) { + if (t.kind === 269 /* JSDocParameterTag */) { var parameterTag = t; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -5304,12 +5431,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.parserContextFlags & 32 /* JavaScriptFile */) { - if (node.type && node.type.kind === 262 /* JSDocVariadicType */) { + if (node.type && node.type.kind === 264 /* JSDocVariadicType */) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 262 /* JSDocVariadicType */; + return paramTag.typeExpression.type.kind === 264 /* JSDocVariadicType */; } } return node.dotDotDotToken !== undefined; @@ -5330,7 +5457,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 162 /* ArrayBindingPattern */ || node.kind === 161 /* ObjectBindingPattern */); + return !!node && (node.kind === 164 /* ArrayBindingPattern */ || node.kind === 163 /* ObjectBindingPattern */); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -5354,34 +5481,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 174 /* ArrowFunction */: - case 163 /* BindingElement */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 176 /* ArrowFunction */: + case 165 /* BindingElement */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: case 144 /* Constructor */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 230 /* ExportSpecifier */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 219 /* EnumDeclaration */: + case 249 /* EnumMember */: + case 232 /* ExportSpecifier */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 145 /* GetAccessor */: - case 223 /* ImportClause */: - case 221 /* ImportEqualsDeclaration */: - case 226 /* ImportSpecifier */: - case 215 /* InterfaceDeclaration */: + case 225 /* ImportClause */: + case 223 /* ImportEqualsDeclaration */: + case 228 /* ImportSpecifier */: + case 217 /* InterfaceDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 218 /* ModuleDeclaration */: - case 224 /* NamespaceImport */: + case 220 /* ModuleDeclaration */: + case 226 /* NamespaceImport */: case 138 /* Parameter */: - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: case 146 /* SetAccessor */: - case 246 /* ShorthandPropertyAssignment */: - case 216 /* TypeAliasDeclaration */: + case 248 /* ShorthandPropertyAssignment */: + case 218 /* TypeAliasDeclaration */: case 137 /* TypeParameter */: - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return true; } return false; @@ -5389,25 +5516,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: - case 210 /* DebuggerStatement */: - case 197 /* DoStatement */: - case 195 /* ExpressionStatement */: - case 194 /* EmptyStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 199 /* ForStatement */: - case 196 /* IfStatement */: - case 207 /* LabeledStatement */: - case 204 /* ReturnStatement */: - case 206 /* SwitchStatement */: - case 208 /* ThrowStatement */: - case 209 /* TryStatement */: - case 193 /* VariableStatement */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 227 /* ExportAssignment */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 212 /* DebuggerStatement */: + case 199 /* DoStatement */: + case 197 /* ExpressionStatement */: + case 196 /* EmptyStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 201 /* ForStatement */: + case 198 /* IfStatement */: + case 209 /* LabeledStatement */: + case 206 /* ReturnStatement */: + case 208 /* SwitchStatement */: + case 210 /* ThrowStatement */: + case 211 /* TryStatement */: + case 195 /* VariableStatement */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 229 /* ExportAssignment */: return true; default: return false; @@ -5435,7 +5562,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 226 /* ImportSpecifier */ || parent.kind === 230 /* ExportSpecifier */) { + if (parent.kind === 228 /* ImportSpecifier */ || parent.kind === 232 /* ExportSpecifier */) { if (parent.propertyName) { return true; } @@ -5456,9 +5583,9 @@ var ts; case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 247 /* EnumMember */: - case 245 /* PropertyAssignment */: - case 166 /* PropertyAccessExpression */: + case 249 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 168 /* PropertyAccessExpression */: // Name in member declaration or property name in property access return parent.name === node; case 135 /* QualifiedName */: @@ -5470,11 +5597,11 @@ var ts; return parent.kind === 154 /* TypeQuery */; } return false; - case 163 /* BindingElement */: - case 226 /* ImportSpecifier */: + case 165 /* BindingElement */: + case 228 /* ImportSpecifier */: // Property name in binding element or import specifier return parent.propertyName === node; - case 230 /* ExportSpecifier */: + case 232 /* ExportSpecifier */: // Any name in an export specifier return true; } @@ -5490,12 +5617,12 @@ var ts; // export = ... // export default ... function isAliasSymbolDeclaration(node) { - return node.kind === 221 /* ImportEqualsDeclaration */ || - node.kind === 223 /* ImportClause */ && !!node.name || - node.kind === 224 /* NamespaceImport */ || - node.kind === 226 /* ImportSpecifier */ || - node.kind === 230 /* ExportSpecifier */ || - node.kind === 227 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; + return node.kind === 223 /* ImportEqualsDeclaration */ || + node.kind === 225 /* ImportClause */ && !!node.name || + node.kind === 226 /* NamespaceImport */ || + node.kind === 228 /* ImportSpecifier */ || + node.kind === 232 /* ExportSpecifier */ || + node.kind === 229 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -5643,7 +5770,7 @@ var ts; return node.kind === 69 /* Identifier */ && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; - function isModifier(token) { + function isModifierKind(token) { switch (token) { case 115 /* AbstractKeyword */: case 118 /* AsyncKeyword */: @@ -5659,39 +5786,73 @@ var ts; } return false; } - ts.isModifier = isModifier; + ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); return root.kind === 138 /* Parameter */; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 163 /* BindingElement */) { + while (node.kind === 165 /* BindingElement */) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 218 /* ModuleDeclaration */ || n.kind === 248 /* SourceFile */; + return isFunctionLike(n) || n.kind === 220 /* ModuleDeclaration */ || n.kind === 250 /* SourceFile */; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; - function cloneEntityName(node) { - if (node.kind === 69 /* Identifier */) { - var clone_1 = createSynthesizedNode(69 /* Identifier */); - clone_1.text = node.text; - return clone_1; + /** + * Creates a shallow, memberwise clone of a node. The "kind", "pos", "end", "flags", and "parent" + * properties are excluded by default, and can be provided via the "location", "flags", and + * "parent" parameters. + * @param node The node to clone. + * @param location An optional TextRange to use to supply the new position. + * @param flags The NodeFlags to use for the cloned node. + * @param parent The parent for the new node. + */ + function cloneNode(node, location, flags, parent) { + // We don't use "clone" from core.ts here, as we need to preserve the prototype chain of + // the original node. We also need to exclude specific properties and only include own- + // properties (to skip members already defined on the shared prototype). + var clone = location !== undefined + ? ts.createNode(node.kind, location.pos, location.end) + : createSynthesizedNode(node.kind); + for (var key in node) { + if (clone.hasOwnProperty(key) || !node.hasOwnProperty(key)) { + continue; + } + clone[key] = node[key]; } - else { - var clone_2 = createSynthesizedNode(135 /* QualifiedName */); - clone_2.left = cloneEntityName(node.left); - clone_2.left.parent = clone_2; - clone_2.right = cloneEntityName(node.right); - clone_2.right.parent = clone_2; - return clone_2; + if (flags !== undefined) { + clone.flags = flags; } + if (parent !== undefined) { + clone.parent = parent; + } + return clone; + } + ts.cloneNode = cloneNode; + /** + * Creates a deep clone of an EntityName, with new parent pointers. + * @param node The EntityName to clone. + * @param parent The parent for the cloned node. + */ + function cloneEntityName(node, parent) { + var clone = cloneNode(node, node, node.flags, parent); + if (isQualifiedName(clone)) { + var left = clone.left, right = clone.right; + clone.left = cloneEntityName(left, clone); + clone.right = cloneNode(right, right, right.flags, parent); + } + return clone; } ts.cloneEntityName = cloneEntityName; + function isQualifiedName(node) { + return node.kind === 135 /* QualifiedName */; + } + ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { return node.pos === -1; } @@ -5906,8 +6067,8 @@ var ts; writeTextOfNode: writeTextOfNode, writeLiteral: writeLiteral, writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, + increaseIndent: function () { indent++; }, + decreaseIndent: function () { indent--; }, getIndent: function () { return indent; }, getTextPos: function () { return output.length; }, getLine: function () { return lineCount + 1; }, @@ -5921,8 +6082,10 @@ var ts; * Resolves a local path to a path which is absolute to the base of the emit */ function getExternalModuleNameFromPath(host, fileName) { - var dir = host.getCurrentDirectory(); - var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, fileName, dir, function (f) { return host.getCanonicalFileName(f); }, /*isAbsolutePathAnUrl*/ false); + var getCanonicalFileName = function (f) { return host.getCanonicalFileName(f); }; + var dir = ts.toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), getCanonicalFileName); + var filePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, filePath, dir, getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); return ts.removeFileExtension(relativePath); } ts.getExternalModuleNameFromPath = getExternalModuleNameFromPath; @@ -5938,6 +6101,63 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getEmitScriptTarget(compilerOptions) { + return compilerOptions.target || 0 /* ES3 */; + } + ts.getEmitScriptTarget = getEmitScriptTarget; + function getEmitModuleKind(compilerOptions) { + return compilerOptions.module ? + compilerOptions.module : + getEmitScriptTarget(compilerOptions) === 2 /* ES6 */ ? 5 /* ES6 */ : 0 /* None */; + } + ts.getEmitModuleKind = getEmitModuleKind; + function forEachExpectedEmitFile(host, action, targetSourceFile) { + var options = host.getCompilerOptions(); + // Emit on each source file + if (options.outFile || options.out) { + onBundledEmit(host); + } + else { + var sourceFiles = targetSourceFile === undefined ? host.getSourceFiles() : [targetSourceFile]; + for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { + var sourceFile = sourceFiles_1[_i]; + if (!isDeclarationFile(sourceFile)) { + onSingleFileEmit(host, sourceFile); + } + } + } + function onSingleFileEmit(host, sourceFile) { + var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, sourceFile.languageVariant === 1 /* JSX */ && options.jsx === 1 /* Preserve */ ? ".jsx" : ".js"); + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + }; + action(emitFileNames, [sourceFile], /*isBundledEmit*/ false); + } + function onBundledEmit(host) { + // Can emit only sources that are not declaration file and are either non module code or module with --module or --target es6 specified + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && + (!isExternalModule(sourceFile) || + (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); // module that can emit - note falsy value from getEmitModuleKind means the module kind that shouldn't be emitted + if (bundledSources.length) { + var jsFilePath = options.outFile || options.out; + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + }; + action(emitFileNames, bundledSources, /*isBundledEmit*/ true); + } + } + function getSourceMapFilePath(jsFilePath, options) { + return options.sourceMap ? jsFilePath + ".map" : undefined; + } + function getDeclarationEmitFilePath(jsFilePath, options) { + return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; + } + } + ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); @@ -5946,7 +6166,7 @@ var ts; ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); }); } ts.writeFile = writeFile; @@ -5970,18 +6190,6 @@ var ts; return accessor && accessor.parameters.length > 0 && accessor.parameters[0].type; } ts.getSetAccessorTypeAnnotationNode = getSetAccessorTypeAnnotationNode; - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!isDeclarationFile(sourceFile)) { - if ((isExternalModule(sourceFile) || !(compilerOptions.outFile || compilerOptions.out))) { - // 1. in-browser single file compilation scenario - // 2. non .js file - return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js"); - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; function getAllAccessorDeclarations(declarations, accessor) { var firstAccessor; var secondAccessor; @@ -6225,24 +6433,24 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 169 /* NewExpression */: - case 168 /* CallExpression */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 170 /* TaggedTemplateExpression */: - case 164 /* ArrayLiteralExpression */: - case 172 /* ParenthesizedExpression */: - case 165 /* ObjectLiteralExpression */: - case 186 /* ClassExpression */: - case 173 /* FunctionExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 171 /* NewExpression */: + case 170 /* CallExpression */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: + case 172 /* TaggedTemplateExpression */: + case 166 /* ArrayLiteralExpression */: + case 174 /* ParenthesizedExpression */: + case 167 /* ObjectLiteralExpression */: + case 188 /* ClassExpression */: + case 175 /* FunctionExpression */: case 69 /* Identifier */: case 10 /* RegularExpressionLiteral */: case 8 /* NumericLiteral */: case 9 /* StringLiteral */: case 11 /* NoSubstitutionTemplateLiteral */: - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: case 84 /* FalseKeyword */: case 93 /* NullKeyword */: case 97 /* ThisKeyword */: @@ -6259,7 +6467,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 188 /* ExpressionWithTypeArguments */ && + return node.kind === 190 /* ExpressionWithTypeArguments */ && node.parent.token === 83 /* ExtendsKeyword */ && isClassLike(node.parent.parent); } @@ -6283,15 +6491,15 @@ var ts; } function isRightSideOfQualifiedNameOrPropertyAccess(node) { return (node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node) || - (node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.name === node); + (node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 165 /* ObjectLiteralExpression */) { + if (kind === 167 /* ObjectLiteralExpression */) { return expression.properties.length === 0; } - if (kind === 164 /* ArrayLiteralExpression */) { + if (kind === 166 /* ArrayLiteralExpression */) { return expression.elements.length === 0; } return false; @@ -6302,13 +6510,9 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; function hasJavaScriptFileExtension(fileName) { - return ts.fileExtensionIs(fileName, ".js") || ts.fileExtensionIs(fileName, ".jsx"); + return ts.forEach(ts.supportedJavascriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); }); } ts.hasJavaScriptFileExtension = hasJavaScriptFileExtension; - function allowsJsxExpressions(fileName) { - return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx"); - } - ts.allowsJsxExpressions = allowsJsxExpressions; /** * Replace each instance of non-ascii characters by one, two, three, or four escape sequences * representing the UTF-8 encoding of the character, and return the expanded char code list. @@ -6343,6 +6547,47 @@ var ts; } return output; } + /** + * 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. + */ + ts.stringify = typeof JSON !== "undefined" && JSON.stringify + ? JSON.stringify + : stringifyFallback; + /** + * Serialize an object graph into a JSON string. + */ + function stringifyFallback(value) { + // JSON.stringify returns `undefined` here, instead of the string "undefined". + return value === undefined ? undefined : stringifyValue(value); + } + function stringifyValue(value) { + return typeof value === "string" ? "\"" + escapeString(value) + "\"" + : typeof value === "number" ? isFinite(value) ? String(value) : "null" + : typeof value === "boolean" ? value ? "true" : "false" + : typeof value === "object" && value ? ts.isArray(value) ? cycleCheck(stringifyArray, value) : cycleCheck(stringifyObject, value) + : "null"; + } + function cycleCheck(cb, value) { + ts.Debug.assert(!value.hasOwnProperty("__cycle"), "Converting circular structure to JSON"); + value.__cycle = true; + var result = cb(value); + delete value.__cycle; + return result; + } + function stringifyArray(value) { + return "[" + ts.reduceLeft(value, stringifyElement, "") + "]"; + } + function stringifyElement(memo, value) { + return (memo ? memo + "," : memo) + stringifyValue(value); + } + function stringifyObject(value) { + return "{" + ts.reduceProperties(value, stringifyProperty, "") + "}"; + } + function stringifyProperty(memo, value, key) { + return value === undefined || typeof value === "function" || key === "__cycle" ? memo + : (memo ? memo + "," : memo) + ("\"" + escapeString(key) + "\":" + stringifyValue(value)); + } var base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; /** * Converts a string to a base-64 encoded ASCII string. @@ -6611,13 +6856,17 @@ var ts; function getTypeParameterOwner(d) { if (d && d.kind === 137 /* TypeParameter */) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 215 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 217 /* InterfaceDeclaration */) { return current; } } } } ts.getTypeParameterOwner = getTypeParameterOwner; + function isParameterPropertyDeclaration(node) { + return node.flags & 56 /* AccessibilityModifier */ && node.parent.kind === 144 /* Constructor */ && ts.isClassLike(node.parent.parent); + } + ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; })(ts || (ts = {})); /// /// @@ -6627,7 +6876,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 248 /* SourceFile */) { + if (kind === 250 /* SourceFile */) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -6677,7 +6926,7 @@ var ts; return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 246 /* ShorthandPropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || @@ -6687,9 +6936,9 @@ var ts; case 138 /* Parameter */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 245 /* PropertyAssignment */: - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 247 /* PropertyAssignment */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -6713,9 +6962,9 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -6745,271 +6994,271 @@ var ts; return visitNodes(cbNodes, node.types); case 160 /* ParenthesizedType */: return visitNode(cbNode, node.type); - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: return visitNodes(cbNodes, node.elements); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return visitNodes(cbNodes, node.elements); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return visitNodes(cbNodes, node.properties); - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 171 /* TypeAssertionExpression */: + case 173 /* TypeAssertionExpression */: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return visitNode(cbNode, node.expression); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return visitNode(cbNode, node.expression); - case 176 /* TypeOfExpression */: + case 178 /* TypeOfExpression */: return visitNode(cbNode, node.expression); - case 177 /* VoidExpression */: + case 179 /* VoidExpression */: return visitNode(cbNode, node.expression); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return visitNode(cbNode, node.operand); - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); - case 178 /* AwaitExpression */: + case 180 /* AwaitExpression */: return visitNode(cbNode, node.expression); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return visitNode(cbNode, node.operand); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 189 /* AsExpression */: + case 191 /* AsExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 185 /* SpreadElementExpression */: + case 187 /* SpreadElementExpression */: return visitNode(cbNode, node.expression); - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return visitNodes(cbNodes, node.statements); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 212 /* VariableDeclarationList */: + case 214 /* VariableDeclarationList */: return visitNodes(cbNodes, node.declarations); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return visitNode(cbNode, node.expression); - case 196 /* IfStatement */: + case 198 /* IfStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 197 /* DoStatement */: + case 199 /* DoStatement */: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 200 /* ForInStatement */: + case 202 /* ForInStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 201 /* ForOfStatement */: + case 203 /* ForOfStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 205 /* BreakStatement */: return visitNode(cbNode, node.label); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return visitNode(cbNode, node.expression); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.caseBlock); - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: return visitNodes(cbNodes, node.clauses); - case 241 /* CaseClause */: + case 243 /* CaseClause */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.statements); - case 242 /* DefaultClause */: + case 244 /* DefaultClause */: return visitNodes(cbNodes, node.statements); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return visitNode(cbNode, node.label) || visitNode(cbNode, node.statement); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: return visitNode(cbNode, node.expression); - case 209 /* TryStatement */: + case 211 /* TryStatement */: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); case 139 /* Decorator */: return visitNode(cbNode, node.expression); - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNode(cbNode, node.type); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 223 /* ImportClause */: + case 225 /* ImportClause */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 224 /* NamespaceImport */: + case 226 /* NamespaceImport */: return visitNode(cbNode, node.name); - case 225 /* NamedImports */: - case 229 /* NamedExports */: + case 227 /* NamedImports */: + case 231 /* NamedExports */: return visitNodes(cbNodes, node.elements); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); case 136 /* ComputedPropertyName */: return visitNode(cbNode, node.expression); - case 243 /* HeritageClause */: + case 245 /* HeritageClause */: return visitNodes(cbNodes, node.types); - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 232 /* ExternalModuleReference */: + case 234 /* ExternalModuleReference */: return visitNode(cbNode, node.expression); - case 231 /* MissingDeclaration */: + case 233 /* MissingDeclaration */: return visitNodes(cbNodes, node.decorators); - case 233 /* JsxElement */: + case 235 /* JsxElement */: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 234 /* JsxSelfClosingElement */: - case 235 /* JsxOpeningElement */: + case 236 /* JsxSelfClosingElement */: + case 237 /* JsxOpeningElement */: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 238 /* JsxAttribute */: + case 240 /* JsxAttribute */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 239 /* JsxSpreadAttribute */: + case 241 /* JsxSpreadAttribute */: return visitNode(cbNode, node.expression); - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: return visitNode(cbNode, node.expression); - case 237 /* JsxClosingElement */: + case 239 /* JsxClosingElement */: return visitNode(cbNode, node.tagName); - case 249 /* JSDocTypeExpression */: + case 251 /* JSDocTypeExpression */: return visitNode(cbNode, node.type); - case 253 /* JSDocUnionType */: + case 255 /* JSDocUnionType */: return visitNodes(cbNodes, node.types); - case 254 /* JSDocTupleType */: + case 256 /* JSDocTupleType */: return visitNodes(cbNodes, node.types); - case 252 /* JSDocArrayType */: + case 254 /* JSDocArrayType */: return visitNode(cbNode, node.elementType); - case 256 /* JSDocNonNullableType */: + case 258 /* JSDocNonNullableType */: return visitNode(cbNode, node.type); - case 255 /* JSDocNullableType */: + case 257 /* JSDocNullableType */: return visitNode(cbNode, node.type); - case 257 /* JSDocRecordType */: + case 259 /* JSDocRecordType */: return visitNodes(cbNodes, node.members); - case 259 /* JSDocTypeReference */: + case 261 /* JSDocTypeReference */: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 260 /* JSDocOptionalType */: + case 262 /* JSDocOptionalType */: return visitNode(cbNode, node.type); - case 261 /* JSDocFunctionType */: + case 263 /* JSDocFunctionType */: return visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 262 /* JSDocVariadicType */: + case 264 /* JSDocVariadicType */: return visitNode(cbNode, node.type); - case 263 /* JSDocConstructorType */: + case 265 /* JSDocConstructorType */: return visitNode(cbNode, node.type); - case 264 /* JSDocThisType */: + case 266 /* JSDocThisType */: return visitNode(cbNode, node.type); - case 258 /* JSDocRecordMember */: + case 260 /* JSDocRecordMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 265 /* JSDocComment */: + case 267 /* JSDocComment */: return visitNodes(cbNodes, node.tags); - case 267 /* JSDocParameterTag */: + case 269 /* JSDocParameterTag */: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 268 /* JSDocReturnTag */: + case 270 /* JSDocReturnTag */: return visitNode(cbNode, node.typeExpression); - case 269 /* JSDocTypeTag */: + case 271 /* JSDocTypeTag */: return visitNode(cbNode, node.typeExpression); - case 270 /* JSDocTemplateTag */: + case 272 /* JSDocTemplateTag */: return visitNodes(cbNodes, node.typeParameters); } } @@ -7150,6 +7399,10 @@ var ts; return result; } Parser.parseSourceFile = parseSourceFile; + function getLanguageVariant(fileName) { + // .tsx and .jsx files are treated as jsx language variant. + return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx") ? 1 /* JSX */ : 0 /* Standard */; + } function initializeState(fileName, _sourceText, languageVersion, isJavaScriptFile, _syntaxCursor) { NodeConstructor = ts.objectAllocator.getNodeConstructor(); SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor(); @@ -7166,7 +7419,7 @@ var ts; scanner.setText(sourceText); scanner.setOnError(scanError); scanner.setScriptTarget(languageVersion); - scanner.setLanguageVariant(ts.allowsJsxExpressions(fileName) ? 1 /* JSX */ : 0 /* Standard */); + scanner.setLanguageVariant(getLanguageVariant(fileName)); } function clearState() { // Clear out the text the scanner is pointing at, so it doesn't keep anything alive unnecessarily. @@ -7213,8 +7466,8 @@ var ts; // Add additional cases as necessary depending on how we see JSDoc comments used // in the wild. switch (node.kind) { - case 193 /* VariableStatement */: - case 213 /* FunctionDeclaration */: + case 195 /* VariableStatement */: + case 215 /* FunctionDeclaration */: case 138 /* Parameter */: addJSDocComment(node); } @@ -7258,14 +7511,14 @@ var ts; function createSourceFile(fileName, languageVersion) { // code from createNode is inlined here so createNode won't have to deal with special case of creating source files // this is quite rare comparing to other nodes and createNode should be as fast as possible - var sourceFile = new SourceFileConstructor(248 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); + var sourceFile = new SourceFileConstructor(250 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 4096 /* DeclarationFile */ : 0; - sourceFile.languageVariant = ts.allowsJsxExpressions(sourceFile.fileName) ? 1 /* JSX */ : 0 /* Standard */; + sourceFile.languageVariant = getLanguageVariant(sourceFile.fileName); return sourceFile; } function setContextFlag(val, flag) { @@ -7298,10 +7551,10 @@ var ts; var contextFlagsToClear = context & contextFlags; if (contextFlagsToClear) { // clear the requested context flags - setContextFlag(false, contextFlagsToClear); + setContextFlag(/*val*/ false, contextFlagsToClear); var result = func(); // restore the context flags we just cleared - setContextFlag(true, contextFlagsToClear); + setContextFlag(/*val*/ true, contextFlagsToClear); return result; } // no need to do anything special as we are not in any of the requested contexts @@ -7317,10 +7570,10 @@ var ts; var contextFlagsToSet = context & ~contextFlags; if (contextFlagsToSet) { // set the requested context flags - setContextFlag(true, contextFlagsToSet); + setContextFlag(/*val*/ true, contextFlagsToSet); var result = func(); // reset the context flags we just set - setContextFlag(false, contextFlagsToSet); + setContextFlag(/*val*/ false, contextFlagsToSet); return result; } // no need to do anything special as we are already in all of the requested contexts @@ -7335,9 +7588,6 @@ var ts; function doInYieldContext(func) { return doInsideOfContext(2 /* Yield */, func); } - function doOutsideOfYieldContext(func) { - return doOutsideOfContext(2 /* Yield */, func); - } function doInDecoratorContext(func) { return doInsideOfContext(4 /* Decorator */, func); } @@ -7350,9 +7600,6 @@ var ts; function doInYieldAndAwaitContext(func) { return doInsideOfContext(2 /* Yield */ | 8 /* Await */, func); } - function doOutsideOfYieldAndAwaitContext(func) { - return doOutsideOfContext(2 /* Yield */ | 8 /* Await */, func); - } function inContext(flags) { return (contextFlags & flags) !== 0; } @@ -7396,9 +7643,6 @@ var ts; function nextToken() { return token = scanner.scan(); } - function getTokenPos(pos) { - return ts.skipTrivia(sourceText, pos); - } function reScanGreaterToken() { return token = scanner.reScanGreaterToken(); } @@ -7605,10 +7849,10 @@ var ts; return parseIdentifierName(); } function parsePropertyName() { - return parsePropertyNameWorker(/*allowComputedPropertyNames:*/ true); + return parsePropertyNameWorker(/*allowComputedPropertyNames*/ true); } function parseSimplePropertyName() { - return parsePropertyNameWorker(/*allowComputedPropertyNames:*/ false); + return parsePropertyNameWorker(/*allowComputedPropertyNames*/ false); } function isSimplePropertyName() { return token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || ts.tokenIsIdentifierOrKeyword(token); @@ -7629,6 +7873,13 @@ var ts; function parseContextualModifier(t) { return token === t && tryParse(nextTokenCanFollowModifier); } + function nextTokenIsOnSameLineAndCanFollowModifier() { + nextToken(); + if (scanner.hasPrecedingLineBreak()) { + return false; + } + return canFollowModifier(); + } function nextTokenCanFollowModifier() { if (token === 74 /* ConstKeyword */) { // 'const' is only a modifier if followed by 'enum'. @@ -7648,14 +7899,10 @@ var ts; nextToken(); return canFollowModifier(); } - nextToken(); - if (scanner.hasPrecedingLineBreak()) { - return false; - } - return canFollowModifier(); + return nextTokenIsOnSameLineAndCanFollowModifier(); } function parseAnyContextualModifier() { - return ts.isModifier(token) && tryParse(nextTokenCanFollowModifier); + return ts.isModifierKind(token) && tryParse(nextTokenCanFollowModifier); } function canFollowModifier() { return token === 19 /* OpenBracketToken */ @@ -7861,7 +8108,7 @@ var ts; function isInSomeParsingContext() { for (var kind = 0; kind < 26 /* Count */; kind++) { if (parsingContext & (1 << kind)) { - if (isListElement(kind, /* inErrorRecovery */ true) || isListTerminator(kind)) { + if (isListElement(kind, /*inErrorRecovery*/ true) || isListTerminator(kind)) { return true; } } @@ -7875,7 +8122,7 @@ var ts; var result = []; result.pos = getNodePos(); while (!isListTerminator(kind)) { - if (isListElement(kind, /* inErrorRecovery */ false)) { + if (isListElement(kind, /*inErrorRecovery*/ false)) { var element = parseListElement(kind, parseElement); result.push(element); continue; @@ -8020,7 +8267,7 @@ var ts; case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 141 /* PropertyDeclaration */: - case 191 /* SemicolonClassElement */: + case 193 /* SemicolonClassElement */: return true; case 143 /* MethodDeclaration */: // Method declarations are not necessarily reusable. An object-literal @@ -8037,8 +8284,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: return true; } } @@ -8047,42 +8294,42 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: - case 193 /* VariableStatement */: - case 192 /* Block */: - case 196 /* IfStatement */: - case 195 /* ExpressionStatement */: - case 208 /* ThrowStatement */: - case 204 /* ReturnStatement */: - case 206 /* SwitchStatement */: - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 199 /* ForStatement */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 194 /* EmptyStatement */: - case 209 /* TryStatement */: - case 207 /* LabeledStatement */: - case 197 /* DoStatement */: - case 210 /* DebuggerStatement */: - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 228 /* ExportDeclaration */: - case 227 /* ExportAssignment */: - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 216 /* TypeAliasDeclaration */: + case 215 /* FunctionDeclaration */: + case 195 /* VariableStatement */: + case 194 /* Block */: + case 198 /* IfStatement */: + case 197 /* ExpressionStatement */: + case 210 /* ThrowStatement */: + case 206 /* ReturnStatement */: + case 208 /* SwitchStatement */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 201 /* ForStatement */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 196 /* EmptyStatement */: + case 211 /* TryStatement */: + case 209 /* LabeledStatement */: + case 199 /* DoStatement */: + case 212 /* DebuggerStatement */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 230 /* ExportDeclaration */: + case 229 /* ExportAssignment */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 218 /* TypeAliasDeclaration */: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 247 /* EnumMember */; + return node.kind === 249 /* EnumMember */; } function isReusableTypeMember(node) { if (node) { @@ -8098,7 +8345,7 @@ var ts; return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 211 /* VariableDeclaration */) { + if (node.kind !== 213 /* VariableDeclaration */) { return false; } // Very subtle incremental parsing bug. Consider the following code: @@ -8174,7 +8421,7 @@ var ts; result.pos = getNodePos(); var commaStart = -1; // Meaning the previous token was not a comma while (true) { - if (isListElement(kind, /* inErrorRecovery */ false)) { + if (isListElement(kind, /*inErrorRecovery*/ false)) { result.push(parseListElement(kind, parseElement)); commaStart = scanner.getTokenPos(); if (parseOptional(24 /* CommaToken */)) { @@ -8269,14 +8516,14 @@ var ts; // Report that we need an identifier. However, report it right after the dot, // and not on the next token. This is because the next token might actually // be an identifier and the error would be quite confusing. - return createMissingNode(69 /* Identifier */, /*reportAtCurrentToken*/ true, ts.Diagnostics.Identifier_expected); + return createMissingNode(69 /* Identifier */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Identifier_expected); } } return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(183 /* TemplateExpression */); - template.head = parseLiteralNode(); + var template = createNode(185 /* TemplateExpression */); + template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12 /* TemplateHead */, "Template head has wrong token kind"); var templateSpans = []; templateSpans.pos = getNodePos(); @@ -8288,12 +8535,12 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(190 /* TemplateSpan */); + var span = createNode(192 /* TemplateSpan */); span.expression = allowInAnd(parseExpression); var literal; if (token === 16 /* CloseBraceToken */) { reScanTemplateToken(); - literal = parseLiteralNode(); + literal = parseTemplateLiteralFragment(); } else { literal = parseExpectedToken(14 /* TemplateTail */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, ts.tokenToString(16 /* CloseBraceToken */)); @@ -8301,8 +8548,17 @@ var ts; span.literal = literal; return finishNode(span); } + function parseStringLiteralTypeNode() { + return parseLiteralLikeNode(162 /* StringLiteralType */, /*internName*/ true); + } function parseLiteralNode(internName) { - var node = createNode(token); + return parseLiteralLikeNode(token, internName); + } + function parseTemplateLiteralFragment() { + return parseLiteralLikeNode(token, /*internName*/ false); + } + function parseLiteralLikeNode(kind, internName) { + var node = createNode(kind); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; if (scanner.hasExtendedUnicodeEscape()) { @@ -8331,11 +8587,7 @@ var ts; function parseTypeReferenceOrTypePredicate() { var typeName = parseEntityName(/*allowReservedWords*/ false, ts.Diagnostics.Type_expected); if (typeName.kind === 69 /* Identifier */ && token === 124 /* IsKeyword */ && !scanner.hasPrecedingLineBreak()) { - nextToken(); - var node_1 = createNode(150 /* TypePredicate */, typeName.pos); - node_1.parameterName = typeName; - node_1.type = parseType(); - return finishNode(node_1); + return parseTypePredicate(typeName); } var node = createNode(151 /* TypeReference */, typeName.pos); node.typeName = typeName; @@ -8344,6 +8596,18 @@ var ts; } return finishNode(node); } + function parseTypePredicate(lhs) { + nextToken(); + var node = createNode(150 /* TypePredicate */, lhs.pos); + node.parameterName = lhs; + node.type = parseType(); + return finishNode(node); + } + function parseThisTypeNode() { + var node = createNode(161 /* ThisType */); + nextToken(); + return finishNode(node); + } function parseTypeQuery() { var node = createNode(154 /* TypeQuery */); parseExpected(101 /* TypeOfKeyword */); @@ -8386,7 +8650,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifier(token) || token === 55 /* AtToken */; + return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 /* AtToken */; } function setModifiers(node, modifiers) { if (modifiers) { @@ -8402,7 +8666,7 @@ var ts; // FormalParameter [Yield,Await]: // BindingElement[?Yield,?Await] node.name = parseIdentifierOrPattern(); - if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifier(token)) { + if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifierKind(token)) { // in cases like // 'use strict' // function foo(static) @@ -8523,7 +8787,7 @@ var ts; if (token === 22 /* DotDotDotToken */ || token === 20 /* CloseBracketToken */) { return true; } - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { nextToken(); if (isIdentifier()) { return true; @@ -8580,6 +8844,12 @@ var ts; property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); + if (token === 56 /* EqualsToken */) { + // Although type literal properties cannot not have initializers, we attempt + // to parse an initializer so we can report in the checker that an interface + // property or type literal property cannot have an initializer. + property.initializer = parseNonParameterInitializer(); + } parseTypeMemberSemicolon(); return finishNode(property); } @@ -8591,7 +8861,7 @@ var ts; case 19 /* OpenBracketToken */: return true; default: - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = lookAhead(isStartOfIndexSignatureDeclaration); if (result) { return result; @@ -8601,7 +8871,7 @@ var ts; } } function isStartOfIndexSignatureDeclaration() { - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { nextToken(); } return isIndexSignature(); @@ -8639,7 +8909,7 @@ var ts; // when incrementally parsing as the parser will produce the Index declaration // if it has the same text regardless of whether it is inside a class or an // object type. - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = tryParse(parseIndexSignatureWithModifiers); if (result) { return result; @@ -8713,10 +8983,18 @@ var ts; var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReferenceOrTypePredicate(); case 9 /* StringLiteral */: - return parseLiteralNode(/*internName*/ true); + return parseStringLiteralTypeNode(); case 103 /* VoidKeyword */: - case 97 /* ThisKeyword */: return parseTokenNode(); + case 97 /* ThisKeyword */: { + var thisKeyword = parseThisTypeNode(); + if (token === 124 /* IsKeyword */ && !scanner.hasPrecedingLineBreak()) { + return parseTypePredicate(thisKeyword); + } + else { + return thisKeyword; + } + } case 101 /* TypeOfKeyword */: return parseTypeQuery(); case 15 /* OpenBraceToken */: @@ -8801,11 +9079,11 @@ var ts; // ( ... return true; } - if (isIdentifier() || ts.isModifier(token)) { + if (isIdentifier() || ts.isModifierKind(token)) { nextToken(); if (token === 54 /* ColonToken */ || token === 24 /* CommaToken */ || token === 53 /* QuestionToken */ || token === 56 /* EqualsToken */ || - isIdentifier() || ts.isModifier(token)) { + isIdentifier() || ts.isModifierKind(token)) { // ( id : // ( id , // ( id ? @@ -8906,9 +9184,6 @@ var ts; token !== 55 /* AtToken */ && isStartOfExpression(); } - function allowInAndParseExpression() { - return allowInAnd(parseExpression); - } function parseExpression() { // Expression[in]: // AssignmentExpression[in] @@ -8916,7 +9191,7 @@ var ts; // clear the decorator context when parsing Expression, as it should be unambiguous when parsing a decorator var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { - setDecoratorContext(false); + setDecoratorContext(/*val*/ false); } var expr = parseAssignmentExpressionOrHigher(); var operatorToken; @@ -8924,7 +9199,7 @@ var ts; expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); } if (saveDecoratorContext) { - setDecoratorContext(true); + setDecoratorContext(/*val*/ true); } return expr; } @@ -9029,7 +9304,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(184 /* YieldExpression */); + var node = createNode(186 /* YieldExpression */); // YieldExpression[In] : // yield // yield [no LineTerminator here] [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield] @@ -9049,14 +9324,14 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(174 /* ArrowFunction */, identifier.pos); + var node = createNode(176 /* ArrowFunction */, identifier.pos); var parameter = createNode(138 /* Parameter */, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - node.equalsGreaterThanToken = parseExpectedToken(34 /* EqualsGreaterThanToken */, false, ts.Diagnostics._0_expected, "=>"); + node.equalsGreaterThanToken = parseExpectedToken(34 /* EqualsGreaterThanToken */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(/*isAsync*/ false); return finishNode(node); } @@ -9160,7 +9435,7 @@ var ts; return 1 /* True */; } // This *could* be a parenthesized arrow function. - // Return Unknown to const the caller know. + // Return Unknown to let the caller know. return 2 /* Unknown */; } else { @@ -9202,7 +9477,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(/*allowAmbiguity*/ false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(174 /* ArrowFunction */); + var node = createNode(176 /* ArrowFunction */); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256 /* Async */); // Arrow functions are never generators. @@ -9246,7 +9521,7 @@ var ts; // user meant to supply a block. For example, if the user wrote: // // a => - // const v = 0; + // let v = 0; // } // // they may be missing an open brace. Check to see if that's the case so we can @@ -9268,7 +9543,7 @@ var ts; } // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and // we do not that for the 'whenFalse' part. - var node = createNode(182 /* ConditionalExpression */, leftOperand.pos); + var node = createNode(184 /* ConditionalExpression */, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -9389,39 +9664,39 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(181 /* BinaryExpression */, left.pos); + var node = createNode(183 /* BinaryExpression */, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(189 /* AsExpression */, left.pos); + var node = createNode(191 /* AsExpression */, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(179 /* PrefixUnaryExpression */); + var node = createNode(181 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(175 /* DeleteExpression */); + var node = createNode(177 /* DeleteExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(176 /* TypeOfExpression */); + var node = createNode(178 /* TypeOfExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(177 /* VoidExpression */); + var node = createNode(179 /* VoidExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -9437,7 +9712,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(178 /* AwaitExpression */); + var node = createNode(180 /* AwaitExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -9463,7 +9738,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38 /* AsteriskAsteriskToken */) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 171 /* TypeAssertionExpression */) { + if (simpleUnaryExpression.kind === 173 /* TypeAssertionExpression */) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -9553,7 +9828,7 @@ var ts; */ function parseIncrementExpression() { if (token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) { - var node = createNode(179 /* PrefixUnaryExpression */); + var node = createNode(181 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -9566,7 +9841,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(180 /* PostfixUnaryExpression */, expression.pos); + var node = createNode(182 /* PostfixUnaryExpression */, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -9670,24 +9945,37 @@ var ts; } // If we have seen "super" it must be followed by '(' or '.'. // If it wasn't then just try to parse out a '.' and report an error. - var node = createNode(166 /* PropertyAccessExpression */, expression.pos); + var node = createNode(168 /* PropertyAccessExpression */, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21 /* DotToken */, /*reportAtCurrentPosition*/ false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); return finishNode(node); } + function tagNamesAreEquivalent(lhs, rhs) { + if (lhs.kind !== rhs.kind) { + return false; + } + if (lhs.kind === 69 /* Identifier */) { + return lhs.text === rhs.text; + } + return lhs.right.text === rhs.right.text && + tagNamesAreEquivalent(lhs.left, rhs.left); + } function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 235 /* JsxOpeningElement */) { - var node = createNode(233 /* JsxElement */, opening.pos); + if (opening.kind === 237 /* JsxOpeningElement */) { + var node = createNode(235 /* JsxElement */, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); + if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { + parseErrorAtPosition(node.closingElement.pos, node.closingElement.end - node.closingElement.pos, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, node.openingElement.tagName)); + } result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 234 /* JsxSelfClosingElement */); + ts.Debug.assert(opening.kind === 236 /* JsxSelfClosingElement */); // Nothing else to do for self-closing elements result = opening; } @@ -9702,7 +9990,7 @@ var ts; var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(/*inExpressionContext*/ true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(181 /* BinaryExpression */, result.pos); + var badNode = createNode(183 /* BinaryExpression */, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -9714,13 +10002,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(236 /* JsxText */, scanner.getStartPos()); + var node = createNode(238 /* JsxText */, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 236 /* JsxText */: + case 238 /* JsxText */: return parseJsxText(); case 15 /* OpenBraceToken */: return parseJsxExpression(/*inExpressionContext*/ false); @@ -9737,10 +10025,13 @@ var ts; while (true) { token = scanner.reScanJsxToken(); if (token === 26 /* LessThanSlashToken */) { + // Closing tag break; } else if (token === 1 /* EndOfFileToken */) { - parseErrorAtCurrentToken(ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); + // If we hit EOF, issue the error at the tag that lacks the closing element + // rather than at the end of the file (which is useless) + parseErrorAtPosition(openingTagName.pos, openingTagName.end - openingTagName.pos, ts.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); break; } result.push(parseJsxChild()); @@ -9759,7 +10050,7 @@ var ts; // Closing tag, so scan the immediately-following text with the JSX scanning instead // of regular scanning to avoid treating illegal characters (e.g. '#') as immediate // scanning errors - node = createNode(235 /* JsxOpeningElement */, fullStart); + node = createNode(237 /* JsxOpeningElement */, fullStart); scanJsxText(); } else { @@ -9768,10 +10059,10 @@ var ts; parseExpected(27 /* GreaterThanToken */); } else { - parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*advance*/ false); + parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } - node = createNode(234 /* JsxSelfClosingElement */, fullStart); + node = createNode(236 /* JsxSelfClosingElement */, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -9790,16 +10081,16 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(240 /* JsxExpression */); + var node = createNode(242 /* JsxExpression */); parseExpected(15 /* OpenBraceToken */); if (token !== 16 /* CloseBraceToken */) { - node.expression = parseExpression(); + node.expression = parseAssignmentExpressionOrHigher(); } if (inExpressionContext) { parseExpected(16 /* CloseBraceToken */); } else { - parseExpected(16 /* CloseBraceToken */, /*message*/ undefined, /*advance*/ false); + parseExpected(16 /* CloseBraceToken */, /*message*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } return finishNode(node); @@ -9809,7 +10100,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(238 /* JsxAttribute */); + var node = createNode(240 /* JsxAttribute */); node.name = parseIdentifierName(); if (parseOptional(56 /* EqualsToken */)) { switch (token) { @@ -9824,7 +10115,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(239 /* JsxSpreadAttribute */); + var node = createNode(241 /* JsxSpreadAttribute */); parseExpected(15 /* OpenBraceToken */); parseExpected(22 /* DotDotDotToken */); node.expression = parseExpression(); @@ -9832,20 +10123,20 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(237 /* JsxClosingElement */); + var node = createNode(239 /* JsxClosingElement */); parseExpected(26 /* LessThanSlashToken */); node.tagName = parseJsxElementName(); if (inExpressionContext) { parseExpected(27 /* GreaterThanToken */); } else { - parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*advance*/ false); + parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } return finishNode(node); } function parseTypeAssertion() { - var node = createNode(171 /* TypeAssertionExpression */); + var node = createNode(173 /* TypeAssertionExpression */); parseExpected(25 /* LessThanToken */); node.type = parseType(); parseExpected(27 /* GreaterThanToken */); @@ -9856,7 +10147,7 @@ var ts; while (true) { var dotToken = parseOptionalToken(21 /* DotToken */); if (dotToken) { - var propertyAccess = createNode(166 /* PropertyAccessExpression */, expression.pos); + var propertyAccess = createNode(168 /* PropertyAccessExpression */, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); @@ -9865,7 +10156,7 @@ var ts; } // when in the [Decorator] context, we do not parse ElementAccess as it could be part of a ComputedPropertyName if (!inDecoratorContext() && parseOptional(19 /* OpenBracketToken */)) { - var indexedAccess = createNode(167 /* ElementAccessExpression */, expression.pos); + var indexedAccess = createNode(169 /* ElementAccessExpression */, expression.pos); indexedAccess.expression = expression; // It's not uncommon for a user to write: "new Type[]". // Check for that common pattern and report a better error message. @@ -9881,7 +10172,7 @@ var ts; continue; } if (token === 11 /* NoSubstitutionTemplateLiteral */ || token === 12 /* TemplateHead */) { - var tagExpression = createNode(170 /* TaggedTemplateExpression */, expression.pos); + var tagExpression = createNode(172 /* TaggedTemplateExpression */, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 /* NoSubstitutionTemplateLiteral */ ? parseLiteralNode() @@ -9904,7 +10195,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(168 /* CallExpression */, expression.pos); + var callExpr = createNode(170 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -9912,7 +10203,7 @@ var ts; continue; } else if (token === 17 /* OpenParenToken */) { - var callExpr = createNode(168 /* CallExpression */, expression.pos); + var callExpr = createNode(170 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -10022,28 +10313,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(172 /* ParenthesizedExpression */); + var node = createNode(174 /* ParenthesizedExpression */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); return finishNode(node); } function parseSpreadElement() { - var node = createNode(185 /* SpreadElementExpression */); + var node = createNode(187 /* SpreadElementExpression */); parseExpected(22 /* DotDotDotToken */); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 /* DotDotDotToken */ ? parseSpreadElement() : - token === 24 /* CommaToken */ ? createNode(187 /* OmittedExpression */) : + token === 24 /* CommaToken */ ? createNode(189 /* OmittedExpression */) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(164 /* ArrayLiteralExpression */); + var node = createNode(166 /* ArrayLiteralExpression */); parseExpected(19 /* OpenBracketToken */); if (scanner.hasPrecedingLineBreak()) node.flags |= 1024 /* MultiLine */; @@ -10070,7 +10361,6 @@ var ts; } var asteriskToken = parseOptionalToken(37 /* AsteriskToken */); var tokenIsIdentifier = isIdentifier(); - var nameToken = token; var propertyName = parsePropertyName(); // Disallowing of optional property assignments happens in the grammar checker. var questionToken = parseOptionalToken(53 /* QuestionToken */); @@ -10084,7 +10374,7 @@ var ts; // this is necessary because ObjectLiteral productions are also used to cover grammar for ObjectAssignmentPattern var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 /* CommaToken */ || token === 16 /* CloseBraceToken */ || token === 56 /* EqualsToken */); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(246 /* ShorthandPropertyAssignment */, fullStart); + var shorthandDeclaration = createNode(248 /* ShorthandPropertyAssignment */, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56 /* EqualsToken */); @@ -10095,7 +10385,8 @@ var ts; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(245 /* PropertyAssignment */, fullStart); + var propertyAssignment = createNode(247 /* PropertyAssignment */, fullStart); + propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(54 /* ColonToken */); @@ -10104,7 +10395,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(165 /* ObjectLiteralExpression */); + var node = createNode(167 /* ObjectLiteralExpression */); parseExpected(15 /* OpenBraceToken */); if (scanner.hasPrecedingLineBreak()) { node.flags |= 1024 /* MultiLine */; @@ -10121,9 +10412,9 @@ var ts; // function BindingIdentifier[opt](FormalParameters){ FunctionBody } var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { - setDecoratorContext(false); + setDecoratorContext(/*val*/ false); } - var node = createNode(173 /* FunctionExpression */); + var node = createNode(175 /* FunctionExpression */); setModifiers(node, parseModifiers()); parseExpected(87 /* FunctionKeyword */); node.asteriskToken = parseOptionalToken(37 /* AsteriskToken */); @@ -10137,7 +10428,7 @@ var ts; fillSignature(54 /* ColonToken */, /*yieldContext*/ isGenerator, /*awaitContext*/ isAsync, /*requireCompleteParameterList*/ false, node); node.body = parseFunctionBlock(/*allowYield*/ isGenerator, /*allowAwait*/ isAsync, /*ignoreMissingOpenBrace*/ false); if (saveDecoratorContext) { - setDecoratorContext(true); + setDecoratorContext(/*val*/ true); } return finishNode(node); } @@ -10145,7 +10436,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(169 /* NewExpression */); + var node = createNode(171 /* NewExpression */); parseExpected(92 /* NewKeyword */); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -10156,7 +10447,7 @@ var ts; } // STATEMENTS function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(192 /* Block */); + var node = createNode(194 /* Block */); if (parseExpected(15 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -10175,23 +10466,23 @@ var ts; // arrow function. The body of the function is not in [Decorator] context. var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { - setDecoratorContext(false); + setDecoratorContext(/*val*/ false); } var block = parseBlock(ignoreMissingOpenBrace, diagnosticMessage); if (saveDecoratorContext) { - setDecoratorContext(true); + setDecoratorContext(/*val*/ true); } setYieldContext(savedYieldContext); setAwaitContext(savedAwaitContext); return block; } function parseEmptyStatement() { - var node = createNode(194 /* EmptyStatement */); + var node = createNode(196 /* EmptyStatement */); parseExpected(23 /* SemicolonToken */); return finishNode(node); } function parseIfStatement() { - var node = createNode(196 /* IfStatement */); + var node = createNode(198 /* IfStatement */); parseExpected(88 /* IfKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10201,7 +10492,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(197 /* DoStatement */); + var node = createNode(199 /* DoStatement */); parseExpected(79 /* DoKeyword */); node.statement = parseStatement(); parseExpected(104 /* WhileKeyword */); @@ -10216,7 +10507,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(198 /* WhileStatement */); + var node = createNode(200 /* WhileStatement */); parseExpected(104 /* WhileKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10239,21 +10530,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90 /* InKeyword */)) { - var forInStatement = createNode(200 /* ForInStatement */, pos); + var forInStatement = createNode(202 /* ForInStatement */, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forInStatement; } else if (parseOptional(134 /* OfKeyword */)) { - var forOfStatement = createNode(201 /* ForOfStatement */, pos); + var forOfStatement = createNode(203 /* ForOfStatement */, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(199 /* ForStatement */, pos); + var forStatement = createNode(201 /* ForStatement */, pos); forStatement.initializer = initializer; parseExpected(23 /* SemicolonToken */); if (token !== 23 /* SemicolonToken */ && token !== 18 /* CloseParenToken */) { @@ -10271,7 +10562,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 203 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); + parseExpected(kind === 205 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -10279,7 +10570,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(204 /* ReturnStatement */); + var node = createNode(206 /* ReturnStatement */); parseExpected(94 /* ReturnKeyword */); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -10288,7 +10579,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(205 /* WithStatement */); + var node = createNode(207 /* WithStatement */); parseExpected(105 /* WithKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10297,7 +10588,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(241 /* CaseClause */); + var node = createNode(243 /* CaseClause */); parseExpected(71 /* CaseKeyword */); node.expression = allowInAnd(parseExpression); parseExpected(54 /* ColonToken */); @@ -10305,7 +10596,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(242 /* DefaultClause */); + var node = createNode(244 /* DefaultClause */); parseExpected(77 /* DefaultKeyword */); parseExpected(54 /* ColonToken */); node.statements = parseList(3 /* SwitchClauseStatements */, parseStatement); @@ -10315,12 +10606,12 @@ var ts; return token === 71 /* CaseKeyword */ ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(206 /* SwitchStatement */); + var node = createNode(208 /* SwitchStatement */); parseExpected(96 /* SwitchKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); - var caseBlock = createNode(220 /* CaseBlock */, scanner.getStartPos()); + var caseBlock = createNode(222 /* CaseBlock */, scanner.getStartPos()); parseExpected(15 /* OpenBraceToken */); caseBlock.clauses = parseList(2 /* SwitchClauses */, parseCaseOrDefaultClause); parseExpected(16 /* CloseBraceToken */); @@ -10335,7 +10626,7 @@ var ts; // directly as that might consume an expression on the following line. // We just return 'undefined' in that case. The actual error will be reported in the // grammar walker. - var node = createNode(208 /* ThrowStatement */); + var node = createNode(210 /* ThrowStatement */); parseExpected(98 /* ThrowKeyword */); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); @@ -10343,7 +10634,7 @@ var ts; } // TODO: Review for error recovery function parseTryStatement() { - var node = createNode(209 /* TryStatement */); + var node = createNode(211 /* TryStatement */); parseExpected(100 /* TryKeyword */); node.tryBlock = parseBlock(/*ignoreMissingOpenBrace*/ false); node.catchClause = token === 72 /* CatchKeyword */ ? parseCatchClause() : undefined; @@ -10356,7 +10647,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(244 /* CatchClause */); + var result = createNode(246 /* CatchClause */); parseExpected(72 /* CatchKeyword */); if (parseExpected(17 /* OpenParenToken */)) { result.variableDeclaration = parseVariableDeclaration(); @@ -10366,7 +10657,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(210 /* DebuggerStatement */); + var node = createNode(212 /* DebuggerStatement */); parseExpected(76 /* DebuggerKeyword */); parseSemicolon(); return finishNode(node); @@ -10378,13 +10669,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 /* Identifier */ && parseOptional(54 /* ColonToken */)) { - var labeledStatement = createNode(207 /* LabeledStatement */, fullStart); + var labeledStatement = createNode(209 /* LabeledStatement */, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(195 /* ExpressionStatement */, fullStart); + var expressionStatement = createNode(197 /* ExpressionStatement */, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -10558,9 +10849,9 @@ var ts; case 86 /* ForKeyword */: return parseForOrForInOrForOfStatement(); case 75 /* ContinueKeyword */: - return parseBreakOrContinueStatement(202 /* ContinueStatement */); + return parseBreakOrContinueStatement(204 /* ContinueStatement */); case 70 /* BreakKeyword */: - return parseBreakOrContinueStatement(203 /* BreakStatement */); + return parseBreakOrContinueStatement(205 /* BreakStatement */); case 94 /* ReturnKeyword */: return parseReturnStatement(); case 105 /* WithKeyword */: @@ -10633,7 +10924,7 @@ var ts; if (decorators || modifiers) { // We reached this point because we encountered decorators and/or modifiers and assumed a declaration // would follow. For recovery and error reporting purposes, return an incomplete declaration. - var node = createMissingNode(231 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(233 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -10655,16 +10946,16 @@ var ts; // DECLARATIONS function parseArrayBindingElement() { if (token === 24 /* CommaToken */) { - return createNode(187 /* OmittedExpression */); + return createNode(189 /* OmittedExpression */); } - var node = createNode(163 /* BindingElement */); + var node = createNode(165 /* BindingElement */); node.dotDotDotToken = parseOptionalToken(22 /* DotDotDotToken */); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(/*inParameter*/ false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(163 /* BindingElement */); + var node = createNode(165 /* BindingElement */); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54 /* ColonToken */) { @@ -10679,14 +10970,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(161 /* ObjectBindingPattern */); + var node = createNode(163 /* ObjectBindingPattern */); parseExpected(15 /* OpenBraceToken */); node.elements = parseDelimitedList(9 /* ObjectBindingElements */, parseObjectBindingElement); parseExpected(16 /* CloseBraceToken */); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(162 /* ArrayBindingPattern */); + var node = createNode(164 /* ArrayBindingPattern */); parseExpected(19 /* OpenBracketToken */); node.elements = parseDelimitedList(10 /* ArrayBindingElements */, parseArrayBindingElement); parseExpected(20 /* CloseBracketToken */); @@ -10705,7 +10996,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(211 /* VariableDeclaration */); + var node = createNode(213 /* VariableDeclaration */); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -10714,7 +11005,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(212 /* VariableDeclarationList */); + var node = createNode(214 /* VariableDeclarationList */); switch (token) { case 102 /* VarKeyword */: break; @@ -10752,7 +11043,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18 /* CloseParenToken */; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(193 /* VariableStatement */, fullStart); + var node = createNode(195 /* VariableStatement */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(/*inForStatementInitializer*/ false); @@ -10760,7 +11051,7 @@ var ts; return finishNode(node); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(213 /* FunctionDeclaration */, fullStart); + var node = createNode(215 /* FunctionDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87 /* FunctionKeyword */); @@ -10858,7 +11149,7 @@ var ts; return true; } // Eat up all modifiers, but hold on to the last one in case it is actually an identifier. - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { idToken = token; // If the idToken is a class modifier (protected, private, public, and static), it is // certain that we are starting to parse class member. This allows better error recovery @@ -10919,7 +11210,7 @@ var ts; } if (!decorators) { decorators = []; - decorators.pos = scanner.getStartPos(); + decorators.pos = decoratorStart; } var decorator = createNode(139 /* Decorator */, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); @@ -10930,14 +11221,30 @@ var ts; } return decorators; } - function parseModifiers() { + /* + * There are situations in which a modifier like 'const' will appear unexpectedly, such as on a class member. + * In those situations, if we are entirely sure that 'const' is not valid on its own (such as when ASI takes effect + * and turns it into a standalone declaration), then it is better to parse it and report an error later. + * + * In such situations, 'permitInvalidConstAsModifier' should be set to true. + */ + function parseModifiers(permitInvalidConstAsModifier) { var flags = 0; var modifiers; while (true) { var modifierStart = scanner.getStartPos(); var modifierKind = token; - if (!parseAnyContextualModifier()) { - break; + if (token === 74 /* ConstKeyword */ && permitInvalidConstAsModifier) { + // We need to ensure that any subsequent modifiers appear on the same line + // so that when 'const' is a standalone declaration, we don't issue an error. + if (!tryParse(nextTokenIsOnSameLineAndCanFollowModifier)) { + break; + } + } + else { + if (!parseAnyContextualModifier()) { + break; + } } if (!modifiers) { modifiers = []; @@ -10970,13 +11277,13 @@ var ts; } function parseClassElement() { if (token === 23 /* SemicolonToken */) { - var result = createNode(191 /* SemicolonClassElement */); + var result = createNode(193 /* SemicolonClassElement */); nextToken(); return finishNode(result); } var fullStart = getNodePos(); var decorators = parseDecorators(); - var modifiers = parseModifiers(); + var modifiers = parseModifiers(/*permitInvalidConstAsModifier*/ true); var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; @@ -11008,10 +11315,10 @@ var ts; return parseClassDeclarationOrExpression( /*fullStart*/ scanner.getStartPos(), /*decorators*/ undefined, - /*modifiers*/ undefined, 186 /* ClassExpression */); + /*modifiers*/ undefined, 188 /* ClassExpression */); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 214 /* ClassDeclaration */); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 216 /* ClassDeclaration */); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -11036,8 +11343,8 @@ var ts; // implements is a future reserved word so // 'class implements' might mean either // - class expression with omitted name, 'implements' starts heritage clause - // - class with name 'implements' - // 'isImplementsClause' helps to disambiguate between these two cases + // - class with name 'implements' + // 'isImplementsClause' helps to disambiguate between these two cases return isIdentifier() && !isImplementsClause() ? parseIdentifier() : undefined; @@ -11053,12 +11360,9 @@ var ts; } return undefined; } - function parseHeritageClausesWorker() { - return parseList(20 /* HeritageClauses */, parseHeritageClause); - } function parseHeritageClause() { if (token === 83 /* ExtendsKeyword */ || token === 106 /* ImplementsKeyword */) { - var node = createNode(243 /* HeritageClause */); + var node = createNode(245 /* HeritageClause */); node.token = token; nextToken(); node.types = parseDelimitedList(7 /* HeritageClauseElement */, parseExpressionWithTypeArguments); @@ -11067,7 +11371,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(188 /* ExpressionWithTypeArguments */); + var node = createNode(190 /* ExpressionWithTypeArguments */); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25 /* LessThanToken */) { node.typeArguments = parseBracketedList(18 /* TypeArguments */, parseType, 25 /* LessThanToken */, 27 /* GreaterThanToken */); @@ -11081,7 +11385,7 @@ var ts; return parseList(5 /* ClassMembers */, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(215 /* InterfaceDeclaration */, fullStart); + var node = createNode(217 /* InterfaceDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107 /* InterfaceKeyword */); @@ -11092,7 +11396,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(216 /* TypeAliasDeclaration */, fullStart); + var node = createNode(218 /* TypeAliasDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(132 /* TypeKeyword */); @@ -11108,13 +11412,13 @@ var ts; // ConstantEnumMemberSection, which starts at the beginning of an enum declaration // or any time an integer literal initializer is encountered. function parseEnumMember() { - var node = createNode(247 /* EnumMember */, scanner.getStartPos()); + var node = createNode(249 /* EnumMember */, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217 /* EnumDeclaration */, fullStart); + var node = createNode(219 /* EnumDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81 /* EnumKeyword */); @@ -11129,7 +11433,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(219 /* ModuleBlock */, scanner.getStartPos()); + var node = createNode(221 /* ModuleBlock */, scanner.getStartPos()); if (parseExpected(15 /* OpenBraceToken */)) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -11140,7 +11444,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(218 /* ModuleDeclaration */, fullStart); + var node = createNode(220 /* ModuleDeclaration */, fullStart); // If we are parsing a dotted namespace name, we want to // propagate the 'Namespace' flag across the names if set. var namespaceFlag = flags & 65536 /* Namespace */; @@ -11154,7 +11458,7 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(218 /* ModuleDeclaration */, fullStart); + var node = createNode(220 /* ModuleDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(/*internName*/ true); @@ -11184,11 +11488,6 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39 /* SlashToken */; } - function nextTokenIsCommaOrFromKeyword() { - nextToken(); - return token === 24 /* CommaToken */ || - token === 133 /* FromKeyword */; - } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89 /* ImportKeyword */); var afterImportPos = scanner.getStartPos(); @@ -11199,7 +11498,7 @@ var ts; // ImportEquals declaration of type: // import x = require("mod"); or // import x = M.x; - var importEqualsDeclaration = createNode(221 /* ImportEqualsDeclaration */, fullStart); + var importEqualsDeclaration = createNode(223 /* ImportEqualsDeclaration */, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -11210,7 +11509,7 @@ var ts; } } // Import statement - var importDeclaration = createNode(222 /* ImportDeclaration */, fullStart); + var importDeclaration = createNode(224 /* ImportDeclaration */, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); // ImportDeclaration: @@ -11233,7 +11532,7 @@ var ts; // NamedImports // ImportedDefaultBinding, NameSpaceImport // ImportedDefaultBinding, NamedImports - var importClause = createNode(223 /* ImportClause */, fullStart); + var importClause = createNode(225 /* ImportClause */, fullStart); if (identifier) { // ImportedDefaultBinding: // ImportedBinding @@ -11243,7 +11542,7 @@ var ts; // parse namespace or named imports if (!importClause.name || parseOptional(24 /* CommaToken */)) { - importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(225 /* NamedImports */); + importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(227 /* NamedImports */); } return finishNode(importClause); } @@ -11253,7 +11552,7 @@ var ts; : parseEntityName(/*allowReservedWords*/ false); } function parseExternalModuleReference() { - var node = createNode(232 /* ExternalModuleReference */); + var node = createNode(234 /* ExternalModuleReference */); parseExpected(127 /* RequireKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = parseModuleSpecifier(); @@ -11261,21 +11560,22 @@ var ts; return finishNode(node); } function parseModuleSpecifier() { - // We allow arbitrary expressions here, even though the grammar only allows string - // literals. We check to ensure that it is only a string literal later in the grammar - // walker. - var result = parseExpression(); - // Ensure the string being required is in our 'identifier' table. This will ensure - // that features like 'find refs' will look inside this file when search for its name. - if (result.kind === 9 /* StringLiteral */) { + if (token === 9 /* StringLiteral */) { + var result = parseLiteralNode(); internIdentifier(result.text); + return result; + } + else { + // We allow arbitrary expressions here, even though the grammar only allows string + // literals. We check to ensure that it is only a string literal later in the grammar + // check pass. + return parseExpression(); } - return result; } function parseNamespaceImport() { // NameSpaceImport: // * as ImportedBinding - var namespaceImport = createNode(224 /* NamespaceImport */); + var namespaceImport = createNode(226 /* NamespaceImport */); parseExpected(37 /* AsteriskToken */); parseExpected(116 /* AsKeyword */); namespaceImport.name = parseIdentifier(); @@ -11290,14 +11590,14 @@ var ts; // ImportsList: // ImportSpecifier // ImportsList, ImportSpecifier - node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 225 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); + node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 227 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(230 /* ExportSpecifier */); + return parseImportOrExportSpecifier(232 /* ExportSpecifier */); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(226 /* ImportSpecifier */); + return parseImportOrExportSpecifier(228 /* ImportSpecifier */); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -11322,14 +11622,14 @@ var ts; else { node.name = identifierName; } - if (kind === 226 /* ImportSpecifier */ && checkIdentifierIsKeyword) { + if (kind === 228 /* ImportSpecifier */ && checkIdentifierIsKeyword) { // Report error identifier expected parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(228 /* ExportDeclaration */, fullStart); + var node = createNode(230 /* ExportDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37 /* AsteriskToken */)) { @@ -11337,7 +11637,7 @@ var ts; node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(229 /* NamedExports */); + node.exportClause = parseNamedImportsOrExports(231 /* NamedExports */); // It is not uncommon to accidentally omit the 'from' keyword. Additionally, in editing scenarios, // the 'from' keyword can be parsed as a named export when the export clause is unterminated (i.e. `export { from "moduleName";`) // If we don't have a 'from' keyword, see if we have a string literal such that ASI won't take effect. @@ -11350,7 +11650,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(227 /* ExportAssignment */, fullStart); + var node = createNode(229 /* ExportAssignment */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56 /* EqualsToken */)) { @@ -11373,11 +11673,13 @@ var ts; // reference comment. while (true) { var kind = triviaScanner.scan(); - if (kind === 5 /* WhitespaceTrivia */ || kind === 4 /* NewLineTrivia */ || kind === 3 /* MultiLineCommentTrivia */) { - continue; - } if (kind !== 2 /* SingleLineCommentTrivia */) { - break; + if (ts.isTrivia(kind)) { + continue; + } + else { + break; + } } var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos(), kind: triviaScanner.getToken() }; var comment = sourceText.substring(range.pos, range.end); @@ -11423,10 +11725,10 @@ var ts; function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 2 /* Export */ - || node.kind === 221 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 232 /* ExternalModuleReference */ - || node.kind === 222 /* ImportDeclaration */ - || node.kind === 227 /* ExportAssignment */ - || node.kind === 228 /* ExportDeclaration */ + || node.kind === 223 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 234 /* ExternalModuleReference */ + || node.kind === 224 /* ImportDeclaration */ + || node.kind === 229 /* ExportAssignment */ + || node.kind === 230 /* ExportDeclaration */ ? node : undefined; }); @@ -11501,7 +11803,7 @@ var ts; scanner.setText(sourceText, start, length); // Prime the first token for us to start processing. token = nextToken(); - var result = createNode(249 /* JSDocTypeExpression */); + var result = createNode(251 /* JSDocTypeExpression */); parseExpected(15 /* OpenBraceToken */); result.type = parseJSDocTopLevelType(); parseExpected(16 /* CloseBraceToken */); @@ -11512,12 +11814,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47 /* BarToken */) { - var unionType = createNode(253 /* JSDocUnionType */, type.pos); + var unionType = createNode(255 /* JSDocUnionType */, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56 /* EqualsToken */) { - var optionalType = createNode(260 /* JSDocOptionalType */, type.pos); + var optionalType = createNode(262 /* JSDocOptionalType */, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -11528,20 +11830,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19 /* OpenBracketToken */) { - var arrayType = createNode(252 /* JSDocArrayType */, type.pos); + var arrayType = createNode(254 /* JSDocArrayType */, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20 /* CloseBracketToken */); type = finishNode(arrayType); } else if (token === 53 /* QuestionToken */) { - var nullableType = createNode(255 /* JSDocNullableType */, type.pos); + var nullableType = createNode(257 /* JSDocNullableType */, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49 /* ExclamationToken */) { - var nonNullableType = createNode(256 /* JSDocNonNullableType */, type.pos); + var nonNullableType = createNode(258 /* JSDocNonNullableType */, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -11586,27 +11888,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(264 /* JSDocThisType */); + var result = createNode(266 /* JSDocThisType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(263 /* JSDocConstructorType */); + var result = createNode(265 /* JSDocConstructorType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(262 /* JSDocVariadicType */); + var result = createNode(264 /* JSDocVariadicType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(261 /* JSDocFunctionType */); + var result = createNode(263 /* JSDocFunctionType */); nextToken(); parseExpected(17 /* OpenParenToken */); result.parameters = parseDelimitedList(22 /* JSDocFunctionParameters */, parseJSDocParameter); @@ -11623,14 +11925,8 @@ var ts; parameter.type = parseJSDocType(); return finishNode(parameter); } - function parseJSDocOptionalType(type) { - var result = createNode(260 /* JSDocOptionalType */, type.pos); - nextToken(); - result.type = type; - return finishNode(result); - } function parseJSDocTypeReference() { - var result = createNode(259 /* JSDocTypeReference */); + var result = createNode(261 /* JSDocTypeReference */); result.name = parseSimplePropertyName(); while (parseOptional(21 /* DotToken */)) { if (token === 25 /* LessThanToken */) { @@ -11666,7 +11962,7 @@ var ts; return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(257 /* JSDocRecordType */); + var result = createNode(259 /* JSDocRecordType */); nextToken(); result.members = parseDelimitedList(24 /* JSDocRecordMembers */, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -11674,7 +11970,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(258 /* JSDocRecordMember */); + var result = createNode(260 /* JSDocRecordMember */); result.name = parseSimplePropertyName(); if (token === 54 /* ColonToken */) { nextToken(); @@ -11683,13 +11979,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(256 /* JSDocNonNullableType */); + var result = createNode(258 /* JSDocNonNullableType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(254 /* JSDocTupleType */); + var result = createNode(256 /* JSDocTupleType */); nextToken(); result.types = parseDelimitedList(25 /* JSDocTupleTypes */, parseJSDocType); checkForTrailingComma(result.types); @@ -11703,7 +11999,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(253 /* JSDocUnionType */); + var result = createNode(255 /* JSDocUnionType */); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18 /* CloseParenToken */); @@ -11721,7 +12017,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(250 /* JSDocAllType */); + var result = createNode(252 /* JSDocAllType */); nextToken(); return finishNode(result); } @@ -11744,11 +12040,11 @@ var ts; token === 27 /* GreaterThanToken */ || token === 56 /* EqualsToken */ || token === 47 /* BarToken */) { - var result = createNode(251 /* JSDocUnknownType */, pos); + var result = createNode(253 /* JSDocUnknownType */, pos); return finishNode(result); } else { - var result = createNode(255 /* JSDocNullableType */, pos); + var result = createNode(257 /* JSDocNullableType */, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -11836,7 +12132,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(265 /* JSDocComment */, start); + var result = createNode(267 /* JSDocComment */, start); result.tags = tags; return finishNode(result, end); } @@ -11873,7 +12169,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(266 /* JSDocTag */, atToken.pos); + var result = createNode(268 /* JSDocTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result, pos); @@ -11924,7 +12220,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(267 /* JSDocParameterTag */, atToken.pos); + var result = createNode(269 /* JSDocParameterTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -11934,27 +12230,27 @@ var ts; return finishNode(result, pos); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 268 /* JSDocReturnTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 270 /* JSDocReturnTag */; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(268 /* JSDocReturnTag */, atToken.pos); + var result = createNode(270 /* JSDocReturnTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 269 /* JSDocTypeTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 271 /* JSDocTypeTag */; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(269 /* JSDocTypeTag */, atToken.pos); + var result = createNode(271 /* JSDocTypeTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 270 /* JSDocTemplateTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 272 /* JSDocTemplateTag */; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } var typeParameters = []; @@ -11978,7 +12274,7 @@ var ts; pos++; } typeParameters.end = pos; - var result = createNode(270 /* JSDocTemplateTag */, atToken.pos); + var result = createNode(272 /* JSDocTemplateTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -12019,7 +12315,7 @@ var ts; if (sourceFile.statements.length === 0) { // If we don't have any statements in the current source file, then there's no real // way to incrementally parse. So just do a full parse instead. - return Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, /*syntaxCursor*/ undefined, /*setNodeParents*/ true); + return Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, /*syntaxCursor*/ undefined, /*setParentNodes*/ true); } // Make sure we're not trying to incrementally update a source file more than once. Once // we do an update the original source file is considered unusbale from that point onwards. @@ -12075,7 +12371,7 @@ var ts; // inconsistent tree. Setting the parents on the new tree should be very fast. We // will immediately bail out of walking any subtrees when we can see that their parents // are already correct. - var result = Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, /* setParentNode */ true); + var result = Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, /*setParentNodes*/ true); return result; } IncrementalParser.updateSourceFile = updateSourceFile; @@ -12508,16 +12804,16 @@ var ts; function getModuleInstanceState(node) { // A module is uninstantiated if it contains only // 1. interface declarations, type alias declarations - if (node.kind === 215 /* InterfaceDeclaration */ || node.kind === 216 /* TypeAliasDeclaration */) { + if (node.kind === 217 /* InterfaceDeclaration */ || node.kind === 218 /* TypeAliasDeclaration */) { return 0 /* NonInstantiated */; } else if (ts.isConstEnumDeclaration(node)) { return 2 /* ConstEnumOnly */; } - else if ((node.kind === 222 /* ImportDeclaration */ || node.kind === 221 /* ImportEqualsDeclaration */) && !(node.flags & 2 /* Export */)) { + else if ((node.kind === 224 /* ImportDeclaration */ || node.kind === 223 /* ImportEqualsDeclaration */) && !(node.flags & 2 /* Export */)) { return 0 /* NonInstantiated */; } - else if (node.kind === 219 /* ModuleBlock */) { + else if (node.kind === 221 /* ModuleBlock */) { var state = 0 /* NonInstantiated */; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -12536,7 +12832,7 @@ var ts; }); return state; } - else if (node.kind === 218 /* ModuleDeclaration */) { + else if (node.kind === 220 /* ModuleDeclaration */) { return getModuleInstanceState(node.body); } else { @@ -12604,6 +12900,8 @@ var ts; file.symbolCount = symbolCount; file.classifiableNames = classifiableNames; } + file = undefined; + options = undefined; parent = undefined; container = undefined; blockScopeContainer = undefined; @@ -12632,20 +12930,25 @@ var ts; if (symbolFlags & 6240 /* HasMembers */ && !symbol.members) { symbol.members = {}; } - if (symbolFlags & 107455 /* Value */ && !symbol.valueDeclaration) { - symbol.valueDeclaration = node; + if (symbolFlags & 107455 /* Value */) { + var valueDeclaration = symbol.valueDeclaration; + if (!valueDeclaration || + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 220 /* ModuleDeclaration */)) { + // other kinds of value declarations take precedence over modules + symbol.valueDeclaration = node; + } } } // Should not be called on a declaration with a computed property name, // unless it is a well known Symbol. function getDeclarationName(node) { if (node.name) { - if (node.kind === 218 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { + if (node.kind === 220 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { return "\"" + node.name.text + "\""; } if (node.name.kind === 136 /* ComputedPropertyName */) { var nameExpression = node.name.expression; - // treat computed property names where expression is string/numeric literal as just string/numeric literal + // treat computed property names where expression is string/numeric literal as just string/numeric literal if (ts.isStringOrNumericLiteral(nameExpression.kind)) { return nameExpression.text; } @@ -12665,15 +12968,27 @@ var ts; return "__new"; case 149 /* IndexSignature */: return "__index"; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return "__export"; - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return node.isExportEquals ? "export=" : "default"; - case 181 /* BinaryExpression */: - // Binary expression case is for JS module 'module.exports = expr' - return "export="; - case 213 /* FunctionDeclaration */: - case 214 /* ClassDeclaration */: + case 183 /* BinaryExpression */: + switch (ts.getSpecialPropertyAssignmentKind(node)) { + case 2 /* ModuleExports */: + // module.exports = ... + return "export="; + case 1 /* ExportsProperty */: + case 4 /* ThisProperty */: + // exports.x = ... or this.y = ... + return node.left.name.text; + case 3 /* PrototypeProperty */: + // className.prototype.methodName = ... + return node.left.expression.name.text; + } + ts.Debug.fail("Unknown binary declaration kind"); + break; + case 215 /* FunctionDeclaration */: + case 216 /* ClassDeclaration */: return node.flags & 512 /* Default */ ? "default" : undefined; } } @@ -12750,7 +13065,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 2 /* Export */; if (symbolFlags & 8388608 /* Alias */) { - if (node.kind === 230 /* ExportSpecifier */ || (node.kind === 221 /* ImportEqualsDeclaration */ && hasExportModifier)) { + if (node.kind === 232 /* ExportSpecifier */ || (node.kind === 223 /* ImportEqualsDeclaration */ && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -12833,10 +13148,10 @@ var ts; var flags = node.flags; // reset all reachability check related flags on node (for incremental scenarios) flags &= ~1572864 /* ReachabilityCheckFlags */; - if (kind === 215 /* InterfaceDeclaration */) { + if (kind === 217 /* InterfaceDeclaration */) { seenThisKeyword = false; } - var saveState = kind === 248 /* SourceFile */ || kind === 219 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); + var saveState = kind === 250 /* SourceFile */ || kind === 221 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -12854,7 +13169,7 @@ var ts; flags |= 1048576 /* HasExplicitReturn */; } } - if (kind === 215 /* InterfaceDeclaration */) { + if (kind === 217 /* InterfaceDeclaration */) { flags = seenThisKeyword ? flags | 262144 /* ContainsThis */ : flags & ~262144 /* ContainsThis */; } node.flags = flags; @@ -12879,40 +13194,40 @@ var ts; return; } switch (node.kind) { - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: bindWhileStatement(node); break; - case 197 /* DoStatement */: + case 199 /* DoStatement */: bindDoStatement(node); break; - case 199 /* ForStatement */: + case 201 /* ForStatement */: bindForStatement(node); break; - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: bindForInOrForOfStatement(node); break; - case 196 /* IfStatement */: + case 198 /* IfStatement */: bindIfStatement(node); break; - case 204 /* ReturnStatement */: - case 208 /* ThrowStatement */: + case 206 /* ReturnStatement */: + case 210 /* ThrowStatement */: bindReturnOrThrow(node); break; - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: bindBreakOrContinueStatement(node); break; - case 209 /* TryStatement */: + case 211 /* TryStatement */: bindTryStatement(node); break; - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: bindSwitchStatement(node); break; - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: bindCaseBlock(node); break; - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: bindLabeledStatement(node); break; default: @@ -12964,7 +13279,7 @@ var ts; popImplicitLabel(postStatementLabel, preStatementState); } function bindIfStatement(n) { - // denotes reachability state when entering 'thenStatement' part of the if statement: + // denotes reachability state when entering 'thenStatement' part of the if statement: // i.e. if condition is false then thenStatement is unreachable var ifTrueState = n.expression.kind === 84 /* FalseKeyword */ ? 4 /* Unreachable */ : currentReachabilityState; // denotes reachability state when entering 'elseStatement': @@ -12987,7 +13302,7 @@ var ts; function bindReturnOrThrow(n) { // bind expression (don't affect reachability) bind(n.expression); - if (n.kind === 204 /* ReturnStatement */) { + if (n.kind === 206 /* ReturnStatement */) { hasExplicitReturn = true; } currentReachabilityState = 4 /* Unreachable */; @@ -12996,7 +13311,7 @@ var ts; // call bind on label (don't affect reachability) bind(n.label); // for continue case touch label so it will be marked a used - var isValidJump = jumpToLabel(n.label, n.kind === 203 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); + var isValidJump = jumpToLabel(n.label, n.kind === 205 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); if (isValidJump) { currentReachabilityState = 4 /* Unreachable */; } @@ -13022,7 +13337,7 @@ var ts; // bind expression (don't affect reachability) bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 242 /* DefaultClause */; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 244 /* DefaultClause */; }); // post switch state is unreachable if switch is exaustive (has a default case ) and does not have fallthrough from the last case var postSwitchState = hasDefault && currentReachabilityState !== 2 /* Reachable */ ? 4 /* Unreachable */ : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); @@ -13049,37 +13364,37 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: case 155 /* TypeLiteral */: - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return 1 /* IsContainer */; case 147 /* CallSignature */: case 148 /* ConstructSignature */: case 149 /* IndexSignature */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 152 /* FunctionType */: case 153 /* ConstructorType */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 218 /* ModuleDeclaration */: - case 248 /* SourceFile */: - case 216 /* TypeAliasDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 220 /* ModuleDeclaration */: + case 250 /* SourceFile */: + case 218 /* TypeAliasDeclaration */: return 5 /* IsContainerWithLocals */; - case 244 /* CatchClause */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 220 /* CaseBlock */: + case 246 /* CatchClause */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 222 /* CaseBlock */: return 2 /* IsBlockScopedContainer */; - case 192 /* Block */: + case 194 /* Block */: // do not treat blocks directly inside a function as a block-scoped-container. // Locals that reside in this block should go to the function locals. Othewise 'x' // would not appear to be a redeclaration of a block scoped local in the following @@ -13116,18 +13431,18 @@ var ts; // members are declared (for example, a member of a class will go into a specific // symbol table depending on if it is static or not). We defer to specialized // handlers to take care of declaring these child members. - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: return declareClassMember(node, symbolFlags, symbolExcludes); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); case 155 /* TypeLiteral */: - case 165 /* ObjectLiteralExpression */: - case 215 /* InterfaceDeclaration */: + case 167 /* ObjectLiteralExpression */: + case 217 /* InterfaceDeclaration */: // Interface/Object-types always have their children added to the 'members' of // their container. They are only accessible through an instance of their // container, and are never in scope otherwise (even inside the body of the @@ -13144,10 +13459,10 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 216 /* TypeAliasDeclaration */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 218 /* TypeAliasDeclaration */: // All the children of these container types are never visible through another // symbol (i.e. through another symbol's 'exports' or 'members'). Instead, // they're only accessed 'lexically' (i.e. from code that exists underneath @@ -13168,11 +13483,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 248 /* SourceFile */ ? node : node.body; - if (body.kind === 248 /* SourceFile */ || body.kind === 219 /* ModuleBlock */) { + var body = node.kind === 250 /* SourceFile */ ? node : node.body; + if (body.kind === 250 /* SourceFile */ || body.kind === 221 /* ModuleBlock */) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 228 /* ExportDeclaration */ || stat.kind === 227 /* ExportAssignment */) { + if (stat.kind === 230 /* ExportDeclaration */ || stat.kind === 229 /* ExportAssignment */) { return true; } } @@ -13256,7 +13571,7 @@ var ts; // c.IsAccessorDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true. // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields - var currentKind = prop.kind === 245 /* PropertyAssignment */ || prop.kind === 246 /* ShorthandPropertyAssignment */ || prop.kind === 143 /* MethodDeclaration */ + var currentKind = prop.kind === 247 /* PropertyAssignment */ || prop.kind === 248 /* ShorthandPropertyAssignment */ || prop.kind === 143 /* MethodDeclaration */ ? 1 /* Property */ : 2 /* Accessor */; var existingKind = seen[identifier.text]; @@ -13278,10 +13593,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -13441,17 +13756,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 248 /* SourceFile */: - case 219 /* ModuleBlock */: + case 250 /* SourceFile */: + case 221 /* ModuleBlock */: updateStrictModeStatementList(node.statements); return; - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: // All classes are automatically in strict mode in ES6. inStrictMode = true; return; @@ -13481,45 +13796,61 @@ var ts; /* Strict mode checks */ case 69 /* Identifier */: return checkStrictModeIdentifier(node); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: if (ts.isInJavaScriptFile(node)) { - if (ts.isExportsPropertyAssignment(node)) { - bindExportsPropertyAssignment(node); - } - else if (ts.isModuleExportsAssignment(node)) { - bindModuleExportsAssignment(node); + var specialKind = ts.getSpecialPropertyAssignmentKind(node); + switch (specialKind) { + case 1 /* ExportsProperty */: + bindExportsPropertyAssignment(node); + break; + case 2 /* ModuleExports */: + bindModuleExportsAssignment(node); + break; + case 3 /* PrototypeProperty */: + bindPrototypePropertyAssignment(node); + break; + case 4 /* ThisProperty */: + bindThisPropertyAssignment(node); + break; + case 0 /* None */: + // Nothing to do + break; + default: + ts.Debug.fail("Unknown special property assignment kind"); } } return checkStrictModeBinaryExpression(node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return checkStrictModeCatchClause(node); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return checkStrictModeDeleteExpression(node); case 8 /* NumericLiteral */: return checkStrictModeNumericLiteral(node); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return checkStrictModePostfixUnaryExpression(node); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return checkStrictModePrefixUnaryExpression(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return checkStrictModeWithStatement(node); - case 97 /* ThisKeyword */: + case 161 /* ThisType */: seenThisKeyword = true; return; + case 150 /* TypePredicate */: + return checkTypePredicate(node); case 137 /* TypeParameter */: return declareSymbolAndAddToSymbolTable(node, 262144 /* TypeParameter */, 530912 /* TypeParameterExcludes */); case 138 /* Parameter */: return bindParameter(node); - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: return bindVariableDeclarationOrBindingElement(node); case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), 107455 /* PropertyExcludes */); - case 245 /* PropertyAssignment */: - case 246 /* ShorthandPropertyAssignment */: + case 247 /* PropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */, 107455 /* PropertyExcludes */); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return bindPropertyOrMethodOrAccessor(node, 8 /* EnumMember */, 107455 /* EnumMemberExcludes */); case 147 /* CallSignature */: case 148 /* ConstructSignature */: @@ -13532,7 +13863,7 @@ var ts; // so that it will conflict with any other object literal members with the same // name. return bindPropertyOrMethodOrAccessor(node, 8192 /* Method */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), ts.isObjectLiteralMethod(node) ? 107455 /* PropertyExcludes */ : 99263 /* MethodExcludes */); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: checkStrictModeFunctionName(node); return declareSymbolAndAddToSymbolTable(node, 16 /* Function */, 106927 /* FunctionExcludes */); case 144 /* Constructor */: @@ -13546,46 +13877,56 @@ var ts; return bindFunctionOrConstructorType(node); case 155 /* TypeLiteral */: return bindAnonymousDeclaration(node, 2048 /* TypeLiteral */, "__type"); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return bindObjectLiteralExpression(node); - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: checkStrictModeFunctionName(node); var bindingName = node.name ? node.name.text : "__function"; return bindAnonymousDeclaration(node, 16 /* Function */, bindingName); - case 168 /* CallExpression */: + case 170 /* CallExpression */: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; // Members of classes, interfaces, and modules - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: return bindClassLikeDeclaration(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return bindBlockScopedDeclaration(node, 64 /* Interface */, 792960 /* InterfaceExcludes */); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return bindBlockScopedDeclaration(node, 524288 /* TypeAlias */, 793056 /* TypeAliasExcludes */); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return bindEnumDeclaration(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return bindModuleDeclaration(node); // Imports and exports - case 221 /* ImportEqualsDeclaration */: - case 224 /* NamespaceImport */: - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 226 /* NamespaceImport */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: return declareSymbolAndAddToSymbolTable(node, 8388608 /* Alias */, 8388608 /* AliasExcludes */); - case 223 /* ImportClause */: + case 225 /* ImportClause */: return bindImportClause(node); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return bindExportDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return bindExportAssignment(node); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return bindSourceFileIfExternalModule(); } } + function checkTypePredicate(node) { + var parameterName = node.parameterName, type = node.type; + if (parameterName && parameterName.kind === 69 /* Identifier */) { + checkStrictModeIdentifier(parameterName); + } + if (parameterName && parameterName.kind === 161 /* ThisType */) { + seenThisKeyword = true; + } + bind(type); + } function bindSourceFileIfExternalModule() { setExportContextFlag(file); if (ts.isExternalModule(file)) { @@ -13596,7 +13937,7 @@ var ts; bindAnonymousDeclaration(file, 512 /* ValueModule */, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 227 /* ExportAssignment */ ? node.expression : node.right; + var boundExpression = node.kind === 229 /* ExportAssignment */ ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { // Export assignment in some sort of block construct bindAnonymousDeclaration(node, 8388608 /* Alias */, getDeclarationName(node)); @@ -13642,6 +13983,29 @@ var ts; setCommonJsModuleIndicator(node); bindExportAssignment(node); } + function bindThisPropertyAssignment(node) { + // Declare a 'member' in case it turns out the container was an ES5 class + if (container.kind === 175 /* FunctionExpression */ || container.kind === 215 /* FunctionDeclaration */) { + container.symbol.members = container.symbol.members || {}; + declareSymbol(container.symbol.members, container.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */); + } + } + function bindPrototypePropertyAssignment(node) { + // We saw a node of the form 'x.prototype.y = z'. Declare a 'member' y on x if x was a function. + // Look up the function in the local scope, since prototype assignments should + // follow the function declaration + var classId = node.left.expression.expression; + var funcSymbol = container.locals[classId.text]; + if (!funcSymbol || !(funcSymbol.flags & 16 /* Function */)) { + return; + } + // Set up the members collection if it doesn't exist already + if (!funcSymbol.members) { + funcSymbol.members = {}; + } + // Declare the method/property + declareSymbol(funcSymbol.members, funcSymbol, node.left, 4 /* Property */, 107455 /* PropertyExcludes */); + } function bindCallExpression(node) { // We're only inspecting call expressions to detect CommonJS modules, so we can skip // this check if we've already seen the module indicator @@ -13650,7 +14014,7 @@ var ts; } } function bindClassLikeDeclaration(node) { - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { bindBlockScopedDeclaration(node, 32 /* Class */, 899519 /* ClassExcludes */); } else { @@ -13725,9 +14089,7 @@ var ts; } // If this is a property-parameter, then also declare the property symbol into the // containing class. - if (node.flags & 56 /* AccessibilityModifier */ && - node.parent.kind === 144 /* Constructor */ && - ts.isClassLike(node.parent.parent)) { + if (ts.isParameterPropertyDeclaration(node)) { var classDeclaration = node.parent.parent; declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */); } @@ -13797,18 +14159,18 @@ var ts; case 4 /* Unreachable */: var reportError = // report error on all statements except empty ones - (ts.isStatement(node) && node.kind !== 194 /* EmptyStatement */) || + (ts.isStatement(node) && node.kind !== 196 /* EmptyStatement */) || // report error on class declarations - node.kind === 214 /* ClassDeclaration */ || + node.kind === 216 /* ClassDeclaration */ || // report error on instantiated modules or const-enums only modules if preserveConstEnums is set - (node.kind === 218 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 220 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || // report error on regular enums and const enums if preserveConstEnums is set - (node.kind === 217 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + (node.kind === 219 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8 /* ReportedUnreachable */; // unreachable code is reported if // - user has explicitly asked about it AND - // - statement is in not ambient context (statements in ambient context is already an error + // - statement is in not ambient context (statements in ambient context is already an error // so we should not report extras) AND // - node is not variable statement OR // - node is block scoped variable statement OR @@ -13817,7 +14179,7 @@ var ts; // On the other side we do want to report errors on non-initialized 'lets' because of TDZ var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 193 /* VariableStatement */ || + (node.kind !== 195 /* VariableStatement */ || ts.getCombinedNodeFlags(node.declarationList) & 24576 /* BlockScoped */ || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -13853,15 +14215,18 @@ var ts; var nextNodeId = 1; var nextMergeId = 1; function getNodeId(node) { - if (!node.id) - node.id = nextNodeId++; + if (!node.id) { + node.id = nextNodeId; + nextNodeId++; + } return node.id; } ts.getNodeId = getNodeId; ts.checkTime = 0; function getSymbolId(symbol) { if (!symbol.id) { - symbol.id = nextSymbolId++; + symbol.id = nextSymbolId; + nextSymbolId++; } return symbol.id; } @@ -13887,8 +14252,10 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0 /* ES3 */; var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 /* ES6 */ ? 5 /* ES6 */ : 0 /* None */; + var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === 4 /* System */; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "undefined"); + undefinedSymbol.declarations = []; var argumentsSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "arguments"); var checker = { getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, @@ -13902,6 +14269,7 @@ var ts; // The language service will always care about the narrowed type of a symbol, because that is // the type the language says the symbol should have. getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, getPropertyOfType: getPropertyOfType, @@ -13918,7 +14286,7 @@ var ts; symbolToString: symbolToString, getAugmentedPropertiesOfType: getAugmentedPropertiesOfType, getRootSymbols: getRootSymbols, - getContextualType: getApparentTypeOfContextualType, + getContextualType: getContextualType, getFullyQualifiedName: getFullyQualifiedName, getResolvedSignature: getResolvedSignature, getConstantValue: getConstantValue, @@ -13943,8 +14311,8 @@ var ts; var undefinedType = createIntrinsicType(32 /* Undefined */ | 2097152 /* ContainsUndefinedOrNull */, "undefined"); var nullType = createIntrinsicType(64 /* Null */ | 2097152 /* ContainsUndefinedOrNull */, "null"); var unknownType = createIntrinsicType(1 /* Any */, "unknown"); - var circularType = createIntrinsicType(1 /* Any */, "__circular__"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var emptyUnionType = emptyObjectType; var emptyGenericType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); emptyGenericType.instantiations = {}; var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); @@ -13952,8 +14320,8 @@ var ts; // in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes. anyFunctionType.flags |= 8388608 /* ContainsAnyFunctionType */; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); var globals = {}; var globalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; @@ -13966,9 +14334,6 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; - var jsxElementType; - /** Lazily loaded, use getJsxIntrinsicElementType() */ - var jsxIntrinsicElementsType; var globalIterableType; var globalIteratorType; var globalIterableIteratorType; @@ -13985,6 +14350,7 @@ var ts; var getGlobalPromiseConstructorLikeType; var getGlobalThenableType; var jsxElementClassType; + var deferredNodes; var tupleTypes = {}; var unionTypes = {}; var intersectionTypes = {}; @@ -14019,14 +14385,23 @@ var ts; "symbol": { type: esSymbolType, flags: 16777216 /* ESSymbol */ + }, + "undefined": { + type: undefinedType, + flags: 2097152 /* ContainsUndefinedOrNull */ } }; + var jsxElementType; + /** Things we lazy load from the JSX namespace */ + var jsxTypes = {}; var JsxNames = { JSX: "JSX", IntrinsicElements: "IntrinsicElements", ElementClass: "ElementClass", ElementAttributesPropertyNameContainer: "ElementAttributesProperty", - Element: "Element" + Element: "Element", + IntrinsicAttributes: "IntrinsicAttributes", + IntrinsicClassAttributes: "IntrinsicClassAttributes" }; var subtypeRelation = {}; var assignableRelation = {}; @@ -14040,6 +14415,10 @@ var ts; TypeSystemPropertyName[TypeSystemPropertyName["DeclaredType"] = 2] = "DeclaredType"; TypeSystemPropertyName[TypeSystemPropertyName["ResolvedReturnType"] = 3] = "ResolvedReturnType"; })(TypeSystemPropertyName || (TypeSystemPropertyName = {})); + var builtinGlobals = (_a = {}, + _a[undefinedSymbol.name] = undefinedSymbol, + _a + ); initializeTypeChecker(); return checker; function getEmitResolver(sourceFile, cancellationToken) { @@ -14095,8 +14474,10 @@ var ts; return result; } function recordMergedSymbol(target, source) { - if (!source.mergeId) - source.mergeId = nextMergeId++; + if (!source.mergeId) { + source.mergeId = nextMergeId; + nextMergeId++; + } mergedSymbols[source.mergeId] = target; } function cloneSymbol(symbol) { @@ -14121,8 +14502,12 @@ var ts; target.constEnumOnlyModule = false; } target.flags |= source.flags; - if (!target.valueDeclaration && source.valueDeclaration) + if (source.valueDeclaration && + (!target.valueDeclaration || + (target.valueDeclaration.kind === 220 /* ModuleDeclaration */ && source.valueDeclaration.kind !== 220 /* ModuleDeclaration */))) { + // other kinds of value declarations take precedence over modules target.valueDeclaration = source.valueDeclaration; + } ts.forEach(source.declarations, function (node) { target.declarations.push(node); }); @@ -14174,6 +14559,22 @@ var ts; } } } + function addToSymbolTable(target, source, message) { + for (var id in source) { + if (ts.hasProperty(source, id)) { + if (ts.hasProperty(target, id)) { + // Error on redeclarations + ts.forEach(target[id].declarations, addDeclarationDiagnostic(id, message)); + } + else { + target[id] = source[id]; + } + } + } + function addDeclarationDiagnostic(id, message) { + return function (declaration) { return diagnostics.add(ts.createDiagnosticForNode(declaration, message, id)); }; + } + } function getSymbolLinks(symbol) { if (symbol.flags & 67108864 /* Transient */) return symbol; @@ -14185,10 +14586,17 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 248 /* SourceFile */); + return ts.getAncestor(node, 250 /* SourceFile */); } function isGlobalSourceFile(node) { - return node.kind === 248 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); + return node.kind === 250 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); + } + /** Is this type one of the apparent types created from the primitive types. */ + function isPrimitiveApparentType(type) { + return type === globalStringType || + type === globalNumberType || + type === globalBooleanType || + type === globalESSymbolType; } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -14207,6 +14615,22 @@ var ts; } // return undefined if we can't find a symbol. } + /** + * Get symbols that represent parameter-property-declaration as parameter and as property declaration + * @param parameter a parameterDeclaration node + * @param parameterName a name of the parameter to get the symbols for. + * @return a tuple of two symbols + */ + function getSymbolsOfParameterPropertyDeclaration(parameter, parameterName) { + var constructoDeclaration = parameter.parent; + var classDeclaration = parameter.parent.parent; + var parameterSymbol = getSymbol(constructoDeclaration.locals, parameterName, 107455 /* Value */); + var propertySymbol = getSymbol(classDeclaration.symbol.members, parameterName, 107455 /* Value */); + if (parameterSymbol && propertySymbol) { + return [parameterSymbol, propertySymbol]; + } + ts.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration"); + } function isBlockScopedNameDeclaredBeforeUse(declaration, usage) { var declarationFile = ts.getSourceFileOfNode(declaration); var useFile = ts.getSourceFileOfNode(usage); @@ -14221,7 +14645,7 @@ var ts; if (declaration.pos <= usage.pos) { // declaration is before usage // still might be illegal if usage is in the initializer of the variable declaration - return declaration.kind !== 211 /* VariableDeclaration */ || + return declaration.kind !== 213 /* VariableDeclaration */ || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } // declaration is after usage @@ -14229,14 +14653,14 @@ var ts; return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 193 /* VariableStatement */ || - declaration.parent.parent.kind === 199 /* ForStatement */) { + if (declaration.parent.parent.kind === 195 /* VariableStatement */ || + declaration.parent.parent.kind === 201 /* ForStatement */) { // variable statement/for statement case, // use site should not be inside variable declaration (initializer of declaration or binding element) return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 201 /* ForOfStatement */ || - declaration.parent.parent.kind === 200 /* ForInStatement */) { + else if (declaration.parent.parent.kind === 203 /* ForOfStatement */ || + declaration.parent.parent.kind === 202 /* ForInStatement */) { // ForIn/ForOf case - use site should not be used in expression part var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); @@ -14277,25 +14701,46 @@ var ts; // Locals of a source file are not in scope (because they get merged into the global symbol table) if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { - // Type parameters of a function are in scope in the entire function declaration, including the parameter - // list and return type. However, local types are only in scope in the function body. - if (!(meaning & 793056 /* Type */) || - !(result.flags & (793056 /* Type */ & ~262144 /* TypeParameter */)) || - !ts.isFunctionLike(location) || - lastLocation === location.body) { + var useResult = true; + if (ts.isFunctionLike(location) && lastLocation && lastLocation !== location.body) { + // symbol lookup restrictions for function-like declarations + // - Type parameters of a function are in scope in the entire function declaration, including the parameter + // list and return type. However, local types are only in scope in the function body. + // - parameters are only in the scope of function body + if (meaning & result.flags & 793056 /* Type */) { + useResult = result.flags & 262144 /* TypeParameter */ + ? lastLocation === location.type || + lastLocation.kind === 138 /* Parameter */ || + lastLocation.kind === 137 /* TypeParameter */ + : false; + } + if (meaning & 107455 /* Value */ && result.flags & 1 /* FunctionScopedVariable */) { + // parameters are visible only inside function body, parameter list and return type + // technically for parameter list case here we might mix parameters and variables declared in function, + // however it is detected separately when checking initializers of parameters + // to make sure that they reference no variables declared after them. + useResult = + lastLocation.kind === 138 /* Parameter */ || + (lastLocation === location.type && + result.valueDeclaration.kind === 138 /* Parameter */); + } + } + if (useResult) { break loop; } - result = undefined; + else { + result = undefined; + } } } switch (location.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) break; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 248 /* SourceFile */ || - (location.kind === 218 /* ModuleDeclaration */ && location.name.kind === 9 /* StringLiteral */)) { + if (location.kind === 250 /* SourceFile */ || + (location.kind === 220 /* ModuleDeclaration */ && location.name.kind === 9 /* StringLiteral */)) { // It's an external module. First see if the module has an export default and if the local // name of that export default matches. if (result = moduleExports["default"]) { @@ -14306,7 +14751,7 @@ var ts; result = undefined; } // Because of module/namespace merging, a module's exports are in scope, - // yet we never want to treat an export specifier as putting a member in scope. + // yet we never want to treat an export specifier as putting a member in scope. // Therefore, if the name we find is purely an export specifier, it is not actually considered in scope. // Two things to note about this: // 1. We have to check this without calling getSymbol. The problem with calling getSymbol @@ -14318,7 +14763,7 @@ var ts; // which is not the desired behavior. if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 /* Alias */ && - ts.getDeclarationOfKind(moduleExports[name], 230 /* ExportSpecifier */)) { + ts.getDeclarationOfKind(moduleExports[name], 232 /* ExportSpecifier */)) { break; } } @@ -14326,7 +14771,7 @@ var ts; break loop; } break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8 /* EnumMember */)) { break loop; } @@ -14349,9 +14794,9 @@ var ts; } } break; - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056 /* Type */)) { if (lastLocation && lastLocation.flags & 64 /* Static */) { // TypeScript 1.0 spec (April 2014): 3.4.1 @@ -14362,7 +14807,7 @@ var ts; } break loop; } - if (location.kind === 186 /* ClassExpression */ && meaning & 32 /* Class */) { + if (location.kind === 188 /* ClassExpression */ && meaning & 32 /* Class */) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -14380,7 +14825,7 @@ var ts; // case 136 /* ComputedPropertyName */: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 215 /* InterfaceDeclaration */) { + if (ts.isClassLike(grandparent) || grandparent.kind === 217 /* InterfaceDeclaration */) { // A reference to this grandparent's type parameters would be an error if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056 /* Type */)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); @@ -14393,14 +14838,14 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 173 /* FunctionExpression */: + case 175 /* FunctionExpression */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; @@ -14482,7 +14927,7 @@ var ts; // Block-scoped variables cannot be used before their definition var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 211 /* VariableDeclaration */), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 213 /* VariableDeclaration */), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -14503,10 +14948,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 221 /* ImportEqualsDeclaration */) { + if (node.kind === 223 /* ImportEqualsDeclaration */) { return node; } - while (node && node.kind !== 222 /* ImportDeclaration */) { + while (node && node.kind !== 224 /* ImportDeclaration */) { node = node.parent; } return node; @@ -14516,7 +14961,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 232 /* ExternalModuleReference */) { + if (node.moduleReference.kind === 234 /* ExternalModuleReference */) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -14525,9 +14970,12 @@ var ts; var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); - if (!exportDefaultSymbol) { + if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } + else if (!exportDefaultSymbol && allowSyntheticDefaultImports) { + return resolveSymbol(moduleSymbol.exports["export="]) || resolveSymbol(moduleSymbol); + } return exportDefaultSymbol; } } @@ -14535,14 +14983,6 @@ var ts; var moduleSpecifier = node.parent.parent.moduleSpecifier; return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); } - function getMemberOfModuleVariable(moduleSymbol, name) { - if (moduleSymbol.flags & 3 /* Variable */) { - var typeAnnotation = moduleSymbol.valueDeclaration.type; - if (typeAnnotation) { - return getPropertyOfType(getTypeFromTypeNode(typeAnnotation), name); - } - } - } // This function creates a synthetic symbol that combines the value side of one symbol with the // type/namespace side of another symbol. Consider this example: // @@ -14623,17 +15063,17 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return getTargetOfImportEqualsDeclaration(node); - case 223 /* ImportClause */: + case 225 /* ImportClause */: return getTargetOfImportClause(node); - case 224 /* NamespaceImport */: + case 226 /* NamespaceImport */: return getTargetOfNamespaceImport(node); - case 226 /* ImportSpecifier */: + case 228 /* ImportSpecifier */: return getTargetOfImportSpecifier(node); - case 230 /* ExportSpecifier */: + case 232 /* ExportSpecifier */: return getTargetOfExportSpecifier(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return getTargetOfExportAssignment(node); } } @@ -14678,11 +15118,11 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 227 /* ExportAssignment */) { + if (node.kind === 229 /* ExportAssignment */) { // export default checkExpressionCached(node.expression); } - else if (node.kind === 230 /* ExportSpecifier */) { + else if (node.kind === 232 /* ExportSpecifier */) { // export { } or export { as foo } checkExpressionCached(node.propertyName || node.name); } @@ -14695,7 +15135,7 @@ var ts; // This function is only for imports with entity names function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 221 /* ImportEqualsDeclaration */); + importDeclaration = ts.getAncestor(entityName, 223 /* ImportEqualsDeclaration */); ts.Debug.assert(importDeclaration !== undefined); } // There are three things we might try to look for. In the following examples, @@ -14714,7 +15154,7 @@ var ts; else { // Case 2 in above example // entityName.kind could be a QualifiedName or a Missing identifier - ts.Debug.assert(entityName.parent.kind === 221 /* ImportEqualsDeclaration */); + ts.Debug.assert(entityName.parent.kind === 223 /* ImportEqualsDeclaration */); return resolveEntityName(entityName, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */); } } @@ -14734,7 +15174,7 @@ var ts; return undefined; } } - else if (name.kind === 135 /* QualifiedName */ || name.kind === 166 /* PropertyAccessExpression */) { + else if (name.kind === 135 /* QualifiedName */ || name.kind === 168 /* PropertyAccessExpression */) { var left = name.kind === 135 /* QualifiedName */ ? name.left : name.expression; var right = name.kind === 135 /* QualifiedName */ ? name.right : name.name; var namespace = resolveEntityName(left, 1536 /* Namespace */, ignoreErrors); @@ -14760,16 +15200,12 @@ var ts; return; } var moduleReferenceLiteral = moduleReferenceExpression; - var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); // Module names are escaped in our symbol table. However, string literal values aren't. // Escape the name in the "require(...)" clause to ensure we find the right symbol. var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); if (moduleName === undefined) { return; } - if (moduleName.indexOf("!") >= 0) { - moduleName = moduleName.substr(0, moduleName.indexOf("!")); - } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512 /* ValueModule */); @@ -14817,38 +15253,66 @@ var ts; var links = getSymbolLinks(moduleSymbol); return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function extendExportSymbols(target, source) { + /** + * Extends one symbol table with another 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, source, lookupTable, exportNode) { for (var id in source) { if (id !== "default" && !ts.hasProperty(target, id)) { target[id] = source[id]; + if (lookupTable && exportNode) { + lookupTable[id] = { + specifierText: ts.getTextOfNode(exportNode.moduleSpecifier) + }; + } + } + else if (lookupTable && exportNode && id !== "default" && ts.hasProperty(target, id) && resolveSymbol(target[id]) !== resolveSymbol(source[id])) { + if (!lookupTable[id].exportsWithDuplicate) { + lookupTable[id].exportsWithDuplicate = [exportNode]; + } + else { + lookupTable[id].exportsWithDuplicate.push(exportNode); + } } } } function getExportsForModule(moduleSymbol) { - var result; var visitedSymbols = []; - 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) { - if (symbol && symbol.flags & 1952 /* HasExports */ && !ts.contains(visitedSymbols, symbol)) { - visitedSymbols.push(symbol); - if (symbol !== moduleSymbol) { - if (!result) { - result = cloneSymbolTable(moduleSymbol.exports); - } - extendExportSymbols(result, symbol.exports); - } - // All export * declarations are collected in an __export symbol by the binder - var exportStars = symbol.exports["__export"]; - if (exportStars) { - for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { - var node = _a[_i]; - visit(resolveExternalModuleName(node, node.moduleSpecifier)); - } - } + if (!(symbol && symbol.flags & 1952 /* HasExports */ && !ts.contains(visitedSymbols, symbol))) { + return; } + visitedSymbols.push(symbol); + var symbols = cloneSymbolTable(symbol.exports); + // All export * declarations are collected in an __export symbol by the binder + var exportStars = symbol.exports["__export"]; + if (exportStars) { + var nestedSymbols = {}; + var lookupTable = {}; + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + var resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); + var exportedSymbols = visit(resolvedModule); + extendExportSymbols(nestedSymbols, exportedSymbols, lookupTable, node); + } + for (var id in lookupTable) { + var exportsWithDuplicate = lookupTable[id].exportsWithDuplicate; + // 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 && exportsWithDuplicate.length) || ts.hasProperty(symbols, id)) { + continue; + } + for (var _b = 0, exportsWithDuplicate_1 = exportsWithDuplicate; _b < exportsWithDuplicate_1.length; _b++) { + var node = exportsWithDuplicate_1[_b]; + diagnostics.add(ts.createDiagnosticForNode(node, ts.Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id)); + } + } + extendExportSymbols(symbols, nestedSymbols); + } + return symbols; } } function getMergedSymbol(symbol) { @@ -14893,7 +15357,8 @@ var ts; } function createType(flags) { var result = new Type(checker, flags); - result.id = typeCount++; + result.id = typeCount; + typeCount++; return result; } function createIntrinsicType(kind, intrinsicName) { @@ -14956,17 +15421,17 @@ var ts; } } switch (location_1.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: if (result = callback(getSymbolOfNode(location_1).members)) { return result; } @@ -15007,7 +15472,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 /* Alias */ && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230 /* ExportSpecifier */)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232 /* ExportSpecifier */)) { if (!useOnlyExternalAliasing || // Is this external alias, then use it to name ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { @@ -15044,7 +15509,7 @@ var ts; return true; } // Qualify if the symbol from symbol table has same meaning as expected - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -15117,8 +15582,8 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 218 /* ModuleDeclaration */ && declaration.name.kind === 9 /* StringLiteral */) || - (declaration.kind === 248 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); + return (declaration.kind === 220 /* ModuleDeclaration */ && declaration.name.kind === 9 /* StringLiteral */) || + (declaration.kind === 250 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -15158,8 +15623,8 @@ var ts; // Typeof value meaning = 107455 /* Value */ | 1048576 /* ExportValue */; } - else if (entityName.kind === 135 /* QualifiedName */ || entityName.kind === 166 /* PropertyAccessExpression */ || - entityName.parent.kind === 221 /* ImportEqualsDeclaration */) { + else if (entityName.kind === 135 /* QualifiedName */ || entityName.kind === 168 /* PropertyAccessExpression */ || + entityName.parent.kind === 223 /* ImportEqualsDeclaration */) { // Left identifier from type reference or TypeAlias // Entity name of the import declaration meaning = 1536 /* Namespace */; @@ -15193,9 +15658,9 @@ var ts; ts.releaseStringWriter(writer); return result; } - function signatureToString(signature, enclosingDeclaration, flags) { + function signatureToString(signature, enclosingDeclaration, flags, kind) { var writer = ts.getSingleLineStringWriter(); - getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); + getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind); var result = writer.string(); ts.releaseStringWriter(writer); return result; @@ -15217,7 +15682,7 @@ var ts; while (node.kind === 160 /* ParenthesizedType */) { node = node.parent; } - if (node.kind === 216 /* TypeAliasDeclaration */) { + if (node.kind === 218 /* TypeAliasDeclaration */) { return getSymbolOfNode(node); } } @@ -15231,10 +15696,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return "(Anonymous class)"; - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return "(Anonymous function)"; } } @@ -15322,10 +15787,16 @@ var ts; function writeType(type, flags) { // Write undefined/null type as any if (type.flags & 16777343 /* Intrinsic */) { - // Special handling for unknown / resolving types, they should show up as any and not unknown or __resolving - writer.writeKeyword(!(globalFlags & 16 /* WriteOwnNameForAnyLike */) && isTypeAny(type) - ? "any" - : type.intrinsicName); + if (type.flags & 134217728 /* PredicateType */) { + buildTypePredicateDisplay(writer, type.predicate); + buildTypeDisplay(type.predicate.type, writer, enclosingDeclaration, flags, symbolStack); + } + else { + // Special handling for unknown / resolving types, they should show up as any and not unknown or __resolving + writer.writeKeyword(!(globalFlags & 16 /* WriteOwnNameForAnyLike */) && isTypeAny(type) + ? "any" + : type.intrinsicName); + } } else if (type.flags & 33554432 /* ThisType */) { if (inObjectTypeLiteral) { @@ -15381,11 +15852,13 @@ var ts; } if (pos < end) { writePunctuation(writer, 25 /* LessThanToken */); - writeType(typeArguments[pos++], 0 /* None */); + writeType(typeArguments[pos], 0 /* None */); + pos++; while (pos < end) { writePunctuation(writer, 24 /* CommaToken */); writeSpace(writer); - writeType(typeArguments[pos++], 0 /* None */); + writeType(typeArguments[pos], 0 /* None */); + pos++; } writePunctuation(writer, 27 /* GreaterThanToken */); } @@ -15481,7 +15954,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16 /* Function */) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 248 /* SourceFile */ || declaration.parent.kind === 219 /* ModuleBlock */; + return declaration.parent.kind === 250 /* SourceFile */ || declaration.parent.kind === 221 /* ModuleBlock */; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { // typeof is allowed only for static/non local functions @@ -15517,7 +15990,7 @@ var ts; if (flags & 64 /* InElementType */) { writePunctuation(writer, 17 /* OpenParenToken */); } - buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, symbolStack); + buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, /*kind*/ undefined, symbolStack); if (flags & 64 /* InElementType */) { writePunctuation(writer, 18 /* CloseParenToken */); } @@ -15529,7 +16002,7 @@ var ts; } writeKeyword(writer, 92 /* NewKeyword */); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, symbolStack); + buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, /*kind*/ undefined, symbolStack); if (flags & 64 /* InElementType */) { writePunctuation(writer, 18 /* CloseParenToken */); } @@ -15543,15 +16016,13 @@ var ts; writer.increaseIndent(); for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { var signature = _a[_i]; - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, /*kind*/ undefined, symbolStack); writePunctuation(writer, 23 /* SemicolonToken */); writer.writeLine(); } for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { var signature = _c[_b]; - writeKeyword(writer, 92 /* NewKeyword */); - writeSpace(writer); - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, 1 /* Construct */, symbolStack); writePunctuation(writer, 23 /* SemicolonToken */); writer.writeLine(); } @@ -15594,7 +16065,7 @@ var ts; if (p.flags & 536870912 /* Optional */) { writePunctuation(writer, 53 /* QuestionToken */); } - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, /*kind*/ undefined, symbolStack); writePunctuation(writer, 23 /* SemicolonToken */); writer.writeLine(); } @@ -15682,6 +16153,17 @@ var ts; } writePunctuation(writer, 18 /* CloseParenToken */); } + function buildTypePredicateDisplay(writer, predicate) { + if (ts.isIdentifierTypePredicate(predicate)) { + writer.writeParameter(predicate.parameterName); + } + else { + writeKeyword(writer, 97 /* ThisKeyword */); + } + writeSpace(writer); + writeKeyword(writer, 124 /* IsKeyword */); + writeSpace(writer); + } function buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { if (flags & 8 /* WriteArrowStyleSignature */) { writeSpace(writer); @@ -15691,20 +16173,14 @@ var ts; writePunctuation(writer, 54 /* ColonToken */); } writeSpace(writer); - var returnType; - if (signature.typePredicate) { - writer.writeParameter(signature.typePredicate.parameterName); - writeSpace(writer); - writeKeyword(writer, 124 /* IsKeyword */); - writeSpace(writer); - returnType = signature.typePredicate.type; - } - else { - returnType = getReturnTypeOfSignature(signature); - } + var returnType = getReturnTypeOfSignature(signature); buildTypeDisplay(returnType, writer, enclosingDeclaration, flags, symbolStack); } - function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { + function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind, symbolStack) { + if (kind === 1 /* Construct */) { + writeKeyword(writer, 92 /* NewKeyword */); + writeSpace(writer); + } if (signature.target && (flags & 32 /* WriteTypeArgumentsOfSignature */)) { // Instantiated signature, write type arguments instead // This is achieved by passing in the mapper separately @@ -15729,82 +16205,36 @@ var ts; }); } function isDeclarationVisible(node) { - function getContainingExternalModule(node) { - for (; node; node = node.parent) { - if (node.kind === 218 /* ModuleDeclaration */) { - if (node.name.kind === 9 /* StringLiteral */) { - return node; - } - } - else if (node.kind === 248 /* SourceFile */) { - return ts.isExternalOrCommonJsModule(node) ? node : undefined; - } - } - ts.Debug.fail("getContainingModule cant reach here"); - } - function isUsedInExportAssignment(node) { - // Get source File and see if it is external module and has export assigned symbol - var externalModule = getContainingExternalModule(node); - var exportAssignmentSymbol; - var resolvedExportSymbol; - if (externalModule) { - // This is export assigned symbol node - var externalModuleSymbol = getSymbolOfNode(externalModule); - exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var symbolOfNode = getSymbolOfNode(node); - if (isSymbolUsedInExportAssignment(symbolOfNode)) { - return true; - } - // if symbolOfNode is alias declaration, resolve the symbol declaration and check - if (symbolOfNode.flags & 8388608 /* Alias */) { - return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); - } - } - // Check if the symbol is used in export assignment - function isSymbolUsedInExportAssignment(symbol) { - if (exportAssignmentSymbol === symbol) { - return true; - } - if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608 /* Alias */)) { - // if export assigned symbol is alias declaration, resolve the alias - resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); - if (resolvedExportSymbol === symbol) { - return true; - } - // Container of resolvedExportSymbol is visible - return ts.forEach(resolvedExportSymbol.declarations, function (current) { - while (current) { - if (current === node) { - return true; - } - current = current.parent; - } - }); - } + if (node) { + var links = getNodeLinks(node); + if (links.isVisible === undefined) { + links.isVisible = !!determineIfDeclarationIsVisible(); } + return links.isVisible; } + return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 163 /* BindingElement */: + case 165 /* BindingElement */: return isDeclarationVisible(node.parent.parent); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { // If the binding pattern is empty, this variable declaration is not visible return false; } // Otherwise fall through - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 213 /* FunctionDeclaration */: - case 217 /* EnumDeclaration */: - case 221 /* ImportEqualsDeclaration */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 215 /* FunctionDeclaration */: + case 219 /* EnumDeclaration */: + case 223 /* ImportEqualsDeclaration */: var parent_4 = getDeclarationContainer(node); // If the node is not exported or it is not ambient module element (except import declaration) if (!(ts.getCombinedNodeFlags(node) & 2 /* Export */) && - !(node.kind !== 221 /* ImportEqualsDeclaration */ && parent_4.kind !== 248 /* SourceFile */ && ts.isInAmbientContext(parent_4))) { + !(node.kind !== 223 /* ImportEqualsDeclaration */ && parent_4.kind !== 250 /* SourceFile */ && ts.isInAmbientContext(parent_4))) { return isGlobalSourceFile(parent_4); } // Exported members/ambient module elements (exception import declaration) are visible if parent is visible @@ -15825,7 +16255,7 @@ var ts; case 147 /* CallSignature */: case 149 /* IndexSignature */: case 138 /* Parameter */: - case 219 /* ModuleBlock */: + case 221 /* ModuleBlock */: case 152 /* FunctionType */: case 153 /* ConstructorType */: case 155 /* TypeLiteral */: @@ -15838,36 +16268,29 @@ var ts; return isDeclarationVisible(node.parent); // Default binding, import specifier and namespace import is visible // only on demand so by default it is not visible - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: - case 226 /* ImportSpecifier */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: + case 228 /* ImportSpecifier */: return false; // Type parameters are always visible case 137 /* TypeParameter */: // Source file is always visible - case 248 /* SourceFile */: + case 250 /* SourceFile */: return true; // Export assignments do not create name bindings outside the module - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } } - if (node) { - var links = getNodeLinks(node); - if (links.isVisible === undefined) { - links.isVisible = !!determineIfDeclarationIsVisible(); - } - return links.isVisible; - } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 227 /* ExportAssignment */) { + if (node.parent && node.parent.kind === 229 /* ExportAssignment */) { exportSymbol = resolveName(node.parent, node.text, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 230 /* ExportSpecifier */) { + else if (node.parent.kind === 232 /* ExportSpecifier */) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -15917,7 +16340,7 @@ var ts; return false; } resolutionTargets.push(target); - resolutionResults.push(true); + resolutionResults.push(/*items*/ true); resolutionPropertyNames.push(propertyName); return true; } @@ -15959,7 +16382,7 @@ var ts; node = ts.getRootDeclaration(node); // Parent chain: // VaribleDeclaration -> VariableDeclarationList -> VariableStatement -> 'Declaration Container' - return node.kind === 211 /* VariableDeclaration */ ? node.parent.parent.parent : node.parent; + return node.kind === 213 /* VariableDeclaration */ ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { // TypeScript 1.0 spec (April 2014): 8.4 @@ -16018,7 +16441,7 @@ var ts; return parentType; } var type; - if (pattern.kind === 161 /* ObjectBindingPattern */) { + if (pattern.kind === 163 /* ObjectBindingPattern */) { // Use explicitly specified property name ({ p: xxx } form), or otherwise the implied name ({ p } form) var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { @@ -16067,10 +16490,10 @@ var ts; // Return the inferred type for a variable, parameter, or property declaration function getTypeForVariableLikeDeclaration(declaration) { // A variable declared in a for..in statement is always of type any - if (declaration.parent.parent.kind === 200 /* ForInStatement */) { + if (declaration.parent.parent.kind === 202 /* ForInStatement */) { return anyType; } - if (declaration.parent.parent.kind === 201 /* ForOfStatement */) { + if (declaration.parent.parent.kind === 203 /* ForOfStatement */) { // checkRightHandSideOfForOf will return undefined if the for-of expression type was // missing properties/signatures required to get its iteratedType (like // [Symbol.iterator] or next). This may be because we accessed properties from anyType, @@ -16104,7 +16527,7 @@ var ts; return checkExpressionCached(declaration.initializer); } // If it is a short-hand property assignment, use the type of the identifier - if (declaration.kind === 246 /* ShorthandPropertyAssignment */) { + if (declaration.kind === 248 /* ShorthandPropertyAssignment */) { return checkIdentifier(declaration.name); } // If the declaration specifies a binding pattern, use the type implied by the binding pattern @@ -16160,7 +16583,7 @@ var ts; return languageVersion >= 2 /* ES6 */ ? createIterableType(anyType) : anyArrayType; } // If the pattern has at least one element, and no rest element, then it should imply a tuple type. - var elementTypes = ts.map(elements, function (e) { return e.kind === 187 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 189 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -16176,7 +16599,7 @@ var ts; // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 161 /* ObjectBindingPattern */ + return pattern.kind === 163 /* ObjectBindingPattern */ ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -16198,7 +16621,13 @@ var ts; // During a normal type check we'll never get to here with a property assignment (the check of the containing // object literal uses a different path). We exclude widening only so that language services and type verification // tools see the actual type. - return declaration.kind !== 245 /* PropertyAssignment */ ? getWidenedType(type) : type; + if (declaration.kind === 247 /* PropertyAssignment */) { + return type; + } + if (type.flags & 134217728 /* PredicateType */ && (declaration.kind === 141 /* PropertyDeclaration */ || declaration.kind === 140 /* PropertySignature */)) { + return type; + } + return getWidenedType(type); } // Rest parameters default to type any[], other parameters default to type any type = declaration.dotDotDotToken ? anyArrayType : anyType; @@ -16220,20 +16649,24 @@ var ts; } // Handle catch clause variables var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 244 /* CatchClause */) { + if (declaration.parent.kind === 246 /* CatchClause */) { return links.type = anyType; } // Handle export default expressions - if (declaration.kind === 227 /* ExportAssignment */) { + if (declaration.kind === 229 /* ExportAssignment */) { return links.type = checkExpression(declaration.expression); } // Handle module.exports = expr - if (declaration.kind === 181 /* BinaryExpression */) { + if (declaration.kind === 183 /* BinaryExpression */) { return links.type = checkExpression(declaration.right); } - // Handle exports.p = expr - if (declaration.kind === 166 /* PropertyAccessExpression */) { - return checkExpressionCached(declaration.parent.right); + if (declaration.kind === 168 /* PropertyAccessExpression */) { + // Declarations only exist for property access expressions for certain + // special assignment kinds + if (declaration.parent.kind === 183 /* BinaryExpression */) { + // Handle exports.p = expr or this.p = expr or className.prototype.method = expr + return links.type = checkExpressionCached(declaration.parent.right); + } } // Handle variable, parameter or property if (!pushTypeResolution(symbol, 0 /* Type */)) { @@ -16406,9 +16839,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 214 /* ClassDeclaration */ || node.kind === 186 /* ClassExpression */ || - node.kind === 213 /* FunctionDeclaration */ || node.kind === 173 /* FunctionExpression */ || - node.kind === 143 /* MethodDeclaration */ || node.kind === 174 /* ArrowFunction */) { + if (node.kind === 216 /* ClassDeclaration */ || node.kind === 188 /* ClassExpression */ || + node.kind === 215 /* FunctionDeclaration */ || node.kind === 175 /* FunctionExpression */ || + node.kind === 143 /* MethodDeclaration */ || node.kind === 176 /* ArrowFunction */) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -16418,7 +16851,7 @@ var ts; } // The outer type parameters are those defined by enclosing generic classes, methods, or functions. function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 215 /* InterfaceDeclaration */); + var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 217 /* InterfaceDeclaration */); return appendOuterTypeParameters(undefined, declaration); } // The local type parameters are the combined set of type parameters from all declarations of the class, @@ -16427,8 +16860,8 @@ var ts; var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 215 /* InterfaceDeclaration */ || node.kind === 214 /* ClassDeclaration */ || - node.kind === 186 /* ClassExpression */ || node.kind === 216 /* TypeAliasDeclaration */) { + if (node.kind === 217 /* InterfaceDeclaration */ || node.kind === 216 /* ClassDeclaration */ || + node.kind === 188 /* ClassExpression */ || node.kind === 218 /* TypeAliasDeclaration */) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -16492,9 +16925,6 @@ var ts; } return type.resolvedBaseConstructorType; } - function hasClassBaseType(type) { - return !!ts.forEach(getBaseTypes(type), function (t) { return !!(t.symbol.flags & 32 /* Class */); }); - } function getBaseTypes(type) { var isClass = type.symbol.flags & 32 /* Class */; var isInterface = type.symbol.flags & 64 /* Interface */; @@ -16571,7 +17001,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 217 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -16603,7 +17033,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215 /* InterfaceDeclaration */) { + if (declaration.kind === 217 /* InterfaceDeclaration */) { if (declaration.flags & 262144 /* ContainsThis */) { return false; } @@ -16659,7 +17089,7 @@ var ts; if (!pushTypeResolution(symbol, 2 /* DeclaredType */)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 216 /* TypeAliasDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 218 /* TypeAliasDeclaration */); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -16748,7 +17178,7 @@ var ts; case 120 /* BooleanKeyword */: case 131 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: return true; case 156 /* ArrayType */: return isIndependentType(node.elementType); @@ -16824,14 +17254,6 @@ var ts; } } } - function addInheritedSignatures(signatures, baseSignatures) { - if (baseSignatures) { - for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { - var signature = baseSignatures_1[_i]; - signatures.push(signature); - } - } - } function resolveDeclaredMembers(type) { if (!type.declaredProperties) { var symbol = type.symbol; @@ -16892,33 +17314,32 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, parameters, resolvedReturnType, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; sig.resolvedReturnType = resolvedReturnType; - sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; sig.hasRestParameter = hasRestParameter; sig.hasStringLiterals = hasStringLiterals; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { - if (!hasClassBaseType(classType)) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; - } var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1 /* Construct */); + if (baseSignatures.length === 0) { + return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; + } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); var typeArgCount = typeArguments ? typeArguments.length : 0; var result = []; - for (var _i = 0, baseSignatures_2 = baseSignatures; _i < baseSignatures_2.length; _i++) { - var baseSig = baseSignatures_2[_i]; + for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { + var baseSig = baseSignatures_1[_i]; var typeParamCount = baseSig.typeParameters ? baseSig.typeParameters.length : 0; if (typeParamCount === typeArgCount) { var sig = typeParamCount ? getSignatureInstantiation(baseSig, typeArguments) : cloneSignature(baseSig); @@ -16949,7 +17370,7 @@ var ts; function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignatures(s, signature, partialMatch, ignoreReturnTypes, compareTypes)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -17052,36 +17473,29 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; - var members; - var callSignatures; - var constructSignatures; - var stringIndexType; - var numberIndexType; if (type.target) { - members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, /*mappingThisOnly*/ false); - callSignatures = instantiateList(getSignaturesOfType(type.target, 0 /* Call */), type.mapper, instantiateSignature); - constructSignatures = instantiateList(getSignaturesOfType(type.target, 1 /* Construct */), type.mapper, instantiateSignature); - stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0 /* String */), type.mapper); - numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1 /* Number */), type.mapper); + var members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, /*mappingThisOnly*/ false); + var callSignatures = instantiateList(getSignaturesOfType(type.target, 0 /* Call */), type.mapper, instantiateSignature); + var constructSignatures = instantiateList(getSignaturesOfType(type.target, 1 /* Construct */), type.mapper, instantiateSignature); + var stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0 /* String */), type.mapper); + var numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1 /* Number */), type.mapper); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else if (symbol.flags & 2048 /* TypeLiteral */) { - members = symbol.members; - callSignatures = getSignaturesOfSymbol(members["__call"]); - constructSignatures = getSignaturesOfSymbol(members["__new"]); - stringIndexType = getIndexTypeOfSymbol(symbol, 0 /* String */); - numberIndexType = getIndexTypeOfSymbol(symbol, 1 /* Number */); + var members = symbol.members; + var callSignatures = getSignaturesOfSymbol(members["__call"]); + var constructSignatures = getSignaturesOfSymbol(members["__new"]); + var stringIndexType = getIndexTypeOfSymbol(symbol, 0 /* String */); + var numberIndexType = getIndexTypeOfSymbol(symbol, 1 /* Number */); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else { // Combinations of function, class, enum and module - members = emptySymbols; - callSignatures = emptyArray; - constructSignatures = emptyArray; + var members = emptySymbols; + var constructSignatures = emptyArray; if (symbol.flags & 1952 /* HasExports */) { members = getExportsOfSymbol(symbol); } - if (symbol.flags & (16 /* Function */ | 8192 /* Method */)) { - callSignatures = getSignaturesOfSymbol(symbol); - } if (symbol.flags & 32 /* Class */) { var classType = getDeclaredTypeOfClassOrInterface(symbol); constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]); @@ -17094,10 +17508,16 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(baseConstructorType)); } } - stringIndexType = undefined; - numberIndexType = (symbol.flags & 384 /* Enum */) ? stringType : undefined; + var numberIndexType = (symbol.flags & 384 /* Enum */) ? stringType : undefined; + setObjectTypeMembers(type, members, emptyArray, constructSignatures, undefined, numberIndexType); + // We resolve the members before computing the signatures because a signature may use + // typeof with a qualified name expression that circularly references the type we are + // in the process of resolving (see issue #6072). The temporarily empty signature list + // will never be observed because a qualified name can't reference signatures. + if (symbol.flags & (16 /* Function */ | 8192 /* Method */)) { + type.callSignatures = getSignaturesOfSymbol(symbol); + } } - setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } function resolveStructuredTypeMembers(type) { if (!type.members) { @@ -17122,15 +17542,15 @@ var ts; } return type; } - // Return properties of an object type or an empty array for other types + /** Return properties of an object type or an empty array for other types */ function getPropertiesOfObjectType(type) { if (type.flags & 80896 /* ObjectType */) { return resolveStructuredTypeMembers(type).properties; } return emptyArray; } - // If the given type is an object type and that type has a property by the given name, - // return the symbol for that property.Otherwise return undefined. + /** If the given type is an object type and that type has a property by the given name, + * return the symbol for that property. Otherwise return undefined. */ function getPropertyOfObjectType(type, name) { if (type.flags & 80896 /* ObjectType */) { var resolved = resolveStructuredTypeMembers(type); @@ -17201,12 +17621,15 @@ var ts; function createUnionOrIntersectionProperty(containingType, name) { var types = containingType.types; var props; + // Flags we want to propagate to the result if they exist in all source symbols + var commonFlags = (containingType.flags & 32768 /* Intersection */) ? 536870912 /* Optional */ : 0 /* None */; for (var _i = 0, types_2 = types; _i < types_2.length; _i++) { var current = types_2[_i]; var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (prop && !(getDeclarationFlagsFromSymbol(prop) & (16 /* Private */ | 32 /* Protected */))) { + commonFlags &= prop.flags; if (!props) { props = [prop]; } @@ -17235,7 +17658,10 @@ var ts; } propTypes.push(getTypeOfSymbol(prop)); } - var result = createSymbol(4 /* Property */ | 67108864 /* Transient */ | 268435456 /* SyntheticProperty */, name); + var result = createSymbol(4 /* Property */ | + 67108864 /* Transient */ | + 268435456 /* SyntheticProperty */ | + commonFlags, name); result.containingType = containingType; result.declarations = declarations; result.type = containingType.flags & 16384 /* Union */ ? getUnionType(propTypes) : getIntersectionType(propTypes); @@ -17292,22 +17718,6 @@ var ts; function getSignaturesOfType(type, kind) { return getSignaturesOfStructuredType(getApparentType(type), kind); } - function typeHasConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & (80896 /* ObjectType */ | 16384 /* Union */)) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.constructSignatures.length > 0; - } - return false; - } - function typeHasCallOrConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & 130048 /* StructuredType */) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.callSignatures.length > 0 || resolved.constructSignatures.length > 0; - } - return false; - } function getIndexTypeOfStructuredType(type, kind) { if (type.flags & 130048 /* StructuredType */) { var resolved = resolveStructuredTypeMembers(type); @@ -17353,6 +17763,23 @@ var ts; } return false; } + function createTypePredicateFromTypePredicateNode(node) { + if (node.parameterName.kind === 69 /* Identifier */) { + var parameterName = node.parameterName; + return { + kind: 1 /* Identifier */, + parameterName: parameterName ? parameterName.text : undefined, + parameterIndex: parameterName ? getTypePredicateParameterIndex(node.parent.parameters, parameterName) : undefined, + type: getTypeFromTypeNode(node.type) + }; + } + else { + return { + kind: 0 /* This */, + type: getTypeFromTypeNode(node.type) + }; + } + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { @@ -17366,8 +17793,14 @@ var ts; var minArgumentCount = -1; for (var i = 0, n = declaration.parameters.length; i < n; i++) { var param = declaration.parameters[i]; - parameters.push(param.symbol); - if (param.type && param.type.kind === 9 /* StringLiteral */) { + var paramSymbol = param.symbol; + // Include parameter symbol instead of property symbol in the signature + if (paramSymbol && !!(paramSymbol.flags & 4 /* Property */) && !ts.isBindingPattern(param.name)) { + var resolvedSymbol = resolveName(param, paramSymbol.name, 107455 /* Value */, undefined, undefined); + paramSymbol = resolvedSymbol; + } + parameters.push(paramSymbol); + if (param.type && param.type.kind === 162 /* StringLiteralType */) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { @@ -17384,20 +17817,11 @@ var ts; minArgumentCount = declaration.parameters.length; } var returnType; - var typePredicate; if (classType) { returnType = classType; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 150 /* TypePredicate */) { - var typePredicateNode = declaration.type; - typePredicate = { - parameterName: typePredicateNode.parameterName ? typePredicateNode.parameterName.text : undefined, - parameterIndex: typePredicateNode.parameterName ? getTypePredicateParameterIndex(declaration.parameters, typePredicateNode.parameterName) : undefined, - type: getTypeFromTypeNode(typePredicateNode.type) - }; - } } else { // TypeScript 1.0 spec (April 2014): @@ -17410,7 +17834,7 @@ var ts; returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -17423,7 +17847,7 @@ var ts; switch (node.kind) { case 152 /* FunctionType */: case 153 /* ConstructorType */: - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 144 /* Constructor */: @@ -17432,8 +17856,8 @@ var ts; case 149 /* IndexSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: // Don't include signature if node is the implementation of an overloaded function. A node is considered // an implementation node if it has a body and the previous node is of the same kind and immediately // precedes the implementation node (i.e. has the same parent and ends where the implementation starts). @@ -17499,7 +17923,7 @@ var ts; return anyType; } function getSignatureInstantiation(signature, typeArguments) { - return instantiateSignature(signature, createTypeMapper(signature.typeParameters, typeArguments), true); + return instantiateSignature(signature, createTypeMapper(signature.typeParameters, typeArguments), /*eraseTypeParameters*/ true); } function getErasedSignature(signature) { if (!signature.typeParameters) @@ -17509,7 +17933,7 @@ var ts; signature.erasedSignatureCache = instantiateSignature(getErasedSignature(signature.target), signature.mapper); } else { - signature.erasedSignatureCache = instantiateSignature(signature, createTypeEraser(signature.typeParameters), true); + signature.erasedSignatureCache = instantiateSignature(signature, createTypeEraser(signature.typeParameters), /*eraseTypeParameters*/ true); } } return signature.erasedSignatureCache; @@ -17556,17 +17980,38 @@ var ts; ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; } - function getConstraintOfTypeParameter(type) { - if (!type.constraint) { - if (type.target) { - var targetConstraint = getConstraintOfTypeParameter(type.target); - type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; + function getConstraintDeclaration(type) { + return ts.getDeclarationOfKind(type.symbol, 137 /* TypeParameter */).constraint; + } + function hasConstraintReferenceTo(type, target) { + var checked; + while (type && type.flags & 512 /* TypeParameter */ && !ts.contains(checked, type)) { + if (type === target) { + return true; + } + (checked || (checked = [])).push(type); + var constraintDeclaration = getConstraintDeclaration(type); + type = constraintDeclaration && getTypeFromTypeNode(constraintDeclaration); + } + return false; + } + function getConstraintOfTypeParameter(typeParameter) { + if (!typeParameter.constraint) { + if (typeParameter.target) { + var targetConstraint = getConstraintOfTypeParameter(typeParameter.target); + typeParameter.constraint = targetConstraint ? instantiateType(targetConstraint, typeParameter.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 137 /* TypeParameter */).constraint); + var constraintDeclaration = getConstraintDeclaration(typeParameter); + var constraint = getTypeFromTypeNode(constraintDeclaration); + if (hasConstraintReferenceTo(constraint, typeParameter)) { + error(constraintDeclaration, ts.Diagnostics.Type_parameter_0_has_a_circular_constraint, typeToString(typeParameter)); + constraint = unknownType; + } + typeParameter.constraint = constraint; } } - return type.constraint === noConstraintType ? undefined : type.constraint; + return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 137 /* TypeParameter */).parent); @@ -17614,50 +18059,6 @@ var ts; } return type; } - function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode, typeParameterSymbol) { - var links = getNodeLinks(typeReferenceNode); - if (links.isIllegalTypeReferenceInConstraint !== undefined) { - return links.isIllegalTypeReferenceInConstraint; - } - // bubble up to the declaration - var currentNode = typeReferenceNode; - // forEach === exists - while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return 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 === 137 /* TypeParameter */; - return links.isIllegalTypeReferenceInConstraint; - } - function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { - var typeParameterSymbol; - function check(n) { - if (n.kind === 151 /* TypeReference */ && n.typeName.kind === 69 /* Identifier */) { - var links = getNodeLinks(n); - if (links.isIllegalTypeReferenceInConstraint === undefined) { - var symbol = resolveName(typeParameter, n.typeName.text, 793056 /* Type */, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); - if (symbol && (symbol.flags & 262144 /* 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 = ts.forEach(symbol.declarations, function (d) { return d.parent === typeParameter.parent; }); - } - } - if (links.isIllegalTypeReferenceInConstraint) { - error(typeParameter, ts.Diagnostics.Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list); - } - } - ts.forEachChild(n, check); - } - if (typeParameter.constraint) { - typeParameterSymbol = getSymbolOfNode(typeParameter); - check(typeParameter.constraint); - } - } // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node, symbol) { var type = getDeclaredTypeOfSymbol(symbol); @@ -17702,13 +18103,6 @@ var ts; } // Get type from reference to named type that cannot be generic (enum or type parameter) function getTypeFromNonGenericTypeReference(node, symbol) { - if (symbol.flags & 262144 /* 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, ts.Diagnostics.Type_0_is_not_generic, symbolToString(symbol)); return unknownType; @@ -17751,9 +18145,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: return declaration; } } @@ -17785,10 +18179,6 @@ var ts; if (arity === void 0) { arity = 0; } return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } - function tryGetGlobalType(name, arity) { - if (arity === void 0) { arity = 0; } - return getTypeOfGlobalSymbol(getGlobalSymbol(name, 793056 /* Type */, /*diagnostic*/ undefined), arity); - } /** * Returns a type that is inside a namespace at the global scope, e.g. * getExportedTypeFromNamespace('JSX', 'Element') returns the JSX.Element type @@ -17908,7 +18298,7 @@ var ts; // a named type that circularly references itself. function getUnionType(types, noSubtypeReduction) { if (types.length === 0) { - return emptyObjectType; + return emptyUnionType; } var typeSet = []; addTypesToSet(typeSet, types, 16384 /* Union */); @@ -17980,8 +18370,7 @@ var ts; } return links.resolvedType; } - function getStringLiteralType(node) { - var text = node.text; + function getStringLiteralTypeForText(text) { if (ts.hasProperty(stringLiteralTypes, text)) { return stringLiteralTypes[text]; } @@ -17989,17 +18378,17 @@ var ts; type.text = text; return type; } - function getTypeFromStringLiteral(node) { + function getTypeFromStringLiteralTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getStringLiteralType(node); + links.resolvedType = getStringLiteralTypeForText(node.text); } return links.resolvedType; } function getThisType(node) { var container = ts.getThisContainer(node, /*includeArrowFunctions*/ false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 215 /* InterfaceDeclaration */)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 217 /* InterfaceDeclaration */)) { if (!(container.flags & 64 /* Static */) && (container.kind !== 144 /* Constructor */ || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; @@ -18015,6 +18404,22 @@ var ts; } return links.resolvedType; } + function getPredicateType(node) { + return createPredicateType(getSymbolOfNode(node), createTypePredicateFromTypePredicateNode(node)); + } + function createPredicateType(symbol, predicate) { + var type = createType(8 /* Boolean */ | 134217728 /* PredicateType */); + type.symbol = symbol; + type.predicate = predicate; + return type; + } + function getTypeFromPredicateTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getPredicateType(node); + } + return links.resolvedType; + } function getTypeFromTypeNode(node) { switch (node.kind) { case 117 /* AnyKeyword */: @@ -18029,15 +18434,15 @@ var ts; return esSymbolType; case 103 /* VoidKeyword */: return voidType; - case 97 /* ThisKeyword */: + case 161 /* ThisType */: return getTypeFromThisTypeNode(node); - case 9 /* StringLiteral */: - return getTypeFromStringLiteral(node); + case 162 /* StringLiteralType */: + return getTypeFromStringLiteralTypeNode(node); case 151 /* TypeReference */: return getTypeFromTypeReference(node); case 150 /* TypePredicate */: - return booleanType; - case 188 /* ExpressionWithTypeArguments */: + return getTypeFromPredicateTypeNode(node); + case 190 /* ExpressionWithTypeArguments */: return getTypeFromTypeReference(node); case 154 /* TypeQuery */: return getTypeFromTypeQueryNode(node); @@ -18117,18 +18522,22 @@ var ts; return t; }; } - function createInferenceMapper(context) { - var mapper = function (t) { - for (var i = 0; i < context.typeParameters.length; i++) { - if (t === context.typeParameters[i]) { - context.inferences[i].isFixed = true; - return getInferredType(context, i); + function getInferenceMapper(context) { + if (!context.mapper) { + var mapper = function (t) { + var typeParameters = context.typeParameters; + for (var i = 0; i < typeParameters.length; i++) { + if (t === 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) { return type; @@ -18136,33 +18545,42 @@ var ts; function combineTypeMappers(mapper1, mapper2) { return function (t) { return instantiateType(mapper1(t), mapper2); }; } - function instantiateTypeParameter(typeParameter, mapper) { + function cloneTypeParameter(typeParameter) { var result = createType(512 /* TypeParameter */); result.symbol = typeParameter.symbol; - if (typeParameter.constraint) { - result.constraint = instantiateType(typeParameter.constraint, mapper); + result.target = typeParameter; + return result; + } + function cloneTypePredicate(predicate, mapper) { + if (ts.isIdentifierTypePredicate(predicate)) { + return { + kind: 1 /* Identifier */, + parameterName: predicate.parameterName, + parameterIndex: predicate.parameterIndex, + type: instantiateType(predicate.type, mapper) + }; } else { - result.target = typeParameter; - result.mapper = mapper; + return { + kind: 0 /* This */, + type: instantiateType(predicate.type, mapper) + }; } - return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { var freshTypeParameters; - var freshTypePredicate; if (signature.typeParameters && !eraseTypeParameters) { - freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + // First create a fresh set of type parameters, then include a mapping from the old to the + // new type parameters in the mapper function. Finally store this mapper in the new type + // parameters such that we can use it when instantiating constraints. + freshTypeParameters = ts.map(signature.typeParameters, cloneTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); + for (var _i = 0, freshTypeParameters_1 = freshTypeParameters; _i < freshTypeParameters_1.length; _i++) { + var tp = freshTypeParameters_1[_i]; + tp.mapper = mapper; + } } - if (signature.typePredicate) { - freshTypePredicate = { - parameterName: signature.typePredicate.parameterName, - parameterIndex: signature.typePredicate.parameterIndex, - type: instantiateType(signature.typePredicate.type, mapper) - }; - } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -18226,6 +18644,10 @@ var ts; if (type.flags & 32768 /* Intersection */) { return getIntersectionType(instantiateList(type.types, mapper, instantiateType)); } + if (type.flags & 134217728 /* PredicateType */) { + var predicate = type.predicate; + return createPredicateType(type.symbol, cloneTypePredicate(predicate, mapper)); + } } return type; } @@ -18234,25 +18656,25 @@ var ts; function isContextSensitive(node) { ts.Debug.assert(node.kind !== 143 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return isContextSensitiveFunctionLikeDeclaration(node); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return ts.forEach(node.properties, isContextSensitive); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return ts.forEach(node.elements, isContextSensitive); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return node.operatorToken.kind === 52 /* BarBarToken */ && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: return isContextSensitive(node.initializer); case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: return isContextSensitiveFunctionLikeDeclaration(node); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return isContextSensitive(node.expression); } return false; @@ -18278,7 +18700,7 @@ var ts; function isTypeIdenticalTo(source, target) { return checkTypeRelatedTo(source, target, identityRelation, /*errorNode*/ undefined); } - function compareTypes(source, target) { + function compareTypesIdentical(source, target) { return checkTypeRelatedTo(source, target, identityRelation, /*errorNode*/ undefined) ? -1 /* True */ : 0 /* False */; } function isTypeSubtypeOf(source, target) { @@ -18293,10 +18715,84 @@ var ts; function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } - function isSignatureAssignableTo(source, target) { - var sourceType = getOrCreateTypeFromSignature(source); - var targetType = getOrCreateTypeFromSignature(target); - return checkTypeRelatedTo(sourceType, targetType, assignableRelation, /*errorNode*/ undefined); + /** + * See signatureRelatedTo, compareSignaturesIdentical + */ + function isSignatureAssignableTo(source, target, ignoreReturnTypes) { + // TODO (drosen): De-duplicate code between related functions. + if (source === target) { + return true; + } + if (!target.hasRestParameter && source.minArgumentCount > target.parameters.length) { + return 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); + var sourceMax = getNumNonRestParameters(source); + var targetMax = getNumNonRestParameters(target); + var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); + for (var i = 0; i < checkCount; i++) { + var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var related = isTypeAssignableTo(t, s) || isTypeAssignableTo(s, t); + if (!related) { + return false; + } + } + if (!ignoreReturnTypes) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return true; + } + var sourceReturnType = getReturnTypeOfSignature(source); + // The following block preserves behavior forbidding boolean returning functions from being assignable to type guard returning functions + if (targetReturnType.flags & 134217728 /* PredicateType */ && targetReturnType.predicate.kind === 1 /* Identifier */) { + if (!(sourceReturnType.flags & 134217728 /* PredicateType */)) { + return false; + } + } + return isTypeAssignableTo(sourceReturnType, targetReturnType); + } + return true; + } + function isImplementationCompatibleWithOverload(implementation, overload) { + var erasedSource = getErasedSignature(implementation); + var erasedTarget = getErasedSignature(overload); + // First see if the return types are compatible in either direction. + var sourceReturnType = getReturnTypeOfSignature(erasedSource); + var targetReturnType = getReturnTypeOfSignature(erasedTarget); + if (targetReturnType === voidType + || checkTypeRelatedTo(targetReturnType, sourceReturnType, assignableRelation, /*errorNode*/ undefined) + || checkTypeRelatedTo(sourceReturnType, targetReturnType, assignableRelation, /*errorNode*/ undefined)) { + return isSignatureAssignableTo(erasedSource, erasedTarget, /*ignoreReturnTypes*/ true); + } + return false; + } + function getNumNonRestParameters(signature) { + var numParams = signature.parameters.length; + return signature.hasRestParameter ? + numParams - 1 : + numParams; + } + function getNumParametersToCheckForSignatureRelatability(source, sourceNonRestParamCount, target, targetNonRestParamCount) { + if (source.hasRestParameter === target.hasRestParameter) { + if (source.hasRestParameter) { + // If both have rest parameters, get the max and add 1 to + // compensate for the rest parameter. + return Math.max(sourceNonRestParamCount, targetNonRestParamCount) + 1; + } + else { + return Math.min(sourceNonRestParamCount, targetNonRestParamCount); + } + } + else { + // Return the count for whichever signature doesn't have rest parameters. + return source.hasRestParameter ? + targetNonRestParamCount : + sourceNonRestParamCount; + } } /** * Checks if 'source' is related to 'target' (e.g.: is a assignable to). @@ -18370,6 +18866,11 @@ var ts; return -1 /* True */; if (source.flags & 128 /* Enum */ && target === numberType) return -1 /* True */; + if (source.flags & 128 /* Enum */ && target.flags & 128 /* Enum */) { + if (result = enumRelatedTo(source, target)) { + return result; + } + } if (source.flags & 256 /* StringLiteral */ && target === stringType) return -1 /* True */; if (relation === assignableRelation) { @@ -18378,6 +18879,36 @@ var ts; if (source === numberType && target.flags & 128 /* Enum */) return -1 /* True */; } + if (source.flags & 8 /* Boolean */ && target.flags & 8 /* Boolean */) { + if (source.flags & 134217728 /* PredicateType */ && target.flags & 134217728 /* PredicateType */) { + var sourcePredicate = source; + var targetPredicate = target; + if (sourcePredicate.predicate.kind !== targetPredicate.predicate.kind) { + if (reportErrors) { + reportError(ts.Diagnostics.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0 /* False */; + } + if (sourcePredicate.predicate.kind === 1 /* Identifier */) { + var sourceIdentifierPredicate = sourcePredicate.predicate; + var targetIdentifierPredicate = targetPredicate.predicate; + if (sourceIdentifierPredicate.parameterIndex !== targetIdentifierPredicate.parameterIndex) { + if (reportErrors) { + reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceIdentifierPredicate.parameterName, targetIdentifierPredicate.parameterName); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0 /* False */; + } + } + var related = isRelatedTo(sourcePredicate.predicate.type, targetPredicate.predicate.type, reportErrors, headMessage); + if (related === 0 /* False */ && reportErrors) { + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return related; + } + return -1 /* True */; + } if (source.flags & 1048576 /* FreshObjectLiteral */) { if (hasExcessProperties(source, target, reportErrors)) { if (reportErrors) { @@ -18471,9 +19002,6 @@ var ts; } return objectTypeRelatedTo(source, source, target, /*reportErrors*/ false); } - if (source.flags & 512 /* TypeParameter */ && target.flags & 512 /* TypeParameter */) { - return typeParameterIdenticalTo(source, target); - } if (source.flags & 16384 /* Union */ && target.flags & 16384 /* Union */ || source.flags & 32768 /* Intersection */ && target.flags & 32768 /* Intersection */) { if (result = eachTypeRelatedToSomeType(source, target)) { @@ -18529,7 +19057,7 @@ var ts; var sourceTypes = source.types; for (var _i = 0, sourceTypes_1 = sourceTypes; _i < sourceTypes_1.length; _i++) { var sourceType = sourceTypes_1[_i]; - var related = typeRelatedToSomeType(sourceType, target, false); + var related = typeRelatedToSomeType(sourceType, target, /*reportErrors*/ false); if (!related) { return 0 /* False */; } @@ -18589,8 +19117,9 @@ var ts; if (sources.length !== targets.length && relation === identityRelation) { return 0 /* False */; } + var length = sources.length <= targets.length ? sources.length : targets.length; var result = -1 /* True */; - for (var i = 0; i < targets.length; i++) { + for (var i = 0; i < length; i++) { var related = isRelatedTo(sources[i], targets[i], reportErrors); if (!related) { return 0 /* False */; @@ -18599,31 +19128,24 @@ var ts; } return result; } - function typeParameterIdenticalTo(source, target) { - // covers case when both type parameters does not have constraint (both equal to noConstraintType) - if (source.constraint === target.constraint) { - return -1 /* True */; - } - if (source.constraint === noConstraintType || target.constraint === noConstraintType) { - return 0 /* 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, originalSource, target, reportErrors) { + function objectTypeRelatedTo(source, originalSource, target, reportErrors) { if (overflow) { return 0 /* False */; } - var id = relation !== identityRelation || apparentSource.id < target.id ? apparentSource.id + "," + target.id : target.id + "," + apparentSource.id; + var id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; var related = relation[id]; if (related !== undefined) { - // If we computed this relation already and it was failed and reported, or if we're not being asked to elaborate - // errors, we can use the cached value. Otherwise, recompute the relation - if (!elaborateErrors || (related === 3 /* FailedAndReported */)) { + if (elaborateErrors && related === 2 /* Failed */) { + // We are elaborating errors and the cached result is an unreported failure. Record the result as a reported + // failure and continue computing the relation such that errors get reported. + relation[id] = 3 /* FailedAndReported */; + } + else { return related === 1 /* Succeeded */ ? -1 /* True */ : 0 /* False */; } } @@ -18645,13 +19167,13 @@ var ts; maybeStack = []; expandingFlags = 0; } - sourceStack[depth] = apparentSource; + sourceStack[depth] = source; targetStack[depth] = target; maybeStack[depth] = {}; maybeStack[depth][id] = 1 /* Succeeded */; depth++; var saveExpandingFlags = expandingFlags; - if (!(expandingFlags & 1) && isDeeplyNestedGeneric(apparentSource, sourceStack, depth)) + if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack, depth)) expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack, depth)) expandingFlags |= 2; @@ -18660,15 +19182,15 @@ var ts; result = 1 /* Maybe */; } else { - result = propertiesRelatedTo(apparentSource, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 0 /* Call */, reportErrors); + result &= signaturesRelatedTo(source, target, 0 /* Call */, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 1 /* Construct */, reportErrors); + result &= signaturesRelatedTo(source, target, 1 /* 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); } } } @@ -18800,75 +19322,51 @@ var ts; } var sourceSignatures = getSignaturesOfType(source, kind); var targetSignatures = getSignaturesOfType(target, kind); + if (kind === 1 /* Construct */ && sourceSignatures.length && targetSignatures.length && + isAbstractConstructorType(source) && !isAbstractConstructorType(target)) { + // An abstract constructor type is not assignable to a non-abstract constructor type + // as it would otherwise be possible to new an abstract class. Note that the assignablity + // check we perform for an extends clause excludes construct signatures from the target, + // so this check never proceeds. + if (reportErrors) { + reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); + } + return 0 /* False */; + } var result = -1 /* True */; var saveErrorInfo = errorInfo; - if (kind === 1 /* Construct */) { - // Only want to compare the construct signatures for abstractness guarantees. - // Because the "abstractness" of a class is the same across all construct signatures - // (internally we are checking the corresponding declaration), it is enough to perform - // the check and report an error once over all pairs of source and target construct signatures. - // - // sourceSig and targetSig are (possibly) undefined. - // - // Note that in an extends-clause, targetSignatures is stripped, so the check never proceeds. - var sourceSig = sourceSignatures[0]; - var targetSig = targetSignatures[0]; - result &= abstractSignatureRelatedTo(source, sourceSig, target, targetSig); - if (result !== -1 /* True */) { - return result; - } - } outer: for (var _i = 0, targetSignatures_1 = targetSignatures; _i < targetSignatures_1.length; _i++) { var t = targetSignatures_1[_i]; if (!t.hasStringLiterals || target.flags & 262144 /* FromSignature */) { - var localErrors = reportErrors; - var checkedAbstractAssignability = false; + // Only elaborate errors from the first failure + var shouldElaborateErrors = reportErrors; for (var _a = 0, sourceSignatures_1 = sourceSignatures; _a < sourceSignatures_1.length; _a++) { var s = sourceSignatures_1[_a]; if (!s.hasStringLiterals || source.flags & 262144 /* FromSignature */) { - var related = signatureRelatedTo(s, t, localErrors); + var related = signatureRelatedTo(s, t, shouldElaborateErrors); if (related) { result &= related; errorInfo = saveErrorInfo; continue outer; } - // Only report errors from the first failure - localErrors = false; + 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(ts.Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind)); + } return 0 /* False */; } } return result; - function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { - if (sourceSig && targetSig) { - var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); - var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); - if (!sourceDecl) { - // If the source object isn't itself a class declaration, it can be freely assigned, regardless - // of whether the constructed object is abstract or not. - return -1 /* True */; - } - var sourceErasedSignature = getErasedSignature(sourceSig); - var targetErasedSignature = getErasedSignature(targetSig); - var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); - var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); - var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 128 /* Abstract */; - var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 128 /* Abstract */; - if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { - // if target isn't a class-declaration type, then it can be new'd, so we forbid the assignment. - if (reportErrors) { - reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); - } - return 0 /* False */; - } - } - return -1 /* True */; - } } + /** + * See signatureAssignableTo, signatureAssignableTo + */ function signatureRelatedTo(source, target, reportErrors) { + // TODO (drosen): De-duplicate code between related functions. if (source === target) { return -1 /* True */; } @@ -18905,7 +19403,7 @@ var ts; var saveErrorInfo = errorInfo; var related = isRelatedTo(s, t, reportErrors); if (!related) { - related = isRelatedTo(t, s, false); + related = isRelatedTo(t, s, /*reportErrors*/ false); if (!related) { if (reportErrors) { reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name); @@ -18916,37 +19414,20 @@ var ts; } result &= related; } - if (source.typePredicate && target.typePredicate) { - var hasDifferentParameterIndex = source.typePredicate.parameterIndex !== target.typePredicate.parameterIndex; - var hasDifferentTypes; - if (hasDifferentParameterIndex || - (hasDifferentTypes = !isTypeIdenticalTo(source.typePredicate.type, target.typePredicate.type))) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return result; + } + var sourceReturnType = getReturnTypeOfSignature(source); + // The following block preserves behavior forbidding boolean returning functions from being assignable to type guard returning functions + if (targetReturnType.flags & 134217728 /* PredicateType */ && targetReturnType.predicate.kind === 1 /* Identifier */) { + if (!(sourceReturnType.flags & 134217728 /* PredicateType */)) { if (reportErrors) { - var sourceParamText = source.typePredicate.parameterName; - var targetParamText = target.typePredicate.parameterName; - var sourceTypeText = typeToString(source.typePredicate.type); - var targetTypeText = typeToString(target.typePredicate.type); - if (hasDifferentParameterIndex) { - reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceParamText, targetParamText); - } - else if (hasDifferentTypes) { - reportError(ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceTypeText, targetTypeText); - } - reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, sourceParamText + " is " + sourceTypeText, targetParamText + " is " + targetTypeText); + reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); } return 0 /* False */; } } - else if (!source.typePredicate && target.typePredicate) { - if (reportErrors) { - reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); - } - return 0 /* False */; - } - var targetReturnType = getReturnTypeOfSignature(target); - if (targetReturnType === voidType) - return result; - var sourceReturnType = getReturnTypeOfSignature(source); return result & isRelatedTo(sourceReturnType, targetReturnType, reportErrors); } function signaturesIdenticalTo(source, target, kind) { @@ -18956,8 +19437,8 @@ var ts; return 0 /* False */; } var result = -1 /* True */; - for (var i = 0, len = sourceSignatures.length; i < len; ++i) { - var related = compareSignatures(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); + for (var i = 0, len = sourceSignatures.length; i < len; i++) { + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); if (!related) { return 0 /* False */; } @@ -19016,7 +19497,7 @@ var ts; var related; if (sourceStringType && sourceNumberType) { // If we know for sure we're testing both string and numeric index types then only report errors from the second one - related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType, targetType, /*reportErrors*/ false) || isRelatedTo(sourceNumberType, targetType, reportErrors); } else { related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); @@ -19042,6 +19523,38 @@ var ts; } return 0 /* False */; } + function enumRelatedTo(source, target) { + if (source.symbol.name !== target.symbol.name || + source.symbol.flags & 128 /* ConstEnum */ || + target.symbol.flags & 128 /* ConstEnum */) { + return 0 /* False */; + } + var targetEnumType = getTypeOfSymbol(target.symbol); + for (var _i = 0, _a = getPropertiesOfType(getTypeOfSymbol(source.symbol)); _i < _a.length; _i++) { + var property = _a[_i]; + if (property.flags & 8 /* EnumMember */) { + var targetProperty = getPropertyOfType(targetEnumType, property.name); + if (!targetProperty || !(targetProperty.flags & 8 /* EnumMember */)) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */)); + return 0 /* False */; + } + } + } + return -1 /* True */; + } + } + // Return true if the given type is the constructor type for an abstract class + function isAbstractConstructorType(type) { + if (type.flags & 65536 /* Anonymous */) { + var symbol = type.symbol; + if (symbol && symbol.flags & 32 /* Class */) { + var declaration = getClassLikeDeclarationOfSymbol(symbol); + if (declaration && declaration.flags & 128 /* Abstract */) { + return true; + } + } + } + return false; } // Return true if the given type is part of a deeply nested chain of generic instantiations. We consider this to be the case // when structural type comparisons have been started for 10 or more instantiations of the same generic type. It is possible, @@ -19065,7 +19578,7 @@ var ts; return false; } function isPropertyIdenticalTo(sourceProp, targetProp) { - return compareProperties(sourceProp, targetProp, compareTypes) !== 0 /* False */; + return compareProperties(sourceProp, targetProp, compareTypesIdentical) !== 0 /* False */; } function compareProperties(sourceProp, targetProp, compareTypes) { // Two members are considered identical when @@ -19108,33 +19621,30 @@ var ts; } return false; } - function compareSignatures(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + /** + * See signatureRelatedTo, compareSignaturesIdentical + */ + function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + // TODO (drosen): De-duplicate code between related functions. if (source === target) { return -1 /* True */; } if (!(isMatchingSignature(source, target, partialMatch))) { return 0 /* False */; } - var result = -1 /* True */; - if (source.typeParameters && target.typeParameters) { - if (source.typeParameters.length !== target.typeParameters.length) { - return 0 /* False */; - } - for (var i = 0, len = source.typeParameters.length; i < len; ++i) { - var related = compareTypes(source.typeParameters[i], target.typeParameters[i]); - if (!related) { - return 0 /* 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 0 /* 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); + var result = -1 /* True */; var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); @@ -19262,10 +19772,13 @@ var ts; return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexType, numberIndexType); } function getWidenedType(type) { - if (type.flags & 6291456 /* RequiresWidening */) { + if (type.flags & 140509184 /* RequiresWidening */) { if (type.flags & (32 /* Undefined */ | 64 /* Null */)) { return anyType; } + if (type.flags & 134217728 /* PredicateType */) { + return booleanType; + } if (type.flags & 524288 /* ObjectLiteral */) { return getWidenedTypeOfObjectLiteral(type); } @@ -19340,13 +19853,13 @@ var ts; ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -19393,13 +19906,7 @@ var ts; } } function createInferenceContext(typeParameters, inferUnionTypes) { - var inferences = []; - for (var _i = 0, typeParameters_1 = typeParameters; _i < typeParameters_1.length; _i++) { - var unused = typeParameters_1[_i]; - inferences.push({ - primary: undefined, secondary: undefined, isFixed: false - }); - } + var inferences = ts.map(typeParameters, createTypeInferencesObject); return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, @@ -19407,6 +19914,13 @@ var ts; inferredTypes: new Array(typeParameters.length) }; } + function createTypeInferencesObject() { + return { + primary: undefined, + secondary: undefined, + isFixed: false + }; + } function inferTypes(context, source, target) { var sourceStack; var targetStack; @@ -19422,6 +19936,29 @@ var ts; return false; } function inferFromTypes(source, target) { + if (source.flags & 16384 /* Union */ && target.flags & 16384 /* Union */ || + source.flags & 32768 /* Intersection */ && target.flags & 32768 /* Intersection */) { + // Source and target are both unions or both intersections. First, find each + // target constituent type that has an identically matching source constituent + // type, and for each such target constituent type infer from the type to itself. + // When inferring from a type to itself we effectively find all type parameter + // occurrences within that type and infer themselves as their type arguments. + var matchingTypes; + for (var _i = 0, _a = target.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (typeIdenticalToSomeType(t, source.types)) { + (matchingTypes || (matchingTypes = [])).push(t); + inferFromTypes(t, t); + } + } + // Next, to improve the quality of inferences, reduce the source and target types by + // removing the identically matched constituents. For example, when inferring from + // 'string | string[]' to 'string | T' we reduce the types to 'string[]' and 'T'. + if (matchingTypes) { + source = removeTypesFromUnionOrIntersection(source, matchingTypes); + target = removeTypesFromUnionOrIntersection(target, matchingTypes); + } + } if (target.flags & 512 /* TypeParameter */) { // If target is a type parameter, make an inference, unless the source type contains // the anyFunctionType (the wildcard type that's used to avoid contextually typing functions). @@ -19463,6 +20000,11 @@ var ts; inferFromTypes(sourceTypes[i], targetTypes[i]); } } + else if (source.flags & 134217728 /* PredicateType */ && target.flags & 134217728 /* PredicateType */) { + if (source.predicate.kind === target.predicate.kind) { + inferFromTypes(source.predicate.type, target.predicate.type); + } + } else if (source.flags & 8192 /* Tuple */ && target.flags & 8192 /* Tuple */ && source.elementTypes.length === target.elementTypes.length) { // If source and target are tuples of the same size, infer from element types var sourceTypes = source.elementTypes; @@ -19476,8 +20018,8 @@ var ts; var typeParameterCount = 0; var typeParameter; // First infer to each type in union or intersection that isn't a type parameter - for (var _i = 0, targetTypes_2 = targetTypes; _i < targetTypes_2.length; _i++) { - var t = targetTypes_2[_i]; + for (var _b = 0, targetTypes_2 = targetTypes; _b < targetTypes_2.length; _b++) { + var t = targetTypes_2[_b]; if (t.flags & 512 /* TypeParameter */ && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -19499,16 +20041,18 @@ var ts; else if (source.flags & 49152 /* UnionOrIntersection */) { // Source is a union or intersection type, infer from each consituent type var sourceTypes = source.types; - for (var _a = 0, sourceTypes_3 = sourceTypes; _a < sourceTypes_3.length; _a++) { - var sourceType = sourceTypes_3[_a]; + for (var _c = 0, sourceTypes_3 = sourceTypes; _c < sourceTypes_3.length; _c++) { + var sourceType = sourceTypes_3[_c]; inferFromTypes(sourceType, target); } } else { source = getApparentType(source); - if (source.flags & 80896 /* ObjectType */ && (target.flags & (4096 /* Reference */ | 8192 /* Tuple */) || - (target.flags & 65536 /* Anonymous */) && target.symbol && target.symbol.flags & (8192 /* Method */ | 2048 /* TypeLiteral */ | 32 /* Class */))) { - // If source is an object type, and target is a type reference, a tuple type, the type of a method, or a type literal, infer from members + if (source.flags & 80896 /* ObjectType */ && (target.flags & 4096 /* Reference */ && target.typeArguments || + target.flags & 8192 /* Tuple */ || + target.flags & 65536 /* Anonymous */ && target.symbol && target.symbol.flags & (8192 /* Method */ | 2048 /* TypeLiteral */ | 32 /* Class */))) { + // If source is an object type, and target is a type reference with type arguments, a tuple type, + // the type of a method, or a type literal, infer from members if (isInProcess(source, target)) { return; } @@ -19554,17 +20098,7 @@ var ts; } function inferFromSignature(source, target) { 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); - } - } - else { - inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); - } + inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); } function inferFromIndexTypes(source, target, sourceKind, targetKind) { var targetIndexType = getIndexTypeOfType(target, targetKind); @@ -19576,6 +20110,29 @@ var ts; } } } + function typeIdenticalToSomeType(type, types) { + for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { + var t = types_7[_i]; + if (isTypeIdenticalTo(t, type)) { + return true; + } + } + return false; + } + /** + * Return a new union or intersection type computed by removing a given set of types + * from a given union or intersection type. + */ + function removeTypesFromUnionOrIntersection(type, typesToRemove) { + var reducedTypes = []; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!typeIdenticalToSomeType(t, typesToRemove)) { + reducedTypes.push(t); + } + } + return type.flags & 16384 /* Union */ ? getUnionType(reducedTypes, /*noSubtypeReduction*/ true) : getIntersectionType(reducedTypes); + } function getInferenceCandidates(context, index) { var inferences = context.inferences[index]; return inferences.primary || inferences.secondary || emptyArray; @@ -19599,10 +20156,16 @@ var ts; inferredType = emptyObjectType; inferenceSucceeded = true; } + context.inferredTypes[index] = inferredType; // Only do the constraint check if inference succeeded (to prevent cascading errors) if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); - inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; + if (constraint) { + var instantiatedConstraint = instantiateType(constraint, getInferenceMapper(context)); + if (!isTypeAssignableTo(inferredType, getTypeWithThisArgument(instantiatedConstraint, inferredType))) { + context.inferredTypes[index] = inferredType = instantiatedConstraint; + } + } } 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). @@ -19610,7 +20173,6 @@ var 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; } @@ -19620,9 +20182,6 @@ var ts; } return context.inferredTypes; } - function hasAncestor(node, kind) { - return ts.getAncestor(node, kind) !== undefined; - } // EXPRESSION TYPE CHECKING function getResolvedSymbol(node) { var links = getNodeLinks(node); @@ -19649,26 +20208,6 @@ var ts; } ts.Debug.fail("should not get here"); } - // For a union type, remove all constituent types that are of the given type kind (when isOfTypeKind is true) - // or not of the given type kind (when isOfTypeKind is false) - function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { - if (type.flags & 16384 /* Union */) { - var types = type.types; - if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { - // Above we checked if we have anything to remove, now use the opposite test to do the removal - var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { - return narrowedType; - } - } - } - else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { - // Use getUnionType(emptyArray) instead of emptyObjectType in case the way empty union types - // are represented ever changes. - return getUnionType(emptyArray); - } - return type; - } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } @@ -19687,10 +20226,7 @@ var ts; return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { if (node.operatorToken.kind >= 56 /* FirstAssignment */ && node.operatorToken.kind <= 68 /* LastAssignment */) { - var n = node.left; - while (n.kind === 172 /* ParenthesizedExpression */) { - n = n.expression; - } + var n = skipParenthesizedNodes(node.left); if (n.kind === 69 /* Identifier */ && getResolvedSymbol(n) === symbol) { return true; } @@ -19705,55 +20241,55 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return isAssignedInBinaryExpression(node); - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: return isAssignedInVariableDeclaration(node); - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: - case 164 /* ArrayLiteralExpression */: - case 165 /* ObjectLiteralExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: - case 172 /* ParenthesizedExpression */: - case 179 /* PrefixUnaryExpression */: - case 175 /* DeleteExpression */: - case 178 /* AwaitExpression */: - case 176 /* TypeOfExpression */: - case 177 /* VoidExpression */: - case 180 /* PostfixUnaryExpression */: - case 184 /* YieldExpression */: - case 182 /* ConditionalExpression */: - case 185 /* SpreadElementExpression */: - case 192 /* Block */: - case 193 /* VariableStatement */: - case 195 /* ExpressionStatement */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 204 /* ReturnStatement */: - case 205 /* WithStatement */: - case 206 /* SwitchStatement */: - case 241 /* CaseClause */: - case 242 /* DefaultClause */: - case 207 /* LabeledStatement */: - case 208 /* ThrowStatement */: - case 209 /* TryStatement */: - case 244 /* CatchClause */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 238 /* JsxAttribute */: - case 239 /* JsxSpreadAttribute */: - case 235 /* JsxOpeningElement */: - case 240 /* JsxExpression */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: + case 166 /* ArrayLiteralExpression */: + case 167 /* ObjectLiteralExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: + case 174 /* ParenthesizedExpression */: + case 181 /* PrefixUnaryExpression */: + case 177 /* DeleteExpression */: + case 180 /* AwaitExpression */: + case 178 /* TypeOfExpression */: + case 179 /* VoidExpression */: + case 182 /* PostfixUnaryExpression */: + case 186 /* YieldExpression */: + case 184 /* ConditionalExpression */: + case 187 /* SpreadElementExpression */: + case 194 /* Block */: + case 195 /* VariableStatement */: + case 197 /* ExpressionStatement */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 206 /* ReturnStatement */: + case 207 /* WithStatement */: + case 208 /* SwitchStatement */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: + case 209 /* LabeledStatement */: + case 210 /* ThrowStatement */: + case 211 /* TryStatement */: + case 246 /* CatchClause */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: + case 240 /* JsxAttribute */: + case 241 /* JsxSpreadAttribute */: + case 237 /* JsxOpeningElement */: + case 242 /* JsxExpression */: return ts.forEachChild(node, isAssignedIn); } return false; @@ -19765,59 +20301,73 @@ var ts; // Only narrow when symbol is variable of type any or an object, union, or type parameter type if (node && symbol.flags & 3 /* Variable */) { if (isTypeAny(type) || type.flags & (80896 /* ObjectType */ | 16384 /* Union */ | 512 /* TypeParameter */)) { + var declaration = ts.getDeclarationOfKind(symbol, 213 /* VariableDeclaration */); + var top_1 = declaration && getDeclarationContainer(declaration); + var originalType = type; + var nodeStack = []; loop: while (node.parent) { var child = node; node = node.parent; - var narrowedType = type; switch (node.kind) { - case 196 /* IfStatement */: - // In a branch of an if statement, narrow based on controlling expression - if (child !== node.expression) { - narrowedType = narrowType(type, node.expression, /*assumeTrue*/ child === node.thenStatement); - } + case 198 /* IfStatement */: + case 184 /* ConditionalExpression */: + case 183 /* BinaryExpression */: + nodeStack.push({ node: node, child: child }); break; - case 182 /* ConditionalExpression */: - // In a branch of a conditional expression, narrow based on controlling condition - if (child !== node.condition) { - narrowedType = narrowType(type, node.condition, /*assumeTrue*/ child === node.whenTrue); - } - break; - case 181 /* BinaryExpression */: - // In the right operand of an && or ||, narrow based on left operand - if (child === node.right) { - if (node.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { - narrowedType = narrowType(type, node.left, /*assumeTrue*/ true); - } - else if (node.operatorToken.kind === 52 /* BarBarToken */) { - narrowedType = narrowType(type, node.left, /*assumeTrue*/ false); - } - } - break; - case 248 /* SourceFile */: - case 218 /* ModuleDeclaration */: - case 213 /* FunctionDeclaration */: - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - case 144 /* Constructor */: - // Stop at the first containing function or module declaration + case 250 /* SourceFile */: + case 220 /* ModuleDeclaration */: + // Stop at the first containing file or module declaration break loop; } - // Use narrowed type if construct contains no assignments to variable - if (narrowedType !== type) { - if (isVariableAssignedWithin(symbol, node)) { - break; - } - type = narrowedType; + if (node === top_1) { + break; } } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 198 /* IfStatement */: + // In a branch of an if statement, narrow based on controlling expression + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, /*assumeTrue*/ child === node_1.thenStatement); + } + break; + case 184 /* ConditionalExpression */: + // In a branch of a conditional expression, narrow based on controlling condition + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, /*assumeTrue*/ child === node_1.whenTrue); + } + break; + case 183 /* BinaryExpression */: + // In the right operand of an && or ||, narrow based on left operand + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ true); + } + else if (node_1.operatorToken.kind === 52 /* BarBarToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + // Use original type if construct contains assignments to variable + if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { + type = originalType; + } + } + // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type + if (type === emptyUnionType) { + type = originalType; + } } } return type; function narrowTypeByEquality(type, expr, assumeTrue) { // Check that we have 'typeof ' on the left and string literal on the right - if (expr.left.kind !== 176 /* TypeOfExpression */ || expr.right.kind !== 9 /* StringLiteral */) { + if (expr.left.kind !== 178 /* TypeOfExpression */ || expr.right.kind !== 9 /* StringLiteral */) { return type; } var left = expr.left; @@ -19825,31 +20375,34 @@ var ts; if (left.expression.kind !== 69 /* Identifier */ || getResolvedSymbol(left.expression) !== symbol) { return type; } - var typeInfo = primitiveTypeInfo[right.text]; if (expr.operatorToken.kind === 33 /* ExclamationEqualsEqualsToken */) { assumeTrue = !assumeTrue; } - if (assumeTrue) { - // Assumed result is true. If check was not for a primitive type, remove all primitive types - if (!typeInfo) { - return removeTypesFromUnionType(type, /*typeKind*/ 258 /* StringLike */ | 132 /* NumberLike */ | 8 /* Boolean */ | 16777216 /* ESSymbol */, - /*isOfTypeKind*/ true, /*allowEmptyUnionResult*/ false); - } - // Check was for a primitive type, return that primitive type if it is a subtype - if (isTypeSubtypeOf(typeInfo.type, type)) { - return typeInfo.type; - } - // Otherwise, remove all types that aren't of the primitive type kind. This can happen when the type is - // union of enum types and other types. - return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ false, /*allowEmptyUnionResult*/ false); + var typeInfo = primitiveTypeInfo[right.text]; + // Don't narrow `undefined` + if (typeInfo && typeInfo.type === undefinedType) { + return type; + } + // If the type to be narrowed is any and we're checking a primitive with assumeTrue=true, return the primitive + if (!!(type.flags & 1 /* Any */) && typeInfo && assumeTrue) { + return typeInfo.type; + } + var flags; + if (typeInfo) { + flags = typeInfo.flags; } else { - // Assumed result is false. If check was for a primitive type, remove that primitive type - if (typeInfo) { - return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ true, /*allowEmptyUnionResult*/ false); - } - // Otherwise we don't have enough information to do anything. - return type; + assumeTrue = !assumeTrue; + flags = 132 /* NumberLike */ | 258 /* StringLike */ | 16777216 /* ESSymbol */ | 8 /* Boolean */; + } + // At this point we can bail if it's not a union + if (!(type.flags & 16384 /* Union */)) { + // If the active non-union type would be removed from a union by this type guard, return an empty union + return filterUnion(type) ? type : emptyUnionType; + } + return getUnionType(ts.filter(type.types, filterUnion), /*noSubtypeReduction*/ true); + function filterUnion(type) { + return assumeTrue === !!(type.flags & flags); } } function narrowTypeByAnd(type, expr, assumeTrue) { @@ -19862,7 +20415,7 @@ var ts; // and the second operand was false. We narrow with those assumptions and union the two resulting types. return getUnionType([ narrowType(type, expr.left, /*assumeTrue*/ false), - narrowType(narrowType(type, expr.left, /*assumeTrue*/ true), expr.right, /*assumeTrue*/ false) + narrowType(type, expr.right, /*assumeTrue*/ false) ]); } } @@ -19872,7 +20425,7 @@ var ts; // and the second operand was true. We narrow with those assumptions and union the two resulting types. return getUnionType([ narrowType(type, expr.left, /*assumeTrue*/ true), - narrowType(narrowType(type, expr.left, /*assumeTrue*/ false), expr.right, /*assumeTrue*/ true) + narrowType(type, expr.right, /*assumeTrue*/ true) ]); } else { @@ -19913,17 +20466,17 @@ var ts; } } if (targetType) { - if (!assumeTrue) { - if (type.flags & 16384 /* Union */) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, targetType); })); - } - return type; - } - return getNarrowedType(type, targetType); + return getNarrowedType(type, targetType, assumeTrue); } return type; } - function getNarrowedType(originalType, narrowedTypeCandidate) { + function getNarrowedType(originalType, narrowedTypeCandidate, assumeTrue) { + if (!assumeTrue) { + if (originalType.flags & 16384 /* Union */) { + return getUnionType(ts.filter(originalType.types, function (t) { return !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 & 16384 /* Union */) { @@ -19943,28 +20496,62 @@ var ts; return type; } var signature = getResolvedSignature(expr); - if (signature.typePredicate && - expr.arguments[signature.typePredicate.parameterIndex] && - getSymbolAtLocation(expr.arguments[signature.typePredicate.parameterIndex]) === symbol) { - if (!assumeTrue) { - if (type.flags & 16384 /* Union */) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, signature.typePredicate.type); })); - } - return type; + var predicateType = getReturnTypeOfSignature(signature); + if (!predicateType || !(predicateType.flags & 134217728 /* PredicateType */)) { + return type; + } + var predicate = predicateType.predicate; + if (ts.isIdentifierTypePredicate(predicate)) { + var callExpression = expr; + if (callExpression.arguments[predicate.parameterIndex] && + getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); } - return getNarrowedType(type, signature.typePredicate.type); + } + else { + var expression = skipParenthesizedNodes(expr.expression); + return narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue); } return type; } + function narrowTypeByTypePredicateMember(type, expr, assumeTrue) { + if (type.flags & 1 /* Any */) { + return type; + } + var memberType = getTypeOfExpression(expr); + if (!(memberType.flags & 134217728 /* PredicateType */)) { + return type; + } + return narrowTypeByThisTypePredicate(type, memberType.predicate, expr, assumeTrue); + } + function narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue) { + if (expression.kind === 169 /* ElementAccessExpression */ || expression.kind === 168 /* PropertyAccessExpression */) { + var accessExpression = expression; + var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); + if (possibleIdentifier.kind === 69 /* Identifier */ && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + } + return type; + } + function getSymbolAtTypePredicatePosition(expr) { + expr = skipParenthesizedNodes(expr); + switch (expr.kind) { + case 69 /* Identifier */: + case 168 /* PropertyAccessExpression */: + case 135 /* QualifiedName */: + return getSymbolOfEntityNameOrPropertyAccessExpression(expr); + } + } // Narrow the given type based on the given expression having the assumed boolean value. The returned type // will be a subtype or the same type as the argument. function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 168 /* CallExpression */: + case 170 /* CallExpression */: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return narrowType(type, expr.expression, assumeTrue); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: var operator = expr.operatorToken.kind; if (operator === 32 /* EqualsEqualsEqualsToken */ || operator === 33 /* ExclamationEqualsEqualsToken */) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -19979,15 +20566,24 @@ var ts; return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: if (expr.operator === 49 /* ExclamationToken */) { return narrowType(type, expr.operand, !assumeTrue); } break; + case 169 /* ElementAccessExpression */: + case 168 /* PropertyAccessExpression */: + return narrowTypeByTypePredicateMember(type, expr, assumeTrue); } return type; } } + function skipParenthesizedNodes(expression) { + while (expression.kind === 174 /* ParenthesizedExpression */) { + expression = expression.expression; + } + return expression; + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); // As noted in ECMAScript 6 language spec, arrow functions never have an arguments objects. @@ -19998,7 +20594,7 @@ var ts; // can explicitly bound arguments objects if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 174 /* ArrowFunction */) { + if (container.kind === 176 /* ArrowFunction */) { if (languageVersion < 2 /* ES6 */) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -20029,7 +20625,7 @@ var ts; function checkBlockScopedBindingCapturedInLoop(node, symbol) { if (languageVersion >= 2 /* ES6 */ || (symbol.flags & (2 /* BlockScopedVariable */ | 32 /* Class */)) === 0 || - symbol.valueDeclaration.parent.kind === 244 /* CatchClause */) { + symbol.valueDeclaration.parent.kind === 246 /* CatchClause */) { return; } // 1. walk from the use site up to the declaration and check @@ -20045,12 +20641,12 @@ var ts; // nesting structure: // (variable declaration or binding element) -> variable declaration list -> container container = symbol.valueDeclaration; - while (container.kind !== 212 /* VariableDeclarationList */) { + while (container.kind !== 214 /* VariableDeclarationList */) { container = container.parent; } // get the parent of variable declaration list container = container.parent; - if (container.kind === 193 /* VariableStatement */) { + if (container.kind === 195 /* VariableStatement */) { // if parent is variable statement - get its parent container = container.parent; } @@ -20085,17 +20681,17 @@ var ts; var container = ts.getThisContainer(node, /* includeArrowFunctions */ true); var needToCaptureLexicalThis = false; // Now skip arrow functions to get the "real" owner of 'this'. - if (container.kind === 174 /* ArrowFunction */) { + if (container.kind === 176 /* ArrowFunction */) { container = ts.getThisContainer(container, /* includeArrowFunctions */ false); // When targeting es6, arrow function lexically bind "this" so we do not need to do the work of binding "this" in emitted code needToCaptureLexicalThis = (languageVersion < 2 /* ES6 */); } switch (container.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; @@ -20121,6 +20717,21 @@ var ts; var symbol = getSymbolOfNode(container.parent); return container.flags & 64 /* Static */ ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; } + // If this is a function in a JS file, it might be a class method. Check if it's the RHS + // of a x.prototype.y = function [name]() { .... } + if (ts.isInJavaScriptFile(node) && container.kind === 175 /* FunctionExpression */) { + if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3 /* PrototypeProperty */) { + // Get the 'x' of 'x.prototype.y = f' (here, 'f' is 'container') + var className = container.parent // x.protoype.y = f + .left // x.prototype.y + .expression // x.prototype + .expression; // x + var classSymbol = checkExpression(className).symbol; + if (classSymbol && classSymbol.members && (classSymbol.flags & 16 /* Function */)) { + return getInferredClassType(classSymbol); + } + } + } return anyType; } function isInConstructorArgumentInitializer(node, constructorDecl) { @@ -20132,55 +20743,75 @@ var ts; return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 168 /* CallExpression */ && node.parent.expression === node; - var classDeclaration = ts.getContainingClass(node); - var classType = classDeclaration && getDeclaredTypeOfSymbol(getSymbolOfNode(classDeclaration)); - var baseClassType = classType && getBaseTypes(classType)[0]; - var container = ts.getSuperContainer(node, /*includeFunctions*/ true); + var isCallExpression = node.parent.kind === 170 /* CallExpression */ && node.parent.expression === node; + var container = ts.getSuperContainer(node, /*stopOnFunctions*/ true); var needToCaptureLexicalThis = false; if (!isCallExpression) { // adjust the container reference in case if super is used inside arrow functions with arbitrary deep nesting - while (container && container.kind === 174 /* ArrowFunction */) { - container = ts.getSuperContainer(container, /*includeFunctions*/ true); + while (container && container.kind === 176 /* ArrowFunction */) { + container = ts.getSuperContainer(container, /*stopOnFunctions*/ true); needToCaptureLexicalThis = languageVersion < 2 /* ES6 */; } } var canUseSuperExpression = isLegalUsageOfSuperExpression(container); var nodeCheckFlag = 0; - // always set NodeCheckFlags for 'super' expression node - if (canUseSuperExpression) { - if ((container.flags & 64 /* Static */) || isCallExpression) { - nodeCheckFlag = 512 /* SuperStatic */; - } - else { - nodeCheckFlag = 256 /* SuperInstance */; - } - getNodeLinks(node).flags |= nodeCheckFlag; - if (needToCaptureLexicalThis) { - // call expressions are allowed only in constructors so they should always capture correct 'this' - // super property access expressions can also appear in arrow functions - - // in this case they should also use correct lexical this - captureLexicalThis(node.parent, container); - } - } - if (!baseClassType) { - if (!classDeclaration || !ts.getClassExtendsHeritageClauseElement(classDeclaration)) { - error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); - } - return unknownType; - } if (!canUseSuperExpression) { - if (container && container.kind === 136 /* ComputedPropertyName */) { + // issue more specific error if super is used in computed property name + // class A { foo() { return "1" }} + // class B { + // [super.foo()]() {} + // } + var current = node; + while (current && current !== container && current.kind !== 136 /* ComputedPropertyName */) { + current = current.parent; + } + if (current && current.kind === 136 /* ComputedPropertyName */) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 167 /* ObjectLiteralExpression */)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); + } else { error(node, ts.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class); } return unknownType; } + if ((container.flags & 64 /* Static */) || isCallExpression) { + nodeCheckFlag = 512 /* SuperStatic */; + } + else { + nodeCheckFlag = 256 /* SuperInstance */; + } + getNodeLinks(node).flags |= nodeCheckFlag; + if (needToCaptureLexicalThis) { + // call expressions are allowed only in constructors so they should always capture correct 'this' + // super property access expressions can also appear in arrow functions - + // in this case they should also use correct lexical this + captureLexicalThis(node.parent, container); + } + if (container.parent.kind === 167 /* ObjectLiteralExpression */) { + if (languageVersion < 2 /* ES6 */) { + error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); + return unknownType; + } + else { + // for object literal assume that type of 'super' is 'any' + return anyType; + } + } + // at this point the only legal case for parent is ClassLikeDeclaration + var classLikeDeclaration = container.parent; + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(classLikeDeclaration)); + var baseClassType = classType && getBaseTypes(classType)[0]; + if (!baseClassType) { + if (!ts.getClassExtendsHeritageClauseElement(classLikeDeclaration)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); + } + return unknownType; + } if (container.kind === 144 /* Constructor */ && isInConstructorArgumentInitializer(node, container)) { // issue custom error message for super property access in constructor arguments (to be aligned with old compiler) error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); @@ -20203,8 +20834,8 @@ var ts; // 'super' property access is allowed // - In a constructor, instance member function, instance member accessor, or instance member variable initializer where this references a derived class instance // - In a static member function or static member accessor - // topmost container must be something that is directly nested in the class declaration - if (container && ts.isClassLike(container.parent)) { + // topmost container must be something that is directly nested in the class declaration\object literal expression + if (ts.isClassLike(container.parent) || container.parent.kind === 167 /* ObjectLiteralExpression */) { if (container.flags & 64 /* Static */) { return container.kind === 143 /* MethodDeclaration */ || container.kind === 142 /* MethodSignature */ || @@ -20327,7 +20958,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 170 /* TaggedTemplateExpression */) { + if (template.parent.kind === 172 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -20350,6 +20981,11 @@ var ts; } return type; } + else if (operator === 51 /* AmpersandAmpersandToken */ || operator === 24 /* CommaToken */) { + if (node === binaryExpression.right) { + return getContextualType(binaryExpression); + } + } return undefined; } // Apply a mapping function to a contextual type and return the resulting type. If the contextual type @@ -20362,8 +20998,8 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { - var current = types_7[_i]; + for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { + var current = types_8[_i]; var t = mapper(current); if (t) { if (!mappedType) { @@ -20449,22 +21085,20 @@ var ts; var conditional = node.parent; return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; } - function getContextualTypeForJsxExpression(expr) { - // Contextual type only applies to JSX expressions that are in attribute assignments (not in 'Children' positions) - if (expr.parent.kind === 238 /* JsxAttribute */) { - var attrib = expr.parent; - var attrsType = getJsxElementAttributesType(attrib.parent); + function getContextualTypeForJsxAttribute(attribute) { + var kind = attribute.kind; + var jsxElement = attribute.parent; + var attrsType = getJsxElementAttributesType(jsxElement); + if (attribute.kind === 240 /* JsxAttribute */) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } - else { - return getTypeOfPropertyOfType(attrsType, attrib.name.text); - } + return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - if (expr.kind === 239 /* JsxSpreadAttribute */) { - return getJsxElementAttributesType(expr.parent); + else if (attribute.kind === 241 /* JsxSpreadAttribute */) { + return attrsType; } - return undefined; + ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); } // Return the contextual type for a given expression node. During overload resolution, a contextual type may temporarily // be "pushed" onto a node using the contextualType property. @@ -20499,39 +21133,41 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: case 138 /* Parameter */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 163 /* BindingElement */: + case 165 /* BindingElement */: return getContextualTypeForInitializerExpression(node); - case 174 /* ArrowFunction */: - case 204 /* ReturnStatement */: + case 176 /* ArrowFunction */: + case 206 /* ReturnStatement */: return getContextualTypeForReturnExpression(node); - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return getContextualTypeForYieldOperand(parent); - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return getContextualTypeForArgument(parent, node); - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: return getTypeFromTypeNode(parent.type); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return getContextualTypeForBinaryOperand(node); - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: return getContextualTypeForObjectLiteralElement(parent); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return getContextualTypeForElementExpression(node); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return getContextualTypeForConditionalOperand(node); - case 190 /* TemplateSpan */: - ts.Debug.assert(parent.parent.kind === 183 /* TemplateExpression */); + case 192 /* TemplateSpan */: + ts.Debug.assert(parent.parent.kind === 185 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent.parent, node); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return getContextualType(parent); - case 240 /* JsxExpression */: - case 239 /* JsxSpreadAttribute */: - return getContextualTypeForJsxExpression(parent); + case 242 /* JsxExpression */: + return getContextualType(parent); + case 240 /* JsxAttribute */: + case 241 /* JsxSpreadAttribute */: + return getContextualTypeForJsxAttribute(parent); } return undefined; } @@ -20547,7 +21183,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 173 /* FunctionExpression */ || node.kind === 174 /* ArrowFunction */; + return node.kind === 175 /* FunctionExpression */ || node.kind === 176 /* ArrowFunction */; } function getContextualSignatureForFunctionLikeDeclaration(node) { // Only function expressions, arrow functions, and object literal methods are contextually typed. @@ -20573,15 +21209,15 @@ var ts; } var signatureList; var types = type.types; - for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { - var current = types_8[_i]; + for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { + var current = types_9[_i]; var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { // This signature will contribute to contextual union signature signatureList = [signature]; } - else if (!compareSignatures(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypes)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { // Signatures aren't identical, do not use return undefined; } @@ -20624,13 +21260,13 @@ var ts; // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 181 /* BinaryExpression */ && parent.operatorToken.kind === 56 /* EqualsToken */ && parent.left === node) { + if (parent.kind === 183 /* BinaryExpression */ && parent.operatorToken.kind === 56 /* EqualsToken */ && parent.left === node) { return true; } - if (parent.kind === 245 /* PropertyAssignment */) { + if (parent.kind === 247 /* PropertyAssignment */) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 164 /* ArrayLiteralExpression */) { + if (parent.kind === 166 /* ArrayLiteralExpression */) { return isAssignmentTarget(parent); } return false; @@ -20646,8 +21282,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } function hasDefaultValue(node) { - return (node.kind === 163 /* BindingElement */ && !!node.initializer) || - (node.kind === 181 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); + return (node.kind === 165 /* BindingElement */ && !!node.initializer) || + (node.kind === 183 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -20656,7 +21292,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 185 /* SpreadElementExpression */) { + if (inDestructuringPattern && e.kind === 187 /* SpreadElementExpression */) { // Given the following situation: // var c: {}; // [...c] = ["", 0]; @@ -20680,7 +21316,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 185 /* SpreadElementExpression */; + hasSpreadElement = hasSpreadElement || e.kind === 187 /* SpreadElementExpression */; } if (!hasSpreadElement) { // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such @@ -20695,7 +21331,7 @@ var ts; var pattern = contextualType.pattern; // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting // tuple type with the corresponding binding or assignment element types to make the lengths equal. - if (pattern && (pattern.kind === 162 /* ArrayBindingPattern */ || pattern.kind === 164 /* ArrayLiteralExpression */)) { + if (pattern && (pattern.kind === 164 /* ArrayBindingPattern */ || pattern.kind === 166 /* ArrayLiteralExpression */)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -20703,7 +21339,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 187 /* OmittedExpression */) { + if (patternElement.kind !== 189 /* OmittedExpression */) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -20775,24 +21411,24 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 161 /* ObjectBindingPattern */ || contextualType.pattern.kind === 165 /* ObjectLiteralExpression */); + (contextualType.pattern.kind === 163 /* ObjectBindingPattern */ || contextualType.pattern.kind === 167 /* ObjectLiteralExpression */); var typeFlags = 0; var patternWithComputedProperties = false; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 245 /* PropertyAssignment */ || - memberDecl.kind === 246 /* ShorthandPropertyAssignment */ || + if (memberDecl.kind === 247 /* PropertyAssignment */ || + memberDecl.kind === 248 /* ShorthandPropertyAssignment */ || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 245 /* PropertyAssignment */) { + if (memberDecl.kind === 247 /* PropertyAssignment */) { type = checkPropertyAssignment(memberDecl, contextualMapper); } else if (memberDecl.kind === 143 /* MethodDeclaration */) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 246 /* ShorthandPropertyAssignment */); + ts.Debug.assert(memberDecl.kind === 248 /* ShorthandPropertyAssignment */); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; @@ -20800,8 +21436,8 @@ var ts; if (inDestructuringPattern) { // If object literal is an assignment pattern and if the assignment pattern specifies a default value // for the property, make the property optional. - var isOptional = (memberDecl.kind === 245 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 246 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 247 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 248 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912 /* Optional */; } @@ -20893,38 +21529,22 @@ var ts; checkJsxOpeningLikeElement(node); return jsxElementType || anyType; } - function tagNamesAreEquivalent(lhs, rhs) { - if (lhs.kind !== rhs.kind) { - return false; - } - if (lhs.kind === 69 /* Identifier */) { - return lhs.text === rhs.text; - } - return lhs.right.text === rhs.right.text && - tagNamesAreEquivalent(lhs.left, rhs.left); - } function checkJsxElement(node) { // Check attributes checkJsxOpeningLikeElement(node.openingElement); - // Check that the closing tag matches - if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { - error(node.closingElement, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNode(node.openingElement.tagName)); - } - else { - // Perform resolution on the closing tag so that rename/go to definition/etc work - getJsxElementTagSymbol(node.closingElement); - } + // Perform resolution on the closing tag so that rename/go to definition/etc work + getJsxElementTagSymbol(node.closingElement); // Check children for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: checkJsxExpression(child); break; - case 233 /* JsxElement */: + case 235 /* JsxElement */: checkJsxElement(child); break; - case 234 /* JsxSelfClosingElement */: + case 236 /* JsxSelfClosingElement */: checkJsxSelfClosingElement(child); break; } @@ -21006,12 +21626,11 @@ var ts; } return type; } - /// Returns the type JSX.IntrinsicElements. May return `unknownType` if that type is not present. - function getJsxIntrinsicElementsType() { - if (!jsxIntrinsicElementsType) { - jsxIntrinsicElementsType = getExportedTypeFromNamespace(JsxNames.JSX, JsxNames.IntrinsicElements) || unknownType; + function getJsxType(name) { + if (jsxTypes[name] === undefined) { + return jsxTypes[name] = getExportedTypeFromNamespace(JsxNames.JSX, name) || unknownType; } - return jsxIntrinsicElementsType; + return jsxTypes[name]; } /// Given a JSX opening element or self-closing element, return the symbol of the property that the tag name points to if /// this is an intrinsic tag. This might be a named @@ -21020,7 +21639,6 @@ var ts; /// type or factory function. /// Otherwise, returns unknownSymbol. function getJsxElementTagSymbol(node) { - var flags = 8 /* UnknownElement */; var links = getNodeLinks(node); if (!links.resolvedSymbol) { if (isJsxIntrinsicIdentifier(node.tagName)) { @@ -21032,7 +21650,7 @@ var ts; } return links.resolvedSymbol; function lookupIntrinsicTag(node) { - var intrinsicElementsType = getJsxIntrinsicElementsType(); + var intrinsicElementsType = getJsxType(JsxNames.IntrinsicElements); if (intrinsicElementsType !== unknownType) { // Property case var intrinsicProp = getPropertyOfType(intrinsicElementsType, node.tagName.text); @@ -21060,7 +21678,7 @@ var ts; var valueSymbol = resolveJsxTagName(node); // Look up the value in the current scope if (valueSymbol && valueSymbol !== unknownSymbol) { - links.jsxFlags |= 4 /* ClassElement */; + links.jsxFlags |= 4 /* ValueElement */; if (valueSymbol.flags & 8388608 /* Alias */) { markAliasSymbolAsReferenced(valueSymbol); } @@ -21086,7 +21704,7 @@ var ts; function getJsxElementInstanceType(node) { // There is no such thing as an instance type for a non-class element. This // line shouldn't be hit. - ts.Debug.assert(!!(getNodeLinks(node).jsxFlags & 4 /* ClassElement */), "Should not call getJsxElementInstanceType on non-class Element"); + ts.Debug.assert(!!(getNodeLinks(node).jsxFlags & 4 /* ValueElement */), "Should not call getJsxElementInstanceType on non-class Element"); var classSymbol = getJsxElementTagSymbol(node); if (classSymbol === unknownSymbol) { // Couldn't find the class instance type. Error has already been issued @@ -21108,13 +21726,7 @@ var ts; return unknownType; } } - var returnType = getUnionType(signatures.map(getReturnTypeOfSignature)); - // Issue an error if this return type isn't assignable to JSX.ElementClass - var elemClassType = getJsxGlobalElementClassType(); - if (elemClassType) { - checkTypeRelatedTo(returnType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); - } - return returnType; + return getUnionType(signatures.map(getReturnTypeOfSignature)); } /// e.g. "props" for React.d.ts, /// or 'undefined' if ElementAttributesPropery doesn't exist (which means all @@ -21156,8 +21768,27 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedJsxType) { var sym = getJsxElementTagSymbol(node); - if (links.jsxFlags & 4 /* ClassElement */) { + if (links.jsxFlags & 4 /* ValueElement */) { + // Get the element instance type (the result of newing or invoking this tag) var elemInstanceType = getJsxElementInstanceType(node); + // Is this is a stateless function component? See if its single signature is + // assignable to the JSX Element Type + var callSignature = getSingleCallSignature(getTypeOfSymbol(sym)); + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType) && (paramType.flags & 80896 /* ObjectType */)) { + // Intersect in JSX.IntrinsicAttributes if it exists + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return paramType; + } + // Issue an error if this return type isn't assignable to JSX.ElementClass + var elemClassType = getJsxGlobalElementClassType(); + if (elemClassType) { + checkTypeRelatedTo(elemInstanceType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); + } if (isTypeAny(elemInstanceType)) { return links.resolvedJsxType = elemInstanceType; } @@ -21177,14 +21808,34 @@ var ts; return links.resolvedJsxType = emptyObjectType; } else if (isTypeAny(attributesType) || (attributesType === unknownType)) { + // Props is of type 'any' or unknown return links.resolvedJsxType = attributesType; } - else if (!(attributesType.flags & 80896 /* ObjectType */)) { - error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_must_be_an_object_type, typeToString(attributesType)); + else if (attributesType.flags & 16384 /* Union */) { + // Props cannot be a union type + error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_may_not_be_a_union_type, typeToString(attributesType)); return links.resolvedJsxType = anyType; } else { - return links.resolvedJsxType = attributesType; + // Normal case -- add in IntrinsicClassElements and IntrinsicElements + var apparentAttributesType = attributesType; + var intrinsicClassAttribs = getJsxType(JsxNames.IntrinsicClassAttributes); + if (intrinsicClassAttribs !== unknownType) { + var typeParams = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(intrinsicClassAttribs.symbol); + if (typeParams) { + if (typeParams.length === 1) { + apparentAttributesType = intersectTypes(createTypeReference(intrinsicClassAttribs, [elemInstanceType]), apparentAttributesType); + } + } + else { + apparentAttributesType = intersectTypes(attributesType, intrinsicClassAttribs); + } + } + var intrinsicAttribs = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttribs !== unknownType) { + apparentAttributesType = intersectTypes(intrinsicAttribs, apparentAttributesType); + } + return links.resolvedJsxType = apparentAttributesType; } } } @@ -21219,7 +21870,7 @@ var ts; } /// Returns all the properties of the Jsx.IntrinsicElements interface function getJsxIntrinsicTagNames() { - var intrinsics = getJsxIntrinsicElementsType(); + var intrinsics = getJsxType(JsxNames.IntrinsicElements); return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray; } function checkJsxPreconditions(errorNode) { @@ -21236,14 +21887,13 @@ var ts; function checkJsxOpeningLikeElement(node) { checkGrammarJsxElement(node); checkJsxPreconditions(node); - // If we're compiling under --jsx react, the symbol 'React' should - // be marked as 'used' so we don't incorrectly elide its import. And if there - // is no 'React' symbol in scope, we should issue an error. - if (compilerOptions.jsx === 2 /* React */) { - var reactSym = resolveName(node.tagName, "React", 107455 /* Value */, ts.Diagnostics.Cannot_find_name_0, "React"); - if (reactSym) { - getSymbolLinks(reactSym).referenced = true; - } + // The reactNamespace symbol should be marked as 'used' so we don't incorrectly elide its import. And if there + // is no reactNamespace symbol in scope when targeting React emit, we should issue an error. + var reactRefErr = compilerOptions.jsx === 2 /* React */ ? ts.Diagnostics.Cannot_find_name_0 : undefined; + var reactNamespace = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; + var reactSym = resolveName(node.tagName, reactNamespace, 107455 /* Value */, reactRefErr, reactNamespace); + if (reactSym) { + getSymbolLinks(reactSym).referenced = true; } var targetAttributesType = getJsxElementAttributesType(node); var nameTable = {}; @@ -21252,11 +21902,11 @@ var ts; // thus should have their types ignored var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 238 /* JsxAttribute */) { + if (node.attributes[i].kind === 240 /* JsxAttribute */) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 239 /* JsxSpreadAttribute */); + ts.Debug.assert(node.attributes[i].kind === 241 /* JsxSpreadAttribute */); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -21303,7 +21953,7 @@ var ts; var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (left.kind === 95 /* SuperKeyword */) { - var errorNode = node.kind === 166 /* PropertyAccessExpression */ ? + var errorNode = node.kind === 168 /* PropertyAccessExpression */ ? node.name : node.right; // TS 1.0 spec (April 2014): 4.8.2 @@ -21313,7 +21963,7 @@ var 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) !== 143 /* MethodDeclaration */) { + if (languageVersion < 2 /* ES6 */ && getDeclarationKindFromSymbol(prop) !== 143 /* MethodDeclaration */) { // `prop` refers to a *property* declared in the super class // rather than a *method*, so it does not satisfy the above criteria. error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); @@ -21400,7 +22050,7 @@ var ts; return getTypeOfSymbol(prop); } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 166 /* PropertyAccessExpression */ + var left = node.kind === 168 /* PropertyAccessExpression */ ? node.expression : node.left; var type = checkExpression(left); @@ -21416,7 +22066,7 @@ var ts; // Grammar checking if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 169 /* NewExpression */ && node.parent.expression === node) { + if (node.parent.kind === 171 /* NewExpression */ && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -21497,7 +22147,7 @@ var ts; if (indexArgumentExpression.kind === 9 /* StringLiteral */ || indexArgumentExpression.kind === 8 /* NumericLiteral */) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 167 /* ElementAccessExpression */ || indexArgumentExpression.kind === 166 /* PropertyAccessExpression */) { + if (indexArgumentExpression.kind === 169 /* ElementAccessExpression */ || indexArgumentExpression.kind === 168 /* PropertyAccessExpression */) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -21552,7 +22202,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { checkExpression(node.template); } else if (node.kind !== 139 /* Decorator */) { @@ -21621,7 +22271,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 185 /* SpreadElementExpression */) { + if (arg && arg.kind === 187 /* SpreadElementExpression */) { return i; } } @@ -21633,13 +22283,13 @@ var ts; var callIsIncomplete; // In incomplete call we want to be lenient when we have too few arguments var isDecorator; var spreadArgIndex = -1; - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { var tagExpression = node; // Even if the call is incomplete, we'll have a missing expression as our last argument, // so we can say the count is just the arg list length adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 183 /* TemplateExpression */) { + if (tagExpression.template.kind === 185 /* TemplateExpression */) { // If a tagged template expression lacks a tail literal, the call is incomplete. // Specifically, a template only can end in a TemplateTail or a Missing literal. var templateExpression = tagExpression.template; @@ -21665,7 +22315,7 @@ var ts; var callExpression = node; if (!callExpression.arguments) { // This only happens when we have something of the form: 'new C' - ts.Debug.assert(callExpression.kind === 169 /* NewExpression */); + ts.Debug.assert(callExpression.kind === 171 /* NewExpression */); return signature.minArgumentCount === 0; } // For IDE scenarios we may have an incomplete call, so a trailing comma is tantamount to adding another argument. @@ -21717,7 +22367,7 @@ var ts; } function inferTypeArguments(node, signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var inferenceMapper = createInferenceMapper(context); + var inferenceMapper = getInferenceMapper(context); // Clear out all the inference results from the last time inferTypeArguments was called on this context for (var i = 0; i < typeParameters.length; i++) { // As an optimization, we don't have to clear (and later recompute) inferred types @@ -21744,7 +22394,7 @@ var ts; for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 187 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 189 /* OmittedExpression */) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); // If the effective argument type is 'undefined', there is no synthetic type @@ -21775,14 +22425,11 @@ var ts; } getInferredTypes(context); } - function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors, headMessage) { + function checkTypeArguments(signature, typeArgumentNodes, typeArgumentTypes, reportErrors, headMessage) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; + var mapper; for (var i = 0; i < typeParameters.length; i++) { - var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); - // Do not push on this array! It has a preallocated length - typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable /* so far */) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { @@ -21792,7 +22439,11 @@ var ts; errorInfo = ts.chainDiagnosticMessages(errorInfo, typeArgumentHeadMessage); typeArgumentHeadMessage = headMessage; } - typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, constraint, reportErrors ? typeArgNode : undefined, typeArgumentHeadMessage, errorInfo); + if (!mapper) { + mapper = createTypeMapper(typeParameters, typeArgumentTypes); + } + var typeArgument = typeArgumentTypes[i]; + typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), reportErrors ? typeArgumentNodes[i] : undefined, typeArgumentHeadMessage, errorInfo); } } } @@ -21803,7 +22454,7 @@ var ts; for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 187 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 189 /* OmittedExpression */) { // Check spread elements against rest type (from arity check we know spread argument corresponds to a rest parameter) var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); @@ -21811,7 +22462,7 @@ var ts; // for the argument. In that case, we should check the argument. if (argType === undefined) { argType = arg.kind === 9 /* StringLiteral */ && !reportErrors - ? getStringLiteralType(arg) + ? getStringLiteralTypeForText(arg.text) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); } // Use argument expression as error location when reporting errors @@ -21835,10 +22486,10 @@ var ts; */ function getEffectiveCallArguments(node) { var args; - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { var template = node.template; args = [undefined]; - if (template.kind === 183 /* TemplateExpression */) { + if (template.kind === 185 /* TemplateExpression */) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -21871,8 +22522,8 @@ var ts; function getEffectiveArgumentCount(node, args, signature) { if (node.kind === 139 /* Decorator */) { switch (node.parent.kind) { - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: // A class decorator will have one argument (see `ClassDecorator` in core.d.ts) return 1; case 141 /* PropertyDeclaration */: @@ -21915,7 +22566,7 @@ var ts; */ function getEffectiveDecoratorFirstArgumentType(node) { // The first argument to a decorator is its `target`. - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { // For a class decorator, the `target` is the type of the class (e.g. the // "static" or "constructor" side of the class) var classSymbol = getSymbolOfNode(node); @@ -21960,7 +22611,7 @@ var ts; */ function getEffectiveDecoratorSecondArgumentType(node) { // The second argument to a decorator is its `propertyKey` - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } @@ -21984,7 +22635,7 @@ var ts; case 69 /* Identifier */: case 8 /* NumericLiteral */: case 9 /* StringLiteral */: - return getStringLiteralType(element.name); + return getStringLiteralTypeForText(element.name.text); case 136 /* ComputedPropertyName */: var nameType = checkComputedPropertyName(element.name); if (allConstituentTypesHaveKind(nameType, 16777216 /* ESSymbol */)) { @@ -22011,7 +22662,7 @@ var ts; function getEffectiveDecoratorThirdArgumentType(node) { // The third argument to a decorator is either its `descriptor` for a method decorator // or its `parameterIndex` for a paramter decorator - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } @@ -22060,7 +22711,7 @@ var ts; if (node.kind === 139 /* Decorator */) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 170 /* TaggedTemplateExpression */) { + else if (argIndex === 0 && node.kind === 172 /* TaggedTemplateExpression */) { return globalTemplateStringsArrayType; } // This is not a synthetic argument, so we return 'undefined' @@ -22073,7 +22724,7 @@ var ts; function getEffectiveArgument(node, args, argIndex) { // For a decorator or the first argument of a tagged template expression we return undefined. if (node.kind === 139 /* Decorator */ || - (argIndex === 0 && node.kind === 170 /* TaggedTemplateExpression */)) { + (argIndex === 0 && node.kind === 172 /* TaggedTemplateExpression */)) { return undefined; } return args[argIndex]; @@ -22086,7 +22737,7 @@ var ts; // For a decorator, we use the expression of the decorator for error reporting. return node.expression; } - else if (argIndex === 0 && node.kind === 170 /* TaggedTemplateExpression */) { + else if (argIndex === 0 && node.kind === 172 /* TaggedTemplateExpression */) { // For a the first argument of a tagged template expression, we use the template of the tag for error reporting. return node.template; } @@ -22095,7 +22746,7 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 170 /* TaggedTemplateExpression */; + var isTaggedTemplate = node.kind === 172 /* TaggedTemplateExpression */; var isDecorator = node.kind === 139 /* Decorator */; var typeArguments; if (!isTaggedTemplate && !isDecorator) { @@ -22202,7 +22853,8 @@ var ts; } else if (candidateForTypeArgumentError) { if (!isTaggedTemplate && !isDecorator && typeArguments) { - checkTypeArguments(candidateForTypeArgumentError, node.typeArguments, [], /*reportErrors*/ true, headMessage); + var typeArguments_1 = node.typeArguments; + checkTypeArguments(candidateForTypeArgumentError, typeArguments_1, ts.map(typeArguments_1, getTypeFromTypeNode), /*reportErrors*/ true, headMessage); } else { ts.Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); @@ -22260,7 +22912,7 @@ var ts; if (candidate.typeParameters) { var typeArgumentTypes = void 0; if (typeArguments) { - typeArgumentTypes = new Array(candidate.typeParameters.length); + typeArgumentTypes = ts.map(typeArguments, getTypeFromTypeNode); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, /*reportErrors*/ false); } else { @@ -22441,8 +23093,8 @@ var ts; */ function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; case 138 /* Parameter */: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; @@ -22487,13 +23139,13 @@ var ts; // to correctly fill the candidatesOutArray. if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 168 /* CallExpression */) { + if (node.kind === 170 /* CallExpression */) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 169 /* NewExpression */) { + else if (node.kind === 171 /* NewExpression */) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 170 /* TaggedTemplateExpression */) { + else if (node.kind === 172 /* TaggedTemplateExpression */) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else if (node.kind === 139 /* Decorator */) { @@ -22505,6 +23157,13 @@ var ts; } return links.resolvedSignature; } + function getInferredClassType(symbol) { + var links = getSymbolLinks(symbol); + if (!links.inferredClassType) { + links.inferredClassType = createAnonymousType(undefined, symbol.members, emptyArray, emptyArray, /*stringIndexType*/ undefined, /*numberIndexType*/ undefined); + } + return links.inferredClassType; + } /** * Syntactically and semantically checks a call or new expression. * @param node The call/new expression to be checked. @@ -22517,14 +23176,20 @@ var ts; if (node.expression.kind === 95 /* SuperKeyword */) { return voidType; } - if (node.kind === 169 /* NewExpression */) { + if (node.kind === 171 /* NewExpression */) { var declaration = signature.declaration; if (declaration && declaration.kind !== 144 /* Constructor */ && declaration.kind !== 148 /* ConstructSignature */ && declaration.kind !== 153 /* ConstructorType */) { - // When resolved signature is a call signature (and not a construct signature) the result type is any - if (compilerOptions.noImplicitAny) { + // When resolved signature is a call signature (and not a construct signature) the result type is any, unless + // the declaring function had members created through 'x.prototype.y = expr' or 'this.y = expr' psuedodeclarations + // in a JS file + var funcSymbol = checkExpression(node.expression).symbol; + if (funcSymbol && funcSymbol.members && (funcSymbol.flags & 16 /* Function */)) { + return getInferredClassType(funcSymbol); + } + else if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } return anyType; @@ -22577,7 +23242,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187 /* OmittedExpression */) { + if (element.kind !== 189 /* OmittedExpression */) { if (element.name.kind === 69 /* Identifier */) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -22642,7 +23307,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 192 /* Block */) { + if (func.body.kind !== 194 /* Block */) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { // From within an async function you can return either a non-promise value or a promise. Any @@ -22755,38 +23420,53 @@ var ts; }); return aggregatedTypes; } - // TypeScript Specification 1.0 (6.3) - July 2014 - // An explicitly typed function whose return type isn't the Void or the Any type - // must have at least one return statement somewhere in its body. - // An exception to this rule is if the function implementation consists of a single 'throw' statement. + /* + *TypeScript Specification 1.0 (6.3) - July 2014 + * An explicitly typed function whose return type isn't the Void or the Any type + * must have at least one return statement somewhere in its body. + * An exception to this rule is if the function implementation consists of a single 'throw' statement. + * @param returnType - return type of the function, can be undefined if return type is not explicitly specified + */ function checkAllCodePathsInNonVoidFunctionReturnOrThrow(func, returnType) { if (!produceDiagnostics) { return; } - // Functions that return 'void' or 'any' don't need any return expressions. + // Functions with with an explicitly specified 'void' or 'any' return type don't need any return expressions. if (returnType === voidType || isTypeAny(returnType)) { return; } // If all we have is a function signature, or an arrow function with an expression body, then there is nothing to check. - // also if HasImplicitReturnValue flags is not set this means that all codepaths in function body end with return of throw - if (ts.nodeIsMissing(func.body) || func.body.kind !== 192 /* Block */ || !(func.flags & 524288 /* HasImplicitReturn */)) { + // also if HasImplicitReturn flag is not set this means that all codepaths in function body end with return or throw + if (ts.nodeIsMissing(func.body) || func.body.kind !== 194 /* Block */ || !(func.flags & 524288 /* HasImplicitReturn */)) { return; } - if (func.flags & 1048576 /* HasExplicitReturn */) { - if (compilerOptions.noImplicitReturns) { - error(func.type, ts.Diagnostics.Not_all_code_paths_return_a_value); - } - } - else { - // This function does not conform to the specification. + var hasExplicitReturn = func.flags & 1048576 /* HasExplicitReturn */; + if (returnType && !hasExplicitReturn) { + // minimal check: function has syntactic return type annotation and no explicit return statements in the body + // this function does not conform to the specification. + // NOTE: having returnType !== undefined is a precondition for entering this branch so func.type will always be present error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (compilerOptions.noImplicitReturns) { + if (!returnType) { + // If return type annotation is omitted check if function has any explicit return statements. + // If it does not have any - its inferred return type is void - don't do any checks. + // Otherwise get inferred return type from function body and report error only if it is not void / anytype + var inferredReturnType = hasExplicitReturn + ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) + : voidType; + if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + return; + } + } + error(func.type || func, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 143 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); // Grammar checking var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 173 /* FunctionExpression */) { + if (!hasGrammarError && node.kind === 175 /* FunctionExpression */) { checkGrammarForGenerator(node); } // The identityMapper object is used to indicate that function expressions are wildcards @@ -22826,6 +23506,7 @@ var ts; } if (!contextChecked) { checkSignatureDeclaration(node); + checkNodeDeferred(node); } } } @@ -22835,19 +23516,16 @@ var ts; } return type; } - function checkFunctionExpressionOrObjectLiteralMethodBody(node) { + function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { ts.Debug.assert(node.kind !== 143 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); if (isAsync) { emitAwaiter = true; } - var returnType = node.type && getTypeFromTypeNode(node.type); - var promisedType; - if (returnType && isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - if (returnType && !node.asteriskToken) { - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + if (!node.asteriskToken) { + // return is not necessary in the body of generators + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (node.body) { if (!node.type) { @@ -22858,7 +23536,7 @@ var ts; // checkFunctionExpressionBodies). So it must be done now. getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 192 /* Block */) { + if (node.body.kind === 194 /* Block */) { checkSourceElement(node.body); } else { @@ -22868,16 +23546,15 @@ var ts; // check assignability of the awaited type of the expression body against the promised type of // its return type annotation. var exprType = checkExpression(node.body); - if (returnType) { + if (returnOrPromisedType) { if (isAsync) { var awaitedType = checkAwaitedType(exprType, node.body, ts.Diagnostics.Expression_body_for_async_arrow_function_does_not_have_a_valid_callable_then_member); - checkTypeAssignableTo(awaitedType, promisedType, node.body); + checkTypeAssignableTo(awaitedType, returnOrPromisedType, node.body); } else { - checkTypeAssignableTo(exprType, returnType, node.body); + checkTypeAssignableTo(exprType, returnOrPromisedType, node.body); } } - checkFunctionAndClassExpressionBodies(node.body); } } } @@ -22911,17 +23588,17 @@ var ts; // An identifier expression that references any other kind of entity is classified as a value(and therefore cannot be the target of an assignment). return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3 /* Variable */) !== 0; } - case 166 /* PropertyAccessExpression */: { + case 168 /* PropertyAccessExpression */: { var symbol = findSymbol(n); // TypeScript 1.0 spec (April 2014): 4.10 // A property access expression is always classified as a reference. // NOTE (not in spec): assignment to enum members should not be allowed return !symbol || symbol === unknownSymbol || (symbol.flags & ~8 /* EnumMember */) !== 0; } - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: // old compiler doesn't check indexed access return true; - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -22930,11 +23607,11 @@ var ts; function isConstVariableReference(n) { switch (n.kind) { case 69 /* Identifier */: - case 166 /* PropertyAccessExpression */: { + case 168 /* PropertyAccessExpression */: { var symbol = findSymbol(n); return symbol && (symbol.flags & 3 /* Variable */) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 16384 /* Const */) !== 0; } - case 167 /* ElementAccessExpression */: { + case 169 /* ElementAccessExpression */: { var index = n.argumentExpression; var symbol = findSymbol(n.expression); if (symbol && index && index.kind === 9 /* StringLiteral */) { @@ -22944,7 +23621,7 @@ var ts; } return false; } - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return isConstVariableReference(n.expression); default: return false; @@ -23025,8 +23702,8 @@ var ts; } if (type.flags & 49152 /* UnionOrIntersection */) { var types = type.types; - for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { - var current = types_9[_i]; + for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { + var current = types_10[_i]; if (current.flags & kind) { return true; } @@ -23042,8 +23719,8 @@ var ts; } if (type.flags & 49152 /* UnionOrIntersection */) { var types = type.types; - for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { - var current = types_10[_i]; + for (var _i = 0, types_11 = types; _i < types_11.length; _i++) { + var current = types_11[_i]; if (!(current.flags & kind)) { return false; } @@ -23090,7 +23767,7 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 245 /* PropertyAssignment */ || p.kind === 246 /* ShorthandPropertyAssignment */) { + if (p.kind === 247 /* PropertyAssignment */ || p.kind === 248 /* ShorthandPropertyAssignment */) { var name_13 = p.name; if (name_13.kind === 136 /* ComputedPropertyName */) { checkComputedPropertyName(name_13); @@ -23105,11 +23782,11 @@ var ts; isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1 /* Number */) || getIndexTypeOfType(sourceType, 0 /* String */); if (type) { - if (p.kind === 246 /* ShorthandPropertyAssignment */) { + if (p.kind === 248 /* ShorthandPropertyAssignment */) { checkDestructuringAssignment(p, type); } else { - // non-shorthand property assignments should always have initializers + // non-shorthand property assignments should always have initializers checkDestructuringAssignment(p.initializer, type); } } @@ -23131,8 +23808,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187 /* OmittedExpression */) { - if (e.kind !== 185 /* SpreadElementExpression */) { + if (e.kind !== 189 /* OmittedExpression */) { + if (e.kind !== 187 /* SpreadElementExpression */) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -23157,7 +23834,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 181 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { + if (restExpression.kind === 183 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -23171,7 +23848,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 246 /* ShorthandPropertyAssignment */) { + if (exprOrAssignment.kind === 248 /* ShorthandPropertyAssignment */) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -23181,14 +23858,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 181 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + if (target.kind === 183 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 165 /* ObjectLiteralExpression */) { + if (target.kind === 167 /* ObjectLiteralExpression */) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 164 /* ArrayLiteralExpression */) { + if (target.kind === 166 /* ArrayLiteralExpression */) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -23205,7 +23882,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 /* EqualsToken */ && (left.kind === 165 /* ObjectLiteralExpression */ || left.kind === 164 /* ArrayLiteralExpression */)) { + if (operator === 56 /* EqualsToken */ && (left.kind === 167 /* ObjectLiteralExpression */ || left.kind === 166 /* ArrayLiteralExpression */)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -23441,7 +24118,7 @@ var ts; function checkStringLiteralExpression(node) { var contextualType = getContextualType(node); if (contextualType && contextualTypeIsStringLiteralType(contextualType)) { - return getStringLiteralType(node); + return getStringLiteralTypeForText(node.text); } return stringType; } @@ -23527,8 +24204,8 @@ var ts; // - 'left' in property access // - 'object' in indexed access // - target in rhs of import statement - var ok = (node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.expression === node) || - (node.parent.kind === 167 /* ElementAccessExpression */ && node.parent.expression === node) || + var ok = (node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.expression === node) || + (node.parent.kind === 169 /* ElementAccessExpression */ && node.parent.expression === node) || ((node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); @@ -23556,7 +24233,7 @@ var ts; return booleanType; case 8 /* NumericLiteral */: return checkNumericLiteral(node); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: return checkTemplateExpression(node); case 9 /* StringLiteral */: return checkStringLiteralExpression(node); @@ -23564,58 +24241,58 @@ var ts; return stringType; case 10 /* RegularExpressionLiteral */: return globalRegExpType; - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return checkArrayLiteral(node, contextualMapper); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return checkObjectLiteral(node, contextualMapper); - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return checkPropertyAccessExpression(node); - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return checkIndexedAccess(node); - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return checkCallExpression(node); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return checkTaggedTemplateExpression(node); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return checkExpression(node.expression, contextualMapper); - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return checkClassExpression(node); - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 176 /* TypeOfExpression */: + case 178 /* TypeOfExpression */: return checkTypeOfExpression(node); - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: return checkAssertion(node); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return checkDeleteExpression(node); - case 177 /* VoidExpression */: + case 179 /* VoidExpression */: return checkVoidExpression(node); - case 178 /* AwaitExpression */: + case 180 /* AwaitExpression */: return checkAwaitExpression(node); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return checkPrefixUnaryExpression(node); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return checkPostfixUnaryExpression(node); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return checkBinaryExpression(node, contextualMapper); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return checkConditionalExpression(node, contextualMapper); - case 185 /* SpreadElementExpression */: + case 187 /* SpreadElementExpression */: return checkSpreadElementExpression(node, contextualMapper); - case 187 /* OmittedExpression */: + case 189 /* OmittedExpression */: return undefinedType; - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return checkYieldExpression(node); - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: return checkJsxExpression(node); - case 233 /* JsxElement */: + case 235 /* JsxElement */: return checkJsxElement(node); - case 234 /* JsxSelfClosingElement */: + case 236 /* JsxSelfClosingElement */: return checkJsxSelfClosingElement(node); - case 235 /* JsxOpeningElement */: + case 237 /* JsxOpeningElement */: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -23627,11 +24304,10 @@ var ts; grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); } checkSourceElement(node.constraint); + getConstraintOfTypeParameter(getDeclaredTypeOfTypeParameter(getSymbolOfNode(node))); if (produceDiagnostics) { - checkTypeParameterHasIllegalReferencesInConstraint(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_parameter_name_cannot_be_0); } - // TODO: Check multiple declarations are identical } function checkParameter(node) { // Grammar checking @@ -23662,8 +24338,8 @@ var ts; return false; } return node.kind === 143 /* MethodDeclaration */ || - node.kind === 213 /* FunctionDeclaration */ || - node.kind === 173 /* FunctionExpression */; + node.kind === 215 /* FunctionDeclaration */ || + node.kind === 175 /* FunctionExpression */; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -23677,12 +24353,12 @@ var ts; } return -1; } - function isInLegalTypePredicatePosition(node) { + function isInLegalParameterTypePredicatePosition(node) { switch (node.parent.kind) { - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: case 147 /* CallSignature */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 152 /* FunctionType */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: @@ -23690,12 +24366,24 @@ var ts; } return false; } + function isInLegalThisTypePredicatePosition(node) { + if (isInLegalParameterTypePredicatePosition(node)) { + return true; + } + switch (node.parent.kind) { + case 141 /* PropertyDeclaration */: + case 140 /* PropertySignature */: + case 145 /* GetAccessor */: + return node === node.parent.type; + } + return false; + } function checkSignatureDeclaration(node) { // Grammar checking if (node.kind === 149 /* IndexSignature */) { checkGrammarIndexSignature(node); } - else if (node.kind === 152 /* FunctionType */ || node.kind === 213 /* FunctionDeclaration */ || node.kind === 153 /* ConstructorType */ || + else if (node.kind === 152 /* FunctionType */ || node.kind === 215 /* FunctionDeclaration */ || node.kind === 153 /* ConstructorType */ || node.kind === 147 /* CallSignature */ || node.kind === 144 /* Constructor */ || node.kind === 148 /* ConstructSignature */) { checkGrammarFunctionLikeDeclaration(node); @@ -23704,9 +24392,14 @@ var ts; ts.forEach(node.parameters, checkParameter); if (node.type) { if (node.type.kind === 150 /* TypePredicate */) { - var typePredicate = getSignatureFromDeclaration(node).typePredicate; + var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(node)); + if (!returnType || !(returnType.flags & 134217728 /* PredicateType */)) { + return; + } + var typePredicate = returnType.predicate; var typePredicateNode = node.type; - if (isInLegalTypePredicatePosition(typePredicateNode)) { + checkSourceElement(typePredicateNode); + if (ts.isIdentifierTypePredicate(typePredicate)) { if (typePredicate.parameterIndex >= 0) { if (node.parameters[typePredicate.parameterIndex].dotDotDotToken) { error(typePredicateNode.parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); @@ -23722,8 +24415,8 @@ var ts; if (hasReportedError) { break; } - if (param.name.kind === 161 /* ObjectBindingPattern */ || - param.name.kind === 162 /* ArrayBindingPattern */) { + if (param.name.kind === 163 /* ObjectBindingPattern */ || + param.name.kind === 164 /* ArrayBindingPattern */) { (function checkBindingPattern(pattern) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { var element = _a[_i]; @@ -23733,8 +24426,8 @@ var ts; hasReportedError = true; break; } - else if (element.name.kind === 162 /* ArrayBindingPattern */ || - element.name.kind === 161 /* ObjectBindingPattern */) { + else if (element.name.kind === 164 /* ArrayBindingPattern */ || + element.name.kind === 163 /* ObjectBindingPattern */) { checkBindingPattern(element.name); } } @@ -23746,9 +24439,6 @@ var ts; } } } - else { - error(typePredicateNode, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); - } } else { checkSourceElement(node.type); @@ -23789,7 +24479,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 215 /* InterfaceDeclaration */) { + if (node.kind === 217 /* InterfaceDeclaration */) { var nodeSymbol = getSymbolOfNode(node); // in case of merging interface declaration it is possible that we'll enter this check procedure several times for every declaration // to prevent this run check only for the first declaration of a given kind @@ -23839,7 +24529,7 @@ var ts; // Grammar checking checkGrammarMethod(node) || checkGrammarComputedPropertyName(node.name); // Grammar checking for modifiers is done inside the function checkGrammarFunctionLikeDeclaration - checkFunctionLikeDeclaration(node); + checkFunctionOrMethodDeclaration(node); // Abstract methods cannot have an implementation. // Extra checks are to avoid reporting multiple errors relating to the "abstractness" of the node. if (node.flags & 128 /* Abstract */ && node.body) { @@ -23866,7 +24556,7 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 168 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; + return n.kind === 170 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; } function containsSuperCallAsComputedPropertyName(n) { return n.name && containsSuperCall(n.name); @@ -23887,7 +24577,7 @@ var ts; if (n.kind === 97 /* ThisKeyword */) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 173 /* FunctionExpression */ && n.kind !== 213 /* FunctionDeclaration */) { + else if (n.kind !== 175 /* FunctionExpression */ && n.kind !== 215 /* FunctionDeclaration */) { ts.forEachChild(n, markThisReferencesAsErrors); } } @@ -23922,7 +24612,7 @@ var ts; var superCallStatement; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 195 /* ExpressionStatement */ && isSuperCallExpression(statement.expression)) { + if (statement.kind === 197 /* ExpressionStatement */ && isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -23948,6 +24638,8 @@ var ts; if (produceDiagnostics) { // Grammar checking accessors checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); + checkDecorators(node); + checkSignatureDeclaration(node); if (node.kind === 145 /* GetAccessor */) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 524288 /* HasImplicitReturn */)) { if (node.flags & 1048576 /* HasExplicitReturn */) { @@ -23960,6 +24652,12 @@ var ts; } } } + // Do not use hasDynamicName here, because that returns false for well known symbols. + // We want to perform checkComputedPropertyName for all computed properties, including + // well known symbols. + if (node.name.kind === 136 /* ComputedPropertyName */) { + checkComputedPropertyName(node.name); + } if (!ts.hasDynamicName(node)) { // TypeScript 1.0 spec (April 2014): 8.4.3 // Accessors for the same member name must specify the same accessibility. @@ -23982,18 +24680,32 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - checkFunctionLikeDeclaration(node); + if (node.parent.kind !== 167 /* ObjectLiteralExpression */) { + checkSourceElement(node.body); + } + else { + checkNodeDeferred(node); + } + } + function checkAccessorDeferred(node) { + checkSourceElement(node.body); } function checkMissingDeclaration(node) { checkDecorators(node); } - function checkTypeArgumentConstraints(typeParameters, typeArguments) { + function checkTypeArgumentConstraints(typeParameters, typeArgumentNodes) { + var typeArguments; + var mapper; var result = true; for (var i = 0; i < typeParameters.length; i++) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { + if (!typeArguments) { + typeArguments = ts.map(typeArgumentNodes, getTypeFromTypeNode); + mapper = createTypeMapper(typeParameters, typeArguments); + } var typeArgument = typeArguments[i]; - result = result && checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + result = result && checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), typeArgumentNodes[i], ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } return result; @@ -24059,7 +24771,7 @@ var ts; var signaturesToCheck; // Unnamed (call\construct) signatures in interfaces are inherited and not shadowed so examining just node symbol won't give complete answer. // Use declaring type to obtain full list of signatures. - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 215 /* InterfaceDeclaration */) { + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 217 /* InterfaceDeclaration */) { ts.Debug.assert(signatureDeclarationNode.kind === 147 /* CallSignature */ || signatureDeclarationNode.kind === 148 /* ConstructSignature */); var signatureKind = signatureDeclarationNode.kind === 147 /* CallSignature */ ? 0 /* Call */ : 1 /* Construct */; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); @@ -24071,7 +24783,7 @@ var ts; } for (var _i = 0, signaturesToCheck_1 = signaturesToCheck; _i < signaturesToCheck_1.length; _i++) { var otherSignature = signaturesToCheck_1[_i]; - if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { + if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature, /*ignoreReturnTypes*/ false)) { return; } } @@ -24081,9 +24793,9 @@ var ts; var flags = ts.getCombinedNodeFlags(n); // children of classes (even ambient classes) should not be marked as ambient or export // because those flags have no useful semantics there. - if (n.parent.kind !== 215 /* InterfaceDeclaration */ && - n.parent.kind !== 214 /* ClassDeclaration */ && - n.parent.kind !== 186 /* ClassExpression */ && + if (n.parent.kind !== 217 /* InterfaceDeclaration */ && + n.parent.kind !== 216 /* ClassDeclaration */ && + n.parent.kind !== 188 /* ClassExpression */ && ts.isInAmbientContext(n)) { if (!(flags & 4 /* Ambient */)) { // It is nested in an ambient context, which means it is automatically exported @@ -24164,16 +24876,23 @@ var ts; seen = c === node; } }); - if (subsequentNode) { + // We may be here because of some extra junk between overloads that could not be parsed into a valid node. + // In this case the subsequent node is not really consecutive (.pos !== node.end), and we must ignore it here. + if (subsequentNode && subsequentNode.pos === node.end) { if (subsequentNode.kind === node.kind) { var errorNode_1 = subsequentNode.name || subsequentNode; // TODO(jfreeman): These are methods, so handle computed name case if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - // the only situation when this is possible (same kind\same name but different symbol) - mixed static and instance class members - ts.Debug.assert(node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */); - ts.Debug.assert((node.flags & 64 /* Static */) !== (subsequentNode.flags & 64 /* Static */)); - var diagnostic = node.flags & 64 /* Static */ ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode_1, diagnostic); + var reportError = (node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */) && + (node.flags & 64 /* Static */) !== (subsequentNode.flags & 64 /* Static */); + // we can get here in two cases + // 1. mixed static and instance class members + // 2. something with the same name was defined before the set of overloads that prevents them from merging + // here we'll report error only for the first case since for second we should already report error in binder + if (reportError) { + var diagnostic = node.flags & 64 /* Static */ ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; + error(errorNode_1, diagnostic); + } return; } else if (ts.nodeIsPresent(subsequentNode.body)) { @@ -24206,7 +24925,7 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 215 /* InterfaceDeclaration */ || node.parent.kind === 155 /* TypeLiteral */ || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 217 /* InterfaceDeclaration */ || node.parent.kind === 155 /* TypeLiteral */ || inAmbientContext; if (inAmbientContextOrInterface) { // check if declarations are consecutive only if they are non-ambient // 1. ambient declarations can be interleaved @@ -24217,7 +24936,7 @@ var ts; // 2. mixing ambient and non-ambient declarations is a separate error that will be reported - do not want to report an extra one previousDeclaration = undefined; } - if (node.kind === 213 /* FunctionDeclaration */ || node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */ || node.kind === 144 /* Constructor */) { + if (node.kind === 215 /* FunctionDeclaration */ || node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */ || node.kind === 144 /* Constructor */) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -24288,7 +25007,7 @@ var ts; // The implementation is completely unrelated to the specialized signature, yet we do not check this. for (var _a = 0, signatures_3 = signatures; _a < signatures_3.length; _a++) { var signature = signatures_3[_a]; - if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + if (!signature.hasStringLiterals && !isImplementationCompatibleWithOverload(bodySignature, signature)) { error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } @@ -24357,16 +25076,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return 2097152 /* ExportType */; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return d.name.kind === 9 /* StringLiteral */ || ts.getModuleInstanceState(d) !== 0 /* NonInstantiated */ ? 4194304 /* ExportNamespace */ | 1048576 /* ExportValue */ : 4194304 /* ExportNamespace */; - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: return 2097152 /* ExportType */ | 1048576 /* ExportValue */; - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: var result = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); @@ -24587,6 +25306,8 @@ var ts; error(node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type, typeName); return unknownType; } + // If the Promise constructor, resolved locally, is an alias symbol we should mark it as referenced. + checkReturnTypeAnnotationAsExpression(node); // Validate the promise constructor type. var promiseConstructorType = getTypeOfSymbol(promiseConstructor); if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type)) { @@ -24594,10 +25315,10 @@ var ts; } // Verify there is no local declaration that could collide with the promise constructor. var promiseName = ts.getEntityNameFromTypeNode(node.type); - var root = getFirstIdentifier(promiseName); - var rootSymbol = getSymbol(node.locals, root.text, 107455 /* Value */); + var promiseNameOrNamespaceRoot = getFirstIdentifier(promiseName); + var rootSymbol = getSymbol(node.locals, promiseNameOrNamespaceRoot.text, 107455 /* Value */); if (rootSymbol) { - error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, root.text, getFullyQualifiedName(promiseConstructor)); + error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, promiseNameOrNamespaceRoot.text, getFullyQualifiedName(promiseConstructor)); return unknownType; } // Get and return the awaited type of the return type. @@ -24614,7 +25335,7 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); @@ -24662,23 +25383,10 @@ var ts; * an expression if it is a type reference to a type with a value declaration. */ function checkTypeAnnotationAsExpression(node) { - switch (node.kind) { - case 141 /* PropertyDeclaration */: - checkTypeNodeAsExpression(node.type); - break; - case 138 /* Parameter */: - checkTypeNodeAsExpression(node.type); - break; - case 143 /* MethodDeclaration */: - checkTypeNodeAsExpression(node.type); - break; - case 145 /* GetAccessor */: - checkTypeNodeAsExpression(node.type); - break; - case 146 /* SetAccessor */: - checkTypeNodeAsExpression(ts.getSetAccessorTypeAnnotationNode(node)); - break; - } + checkTypeNodeAsExpression(node.type); + } + function checkReturnTypeAnnotationAsExpression(node) { + checkTypeNodeAsExpression(node.type); } /** Checks the type annotation of the parameters of a function/method or the constructor of a class as expressions */ function checkParameterTypeAnnotationsAsExpressions(node) { @@ -24704,17 +25412,18 @@ var ts; if (compilerOptions.emitDecoratorMetadata) { // we only need to perform these checks if we are emitting serialized type metadata for the target of a decorator. switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; case 143 /* MethodDeclaration */: - checkParameterTypeAnnotationsAsExpressions(node); - // fall-through - case 146 /* SetAccessor */: case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + checkParameterTypeAnnotationsAsExpressions(node); + checkReturnTypeAnnotationAsExpression(node); + break; case 141 /* PropertyDeclaration */: case 138 /* Parameter */: checkTypeAnnotationAsExpression(node); @@ -24729,13 +25438,13 @@ var ts; } function checkFunctionDeclaration(node) { if (produceDiagnostics) { - checkFunctionLikeDeclaration(node) || checkGrammarForGenerator(node); + checkFunctionOrMethodDeclaration(node) || checkGrammarForGenerator(node); checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); } } - function checkFunctionLikeDeclaration(node) { + function checkFunctionOrMethodDeclaration(node) { checkDecorators(node); checkSignatureDeclaration(node); var isAsync = ts.isAsyncFunctionLike(node); @@ -24756,7 +25465,13 @@ var ts; // - if node.localSymbol === undefined - this node is non-exported so we can just pick the result of getSymbolOfNode var symbol = getSymbolOfNode(node); var localSymbol = node.localSymbol || symbol; - var firstDeclaration = ts.getDeclarationOfKind(localSymbol, node.kind); + // Since the javascript won't do semantic analysis like typescript, + // if the javascript file comes before the typescript file and both contain same name functions, + // checkFunctionOrConstructorSymbol wouldn't be called if we didnt ignore javascript function. + var firstDeclaration = ts.forEach(localSymbol.declarations, + // Get first non javascript function declaration + function (declaration) { return declaration.kind === node.kind && !ts.isSourceFileJavaScript(getSourceFile(declaration)) ? + declaration : undefined; }); // Only type check the symbol once if (node === firstDeclaration) { checkFunctionOrConstructorSymbol(localSymbol); @@ -24770,13 +25485,9 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { - var returnType = getTypeFromTypeNode(node.type); - var promisedType; - if (isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + if (!node.asteriskToken) { + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (produceDiagnostics && !node.type) { // Report an implicit any error if there is no body, no explicit return type, and node is not a private method @@ -24794,13 +25505,10 @@ var ts; } function checkBlock(node) { // Grammar checking for SyntaxKind.Block - if (node.kind === 192 /* Block */) { + if (node.kind === 194 /* Block */) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 219 /* ModuleBlock */) { - checkFunctionAndClassExpressionBodies(node); - } } function checkCollisionWithArgumentsInGeneratedCode(node) { // no rest parameters \ declaration context \ overload - no codegen impact @@ -24884,12 +25592,12 @@ var ts; return; } // Uninstantiated modules shouldnt do this check - if (node.kind === 218 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { + if (node.kind === 220 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return; } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent var parent = getDeclarationContainer(node); - if (parent.kind === 248 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 250 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { // If the declaration happens to be in external module, report error that require and exports are reserved keywords error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } @@ -24924,7 +25632,7 @@ var ts; // skip variable declarations that don't have initializers // NOTE: in ES6 spec initializer is required in variable declarations where name is binding pattern // so we'll always treat binding elements as initialized - if (node.kind === 211 /* VariableDeclaration */ && !node.initializer) { + if (node.kind === 213 /* VariableDeclaration */ && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -24934,17 +25642,17 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2 /* BlockScopedVariable */) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 24576 /* BlockScoped */) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 212 /* VariableDeclarationList */); - var container = varDeclList.parent.kind === 193 /* VariableStatement */ && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 214 /* VariableDeclarationList */); + var container = varDeclList.parent.kind === 195 /* VariableStatement */ && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; // names of block-scoped and function scoped variables can collide only // if block scoped variable is defined in the function\module\source file scope (because of variable hoisting) var namesShareScope = container && - (container.kind === 192 /* Block */ && ts.isFunctionLike(container.parent) || - container.kind === 219 /* ModuleBlock */ || - container.kind === 218 /* ModuleDeclaration */ || - container.kind === 248 /* SourceFile */); + (container.kind === 194 /* Block */ && ts.isFunctionLike(container.parent) || + container.kind === 221 /* ModuleBlock */ || + container.kind === 220 /* ModuleDeclaration */ || + container.kind === 250 /* SourceFile */); // here we know that function scoped variable is shadowed by block scoped one // if they are defined in the same scope - binder has already reported redeclaration error // otherwise if variable has an initializer - show error that initialization will fail @@ -25002,7 +25710,7 @@ var ts; checkExpressionCached(node.initializer); } } - if (node.kind === 163 /* BindingElement */) { + if (node.kind === 165 /* BindingElement */) { // check computed properties inside property names of binding elements if (node.propertyName && node.propertyName.kind === 136 /* ComputedPropertyName */) { checkComputedPropertyName(node.propertyName); @@ -25048,7 +25756,7 @@ var ts; if (node.kind !== 141 /* PropertyDeclaration */ && node.kind !== 140 /* PropertySignature */) { // We know we don't have a binding pattern or computed name here checkExportsOnMergedDeclarations(node); - if (node.kind === 211 /* VariableDeclaration */ || node.kind === 163 /* BindingElement */) { + if (node.kind === 213 /* VariableDeclaration */ || node.kind === 165 /* BindingElement */) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -25071,7 +25779,7 @@ var ts; } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { // We only disallow modifier on a method declaration if it is a property of object-literal-expression - if (node.modifiers && node.parent.kind === 165 /* ObjectLiteralExpression */) { + if (node.modifiers && node.parent.kind === 167 /* ObjectLiteralExpression */) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -25092,7 +25800,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 194 /* EmptyStatement */) { + if (node.thenStatement.kind === 196 /* EmptyStatement */) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -25112,12 +25820,12 @@ var ts; function checkForStatement(node) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 214 /* VariableDeclarationList */) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -25137,14 +25845,14 @@ var ts; // via checkRightHandSideOfForOf. // If the LHS is an expression, check the LHS, as a destructuring assignment or as a reference. // Then check that the RHS is assignable to it. - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); // There may be a destructuring assignment on the left side - if (varExpr.kind === 164 /* ArrayLiteralExpression */ || varExpr.kind === 165 /* ObjectLiteralExpression */) { + if (varExpr.kind === 166 /* ArrayLiteralExpression */ || varExpr.kind === 167 /* ObjectLiteralExpression */) { // iteratedType may be undefined. In this case, we still want to check the structure of // varExpr, in particular making sure it's a valid LeftHandSideExpression. But we'd like // to short circuit the type relation checking as much as possible, so we pass the unknownType. @@ -25173,7 +25881,7 @@ var ts; // for (let VarDecl in Expr) Statement // VarDecl must be a variable declaration without a type annotation that declares a variable of type Any, // and Expr must be an expression of type Any, an object type, or a type parameter type. - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -25187,7 +25895,7 @@ var ts; // and Expr must be an expression of type Any, an object type, or a type parameter type. var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 164 /* ArrayLiteralExpression */ || varExpr.kind === 165 /* ObjectLiteralExpression */) { + if (varExpr.kind === 166 /* ArrayLiteralExpression */ || varExpr.kind === 167 /* ObjectLiteralExpression */) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258 /* StringLike */)) { @@ -25383,7 +26091,13 @@ var ts; ts.Debug.assert(languageVersion < 2 /* ES6 */); // After we remove all types that are StringLike, we will know if there was a string constituent // based on whether the remaining type is the same as the initial type. - var arrayType = removeTypesFromUnionType(arrayOrStringType, 258 /* StringLike */, /*isTypeOfKind*/ true, /*allowEmptyUnionResult*/ true); + var arrayType = arrayOrStringType; + if (arrayOrStringType.flags & 16384 /* Union */) { + arrayType = getUnionType(ts.filter(arrayOrStringType.types, function (t) { return !(t.flags & 258 /* StringLike */); })); + } + else if (arrayOrStringType.flags & 258 /* StringLike */) { + arrayType = emptyUnionType; + } var hasStringConstituent = arrayOrStringType !== arrayType; var reportedError = false; if (hasStringConstituent) { @@ -25457,7 +26171,7 @@ var ts; error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } - else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || signature.typePredicate) { + else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || returnType.flags & 134217728 /* PredicateType */) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -25494,7 +26208,7 @@ var ts; var expressionTypeIsStringLike = someConstituentTypeHasKind(expressionType, 258 /* StringLike */); ts.forEach(node.caseBlock.clauses, function (clause) { // Grammar check for duplicate default clauses, skip if we already report duplicate default clause - if (clause.kind === 242 /* DefaultClause */ && !hasDuplicateDefaultClause) { + if (clause.kind === 244 /* DefaultClause */ && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -25506,17 +26220,17 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 241 /* CaseClause */) { + if (produceDiagnostics && clause.kind === 243 /* CaseClause */) { var caseClause = clause; // TypeScript 1.0 spec (April 2014):5.9 // In a 'switch' statement, each 'case' expression must be of a type that is assignable to or from the type of the 'switch' expression. var caseType = checkExpression(caseClause.expression); + var expressionTypeIsAssignableToCaseType = // Permit 'number[] | "foo"' to be asserted to 'string'. - if (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258 /* StringLike */)) { - return; - } - if (!isTypeAssignableTo(expressionType, caseType)) { - // check 'expressionType isAssignableTo caseType' failed, try the reversed check and report errors if it fails + (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258 /* StringLike */)) || + isTypeAssignableTo(expressionType, caseType); + if (!expressionTypeIsAssignableToCaseType) { + // 'expressionType is not assignable to caseType', try the reversed check and report errors if it fails checkTypeAssignableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); } } @@ -25531,7 +26245,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 207 /* LabeledStatement */ && current.label.text === node.label.text) { + if (current.kind === 209 /* LabeledStatement */ && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -25688,8 +26402,12 @@ var ts; } function checkClassExpression(node) { checkClassLikeDeclaration(node); + checkNodeDeferred(node); return getTypeOfSymbol(getSymbolOfNode(node)); } + function checkClassExpressionDeferred(node) { + ts.forEach(node.members, checkSourceElement); + } function checkClassDeclaration(node) { if (!node.name && !(node.flags & 512 /* Default */)) { grammarErrorOnFirstToken(node, ts.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); @@ -25814,7 +26532,7 @@ var ts; // If there is no declaration for the derived class (as in the case of class expressions), // then the class cannot be declared abstract. if (baseDeclarationFlags & 128 /* Abstract */ && (!derivedClassDecl || !(derivedClassDecl.flags & 128 /* Abstract */))) { - if (derivedClassDecl.kind === 186 /* ClassExpression */) { + if (derivedClassDecl.kind === 188 /* ClassExpression */) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -25932,7 +26650,7 @@ var ts; checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 215 /* InterfaceDeclaration */); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 217 /* InterfaceDeclaration */); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -26006,7 +26724,8 @@ var ts; error(member.name, ts.Diagnostics.Enum_member_must_have_initializer); } if (autoValue !== undefined) { - getNodeLinks(member).enumMemberValue = autoValue++; + getNodeLinks(member).enumMemberValue = autoValue; + autoValue++; } } nodeLinks.flags |= 8192 /* EnumValuesComputed */; @@ -26041,7 +26760,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -26052,7 +26771,7 @@ var ts; case 50 /* TildeToken */: return ~value_1; } return undefined; - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -26077,11 +26796,11 @@ var ts; return undefined; case 8 /* NumericLiteral */: return +e.text; - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return evalConstant(e.expression); case 69 /* Identifier */: - case 167 /* ElementAccessExpression */: - case 166 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 168 /* PropertyAccessExpression */: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -26094,7 +26813,7 @@ var ts; } else { var expression; - if (e.kind === 167 /* ElementAccessExpression */) { + if (e.kind === 169 /* ElementAccessExpression */) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9 /* StringLiteral */) { return undefined; @@ -26112,7 +26831,7 @@ var ts; if (current.kind === 69 /* Identifier */) { break; } - else if (current.kind === 166 /* PropertyAccessExpression */) { + else if (current.kind === 168 /* PropertyAccessExpression */) { current = current.expression; } else { @@ -26183,7 +26902,7 @@ var ts; var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { // return true if we hit a violation of the rule, false otherwise - if (declaration.kind !== 217 /* EnumDeclaration */) { + if (declaration.kind !== 219 /* EnumDeclaration */) { return false; } var enumDeclaration = declaration; @@ -26206,8 +26925,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 214 /* ClassDeclaration */ || - (declaration.kind === 213 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 216 /* ClassDeclaration */ || + (declaration.kind === 215 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -26263,7 +26982,7 @@ var ts; } // if the module merges with a class declaration in the same lexical scope, // we need to track this to ensure the correct emit. - var mergedClass = ts.getDeclarationOfKind(symbol, 214 /* ClassDeclaration */); + var mergedClass = ts.getDeclarationOfKind(symbol, 216 /* ClassDeclaration */); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768 /* LexicalModuleMergesWithClass */; @@ -26286,7 +27005,7 @@ var ts; if (node.kind === 135 /* QualifiedName */) { node = node.left; } - else if (node.kind === 166 /* PropertyAccessExpression */) { + else if (node.kind === 168 /* PropertyAccessExpression */) { node = node.expression; } else { @@ -26302,9 +27021,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 219 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; - if (node.parent.kind !== 248 /* SourceFile */ && !inAmbientExternalModule) { - error(moduleName, node.kind === 228 /* ExportDeclaration */ ? + var inAmbientExternalModule = node.parent.kind === 221 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; + if (node.parent.kind !== 250 /* SourceFile */ && !inAmbientExternalModule) { + error(moduleName, node.kind === 230 /* ExportDeclaration */ ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -26327,7 +27046,7 @@ var ts; (symbol.flags & 793056 /* Type */ ? 793056 /* Type */ : 0) | (symbol.flags & 1536 /* Namespace */ ? 1536 /* Namespace */ : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 230 /* ExportSpecifier */ ? + var message = node.kind === 232 /* ExportSpecifier */ ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -26354,7 +27073,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 226 /* NamespaceImport */) { checkImportBinding(importClause.namedBindings); } else { @@ -26411,8 +27130,8 @@ var ts; // export { x, y } // export { x, y } from "foo" ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 219 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; - if (node.parent.kind !== 248 /* SourceFile */ && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 221 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; + if (node.parent.kind !== 250 /* SourceFile */ && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -26426,7 +27145,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 248 /* SourceFile */ && node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 218 /* ModuleDeclaration */) { + if (node.parent.kind !== 250 /* SourceFile */ && node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 220 /* ModuleDeclaration */) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -26441,8 +27160,8 @@ var ts; // If we hit an export assignment in an illegal context, just bail out to avoid cascading errors. return; } - var container = node.parent.kind === 248 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 218 /* ModuleDeclaration */ && container.name.kind === 69 /* Identifier */) { + var container = node.parent.kind === 250 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 220 /* ModuleDeclaration */ && container.name.kind === 69 /* Identifier */) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -26468,15 +27187,6 @@ var ts; } } } - function getModuleStatements(node) { - if (node.kind === 248 /* SourceFile */) { - return node.statements; - } - if (node.kind === 218 /* ModuleDeclaration */ && node.body.kind === 219 /* ModuleBlock */) { - return node.body.statements; - } - return emptyArray; - } function hasExportedMembers(moduleSymbol) { for (var id in moduleSymbol.exports) { if (id !== "export=") { @@ -26494,13 +27204,43 @@ var ts; var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } + // Checks for export * conflicts + var exports = getExportsOfModule(moduleSymbol); + for (var id in exports) { + if (id === "__export") { + continue; + } + var _a = exports[id], declarations = _a.declarations, flags = _a.flags; + // 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 & (1536 /* Namespace */ | 64 /* Interface */ | 384 /* Enum */)) && (flags & 524288 /* TypeAlias */ ? declarations.length - 1 : declarations.length) > 1) { + var exportedDeclarations = ts.filter(declarations, isNotOverload); + if (exportedDeclarations.length > 1) { + for (var _i = 0, exportedDeclarations_1 = exportedDeclarations; _i < exportedDeclarations_1.length; _i++) { + var declaration = exportedDeclarations_1[_i]; + diagnostics.add(ts.createDiagnosticForNode(declaration, ts.Diagnostics.Cannot_redeclare_exported_variable_0, id)); + } + } + } + } links.exportsChecked = true; } + function isNotOverload(declaration) { + return declaration.kind !== 215 /* FunctionDeclaration */ || !!declaration.body; + } } function checkTypePredicate(node) { - if (!isInLegalTypePredicatePosition(node)) { + var parameterName = node.parameterName; + if (parameterName.kind === 69 /* Identifier */ && !isInLegalParameterTypePredicatePosition(node)) { error(node, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); } + else if (parameterName.kind === 161 /* ThisType */) { + if (!isInLegalThisTypePredicatePosition(node)) { + error(node, ts.Diagnostics.A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods); + } + else { + getTypeFromThisTypeNode(parameterName); + } + } } function checkSourceElement(node) { if (!node) { @@ -26511,10 +27251,10 @@ var ts; // Only bother checking on a few construct kinds. We don't want to be excessivly // hitting the cancellation token on every node we check. switch (kind) { - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } @@ -26558,71 +27298,71 @@ var ts; return checkUnionOrIntersectionType(node); case 160 /* ParenthesizedType */: return checkSourceElement(node.type); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return checkFunctionDeclaration(node); - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return checkBlock(node); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return checkVariableStatement(node); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return checkExpressionStatement(node); - case 196 /* IfStatement */: + case 198 /* IfStatement */: return checkIfStatement(node); - case 197 /* DoStatement */: + case 199 /* DoStatement */: return checkDoStatement(node); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: return checkWhileStatement(node); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return checkForStatement(node); - case 200 /* ForInStatement */: + case 202 /* ForInStatement */: return checkForInStatement(node); - case 201 /* ForOfStatement */: + case 203 /* ForOfStatement */: return checkForOfStatement(node); - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 205 /* BreakStatement */: return checkBreakOrContinueStatement(node); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return checkReturnStatement(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return checkWithStatement(node); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return checkSwitchStatement(node); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return checkLabeledStatement(node); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: return checkThrowStatement(node); - case 209 /* TryStatement */: + case 211 /* TryStatement */: return checkTryStatement(node); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return checkVariableDeclaration(node); - case 163 /* BindingElement */: + case 165 /* BindingElement */: return checkBindingElement(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return checkClassDeclaration(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return checkInterfaceDeclaration(node); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return checkTypeAliasDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return checkEnumDeclaration(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return checkModuleDeclaration(node); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return checkImportDeclaration(node); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return checkImportEqualsDeclaration(node); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return checkExportDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return checkExportAssignment(node); - case 194 /* EmptyStatement */: + case 196 /* EmptyStatement */: checkGrammarStatementInAmbientContext(node); return; - case 210 /* DebuggerStatement */: + case 212 /* DebuggerStatement */: checkGrammarStatementInAmbientContext(node); return; - case 231 /* MissingDeclaration */: + case 233 /* MissingDeclaration */: return checkMissingDeclaration(node); } } @@ -26635,102 +27375,29 @@ var ts; // Here, performing a full type check of the body of the function expression whilst in the process of // determining the type of foo would cause foo to be given type any because of the recursive reference. // Delaying the type check of the body ensures foo has been assigned a type. - function checkFunctionAndClassExpressionBodies(node) { - switch (node.kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - checkFunctionExpressionOrObjectLiteralMethodBody(node); - break; - case 186 /* ClassExpression */: - ts.forEach(node.members, checkSourceElement); - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - ts.forEach(node.decorators, checkFunctionAndClassExpressionBodies); - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - if (ts.isObjectLiteralMethod(node)) { - checkFunctionExpressionOrObjectLiteralMethodBody(node); - } - break; - case 144 /* Constructor */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - break; - case 205 /* WithStatement */: - checkFunctionAndClassExpressionBodies(node.expression); - break; - case 139 /* Decorator */: - case 138 /* Parameter */: - case 141 /* PropertyDeclaration */: - case 140 /* PropertySignature */: - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: - case 163 /* BindingElement */: - case 164 /* ArrayLiteralExpression */: - case 165 /* ObjectLiteralExpression */: - case 245 /* PropertyAssignment */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 170 /* TaggedTemplateExpression */: - case 183 /* TemplateExpression */: - case 190 /* TemplateSpan */: - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: - case 172 /* ParenthesizedExpression */: - case 176 /* TypeOfExpression */: - case 177 /* VoidExpression */: - case 178 /* AwaitExpression */: - case 175 /* DeleteExpression */: - case 179 /* PrefixUnaryExpression */: - case 180 /* PostfixUnaryExpression */: - case 181 /* BinaryExpression */: - case 182 /* ConditionalExpression */: - case 185 /* SpreadElementExpression */: - case 184 /* YieldExpression */: - case 192 /* Block */: - case 219 /* ModuleBlock */: - case 193 /* VariableStatement */: - case 195 /* ExpressionStatement */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: - case 204 /* ReturnStatement */: - case 206 /* SwitchStatement */: - case 220 /* CaseBlock */: - case 241 /* CaseClause */: - case 242 /* DefaultClause */: - case 207 /* LabeledStatement */: - case 208 /* ThrowStatement */: - case 209 /* TryStatement */: - case 244 /* CatchClause */: - case 211 /* VariableDeclaration */: - case 212 /* VariableDeclarationList */: - case 214 /* ClassDeclaration */: - case 243 /* HeritageClause */: - case 188 /* ExpressionWithTypeArguments */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 227 /* ExportAssignment */: - case 248 /* SourceFile */: - case 240 /* JsxExpression */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 238 /* JsxAttribute */: - case 239 /* JsxSpreadAttribute */: - case 235 /* JsxOpeningElement */: - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; + function checkNodeDeferred(node) { + if (deferredNodes) { + deferredNodes.push(node); + } + } + function checkDeferredNodes() { + for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { + var node = deferredNodes_1[_i]; + switch (node.kind) { + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 143 /* MethodDeclaration */: + case 142 /* MethodSignature */: + checkFunctionExpressionOrObjectLiteralMethodDeferred(node); + break; + case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + checkAccessorDeferred(node); + break; + case 188 /* ClassExpression */: + checkClassExpressionDeferred(node); + break; + } } } function checkSourceFile(node) { @@ -26756,9 +27423,12 @@ var ts; emitExtends = false; emitDecorate = false; emitParam = false; + emitAwaiter = false; potentialThisCollisions.length = 0; + deferredNodes = []; ts.forEach(node.statements, checkSourceElement); - checkFunctionAndClassExpressionBodies(node); + checkDeferredNodes(); + deferredNodes = undefined; if (ts.isExternalOrCommonJsModule(node)) { checkExternalModuleExports(node); } @@ -26818,7 +27488,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 205 /* WithStatement */ && node.parent.statement === node) { + if (node.parent.kind === 207 /* WithStatement */ && node.parent.statement === node) { return true; } node = node.parent; @@ -26841,25 +27511,25 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931 /* ModuleMember */); break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8 /* EnumMember */); break; - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } // fall through; this fall-through is necessary because we would like to handle // type parameter inside class expression similar to how we handle it in classDeclaration and interface Declaration - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: // If we didn't come from static member of class or interface, // add the type parameters into the symbol table // (type parameters of classDeclaration/classExpression and interface are in member property of the symbol. @@ -26868,7 +27538,7 @@ var ts; copySymbols(getSymbolOfNode(location).members, meaning & 793056 /* Type */); } break; - case 173 /* FunctionExpression */: + case 175 /* FunctionExpression */: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -26918,10 +27588,10 @@ var ts; function isTypeDeclaration(node) { switch (node.kind) { case 137 /* TypeParameter */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 219 /* EnumDeclaration */: return true; } } @@ -26935,19 +27605,19 @@ var ts; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 166 /* PropertyAccessExpression */) { + while (node.parent && node.parent.kind === 168 /* PropertyAccessExpression */) { node = node.parent; } - return node.parent && node.parent.kind === 188 /* ExpressionWithTypeArguments */; + return node.parent && node.parent.kind === 190 /* ExpressionWithTypeArguments */; } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { while (nodeOnRightSide.parent.kind === 135 /* QualifiedName */) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 221 /* ImportEqualsDeclaration */) { + if (nodeOnRightSide.parent.kind === 223 /* ImportEqualsDeclaration */) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 227 /* ExportAssignment */) { + if (nodeOnRightSide.parent.kind === 229 /* ExportAssignment */) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -26959,11 +27629,11 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 227 /* ExportAssignment */) { + if (entityName.parent.kind === 229 /* ExportAssignment */) { return resolveEntityName(entityName, /*all meanings*/ 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */); } - if (entityName.kind !== 166 /* PropertyAccessExpression */) { + if (entityName.kind !== 168 /* PropertyAccessExpression */) { if (isInRightSideOfImportOrExportAssignment(entityName)) { // Since we already checked for ExportAssignment, this really could only be an Import return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); @@ -26975,7 +27645,7 @@ var ts; if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0 /* None */; // In an interface or class, we're definitely interested in a type. - if (entityName.parent.kind === 188 /* ExpressionWithTypeArguments */) { + if (entityName.parent.kind === 190 /* ExpressionWithTypeArguments */) { meaning = 793056 /* Type */; // In a class 'extends' clause we are also looking for a value. if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { @@ -26988,9 +27658,9 @@ var ts; meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 235 /* JsxOpeningElement */) || - (entityName.parent.kind === 234 /* JsxSelfClosingElement */) || - (entityName.parent.kind === 237 /* JsxClosingElement */)) { + else if ((entityName.parent.kind === 237 /* JsxOpeningElement */) || + (entityName.parent.kind === 236 /* JsxSelfClosingElement */) || + (entityName.parent.kind === 239 /* JsxClosingElement */)) { return getJsxElementTagSymbol(entityName.parent); } else if (ts.isExpression(entityName)) { @@ -27004,7 +27674,7 @@ var ts; var meaning = 107455 /* Value */ | 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 166 /* PropertyAccessExpression */) { + else if (entityName.kind === 168 /* PropertyAccessExpression */) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); @@ -27026,7 +27696,7 @@ var ts; meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 238 /* JsxAttribute */) { + else if (entityName.parent.kind === 240 /* JsxAttribute */) { return getJsxAttributePropertySymbol(entityName.parent); } if (entityName.parent.kind === 150 /* TypePredicate */) { @@ -27046,12 +27716,12 @@ var ts; } if (node.kind === 69 /* Identifier */) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 227 /* ExportAssignment */ + return node.parent.kind === 229 /* ExportAssignment */ ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 163 /* BindingElement */ && - node.parent.parent.kind === 161 /* ObjectBindingPattern */ && + else if (node.parent.kind === 165 /* BindingElement */ && + node.parent.parent.kind === 163 /* ObjectBindingPattern */ && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -27062,13 +27732,15 @@ var ts; } switch (node.kind) { case 69 /* Identifier */: - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 135 /* QualifiedName */: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97 /* ThisKeyword */: case 95 /* SuperKeyword */: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; + case 161 /* ThisType */: + return getTypeFromTypeNode(node).symbol; case 121 /* ConstructorKeyword */: // constructor keyword for an overload, should take us to the definition if it exist var constructorDeclaration = node.parent; @@ -27080,14 +27752,14 @@ var ts; // External module name in an import declaration if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 222 /* ImportDeclaration */ || node.parent.kind === 228 /* ExportDeclaration */) && + ((node.parent.kind === 224 /* ImportDeclaration */ || node.parent.kind === 230 /* ExportDeclaration */) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } // Fall through case 8 /* NumericLiteral */: // index access - if (node.parent.kind === 167 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { + if (node.parent.kind === 169 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -27104,7 +27776,7 @@ var ts; // The function returns a value symbol of an identifier in the short-hand property assignment. // This is necessary as an identifier in short-hand property assignment can contains two meaning: // property name and property value. - if (location && location.kind === 246 /* ShorthandPropertyAssignment */) { + if (location && location.kind === 248 /* ShorthandPropertyAssignment */) { return resolveEntityName(location.name, 107455 /* Value */); } return undefined; @@ -27207,6 +27879,30 @@ var ts; function isArgumentsLocalBinding(node) { return getReferencedValueSymbol(node) === argumentsSymbol; } + function moduleExportsSomeValue(moduleReferenceExpression) { + var moduleSymbol = resolveExternalModuleName(moduleReferenceExpression.parent, moduleReferenceExpression); + if (!moduleSymbol) { + // module not found - be conservative + return true; + } + var hasExportAssignment = getExportAssignmentSymbol(moduleSymbol) !== undefined; + // if module has export assignment then 'resolveExternalModuleSymbol' will return resolved symbol for export assignment + // otherwise it will return moduleSymbol itself + moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); + var 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 & 107455 /* Value */) + : ts.forEachValue(getExportsOfModule(moduleSymbol), isValue); + } + return symbolLinks.exportsSomeValue; + function isValue(s) { + s = resolveSymbol(s); + return s && !!(s.flags & 107455 /* 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) { @@ -27224,11 +27920,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 248 /* SourceFile */) { + if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 250 /* SourceFile */) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 218 /* ModuleDeclaration */ || n.kind === 217 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 220 /* ModuleDeclaration */ || n.kind === 219 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -27243,11 +27939,11 @@ var ts; } function isStatementWithLocals(node) { switch (node.kind) { - case 192 /* Block */: - case 220 /* CaseBlock */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 194 /* Block */: + case 222 /* CaseBlock */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return true; } return false; @@ -27277,22 +27973,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 221 /* ImportEqualsDeclaration */: - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: return isAliasResolvedToValue(getSymbolOfNode(node)); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return node.expression && node.expression.kind === 69 /* Identifier */ ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 248 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 250 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { // parent is not source file or it is not reference to internal module return false; } @@ -27354,7 +28050,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 247 /* EnumMember */) { + if (node.kind === 249 /* EnumMember */) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -27446,17 +28142,6 @@ var ts; var symbol = getReferencedValueSymbol(reference); return symbol && getExportSymbolOfValueSymbolIfExported(symbol).valueDeclaration; } - function instantiateSingleCallFunctionType(functionType, typeArguments) { - if (functionType === unknownType) { - return unknownType; - } - var signature = getSingleCallSignature(functionType); - if (!signature) { - return unknownType; - } - var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); - return getOrCreateTypeFromSignature(instantiatedSignature); - } function createResolver() { return { getReferencedExportContainer: getReferencedExportContainer, @@ -27480,6 +28165,7 @@ var ts; getReferencedValueDeclaration: getReferencedValueDeclaration, getTypeReferenceSerializationKind: getTypeReferenceSerializationKind, isOptionalParameter: isOptionalParameter, + moduleExportsSomeValue: moduleExportsSomeValue, isArgumentsLocalBinding: isArgumentsLocalBinding, getExternalModuleFileFromDeclaration: getExternalModuleFileFromDeclaration }; @@ -27490,7 +28176,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 248 /* SourceFile */); + return ts.getDeclarationOfKind(moduleSymbol, 250 /* SourceFile */); } function initializeTypeChecker() { // Bind all source files and propagate errors @@ -27503,10 +28189,11 @@ var ts; mergeSymbolTable(globals, file.locals); } }); + // Setup global builtins + addToSymbolTable(globals, builtinGlobals, ts.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0); 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"); @@ -27575,7 +28262,12 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + if (node.kind === 143 /* MethodDeclaration */ && !ts.nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } + else { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + } } else if (node.kind === 145 /* GetAccessor */ || node.kind === 146 /* SetAccessor */) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); @@ -27595,30 +28287,30 @@ var ts; case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 149 /* IndexSignature */: - case 218 /* ModuleDeclaration */: - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 228 /* ExportDeclaration */: - case 227 /* ExportAssignment */: + case 220 /* ModuleDeclaration */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 230 /* ExportDeclaration */: + case 229 /* ExportAssignment */: case 138 /* Parameter */: break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118 /* AsyncKeyword */) && - node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 248 /* SourceFile */) { + node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 250 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 193 /* VariableStatement */: - case 216 /* TypeAliasDeclaration */: - if (node.modifiers && node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 248 /* SourceFile */) { + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 195 /* VariableStatement */: + case 218 /* TypeAliasDeclaration */: + if (node.modifiers && node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 250 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74 /* ConstKeyword */) && - node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 248 /* SourceFile */) { + node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 250 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -27633,6 +28325,11 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; switch (modifier.kind) { + case 74 /* ConstKeyword */: + if (node.kind !== 219 /* EnumDeclaration */ && node.parent.kind === 216 /* ClassDeclaration */) { + return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74 /* ConstKeyword */)); + } + break; case 112 /* PublicKeyword */: case 111 /* ProtectedKeyword */: case 110 /* PrivateKeyword */: @@ -27657,7 +28354,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 219 /* ModuleBlock */ || node.parent.kind === 248 /* SourceFile */) { + else if (node.parent.kind === 221 /* ModuleBlock */ || node.parent.kind === 250 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } else if (flags & 128 /* Abstract */) { @@ -27677,7 +28374,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 219 /* ModuleBlock */ || node.parent.kind === 248 /* SourceFile */) { + else if (node.parent.kind === 221 /* ModuleBlock */ || node.parent.kind === 250 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } else if (node.kind === 138 /* Parameter */) { @@ -27702,7 +28399,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } else if (node.kind === 138 /* Parameter */) { @@ -27717,13 +28414,13 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } else if (node.kind === 138 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 219 /* ModuleBlock */) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 221 /* ModuleBlock */) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 4 /* Ambient */; @@ -27733,11 +28430,11 @@ var ts; if (flags & 128 /* Abstract */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 214 /* ClassDeclaration */) { + if (node.kind !== 216 /* ClassDeclaration */) { if (node.kind !== 143 /* MethodDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_or_method_declaration); } - if (!(node.parent.kind === 214 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { + if (!(node.parent.kind === 216 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 64 /* Static */) { @@ -27782,7 +28479,7 @@ var ts; } return; } - else if ((node.kind === 222 /* ImportDeclaration */ || node.kind === 221 /* ImportEqualsDeclaration */) && flags & 4 /* Ambient */) { + else if ((node.kind === 224 /* ImportDeclaration */ || node.kind === 223 /* ImportEqualsDeclaration */) && flags & 4 /* Ambient */) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } else if (node.kind === 138 /* Parameter */ && (flags & 56 /* AccessibilityModifier */) && ts.isBindingPattern(node.name)) { @@ -27798,9 +28495,9 @@ var ts; } switch (node.kind) { case 143 /* MethodDeclaration */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: if (!node.asteriskToken) { return false; } @@ -27866,7 +28563,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 174 /* ArrowFunction */) { + if (node.kind === 176 /* ArrowFunction */) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -27934,7 +28631,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 187 /* OmittedExpression */) { + if (arg.kind === 189 /* OmittedExpression */) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -28012,14 +28709,14 @@ var ts; return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 181 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { + if (computedPropertyName.expression.kind === 183 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 213 /* FunctionDeclaration */ || - node.kind === 173 /* FunctionExpression */ || + ts.Debug.assert(node.kind === 215 /* FunctionDeclaration */ || + node.kind === 175 /* FunctionExpression */ || node.kind === 143 /* MethodDeclaration */); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); @@ -28043,20 +28740,25 @@ var ts; var GetAccessor = 2; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; - for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { - var prop = _a[_i]; + var _loop_1 = function(prop) { var name_16 = prop.name; - if (prop.kind === 187 /* OmittedExpression */ || + if (prop.kind === 189 /* OmittedExpression */ || name_16.kind === 136 /* ComputedPropertyName */) { // If the name is not a ComputedPropertyName, the grammar checking will skip it checkGrammarComputedPropertyName(name_16); - continue; + return "continue"; } - if (prop.kind === 246 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { + if (prop.kind === 248 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { // having objectAssignmentInitializer is only valid in ObjectAssignmentPattern // outside of destructuring it is a syntax error - return grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment); + return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } + // Modifiers are never allowed on properties except for 'async' on a method declaration + ts.forEach(prop.modifiers, function (mod) { + if (mod.kind !== 118 /* AsyncKeyword */ || prop.kind !== 143 /* MethodDeclaration */) { + grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); + } + }); // ECMA-262 11.1.5 Object Initialiser // If previous is not undefined then throw a SyntaxError exception if any of the following conditions are true // a.This production is contained in strict code and IsDataDescriptor(previous) is true and @@ -28066,7 +28768,7 @@ var ts; // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields var currentKind = void 0; - if (prop.kind === 245 /* PropertyAssignment */ || prop.kind === 246 /* ShorthandPropertyAssignment */) { + if (prop.kind === 247 /* PropertyAssignment */ || prop.kind === 248 /* ShorthandPropertyAssignment */) { // Grammar checking for computedPropertName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); if (name_16.kind === 8 /* NumericLiteral */) { @@ -28092,27 +28794,33 @@ var ts; else { var existingKind = seen[name_16.text]; if (currentKind === Property && existingKind === Property) { - continue; + return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { seen[name_16.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } + }; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var state_1 = _loop_1(prop); + if (typeof state_1 === "object") return state_1.value + if (state_1 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 239 /* JsxSpreadAttribute */) { + if (attr.kind === 241 /* JsxSpreadAttribute */) { continue; } var jsxAttr = attr; @@ -28124,7 +28832,7 @@ var ts; return grammarErrorOnNode(name_17, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 240 /* JsxExpression */ && !initializer.expression) { + if (initializer && initializer.kind === 242 /* JsxExpression */ && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -28133,24 +28841,35 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 212 /* VariableDeclarationList */) { + if (forInOrOfStatement.initializer.kind === 214 /* VariableDeclarationList */) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { - if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 200 /* ForInStatement */ + var declarations = variableList.declarations; + // declarations.length can be zero if there is an error in 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 + // We will then want to skip on grammar checking on variableList declaration + if (!declarations.length) { + return false; + } + if (declarations.length > 1) { + var diagnostic = forInOrOfStatement.kind === 202 /* ForInStatement */ ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - var firstDeclaration = variableList.declarations[0]; + var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 200 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 202 /* ForInStatement */ ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 200 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 202 /* ForInStatement */ ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -28211,7 +28930,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 165 /* ObjectLiteralExpression */) { + if (node.parent.kind === 167 /* ObjectLiteralExpression */) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -28235,7 +28954,7 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 215 /* InterfaceDeclaration */) { + else if (node.parent.kind === 217 /* InterfaceDeclaration */) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } else if (node.parent.kind === 155 /* TypeLiteral */) { @@ -28249,11 +28968,11 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: if (node.label && current.label.text === node.label.text) { // found matching label - verify that label usage is correct // continue can only target labels that are on iteration statements - var isMisplacedContinueLabel = node.kind === 202 /* ContinueStatement */ + var isMisplacedContinueLabel = node.kind === 204 /* ContinueStatement */ && !ts.isIterationStatement(current.statement, /*lookInLabeledStatement*/ true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -28261,8 +28980,8 @@ var ts; return false; } break; - case 206 /* SwitchStatement */: - if (node.kind === 203 /* BreakStatement */ && !node.label) { + case 208 /* SwitchStatement */: + if (node.kind === 205 /* BreakStatement */ && !node.label) { // unlabeled break within switch statement - ok return false; } @@ -28277,13 +28996,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 203 /* BreakStatement */ + var message = node.kind === 205 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 203 /* BreakStatement */ + var message = node.kind === 205 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -28295,7 +29014,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 162 /* ArrayBindingPattern */ || node.name.kind === 161 /* ObjectBindingPattern */) { + if (node.name.kind === 164 /* ArrayBindingPattern */ || node.name.kind === 163 /* ObjectBindingPattern */) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -28305,7 +29024,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 200 /* ForInStatement */ && node.parent.parent.kind !== 201 /* ForOfStatement */) { + if (node.parent.parent.kind !== 202 /* ForInStatement */ && node.parent.parent.kind !== 203 /* ForOfStatement */) { if (ts.isInAmbientContext(node)) { if (node.initializer) { // Error on equals token which immediate precedes the initializer @@ -28322,7 +29041,7 @@ var ts; } } } - var checkLetConstNames = languageVersion >= 2 /* ES6 */ && (ts.isLet(node) || ts.isConst(node)); + var checkLetConstNames = (ts.isLet(node) || ts.isConst(node)); // 1. LexicalDeclaration : LetOrConst BindingList ; // It is a Syntax Error if the BoundNames of BindingList contains "let". // 2. ForDeclaration: ForDeclaration : LetOrConst ForBinding @@ -28333,7 +29052,7 @@ var ts; } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 69 /* Identifier */) { - if (name.text === "let") { + if (name.originalKeywordKind === 108 /* LetKeyword */) { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } @@ -28341,7 +29060,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 187 /* OmittedExpression */) { + if (element.kind !== 189 /* OmittedExpression */) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -28358,15 +29077,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return false; - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -28381,23 +29100,6 @@ var ts; } } } - function isIntegerLiteral(expression) { - if (expression.kind === 179 /* PrefixUnaryExpression */) { - var unaryExpression = expression; - if (unaryExpression.operator === 35 /* PlusToken */ || unaryExpression.operator === 36 /* MinusToken */) { - expression = unaryExpression.operand; - } - } - if (expression.kind === 8 /* NumericLiteral */) { - // Allows for scientific notation since literalExpression.text was formed by - // coercing a number to a string. Sometimes this coercion can yield a string - // in scientific notation. - // We also don't need special logic for hex because a hex integer is converted - // to decimal when it is coerced. - return /^[0-9]+([eE]\+?[0-9]+)?$/.test(expression.text); - } - return false; - } function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } @@ -28422,10 +29124,6 @@ var ts; return true; } } - function isEvalOrArgumentsIdentifier(node) { - return node.kind === 69 /* Identifier */ && - (node.text === "eval" || node.text === "arguments"); - } function checkGrammarConstructorTypeParameters(node) { if (node.typeParameters) { return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.typeParameters.pos, node.typeParameters.end - node.typeParameters.pos, ts.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration); @@ -28443,15 +29141,21 @@ var ts; return true; } } - else if (node.parent.kind === 215 /* InterfaceDeclaration */) { + else if (node.parent.kind === 217 /* InterfaceDeclaration */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); + } } else if (node.parent.kind === 155 /* TypeLiteral */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.A_type_literal_property_cannot_have_an_initializer); + } } if (ts.isInAmbientContext(node) && node.initializer) { return grammarErrorOnFirstToken(node.initializer, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); @@ -28470,12 +29174,12 @@ var ts; // export_opt AmbientDeclaration // // TODO: The spec needs to be amended to reflect this grammar. - if (node.kind === 215 /* InterfaceDeclaration */ || - node.kind === 216 /* TypeAliasDeclaration */ || - node.kind === 222 /* ImportDeclaration */ || - node.kind === 221 /* ImportEqualsDeclaration */ || - node.kind === 228 /* ExportDeclaration */ || - node.kind === 227 /* ExportAssignment */ || + if (node.kind === 217 /* InterfaceDeclaration */ || + node.kind === 218 /* TypeAliasDeclaration */ || + node.kind === 224 /* ImportDeclaration */ || + node.kind === 223 /* ImportEqualsDeclaration */ || + node.kind === 230 /* ExportDeclaration */ || + node.kind === 229 /* ExportAssignment */ || (node.flags & 4 /* Ambient */) || (node.flags & (2 /* Export */ | 512 /* Default */))) { return false; @@ -28485,7 +29189,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 193 /* VariableStatement */) { + if (ts.isDeclaration(decl) || decl.kind === 195 /* VariableStatement */) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -28511,7 +29215,7 @@ var ts; // to prevent noisyness. So use a bit on the block to indicate if // this has already been reported, and don't report if it has. // - if (node.parent.kind === 192 /* Block */ || node.parent.kind === 219 /* ModuleBlock */ || node.parent.kind === 248 /* SourceFile */) { + if (node.parent.kind === 194 /* Block */ || node.parent.kind === 221 /* ModuleBlock */ || node.parent.kind === 250 /* SourceFile */) { var links_1 = getNodeLinks(node.parent); // Check if the containing block ever report this error if (!links_1.hasReportedStatementInAmbientContext) { @@ -28536,21 +29240,293 @@ var ts; return true; } } + var _a; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); /// /* @internal */ var ts; +(function (ts) { + var nullSourceMapWriter; + function getNullSourceMapWriter() { + if (nullSourceMapWriter === undefined) { + nullSourceMapWriter = { + getSourceMapData: function () { return undefined; }, + setSourceFile: function (sourceFile) { }, + emitStart: function (range) { }, + emitEnd: function (range) { }, + emitPos: function (pos) { }, + getText: function () { return undefined; }, + getSourceMappingURL: function () { return undefined; }, + initialize: function (filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { }, + reset: function () { } + }; + } + return nullSourceMapWriter; + } + ts.getNullSourceMapWriter = getNullSourceMapWriter; + function createSourceMapWriter(host, writer) { + var compilerOptions = host.getCompilerOptions(); + var currentSourceFile; + var sourceMapDir; // The directory in which sourcemap will be + // Current source map file and its index in the sources list + var sourceMapSourceIndex; + // Last recorded and encoded spans + var lastRecordedSourceMapSpan; + var lastEncodedSourceMapSpan; + var lastEncodedNameIndex; + // Source map data + var sourceMapData; + return { + getSourceMapData: function () { return sourceMapData; }, + setSourceFile: setSourceFile, + emitPos: emitPos, + emitStart: emitStart, + emitEnd: emitEnd, + getText: getText, + getSourceMappingURL: getSourceMappingURL, + initialize: initialize, + reset: reset + }; + function initialize(filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + if (sourceMapData) { + reset(); + } + currentSourceFile = undefined; + // Current source map file and its index in the sources list + sourceMapSourceIndex = -1; + // Last recorded and encoded spans + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = { + emittedLine: 1, + emittedColumn: 1, + sourceLine: 1, + sourceColumn: 1, + sourceIndex: 0 + }; + lastEncodedNameIndex = 0; + // Initialize source map data + sourceMapData = { + sourceMapFilePath: sourceMapFilePath, + jsSourceMappingURL: !compilerOptions.inlineSourceMap ? ts.getBaseFileName(ts.normalizeSlashes(sourceMapFilePath)) : undefined, + sourceMapFile: ts.getBaseFileName(ts.normalizeSlashes(filePath)), + sourceMapSourceRoot: compilerOptions.sourceRoot || "", + sourceMapSources: [], + inputSourceFileNames: [], + sourceMapNames: [], + sourceMapMappings: "", + sourceMapSourcesContent: compilerOptions.inlineSources ? [] : undefined, + sourceMapDecodedMappings: [] + }; + // Normalize source root and make sure it has trailing "/" so that it can be used to combine paths with the + // relative paths of the sources list in the sourcemap + sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); + if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47 /* slash */) { + sourceMapData.sourceMapSourceRoot += ts.directorySeparator; + } + if (compilerOptions.mapRoot) { + sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); + if (!isBundledEmit) { + ts.Debug.assert(sourceFiles.length === 1); + // For modules or multiple emit files the mapRoot will have directory structure like the sources + // So if src\a.ts and src\lib\b.ts are compiled together user would be moving the maps into mapRoot\a.js.map and mapRoot\lib\b.js.map + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(sourceFiles[0], host, sourceMapDir)); + } + if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { + // The relative paths are relative to the common directory + sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); + sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(filePath)), // get the relative sourceMapDir path based on jsFilePath + ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), // this is where user expects to see sourceMap + host.getCurrentDirectory(), host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ true); + } + else { + sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); + } + } + else { + sourceMapDir = ts.getDirectoryPath(ts.normalizePath(filePath)); + } + } + function reset() { + currentSourceFile = undefined; + sourceMapDir = undefined; + sourceMapSourceIndex = undefined; + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = undefined; + lastEncodedNameIndex = undefined; + sourceMapData = undefined; + } + // Encoding for sourcemap span + function encodeLastRecordedSourceMapSpan() { + if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { + return; + } + var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; + // Line/Comma delimiters + if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { + // Emit comma to separate the entry + if (sourceMapData.sourceMapMappings) { + sourceMapData.sourceMapMappings += ","; + } + } + else { + // Emit line delimiters + for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { + sourceMapData.sourceMapMappings += ";"; + } + prevEncodedEmittedColumn = 1; + } + // 1. Relative Column 0 based + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); + // 2. Relative sourceIndex + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); + // 3. Relative sourceLine 0 based + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); + // 4. Relative sourceColumn 0 based + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); + // 5. Relative namePosition 0 based + if (lastRecordedSourceMapSpan.nameIndex >= 0) { + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); + lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; + } + lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; + sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); + } + function emitPos(pos) { + if (pos === -1) { + return; + } + var sourceLinePos = ts.getLineAndCharacterOfPosition(currentSourceFile, pos); + // Convert the location to be one-based. + sourceLinePos.line++; + sourceLinePos.character++; + var emittedLine = writer.getLine(); + var emittedColumn = writer.getColumn(); + // If this location wasn't recorded or the location in source is going backwards, record the span + if (!lastRecordedSourceMapSpan || + lastRecordedSourceMapSpan.emittedLine !== emittedLine || + lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || + (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && + (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || + (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { + // Encode the last recordedSpan before assigning new + encodeLastRecordedSourceMapSpan(); + // New span + lastRecordedSourceMapSpan = { + emittedLine: emittedLine, + emittedColumn: emittedColumn, + sourceLine: sourceLinePos.line, + sourceColumn: sourceLinePos.character, + sourceIndex: sourceMapSourceIndex + }; + } + else { + // Take the new pos instead since there is no change in emittedLine and column since last location + lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; + lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; + lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; + } + } + function emitStart(range) { + var rangeHasDecorators = !!range.decorators; + emitPos(range.pos !== -1 ? ts.skipTrivia(currentSourceFile.text, rangeHasDecorators ? range.decorators.end : range.pos) : -1); + } + function emitEnd(range) { + emitPos(range.end); + } + function setSourceFile(sourceFile) { + currentSourceFile = sourceFile; + // Add the file to tsFilePaths + // If sourceroot option: Use the relative path corresponding to the common directory path + // otherwise source locations relative to map file location + var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; + var source = ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, currentSourceFile.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ true); + sourceMapSourceIndex = ts.indexOf(sourceMapData.sourceMapSources, source); + if (sourceMapSourceIndex === -1) { + sourceMapSourceIndex = sourceMapData.sourceMapSources.length; + sourceMapData.sourceMapSources.push(source); + // The one that can be used from program to get the actual source file + sourceMapData.inputSourceFileNames.push(sourceFile.fileName); + if (compilerOptions.inlineSources) { + sourceMapData.sourceMapSourcesContent.push(sourceFile.text); + } + } + } + function getText() { + encodeLastRecordedSourceMapSpan(); + return ts.stringify({ + version: 3, + file: sourceMapData.sourceMapFile, + sourceRoot: sourceMapData.sourceMapSourceRoot, + sources: sourceMapData.sourceMapSources, + names: sourceMapData.sourceMapNames, + mappings: sourceMapData.sourceMapMappings, + sourcesContent: sourceMapData.sourceMapSourcesContent + }); + } + function getSourceMappingURL() { + if (compilerOptions.inlineSourceMap) { + // Encode the sourceMap into the sourceMap url + var base64SourceMapText = ts.convertToBase64(getText()); + return sourceMapData.jsSourceMappingURL = "data:application/json;base64," + base64SourceMapText; + } + else { + return sourceMapData.jsSourceMappingURL; + } + } + } + ts.createSourceMapWriter = createSourceMapWriter; + var base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + function base64FormatEncode(inValue) { + if (inValue < 64) { + return base64Chars.charAt(inValue); + } + throw TypeError(inValue + ": not a 64 based value"); + } + function base64VLQFormatEncode(inValue) { + // Add a new least significant bit that has the sign of the value. + // if negative number the least significant bit that gets added to the number has value 1 + // else least significant bit value that gets added is 0 + // eg. -1 changes to binary : 01 [1] => 3 + // +1 changes to binary : 01 [0] => 2 + if (inValue < 0) { + inValue = ((-inValue) << 1) + 1; + } + else { + inValue = inValue << 1; + } + // Encode 5 bits at a time starting from least significant bits + var encodedStr = ""; + do { + var currentDigit = inValue & 31; // 11111 + inValue = inValue >> 5; + if (inValue > 0) { + // There are still more digits to decode, set the msb (6th bit) + currentDigit = currentDigit | 32; + } + encodedStr = encodedStr + base64FormatEncode(currentDigit); + } while (inValue > 0); + return encodedStr; + } +})(ts || (ts = {})); +/// +/* @internal */ +var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + var declarationDiagnostics = ts.createDiagnosticCollection(); + ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); + return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { + var declarationFilePath = _a.declarationFilePath; + emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); + } } ts.getDeclarationDiagnostics = getDeclarationDiagnostics; - function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { + function emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); var write; @@ -28568,103 +29544,79 @@ var ts; var errorNameNode; var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var noDeclare = !root; + var noDeclare; var moduleElementDeclarationEmitInfo = []; var asynchronousSubModuleDeclarationEmitInfo; // Contains the reference paths that needs to go in the declaration file. // Collecting this separately because reference paths need to be first thing in the declaration file // and we could be collecting these paths from multiple files into single one with --out option var referencePathsOutput = ""; - if (root) { - // Emitting just a single file, so emit references in this file only + // Emit references corresponding to each file + var emittedReferencedFiles = []; + var addedGlobalFileReference = false; + var allSourcesModuleElementDeclarationEmitInfo = []; + ts.forEach(sourceFiles, function (sourceFile) { + // Dont emit for javascript file + if (ts.isSourceFileJavaScript(sourceFile)) { + return; + } + // Check what references need to be added if (!compilerOptions.noResolve) { - var addedGlobalFileReference = false; - ts.forEach(root.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - // All the references that are not going to be part of same file - if (referencedFile && ((referencedFile.flags & 4096 /* DeclarationFile */) || - ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || - !addedGlobalFileReference)) { - writeReferencePath(referencedFile); - if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { + ts.forEach(sourceFile.referencedFiles, function (fileReference) { + var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); + // Emit reference in dts, if the file reference was not already emitted + if (referencedFile && !ts.contains(emittedReferencedFiles, referencedFile)) { + // Add a reference to generated dts file, + // global file reference is added only + // - if it is not bundled emit (because otherwise it would be self reference) + // - and it is not already added + if (writeReferencePath(referencedFile, !isBundledEmit && !addedGlobalFileReference)) { addedGlobalFileReference = true; } + emittedReferencedFiles.push(referencedFile); } }); } - emitSourceFile(root); + if (!isBundledEmit || !ts.isExternalModule(sourceFile)) { + noDeclare = false; + emitSourceFile(sourceFile); + } + else if (ts.isExternalModule(sourceFile)) { + noDeclare = true; + write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); + writeLine(); + increaseIndent(); + emitSourceFile(sourceFile); + decreaseIndent(); + write("}"); + writeLine(); + } // create asynchronous output for the importDeclarations if (moduleElementDeclarationEmitInfo.length) { var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222 /* ImportDeclaration */); + if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { + ts.Debug.assert(aliasEmitInfo.node.kind === 224 /* ImportDeclaration */); createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 0); + ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + increaseIndent(); + } writeImportDeclaration(aliasEmitInfo.node); aliasEmitInfo.asynchronousOutput = writer.getText(); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + decreaseIndent(); + } } }); setWriter(oldWriter); + allSourcesModuleElementDeclarationEmitInfo = allSourcesModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); + moduleElementDeclarationEmitInfo = []; } - } - else { - // Emit references corresponding to this file - var emittedReferencedFiles = []; - var prevModuleElementDeclarationEmitInfo = []; - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!ts.isDeclarationFile(sourceFile)) { - // Check what references need to be added - if (!compilerOptions.noResolve) { - ts.forEach(sourceFile.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - // If the reference file is a declaration file, emit that reference - if (referencedFile && (ts.isDeclarationFile(referencedFile) && - !ts.contains(emittedReferencedFiles, referencedFile))) { - writeReferencePath(referencedFile); - emittedReferencedFiles.push(referencedFile); - } - }); - } - } - if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { - noDeclare = false; - emitSourceFile(sourceFile); - } - else if (ts.isExternalModule(sourceFile)) { - noDeclare = true; - write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); - writeLine(); - increaseIndent(); - emitSourceFile(sourceFile); - decreaseIndent(); - write("}"); - writeLine(); - // create asynchronous output for the importDeclarations - if (moduleElementDeclarationEmitInfo.length) { - var oldWriter = writer; - ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222 /* ImportDeclaration */); - createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 1); - increaseIndent(); - writeImportDeclaration(aliasEmitInfo.node); - aliasEmitInfo.asynchronousOutput = writer.getText(); - decreaseIndent(); - } - }); - setWriter(oldWriter); - } - prevModuleElementDeclarationEmitInfo = prevModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); - moduleElementDeclarationEmitInfo = []; - } - }); - moduleElementDeclarationEmitInfo = moduleElementDeclarationEmitInfo.concat(prevModuleElementDeclarationEmitInfo); - } + }); return { reportedDeclarationError: reportedDeclarationError, - moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: allSourcesModuleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -28707,10 +29659,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 211 /* VariableDeclaration */) { + if (declaration.kind === 213 /* VariableDeclaration */) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 225 /* NamedImports */ || declaration.kind === 226 /* ImportSpecifier */ || declaration.kind === 223 /* ImportClause */) { + else if (declaration.kind === 227 /* NamedImports */ || declaration.kind === 228 /* ImportSpecifier */ || declaration.kind === 225 /* ImportClause */) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -28728,7 +29680,7 @@ var ts; // Writing of function bar would mark alias declaration foo as visible but we haven't yet visited that declaration so do nothing, // we would write alias foo declaration when we visit it since it would now be marked as visible if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 222 /* ImportDeclaration */) { + if (moduleElementEmitInfo.node.kind === 224 /* ImportDeclaration */) { // we have to create asynchronous output only after we have collected complete information // because it is possible to enable multiple bindings as asynchronously visible moduleElementEmitInfo.isVisible = true; @@ -28738,12 +29690,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 218 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 220 /* ModuleDeclaration */) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 218 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 220 /* ModuleDeclaration */) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -28766,10 +29718,10 @@ var ts; var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); if (errorInfo) { if (errorInfo.typeName) { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } else { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } } } @@ -28779,7 +29731,8 @@ var ts; } function reportInaccessibleThisError() { if (errorNameNode) { - diagnostics.push(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); + reportedDeclarationError = true; + emitterDiagnostics.add(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); } } function writeTypeOfDeclaration(declaration, type, getSymbolAccessibilityDiagnostic) { @@ -28850,10 +29803,10 @@ var ts; case 120 /* BooleanKeyword */: case 131 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 97 /* ThisKeyword */: - case 9 /* StringLiteral */: + case 161 /* ThisType */: + case 162 /* StringLiteralType */: return writeTextOfNode(currentText, type); - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return emitExpressionWithTypeArguments(type); case 151 /* TypeReference */: return emitTypeReference(type); @@ -28896,13 +29849,13 @@ var ts; function emitEntityName(entityName) { var visibilityResult = resolver.isEntityNameVisible(entityName, // Aliases can be written asynchronously so use correct enclosing declaration - entityName.parent.kind === 221 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); + entityName.parent.kind === 223 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 166 /* PropertyAccessExpression */); + ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 168 /* PropertyAccessExpression */); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -28980,7 +29933,8 @@ var ts; } var count = 0; while (true) { - var name_18 = baseName + "_" + (++count); + count++; + var name_18 = baseName + "_" + count; if (!ts.hasProperty(currentIdentifiers, name_18)) { return name_18; } @@ -29026,10 +29980,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 221 /* ImportEqualsDeclaration */ || - (node.parent.kind === 248 /* SourceFile */ && isCurrentFileExternalModule)) { + else if (node.kind === 223 /* ImportEqualsDeclaration */ || + (node.parent.kind === 250 /* SourceFile */ && isCurrentFileExternalModule)) { var isVisible; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 248 /* SourceFile */) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 250 /* SourceFile */) { // Import declaration of another module that is visited async so lets put it in right spot asynchronousSubModuleDeclarationEmitInfo.push({ node: node, @@ -29039,7 +29993,7 @@ var ts; }); } else { - if (node.kind === 222 /* ImportDeclaration */) { + if (node.kind === 224 /* ImportDeclaration */) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -29057,23 +30011,23 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return writeFunctionDeclaration(node); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return writeVariableStatement(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return writeInterfaceDeclaration(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return writeClassDeclaration(node); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return writeTypeAliasDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return writeEnumDeclaration(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return writeModuleDeclaration(node); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return writeImportEqualsDeclaration(node); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); @@ -29081,7 +30035,7 @@ var ts; } function emitModuleElementDeclarationFlags(node) { // If the node is parented in the current source file we need to emit export declare or just export - if (node.parent.kind === 248 /* SourceFile */) { + if (node.parent.kind === 250 /* SourceFile */) { // If the node is exported if (node.flags & 2 /* Export */) { write("export "); @@ -29089,7 +30043,7 @@ var ts; if (node.flags & 512 /* Default */) { write("default "); } - else if (node.kind !== 215 /* InterfaceDeclaration */ && !noDeclare) { + else if (node.kind !== 217 /* InterfaceDeclaration */ && !noDeclare) { write("declare "); } } @@ -29124,7 +30078,7 @@ var ts; } else { write("require("); - writeTextOfNode(currentText, ts.getExternalModuleImportEqualsDeclarationExpression(node)); + emitExternalModuleSpecifier(node); write(");"); } writer.writeLine(); @@ -29138,7 +30092,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 224 /* NamespaceImport */) { + if (namedBindings.kind === 226 /* NamespaceImport */) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -29166,7 +30120,7 @@ var ts; // If the default binding was emitted, write the separated write(", "); } - if (node.importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 226 /* NamespaceImport */) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -29178,13 +30132,22 @@ var ts; } write(" from "); } - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); write(";"); writer.writeLine(); } - function emitExternalModuleSpecifier(moduleSpecifier) { - if (moduleSpecifier.kind === 9 /* StringLiteral */ && (!root) && (compilerOptions.out || compilerOptions.outFile)) { - var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, moduleSpecifier.parent); + function emitExternalModuleSpecifier(parent) { + var moduleSpecifier; + if (parent.kind === 223 /* ImportEqualsDeclaration */) { + var node = parent; + moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); + } + else { + var node = parent; + moduleSpecifier = node.moduleSpecifier; + } + if (moduleSpecifier.kind === 9 /* StringLiteral */ && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { + var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { write("\""); write(moduleName); @@ -29221,7 +30184,7 @@ var ts; } if (node.moduleSpecifier) { write(" from "); - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); } write(";"); writer.writeLine(); @@ -29236,7 +30199,7 @@ var ts; write("module "); } writeTextOfNode(currentText, node.name); - while (node.body.kind !== 219 /* ModuleBlock */) { + while (node.body.kind !== 221 /* ModuleBlock */) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -29331,10 +30294,10 @@ var ts; // Type parameter constraints are named by user so we should always be able to name it var diagnosticMessage; switch (node.parent.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; case 148 /* ConstructSignature */: @@ -29348,14 +30311,14 @@ var ts; if (node.parent.flags & 64 /* Static */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 216 /* ClassDeclaration */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -29389,7 +30352,7 @@ var ts; function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; // Heritage clause is written by user so it can always be named - if (node.parent.parent.kind === 214 /* ClassDeclaration */) { + if (node.parent.parent.kind === 216 /* ClassDeclaration */) { // Class or Interface implemented/extended is inaccessible diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : @@ -29473,7 +30436,7 @@ var ts; function emitVariableDeclaration(node) { // If we are emitting property it isn't moduleElement and hence we already know it needs to be emitted // so there is no check needed to see if declaration is visible - if (node.kind !== 211 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { + if (node.kind !== 213 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } @@ -29495,7 +30458,7 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { - if (node.kind === 211 /* VariableDeclaration */) { + if (node.kind === 213 /* VariableDeclaration */) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29511,7 +30474,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29543,7 +30506,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187 /* OmittedExpression */) { + if (element.kind !== 189 /* OmittedExpression */) { elements.push(element); } } @@ -29685,13 +30648,13 @@ var ts; // so no need to verify if the declaration is visible if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { emitModuleElementDeclarationFlags(node); } else if (node.kind === 143 /* MethodDeclaration */) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { write("function "); writeTextOfNode(currentText, node.name); } @@ -29712,6 +30675,8 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; // Construct signature or constructor type write new Signature if (node.kind === 148 /* ConstructSignature */ || node.kind === 153 /* ConstructorType */) { write("new "); @@ -29723,8 +30688,6 @@ var ts; else { write("("); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; // Parameters emitCommaList(node.parameters, emitParameterDeclaration); if (node.kind === 149 /* IndexSignature */) { @@ -29780,7 +30743,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -29794,7 +30757,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -29872,7 +30835,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 216 /* ClassDeclaration */) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29885,7 +30848,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29897,12 +30860,12 @@ var ts; } function emitBindingPattern(bindingPattern) { // We have to explicitly emit square bracket and bracket because these tokens are not store inside the node. - if (bindingPattern.kind === 161 /* ObjectBindingPattern */) { + if (bindingPattern.kind === 163 /* ObjectBindingPattern */) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 162 /* ArrayBindingPattern */) { + else if (bindingPattern.kind === 164 /* ArrayBindingPattern */) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -29913,15 +30876,7 @@ var ts; } } function emitBindingElement(bindingElement) { - function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); - return diagnosticMessage !== undefined ? { - diagnosticMessage: diagnosticMessage, - errorNode: bindingElement, - typeName: bindingElement.name - } : undefined; - } - if (bindingElement.kind === 187 /* OmittedExpression */) { + if (bindingElement.kind === 189 /* OmittedExpression */) { // If bindingElement is an omittedExpression (i.e. containing elision), // we will emit blank space (although this may differ from users' original code, // it allows emitSeparatedList to write separator appropriately) @@ -29930,7 +30885,7 @@ var ts; // emit : function foo([ , x, , ]) {} write(" "); } - else if (bindingElement.kind === 163 /* BindingElement */) { + else if (bindingElement.kind === 165 /* BindingElement */) { if (bindingElement.propertyName) { // bindingElement has propertyName property in the following case: // { y: [a,b,c] ...} -> bindingPattern will have a property called propertyName for "y" @@ -29969,20 +30924,20 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: - case 218 /* ModuleDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 215 /* InterfaceDeclaration */: - case 214 /* ClassDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 217 /* EnumDeclaration */: + case 215 /* FunctionDeclaration */: + case 220 /* ModuleDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 217 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 219 /* EnumDeclaration */: return emitModuleElement(node, isModuleElementVisible(node)); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return emitModuleElement(node, isVariableStatementVisible(node)); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: // Import declaration without import clause is visible, otherwise it is not visible return emitModuleElement(node, /*isModuleElementVisible*/ !node.importClause); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return emitExportDeclaration(node); case 144 /* Constructor */: case 143 /* MethodDeclaration */: @@ -29998,35 +30953,57 @@ var ts; case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return emitPropertyDeclaration(node); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return emitEnumMemberDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return emitExportAssignment(node); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return emitSourceFile(node); } } - function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 4096 /* DeclarationFile */ - ? referencedFile.fileName // Declaration file, use declaration file name - : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) - ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") // Own output file so get the .d.ts file - : ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out) + ".d.ts"; // Global out file - declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ false); - referencePathsOutput += "/// " + newLine; + /** + * Adds the reference to referenced file, returns true if global file reference was emitted + * @param referencedFile + * @param addBundledFileReference Determines if global file reference corresponding to bundled file should be emitted or not + */ + function writeReferencePath(referencedFile, addBundledFileReference) { + var declFileName; + var addedBundledEmitReference = false; + if (ts.isDeclarationFile(referencedFile)) { + // Declaration file, use declaration file name + declFileName = referencedFile.fileName; + } + else { + // Get the declaration file path + ts.forEachExpectedEmitFile(host, getDeclFileName, referencedFile); + } + if (declFileName) { + declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ false); + referencePathsOutput += "/// " + newLine; + } + return addedBundledEmitReference; + function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { + // Dont add reference path to this file if it is a bundled emit and caller asked not emit bundled file path + if (isBundledEmit && !addBundledFileReference) { + return; + } + ts.Debug.assert(!!emitFileNames.declarationFilePath || ts.isSourceFileJavaScript(referencedFile), "Declaration file is not present only for javascript files"); + declFileName = emitFileNames.declarationFilePath || emitFileNames.jsFilePath; + addedBundledEmitReference = isBundledEmit; + } } } /* @internal */ - function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - // TODO(shkamat): Should we not write any declaration file if any of them can produce error, - // or should we just not write this file like we are doing now - if (!emitDeclarationResult.reportedDeclarationError) { + function writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit); + var emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath) || host.getCompilerOptions().noEmit; + if (!emitSkipped) { var declarationOutput = emitDeclarationResult.referencePathsOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); - ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + ts.writeFile(host, emitterDiagnostics, declarationFilePath, declarationOutput, host.getCompilerOptions().emitBOM); } + return emitSkipped; function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { var appliedSyncOutputPos = 0; var declarationOutput = ""; @@ -30045,14 +31022,11 @@ var ts; ts.writeDeclarationFile = writeDeclarationFile; })(ts || (ts = {})); /// +/// /// /* @internal */ var ts; (function (ts) { - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; function getResolvedExternalModuleName(host, file) { return file.moduleName || ts.getExternalModuleNameFromPath(host, file.fileName); } @@ -30345,43 +31319,17 @@ var ts; var paramHelper = "\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};"; var awaiterHelper = "\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promise, generator) {\n return new Promise(function (resolve, reject) {\n generator = generator.call(thisArg, _arguments);\n function cast(value) { return value instanceof Promise && value.constructor === Promise ? value : new Promise(function (resolve) { resolve(value); }); }\n function onfulfill(value) { try { step(\"next\", value); } catch (e) { reject(e); } }\n function onreject(value) { try { step(\"throw\", value); } catch (e) { reject(e); } }\n function step(verb, value) {\n var result = generator[verb](value);\n result.done ? resolve(result.value) : cast(result.value).then(onfulfill, onreject);\n }\n step(\"next\", void 0);\n });\n};"; var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || 0 /* ES3 */; - var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 /* ES6 */ ? 5 /* ES6 */ : 0 /* None */; + var languageVersion = ts.getEmitScriptTarget(compilerOptions); + var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; - var diagnostics = []; + var emitterDiagnostics = ts.createDiagnosticCollection(); + var emitSkipped = false; var newLine = host.getNewLine(); - var jsxDesugaring = host.getCompilerOptions().jsx !== 1 /* Preserve */; - var shouldEmitJsx = function (s) { return (s.languageVariant === 1 /* JSX */ && !jsxDesugaring); }; - var outFile = compilerOptions.outFile || compilerOptions.out; var emitJavaScript = createFileEmitter(); - if (targetSourceFile === undefined) { - if (outFile) { - emitFile(outFile); - } - else { - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, shouldEmitJsx(sourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, sourceFile); - } - }); - } - } - else { - // targetSourceFile is specified (e.g calling emitter from language service or calling getSemanticDiagnostic from language service) - if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, shouldEmitJsx(targetSourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, targetSourceFile); - } - else if (!ts.isDeclarationFile(targetSourceFile) && outFile) { - emitFile(outFile); - } - } - // Sort and make the unique list of diagnostics - diagnostics = ts.sortAndDeduplicateDiagnostics(diagnostics); + ts.forEachExpectedEmitFile(host, emitFile, targetSourceFile); return { - emitSkipped: false, - diagnostics: diagnostics, + emitSkipped: emitSkipped, + diagnostics: emitterDiagnostics.getDiagnostics(), sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -30429,6 +31377,8 @@ var ts; function createFileEmitter() { var writer = ts.createTextWriter(newLine); var write = writer.write, writeTextOfNode = writer.writeTextOfNode, writeLine = writer.writeLine, increaseIndent = writer.increaseIndent, decreaseIndent = writer.decreaseIndent; + var sourceMap = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? ts.createSourceMapWriter(host, writer) : ts.getNullSourceMapWriter(); + var setSourceFile = sourceMap.setSourceFile, emitStart = sourceMap.emitStart, emitEnd = sourceMap.emitEnd, emitPos = sourceMap.emitPos; var currentSourceFile; var currentText; var currentLineMap; @@ -30451,40 +31401,18 @@ var ts; var decorateEmitted; var paramEmitted; var awaiterEmitted; - var tempFlags; + var tempFlags = 0; var tempVariables; var tempParameters; var externalImports; var exportSpecifiers; var exportEquals; - var hasExportStars; - /** Write emitted output to disk */ - var writeEmittedFiles = writeJavaScriptFile; + var hasExportStarsToExportValues; var detachedCommentsInfo; - var writeComment = ts.writeCommentRange; - /** Emit a node */ - var emit = emitNodeWithCommentsAndWithoutSourcemap; - /** Called just before starting emit of a node */ - var emitStart = function (node) { }; - /** Called once the emit of the node is done */ - var emitEnd = function (node) { }; - /** Emit the text for the given token that comes after startPos - * This by default writes the text provided with the given tokenKind - * but if optional emitFn callback is provided the text is emitted using the callback instead of default text - * @param tokenKind the kind of the token to search and emit - * @param startPos the position in the source to start searching for the token - * @param emitFn if given will be invoked to emit the text instead of actual token emit */ - var emitToken = emitTokenText; - /** Called to before starting the lexical scopes as in function/class in the emitted code because of node - * @param scopeDeclaration node that starts the lexical scope - * @param scopeName Optional name of this scope instead of deducing one from the declaration node */ - var scopeEmitStart = function (scopeDeclaration, scopeName) { }; - /** Called after coming out of the scope */ - var scopeEmitEnd = function () { }; /** Sourcemap data that will get encoded */ var sourceMapData; - /** The root file passed to the emit function (if present) */ - var root; + /** Is the file being emitted into its own file */ + var isOwnFileEmit; /** If removeComments is true, no leading-comments needed to be emitted **/ var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; var moduleEmitDelegates = (_a = {}, @@ -30504,15 +31432,32 @@ var ts; _b ); return doEmit; - function doEmit(jsFilePath, rootFile) { + function doEmit(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + sourceMap.initialize(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + generatedNameSet = {}; + nodeToGeneratedName = []; + isOwnFileEmit = !isBundledEmit; + // Emit helpers from all the files + if (isBundledEmit && modulekind) { + ts.forEach(sourceFiles, emitEmitHelpers); + } + // Do not call emit directly. It does not set the currentSourceFile. + ts.forEach(sourceFiles, emitSourceFile); + writeLine(); + var sourceMappingURL = sourceMap.getSourceMappingURL(); + if (sourceMappingURL) { + write("//# sourceMappingURL=" + sourceMappingURL); + } + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); // reset the state + sourceMap.reset(); writer.reset(); currentSourceFile = undefined; currentText = undefined; currentLineMap = undefined; exportFunctionForFile = undefined; - generatedNameSet = {}; - nodeToGeneratedName = []; + generatedNameSet = undefined; + nodeToGeneratedName = undefined; computedPropertyNamesToGeneratedNames = undefined; convertedLoopState = undefined; extendsEmitted = false; @@ -30525,32 +31470,12 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = undefined; + hasExportStarsToExportValues = undefined; detachedCommentsInfo = undefined; sourceMapData = undefined; isEs6Module = false; renamedDependencies = undefined; isCurrentFileExternalModule = false; - root = rootFile; - if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { - initializeEmitterWithSourceMaps(jsFilePath, root); - } - if (root) { - // Do not call emit directly. It does not set the currentSourceFile. - emitSourceFile(root); - } - else { - if (modulekind) { - ts.forEach(host.getSourceFiles(), emitEmitHelpers); - } - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if ((!isExternalModuleOrDeclarationFile(sourceFile)) || (modulekind && ts.isExternalModule(sourceFile))) { - emitSourceFile(sourceFile); - } - }); - } - writeLine(); - writeEmittedFiles(writer.getText(), jsFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); } function emitSourceFile(sourceFile) { currentSourceFile = sourceFile; @@ -30561,7 +31486,8 @@ var ts; renamedDependencies = sourceFile.renamedDependencies; currentFileIdentifiers = sourceFile.identifiers; isCurrentFileExternalModule = ts.isExternalModule(sourceFile); - emit(sourceFile); + setSourceFile(sourceFile); + emitNodeWithCommentsAndWithoutSourcemap(sourceFile); } function isUniqueName(name) { return !resolver.hasGlobalName(name) && @@ -30630,17 +31556,17 @@ var ts; switch (node.kind) { case 69 /* Identifier */: return makeUniqueName(node.text); - case 218 /* ModuleDeclaration */: - case 217 /* EnumDeclaration */: + case 220 /* ModuleDeclaration */: + case 219 /* EnumDeclaration */: return generateNameForModuleOrEnum(node); - case 222 /* ImportDeclaration */: - case 228 /* ExportDeclaration */: + case 224 /* ImportDeclaration */: + case 230 /* ExportDeclaration */: return generateNameForImportOrExportDeclaration(node); - case 213 /* FunctionDeclaration */: - case 214 /* ClassDeclaration */: - case 227 /* ExportAssignment */: + case 215 /* FunctionDeclaration */: + case 216 /* ClassDeclaration */: + case 229 /* ExportAssignment */: return generateNameForExportDefault(); - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return generateNameForClassExpression(); } } @@ -30648,338 +31574,15 @@ var ts; var id = ts.getNodeId(node); return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } - function initializeEmitterWithSourceMaps(jsFilePath, root) { - var sourceMapDir; // The directory in which sourcemap will be - // Current source map file and its index in the sources list - var sourceMapSourceIndex = -1; - // Names and its index map - var sourceMapNameIndexMap = {}; - var sourceMapNameIndices = []; - function getSourceMapNameIndex() { - return sourceMapNameIndices.length ? ts.lastOrUndefined(sourceMapNameIndices) : -1; + /** Write emitted output to disk */ + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false); } - // Last recorded and encoded spans - var lastRecordedSourceMapSpan; - var lastEncodedSourceMapSpan = { - emittedLine: 1, - emittedColumn: 1, - sourceLine: 1, - sourceColumn: 1, - sourceIndex: 0 - }; - var lastEncodedNameIndex = 0; - // Encoding for sourcemap span - function encodeLastRecordedSourceMapSpan() { - if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { - return; - } - var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; - // Line/Comma delimiters - if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { - // Emit comma to separate the entry - if (sourceMapData.sourceMapMappings) { - sourceMapData.sourceMapMappings += ","; - } - } - else { - // Emit line delimiters - for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { - sourceMapData.sourceMapMappings += ";"; - } - prevEncodedEmittedColumn = 1; - } - // 1. Relative Column 0 based - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); - // 2. Relative sourceIndex - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); - // 3. Relative sourceLine 0 based - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); - // 4. Relative sourceColumn 0 based - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); - // 5. Relative namePosition 0 based - if (lastRecordedSourceMapSpan.nameIndex >= 0) { - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); - lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; - } - lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; - sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); - function base64VLQFormatEncode(inValue) { - function base64FormatEncode(inValue) { - if (inValue < 64) { - return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(inValue); - } - throw TypeError(inValue + ": not a 64 based value"); - } - // Add a new least significant bit that has the sign of the value. - // if negative number the least significant bit that gets added to the number has value 1 - // else least significant bit value that gets added is 0 - // eg. -1 changes to binary : 01 [1] => 3 - // +1 changes to binary : 01 [0] => 2 - if (inValue < 0) { - inValue = ((-inValue) << 1) + 1; - } - else { - inValue = inValue << 1; - } - // Encode 5 bits at a time starting from least significant bits - var encodedStr = ""; - do { - var currentDigit = inValue & 31; // 11111 - inValue = inValue >> 5; - if (inValue > 0) { - // There are still more digits to decode, set the msb (6th bit) - currentDigit = currentDigit | 32; - } - encodedStr = encodedStr + base64FormatEncode(currentDigit); - } while (inValue > 0); - return encodedStr; - } + if (sourceMapDataList) { + sourceMapDataList.push(sourceMap.getSourceMapData()); } - function recordSourceMapSpan(pos) { - var sourceLinePos = ts.computeLineAndCharacterOfPosition(currentLineMap, pos); - // Convert the location to be one-based. - sourceLinePos.line++; - sourceLinePos.character++; - var emittedLine = writer.getLine(); - var emittedColumn = writer.getColumn(); - // If this location wasn't recorded or the location in source is going backwards, record the span - if (!lastRecordedSourceMapSpan || - lastRecordedSourceMapSpan.emittedLine !== emittedLine || - lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || - (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && - (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || - (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { - // Encode the last recordedSpan before assigning new - encodeLastRecordedSourceMapSpan(); - // New span - lastRecordedSourceMapSpan = { - emittedLine: emittedLine, - emittedColumn: emittedColumn, - sourceLine: sourceLinePos.line, - sourceColumn: sourceLinePos.character, - nameIndex: getSourceMapNameIndex(), - sourceIndex: sourceMapSourceIndex - }; - } - else { - // Take the new pos instead since there is no change in emittedLine and column since last location - lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; - lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; - lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; - } - } - function recordEmitNodeStartSpan(node) { - // Get the token pos after skipping to the token (ignoring the leading trivia) - recordSourceMapSpan(ts.skipTrivia(currentText, node.pos)); - } - function recordEmitNodeEndSpan(node) { - recordSourceMapSpan(node.end); - } - function writeTextWithSpanRecord(tokenKind, startPos, emitFn) { - var tokenStartPos = ts.skipTrivia(currentText, startPos); - recordSourceMapSpan(tokenStartPos); - var tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); - recordSourceMapSpan(tokenEndPos); - return tokenEndPos; - } - function recordNewSourceFileStart(node) { - // Add the file to tsFilePaths - // If sourceroot option: Use the relative path corresponding to the common directory path - // otherwise source locations relative to map file location - var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; - sourceMapData.sourceMapSources.push(ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, node.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ true)); - sourceMapSourceIndex = sourceMapData.sourceMapSources.length - 1; - // The one that can be used from program to get the actual source file - sourceMapData.inputSourceFileNames.push(node.fileName); - if (compilerOptions.inlineSources) { - if (!sourceMapData.sourceMapSourcesContent) { - sourceMapData.sourceMapSourcesContent = []; - } - sourceMapData.sourceMapSourcesContent.push(node.text); - } - } - function recordScopeNameOfNode(node, scopeName) { - function recordScopeNameIndex(scopeNameIndex) { - sourceMapNameIndices.push(scopeNameIndex); - } - function recordScopeNameStart(scopeName) { - var scopeNameIndex = -1; - if (scopeName) { - var parentIndex = getSourceMapNameIndex(); - if (parentIndex !== -1) { - // Child scopes are always shown with a dot (even if they have no name), - // unless it is a computed property. Then it is shown with brackets, - // but the brackets are included in the name. - var name_21 = node.name; - if (!name_21 || name_21.kind !== 136 /* ComputedPropertyName */) { - scopeName = "." + scopeName; - } - scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; - } - scopeNameIndex = ts.getProperty(sourceMapNameIndexMap, scopeName); - if (scopeNameIndex === undefined) { - scopeNameIndex = sourceMapData.sourceMapNames.length; - sourceMapData.sourceMapNames.push(scopeName); - sourceMapNameIndexMap[scopeName] = scopeNameIndex; - } - } - recordScopeNameIndex(scopeNameIndex); - } - if (scopeName) { - // The scope was already given a name use it - recordScopeNameStart(scopeName); - } - else if (node.kind === 213 /* FunctionDeclaration */ || - node.kind === 173 /* FunctionExpression */ || - node.kind === 143 /* MethodDeclaration */ || - node.kind === 142 /* MethodSignature */ || - node.kind === 145 /* GetAccessor */ || - node.kind === 146 /* SetAccessor */ || - node.kind === 218 /* ModuleDeclaration */ || - node.kind === 214 /* ClassDeclaration */ || - node.kind === 217 /* EnumDeclaration */) { - // Declaration and has associated name use it - if (node.name) { - var name_22 = node.name; - // For computed property names, the text will include the brackets - scopeName = name_22.kind === 136 /* ComputedPropertyName */ - ? ts.getTextOfNode(name_22) - : node.name.text; - } - recordScopeNameStart(scopeName); - } - else { - // Block just use the name from upper level scope - recordScopeNameIndex(getSourceMapNameIndex()); - } - } - function recordScopeNameEnd() { - sourceMapNameIndices.pop(); - } - ; - function writeCommentRangeWithMap(currentText, currentLineMap, writer, comment, newLine) { - recordSourceMapSpan(comment.pos); - ts.writeCommentRange(currentText, currentLineMap, writer, comment, newLine); - recordSourceMapSpan(comment.end); - } - function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings, sourcesContent) { - if (typeof JSON !== "undefined") { - var map_1 = { - version: version, - file: file, - sourceRoot: sourceRoot, - sources: sources, - names: names, - mappings: mappings - }; - if (sourcesContent !== undefined) { - map_1.sourcesContent = sourcesContent; - } - return JSON.stringify(map_1); - } - return "{\"version\":" + version + ",\"file\":\"" + ts.escapeString(file) + "\",\"sourceRoot\":\"" + ts.escapeString(sourceRoot) + "\",\"sources\":[" + serializeStringArray(sources) + "],\"names\":[" + serializeStringArray(names) + "],\"mappings\":\"" + ts.escapeString(mappings) + "\" " + (sourcesContent !== undefined ? ",\"sourcesContent\":[" + serializeStringArray(sourcesContent) + "]" : "") + "}"; - function serializeStringArray(list) { - var output = ""; - for (var i = 0, n = list.length; i < n; i++) { - if (i) { - output += ","; - } - output += "\"" + ts.escapeString(list[i]) + "\""; - } - return output; - } - } - function writeJavaScriptAndSourceMapFile(emitOutput, jsFilePath, writeByteOrderMark) { - encodeLastRecordedSourceMapSpan(); - var sourceMapText = serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings, sourceMapData.sourceMapSourcesContent); - sourceMapDataList.push(sourceMapData); - var sourceMapUrl; - if (compilerOptions.inlineSourceMap) { - // Encode the sourceMap into the sourceMap url - var base64SourceMapText = ts.convertToBase64(sourceMapText); - sourceMapUrl = "//# sourceMappingURL=data:application/json;base64," + base64SourceMapText; - } - else { - // Write source map file - ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, sourceMapText, /*writeByteOrderMark*/ false); - sourceMapUrl = "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL; - } - // Write sourcemap url to the js file and write the js file - writeJavaScriptFile(emitOutput + sourceMapUrl, jsFilePath, writeByteOrderMark); - } - // Initialize source map data - var sourceMapJsFile = ts.getBaseFileName(ts.normalizeSlashes(jsFilePath)); - sourceMapData = { - sourceMapFilePath: jsFilePath + ".map", - jsSourceMappingURL: sourceMapJsFile + ".map", - sourceMapFile: sourceMapJsFile, - sourceMapSourceRoot: compilerOptions.sourceRoot || "", - sourceMapSources: [], - inputSourceFileNames: [], - sourceMapNames: [], - sourceMapMappings: "", - sourceMapSourcesContent: undefined, - sourceMapDecodedMappings: [] - }; - // Normalize source root and make sure it has trailing "/" so that it can be used to combine paths with the - // relative paths of the sources list in the sourcemap - sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); - if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47 /* slash */) { - sourceMapData.sourceMapSourceRoot += ts.directorySeparator; - } - if (compilerOptions.mapRoot) { - sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); - if (root) { - // For modules or multiple emit files the mapRoot will have directory structure like the sources - // So if src\a.ts and src\lib\b.ts are compiled together user would be moving the maps into mapRoot\a.js.map and mapRoot\lib\b.js.map - sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); - } - if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { - // The relative paths are relative to the common directory - sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); - sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(jsFilePath)), // get the relative sourceMapDir path based on jsFilePath - ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), // this is where user expects to see sourceMap - host.getCurrentDirectory(), host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ true); - } - else { - sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); - } - } - else { - sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); - } - function emitNodeWithSourceMap(node) { - if (node) { - if (ts.nodeIsSynthesized(node)) { - return emitNodeWithoutSourceMap(node); - } - if (node.kind !== 248 /* SourceFile */) { - recordEmitNodeStartSpan(node); - emitNodeWithoutSourceMap(node); - recordEmitNodeEndSpan(node); - } - else { - recordNewSourceFileStart(node); - emitNodeWithoutSourceMap(node); - } - } - } - function emitNodeWithCommentsAndWithSourcemap(node) { - emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); - } - writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithCommentsAndWithSourcemap; - emitStart = recordEmitNodeStartSpan; - emitEnd = recordEmitNodeEndSpan; - emitToken = writeTextWithSpanRecord; - scopeEmitStart = recordScopeNameOfNode; - scopeEmitEnd = recordScopeNameEnd; - writeComment = writeCommentRangeWithMap; - } - function writeJavaScriptFile(emitOutput, jsFilePath, writeByteOrderMark) { - ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); } // Create a temporary variable with a unique unused name. function createTempVariable(flags) { @@ -31011,7 +31614,15 @@ var ts; write(";"); } } - function emitTokenText(tokenKind, startPos, emitFn) { + /** Emit the text for the given token that comes after startPos + * This by default writes the text provided with the given tokenKind + * but if optional emitFn callback is provided the text is emitted using the callback instead of default text + * @param tokenKind the kind of the token to search and emit + * @param startPos the position in the source to start searching for the token + * @param emitFn if given will be invoked to emit the text instead of actual token emit */ + function emitToken(tokenKind, startPos, emitFn) { + var tokenStartPos = ts.skipTrivia(currentText, startPos); + emitPos(tokenStartPos); var tokenString = ts.tokenToString(tokenKind); if (emitFn) { emitFn(); @@ -31019,7 +31630,9 @@ var ts; else { write(tokenString); } - return startPos + tokenString.length; + var tokenEndPos = tokenStartPos + tokenString.length; + emitPos(tokenEndPos); + return tokenEndPos; } function emitOptional(prefix, node) { if (node) { @@ -31036,11 +31649,6 @@ var ts; write(")"); } } - function emitTrailingCommaIfPresent(nodeList) { - if (nodeList.hasTrailingComma) { - write(","); - } - } function emitLinePreservingList(parent, nodes, allowTrailingComma, spacesBetweenBraces) { ts.Debug.assert(nodes.length > 0); increaseIndent(); @@ -31113,7 +31721,7 @@ var ts; } function emitCommaList(nodes) { if (nodes) { - emitList(nodes, 0, nodes.length, /*multiline*/ false, /*trailingComma*/ false); + emitList(nodes, 0, nodes.length, /*multiLine*/ false, /*trailingComma*/ false); } } function emitLines(nodes) { @@ -31228,10 +31836,10 @@ var ts; write("("); emit(tempVariable); // Now we emit the expressions - if (node.template.kind === 183 /* TemplateExpression */) { + if (node.template.kind === 185 /* TemplateExpression */) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 181 /* BinaryExpression */ + var needsParens = templateSpan.expression.kind === 183 /* BinaryExpression */ && templateSpan.expression.operatorToken.kind === 24 /* CommaToken */; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -31266,7 +31874,7 @@ var ts; // ("abc" + 1) << (2 + "") // rather than // "abc" + (1 << 2) + "" - var needsParens = templateSpan.expression.kind !== 172 /* ParenthesizedExpression */ + var needsParens = templateSpan.expression.kind !== 174 /* ParenthesizedExpression */ && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1 /* GreaterThan */; if (i > 0 || headEmitted) { // If this is the first span and the head was not emitted, then this templateSpan's @@ -31308,11 +31916,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return parent.expression === template; - case 170 /* TaggedTemplateExpression */: - case 172 /* ParenthesizedExpression */: + case 172 /* TaggedTemplateExpression */: + case 174 /* ParenthesizedExpression */: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1 /* LessThan */; @@ -31333,7 +31941,7 @@ var ts; // TODO (drosen): Note that we need to account for the upcoming 'yield' and // spread ('...') unary operators that are anticipated for ES6. switch (expression.kind) { - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: switch (expression.operatorToken.kind) { case 37 /* AsteriskToken */: case 39 /* SlashToken */: @@ -31345,8 +31953,8 @@ var ts; default: return -1 /* LessThan */; } - case 184 /* YieldExpression */: - case 182 /* ConditionalExpression */: + case 186 /* YieldExpression */: + case 184 /* ConditionalExpression */: return -1 /* LessThan */; default: return 1 /* GreaterThan */; @@ -31374,13 +31982,13 @@ var ts; /// these emit into an object literal property name, we don't need to be worried /// about keywords, just non-identifier characters function emitAttributeName(name) { - if (/[A-Za-z_]+[\w*]/.test(name.text)) { - write("\""); + if (/^[A-Za-z_]\w*$/.test(name.text)) { emit(name); - write("\""); } else { + write("\""); emit(name); + write("\""); } } /// Emit an name/value pair for an attribute (e.g. "x: 3") @@ -31396,7 +32004,7 @@ var ts; } function emitJsxElement(openingNode, children) { var syntheticReactRef = ts.createSynthesizedNode(69 /* Identifier */); - syntheticReactRef.text = "React"; + syntheticReactRef.text = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; syntheticReactRef.parent = openingNode; // Call React.createElement(tag, ... emitLeadingComments(openingNode); @@ -31413,12 +32021,12 @@ var ts; // Either emit one big object literal (no spread attribs), or // a call to React.__spread var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 239 /* JsxSpreadAttribute */; })) { + if (ts.forEach(attrs, function (attr) { return attr.kind === 241 /* JsxSpreadAttribute */; })) { emitExpressionIdentifier(syntheticReactRef); write(".__spread("); var haveOpenedObjectLiteral = false; for (var i_1 = 0; i_1 < attrs.length; i_1++) { - if (attrs[i_1].kind === 239 /* JsxSpreadAttribute */) { + if (attrs[i_1].kind === 241 /* JsxSpreadAttribute */) { // If this is the first argument, we need to emit a {} as the first argument if (i_1 === 0) { write("{}, "); @@ -31433,7 +32041,7 @@ var ts; emit(attrs[i_1].expression); } else { - ts.Debug.assert(attrs[i_1].kind === 238 /* JsxAttribute */); + ts.Debug.assert(attrs[i_1].kind === 240 /* JsxAttribute */); if (haveOpenedObjectLiteral) { write(", "); } @@ -31467,11 +32075,11 @@ var ts; if (children) { for (var i = 0; i < children.length; i++) { // Don't emit empty expressions - if (children[i].kind === 240 /* JsxExpression */ && !(children[i].expression)) { + if (children[i].kind === 242 /* JsxExpression */ && !(children[i].expression)) { continue; } // Don't emit empty strings - if (children[i].kind === 236 /* JsxText */) { + if (children[i].kind === 238 /* JsxText */) { var text = getTextToEmit(children[i]); if (text !== undefined) { write(", \""); @@ -31489,11 +32097,11 @@ var ts; write(")"); // closes "React.createElement(" emitTrailingComments(openingNode); } - if (node.kind === 233 /* JsxElement */) { + if (node.kind === 235 /* JsxElement */) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 234 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 236 /* JsxSelfClosingElement */); emitJsxElement(node); } } @@ -31515,11 +32123,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 239 /* JsxSpreadAttribute */) { + if (attribs[i].kind === 241 /* JsxSpreadAttribute */) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 238 /* JsxAttribute */); + ts.Debug.assert(attribs[i].kind === 240 /* JsxAttribute */); emitJsxAttribute(attribs[i]); } } @@ -31527,11 +32135,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 234 /* JsxSelfClosingElement */)) { + if (node.attributes.length > 0 || (node.kind === 236 /* JsxSelfClosingElement */)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 234 /* JsxSelfClosingElement */) { + if (node.kind === 236 /* JsxSelfClosingElement */) { write("/>"); } else { @@ -31550,11 +32158,11 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 233 /* JsxElement */) { + if (node.kind === 235 /* JsxElement */) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 234 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 236 /* JsxSelfClosingElement */); emitJsxOpeningOrSelfClosingElement(node); } } @@ -31562,7 +32170,7 @@ var ts; // In a sense, it does not actually emit identifiers as much as it declares a name for a specific property. // For example, this is utilized when feeding in a result to Object.defineProperty. function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 163 /* BindingElement */); + ts.Debug.assert(node.kind !== 165 /* BindingElement */); if (node.kind === 9 /* StringLiteral */) { emitLiteral(node); } @@ -31610,59 +32218,60 @@ var ts; function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 164 /* ArrayLiteralExpression */: - case 189 /* AsExpression */: - case 181 /* BinaryExpression */: - case 168 /* CallExpression */: - case 241 /* CaseClause */: + case 166 /* ArrayLiteralExpression */: + case 191 /* AsExpression */: + case 183 /* BinaryExpression */: + case 170 /* CallExpression */: + case 243 /* CaseClause */: case 136 /* ComputedPropertyName */: - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: case 139 /* Decorator */: - case 175 /* DeleteExpression */: - case 197 /* DoStatement */: - case 167 /* ElementAccessExpression */: - case 227 /* ExportAssignment */: - case 195 /* ExpressionStatement */: - case 188 /* ExpressionWithTypeArguments */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 196 /* IfStatement */: - case 234 /* JsxSelfClosingElement */: - case 235 /* JsxOpeningElement */: - case 239 /* JsxSpreadAttribute */: - case 240 /* JsxExpression */: - case 169 /* NewExpression */: - case 172 /* ParenthesizedExpression */: - case 180 /* PostfixUnaryExpression */: - case 179 /* PrefixUnaryExpression */: - case 204 /* ReturnStatement */: - case 246 /* ShorthandPropertyAssignment */: - case 185 /* SpreadElementExpression */: - case 206 /* SwitchStatement */: - case 170 /* TaggedTemplateExpression */: - case 190 /* TemplateSpan */: - case 208 /* ThrowStatement */: - case 171 /* TypeAssertionExpression */: - case 176 /* TypeOfExpression */: - case 177 /* VoidExpression */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 184 /* YieldExpression */: + case 177 /* DeleteExpression */: + case 199 /* DoStatement */: + case 169 /* ElementAccessExpression */: + case 229 /* ExportAssignment */: + case 197 /* ExpressionStatement */: + case 190 /* ExpressionWithTypeArguments */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 198 /* IfStatement */: + case 239 /* JsxClosingElement */: + case 236 /* JsxSelfClosingElement */: + case 237 /* JsxOpeningElement */: + case 241 /* JsxSpreadAttribute */: + case 242 /* JsxExpression */: + case 171 /* NewExpression */: + case 174 /* ParenthesizedExpression */: + case 182 /* PostfixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: + case 206 /* ReturnStatement */: + case 248 /* ShorthandPropertyAssignment */: + case 187 /* SpreadElementExpression */: + case 208 /* SwitchStatement */: + case 172 /* TaggedTemplateExpression */: + case 192 /* TemplateSpan */: + case 210 /* ThrowStatement */: + case 173 /* TypeAssertionExpression */: + case 178 /* TypeOfExpression */: + case 179 /* VoidExpression */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 186 /* YieldExpression */: return true; - case 163 /* BindingElement */: - case 247 /* EnumMember */: + case 165 /* BindingElement */: + case 249 /* EnumMember */: case 138 /* Parameter */: - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return parent.initializer === node; - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return parent.expression === node; - case 174 /* ArrowFunction */: - case 173 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 175 /* FunctionExpression */: return parent.body === node; - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return parent.moduleReference === node; case 135 /* QualifiedName */: return parent.left === node; @@ -31676,7 +32285,7 @@ var ts; } var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 248 /* SourceFile */) { + if (container.kind === 250 /* SourceFile */) { // Identifier references module export if (modulekind !== 5 /* ES6 */ && modulekind !== 4 /* System */) { write("exports."); @@ -31692,17 +32301,17 @@ var ts; if (modulekind !== 5 /* ES6 */) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 223 /* ImportClause */) { + if (declaration.kind === 225 /* ImportClause */) { // Identifier references default import write(getGeneratedNameForNode(declaration.parent)); write(languageVersion === 0 /* ES3 */ ? "[\"default\"]" : ".default"); return; } - else if (declaration.kind === 226 /* ImportSpecifier */) { + else if (declaration.kind === 228 /* ImportSpecifier */) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_21 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_21); if (languageVersion === 0 /* ES3 */ && identifier === "default") { write("[\"default\"]"); } @@ -31733,10 +32342,10 @@ var ts; if (languageVersion < 2 /* ES6 */) { var parent_6 = node.parent; switch (parent_6.kind) { - case 163 /* BindingElement */: - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 211 /* VariableDeclaration */: + case 165 /* BindingElement */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 213 /* VariableDeclaration */: return parent_6.name === node && resolver.isNestedRedeclaration(parent_6); } } @@ -31746,8 +32355,8 @@ var ts; if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { // in converted loop body arguments cannot be used directly. - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_22 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_22); return; } } @@ -31771,6 +32380,9 @@ var ts; if (resolver.getNodeCheckFlags(node) & 2 /* LexicalThis */) { write("_this"); } + else if (convertedLoopState) { + write(convertedLoopState.thisName || (convertedLoopState.thisName = makeUniqueName("this"))); + } else { write("this"); } @@ -31844,10 +32456,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 181 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 183 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 182 /* ConditionalExpression */ && node.parent.condition === node) { + else if (node.parent.kind === 184 /* ConditionalExpression */ && node.parent.condition === node) { return true; } return false; @@ -31855,11 +32467,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69 /* Identifier */: - case 164 /* ArrayLiteralExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 172 /* ParenthesizedExpression */: + case 166 /* ArrayLiteralExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 174 /* ParenthesizedExpression */: // This list is not exhaustive and only includes those cases that are relevant // to the check in emitArrayLiteral. More cases can be added as needed. return false; @@ -31879,17 +32491,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 185 /* SpreadElementExpression */) { + if (e.kind === 187 /* SpreadElementExpression */) { e = e.expression; emitParenthesizedIf(e, /*parenthesized*/ group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 164 /* ArrayLiteralExpression */) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 166 /* ArrayLiteralExpression */) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 185 /* SpreadElementExpression */) { + while (i < length && elements[i].kind !== 187 /* SpreadElementExpression */) { i++; } write("["); @@ -31912,7 +32524,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 185 /* SpreadElementExpression */; + return node.kind === 187 /* SpreadElementExpression */; } function emitArrayLiteral(node) { var elements = node.elements; @@ -31921,7 +32533,7 @@ var ts; } else if (languageVersion >= 2 /* ES6 */ || !ts.forEach(elements, isSpreadElementExpression)) { write("["); - emitLinePreservingList(node, node.elements, elements.hasTrailingComma, /*spacesBetweenBraces:*/ false); + emitLinePreservingList(node, node.elements, elements.hasTrailingComma, /*spacesBetweenBraces*/ false); write("]"); } else { @@ -31941,7 +32553,7 @@ var ts; // then try to preserve the original shape of the object literal. // Otherwise just try to preserve the formatting. if (numElements === properties.length) { - emitLinePreservingList(node, properties, /* allowTrailingComma */ languageVersion >= 1 /* ES5 */, /* spacesBetweenBraces */ true); + emitLinePreservingList(node, properties, /*allowTrailingComma*/ languageVersion >= 1 /* ES5 */, /*spacesBetweenBraces*/ true); } else { var multiLine = (node.flags & 1024 /* MultiLine */) !== 0; @@ -32034,10 +32646,10 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 245 /* PropertyAssignment */) { + if (property.kind === 247 /* PropertyAssignment */) { emit(property.initializer); } - else if (property.kind === 246 /* ShorthandPropertyAssignment */) { + else if (property.kind === 248 /* ShorthandPropertyAssignment */) { emitExpressionIdentifier(property.name); } else if (property.kind === 143 /* MethodDeclaration */) { @@ -32090,21 +32702,21 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(181 /* BinaryExpression */, startsOnNewLine); + var result = ts.createSynthesizedNode(183 /* BinaryExpression */, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(166 /* PropertyAccessExpression */); + var result = ts.createSynthesizedNode(168 /* PropertyAccessExpression */); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21 /* DotToken */); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(167 /* ElementAccessExpression */); + var result = ts.createSynthesizedNode(169 /* ElementAccessExpression */); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; @@ -32112,7 +32724,7 @@ var ts; function parenthesizeForAccess(expr) { // When diagnosing whether the expression needs parentheses, the decision should be based // on the innermost expression in a chain of nested type assertions. - while (expr.kind === 171 /* TypeAssertionExpression */ || expr.kind === 189 /* AsExpression */) { + while (expr.kind === 173 /* TypeAssertionExpression */ || expr.kind === 191 /* AsExpression */) { expr = expr.expression; } // isLeftHandSideExpression is almost the correct criterion for when it is not necessary @@ -32124,11 +32736,11 @@ var ts; // 1.x -> not the same as (1).x // if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 169 /* NewExpression */ && + expr.kind !== 171 /* NewExpression */ && expr.kind !== 8 /* NumericLiteral */) { return expr; } - var node = ts.createSynthesizedNode(172 /* ParenthesizedExpression */); + var node = ts.createSynthesizedNode(174 /* ParenthesizedExpression */); node.expression = expr; return node; } @@ -32163,7 +32775,7 @@ var ts; // Return true if identifier resolves to an exported member of a namespace function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 248 /* SourceFile */; + return container && container.kind !== 250 /* SourceFile */; } function emitShorthandPropertyAssignment(node) { // The name property of a short-hand property assignment is considered an expression position, so here @@ -32193,7 +32805,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 166 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 168 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -32204,7 +32816,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 166 /* PropertyAccessExpression */ || node.kind === 167 /* ElementAccessExpression */ + return node.kind === 168 /* PropertyAccessExpression */ || node.kind === 169 /* ElementAccessExpression */ ? resolver.getConstantValue(node) : undefined; } @@ -32296,6 +32908,9 @@ var ts; case 135 /* QualifiedName */: emitQualifiedNameAsExpression(node, useFallback); break; + default: + emitNodeWithoutSourceMap(node); + break; } } function emitIndexedAccess(node) { @@ -32308,10 +32923,10 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 185 /* SpreadElementExpression */; }); + return ts.forEach(elements, function (e) { return e.kind === 187 /* SpreadElementExpression */; }); } function skipParentheses(node) { - while (node.kind === 172 /* ParenthesizedExpression */ || node.kind === 171 /* TypeAssertionExpression */ || node.kind === 189 /* AsExpression */) { + while (node.kind === 174 /* ParenthesizedExpression */ || node.kind === 173 /* TypeAssertionExpression */ || node.kind === 191 /* AsExpression */) { node = node.expression; } return node; @@ -32332,13 +32947,13 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 166 /* PropertyAccessExpression */) { + if (expr.kind === 168 /* PropertyAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 167 /* ElementAccessExpression */) { + else if (expr.kind === 169 /* ElementAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("["); @@ -32383,7 +32998,7 @@ var ts; } else { emit(node.expression); - superCall = node.expression.kind === 166 /* PropertyAccessExpression */ && node.expression.expression.kind === 95 /* SuperKeyword */; + superCall = node.expression.kind === 168 /* PropertyAccessExpression */ && node.expression.expression.kind === 95 /* SuperKeyword */; } if (superCall && languageVersion < 2 /* ES6 */) { write(".call("); @@ -32425,7 +33040,7 @@ var ts; write(".bind.apply("); emit(target); write(", [void 0].concat("); - emitListWithSpread(node.arguments, /*needsUniqueCopy*/ false, /*multiline*/ false, /*trailingComma*/ false, /*useConcat*/ false); + emitListWithSpread(node.arguments, /*needsUniqueCopy*/ false, /*multiLine*/ false, /*trailingComma*/ false, /*useConcat*/ false); write(")))"); write("()"); } @@ -32452,12 +33067,12 @@ var ts; // If the node is synthesized, it means the emitter put the parentheses there, // not the user. If we didn't want them, the emitter would not have put them // there. - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 174 /* ArrowFunction */) { - if (node.expression.kind === 171 /* TypeAssertionExpression */ || node.expression.kind === 189 /* AsExpression */) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 176 /* ArrowFunction */) { + if (node.expression.kind === 173 /* TypeAssertionExpression */ || node.expression.kind === 191 /* AsExpression */) { var operand = node.expression.expression; // Make sure we consider all nested cast expressions, e.g.: // (-A).x; - while (operand.kind === 171 /* TypeAssertionExpression */ || operand.kind === 189 /* AsExpression */) { + while (operand.kind === 173 /* TypeAssertionExpression */ || operand.kind === 191 /* AsExpression */) { operand = operand.expression; } // We have an expression of the form: (SubExpr) @@ -32468,15 +33083,15 @@ var ts; // (typeof A).toString() should be emitted as (typeof A).toString() and not typeof A.toString() // new (A()) should be emitted as new (A()) and not new A() // (function foo() { })() should be emitted as an IIF (function foo(){})() and not declaration function foo(){} () - if (operand.kind !== 179 /* PrefixUnaryExpression */ && - operand.kind !== 177 /* VoidExpression */ && - operand.kind !== 176 /* TypeOfExpression */ && - operand.kind !== 175 /* DeleteExpression */ && - operand.kind !== 180 /* PostfixUnaryExpression */ && - operand.kind !== 169 /* NewExpression */ && - !(operand.kind === 168 /* CallExpression */ && node.parent.kind === 169 /* NewExpression */) && - !(operand.kind === 173 /* FunctionExpression */ && node.parent.kind === 168 /* CallExpression */) && - !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 166 /* PropertyAccessExpression */)) { + if (operand.kind !== 181 /* PrefixUnaryExpression */ && + operand.kind !== 179 /* VoidExpression */ && + operand.kind !== 178 /* TypeOfExpression */ && + operand.kind !== 177 /* DeleteExpression */ && + operand.kind !== 182 /* PostfixUnaryExpression */ && + operand.kind !== 171 /* NewExpression */ && + !(operand.kind === 170 /* CallExpression */ && node.parent.kind === 171 /* NewExpression */) && + !(operand.kind === 175 /* FunctionExpression */ && node.parent.kind === 170 /* CallExpression */) && + !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 168 /* PropertyAccessExpression */)) { emit(operand); return; } @@ -32505,14 +33120,15 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 /* Identifier */ || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 211 /* VariableDeclaration */ || node.parent.kind === 163 /* BindingElement */); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 213 /* VariableDeclaration */ || node.parent.kind === 165 /* BindingElement */); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); return isSourceFileLevelDeclarationInSystemJsModule(targetDeclaration, /*isExported*/ true); } function emitPrefixUnaryExpression(node) { - var exportChanged = isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); + var exportChanged = (node.operator === 41 /* PlusPlusToken */ || node.operator === 42 /* MinusMinusToken */) && + isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); if (exportChanged) { // emit // ++x @@ -32535,7 +33151,7 @@ var ts; // the resulting expression a prefix increment operation. And in the second, it will make the resulting // expression a prefix increment whose operand is a plus expression - (++(+x)) // The same is true of minus of course. - if (node.operand.kind === 179 /* PrefixUnaryExpression */) { + if (node.operand.kind === 181 /* PrefixUnaryExpression */) { var operand = node.operand; if (node.operator === 35 /* PlusToken */ && (operand.operator === 35 /* PlusToken */ || operand.operator === 41 /* PlusPlusToken */)) { write(" "); @@ -32591,10 +33207,10 @@ var ts; } var current = node; while (current) { - if (current.kind === 248 /* SourceFile */) { + if (current.kind === 250 /* SourceFile */) { return !isExported || ((ts.getCombinedNodeFlags(node) & 2 /* Export */) !== 0); } - else if (ts.isFunctionLike(current) || current.kind === 219 /* ModuleBlock */) { + else if (ts.isFunctionLike(current) || current.kind === 221 /* ModuleBlock */) { return false; } else { @@ -32614,8 +33230,8 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(167 /* ElementAccessExpression */, /*startsOnNewLine*/ false); - var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefinedTempVariablesInPlaces*/ false, /*shouldEmitCommaBeforeAssignment*/ false); + synthesizedLHS = ts.createSynthesizedNode(169 /* ElementAccessExpression */, /*startsOnNewLine*/ false); + var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 /* NumericLiteral */ && leftHandSideExpression.argumentExpression.kind !== 9 /* StringLiteral */) { @@ -32631,8 +33247,8 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(166 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); - var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefinedTempVariablesInPlaces*/ false, /*shouldemitCommaBeforeAssignment*/ false); + synthesizedLHS = ts.createSynthesizedNode(168 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); + var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; synthesizedLHS.name = leftHandSideExpression.name; @@ -32659,8 +33275,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 /* ES6 */ && node.operatorToken.kind === 56 /* EqualsToken */ && - (node.left.kind === 165 /* ObjectLiteralExpression */ || node.left.kind === 164 /* ArrayLiteralExpression */)) { - emitDestructuring(node, node.parent.kind === 195 /* ExpressionStatement */); + (node.left.kind === 167 /* ObjectLiteralExpression */ || node.left.kind === 166 /* ArrayLiteralExpression */)) { + emitDestructuring(node, node.parent.kind === 197 /* ExpressionStatement */); } else { var exportChanged = node.operatorToken.kind >= 56 /* FirstAssignment */ && @@ -32725,7 +33341,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 192 /* Block */) { + if (node && node.kind === 194 /* Block */) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -32739,22 +33355,20 @@ var ts; } emitToken(15 /* OpenBraceToken */, node.pos); increaseIndent(); - scopeEmitStart(node.parent); - if (node.kind === 219 /* ModuleBlock */) { - ts.Debug.assert(node.parent.kind === 218 /* ModuleDeclaration */); + if (node.kind === 221 /* ModuleBlock */) { + ts.Debug.assert(node.parent.kind === 220 /* ModuleDeclaration */); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 219 /* ModuleBlock */) { + if (node.kind === 221 /* ModuleBlock */) { emitTempDeclarations(/*newLine*/ true); } decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.statements.end); - scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 192 /* Block */) { + if (node.kind === 194 /* Block */) { write(" "); emit(node); } @@ -32766,7 +33380,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 174 /* ArrowFunction */); + emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 176 /* ArrowFunction */); write(";"); } function emitIfStatement(node) { @@ -32779,7 +33393,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80 /* ElseKeyword */, node.thenStatement.end); - if (node.elseStatement.kind === 196 /* IfStatement */) { + if (node.elseStatement.kind === 198 /* IfStatement */) { write(" "); emit(node.elseStatement); } @@ -32794,12 +33408,12 @@ var ts; function emitDoStatementWorker(node, loop) { write("do"); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } - if (node.statement.kind === 192 /* Block */) { + if (node.statement.kind === 194 /* Block */) { write(" "); } else { @@ -32817,10 +33431,10 @@ var ts; emit(node.expression); write(")"); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } } /** @@ -32834,7 +33448,7 @@ var ts; return false; } if (convertedLoopState && (ts.getCombinedNodeFlags(decl) & 24576 /* BlockScoped */) === 0) { - // we are inside a converted loop - this can only happen in downlevel scenarios + // we are inside a converted loop - this can only happen in downlevel scenarios // record names for all variable declarations for (var _a = 0, _b = decl.declarations; _a < _b.length; _a++) { var varDecl = _b[_a]; @@ -32898,7 +33512,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 207 /* LabeledStatement */) { + if (node.parent.kind === 209 /* LabeledStatement */) { // if parent of the loop was labeled statement - attach the label to loop skipping converted loop body emitLabelAndColon(node.parent); } @@ -32909,10 +33523,10 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + if (node.initializer.kind === 214 /* VariableDeclarationList */) { loopInitializer = node.initializer; } break; @@ -32926,7 +33540,7 @@ var ts; collectNames(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 192 /* Block */; + var bodyIsBlock = node.statement.kind === 194 /* Block */; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -32945,6 +33559,11 @@ var ts; // use the same name in all nested loops convertedLoopState.argumentsName = convertedOuterLoopState.argumentsName; } + if (convertedOuterLoopState.thisName) { + // outer loop has already used 'this' so we've already have some name to alias it + // use the same name in all nested loops + convertedLoopState.thisName = convertedOuterLoopState.thisName; + } if (convertedOuterLoopState.hoistedLocalVariables) { // we've already collected some non-block scoped variable declarations in enclosing loop // use the same storage in nested loop @@ -32971,6 +33590,21 @@ var ts; writeLine(); } } + if (convertedLoopState.thisName) { + // if alias for this is set + if (convertedOuterLoopState) { + // pass it to outer converted loop + convertedOuterLoopState.thisName = convertedLoopState.thisName; + } + else { + // this is top level converted loop so we need to create an alias for 'this' here + // 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;"); + writeLine(); + } + } if (convertedLoopState.hoistedLocalVariables) { // if hoistedLocalVariables !== undefined this means that we've possibly collected some variable declarations to be hoisted later if (convertedOuterLoopState) { @@ -33027,7 +33661,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 192 /* Block */) { + else if (node.statement.kind === 194 /* Block */) { emitLines(node.statement.statements); } else { @@ -33097,8 +33731,8 @@ var ts; } write("switch(" + loopResultVariable + ") {"); increaseIndent(); - emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalBreaks, /* isBreak */ true, loopResultVariable, outerLoop); - emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalContinues, /* isBreak */ false, loopResultVariable, outerLoop); + emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalBreaks, /*isBreak*/ true, loopResultVariable, outerLoop); + emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalContinues, /*isBreak*/ false, loopResultVariable, outerLoop); decreaseIndent(); writeLine(); write("}"); @@ -33113,7 +33747,7 @@ var ts; write("case \"" + labelMarker + "\": "); // if there are no outer converted loop or outer label in question is located inside outer converted loop // then emit labeled break\continue - // otherwise propagate pair 'label -> marker' to outer converted loop and emit 'return labelMarker' so outer loop can later decide what to do + // otherwise propagate pair 'label -> marker' to outer converted loop and emit 'return labelMarker' so outer loop can later decide what to do if (!outerLoop || (outerLoop.labels && outerLoop.labels[labelText])) { if (isBreak) { write("break "); @@ -33137,7 +33771,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer && node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 214 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); if (startIsEmitted) { @@ -33156,14 +33790,14 @@ var ts; emitOptional(" ", node.incrementor); write(")"); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 /* ES6 */ && node.kind === 201 /* ForOfStatement */) { + if (languageVersion < 2 /* ES6 */ && node.kind === 203 /* ForOfStatement */) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -33174,7 +33808,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); @@ -33184,7 +33818,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 200 /* ForInStatement */) { + if (node.kind === 202 /* ForInStatement */) { write(" in "); } else { @@ -33193,15 +33827,12 @@ var ts; emit(node.expression); emitToken(18 /* CloseParenToken */, node.expression.end); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } } - function emitDownLevelForOfStatement(node) { - emitLoop(node, emitDownLevelForOfStatementWorker); - } function emitDownLevelForOfStatementWorker(node, loop) { // The following ES6 code: // @@ -33277,7 +33908,7 @@ var ts; // let v = _a[_i]; var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -33307,7 +33938,7 @@ var ts; // Initializer is an expression. Emit the expression in the body, so that it's // evaluated on every iteration. var assignmentExpression = createBinaryExpression(node.initializer, 56 /* EqualsToken */, rhsIterationValue, /*startsOnNewLine*/ false); - if (node.initializer.kind === 164 /* ArrayLiteralExpression */ || node.initializer.kind === 165 /* ObjectLiteralExpression */) { + if (node.initializer.kind === 166 /* ArrayLiteralExpression */ || node.initializer.kind === 167 /* ObjectLiteralExpression */) { // This is a destructuring pattern, so call emitDestructuring instead of emit. Calling emit will not work, because it will cause // the BinaryExpression to be passed in instead of the expression statement, which will cause emitDestructuring to crash. emitDestructuring(assignmentExpression, /*isAssignmentExpressionStatement*/ true, /*value*/ undefined); @@ -33320,10 +33951,10 @@ var ts; write(";"); if (loop) { writeLine(); - emitConvertedLoopCall(loop, /* emitAsBlock */ false); + emitConvertedLoopCall(loop, /*emitAsBlock*/ false); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ false); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ false); } writeLine(); decreaseIndent(); @@ -33335,12 +33966,12 @@ var ts; // it is possible if either // - break\continue is statement labeled and label is located inside the converted loop // - break\continue is non-labeled and located in non-converted loop\switch statement - var jump = node.kind === 203 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; + var jump = node.kind === 205 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { if (!node.label) { - if (node.kind === 203 /* BreakStatement */) { + if (node.kind === 205 /* BreakStatement */) { convertedLoopState.nonLocalJumps |= 2 /* Break */; write("return \"break\";"); } @@ -33351,20 +33982,20 @@ var ts; } else { var labelMarker; - if (node.kind === 203 /* BreakStatement */) { + if (node.kind === 205 /* BreakStatement */) { labelMarker = "break-" + node.label.text; - setLabeledJump(convertedLoopState, /* isBreak */ true, node.label.text, labelMarker); + setLabeledJump(convertedLoopState, /*isBreak*/ true, node.label.text, labelMarker); } else { labelMarker = "continue-" + node.label.text; - setLabeledJump(convertedLoopState, /* isBreak */ false, node.label.text, labelMarker); + setLabeledJump(convertedLoopState, /*isBreak*/ false, node.label.text, labelMarker); } write("return \"" + labelMarker + "\";"); } return; } } - emitToken(node.kind === 203 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); + emitToken(node.kind === 205 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); emitOptional(" ", node.label); write(";"); } @@ -33430,7 +34061,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 241 /* CaseClause */) { + if (node.kind === 243 /* CaseClause */) { write("case "); emit(node.expression); write(":"); @@ -33499,7 +34130,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 218 /* ModuleDeclaration */); + } while (node && node.kind !== 220 /* ModuleDeclaration */); return node; } function emitContainingModuleName(node) { @@ -33524,22 +34155,22 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8 /* NumericLiteral */); zero.text = "0"; - var result = ts.createSynthesizedNode(177 /* VoidExpression */); + var result = ts.createSynthesizedNode(179 /* VoidExpression */); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 248 /* SourceFile */) { - ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 227 /* ExportAssignment */); + if (node.parent.kind === 250 /* SourceFile */) { + ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 229 /* ExportAssignment */); // only allow export default at a source file level if (modulekind === 1 /* CommonJS */ || modulekind === 2 /* AMD */ || modulekind === 3 /* UMD */) { if (!isEs6Module) { - if (languageVersion === 1 /* ES5 */) { + if (languageVersion !== 0 /* ES3 */) { // default value of configurable, enumerable, writable are `false`. write("Object.defineProperty(exports, \"__esModule\", { value: true });"); writeLine(); } - else if (languageVersion === 0 /* ES3 */) { + else { write("exports.__esModule = true;"); writeLine(); } @@ -33636,7 +34267,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 211 /* VariableDeclaration */ || name.parent.kind === 163 /* BindingElement */); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 213 /* VariableDeclaration */ || name.parent.kind === 165 /* BindingElement */); if (isVariableDeclarationOrBindingElement) { emitModuleMemberName(name.parent); } @@ -33670,7 +34301,7 @@ var ts; // Also temporary variables should be explicitly allocated for source level declarations when module target is system // because actual variable declarations are hoisted var canDefineTempVariablesInPlace = false; - if (root.kind === 211 /* VariableDeclaration */) { + if (root.kind === 213 /* VariableDeclaration */) { var isExported = ts.getCombinedNodeFlags(root) & 2 /* Export */; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; @@ -33678,7 +34309,7 @@ var ts; else if (root.kind === 138 /* Parameter */) { canDefineTempVariablesInPlace = true; } - if (root.kind === 181 /* BinaryExpression */) { + if (root.kind === 183 /* BinaryExpression */) { emitAssignmentExpression(root); } else { @@ -33707,14 +34338,14 @@ var ts; // we need to generate a temporary variable value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); // Return the expression 'value === void 0 ? defaultValue : value' - var equals = ts.createSynthesizedNode(181 /* BinaryExpression */); + var equals = ts.createSynthesizedNode(183 /* BinaryExpression */); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32 /* EqualsEqualsEqualsToken */); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(182 /* ConditionalExpression */); + var cond = ts.createSynthesizedNode(184 /* ConditionalExpression */); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53 /* QuestionToken */); cond.whenTrue = whenTrue; @@ -33731,7 +34362,7 @@ var ts; var index; var nameIsComputed = propName.kind === 136 /* ComputedPropertyName */; if (nameIsComputed) { - index = ensureIdentifier(propName.expression, /* reuseIdentifierExpression */ false); + index = ensureIdentifier(propName.expression, /*reuseIdentifierExpressions*/ false); } else { // We create a synthetic copy of the identifier in order to avoid the rewriting that might @@ -33744,7 +34375,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(168 /* CallExpression */); + var call = ts.createSynthesizedNode(170 /* CallExpression */); var sliceIdentifier = ts.createSynthesizedNode(69 /* Identifier */); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -33761,9 +34392,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 245 /* PropertyAssignment */ || p.kind === 246 /* ShorthandPropertyAssignment */) { + if (p.kind === 247 /* PropertyAssignment */ || p.kind === 248 /* ShorthandPropertyAssignment */) { var propName = p.name; - var target_1 = p.kind === 246 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; + var target_1 = p.kind === 248 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName)); } } @@ -33777,8 +34408,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187 /* OmittedExpression */) { - if (e.kind !== 185 /* SpreadElementExpression */) { + if (e.kind !== 189 /* OmittedExpression */) { + if (e.kind !== 187 /* SpreadElementExpression */) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i))); } else if (i === elements.length - 1) { @@ -33788,20 +34419,20 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 246 /* ShorthandPropertyAssignment */) { + if (target.kind === 248 /* ShorthandPropertyAssignment */) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer); } target = target.name; } - else if (target.kind === 181 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + else if (target.kind === 183 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 165 /* ObjectLiteralExpression */) { + if (target.kind === 167 /* ObjectLiteralExpression */) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 164 /* ArrayLiteralExpression */) { + else if (target.kind === 166 /* ArrayLiteralExpression */) { emitArrayLiteralAssignment(target, value); } else { @@ -33819,14 +34450,14 @@ var ts; emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 172 /* ParenthesizedExpression */) { + if (root.parent.kind !== 174 /* ParenthesizedExpression */) { write("("); } value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 172 /* ParenthesizedExpression */) { + if (root.parent.kind !== 174 /* ParenthesizedExpression */) { write(")"); } } @@ -33853,12 +34484,12 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 161 /* ObjectBindingPattern */) { + if (pattern.kind === 163 /* ObjectBindingPattern */) { // Rewrite element to a declaration with an initializer that fetches property var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 187 /* OmittedExpression */) { + else if (element.kind !== 189 /* OmittedExpression */) { if (!element.dotDotDotToken) { // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); @@ -33898,8 +34529,8 @@ var ts; (getCombinedFlagsForIdentifier(node.name) & 8192 /* Let */); // NOTE: default initialization should not be added to let bindings in for-in\for-of statements if (isLetDefinedInLoop && - node.parent.parent.kind !== 200 /* ForInStatement */ && - node.parent.parent.kind !== 201 /* ForOfStatement */) { + node.parent.parent.kind !== 202 /* ForInStatement */ && + node.parent.parent.kind !== 203 /* ForOfStatement */) { initializer = createVoidZero(); } } @@ -33917,7 +34548,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 187 /* OmittedExpression */) { + if (node.kind === 189 /* OmittedExpression */) { return; } var name = node.name; @@ -33929,7 +34560,7 @@ var ts; } } function getCombinedFlagsForIdentifier(node) { - if (!node.parent || (node.parent.kind !== 211 /* VariableDeclaration */ && node.parent.kind !== 163 /* BindingElement */)) { + if (!node.parent || (node.parent.kind !== 213 /* VariableDeclaration */ && node.parent.kind !== 165 /* BindingElement */)) { return 0; } return ts.getCombinedNodeFlags(node.parent); @@ -33937,7 +34568,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 2 /* Export */) && modulekind === 5 /* ES6 */ && - node.parent.kind === 248 /* SourceFile */; + node.parent.kind === 250 /* SourceFile */; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -33988,12 +34619,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2 /* ES6 */) { if (ts.isBindingPattern(node.name)) { - var name_25 = createTempVariable(0 /* Auto */); + var name_23 = createTempVariable(0 /* Auto */); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_25); - emit(name_25); + tempParameters.push(name_23); + emit(name_23); } else { emit(node.name); @@ -34103,7 +34734,7 @@ var ts; emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 174 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; + return node.kind === 176 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; } function emitDeclarationName(node) { if (node.name) { @@ -34114,13 +34745,13 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 173 /* FunctionExpression */) { + if (node.kind === 175 /* FunctionExpression */) { // Emit name if one is present return !!node.name; } - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { // Emit name if one is present, or emit generated name in down-level case (for export default case) - return !!node.name || languageVersion < 2 /* ES6 */; + return !!node.name || modulekind !== 5 /* ES6 */; } } function emitFunctionDeclaration(node) { @@ -34129,20 +34760,29 @@ var ts; } // TODO (yuisu) : we should not have special cases to condition emitting comments // but have one place to fix check for these conditions. - if (node.kind !== 143 /* MethodDeclaration */ && node.kind !== 142 /* MethodSignature */ && - node.parent && node.parent.kind !== 245 /* PropertyAssignment */ && - node.parent.kind !== 168 /* CallExpression */) { - // 1. Methods will emit the comments as part of emitting method declaration + var kind = node.kind, parent = node.parent; + if (kind !== 143 /* MethodDeclaration */ && + kind !== 142 /* MethodSignature */ && + parent && + parent.kind !== 247 /* PropertyAssignment */ && + parent.kind !== 170 /* CallExpression */ && + parent.kind !== 166 /* ArrayLiteralExpression */) { + // 1. Methods will emit comments at their assignment declaration sites. + // // 2. If the function is a property of object literal, emitting leading-comments - // is done by emitNodeWithoutSourceMap which then call this function. - // In particular, we would like to avoid emit comments twice in following case: - // For example: + // is done by emitNodeWithoutSourceMap which then call this function. + // In particular, we would like to avoid emit comments twice in following case: + // // var obj = { // id: // /*comment*/ () => void // } + // // 3. If the function is an argument in call expression, emitting of comments will be - // taken care of in emit list of arguments inside of emitCallexpression + // taken care of in emit list of arguments inside of 'emitCallExpression'. + // + // 4. If the function is in an array literal, 'emitLinePreservingList' will take care + // of leading comments. emitLeadingComments(node); } emitStart(node); @@ -34165,11 +34805,11 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== 5 /* ES6 */ && node.kind === 213 /* FunctionDeclaration */ && node.parent === currentSourceFile && node.name) { + if (modulekind !== 5 /* ES6 */ && kind === 215 /* FunctionDeclaration */ && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (node.kind !== 143 /* MethodDeclaration */ && node.kind !== 142 /* MethodSignature */) { + if (kind !== 143 /* MethodDeclaration */ && kind !== 142 /* MethodSignature */) { emitTrailingComments(node); } } @@ -34202,7 +34842,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 174 /* ArrowFunction */; + var isArrowFunction = node.kind === 176 /* ArrowFunction */; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 4096 /* CaptureArguments */) !== 0; // An async function is emit as an outer function that calls an inner // generator function. To preserve lexical bindings, we pass the current @@ -34285,17 +34925,16 @@ var ts; } write(" __awaiter(this"); if (hasLexicalArguments) { - write(", arguments"); + write(", arguments, "); } else { - write(", void 0"); + write(", void 0, "); } if (promiseConstructor) { - write(", "); - emitNodeWithoutSourceMap(promiseConstructor); + emitEntityNameAsExpression(promiseConstructor, /*useFallback*/ false); } else { - write(", Promise"); + write("Promise"); } // Emit the call to __awaiter. if (hasLexicalArguments) { @@ -34322,7 +34961,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 192 /* Block */) { + if (node.body.kind === 194 /* Block */) { emitBlockFunctionBody(node, node.body); } else { @@ -34348,7 +34987,7 @@ var ts; emitSignatureParameters(node); } var isAsync = ts.isAsyncFunctionLike(node); - if (isAsync && languageVersion === 2 /* ES6 */) { + if (isAsync) { emitAsyncFunctionBodyForES6(node); } else { @@ -34381,14 +35020,13 @@ var ts; write(" "); // Unwrap all type assertions. var current = body; - while (current.kind === 171 /* TypeAssertionExpression */) { + while (current.kind === 173 /* TypeAssertionExpression */) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 165 /* ObjectLiteralExpression */); + emitParenthesizedIf(body, current.kind === 167 /* ObjectLiteralExpression */); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); increaseIndent(); var outPos = writer.getTextPos(); emitDetachedCommentsAndUpdateCommentsInfo(node.body); @@ -34411,8 +35049,10 @@ var ts; increaseIndent(); writeLine(); emitLeadingComments(node.body); + emitStart(body); write("return "); emit(body); + emitEnd(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(/*newLine*/ true); @@ -34422,11 +35062,9 @@ var ts; emitStart(node.body); write("}"); emitEnd(node.body); - scopeEmitEnd(); } function emitBlockFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedCommentsAndUpdateCommentsInfo(body.statements); @@ -34455,14 +35093,13 @@ var ts; decreaseIndent(); } emitToken(16 /* CloseBraceToken */, body.statements.end); - scopeEmitEnd(); } function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 195 /* ExpressionStatement */) { + if (statement && statement.kind === 197 /* ExpressionStatement */) { var expr = statement.expression; - if (expr && expr.kind === 168 /* CallExpression */) { + if (expr && expr.kind === 170 /* CallExpression */) { var func = expr.expression; if (func && func.kind === 95 /* SuperKeyword */) { return statement; @@ -34548,7 +35185,7 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 191 /* SemicolonClassElement */) { + if (member.kind === 193 /* SemicolonClassElement */) { writeLine(); write(";"); } @@ -34645,7 +35282,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 191 /* SemicolonClassElement */) { + else if (member.kind === 193 /* SemicolonClassElement */) { writeLine(); write(";"); } @@ -34719,7 +35356,6 @@ var ts; } var startIndex = 0; write(" {"); - scopeEmitStart(node, "constructor"); increaseIndent(); if (ctor) { // Emit all the directive prologues (like "use strict"). These have to come before @@ -34754,7 +35390,7 @@ var ts; emitEnd(baseTypeElement); } } - emitPropertyDeclarations(node, getInitializedProperties(node, /*static:*/ false)); + emitPropertyDeclarations(node, getInitializedProperties(node, /*isStatic*/ false)); if (ctor) { var statements = ctor.body.statements; if (superCall) { @@ -34769,7 +35405,6 @@ var ts; } decreaseIndent(); emitToken(16 /* CloseBraceToken */, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); emitEnd(ctor || node); if (ctor) { emitTrailingComments(ctor); @@ -34794,7 +35429,7 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { if (thisNodeIsDecorated) { // To preserve the correct runtime semantics when decorators are applied to the class, // the emit needs to follow one of the following rules: @@ -34870,8 +35505,8 @@ var ts; // // This keeps the expression as an expression, while ensuring that the static parts // of it have been initialized by the time it is used. - var staticProperties = getInitializedProperties(node, /*static:*/ true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 186 /* ClassExpression */; + var staticProperties = getInitializedProperties(node, /*isStatic*/ true); + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 188 /* ClassExpression */; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0 /* Auto */); @@ -34884,7 +35519,7 @@ var ts; // emit name if // - node has a name // - this is default export with static initializers - if ((node.name || (node.flags & 512 /* Default */ && staticProperties.length > 0)) && !thisNodeIsDecorated) { + if ((node.name || (node.flags & 512 /* Default */ && (staticProperties.length > 0 || modulekind !== 5 /* ES6 */))) && !thisNodeIsDecorated) { write(" "); emitDeclarationName(node); } @@ -34895,14 +35530,12 @@ var ts; } write(" {"); increaseIndent(); - scopeEmitStart(node); writeLine(); emitConstructor(node, baseTypeNode); emitMemberFunctionsForES6AndHigher(node); decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - scopeEmitEnd(); // TODO(rbuckton): Need to go back to `let _a = class C {}` approach, removing the defineProperty call for now. // For a decorated class, we need to assign its name (if it has one). This is because we emit // the class as a class expression to avoid the double-binding of the identifier: @@ -34924,7 +35557,7 @@ var ts; var property = staticProperties_1[_a]; write(","); writeLine(); - emitPropertyDeclaration(node, property, /*receiver:*/ tempVariable, /*isExpression:*/ true); + emitPropertyDeclaration(node, property, /*receiver*/ tempVariable, /*isExpression*/ true); } write(","); writeLine(); @@ -34937,27 +35570,37 @@ var ts; emitPropertyDeclarations(node, staticProperties); emitDecoratorsOfClass(node); } - // If this is an exported class, but not on the top level (i.e. on an internal - // module), export it - if (!isES6ExportedDeclaration(node) && (node.flags & 2 /* Export */)) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emitDeclarationName(node); - emitEnd(node); - write(";"); + if (!(node.flags & 2 /* Export */)) { + return; } - else if (isES6ExportedDeclaration(node) && (node.flags & 512 /* Default */) && thisNodeIsDecorated) { - // if this is a top level default export of decorated class, write the export after the declaration. - writeLine(); - write("export default "); - emitDeclarationName(node); - write(";"); + if (modulekind !== 5 /* ES6 */) { + emitExportMemberAssignment(node); + } + else { + // If this is an exported class, but not on the top level (i.e. on an internal + // module), export it + if (node.flags & 512 /* 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 !== 250 /* SourceFile */) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { // source file level classes in system modules are hoisted so 'var's for them are already defined if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); @@ -34982,7 +35625,6 @@ var ts; tempParameters = undefined; computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); - scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); @@ -34994,7 +35636,7 @@ var ts; writeLine(); emitConstructor(node, baseTypeNode); emitMemberFunctionsForES5AndLower(node); - emitPropertyDeclarations(node, getInitializedProperties(node, /*static:*/ true)); + emitPropertyDeclarations(node, getInitializedProperties(node, /*isStatic*/ true)); writeLine(); emitDecoratorsOfClass(node); writeLine(); @@ -35013,18 +35655,17 @@ var ts; decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - scopeEmitEnd(); emitStart(node); - write(")("); + write("("); if (baseTypeNode) { emit(baseTypeNode.expression); } - write(")"); - if (node.kind === 214 /* ClassDeclaration */) { + write("))"); + if (node.kind === 216 /* ClassDeclaration */) { write(";"); } emitEnd(node); - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { emitExportMemberAssignment(node); } } @@ -35042,9 +35683,9 @@ var ts; function emitDecoratorsOfConstructor(node) { var decorators = node.decorators; var constructor = ts.getFirstConstructorWithBody(node); - var hasDecoratedParameters = constructor && ts.forEach(constructor.parameters, ts.nodeIsDecorated); + var firstParameterDecorator = constructor && ts.forEach(constructor.parameters, function (parameter) { return parameter.decorators; }); // skip decoration of the constructor if neither it nor its parameters are decorated - if (!decorators && !hasDecoratedParameters) { + if (!decorators && !firstParameterDecorator) { return; } // Emit the call to __decorate. Given the class: @@ -35058,25 +35699,24 @@ var ts; // C = __decorate([dec], C); // writeLine(); - emitStart(node); + emitStart(node.decorators || firstParameterDecorator); emitDeclarationName(node); write(" = __decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(constructor, /*leadingComma*/ argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(constructor, /*leadingComma*/ argumentsWritten > 0); + } emitSerializedTypeMetadata(node, /*leadingComma*/ argumentsWritten >= 0); decreaseIndent(); writeLine(); write("], "); emitDeclarationName(node); - write(");"); - emitEnd(node); + write(")"); + emitEnd(node.decorators || firstParameterDecorator); + write(";"); writeLine(); } function emitDecoratorsOfMembers(node, staticFlag) { @@ -35090,10 +35730,6 @@ var ts; if (!ts.nodeCanBeDecorated(member)) { continue; } - // skip a member if it or any of its parameters are not decorated - if (!ts.nodeOrChildIsDecorated(member)) { - continue; - } // skip an accessor declaration if it is not the first accessor var decorators = void 0; var functionLikeMember = void 0; @@ -35117,6 +35753,11 @@ var ts; functionLikeMember = member; } } + var firstParameterDecorator = functionLikeMember && ts.forEach(functionLikeMember.parameters, function (parameter) { return parameter.decorators; }); + // skip a member if it or any of its parameters are not decorated + if (!decorators && !firstParameterDecorator) { + continue; + } // Emit the call to __decorate. Given the following: // // class C { @@ -35148,26 +35789,22 @@ var ts; // ], C.prototype, "prop"); // writeLine(); - emitStart(member); + emitStart(decorators || firstParameterDecorator); write("__decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + } emitSerializedTypeMetadata(member, argumentsWritten > 0); decreaseIndent(); writeLine(); write("], "); - emitStart(member.name); emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); - emitEnd(member.name); if (languageVersion > 0 /* ES3 */) { if (member.kind !== 141 /* PropertyDeclaration */) { // We emit `null` here to indicate to `__decorate` that it can invoke `Object.getOwnPropertyDescriptor` directly. @@ -35180,8 +35817,9 @@ var ts; write(", void 0"); } } - write(");"); - emitEnd(member); + write(")"); + emitEnd(decorators || firstParameterDecorator); + write(";"); writeLine(); } } @@ -35194,15 +35832,13 @@ var ts; if (ts.nodeIsDecorated(parameter)) { var decorators = parameter.decorators; argumentsWritten += emitList(decorators, 0, decorators.length, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ leadingComma, /*noTrailingNewLine*/ true, function (decorator) { - emitStart(decorator); write("__param(" + parameterIndex + ", "); emit(decorator.expression); write(")"); - emitEnd(decorator); }); leadingComma = true; } - ++parameterIndex; + parameterIndex++; } } return argumentsWritten; @@ -35235,7 +35871,7 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: case 143 /* MethodDeclaration */: case 146 /* SetAccessor */: return true; @@ -35255,7 +35891,7 @@ var ts; // // For rules on serializing type annotations, see `serializeTypeNode`. switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: write("Function"); return; case 141 /* PropertyDeclaration */: @@ -35299,7 +35935,7 @@ var ts; write("Boolean"); return; case 130 /* StringKeyword */: - case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: write("String"); return; case 128 /* NumberKeyword */: @@ -35316,6 +35952,7 @@ var ts; case 158 /* UnionType */: case 159 /* IntersectionType */: case 117 /* AnyKeyword */: + case 161 /* ThisType */: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -35331,8 +35968,7 @@ var ts; location = location.parent; } // Clone the type name and parent it to a location outside of the current declaration. - var typeName = ts.cloneEntityName(node.typeName); - typeName.parent = location; + var typeName = ts.cloneEntityName(node.typeName, location); var result = resolver.getTypeReferenceSerializationKind(typeName); switch (result) { case ts.TypeReferenceSerializationKind.Unknown: @@ -35389,7 +36025,7 @@ var ts; // For the rules on serializing the type of each parameter declaration, see `serializeTypeOfDeclaration`. if (node) { var valueDeclaration; - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -35484,9 +36120,10 @@ var ts; } if (!shouldHoistDeclarationInSystemJsModule(node)) { // do not emit var if variable was already hoisted - if (!(node.flags & 2 /* Export */) || isES6ExportedDeclaration(node)) { + var isES6ExportedEnum = isES6ExportedDeclaration(node); + if (!(node.flags & 2 /* Export */) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 219 /* EnumDeclaration */))) { emitStart(node); - if (isES6ExportedDeclaration(node)) { + if (isES6ExportedEnum) { write("export "); } write("var "); @@ -35503,12 +36140,10 @@ var ts; emitEnd(node.name); write(") {"); increaseIndent(); - scopeEmitStart(node); emitLines(node.members); decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - scopeEmitEnd(); write(")("); emitModuleMemberName(node); write(" || ("); @@ -35568,7 +36203,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 218 /* ModuleDeclaration */) { + if (moduleDeclaration.body.kind === 220 /* ModuleDeclaration */) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -35579,6 +36214,9 @@ var ts; function isModuleMergedWithES6Class(node) { return languageVersion === 2 /* ES6 */ && !!(resolver.getNodeCheckFlags(node) & 32768 /* LexicalModuleMergesWithClass */); } + function isFirstDeclarationOfKind(node, declarations, kind) { + return !ts.forEach(declarations, function (declaration) { return declaration.kind === kind && declaration.pos < node.pos; }); + } function emitModuleDeclaration(node) { // Emit only if this module is non-ambient. var shouldEmit = shouldEmitModuleDeclaration(node); @@ -35588,15 +36226,18 @@ var ts; var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { - emitStart(node); - if (isES6ExportedDeclaration(node)) { - write("export "); + var isES6ExportedNamespace = isES6ExportedDeclaration(node); + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 220 /* ModuleDeclaration */)) { + 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); write("(function ("); @@ -35604,7 +36245,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 219 /* ModuleBlock */) { + if (node.body.kind === 221 /* ModuleBlock */) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -35620,7 +36261,6 @@ var ts; else { write("{"); increaseIndent(); - scopeEmitStart(node); emitCaptureThisForNodeIfNecessary(node); writeLine(); emit(node.body); @@ -35628,7 +36268,6 @@ var ts; writeLine(); var moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; emitToken(16 /* CloseBraceToken */, moduleBlock.statements.end); - scopeEmitEnd(); } write(")("); // write moduleDecl = containingModule.m only if it is not exported es6 module member @@ -35682,16 +36321,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 221 /* ImportEqualsDeclaration */) { + if (node.kind === 223 /* ImportEqualsDeclaration */) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 226 /* NamespaceImport */) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 222 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; + return node.kind === 224 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -35719,7 +36358,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 226 /* NamespaceImport */) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -35745,7 +36384,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 221 /* ImportEqualsDeclaration */ && (node.flags & 2 /* Export */) !== 0; + var isExportedImport = node.kind === 223 /* ImportEqualsDeclaration */ && (node.flags & 2 /* Export */) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); if (modulekind !== 2 /* AMD */) { emitLeadingComments(node); @@ -35764,7 +36403,7 @@ var ts; // import { x, y } from "foo" // import d, * as x from "foo" // import d, { x, y } from "foo" - var isNakedImport = 222 /* ImportDeclaration */ && !node.importClause; + var isNakedImport = 224 /* ImportDeclaration */ && !node.importClause; if (!isNakedImport) { write("var "); write(getGeneratedNameForNode(node)); @@ -35882,15 +36521,17 @@ var ts; } else { // export * from "foo" - writeLine(); - write("__export("); - if (modulekind !== 2 /* AMD */) { - emitRequire(ts.getExternalModuleName(node)); + if (hasExportStarsToExportValues && resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + writeLine(); + write("__export("); + if (modulekind !== 2 /* AMD */) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); } - else { - write(generatedName); - } - write(");"); } emitEnd(node); } @@ -35941,8 +36582,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 213 /* FunctionDeclaration */ && - expression.kind !== 214 /* ClassDeclaration */) { + if (expression.kind !== 215 /* FunctionDeclaration */ && + expression.kind !== 216 /* ClassDeclaration */) { write(";"); } emitEnd(node); @@ -35975,11 +36616,11 @@ var ts; externalImports = []; exportSpecifiers = {}; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, /*checkChildren*/ true)) { // import "mod" @@ -35989,18 +36630,20 @@ var ts; externalImports.push(node); } break; - case 221 /* ImportEqualsDeclaration */: - if (node.moduleReference.kind === 232 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { + case 223 /* ImportEqualsDeclaration */: + if (node.moduleReference.kind === 234 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { // import x = require("mod") where x is referenced externalImports.push(node); } break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: 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 @@ -36011,12 +36654,12 @@ var ts; // export { x, y } for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_26 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_26] || (exportSpecifiers[name_26] = [])).push(specifier); + var name_24 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_24] || (exportSpecifiers[name_24] = [])).push(specifier); } } break; - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: if (node.isExportEquals && !exportEquals) { // export = x exportEquals = node; @@ -36026,7 +36669,7 @@ var ts; } } function emitExportStarHelper() { - if (hasExportStars) { + if (hasExportStarsToExportValues) { writeLine(); write("function __export(m) {"); increaseIndent(); @@ -36042,14 +36685,20 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 222 /* ImportDeclaration */ && node.importClause) { + if (node.kind === 224 /* ImportDeclaration */ && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 228 /* ExportDeclaration */ && node.moduleSpecifier) { + if (node.kind === 230 /* ExportDeclaration */ && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } - function getExternalModuleNameText(importNode) { + function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { + if (emitRelativePathAsModuleName) { + var name_25 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_25) { + return "\"" + name_25 + "\""; + } + } var moduleName = ts.getExternalModuleName(importNode); if (moduleName.kind === 9 /* StringLiteral */) { return tryRenameExternalModule(moduleName) || getLiteralText(moduleName); @@ -36065,8 +36714,8 @@ var ts; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; // do not create variable declaration for exports and imports that lack import clause - var skipNode = importNode.kind === 228 /* ExportDeclaration */ || - (importNode.kind === 222 /* ImportDeclaration */ && !importNode.importClause); + var skipNode = importNode.kind === 230 /* ExportDeclaration */ || + (importNode.kind === 224 /* ImportDeclaration */ && !importNode.importClause); if (skipNode) { continue; } @@ -36088,7 +36737,7 @@ var ts; // 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; } @@ -36099,7 +36748,7 @@ var ts; var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 228 /* ExportDeclaration */ && externalImport.exportClause) { + if (externalImport.kind === 230 /* ExportDeclaration */ && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -36115,7 +36764,7 @@ var ts; increaseIndent(); var started = false; if (exportedDeclarations) { - for (var i = 0; i < exportedDeclarations.length; ++i) { + for (var i = 0; i < exportedDeclarations.length; i++) { // write name of exported declaration, i.e 'export var x...' writeExportedName(exportedDeclarations[i]); } @@ -36131,7 +36780,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 228 /* ExportDeclaration */) { + if (externalImport.kind !== 230 /* ExportDeclaration */) { continue; } var exportDecl = externalImport; @@ -36217,14 +36866,14 @@ var ts; writeLine(); write("var "); var seen = {}; - for (var i = 0; i < hoistedVars.length; ++i) { + for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_27 = local.kind === 69 /* Identifier */ + var name_26 = local.kind === 69 /* Identifier */ ? local : local.name; - if (name_27) { + if (name_26) { // do not emit duplicate entries (in case of declaration merging) in the list of hoisted variables - var text = ts.unescapeIdentifier(name_27.text); + var text = ts.unescapeIdentifier(name_26.text); if (ts.hasProperty(seen, text)) { continue; } @@ -36235,7 +36884,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 214 /* ClassDeclaration */ || local.kind === 218 /* ModuleDeclaration */ || local.kind === 217 /* EnumDeclaration */) { + if (local.kind === 216 /* ClassDeclaration */ || local.kind === 220 /* ModuleDeclaration */ || local.kind === 219 /* EnumDeclaration */) { emitDeclarationName(local); } else { @@ -36269,21 +36918,21 @@ var ts; if (node.flags & 4 /* Ambient */) { return; } - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 217 /* EnumDeclaration */) { + if (node.kind === 219 /* EnumDeclaration */) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -36292,7 +36941,7 @@ var ts; } return; } - if (node.kind === 218 /* ModuleDeclaration */) { + if (node.kind === 220 /* ModuleDeclaration */) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -36301,17 +36950,17 @@ var ts; } return; } - if (node.kind === 211 /* VariableDeclaration */ || node.kind === 163 /* BindingElement */) { + if (node.kind === 213 /* VariableDeclaration */ || node.kind === 165 /* BindingElement */) { if (shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/ false)) { - var name_28 = node.name; - if (name_28.kind === 69 /* Identifier */) { + var name_27 = node.name; + if (name_27.kind === 69 /* Identifier */) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_28); + hoistedVars.push(name_27); } else { - ts.forEachChild(name_28, visit); + ts.forEachChild(name_27, visit); } } return; @@ -36342,7 +36991,7 @@ var ts; // if block scoped variables are nested in some another block then // no other functions can use them except ones that are defined at least in the same block return (ts.getCombinedNodeFlags(node) & 24576 /* BlockScoped */) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 248 /* SourceFile */; + ts.getEnclosingBlockScopeContainer(node).kind === 250 /* SourceFile */; } function isCurrentFileSystemExternalModule() { return modulekind === 4 /* System */ && isCurrentFileExternalModule; @@ -36402,7 +37051,7 @@ var ts; } function emitSetters(exportStarFunction, dependencyGroups) { write("setters:["); - for (var i = 0; i < dependencyGroups.length; ++i) { + for (var i = 0; i < dependencyGroups.length; i++) { if (i !== 0) { write(","); } @@ -36417,21 +37066,21 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: if (!entry.importClause) { // 'import "..."' case // module is imported only for side-effects, no emit required break; } // fall-through - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: ts.Debug.assert(importVariableName !== ""); writeLine(); // save import into the local write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { // export {a, b as c} from 'foo' @@ -36444,7 +37093,7 @@ var ts; write(exportFunctionForFile + "({"); writeLine(); increaseIndent(); - for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; ++i_2) { + for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; i_2++) { if (i_2 !== 0) { write(","); writeLine(); @@ -36461,6 +37110,8 @@ var ts; 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: @@ -36481,17 +37132,17 @@ var ts; write("execute: function() {"); increaseIndent(); writeLine(); - for (var i = startIndex; i < node.statements.length; ++i) { + for (var i = startIndex; i < node.statements.length; i++) { var statement = node.statements[i]; switch (statement.kind) { // - function declarations are not emitted because they were already hoisted // - import declarations are not emitted since they are already handled in setters // - export declarations with module specifiers are not emitted since they were already written in setters // - export declarations without module specifiers are emitted preserving the order - case 213 /* FunctionDeclaration */: - case 222 /* ImportDeclaration */: + case 215 /* FunctionDeclaration */: + case 224 /* ImportDeclaration */: continue; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -36500,7 +37151,7 @@ var ts; } } continue; - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { // - import equals declarations that import external modules are not emitted continue; @@ -36540,8 +37191,8 @@ var ts; write("["); var groupIndices = {}; var dependencyGroups = []; - for (var i = 0; i < externalImports.length; ++i) { - var text = getExternalModuleNameText(externalImports[i]); + for (var i = 0; i < externalImports.length; i++) { + var text = getExternalModuleNameText(externalImports[i], emitRelativePathAsModuleName); if (ts.hasProperty(groupIndices, text)) { // deduplicate/group entries in dependency list by the dependency name var groupIndex = groupIndices[text]; @@ -36555,18 +37206,12 @@ var ts; if (i !== 0) { write(", "); } - if (emitRelativePathAsModuleName) { - var name_29 = getExternalModuleNameFromDeclaration(host, resolver, externalImports[i]); - if (name_29) { - text = "\"" + name_29 + "\""; - } - } write(text); } write("], function(" + exportFunctionForFile + ") {"); writeLine(); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitSystemModuleBody(node, dependencyGroups, startIndex); @@ -36596,13 +37241,7 @@ var ts; for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { var importNode = externalImports_4[_c]; // Find the name of the external module - var externalModuleName = getExternalModuleNameText(importNode); - if (emitRelativePathAsModuleName) { - var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_30) { - externalModuleName = "\"" + name_30 + "\""; - } - } + var externalModuleName = getExternalModuleNameText(importNode, emitRelativePathAsModuleName); // Find the name of the module alias, if there is one var importAliasName = getLocalNameForExternalImport(importNode); if (includeNonAmdDependencies && importAliasName) { @@ -36662,7 +37301,7 @@ var ts; writeModuleName(node, emitRelativePathAsModuleName); emitAMDDependencies(node, /*includeNonAmdDependencies*/ true, emitRelativePathAsModuleName); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -36673,7 +37312,7 @@ var ts; write("});"); } function emitCommonJSModule(node) { - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false, /*ensureUseStrict*/ true); emitEmitHelpers(node); collectExternalModuleInfo(node); emitExportStarHelper(); @@ -36693,7 +37332,7 @@ var ts; writeLines(" }\n})("); emitAMDFactoryHeader(dependencyNames); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -36707,7 +37346,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); @@ -36770,7 +37409,9 @@ var ts; // Replace entities like   result = result.replace(/&(\w+);/g, function (s, m) { if (entities[m] !== undefined) { - return String.fromCharCode(entities[m]); + var ch = String.fromCharCode(entities[m]); + // " needs to be escaped + return ch === "\"" ? "\\\"" : ch; } else { return s; @@ -36822,24 +37463,41 @@ var ts; } } } - function emitDirectivePrologues(statements, startWithNewLine) { - for (var i = 0; i < statements.length; ++i) { + function isUseStrictPrologue(node) { + return !!node.expression.text.match(/use strict/); + } + function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { + if (writeUseStrict) { + if (startWithNewLine) { + writeLine(); + } + write("\"use strict\";"); + } + } + function emitDirectivePrologues(statements, startWithNewLine, ensureUseStrict) { + var foundUseStrict = false; + for (var i = 0; i < statements.length; i++) { if (ts.isPrologueDirective(statements[i])) { + if (isUseStrictPrologue(statements[i])) { + foundUseStrict = true; + } if (startWithNewLine || i > 0) { writeLine(); } emit(statements[i]); } else { + ensureUseStrictPrologue(startWithNewLine || i > 0, !foundUseStrict && ensureUseStrict); // return index of the first non prologue directive return i; } } + ensureUseStrictPrologue(startWithNewLine, !foundUseStrict && ensureUseStrict); return statements.length; } function writeLines(text) { var lines = text.split(/\r\n|\r|\n/g); - for (var i = 0; i < lines.length; ++i) { + for (var i = 0; i < lines.length; i++) { var line = lines[i]; if (line.length) { writeLine(); @@ -36879,7 +37537,7 @@ var ts; emitShebang(); emitDetachedCommentsAndUpdateCommentsInfo(node); if (ts.isExternalModule(node) || compilerOptions.isolatedModules) { - if (root || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { + if (isOwnFileEmit || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { var emitModule = moduleEmitDelegates[modulekind] || moduleEmitDelegates[1 /* CommonJS */]; emitModule(node); } @@ -36893,7 +37551,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -36901,6 +37559,9 @@ var ts; } emitLeadingComments(node.endOfFileToken); } + function emit(node) { + emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); + } function emitNodeWithCommentsAndWithoutSourcemap(node) { emitNodeConsideringCommentsOption(node, emitNodeWithoutSourceMap); } @@ -36923,6 +37584,13 @@ var ts; } } } + function emitNodeWithSourceMap(node) { + if (node) { + emitStart(node); + emitNodeWithoutSourceMap(node); + emitEnd(node); + } + } function emitNodeWithoutSourceMap(node) { if (node) { emitJavaScriptWorker(node); @@ -36932,24 +37600,24 @@ var ts; switch (node.kind) { // All of these entities are emitted in a specialized fashion. As such, we allow // the specialized methods for each to handle the comments on the nodes. - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 227 /* ExportAssignment */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 229 /* ExportAssignment */: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // Only emit the leading/trailing comments for a module if we're actually // emitting the module as well. return shouldEmitModuleDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: // Only emit the leading/trailing comments for an enum if we're actually // emitting the module as well. return shouldEmitEnumDeclaration(node); @@ -36961,9 +37629,9 @@ var ts; // then we don't want to emit comments when we emit the body. It will have already // been taken care of when we emitted the 'return' statement for the function // expression body. - if (node.kind !== 192 /* Block */ && + if (node.kind !== 194 /* Block */ && node.parent && - node.parent.kind === 174 /* ArrowFunction */ && + node.parent.kind === 176 /* ArrowFunction */ && node.parent.body === node && compilerOptions.target <= 1 /* ES5 */) { return false; @@ -37002,142 +37670,142 @@ var ts; case 13 /* TemplateMiddle */: case 14 /* TemplateTail */: return emitLiteral(node); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: return emitTemplateExpression(node); - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return emitTemplateSpan(node); - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: return emitJsxElement(node); - case 236 /* JsxText */: + case 238 /* JsxText */: return emitJsxText(node); - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: return emitJsxExpression(node); case 135 /* QualifiedName */: return emitQualifiedName(node); - case 161 /* ObjectBindingPattern */: + case 163 /* ObjectBindingPattern */: return emitObjectBindingPattern(node); - case 162 /* ArrayBindingPattern */: + case 164 /* ArrayBindingPattern */: return emitArrayBindingPattern(node); - case 163 /* BindingElement */: + case 165 /* BindingElement */: return emitBindingElement(node); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return emitArrayLiteral(node); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return emitObjectLiteral(node); - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: return emitPropertyAssignment(node); - case 246 /* ShorthandPropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: return emitShorthandPropertyAssignment(node); case 136 /* ComputedPropertyName */: return emitComputedPropertyName(node); - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return emitPropertyAccess(node); - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return emitIndexedAccess(node); - case 168 /* CallExpression */: + case 170 /* CallExpression */: return emitCallExpression(node); - case 169 /* NewExpression */: + case 171 /* NewExpression */: return emitNewExpression(node); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return emitTaggedTemplateExpression(node); - case 171 /* TypeAssertionExpression */: + case 173 /* TypeAssertionExpression */: return emit(node.expression); - case 189 /* AsExpression */: + case 191 /* AsExpression */: return emit(node.expression); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return emitParenExpression(node); - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return emitFunctionDeclaration(node); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return emitDeleteExpression(node); - case 176 /* TypeOfExpression */: + case 178 /* TypeOfExpression */: return emitTypeOfExpression(node); - case 177 /* VoidExpression */: + case 179 /* VoidExpression */: return emitVoidExpression(node); - case 178 /* AwaitExpression */: + case 180 /* AwaitExpression */: return emitAwaitExpression(node); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return emitPrefixUnaryExpression(node); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return emitPostfixUnaryExpression(node); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return emitBinaryExpression(node); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return emitConditionalExpression(node); - case 185 /* SpreadElementExpression */: + case 187 /* SpreadElementExpression */: return emitSpreadElementExpression(node); - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return emitYieldExpression(node); - case 187 /* OmittedExpression */: + case 189 /* OmittedExpression */: return; - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return emitBlock(node); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return emitVariableStatement(node); - case 194 /* EmptyStatement */: + case 196 /* EmptyStatement */: return write(";"); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return emitExpressionStatement(node); - case 196 /* IfStatement */: + case 198 /* IfStatement */: return emitIfStatement(node); - case 197 /* DoStatement */: + case 199 /* DoStatement */: return emitDoStatement(node); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: return emitWhileStatement(node); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return emitForStatement(node); - case 201 /* ForOfStatement */: - case 200 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 202 /* ForInStatement */: return emitForInOrForOfStatement(node); - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 205 /* BreakStatement */: return emitBreakOrContinueStatement(node); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return emitReturnStatement(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return emitWithStatement(node); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return emitSwitchStatement(node); - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: return emitCaseOrDefaultClause(node); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return emitLabeledStatement(node); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: return emitThrowStatement(node); - case 209 /* TryStatement */: + case 211 /* TryStatement */: return emitTryStatement(node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return emitCatchClause(node); - case 210 /* DebuggerStatement */: + case 212 /* DebuggerStatement */: return emitDebuggerStatement(node); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return emitVariableDeclaration(node); - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return emitClassExpression(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return emitClassDeclaration(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return emitInterfaceDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return emitEnumDeclaration(node); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return emitEnumMember(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return emitModuleDeclaration(node); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return emitImportDeclaration(node); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return emitImportEqualsDeclaration(node); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return emitExportDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return emitExportAssignment(node); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return emitSourceFileNode(node); } } @@ -37176,7 +37844,7 @@ var ts; function getLeadingCommentsToEmit(node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 248 /* SourceFile */ || node.pos !== node.parent.pos) { + if (node.parent.kind === 250 /* SourceFile */ || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { // get comments without detached comments return getLeadingCommentsWithoutDetachedComments(); @@ -37191,7 +37859,7 @@ var ts; function getTrailingCommentsToEmit(node) { // Emit the trailing comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 248 /* SourceFile */ || node.end !== node.parent.end) { + if (node.parent.kind === 250 /* SourceFile */ || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -37200,10 +37868,10 @@ var ts; * Emit comments associated with node that will not be emitted into JS file */ function emitCommentsOnNotEmittedNode(node) { - emitLeadingCommentsWorker(node, /*isEmittedNode:*/ false); + emitLeadingCommentsWorker(node, /*isEmittedNode*/ false); } function emitLeadingComments(node) { - return emitLeadingCommentsWorker(node, /*isEmittedNode:*/ true); + return emitLeadingCommentsWorker(node, /*isEmittedNode*/ true); } function emitLeadingCommentsWorker(node, isEmittedNode) { if (compilerOptions.removeComments) { @@ -37228,7 +37896,7 @@ var ts; } ts.emitNewLineBeforeLeadingComments(currentLineMap, writer, node, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space - ts.emitComments(currentText, currentLineMap, writer, leadingComments, /*trailingSeparator:*/ true, newLine, writeComment); + ts.emitComments(currentText, currentLineMap, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); } function emitTrailingComments(node) { if (compilerOptions.removeComments) { @@ -37280,18 +37948,31 @@ var ts; } } } + function writeComment(text, lineMap, writer, comment, newLine) { + emitPos(comment.pos); + ts.writeCommentRange(text, lineMap, writer, comment, newLine); + emitPos(comment.end); + } function emitShebang() { var shebang = ts.getShebang(currentText); if (shebang) { write(shebang); + writeLine(); } } var _a, _b; } - function emitFile(jsFilePath, sourceFile) { - emitJavaScript(jsFilePath, sourceFile); - if (compilerOptions.declaration) { - ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); + function emitFile(_a, sourceFiles, isBundledEmit) { + var jsFilePath = _a.jsFilePath, sourceMapFilePath = _a.sourceMapFilePath, declarationFilePath = _a.declarationFilePath; + // Make sure not to write js File and source map file if any of them cannot be written + if (!host.isEmitBlocked(jsFilePath) && !compilerOptions.noEmit) { + emitJavaScript(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + } + else { + emitSkipped = true; + } + if (declarationFilePath) { + emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } } } @@ -37309,10 +37990,10 @@ var ts; /** The version of the TypeScript compiler release */ var emptyArray = []; ts.version = "1.8.0"; - function findConfigFile(searchPath) { + function findConfigFile(searchPath, fileExists) { var fileName = "tsconfig.json"; while (true) { - if (ts.sys.fileExists(fileName)) { + if (fileExists(fileName)) { return fileName; } var parentPath = ts.getDirectoryPath(searchPath); @@ -37336,21 +38017,22 @@ var ts; ? compilerOptions.moduleResolution : compilerOptions.module === 1 /* CommonJS */ ? 2 /* NodeJs */ : 1 /* Classic */; switch (moduleResolution) { - case 2 /* NodeJs */: return nodeModuleNameResolver(moduleName, containingFile, host); + case 2 /* NodeJs */: return nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host); case 1 /* Classic */: return classicNameResolver(moduleName, containingFile, compilerOptions, host); } } ts.resolveModuleName = resolveModuleName; - function nodeModuleNameResolver(moduleName, containingFile, host) { + function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host) { var containingDirectory = ts.getDirectoryPath(containingFile); + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); if (ts.getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { var failedLookupLocations = []; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); - var resolvedFileName = loadNodeModuleFromFile(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + var resolvedFileName = loadNodeModuleFromFile(supportedExtensions, candidate, failedLookupLocations, /*onlyRecordFailures*/ false, host); if (resolvedFileName) { return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } - resolvedFileName = loadNodeModuleFromDirectory(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + resolvedFileName = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, /*onlyRecordFailures*/ false, host); return resolvedFileName ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; @@ -37360,11 +38042,21 @@ var ts; } } ts.nodeModuleNameResolver = nodeModuleNameResolver; - function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, host) { + /* @internal */ + function directoryProbablyExists(directoryName, host) { + // if host does not support 'directoryExists' assume that directory will exist + return !host.directoryExists || host.directoryExists(directoryName); + } + ts.directoryProbablyExists = directoryProbablyExists; + /** + * @param {boolean} onlyRecordFailures - if true then function won't try to actually load files but instead record all attempts as failures. This flag is necessary + * in cases when we know upfront that all load attempts will fail (because containing folder does not exists) however we still need to record all failed lookup locations. + */ + function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { return ts.forEach(extensions, tryLoad); function tryLoad(ext) { var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; - if (host.fileExists(fileName)) { + if (!onlyRecordFailures && host.fileExists(fileName)) { return fileName; } else { @@ -37373,9 +38065,10 @@ var ts; } } } - function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, host) { + function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { var packageJsonPath = ts.combinePaths(candidate, "package.json"); - if (host.fileExists(packageJsonPath)) { + var directoryExists = !onlyRecordFailures && directoryProbablyExists(candidate, host); + if (directoryExists && host.fileExists(packageJsonPath)) { var jsonContent; try { var jsonText = host.readFile(packageJsonPath); @@ -37385,8 +38078,9 @@ var ts; // gracefully handle if readFile fails or returns not JSON jsonContent = { typings: undefined }; } - if (jsonContent.typings) { - var result = loadNodeModuleFromFile(extensions, ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)), failedLookupLocation, host); + if (typeof jsonContent.typings === "string") { + var path = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); + var result = loadNodeModuleFromFile(extensions, path, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(path), host), host); if (result) { return result; } @@ -37396,7 +38090,7 @@ var ts; // record package json as one of failed lookup locations - in the future if this file will appear it will invalidate resolution results failedLookupLocation.push(packageJsonPath); } - return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, host); + return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, !directoryExists, host); } function loadModuleFromNodeModules(moduleName, directory, host) { var failedLookupLocations = []; @@ -37405,12 +38099,14 @@ var ts; var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); + var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, host); var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); - var result = loadNodeModuleFromFile(ts.supportedExtensions, candidate, failedLookupLocations, host); + // Load only typescript files irrespective of allowJs option if loading from node modules + var result = loadNodeModuleFromFile(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } - result = loadNodeModuleFromDirectory(ts.supportedExtensions, candidate, failedLookupLocations, host); + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } @@ -37436,10 +38132,10 @@ var ts; var searchName; var failedLookupLocations = []; var referencedSourceFile; - var extensions = compilerOptions.allowNonTsExtensions ? ts.supportedJsExtensions : ts.supportedExtensions; + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); while (true) { searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - referencedSourceFile = ts.forEach(extensions, function (extension) { + referencedSourceFile = ts.forEach(supportedExtensions, function (extension) { if (extension === ".tsx" && !compilerOptions.jsx) { // resolve .tsx files only if jsx support is enabled // 'logical not' handles both undefined and None cases @@ -37540,14 +38236,15 @@ var ts; getCanonicalFileName: getCanonicalFileName, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return ts.sys.fileExists(fileName); }, - readFile: function (fileName) { return ts.sys.readFile(fileName); } + readFile: function (fileName) { return ts.sys.readFile(fileName); }, + directoryExists: function (directoryName) { return ts.sys.directoryExists(directoryName); } }; } ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program, sourceFile, cancellationToken) { var diagnostics = program.getOptionsDiagnostics(cancellationToken).concat(program.getSyntacticDiagnostics(sourceFile, cancellationToken), program.getGlobalDiagnostics(cancellationToken), program.getSemanticDiagnostics(sourceFile, cancellationToken)); if (program.getCompilerOptions().declaration) { - diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); + diagnostics = diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); } return ts.sortAndDeduplicateDiagnostics(diagnostics); } @@ -37585,8 +38282,11 @@ var ts; var noDiagnosticsTypeChecker; var classifiableNames; var skipDefaultLib = options.noLib; + var supportedExtensions = ts.getSupportedExtensions(options); var start = new Date().getTime(); host = host || createCompilerHost(options); + // Map storing if there is emit blocking diagnostics for given input + var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); var currentDirectory = host.getCurrentDirectory(); var resolveModuleNamesWorker = host.resolveModuleNames ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) @@ -37603,24 +38303,23 @@ var ts; (oldOptions.noResolve !== options.noResolve) || (oldOptions.target !== options.target) || (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx)) { + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs)) { oldProgram = undefined; } } if (!tryReuseStructureFromOldProgram()) { - ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); + ts.forEach(rootNames, function (name) { return processRootFile(name, /*isDefaultLib*/ false); }); // Do not process the default library if: // - The '--noLib' flag is used. // - A 'no-default-lib' reference comment is encountered in // processing the root files. if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), true); + processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); } } - verifyCompilerOptions(); // unconditionally set oldProgram to undefined to prevent it from being captured in closure oldProgram = undefined; - ts.programTime += new Date().getTime() - start; program = { getRootFileNames: function () { return rootNames; }, getSourceFile: getSourceFile, @@ -37634,7 +38333,7 @@ var ts; getTypeChecker: getTypeChecker, getClassifiableNames: getClassifiableNames, getDiagnosticsProducingTypeChecker: getDiagnosticsProducingTypeChecker, - getCommonSourceDirectory: function () { return commonSourceDirectory; }, + getCommonSourceDirectory: getCommonSourceDirectory, emit: emit, getCurrentDirectory: function () { return currentDirectory; }, getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, @@ -37643,7 +38342,27 @@ var ts; getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; + verifyCompilerOptions(); + ts.programTime += new Date().getTime() - start; return program; + function getCommonSourceDirectory() { + if (typeof commonSourceDirectory === "undefined") { + if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { + // If a rootDir is specified and is valid use it as the commonSourceDirectory + commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); + } + else { + commonSourceDirectory = computeCommonSourceDirectory(files); + } + if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { + // Make sure directory path ends with directory separator so this string can directly + // used to replace with "" to get the relative path of the source file and the relative path doesn't + // start with / making it rooted path + commonSourceDirectory += ts.directorySeparator; + } + } + return commonSourceDirectory; + } function getClassifiableNames() { if (!classifiableNames) { // Initialize a checker so that all our files are bound. @@ -37699,7 +38418,7 @@ var ts; var moduleNames = ts.map(newSourceFile.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); // ensure that module resolution results are still correct - for (var i = 0; i < moduleNames.length; ++i) { + for (var i = 0; i < moduleNames.length; i++) { var newResolution = resolutions[i]; var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); var resolutionChanged = oldResolution @@ -37724,7 +38443,7 @@ var ts; newSourceFiles.push(newSourceFile); } // update fileName -> file mapping - for (var i = 0, len = newSourceFiles.length; i < len; ++i) { + for (var i = 0, len = newSourceFiles.length; i < len; i++) { filesByName.set(filePaths[i], newSourceFiles[i]); } files = newSourceFiles; @@ -37745,7 +38464,8 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }) + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + isEmitBlocked: isEmitBlocked }; } function getDiagnosticsProducingTypeChecker() { @@ -37758,12 +38478,18 @@ var ts; var _this = this; return runWithCancellationToken(function () { return emitWorker(_this, sourceFile, writeFileCallback, cancellationToken); }); } + function isEmitBlocked(emitFileName) { + return hasEmitBlockingDiagnostics.contains(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName)); + } function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { // If the noEmitOnError flag is set, then check if we have any errors so far. If so, // immediately bail out. Note that we pass 'undefined' for 'sourceFile' so that we // get any preEmit diagnostics, not just the ones - if (options.noEmitOnError && getPreEmitDiagnostics(program, /*sourceFile:*/ undefined, cancellationToken).length > 0) { - return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; + if (options.noEmitOnError) { + var preEmitDiagnostics = getPreEmitDiagnostics(program, /*sourceFile:*/ undefined, cancellationToken); + if (preEmitDiagnostics.length > 0) { + return { diagnostics: preEmitDiagnostics, sourceMaps: undefined, emitSkipped: true }; + } } // Create the emit resolver outside of the "emitTime" tracking code below. That way // any cost associated with it (like type checking) are appropriate associated with @@ -37833,12 +38559,164 @@ var ts; var typeChecker = getDiagnosticsProducingTypeChecker(); ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; - var 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. + var checkDiagnostics = ts.isSourceFileJavaScript(sourceFile) ? + getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) : + typeChecker.getDiagnostics(sourceFile, cancellationToken); var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } + function getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) { + return runWithCancellationToken(function () { + var diagnostics = []; + walk(sourceFile); + return diagnostics; + function walk(node) { + if (!node) { + return false; + } + switch (node.kind) { + case 223 /* ImportEqualsDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); + return true; + case 229 /* ExportAssignment */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); + return true; + case 216 /* ClassDeclaration */: + var classDeclaration = node; + if (checkModifiers(classDeclaration.modifiers) || + checkTypeParameters(classDeclaration.typeParameters)) { + return true; + } + break; + case 245 /* HeritageClause */: + var heritageClause = node; + if (heritageClause.token === 106 /* ImplementsKeyword */) { + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 217 /* InterfaceDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 220 /* ModuleDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 218 /* TypeAliasDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); + return true; + case 143 /* MethodDeclaration */: + case 142 /* MethodSignature */: + case 144 /* Constructor */: + case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + var functionDeclaration = node; + if (checkModifiers(functionDeclaration.modifiers) || + checkTypeParameters(functionDeclaration.typeParameters) || + checkTypeAnnotation(functionDeclaration.type)) { + return true; + } + break; + case 195 /* VariableStatement */: + var variableStatement = node; + if (checkModifiers(variableStatement.modifiers)) { + return true; + } + break; + case 213 /* VariableDeclaration */: + var variableDeclaration = node; + if (checkTypeAnnotation(variableDeclaration.type)) { + return true; + } + break; + case 170 /* CallExpression */: + case 171 /* NewExpression */: + var expression = node; + if (expression.typeArguments && expression.typeArguments.length > 0) { + var start_2 = expression.typeArguments.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_2, expression.typeArguments.end - start_2, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 138 /* Parameter */: + var parameter = node; + if (parameter.modifiers) { + var start_3 = parameter.modifiers.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_3, parameter.modifiers.end - start_3, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); + return true; + } + if (parameter.questionToken) { + diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, "?")); + return true; + } + if (parameter.type) { + diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 141 /* PropertyDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 219 /* EnumDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 173 /* TypeAssertionExpression */: + var typeAssertionExpression = node; + diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); + return true; + case 139 /* Decorator */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); + return true; + } + return ts.forEachChild(node, walk); + } + function checkTypeParameters(typeParameters) { + if (typeParameters) { + var start_4 = typeParameters.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_4, typeParameters.end - start_4, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkTypeAnnotation(type) { + if (type) { + diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkModifiers(modifiers) { + if (modifiers) { + for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { + var modifier = modifiers_1[_i]; + switch (modifier.kind) { + case 112 /* PublicKeyword */: + case 110 /* PrivateKeyword */: + case 111 /* ProtectedKeyword */: + case 122 /* DeclareKeyword */: + diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); + return true; + // These are all legal modifiers. + case 113 /* StaticKeyword */: + case 82 /* ExportKeyword */: + case 74 /* ConstKeyword */: + case 77 /* DefaultKeyword */: + case 115 /* AbstractKeyword */: + } + } + } + return false; + } + }); + } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { return runWithCancellationToken(function () { if (!ts.isDeclarationFile(sourceFile)) { @@ -37880,16 +38758,16 @@ var ts; var imports; for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var node = _a[_i]; - collect(node, /* allowRelativeModuleNames */ true, /* collectOnlyRequireCalls */ false); + collect(node, /*allowRelativeModuleNames*/ true, /*collectOnlyRequireCalls*/ false); } file.imports = imports || emptyArray; return; function collect(node, allowRelativeModuleNames, collectOnlyRequireCalls) { if (!collectOnlyRequireCalls) { switch (node.kind) { - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 228 /* ExportDeclaration */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 230 /* ExportDeclaration */: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9 /* StringLiteral */) { break; @@ -37901,7 +38779,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (node.name.kind === 9 /* StringLiteral */ && (node.flags & 4 /* Ambient */ || ts.isDeclarationFile(file))) { // TypeScript 1.0 spec (April 2014): 12.1.6 // An AmbientExternalModuleDeclaration declares an external module. @@ -37912,7 +38790,7 @@ var ts; // TypeScript 1.0 spec (April 2014): 12.1.6 // An ExternalImportDeclaration in anAmbientExternalModuleDeclaration may reference other external modules // only through top - level external module names. Relative external module names are not permitted. - collect(node, /* allowRelativeModuleNames */ false, collectOnlyRequireCalls); + collect(node, /*allowRelativeModuleNames*/ false, collectOnlyRequireCalls); }); } break; @@ -37923,7 +38801,7 @@ var ts; (imports || (imports = [])).push(node.arguments[0]); } else { - ts.forEachChild(node, function (node) { return collect(node, allowRelativeModuleNames, /* collectOnlyRequireCalls */ true); }); + ts.forEachChild(node, function (node) { return collect(node, allowRelativeModuleNames, /*collectOnlyRequireCalls*/ true); }); } } } @@ -37932,9 +38810,9 @@ var ts; var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { - if (!options.allowNonTsExtensions && !ts.forEach(ts.supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { + if (!options.allowNonTsExtensions && !ts.forEach(supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; - diagnosticArgument = [fileName, "'" + ts.supportedExtensions.join("', '") + "'"]; + diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; @@ -37952,7 +38830,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(ts.supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -37977,12 +38855,12 @@ var ts; } } // Get source file from normalized fileName - function findSourceFile(fileName, normalizedAbsolutePath, isDefaultLib, refFile, refPos, refEnd) { - if (filesByName.contains(normalizedAbsolutePath)) { - var file_1 = filesByName.get(normalizedAbsolutePath); + function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + if (filesByName.contains(path)) { + var file_1 = filesByName.get(path); // try to check if we've already seen this file but with a different casing in path // NOTE: this only makes sense for case-insensitive file systems - if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== normalizedAbsolutePath) { + if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== ts.getNormalizedAbsolutePath(fileName, currentDirectory)) { reportFileNamesDifferOnlyInCasingError(fileName, file_1.fileName, refFile, refPos, refEnd); } return file_1; @@ -37996,17 +38874,17 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); - filesByName.set(normalizedAbsolutePath, file); + filesByName.set(path, file); if (file) { - file.path = normalizedAbsolutePath; + file.path = path; if (host.useCaseSensitiveFileNames()) { // for case-sensitive file systems check if we've already seen some file with similar filename ignoring case - var existingFile = filesByNameIgnoreCase.get(normalizedAbsolutePath); + var existingFile = filesByNameIgnoreCase.get(path); if (existingFile) { reportFileNamesDifferOnlyInCasingError(fileName, existingFile.fileName, refFile, refPos, refEnd); } else { - filesByNameIgnoreCase.set(normalizedAbsolutePath, file); + filesByNameIgnoreCase.set(path, file); } } skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; @@ -38028,7 +38906,7 @@ var ts; function processReferencedFiles(file, basePath) { ts.forEach(file.referencedFiles, function (ref) { var referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, /* isDefaultLib */ false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, /*isDefaultLib*/ false, file, ref.pos, ref.end); }); } function getCanonicalFileName(fileName) { @@ -38040,15 +38918,17 @@ var ts; file.resolvedModules = {}; var moduleNames = ts.map(file.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(file.fileName, currentDirectory)); - for (var i = 0; i < file.imports.length; ++i) { + for (var i = 0; i < file.imports.length; i++) { var resolution = resolutions[i]; ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /* isDefaultLib */ false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, file, ts.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 (!ts.isExternalModule(importedFile)) { - var start_2 = ts.getTokenPosOfNode(file.imports[i], file); - fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + var start_5 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_5, file.imports[i].end - start_5, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); } else if (importedFile.referencedFiles.length) { var firstRef = importedFile.referencedFiles[0]; @@ -38066,7 +38946,7 @@ var ts; } function computeCommonSourceDirectory(sourceFiles) { var commonPathComponents; - ts.forEach(files, function (sourceFile) { + var failed = ts.forEach(files, function (sourceFile) { // Each file contributes into common source file path if (ts.isDeclarationFile(sourceFile)) { return; @@ -38079,10 +38959,10 @@ var ts; return; } for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (commonPathComponents[i] !== sourcePathComponents[i]) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { if (i === 0) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); - return; + // Failed to find any common path component + return true; } // New common path found that is 0 -> i-1 commonPathComponents.length = i; @@ -38094,6 +38974,10 @@ var ts; commonPathComponents.length = sourcePathComponents.length; } }); + // A common path can not be found when paths span multiple drives on windows, for example + if (failed) { + return ""; + } if (!commonPathComponents) { return currentDirectory; } @@ -38103,8 +38987,8 @@ var ts; var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { - var sourceFile = sourceFiles_1[_i]; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var sourceFile = sourceFiles_2[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -38138,14 +39022,14 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } - if (options.sourceRoot) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); - } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } + if (options.sourceRoot) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSources")); + } } if (options.out && options.outFile) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); @@ -38155,10 +39039,9 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } - if (options.sourceRoot) { + if (options.sourceRoot && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } - return; } var languageVersion = options.target || 0 /* ES3 */; var outFile = options.outFile || options.out; @@ -38176,7 +39059,7 @@ var ts; else if (firstExternalModuleSourceFile && languageVersion < 2 /* ES6 */ && !options.module) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file)); } // Cannot specify module gen target of es6 when below es6 if (options.module === 5 /* ES6 */ && languageVersion < 2 /* ES6 */) { @@ -38191,19 +39074,11 @@ var ts; if (options.outDir || options.sourceRoot || options.mapRoot) { - if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { - // If a rootDir is specified and is valid use it as the commonSourceDirectory - commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); - } - else { - // Compute the commonSourceDirectory from the input files - commonSourceDirectory = computeCommonSourceDirectory(files); - } - if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { - // Make sure directory path ends with directory separator so this string can directly - // used to replace with "" to get the relative path of the source file and the relative path doesn't - // start with / making it rooted path - commonSourceDirectory += ts.directorySeparator; + // Precalculate and cache the common source directory + var dir = getCommonSourceDirectory(); + // If we failed to find a good common directory, but outDir is specified and at least one of our files is on a windows drive/URL/other resource, add a failure + if (options.outDir && dir === "" && ts.forEach(files, function (file) { return ts.getRootLength(file.fileName) > 1; })) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } if (options.noEmit) { @@ -38220,10 +39095,47 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } + else if (options.allowJs && options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); + } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } + if (options.reactNamespace && !ts.isIdentifier(options.reactNamespace, languageVersion)) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier, options.reactNamespace)); + } + // If the emit is enabled make sure that every output file is unique and not overwriting any of the input files + if (!options.noEmit) { + var emitHost = getEmitHost(); + var emitFilesSeen = ts.createFileMap(!host.useCaseSensitiveFileNames() ? function (key) { return key.toLocaleLowerCase(); } : undefined); + ts.forEachExpectedEmitFile(emitHost, function (emitFileNames, sourceFiles, isBundledEmit) { + verifyEmitFilePath(emitFileNames.jsFilePath, emitFilesSeen); + verifyEmitFilePath(emitFileNames.declarationFilePath, emitFilesSeen); + }); + } + // Verify that all the emit files are unique and don't overwrite input files + function verifyEmitFilePath(emitFileName, emitFilesSeen) { + if (emitFileName) { + var emitFilePath = ts.toPath(emitFileName, currentDirectory, getCanonicalFileName); + // Report error if the output overwrites input file + if (filesByName.contains(emitFilePath)) { + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file); + } + // Report error if multiple files write into same file + if (emitFilesSeen.contains(emitFilePath)) { + // Already seen the same emit file - report error + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files); + } + else { + emitFilesSeen.set(emitFilePath, true); + } + } + } + } + function createEmitBlockingDiagnostics(emitFileName, emitFilePath, message) { + hasEmitBlockingDiagnostics.set(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName), true); + programDiagnostics.add(ts.createCompilerDiagnostic(message, emitFileName)); } } ts.createProgram = createProgram; @@ -38284,6 +39196,11 @@ var ts; description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, + { + name: "reactNamespace", + type: "string", + description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + }, { name: "listFiles", type: "boolean" @@ -38509,6 +39426,16 @@ var ts; name: "forceConsistentCasingInFileNames", type: "boolean", description: ts.Diagnostics.Disallow_inconsistently_cased_references_to_the_same_file + }, + { + name: "allowSyntheticDefaultImports", + type: "boolean", + description: ts.Diagnostics.Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking + }, + { + name: "allowJs", + type: "boolean", + description: ts.Diagnostics.Allow_javascript_files_to_be_compiled } ]; var optionNameMapCache; @@ -38543,7 +39470,8 @@ var ts; function parseStrings(args) { var i = 0; while (i < args.length) { - var s = args[i++]; + var s = args[i]; + i++; if (s.charCodeAt(0) === 64 /* at */) { parseResponseFile(s.slice(1)); } @@ -38561,20 +39489,23 @@ var ts; } switch (opt.type) { case "number": - options[opt.name] = parseInt(args[i++]); + options[opt.name] = parseInt(args[i]); + i++; break; case "boolean": options[opt.name] = true; break; case "string": - options[opt.name] = args[i++] || ""; + options[opt.name] = args[i] || ""; + i++; break; // If not a primitive, the possible types are specified in what is effectively a map of options. default: - var map_2 = opt.type; - var key = (args[i++] || "").toLowerCase(); - if (ts.hasProperty(map_2, key)) { - options[opt.name] = map_2[key]; + var map_1 = opt.type; + var key = (args[i] || "").toLowerCase(); + i++; + if (ts.hasProperty(map_1, key)) { + options[opt.name] = map_1[key]; } else { errors.push(ts.createCompilerDiagnostic(opt.error)); @@ -38687,8 +39618,10 @@ var ts; * @param basePath A root directory to resolve relative path entries in the config * file to. e.g. outDir */ - function parseJsonConfigFileContent(json, host, basePath) { - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), options = _a.options, errors = _a.errors; + function parseJsonConfigFileContent(json, host, basePath, existingOptions) { + if (existingOptions === void 0) { existingOptions = {}; } + var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), optionsFromJsonConfigFile = _a.options, errors = _a.errors; + var options = ts.extend(existingOptions, optionsFromJsonConfigFile); return { options: options, fileNames: getFileNames(), @@ -38705,23 +39638,31 @@ var ts; } } else { + var filesSeen = {}; var exclude = json["exclude"] instanceof Array ? ts.map(json["exclude"], ts.normalizeSlashes) : undefined; - var sysFiles = host.readDirectory(basePath, ".ts", exclude).concat(host.readDirectory(basePath, ".tsx", exclude)); - for (var i = 0; i < sysFiles.length; i++) { - var name_31 = sysFiles[i]; - if (ts.fileExtensionIs(name_31, ".d.ts")) { - var baseName = name_31.substr(0, name_31.length - ".d.ts".length); - if (!ts.contains(sysFiles, baseName + ".tsx") && !ts.contains(sysFiles, baseName + ".ts")) { - fileNames.push(name_31); + var supportedExtensions = ts.getSupportedExtensions(options); + ts.Debug.assert(ts.indexOf(supportedExtensions, ".ts") < ts.indexOf(supportedExtensions, ".d.ts"), "Changed priority of extensions to pick"); + // Get files of supported extensions in their order of resolution + for (var _i = 0, supportedExtensions_1 = supportedExtensions; _i < supportedExtensions_1.length; _i++) { + var extension = supportedExtensions_1[_i]; + var filesInDirWithExtension = host.readDirectory(basePath, extension, exclude); + for (var _a = 0, filesInDirWithExtension_1 = filesInDirWithExtension; _a < filesInDirWithExtension_1.length; _a++) { + var fileName = filesInDirWithExtension_1[_a]; + // .ts extension would read the .d.ts extension files too but since .d.ts is lower priority extension, + // lets pick them when its turn comes up + if (extension === ".ts" && ts.fileExtensionIs(fileName, ".d.ts")) { + continue; } - } - else if (ts.fileExtensionIs(name_31, ".ts")) { - if (!ts.contains(sysFiles, name_31 + "x")) { - fileNames.push(name_31); + // If this is one of the output extension (which would be .d.ts and .js if we are allowing compilation of js files) + // do not include this file if we included .ts or .tsx file with same base name as it could be output of the earlier compilation + if (extension === ".d.ts" || (options.allowJs && ts.contains(ts.supportedJavascriptExtensions, extension))) { + var baseName = fileName.substr(0, fileName.length - extension.length); + if (ts.hasProperty(filesSeen, baseName + ".ts") || ts.hasProperty(filesSeen, baseName + ".tsx")) { + continue; + } } - } - else { - fileNames.push(name_31); + filesSeen[fileName] = true; + fileNames.push(fileName); } } } @@ -38845,7 +39786,7 @@ var ts; } } function autoCollapse(node) { - return ts.isFunctionBlock(node) && node.parent.kind !== 174 /* ArrowFunction */; + return ts.isFunctionBlock(node) && node.parent.kind !== 176 /* ArrowFunction */; } var depth = 0; var maxDepth = 20; @@ -38857,7 +39798,7 @@ var ts; addOutliningForLeadingCommentsForNode(n); } switch (n.kind) { - case 192 /* Block */: + case 194 /* Block */: if (!ts.isFunctionBlock(n)) { var parent_7 = n.parent; var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); @@ -38865,18 +39806,18 @@ var ts; // Check if the block is standalone, or 'attached' to some parent statement. // If the latter, we want to collaps the block, but consider its hint span // to be the entire span of the parent. - if (parent_7.kind === 197 /* DoStatement */ || - parent_7.kind === 200 /* ForInStatement */ || - parent_7.kind === 201 /* ForOfStatement */ || - parent_7.kind === 199 /* ForStatement */ || - parent_7.kind === 196 /* IfStatement */ || - parent_7.kind === 198 /* WhileStatement */ || - parent_7.kind === 205 /* WithStatement */ || - parent_7.kind === 244 /* CatchClause */) { + if (parent_7.kind === 199 /* DoStatement */ || + parent_7.kind === 202 /* ForInStatement */ || + parent_7.kind === 203 /* ForOfStatement */ || + parent_7.kind === 201 /* ForStatement */ || + parent_7.kind === 198 /* IfStatement */ || + parent_7.kind === 200 /* WhileStatement */ || + parent_7.kind === 207 /* WithStatement */ || + parent_7.kind === 246 /* CatchClause */) { addOutliningSpan(parent_7, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent_7.kind === 209 /* TryStatement */) { + if (parent_7.kind === 211 /* TryStatement */) { // Could be the try-block, or the finally-block. var tryStatement = parent_7; if (tryStatement.tryBlock === n) { @@ -38903,23 +39844,23 @@ var ts; break; } // Fallthrough. - case 219 /* ModuleBlock */: { + case 221 /* ModuleBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 165 /* ObjectLiteralExpression */: - case 220 /* CaseBlock */: { + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 167 /* ObjectLiteralExpression */: + case 222 /* CaseBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: var openBracket = ts.findChildOfKind(n, 19 /* OpenBracketToken */, sourceFile); var closeBracket = ts.findChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -38949,12 +39890,12 @@ var ts; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); var nameToDeclarations = sourceFile.getNamedDeclarations(); - for (var name_32 in nameToDeclarations) { - var declarations = ts.getProperty(nameToDeclarations, name_32); + for (var name_28 in nameToDeclarations) { + var declarations = ts.getProperty(nameToDeclarations, name_28); if (declarations) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_32); + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_28); if (!matches) { continue; } @@ -38967,14 +39908,14 @@ var ts; if (!containers) { return undefined; } - matches = patternMatcher.getMatches(containers, name_32); + matches = patternMatcher.getMatches(containers, name_28); if (!matches) { continue; } } var fileName = sourceFile.fileName; var matchKind = bestMatchKind(matches); - rawItems.push({ name: name_32, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + rawItems.push({ name: name_28, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } } @@ -39013,7 +39954,7 @@ var ts; containers.unshift(text); } else if (declaration.name.kind === 136 /* ComputedPropertyName */) { - return tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion:*/ true); + return tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ true); } else { // Don't know how to add this. @@ -39033,12 +39974,12 @@ var ts; } return true; } - if (expression.kind === 166 /* PropertyAccessExpression */) { + if (expression.kind === 168 /* PropertyAccessExpression */) { var propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); } - return tryAddComputedPropertyName(propertyAccess.expression, containers, /*includeLastPortion:*/ true); + return tryAddComputedPropertyName(propertyAccess.expression, containers, /*includeLastPortion*/ true); } return false; } @@ -39047,7 +39988,7 @@ var ts; // First, if we started with a computed property name, then add all but the last // portion into the container array. if (declaration.name.kind === 136 /* ComputedPropertyName */) { - if (!tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion:*/ false)) { + if (!tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ false)) { return undefined; } } @@ -39108,7 +40049,7 @@ var ts; (function (ts) { var NavigationBar; (function (NavigationBar) { - function getNavigationBarItems(sourceFile) { + function getNavigationBarItems(sourceFile, compilerOptions) { // If the source file has any child items, then it included in the tree // and takes lexical ownership of all other top-level items. var hasGlobalNode = false; @@ -39120,17 +40061,17 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // If we have a module declared as A.B.C, it is more "intuitive" // to say it only has a single layer of depth do { current = current.parent; - } while (current.kind === 218 /* ModuleDeclaration */); + } while (current.kind === 220 /* ModuleDeclaration */); // fall through - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: indent++; } current = current.parent; @@ -39141,21 +40082,21 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: ts.forEach(node.declarationList.declarations, visit); break; - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: ts.forEach(node.elements, visit); break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -39167,7 +40108,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 226 /* NamespaceImport */) { childNodes.push(importClause.namedBindings); } else { @@ -39176,21 +40117,21 @@ var ts; } } break; - case 163 /* BindingElement */: - case 211 /* VariableDeclaration */: + case 165 /* BindingElement */: + case 213 /* VariableDeclaration */: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } // Fall through - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: - case 218 /* ModuleDeclaration */: - case 213 /* FunctionDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: + case 220 /* ModuleDeclaration */: + case 215 /* FunctionDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: childNodes.push(node); break; } @@ -39238,17 +40179,17 @@ var ts; for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) { var node = nodes_4[_i]; switch (node.kind) { - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: topLevelNodes.push(node); break; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -39259,12 +40200,12 @@ var ts; } } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 213 /* FunctionDeclaration */) { + if (functionDeclaration.kind === 215 /* FunctionDeclaration */) { // A function declaration is 'top level' if it contains any function declarations // within it. - if (functionDeclaration.body && functionDeclaration.body.kind === 192 /* Block */) { + if (functionDeclaration.body && functionDeclaration.body.kind === 194 /* Block */) { // Proper function declarations can only have identifier names - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 213 /* FunctionDeclaration */ && !isEmpty(s.name.text); })) { + if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 215 /* FunctionDeclaration */ && !isEmpty(s.name.text); })) { return true; } // Or if it is not parented by another function. i.e all functions @@ -39341,7 +40282,7 @@ var ts; return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); case 149 /* IndexSignature */: return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); case 147 /* CallSignature */: return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); @@ -39350,18 +40291,18 @@ var ts; case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: var variableDeclarationNode; - var name_33; - if (node.kind === 163 /* BindingElement */) { - name_33 = node.name; + var name_29; + if (node.kind === 165 /* BindingElement */) { + name_29 = node.name; variableDeclarationNode = node; // binding elements are added only for variable declarations // bubble up to the containing variable declaration - while (variableDeclarationNode && variableDeclarationNode.kind !== 211 /* VariableDeclaration */) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 213 /* VariableDeclaration */) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -39369,24 +40310,24 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_33 = node.name; + name_29 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.variableElement); } case 144 /* Constructor */: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); - case 230 /* ExportSpecifier */: - case 226 /* ImportSpecifier */: - case 221 /* ImportEqualsDeclaration */: - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: + case 232 /* ExportSpecifier */: + case 228 /* ImportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; @@ -39416,17 +40357,17 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: return createSourceFileItem(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return createClassItem(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return createEnumItem(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return createIterfaceItem(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return createModuleItem(node); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return createFunctionItem(node); } return undefined; @@ -39438,7 +40379,7 @@ var ts; // Otherwise, we need to aggregate each identifier to build up the qualified name. var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 218 /* ModuleDeclaration */) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 220 /* ModuleDeclaration */) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -39450,7 +40391,7 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.body && node.body.kind === 192 /* Block */) { + if (node.body && node.body.kind === 194 /* Block */) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); return getNavigationBarItem(!node.name ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } @@ -39504,13 +40445,13 @@ var ts; return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 218 /* ModuleDeclaration */) { + while (node.body.kind === 220 /* ModuleDeclaration */) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 248 /* SourceFile */ + return node.kind === 250 /* SourceFile */ ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } @@ -39542,12 +40483,11 @@ var ts; } function createPatternMatcher(pattern) { // We'll often see the same candidate string many times when searching (For example, when - // we see the name of a module that is used everywhere, or the name of an overload). As - // such, we cache the information we compute about the candidate for the life of this + // we see the name of a module that is used everywhere, or the name of an overload). As + // such, we cache the information we compute about the candidate for the life of this // pattern matcher so we don't have to compute it multiple times. var stringToWordSpans = {}; pattern = pattern.trim(); - var fullPatternSegment = createSegment(pattern); var dotSeparatedSegments = pattern.split(".").map(function (p) { return createSegment(p.trim()); }); var invalidPattern = dotSeparatedSegments.length === 0 || ts.forEach(dotSeparatedSegments, segmentIsInvalid); return { @@ -39587,7 +40527,7 @@ var ts; // So far so good. Now break up the container for the candidate and check if all // the dotted parts match up correctly. var totalMatch = candidateMatch; - for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { + for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i -= 1, j -= 1) { var segment = dotSeparatedSegments[i]; var containerName = candidateContainers[j]; var containerMatch = matchSegment(containerName, segment); @@ -39626,7 +40566,7 @@ var ts; if (index > 0) { // c) If the part is entirely lowercase, then check if it is contained anywhere in the // candidate in a case insensitive manner. If so, return that there was a substring - // match. + // match. // // Note: We only have a substring match if the lowercase part is prefix match of some // word part. That way we don't match something like 'Class' when the user types 'a'. @@ -39666,8 +40606,8 @@ var ts; if (isLowercase) { // f) Is the pattern a substring of the candidate starting on one of the candidate's word boundaries? // We could check every character boundary start of the candidate for the pattern. However, that's - // an m * n operation in the wost case. Instead, find the first instance of the pattern - // substring, and see if it starts on a capital letter. It seems unlikely that the user will try to + // an m * n operation in the wost case. Instead, find the first instance of the pattern + // substring, and see if it starts on a capital letter. It seems unlikely that the user will try to // filter the list based on a substring that starts on a capital letter and also with a lowercase one. // (Pattern: fogbar, Candidate: quuxfogbarFogBar). if (chunk.text.length < candidate.length) { @@ -39719,7 +40659,7 @@ var ts; // // c) If the word is entirely lowercase, then check if it is contained anywhere in the // candidate in a case insensitive manner. If so, return that there was a substring - // match. + // match. // // Note: We only have a substring match if the lowercase part is prefix match of // some word part. That way we don't match something like 'Class' when the user @@ -39733,7 +40673,7 @@ var ts; // e) If the word was not entirely lowercase, then attempt a camel cased match as // well. // - // f) The word is all lower case. Is it a case insensitive substring of the candidate starting + // f) The word is all lower case. Is it a case insensitive substring of the candidate starting // on a part boundary of the candidate? // // Only if all words have some sort of match is the pattern considered matched. @@ -39783,7 +40723,7 @@ var ts; // Note: we may have more pattern parts than candidate parts. This is because multiple // pattern parts may match a candidate part. For example "SiUI" against "SimpleUI". // We'll have 3 pattern parts Si/U/I against two candidate parts Simple/UI. However, U - // and I will both match in UI. + // and I will both match in UI. var currentCandidate = 0; var currentChunkSpan = 0; var firstMatch = undefined; @@ -39812,13 +40752,13 @@ var ts; // Consider the case of matching SiUI against SimpleUIElement. The candidate parts // will be Simple/UI/Element, and the pattern parts will be Si/U/I. We'll match 'Si' // against 'Simple' first. Then we'll match 'U' against 'UI'. However, we want to - // still keep matching pattern parts against that candidate part. + // still keep matching pattern parts against that candidate part. for (; currentChunkSpan < chunkCharacterSpans.length; currentChunkSpan++) { var chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; if (gotOneMatchThisCandidate) { // We've already gotten one pattern part match in this candidate. We will // only continue trying to consumer pattern parts if the last part and this - // part are both upper case. + // part are both upper case. if (!isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan - 1].start)) || !isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan].start))) { break; @@ -39848,42 +40788,6 @@ var ts; } } ts.createPatternMatcher = createPatternMatcher; - // Helper function to compare two matches to determine which is better. Matches are first - // ordered by kind (so all prefix matches always beat all substring matches). Then, if the - // match is a camel case match, the relative weights of the match are used to determine - // which is better (with a greater weight being better). Then if the match is of the same - // type, then a case sensitive match is considered better than an insensitive one. - function patternMatchCompareTo(match1, match2) { - return compareType(match1, match2) || - compareCamelCase(match1, match2) || - compareCase(match1, match2) || - comparePunctuation(match1, match2); - } - function comparePunctuation(result1, result2) { - // Consider a match to be better if it was successful without stripping punctuation - // versus a match that had to strip punctuation to succeed. - if (result1.punctuationStripped !== result2.punctuationStripped) { - return result1.punctuationStripped ? 1 : -1; - } - return 0; - } - function compareCase(result1, result2) { - if (result1.isCaseSensitive !== result2.isCaseSensitive) { - return result1.isCaseSensitive ? -1 : 1; - } - return 0; - } - function compareType(result1, result2) { - return result1.kind - result2.kind; - } - function compareCamelCase(result1, result2) { - if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { - // Swap the values here. If result1 has a higher weight, then we want it to come - // first. - return result2.camelCaseWeight - result1.camelCaseWeight; - } - return 0; - } function createSegment(text) { return { totalTextChunk: createTextChunk(text), @@ -39902,7 +40806,7 @@ var ts; if (ch < 127 /* maxAsciiCharacter */ || !ts.isUnicodeIdentifierStart(ch, 2 /* Latest */)) { return false; } - // TODO: find a way to determine this for any unicode characters in a + // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. var str = String.fromCharCode(ch); return str === str.toUpperCase(); @@ -39915,19 +40819,11 @@ var ts; if (ch < 127 /* maxAsciiCharacter */ || !ts.isUnicodeIdentifierStart(ch, 2 /* Latest */)) { return false; } - // TODO: find a way to determine this for any unicode characters in a + // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. var str = String.fromCharCode(ch); return str === str.toLowerCase(); } - function containsUpperCaseLetter(string) { - for (var i = 0, n = string.length; i < n; i++) { - if (isUpperCaseLetter(string.charCodeAt(i))) { - return true; - } - } - return false; - } function startsWith(string, search) { for (var i = 0, n = search.length; i < n; i++) { if (string.charCodeAt(i) !== search.charCodeAt(i)) { @@ -39964,7 +40860,7 @@ var ts; if (ch < 127 /* maxAsciiCharacter */) { return ch; } - // TODO: find a way to compute this for any unicode characters in a + // TODO: find a way to compute this for any unicode characters in a // non-allocating manner. return String.fromCharCode(ch).toLowerCase().charCodeAt(0); } @@ -39982,9 +40878,10 @@ var ts; for (var i = 0; i < pattern.length; i++) { var ch = pattern.charCodeAt(i); if (isWordChar(ch)) { - if (wordLength++ === 0) { + if (wordLength === 0) { wordStart = i; } + wordLength++; } else { if (wordLength > 0) { @@ -40115,7 +41012,7 @@ var ts; var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); // See if the casing indicates we're starting a new word. Note: if we're breaking on // words, then just seeing an upper case character isn't enough. Instead, it has to - // be uppercase and the previous character can't be uppercase. + // be uppercase and the previous character can't be uppercase. // // For example, breaking "AddMetadata" on words would make: Add Metadata // @@ -40305,7 +41202,7 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function createJavaScriptSignatureHelpItems(argumentInfo) { - if (argumentInfo.invocation.kind !== 168 /* CallExpression */) { + if (argumentInfo.invocation.kind !== 170 /* CallExpression */) { return undefined; } // See if we can find some symbol with the call expression name that has call signatures. @@ -40313,7 +41210,7 @@ var ts; var expression = callExpression.expression; var name = expression.kind === 69 /* Identifier */ ? expression - : expression.kind === 166 /* PropertyAccessExpression */ + : expression.kind === 168 /* PropertyAccessExpression */ ? expression.name : undefined; if (!name || !name.text) { @@ -40346,7 +41243,7 @@ var ts; * in the argument of an invocation; returns undefined otherwise. */ function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 168 /* CallExpression */ || node.parent.kind === 169 /* NewExpression */) { + if (node.parent.kind === 170 /* CallExpression */ || node.parent.kind === 171 /* NewExpression */) { var callExpression = node.parent; // There are 3 cases to handle: // 1. The token introduces a list, and should begin a sig help session @@ -40399,25 +41296,25 @@ var ts; }; } } - else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 170 /* TaggedTemplateExpression */) { + else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 172 /* TaggedTemplateExpression */) { // Check if we're actually inside the template; // otherwise we'll fall out and return undefined. if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, /*argumentIndex*/ 0); } } - else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 170 /* TaggedTemplateExpression */) { + else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 172 /* TaggedTemplateExpression */) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 183 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 185 /* TemplateExpression */); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 190 /* TemplateSpan */ && node.parent.parent.parent.kind === 170 /* TaggedTemplateExpression */) { + else if (node.parent.kind === 192 /* TemplateSpan */ && node.parent.parent.parent.kind === 172 /* TaggedTemplateExpression */) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 183 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 185 /* TemplateExpression */); // If we're just after a template tail, don't show signature help. if (node.kind === 14 /* TemplateTail */ && !ts.isInsideTemplateLiteral(node, position)) { return undefined; @@ -40535,7 +41432,7 @@ var ts; // // This is because a Missing node has no width. However, what we actually want is to include trivia // leading up to the next token in case the user is about to type in a TemplateMiddle or TemplateTail. - if (template.kind === 183 /* TemplateExpression */) { + if (template.kind === 185 /* TemplateExpression */) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, /*stopAfterLineBreak*/ false); @@ -40544,7 +41441,7 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 248 /* SourceFile */; n = n.parent) { + for (var n = node; n.kind !== 250 /* SourceFile */; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } @@ -40744,25 +41641,25 @@ var ts; return false; } switch (n.kind) { - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 165 /* ObjectLiteralExpression */: - case 161 /* ObjectBindingPattern */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 167 /* ObjectLiteralExpression */: + case 163 /* ObjectBindingPattern */: case 155 /* TypeLiteral */: - case 192 /* Block */: - case 219 /* ModuleBlock */: - case 220 /* CaseBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: + case 222 /* CaseBlock */: return nodeEndsWith(n, 16 /* CloseBraceToken */, sourceFile); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return isCompletedNode(n.block, sourceFile); - case 169 /* NewExpression */: + case 171 /* NewExpression */: if (!n.arguments) { return true; } // fall through - case 168 /* CallExpression */: - case 172 /* ParenthesizedExpression */: + case 170 /* CallExpression */: + case 174 /* ParenthesizedExpression */: case 160 /* ParenthesizedType */: return nodeEndsWith(n, 18 /* CloseParenToken */, sourceFile); case 152 /* FunctionType */: @@ -40771,13 +41668,13 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 148 /* ConstructSignature */: case 147 /* CallSignature */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: if (n.body) { return isCompletedNode(n.body, sourceFile); } @@ -40787,19 +41684,19 @@ var ts; // Even though type parameters can be unclosed, we can get away with // having at least a closing paren. return hasChildOfKind(n, 18 /* CloseParenToken */, sourceFile); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return n.body && isCompletedNode(n.body, sourceFile); - case 196 /* IfStatement */: + case 198 /* IfStatement */: if (n.elseStatement) { return isCompletedNode(n.elseStatement, sourceFile); } return isCompletedNode(n.thenStatement, sourceFile); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return isCompletedNode(n.expression, sourceFile) || hasChildOfKind(n, 23 /* SemicolonToken */); - case 164 /* ArrayLiteralExpression */: - case 162 /* ArrayBindingPattern */: - case 167 /* ElementAccessExpression */: + case 166 /* ArrayLiteralExpression */: + case 164 /* ArrayBindingPattern */: + case 169 /* ElementAccessExpression */: case 136 /* ComputedPropertyName */: case 157 /* TupleType */: return nodeEndsWith(n, 20 /* CloseBracketToken */, sourceFile); @@ -40808,16 +41705,16 @@ var ts; return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicitly always consider them non-completed return false; - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 198 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 200 /* WhileStatement */: return isCompletedNode(n.statement, sourceFile); - case 197 /* DoStatement */: + case 199 /* DoStatement */: // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; var hasWhileKeyword = findChildOfKind(n, 104 /* WhileKeyword */, sourceFile); if (hasWhileKeyword) { @@ -40826,25 +41723,25 @@ var ts; return isCompletedNode(n.statement, sourceFile); case 154 /* TypeQuery */: return isCompletedNode(n.exprName, sourceFile); - case 176 /* TypeOfExpression */: - case 175 /* DeleteExpression */: - case 177 /* VoidExpression */: - case 184 /* YieldExpression */: - case 185 /* SpreadElementExpression */: + case 178 /* TypeOfExpression */: + case 177 /* DeleteExpression */: + case 179 /* VoidExpression */: + case 186 /* YieldExpression */: + case 187 /* SpreadElementExpression */: var unaryWordExpression = n; return isCompletedNode(unaryWordExpression.expression, sourceFile); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return isCompletedNode(n.template, sourceFile); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: var lastSpan = ts.lastOrUndefined(n.templateSpans); return isCompletedNode(lastSpan, sourceFile); - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return ts.nodeIsPresent(n.literal); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return isCompletedNode(n.operand, sourceFile); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return isCompletedNode(n.right, sourceFile); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return isCompletedNode(n.whenFalse, sourceFile); default: return true; @@ -40900,7 +41797,7 @@ var ts; // for the position of the relevant node (or comma). var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { // find syntax list that covers the span of the node - if (c.kind === 271 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 273 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { return c; } }); @@ -41006,7 +41903,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n) || n.kind === 236 /* JsxText */) { + if (isToken(n) || n.kind === 238 /* JsxText */) { return n; } var children = n.getChildren(); @@ -41014,7 +41911,7 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n) || n.kind === 236 /* JsxText */) { + if (isToken(n) || n.kind === 238 /* JsxText */) { return n; } var children = n.getChildren(); @@ -41028,10 +41925,10 @@ var ts; // if no - position is in the node itself so we should recurse in it. // NOTE: JsxText is a weird kind of node that can contain only whitespaces (since they are not counted as trivia). // if this is the case - then we should assume that token in question is located in previous child. - if (position < child.end && (nodeHasTokens(child) || child.kind === 236 /* JsxText */)) { + if (position < child.end && (nodeHasTokens(child) || child.kind === 238 /* JsxText */)) { var start = child.getStart(sourceFile); var lookInPreviousChild = (start >= position) || - (child.kind === 236 /* JsxText */ && start === child.end); // whitespace only JsxText + (child.kind === 238 /* JsxText */ && start === child.end); // whitespace only JsxText if (lookInPreviousChild) { // actual start of the node is past the position - previous token should be at the end of previous child var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ i); @@ -41043,8 +41940,8 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 248 /* SourceFile */); - // Here we know that none of child token nodes embrace the position, + ts.Debug.assert(startNode !== undefined || n.kind === 250 /* SourceFile */); + // Here we know that none of child token nodes embrace the position, // the only known case is when position is at the end of the file. // Try to find the rightmost token in the file without filtering. // Namely we are skipping the check: 'position < node.end' @@ -41065,7 +41962,7 @@ var ts; ts.findPrecedingToken = findPrecedingToken; function isInString(sourceFile, position) { var token = getTokenAtPosition(sourceFile, position); - return token && token.kind === 9 /* StringLiteral */ && position > token.getStart(); + return token && (token.kind === 9 /* StringLiteral */ || token.kind === 162 /* StringLiteralType */) && position > token.getStart(); } ts.isInString = isInString; function isInComment(sourceFile, position) { @@ -41169,10 +42066,10 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 151 /* TypeReference */ || node.kind === 168 /* CallExpression */) { + if (node.kind === 151 /* TypeReference */ || node.kind === 170 /* CallExpression */) { return node.typeArguments; } - if (ts.isFunctionLike(node) || node.kind === 214 /* ClassDeclaration */ || node.kind === 215 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(node) || node.kind === 216 /* ClassDeclaration */ || node.kind === 217 /* InterfaceDeclaration */) { return node.typeParameters; } return undefined; @@ -41195,6 +42092,7 @@ var ts; ts.isComment = isComment; function isStringOrRegularExpressionOrTemplateLiteral(kind) { if (kind === 9 /* StringLiteral */ + || kind === 162 /* StringLiteralType */ || kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(kind)) { return true; @@ -41431,7 +42329,7 @@ var ts; ts.getDeclaredName = getDeclaredName; function isImportOrExportSpecifierName(location) { return location.parent && - (location.parent.kind === 226 /* ImportSpecifier */ || location.parent.kind === 230 /* ExportSpecifier */) && + (location.parent.kind === 228 /* ImportSpecifier */ || location.parent.kind === 232 /* ExportSpecifier */) && location.parent.propertyName === location; } ts.isImportOrExportSpecifierName = isImportOrExportSpecifierName; @@ -41488,6 +42386,7 @@ var ts; advance: advance, readTokenInfo: readTokenInfo, isOnToken: isOnToken, + getCurrentLeadingTrivia: function () { return leadingTrivia; }, lastTrailingTriviaWasNewLine: function () { return wasNewLine; }, close: function () { ts.Debug.assert(scanner !== undefined); @@ -41553,10 +42452,10 @@ var ts; function shouldRescanJsxIdentifier(node) { if (node.parent) { switch (node.parent.kind) { - case 238 /* JsxAttribute */: - case 235 /* JsxOpeningElement */: - case 237 /* JsxClosingElement */: - case 234 /* JsxSelfClosingElement */: + case 240 /* JsxAttribute */: + case 237 /* JsxOpeningElement */: + case 239 /* JsxClosingElement */: + case 236 /* JsxSelfClosingElement */: return node.kind === 69 /* Identifier */; } } @@ -41763,7 +42662,7 @@ var ts; return false; }; return FormattingContext; - })(); + }()); formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41802,7 +42701,7 @@ var ts; "flag=" + this.Flag + "]"; }; return Rule; - })(); + }()); formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41849,7 +42748,7 @@ var ts; return new RuleDescriptor(left, right); }; return RuleDescriptor; - })(); + }()); formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41891,7 +42790,7 @@ var ts; return result; }; return RuleOperation; - })(); + }()); formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41926,7 +42825,7 @@ var ts; }; RuleOperationContext.Any = new RuleOperationContext(); return RuleOperationContext; - })(); + }()); formatting.RuleOperationContext = RuleOperationContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42030,6 +42929,7 @@ var ts; // Treat string literals in module names as identifiers, and add a space between the literal and the opening Brace braces, e.g.: module "m2" { this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(9 /* StringLiteral */, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2 /* Space */)); // Lambda expressions + this.SpaceBeforeArrow = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 34 /* EqualsGreaterThanToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(34 /* EqualsGreaterThanToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // Optional parameters and let args this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(22 /* DotDotDotToken */, 69 /* Identifier */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); @@ -42055,72 +42955,68 @@ var ts; this.SpaceBetweenAsyncAndOpenParen = new formatting.Rule(formatting.RuleDescriptor.create1(118 /* AsyncKeyword */, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsArrowFunctionContext, Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(118 /* AsyncKeyword */, 87 /* FunctionKeyword */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // template string - this.SpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(69 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12 /* TemplateHead */, 13 /* TemplateMiddle */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.NoSpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13 /* TemplateMiddle */, 14 /* TemplateTail */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + this.NoSpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(69 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // These rules are higher in priority than user-configurable rules. - this.HighPriorityCommonRules = - [ - this.IgnoreBeforeComment, this.IgnoreAfterLineComment, - this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, - this.NoSpaceAfterQuestionMark, - this.NoSpaceBeforeDot, this.NoSpaceAfterDot, - this.NoSpaceAfterUnaryPrefixOperator, - this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, - this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, - this.SpaceAfterPostincrementWhenFollowedByAdd, - this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, - this.SpaceAfterPostdecrementWhenFollowedBySubtract, - this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, - this.NoSpaceAfterCloseBrace, - this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, - this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, - this.NoSpaceBetweenFunctionKeywordAndStar, this.SpaceAfterStarInGeneratorDeclaration, - this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, - this.NoSpaceBetweenYieldKeywordAndStar, this.SpaceBetweenYieldOrYieldStarAndOperand, - this.NoSpaceBetweenReturnAndSemicolon, - this.SpaceAfterCertainKeywords, - this.SpaceAfterLetConstInVariableDeclaration, - this.NoSpaceBeforeOpenParenInFuncCall, - this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, - this.SpaceAfterVoidOperator, - this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceAfterTemplateHeadAndMiddle, this.NoSpaceBeforeTemplateMiddleAndTail, - // TypeScript-specific rules - this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, - this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, - this.SpaceAfterModuleName, - this.SpaceAfterArrow, - this.NoSpaceAfterEllipsis, - this.NoSpaceAfterOptionalParameters, - this.NoSpaceBetweenEmptyInterfaceBraceBrackets, - this.NoSpaceBeforeOpenAngularBracket, - this.NoSpaceBetweenCloseParenAndAngularBracket, - this.NoSpaceAfterOpenAngularBracket, - this.NoSpaceBeforeCloseAngularBracket, - this.NoSpaceAfterCloseAngularBracket, - this.NoSpaceAfterTypeAssertion, - this.SpaceBeforeAt, - this.NoSpaceAfterAt, - this.SpaceAfterDecorator, - ]; + this.HighPriorityCommonRules = [ + this.IgnoreBeforeComment, this.IgnoreAfterLineComment, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, + this.NoSpaceBeforeDot, this.NoSpaceAfterDot, + this.NoSpaceAfterUnaryPrefixOperator, + this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, + this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, + this.SpaceAfterPostincrementWhenFollowedByAdd, + this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, + this.SpaceAfterPostdecrementWhenFollowedBySubtract, + this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, + this.NoSpaceAfterCloseBrace, + this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, + this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, + this.NoSpaceBetweenFunctionKeywordAndStar, this.SpaceAfterStarInGeneratorDeclaration, + this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, + this.NoSpaceBetweenYieldKeywordAndStar, this.SpaceBetweenYieldOrYieldStarAndOperand, + this.NoSpaceBetweenReturnAndSemicolon, + this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, + this.NoSpaceBeforeOpenParenInFuncCall, + this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, + this.SpaceAfterVoidOperator, + this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, + this.NoSpaceBetweenTagAndTemplateString, + // TypeScript-specific rules + this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, + this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, + this.SpaceAfterModuleName, + this.SpaceBeforeArrow, this.SpaceAfterArrow, + this.NoSpaceAfterEllipsis, + this.NoSpaceAfterOptionalParameters, + this.NoSpaceBetweenEmptyInterfaceBraceBrackets, + this.NoSpaceBeforeOpenAngularBracket, + this.NoSpaceBetweenCloseParenAndAngularBracket, + this.NoSpaceAfterOpenAngularBracket, + this.NoSpaceBeforeCloseAngularBracket, + this.NoSpaceAfterCloseAngularBracket, + this.NoSpaceAfterTypeAssertion, + this.SpaceBeforeAt, + this.NoSpaceAfterAt, + this.SpaceAfterDecorator, + ]; // These rules are lower in priority than user-configurable rules. - this.LowPriorityCommonRules = - [ - this.NoSpaceBeforeSemicolon, - this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, - this.NoSpaceBeforeComma, - this.NoSpaceBeforeOpenBracket, - this.NoSpaceAfterCloseBracket, - this.SpaceAfterSemicolon, - this.NoSpaceBeforeOpenParenInFuncDecl, - this.SpaceBetweenStatements, this.SpaceAfterTryFinally - ]; + this.LowPriorityCommonRules = [ + this.NoSpaceBeforeSemicolon, + this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, + this.NoSpaceBeforeComma, + this.NoSpaceBeforeOpenBracket, + this.NoSpaceAfterCloseBracket, + this.SpaceAfterSemicolon, + this.NoSpaceBeforeOpenParenInFuncDecl, + this.SpaceBetweenStatements, this.SpaceAfterTryFinally + ]; /// /// Rules controlled by user options /// // Insert space after comma delimiter - this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24 /* CommaToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24 /* CommaToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNextTokenNotCloseBracket), 2 /* Space */)); this.NoSpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24 /* CommaToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // Insert space before and after binary operators this.SpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */)); @@ -42152,15 +43048,20 @@ var ts; this.NoSpaceBetweenBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(19 /* OpenBracketToken */, 20 /* CloseBracketToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); this.NoSpaceAfterOpenBracket = new formatting.Rule(formatting.RuleDescriptor.create3(19 /* OpenBracketToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); this.NoSpaceBeforeCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 20 /* CloseBracketToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + // Insert space after opening and before closing template string braces + this.NoSpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12 /* TemplateHead */, 13 /* TemplateMiddle */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + this.SpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12 /* TemplateHead */, 13 /* TemplateMiddle */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.NoSpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13 /* TemplateMiddle */, 14 /* TemplateTail */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + this.SpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13 /* TemplateMiddle */, 14 /* TemplateTail */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // Insert space after function keyword for anonymous functions this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(87 /* FunctionKeyword */, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2 /* Space */)); this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(87 /* FunctionKeyword */, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8 /* Delete */)); } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_34 in o) { - if (o[name_34] === rule) { - return name_34; + for (var name_30 in o) { + if (o[name_30] === rule) { + return name_30; } } throw new Error("Unknown rule"); @@ -42169,39 +43070,39 @@ var ts; /// Contexts /// Rules.IsForContext = function (context) { - return context.contextNode.kind === 199 /* ForStatement */; + return context.contextNode.kind === 201 /* ForStatement */; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 181 /* BinaryExpression */: - case 182 /* ConditionalExpression */: - case 189 /* AsExpression */: + case 183 /* BinaryExpression */: + case 184 /* ConditionalExpression */: + case 191 /* AsExpression */: case 150 /* TypePredicate */: case 158 /* UnionType */: case 159 /* IntersectionType */: return true; // equals in binding elements: function foo([[x, y] = [1, 2]]) - case 163 /* BindingElement */: + case 165 /* BindingElement */: // equals in type X = ... - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: // equal in import a = module('a'); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: // equal in let a = 0; - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: // equal in p = 0; case 138 /* Parameter */: - case 247 /* EnumMember */: + case 249 /* EnumMember */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return context.currentTokenSpan.kind === 56 /* EqualsToken */ || context.nextTokenSpan.kind === 56 /* EqualsToken */; // "in" keyword in for (let x in []) { } - case 200 /* ForInStatement */: + case 202 /* ForInStatement */: return context.currentTokenSpan.kind === 90 /* InKeyword */ || context.nextTokenSpan.kind === 90 /* InKeyword */; // Technically, "of" is not a binary operator, but format it the same way as "in" - case 201 /* ForOfStatement */: + case 203 /* ForOfStatement */: return context.currentTokenSpan.kind === 134 /* OfKeyword */ || context.nextTokenSpan.kind === 134 /* OfKeyword */; } return false; @@ -42210,7 +43111,7 @@ var ts; return !Rules.IsBinaryOpContext(context); }; Rules.IsConditionalOperatorContext = function (context) { - return context.contextNode.kind === 182 /* ConditionalExpression */; + return context.contextNode.kind === 184 /* ConditionalExpression */; }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. @@ -42254,17 +43155,17 @@ var ts; return true; } switch (node.kind) { - case 192 /* Block */: - case 220 /* CaseBlock */: - case 165 /* ObjectLiteralExpression */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 222 /* CaseBlock */: + case 167 /* ObjectLiteralExpression */: + case 221 /* ModuleBlock */: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: //case SyntaxKind.MemberFunctionDeclaration: @@ -42272,75 +43173,75 @@ var ts; case 146 /* SetAccessor */: ///case SyntaxKind.MethodSignature: case 147 /* CallSignature */: - case 173 /* FunctionExpression */: + case 175 /* FunctionExpression */: case 144 /* Constructor */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: //case SyntaxKind.ConstructorDeclaration: //case SyntaxKind.SimpleArrowFunctionExpression: //case SyntaxKind.ParenthesizedArrowFunctionExpression: - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return true; } return false; }; Rules.IsFunctionDeclarationOrFunctionExpressionContext = function (context) { - return context.contextNode.kind === 213 /* FunctionDeclaration */ || context.contextNode.kind === 173 /* FunctionExpression */; + return context.contextNode.kind === 215 /* FunctionDeclaration */ || context.contextNode.kind === 175 /* FunctionExpression */; }; Rules.IsTypeScriptDeclWithBlockContext = function (context) { return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: case 155 /* TypeLiteral */: - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 214 /* ClassDeclaration */: - case 218 /* ModuleDeclaration */: - case 217 /* EnumDeclaration */: - case 192 /* Block */: - case 244 /* CatchClause */: - case 219 /* ModuleBlock */: - case 206 /* SwitchStatement */: + case 216 /* ClassDeclaration */: + case 220 /* ModuleDeclaration */: + case 219 /* EnumDeclaration */: + case 194 /* Block */: + case 246 /* CatchClause */: + case 221 /* ModuleBlock */: + case 208 /* SwitchStatement */: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 196 /* IfStatement */: - case 206 /* SwitchStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 198 /* WhileStatement */: - case 209 /* TryStatement */: - case 197 /* DoStatement */: - case 205 /* WithStatement */: + case 198 /* IfStatement */: + case 208 /* SwitchStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 200 /* WhileStatement */: + case 211 /* TryStatement */: + case 199 /* DoStatement */: + case 207 /* WithStatement */: // TODO // case SyntaxKind.ElseClause: - case 244 /* CatchClause */: + case 246 /* CatchClause */: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 165 /* ObjectLiteralExpression */; + return context.contextNode.kind === 167 /* ObjectLiteralExpression */; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 168 /* CallExpression */; + return context.contextNode.kind === 170 /* CallExpression */; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 169 /* NewExpression */; + return context.contextNode.kind === 171 /* NewExpression */; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -42348,8 +43249,11 @@ var ts; Rules.IsPreviousTokenNotComma = function (context) { return context.currentTokenSpan.kind !== 24 /* CommaToken */; }; + Rules.IsNextTokenNotCloseBracket = function (context) { + return context.nextTokenSpan.kind !== 20 /* CloseBracketToken */; + }; Rules.IsArrowFunctionContext = function (context) { - return context.contextNode.kind === 174 /* ArrowFunction */; + return context.contextNode.kind === 176 /* ArrowFunction */; }; Rules.IsSameLineTokenContext = function (context) { return context.TokensAreOnSameLine(); @@ -42370,14 +43274,14 @@ var ts; return node.kind === 139 /* Decorator */; }; Rules.IsStartOfVariableDeclarationList = function (context) { - return context.currentTokenParent.kind === 212 /* VariableDeclarationList */ && + return context.currentTokenParent.kind === 214 /* VariableDeclarationList */ && context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind !== 2 /* FormatOnEnter */; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 218 /* ModuleDeclaration */; + return context.contextNode.kind === 220 /* ModuleDeclaration */; }; Rules.IsObjectTypeContext = function (context) { return context.contextNode.kind === 155 /* TypeLiteral */; // && context.contextNode.parent.kind !== SyntaxKind.InterfaceDeclaration; @@ -42388,20 +43292,20 @@ var ts; } switch (parent.kind) { case 151 /* TypeReference */: - case 171 /* TypeAssertionExpression */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 173 /* TypeAssertionExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 147 /* CallSignature */: case 148 /* ConstructSignature */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 188 /* ExpressionWithTypeArguments */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 190 /* ExpressionWithTypeArguments */: return true; default: return false; @@ -42412,16 +43316,16 @@ var ts; Rules.IsTypeArgumentOrParameterOrAssertion(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsTypeAssertionContext = function (context) { - return context.contextNode.kind === 171 /* TypeAssertionExpression */; + return context.contextNode.kind === 173 /* TypeAssertionExpression */; }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 177 /* VoidExpression */; + return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 179 /* VoidExpression */; }; Rules.IsYieldOrYieldStarWithOperand = function (context) { - return context.contextNode.kind === 184 /* YieldExpression */ && context.contextNode.expression !== undefined; + return context.contextNode.kind === 186 /* YieldExpression */ && context.contextNode.expression !== undefined; }; return Rules; - })(); + }()); formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42489,7 +43393,7 @@ var ts; return null; }; return RulesMap; - })(); + }()); formatting.RulesMap = RulesMap; var MaskBitSize = 5; var Mask = 0x1f; @@ -42541,7 +43445,7 @@ var ts; this.rulesInsertionIndexBitmap = temp; }; return RulesBucketConstructionState; - })(); + }()); formatting.RulesBucketConstructionState = RulesBucketConstructionState; var RulesBucket = (function () { function RulesBucket() { @@ -42576,7 +43480,7 @@ var ts; state.IncreaseInsertionIndex(position); }; return RulesBucket; - })(); + }()); formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42604,7 +43508,7 @@ var ts; return this.tokens.indexOf(token) >= 0; }; return TokenRangeAccess; - })(); + }()); Shared.TokenRangeAccess = TokenRangeAccess; var TokenValuesAccess = (function () { function TokenValuesAccess(tks) { @@ -42617,7 +43521,7 @@ var ts; return this.tokens.indexOf(token) >= 0; }; return TokenValuesAccess; - })(); + }()); Shared.TokenValuesAccess = TokenValuesAccess; var TokenSingleValueAccess = (function () { function TokenSingleValueAccess(token) { @@ -42630,7 +43534,7 @@ var ts; return tokenValue === this.token; }; return TokenSingleValueAccess; - })(); + }()); Shared.TokenSingleValueAccess = TokenSingleValueAccess; var TokenAllAccess = (function () { function TokenAllAccess() { @@ -42649,7 +43553,7 @@ var ts; return "[allTokens]"; }; return TokenAllAccess; - })(); + }()); Shared.TokenAllAccess = TokenAllAccess; var TokenRange = (function () { function TokenRange(tokenAccess) { @@ -42691,7 +43595,7 @@ var ts; TokenRange.Comments = TokenRange.FromTokens([2 /* SingleLineCommentTrivia */, 3 /* MultiLineCommentTrivia */]); TokenRange.TypeNames = TokenRange.FromTokens([69 /* Identifier */, 128 /* NumberKeyword */, 130 /* StringKeyword */, 120 /* BooleanKeyword */, 131 /* SymbolKeyword */, 103 /* VoidKeyword */, 117 /* AnyKeyword */]); return TokenRange; - })(); + }()); Shared.TokenRange = TokenRange; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); @@ -42777,6 +43681,14 @@ var ts; rules.push(this.globalRules.NoSpaceBeforeCloseBracket); rules.push(this.globalRules.NoSpaceBetweenBrackets); } + if (options.InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces) { + rules.push(this.globalRules.SpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.SpaceBeforeTemplateMiddleAndTail); + } + else { + rules.push(this.globalRules.NoSpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.NoSpaceBeforeTemplateMiddleAndTail); + } if (options.InsertSpaceAfterSemicolonInForStatements) { rules.push(this.globalRules.SpaceAfterSemicolonInFor); } @@ -42802,7 +43714,7 @@ var ts; return rules; }; return RulesProvider; - })(); + }()); formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42903,17 +43815,17 @@ var ts; // i.e. parent is class declaration with the list of members and node is one of members. function isListElement(parent, node) { switch (parent.kind) { - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: return ts.rangeContainsRange(parent.members, node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: var body = parent.body; - return body && body.kind === 192 /* Block */ && ts.rangeContainsRange(body.statements, node); - case 248 /* SourceFile */: - case 192 /* Block */: - case 219 /* ModuleBlock */: + return body && body.kind === 194 /* Block */ && ts.rangeContainsRange(body.statements, node); + case 250 /* SourceFile */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return ts.rangeContainsRange(parent.statements, node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -43011,17 +43923,17 @@ var ts; */ function getOwnOrInheritedDelta(n, options, sourceFile) { var previousLine = -1 /* Unknown */; - var childKind = 0 /* Unknown */; + var child; while (n) { var line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; if (previousLine !== -1 /* Unknown */ && line !== previousLine) { break; } - if (formatting.SmartIndenter.shouldIndentChildNode(n.kind, childKind)) { + if (formatting.SmartIndenter.shouldIndentChildNode(n, child)) { return options.IndentSize; } previousLine = line; - childKind = n.kind; + child = n; n = n.parent; } return 0; @@ -43051,6 +43963,13 @@ var ts; var delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); processNode(enclosingNode, enclosingNode, startLine, undecoratedStartLine, initialIndentation, delta); } + if (!formattingScanner.isOnToken()) { + var leadingTrivia = formattingScanner.getCurrentLeadingTrivia(); + if (leadingTrivia) { + processTrivia(leadingTrivia, enclosingNode, enclosingNode, undefined); + trimTrailingWhitespacesForRemainingRange(); + } + } formattingScanner.close(); return edits; // local functions @@ -43062,7 +43981,8 @@ var ts; * to inherited indentation from its predecessors. */ function tryComputeIndentationForListItem(startPos, endPos, parentStartLine, range, inheritedIndentation) { - if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos)) { + if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos) || + ts.rangeContainsStartEnd(range, startPos, endPos) /* Not to miss zero-range nodes e.g. JsxText */) { if (inheritedIndentation !== -1 /* Unknown */) { return inheritedIndentation; } @@ -43079,32 +43999,7 @@ var ts; } function computeIndentation(node, startLine, inheritedIndentation, parent, parentDynamicIndentation, effectiveParentStartLine) { var indentation = inheritedIndentation; - if (indentation === -1 /* Unknown */) { - if (isSomeBlock(node.kind)) { - // blocks should be indented in - // - other blocks - // - source file - // - switch\default clauses - if (isSomeBlock(parent.kind) || - parent.kind === 248 /* SourceFile */ || - parent.kind === 241 /* CaseClause */ || - parent.kind === 242 /* DefaultClause */) { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - else { - indentation = parentDynamicIndentation.getIndentation(); - } - } - else { - if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - indentation = parentDynamicIndentation.getIndentation(); - } - else { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - } - } - var delta = formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0 /* Unknown */) ? options.IndentSize : 0; + var delta = formatting.SmartIndenter.shouldIndentChildNode(node) ? options.IndentSize : 0; if (effectiveParentStartLine === startLine) { // if node is located on the same line with the parent // - inherit indentation from the parent @@ -43112,7 +44007,15 @@ var ts; 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 === -1 /* Unknown */) { + if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { + indentation = parentDynamicIndentation.getIndentation(); + } + else { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(node); + } } return { indentation: indentation, @@ -43124,10 +44027,10 @@ var ts; return node.modifiers[0].kind; } switch (node.kind) { - case 214 /* ClassDeclaration */: return 73 /* ClassKeyword */; - case 215 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; - case 213 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; - case 217 /* EnumDeclaration */: return 217 /* EnumDeclaration */; + case 216 /* ClassDeclaration */: return 73 /* ClassKeyword */; + case 217 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; + case 215 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; + case 219 /* EnumDeclaration */: return 219 /* EnumDeclaration */; case 145 /* GetAccessor */: return 123 /* GetKeyword */; case 146 /* SetAccessor */: return 129 /* SetKeyword */; case 143 /* MethodDeclaration */: @@ -43142,7 +44045,7 @@ var ts; } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { - getIndentationForComment: function (kind, tokenIndentation) { + getIndentationForComment: function (kind, tokenIndentation, container) { switch (kind) { // preceding comment to the token that closes the indentation scope inherits the indentation from the scope // .. { @@ -43151,11 +44054,11 @@ var ts; case 16 /* CloseBraceToken */: case 20 /* CloseBracketToken */: case 18 /* CloseParenToken */: - return indentation + delta; + return indentation + getEffectiveDelta(delta, container); } return tokenIndentation !== -1 /* Unknown */ ? tokenIndentation : indentation; }, - getIndentationForToken: function (line, kind) { + getIndentationForToken: function (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 @@ -43176,20 +44079,20 @@ var ts; 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: function () { return indentation; }, - getDelta: function () { return delta; }, + getDelta: function (child) { return getEffectiveDelta(delta, child); }, recomputeIndentation: function (lineAdded) { - if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent.kind, node.kind)) { + if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { indentation += options.IndentSize; } else { indentation -= options.IndentSize; } - if (formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0 /* Unknown */)) { + if (formatting.SmartIndenter.shouldIndentChildNode(node)) { delta = options.IndentSize; } else { @@ -43198,6 +44101,10 @@ var ts; } } }; + function getEffectiveDelta(delta, child) { + // Delta value should be zero when the node explicitly prevents indentation of the child node + return formatting.SmartIndenter.nodeWillIndentChild(node, child, true) ? delta : 0; + } } function processNode(node, contextNode, nodeStartLine, undecoratedNodeStartLine, indentation, delta) { if (!ts.rangeOverlapsWithStartEnd(originalRange, node.getStart(sourceFile), node.getEnd())) { @@ -43269,7 +44176,7 @@ var ts; // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules var tokenInfo = formattingScanner.readTokenInfo(child); ts.Debug.assert(tokenInfo.token.end === child.end); - consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } var effectiveParentStartLine = child.kind === 139 /* Decorator */ ? childStartLine : undecoratedParentStartLine; @@ -43323,7 +44230,7 @@ var ts; } } } - function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation) { + function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation, container) { ts.Debug.assert(ts.rangeContainsRange(parent, currentTokenInfo.token)); var lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); var indentToken = false; @@ -43358,10 +44265,10 @@ var ts; } if (indentToken) { var tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? - dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind, container) : -1 /* Unknown */; if (currentTokenInfo.leadingTrivia) { - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation, container); var indentNextTokenOrTrivia = true; for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { var triviaItem = _a[_i]; @@ -43450,9 +44357,7 @@ var ts; } } // We need to trim trailing whitespace between the tokens if they were on different lines, and no rule was applied to put them on the same line - trimTrailingWhitespaces = - (rule.Operation.Action & (4 /* NewLine */ | 2 /* Space */)) && - rule.Flag !== 1 /* CanDeleteNewLines */; + trimTrailingWhitespaces = !(rule.Operation.Action & 8 /* Delete */) && rule.Flag !== 1 /* CanDeleteNewLines */; } else { trimTrailingWhitespaces = true; @@ -43535,16 +44440,36 @@ var ts; if (range && (ts.isComment(range.kind) || ts.isStringOrRegularExpressionOrTemplateLiteral(range.kind)) && range.pos <= lineEndPosition && range.end > lineEndPosition) { continue; } - var pos = lineEndPosition; - while (pos >= lineStartPosition && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { - pos--; - } - if (pos !== lineEndPosition) { - ts.Debug.assert(pos === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))); - recordDelete(pos + 1, lineEndPosition - pos); + var whitespaceStart = getTrailingWhitespaceStartPosition(lineStartPosition, lineEndPosition); + if (whitespaceStart !== -1) { + ts.Debug.assert(whitespaceStart === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(whitespaceStart - 1))); + recordDelete(whitespaceStart, lineEndPosition + 1 - whitespaceStart); } } } + /** + * @param start The position of the first character in range + * @param end The position of the last character in range + */ + function getTrailingWhitespaceStartPosition(start, end) { + var pos = end; + while (pos >= start && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { + pos--; + } + if (pos !== end) { + return pos + 1; + } + return -1; + } + /** + * Trimming will be done for lines after the previous range + */ + function trimTrailingWhitespacesForRemainingRange() { + var startPosition = previousRange ? previousRange.end : originalRange.pos; + var startLine = sourceFile.getLineAndCharacterOfPosition(startPosition).line; + var endLine = sourceFile.getLineAndCharacterOfPosition(originalRange.end).line; + trimTrailingWhitespacesForLines(startLine, endLine + 1, previousRange); + } function newTextChange(start, len, newText) { return { span: ts.createTextSpan(start, len), newText: newText }; } @@ -43598,8 +44523,8 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return true; } return false; @@ -43607,11 +44532,11 @@ var ts; function getOpenTokenForList(node, list) { switch (node.kind) { case 144 /* Constructor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: if (node.typeParameters === list) { return 25 /* LessThanToken */; } @@ -43619,8 +44544,8 @@ var ts; return 17 /* OpenParenToken */; } break; - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: if (node.typeArguments === list) { return 25 /* LessThanToken */; } @@ -43744,7 +44669,7 @@ var ts; var lineStart = ts.getLineStartPositionForPosition(current_1, sourceFile); return SmartIndenter.findFirstNonWhitespaceColumn(lineStart, current_1, sourceFile, options); } - if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 181 /* BinaryExpression */) { + if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 183 /* BinaryExpression */) { // previous token is comma that separates items in list - find the previous item and try to derive indentation from it var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1 /* Unknown */) { @@ -43758,7 +44683,7 @@ var ts; var currentStart; var indentationDelta; while (current) { - if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0 /* Unknown */)) { + if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current, previous)) { currentStart = getStartLineAndCharacterForNode(current, sourceFile); if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { indentationDelta = 0; @@ -43825,7 +44750,7 @@ var ts; } } // 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; } current = parent; @@ -43863,7 +44788,7 @@ var ts; // - parent is SourceFile - by default immediate children of SourceFile are not indented except when user indents them manually // - parent and child are not on the same line var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 248 /* SourceFile */ || !parentAndChildShareLine); + (parent.kind === 250 /* SourceFile */ || !parentAndChildShareLine); if (!useActualIndentation) { return -1 /* Unknown */; } @@ -43896,7 +44821,7 @@ var ts; return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 196 /* IfStatement */ && parent.elseStatement === child) { + if (parent.kind === 198 /* IfStatement */ && parent.elseStatement === child) { var elseKeyword = ts.findChildOfKind(parent, 80 /* ElseKeyword */, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; @@ -43914,13 +44839,13 @@ var ts; return node.parent.typeArguments; } break; - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return node.parent.properties; - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return node.parent.elements; - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 147 /* CallSignature */: @@ -43935,8 +44860,8 @@ var ts; } break; } - case 169 /* NewExpression */: - case 168 /* CallExpression */: { + case 171 /* NewExpression */: + case 170 /* CallExpression */: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -43966,8 +44891,8 @@ var ts; if (node.kind === 18 /* CloseParenToken */) { return -1 /* Unknown */; } - if (node.parent && (node.parent.kind === 168 /* CallExpression */ || - node.parent.kind === 169 /* NewExpression */) && + if (node.parent && (node.parent.kind === 170 /* CallExpression */ || + node.parent.kind === 171 /* NewExpression */) && node.parent.expression !== node) { var fullCallOrNewExpression = node.parent.expression; var startingExpression = getStartingExpression(fullCallOrNewExpression); @@ -43985,10 +44910,10 @@ var ts; function getStartingExpression(node) { while (true) { switch (node.kind) { - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: node = node.expression; break; default: @@ -44052,34 +44977,35 @@ var ts; SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 195 /* ExpressionStatement */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 164 /* ArrayLiteralExpression */: - case 192 /* Block */: - case 219 /* ModuleBlock */: - case 165 /* ObjectLiteralExpression */: + case 197 /* ExpressionStatement */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 166 /* ArrayLiteralExpression */: + case 194 /* Block */: + case 221 /* ModuleBlock */: + case 167 /* ObjectLiteralExpression */: case 155 /* TypeLiteral */: case 157 /* TupleType */: - case 220 /* CaseBlock */: - case 242 /* DefaultClause */: - case 241 /* CaseClause */: - case 172 /* ParenthesizedExpression */: - case 166 /* PropertyAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 193 /* VariableStatement */: - case 211 /* VariableDeclaration */: - case 227 /* ExportAssignment */: - case 204 /* ReturnStatement */: - case 182 /* ConditionalExpression */: - case 162 /* ArrayBindingPattern */: - case 161 /* ObjectBindingPattern */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: + case 222 /* CaseBlock */: + case 244 /* DefaultClause */: + case 243 /* CaseClause */: + case 174 /* ParenthesizedExpression */: + case 168 /* PropertyAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 195 /* VariableStatement */: + case 213 /* VariableDeclaration */: + case 229 /* ExportAssignment */: + case 206 /* ReturnStatement */: + case 184 /* ConditionalExpression */: + case 164 /* ArrayBindingPattern */: + case 163 /* ObjectBindingPattern */: + case 237 /* JsxOpeningElement */: + case 236 /* JsxSelfClosingElement */: + case 242 /* JsxExpression */: case 142 /* MethodSignature */: case 147 /* CallSignature */: case 148 /* ConstructSignature */: @@ -44087,34 +45013,43 @@ var ts; case 152 /* FunctionType */: case 153 /* ConstructorType */: case 160 /* ParenthesizedType */: - case 170 /* TaggedTemplateExpression */: - case 178 /* AwaitExpression */: + case 172 /* TaggedTemplateExpression */: + case 180 /* AwaitExpression */: + case 227 /* NamedImports */: return true; } return false; } - function shouldIndentChildNode(parent, child) { - if (nodeContentIsAlwaysIndented(parent)) { - return true; - } - switch (parent) { - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 199 /* ForStatement */: - case 196 /* IfStatement */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + /* @internal */ + function nodeWillIndentChild(parent, child, indentByDefault) { + var childKind = child ? child.kind : 0 /* Unknown */; + switch (parent.kind) { + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 201 /* ForStatement */: + case 198 /* IfStatement */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 143 /* MethodDeclaration */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - return child !== 192 /* Block */; - default: - return false; + return childKind !== 194 /* Block */; + case 235 /* JsxElement */: + return childKind !== 239 /* JsxClosingElement */; } + // No explicit rule for given nodes so the result will follow the default value argument + return indentByDefault; + } + SmartIndenter.nodeWillIndentChild = nodeWillIndentChild; + /* + Function returns true when the parent node should indent the given child by an explicit rule + */ + function shouldIndentChildNode(parent, child) { + return nodeContentIsAlwaysIndented(parent.kind) || nodeWillIndentChild(parent, child, false); } SmartIndenter.shouldIndentChildNode = shouldIndentChildNode; })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); @@ -44157,7 +45092,7 @@ var ts; return undefined; }; return StringScriptSnapshot; - })(); + }()); function fromString(text) { return new StringScriptSnapshot(text); } @@ -44256,7 +45191,7 @@ var ts; return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(271 /* SyntaxList */, nodes.pos, nodes.end, 2048 /* Synthetic */, this); + var list = createNode(273 /* SyntaxList */, nodes.pos, nodes.end, 2048 /* Synthetic */, this); list._children = []; var pos = nodes.pos; for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { @@ -44333,7 +45268,7 @@ var ts; return child.kind < 135 /* FirstNode */ ? child : child.getLastToken(sourceFile); }; return NodeObject; - })(); + }()); var SymbolObject = (function () { function SymbolObject(flags, name) { this.flags = flags; @@ -44355,7 +45290,7 @@ var ts; return this.documentationComment; }; return SymbolObject; - })(); + }()); function getJsDocCommentsFromDeclarations(declarations, name, canUseParsedParamTagComments) { var documentationComment = []; var docComments = getJsDocCommentsSeparatedByNewLines(); @@ -44373,7 +45308,7 @@ var ts; // Make sure we are collecting doc comment from declaration once, // In case of union property there might be same declaration multiple times // which only varies in type parameter - // Eg. let a: Array | Array; a.length + // Eg. const a: Array | Array; a.length // The property length will have two declarations of property length coming // from Array - Array and Array if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { @@ -44388,15 +45323,15 @@ var ts; }); } // If this is left side of dotted module declaration, there is no doc comments associated with this node - if (declaration.kind === 218 /* ModuleDeclaration */ && declaration.body.kind === 218 /* ModuleDeclaration */) { + if (declaration.kind === 220 /* ModuleDeclaration */ && declaration.body.kind === 220 /* ModuleDeclaration */) { return; } // If this is dotted module name, get the doc comments from the parent - while (declaration.kind === 218 /* ModuleDeclaration */ && declaration.parent.kind === 218 /* ModuleDeclaration */) { + while (declaration.kind === 220 /* ModuleDeclaration */ && declaration.parent.kind === 220 /* ModuleDeclaration */) { declaration = declaration.parent; } // Get the cleaned js doc comment text from the declaration - ts.forEach(getJsDocCommentTextRange(declaration.kind === 211 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 213 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedJsDocComment) { ts.addRange(jsDocCommentParts, cleanedJsDocComment); @@ -44444,7 +45379,8 @@ var ts; } function pushDocCommentLineText(docComments, text, blankLineCount) { // Add the empty lines in between texts - while (blankLineCount--) { + while (blankLineCount) { + blankLineCount--; docComments.push(ts.textPart("")); } docComments.push(ts.textPart(text)); @@ -44670,7 +45606,7 @@ var ts; : undefined; }; return TypeObject; - })(); + }()); var SignatureObject = (function () { function SignatureObject(checker) { this.checker = checker; @@ -44696,7 +45632,7 @@ var ts; return this.documentationComment; }; return SignatureObject; - })(); + }()); var SourceFileObject = (function (_super) { __extends(SourceFileObject, _super); function SourceFileObject(kind, pos, end) { @@ -44742,7 +45678,7 @@ var ts; } if (declaration.name.kind === 136 /* ComputedPropertyName */) { var expr = declaration.name.expression; - if (expr.kind === 166 /* PropertyAccessExpression */) { + if (expr.kind === 168 /* PropertyAccessExpression */) { return expr.name.text; } return getTextOfIdentifierOrLiteral(expr); @@ -44762,7 +45698,7 @@ var ts; } function visit(node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: var functionDeclaration = node; @@ -44784,31 +45720,31 @@ var ts; ts.forEachChild(node, visit); } break; - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 217 /* EnumDeclaration */: - case 218 /* ModuleDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 230 /* ExportSpecifier */: - case 226 /* ImportSpecifier */: - case 221 /* ImportEqualsDeclaration */: - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 219 /* EnumDeclaration */: + case 220 /* ModuleDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 232 /* ExportSpecifier */: + case 228 /* ImportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 155 /* TypeLiteral */: addDeclaration(node); // fall through case 144 /* Constructor */: - case 193 /* VariableStatement */: - case 212 /* VariableDeclarationList */: - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: - case 219 /* ModuleBlock */: + case 195 /* VariableStatement */: + case 214 /* VariableDeclarationList */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: + case 221 /* ModuleBlock */: ts.forEachChild(node, visit); break; - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } @@ -44819,25 +45755,25 @@ var ts; break; } // fall through - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 247 /* EnumMember */: + case 249 /* EnumMember */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: addDeclaration(node); break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -44849,7 +45785,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 226 /* NamespaceImport */) { addDeclaration(importClause.namedBindings); } else { @@ -44862,12 +45798,12 @@ var ts; } }; return SourceFileObject; - })(NodeObject); + }(NodeObject)); var TextChange = (function () { function TextChange() { } return TextChange; - })(); + }()); ts.TextChange = TextChange; var HighlightSpanKind; (function (HighlightSpanKind) { @@ -44957,7 +45893,7 @@ var ts; // enum E ScriptElementKind.enumElement = "enum"; // Inside module and script only - // let v = .. + // const v = .. ScriptElementKind.variableElement = "var"; // Inside function ScriptElementKind.localVariableElement = "local var"; @@ -45026,7 +45962,7 @@ var ts; ClassificationTypeNames.jsxCloseTagName = "jsx close tag name"; ClassificationTypeNames.jsxSelfClosingTagName = "jsx self closing tag name"; return ClassificationTypeNames; - })(); + }()); ts.ClassificationTypeNames = ClassificationTypeNames; (function (ClassificationType) { ClassificationType[ClassificationType["comment"] = 1] = "comment"; @@ -45065,16 +46001,16 @@ var ts; } return ts.forEach(symbol.declarations, function (declaration) { // Function expressions are local - if (declaration.kind === 173 /* FunctionExpression */) { + if (declaration.kind === 175 /* FunctionExpression */) { return true; } - if (declaration.kind !== 211 /* VariableDeclaration */ && declaration.kind !== 213 /* FunctionDeclaration */) { + if (declaration.kind !== 213 /* VariableDeclaration */ && declaration.kind !== 215 /* FunctionDeclaration */) { return false; } // If the parent is not sourceFile or module block it is local variable for (var parent_8 = declaration.parent; !ts.isFunctionBlock(parent_8); parent_8 = parent_8.parent) { // Reached source file or module block - if (parent_8.kind === 248 /* SourceFile */ || parent_8.kind === 219 /* ModuleBlock */) { + if (parent_8.kind === 250 /* SourceFile */ || parent_8.kind === 221 /* ModuleBlock */) { return false; } } @@ -45157,7 +46093,7 @@ var ts; return file && file.scriptSnapshot; }; return HostCache; - })(); + }()); var SyntaxTreeCache = (function () { function SyntaxTreeCache(host) { this.host = host; @@ -45172,7 +46108,7 @@ var ts; var sourceFile; if (this.currentFileName !== fileName) { // This is a new file, just parse it - sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2 /* Latest */, version, /*setNodeParents:*/ true); + sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2 /* Latest */, version, /*setNodeParents*/ true); } else if (this.currentFileVersion !== version) { // This is the same file, just a newer version. Incrementally parse the file. @@ -45189,7 +46125,7 @@ var ts; return this.currentSourceFile; }; return SyntaxTreeCache; - })(); + }()); function setSourceFileFields(sourceFile, scriptSnapshot, version) { sourceFile.version = version; sourceFile.scriptSnapshot = scriptSnapshot; @@ -45234,7 +46170,7 @@ var ts; sourceMapText = text; } else { - ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: '" + name + "'"); outputText = text; } }, @@ -45244,7 +46180,8 @@ var ts; getCurrentDirectory: function () { return ""; }, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return fileName === inputFileName; }, - readFile: function (fileName) { return ""; } + readFile: function (fileName) { return ""; }, + directoryExists: function (directoryExists) { return true; } }; var program = ts.createProgram([inputFileName], options, compilerHost); var diagnostics; @@ -45326,7 +46263,7 @@ var ts; } } // Otherwise, just create a new source file. - return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, /*setNodeParents:*/ true); + return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, /*setNodeParents*/ true); } ts.updateLanguageServiceSourceFile = updateLanguageServiceSourceFile; function createGetCanonicalFileName(useCaseSensitivefileNames) { @@ -45342,7 +46279,7 @@ var ts; var buckets = {}; var getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames); function getKeyFromCompilationSettings(settings) { - return "_" + settings.target + "|" + settings.module + "|" + settings.noResolve + "|" + settings.jsx; + return "_" + settings.target + "|" + settings.module + "|" + settings.noResolve + "|" + settings.jsx + +"|" + settings.allowJs; } function getBucketForCompilationSettings(settings, createIfMissing) { var key = getKeyFromCompilationSettings(settings); @@ -45353,7 +46290,7 @@ var ts; return bucket; } function reportStats() { - var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === '_'; }).map(function (name) { + var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === "_"; }).map(function (name) { var entries = ts.lookUp(buckets, name); var sourceFiles = []; entries.forEachValue(function (key, entry) { @@ -45369,13 +46306,13 @@ var ts; sourceFiles: sourceFiles }; }); - return JSON.stringify(bucketInfoArray, null, 2); + return JSON.stringify(bucketInfoArray, undefined, 2); } function acquireDocument(fileName, compilationSettings, scriptSnapshot, version) { - return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring:*/ true); + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring*/ true); } function updateDocument(fileName, compilationSettings, scriptSnapshot, version) { - return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring:*/ false); + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring*/ false); } function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) { var bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ true); @@ -45384,7 +46321,7 @@ var ts; if (!entry) { ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?"); // Have never seen this file with these settings. Create a new source file for it. - var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, /*setNodeParents:*/ false); + var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, /*setNodeParents*/ false); entry = { sourceFile: sourceFile, languageServiceRefCount: 0, @@ -45411,7 +46348,7 @@ var ts; return entry.sourceFile; } function releaseDocument(fileName, compilationSettings) { - var bucket = getBucketForCompilationSettings(compilationSettings, false); + var bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ false); ts.Debug.assert(bucket !== undefined); var path = ts.toPath(fileName, currentDirectory, getCanonicalFileName); var entry = bucket.get(path); @@ -45507,7 +46444,7 @@ var ts; } } else if (token === 56 /* EqualsToken */) { - if (tryConsumeRequireCall(/* skipCurrentToken */ true)) { + if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; } } @@ -45599,7 +46536,7 @@ var ts; if (token === 69 /* Identifier */ || ts.isKeyword(token)) { token = scanner.scan(); if (token === 56 /* EqualsToken */) { - if (tryConsumeRequireCall(/* skipCurrentToken */ true)) { + if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; } } @@ -45686,7 +46623,7 @@ var ts; if (tryConsumeDeclare() || tryConsumeImport() || tryConsumeExport() || - (detectJavaScriptImports && (tryConsumeRequireCall(/* skipCurrentToken */ false) || tryConsumeDefine()))) { + (detectJavaScriptImports && (tryConsumeRequireCall(/*skipCurrentToken*/ false) || tryConsumeDefine()))) { continue; } else { @@ -45705,7 +46642,7 @@ var ts; /// Helpers function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 207 /* LabeledStatement */ && referenceNode.label.text === labelName) { + if (referenceNode.kind === 209 /* LabeledStatement */ && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -45714,12 +46651,12 @@ var ts; } function isJumpStatementTarget(node) { return node.kind === 69 /* Identifier */ && - (node.parent.kind === 203 /* BreakStatement */ || node.parent.kind === 202 /* ContinueStatement */) && + (node.parent.kind === 205 /* BreakStatement */ || node.parent.kind === 204 /* ContinueStatement */) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { return node.kind === 69 /* Identifier */ && - node.parent.kind === 207 /* LabeledStatement */ && + node.parent.kind === 209 /* LabeledStatement */ && node.parent.label === node; } /** @@ -45727,7 +46664,7 @@ var ts; * Note: 'node' cannot be a SourceFile. */ function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 207 /* LabeledStatement */; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 209 /* LabeledStatement */; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -45741,22 +46678,22 @@ var ts; return node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.name === node; + return node && node.parent && node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 168 /* CallExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 170 /* CallExpression */ && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 169 /* NewExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 171 /* NewExpression */ && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 218 /* ModuleDeclaration */ && node.parent.name === node; + return node.parent.kind === 220 /* ModuleDeclaration */ && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { return node.kind === 69 /* Identifier */ && @@ -45765,22 +46702,22 @@ var ts; /** Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 } */ function isNameOfPropertyAssignment(node) { return (node.kind === 69 /* Identifier */ || node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) && - (node.parent.kind === 245 /* PropertyAssignment */ || node.parent.kind === 246 /* ShorthandPropertyAssignment */) && node.parent.name === node; + (node.parent.kind === 247 /* PropertyAssignment */ || node.parent.kind === 248 /* ShorthandPropertyAssignment */) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) { switch (node.parent.kind) { case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 245 /* PropertyAssignment */: - case 247 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 249 /* EnumMember */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return node.parent.name === node; - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return node.parent.argumentExpression === node; } } @@ -45854,17 +46791,17 @@ var ts; return undefined; } switch (node.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 218 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 220 /* ModuleDeclaration */: return node; } } @@ -45872,18 +46809,18 @@ var ts; ts.getContainerNode = getContainerNode; /* @internal */ function getNodeKind(node) { switch (node.kind) { - case 218 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; - case 214 /* ClassDeclaration */: return ScriptElementKind.classElement; - case 215 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; - case 216 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; - case 217 /* EnumDeclaration */: return ScriptElementKind.enumElement; - case 211 /* VariableDeclaration */: + case 220 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; + case 216 /* ClassDeclaration */: return ScriptElementKind.classElement; + case 217 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; + case 218 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; + case 219 /* EnumDeclaration */: return ScriptElementKind.enumElement; + case 213 /* VariableDeclaration */: return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 213 /* FunctionDeclaration */: return ScriptElementKind.functionElement; + case 215 /* FunctionDeclaration */: return ScriptElementKind.functionElement; case 145 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement; case 146 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement; case 143 /* MethodDeclaration */: @@ -45897,13 +46834,13 @@ var ts; case 147 /* CallSignature */: return ScriptElementKind.callSignatureElement; case 144 /* Constructor */: return ScriptElementKind.constructorImplementationElement; case 137 /* TypeParameter */: return ScriptElementKind.typeParameterElement; - case 247 /* EnumMember */: return ScriptElementKind.variableElement; + case 249 /* EnumMember */: return ScriptElementKind.variableElement; case 138 /* Parameter */: return (node.flags & 56 /* AccessibilityModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; - case 221 /* ImportEqualsDeclaration */: - case 226 /* ImportSpecifier */: - case 223 /* ImportClause */: - case 230 /* ExportSpecifier */: - case 224 /* NamespaceImport */: + case 223 /* ImportEqualsDeclaration */: + case 228 /* ImportSpecifier */: + case 225 /* ImportClause */: + case 232 /* ExportSpecifier */: + case 226 /* NamespaceImport */: return ScriptElementKind.alias; } return ScriptElementKind.unknown; @@ -45922,7 +46859,7 @@ var ts; } }; return CancellationTokenObject; - })(); + }()); function createLanguageService(host, documentRegistry) { if (documentRegistry === void 0) { documentRegistry = createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames(), host.getCurrentDirectory()); } var syntaxTreeCache = new SyntaxTreeCache(host); @@ -45985,7 +46922,8 @@ var ts; (oldSettings.target !== newSettings.target || oldSettings.module !== newSettings.module || oldSettings.noResolve !== newSettings.noResolve || - oldSettings.jsx !== newSettings.jsx); + oldSettings.jsx !== newSettings.jsx || + oldSettings.allowJs !== newSettings.allowJs); // Now create a new compiler var compilerHost = { getSourceFile: getOrCreateSourceFile, @@ -46005,6 +46943,10 @@ var ts; // stub missing host functionality var entry = hostCache.getOrCreateEntry(fileName); return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); + }, + directoryExists: function (directoryName) { + ts.Debug.assert(!host.resolveModuleNames); + return ts.directoryProbablyExists(directoryName, host); } }; if (host.resolveModuleNames) { @@ -46074,8 +47016,11 @@ var ts; return documentRegistry.acquireDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); } function sourceFileUpToDate(sourceFile) { + if (!sourceFile) { + return false; + } var path = sourceFile.path || ts.toPath(sourceFile.fileName, currentDirectory, getCanonicalFileName); - return sourceFile && sourceFile.version === hostCache.getVersion(path); + return sourceFile.version === hostCache.getVersion(path); } function programUpToDate() { // If we haven't create a program yet, then it is not up-to-date @@ -46124,12 +47069,6 @@ var ts; function getSemanticDiagnostics(fileName) { synchronizeHostData(); var targetSourceFile = getValidSourceFile(fileName); - // 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 (ts.isSourceFileJavaScript(targetSourceFile)) { - return getJavaScriptSemanticDiagnostics(targetSourceFile); - } // Only perform the action per file regardless of '-out' flag as LanguageServiceHost is expected to call this function per file. // Therefore only get diagnostics for given file. var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile, cancellationToken); @@ -46140,151 +47079,6 @@ var ts; var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile, cancellationToken); return ts.concatenate(semanticDiagnostics, declarationDiagnostics); } - function getJavaScriptSemanticDiagnostics(sourceFile) { - var diagnostics = []; - walk(sourceFile); - return diagnostics; - function walk(node) { - if (!node) { - return false; - } - switch (node.kind) { - case 221 /* ImportEqualsDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); - return true; - case 227 /* ExportAssignment */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); - return true; - case 214 /* ClassDeclaration */: - var classDeclaration = node; - if (checkModifiers(classDeclaration.modifiers) || - checkTypeParameters(classDeclaration.typeParameters)) { - return true; - } - break; - case 243 /* HeritageClause */: - var heritageClause = node; - if (heritageClause.token === 106 /* ImplementsKeyword */) { - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 215 /* InterfaceDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 218 /* ModuleDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 216 /* TypeAliasDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); - return true; - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - case 144 /* Constructor */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: - case 213 /* FunctionDeclaration */: - var functionDeclaration = node; - if (checkModifiers(functionDeclaration.modifiers) || - checkTypeParameters(functionDeclaration.typeParameters) || - checkTypeAnnotation(functionDeclaration.type)) { - return true; - } - break; - case 193 /* VariableStatement */: - var variableStatement = node; - if (checkModifiers(variableStatement.modifiers)) { - return true; - } - break; - case 211 /* VariableDeclaration */: - var variableDeclaration = node; - if (checkTypeAnnotation(variableDeclaration.type)) { - return true; - } - break; - case 168 /* CallExpression */: - case 169 /* NewExpression */: - var expression = node; - if (expression.typeArguments && expression.typeArguments.length > 0) { - var start = expression.typeArguments.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, expression.typeArguments.end - start, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 138 /* Parameter */: - var parameter = node; - if (parameter.modifiers) { - var start = parameter.modifiers.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, parameter.modifiers.end - start, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); - return true; - } - if (parameter.questionToken) { - diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, '?')); - return true; - } - if (parameter.type) { - diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 141 /* PropertyDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 217 /* EnumDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 171 /* TypeAssertionExpression */: - var typeAssertionExpression = node; - diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); - return true; - case 139 /* Decorator */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); - return true; - } - return ts.forEachChild(node, walk); - } - function checkTypeParameters(typeParameters) { - if (typeParameters) { - var start = typeParameters.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, typeParameters.end - start, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); - return true; - } - return false; - } - function checkTypeAnnotation(type) { - if (type) { - diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); - return true; - } - return false; - } - function checkModifiers(modifiers) { - if (modifiers) { - for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { - var modifier = modifiers_1[_i]; - switch (modifier.kind) { - case 112 /* PublicKeyword */: - case 110 /* PrivateKeyword */: - case 111 /* ProtectedKeyword */: - case 122 /* DeclareKeyword */: - diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); - return true; - // These are all legal modifiers. - case 113 /* StaticKeyword */: - case 82 /* ExportKeyword */: - case 74 /* ConstKeyword */: - case 77 /* DefaultKeyword */: - case 115 /* AbstractKeyword */: - } - } - } - return false; - } - } function getCompilerOptionsDiagnostics() { synchronizeHostData(); return program.getOptionsDiagnostics(cancellationToken).concat(program.getGlobalDiagnostics(cancellationToken)); @@ -46301,7 +47095,7 @@ var ts; // First check of the displayName is not external module; if it is an external module, it is not valid entry if ((symbol.flags & 1536 /* Namespace */) && (firstCharCode === 39 /* singleQuote */ || firstCharCode === 34 /* doubleQuote */)) { // If the symbol is external module, don't show it in the completion list - // (i.e declare module "http" { let x; } | // <= request completion here, "http" should not be there) + // (i.e declare module "http" { const x; } | // <= request completion here, "http" should not be there) return undefined; } } @@ -46324,20 +47118,14 @@ var ts; // e.g "b a" is valid quoted name but when we strip off the quotes, it is invalid. // We, thus, need to check if whatever was inside the quotes is actually a valid identifier name. if (performCharacterChecks) { - if (!ts.isIdentifierStart(name.charCodeAt(0), target)) { + if (!ts.isIdentifier(name, target)) { return undefined; } - for (var i = 1, n = name.length; i < n; i++) { - if (!ts.isIdentifierPart(name.charCodeAt(i), target)) { - return undefined; - } - } } return name; } function getCompletionData(fileName, position) { var typeChecker = program.getTypeChecker(); - var syntacticStart = new Date().getTime(); var sourceFile = getValidSourceFile(fileName); var isJavaScriptFile = ts.isSourceFileJavaScript(sourceFile); var isJsDocTagName = false; @@ -46349,7 +47137,7 @@ var ts; var insideComment = isInsideComment(sourceFile, currentToken, position); log("getCompletionData: Is inside comment: " + (new Date().getTime() - start)); if (insideComment) { - // The current position is next to the '@' sign, when no tag name being provided yet. + // The current position is next to the '@' sign, when no tag name being provided yet. // Provide a full list of tag names if (ts.hasDocComment(sourceFile, position) && sourceFile.text.charCodeAt(position - 1) === 64 /* at */) { isJsDocTagName = true; @@ -46364,9 +47152,9 @@ var ts; isJsDocTagName = true; } switch (tag.kind) { - case 269 /* JSDocTypeTag */: - case 267 /* JSDocParameterTag */: - case 268 /* JSDocReturnTag */: + case 271 /* JSDocTypeTag */: + case 269 /* JSDocParameterTag */: + case 270 /* JSDocReturnTag */: var tagWithExpression = tag; if (tagWithExpression.typeExpression) { insideJsDocTagExpression = tagWithExpression.typeExpression.pos < position && position < tagWithExpression.typeExpression.end; @@ -46378,7 +47166,7 @@ var ts; return { symbols: undefined, isMemberCompletion: false, isNewIdentifierLocation: false, location: undefined, isRightOfDot: false, isJsDocTagName: isJsDocTagName }; } if (!insideJsDocTagExpression) { - // Proceed if the current position is in jsDoc tag expression; otherwise it is a normal + // Proceed if the current position is in jsDoc tag expression; otherwise it is a normal // comment or the plain text part of a jsDoc comment, so no completion should be available log("Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment."); return undefined; @@ -46393,9 +47181,9 @@ var ts; // Check if the caret is at the end of an identifier; this is a partial identifier that we want to complete: e.g. a.toS| // Skip this partial identifier and adjust the contextToken to the token that precedes it. if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { - var start_3 = new Date().getTime(); + var start_6 = new Date().getTime(); contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); - log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_3)); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_6)); } // Find the node where completion is requested on. // Also determine whether we are trying to complete with members of that node @@ -46413,7 +47201,7 @@ var ts; } var parent_9 = contextToken.parent, kind = contextToken.kind; if (kind === 21 /* DotToken */) { - if (parent_9.kind === 166 /* PropertyAccessExpression */) { + if (parent_9.kind === 168 /* PropertyAccessExpression */) { node = contextToken.parent.expression; isRightOfDot = true; } @@ -46432,7 +47220,7 @@ var ts; isRightOfOpenTag = true; location = contextToken; } - else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 237 /* JsxClosingElement */) { + else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 239 /* JsxClosingElement */) { isStartingCloseTag = true; } } @@ -46475,7 +47263,7 @@ var ts; // Right of dot member completion list isMemberCompletion = true; isNewIdentifierLocation = false; - if (node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 166 /* PropertyAccessExpression */) { + if (node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 168 /* PropertyAccessExpression */) { var symbol = typeChecker.getSymbolAtLocation(node); // This is an alias, follow what it aliases if (symbol && symbol.flags & 8388608 /* Alias */) { @@ -46531,7 +47319,7 @@ var ts; } if (jsxContainer = tryGetContainingJsxElement(contextToken)) { var attrsType; - if ((jsxContainer.kind === 234 /* JsxSelfClosingElement */) || (jsxContainer.kind === 235 /* JsxOpeningElement */)) { + if ((jsxContainer.kind === 236 /* JsxSelfClosingElement */) || (jsxContainer.kind === 237 /* JsxOpeningElement */)) { // Cursor is inside a JSX self-closing element or opening element attrsType = typeChecker.getJsxElementAttributesType(jsxContainer); if (attrsType) { @@ -46603,15 +47391,15 @@ var ts; return result; } function isInJsxText(contextToken) { - if (contextToken.kind === 236 /* JsxText */) { + if (contextToken.kind === 238 /* JsxText */) { return true; } if (contextToken.kind === 27 /* GreaterThanToken */ && contextToken.parent) { - if (contextToken.parent.kind === 235 /* JsxOpeningElement */) { + if (contextToken.parent.kind === 237 /* JsxOpeningElement */) { return true; } - if (contextToken.parent.kind === 237 /* JsxClosingElement */ || contextToken.parent.kind === 234 /* JsxSelfClosingElement */) { - return contextToken.parent.parent && contextToken.parent.parent.kind === 233 /* JsxElement */; + if (contextToken.parent.kind === 239 /* JsxClosingElement */ || contextToken.parent.kind === 236 /* JsxSelfClosingElement */) { + return contextToken.parent.parent && contextToken.parent.parent.kind === 235 /* JsxElement */; } } return false; @@ -46621,36 +47409,36 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 168 /* CallExpression */ // func( a, | + return containingNodeKind === 170 /* CallExpression */ // func( a, | || containingNodeKind === 144 /* Constructor */ // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ - || containingNodeKind === 169 /* NewExpression */ // new C(a, | - || containingNodeKind === 164 /* ArrayLiteralExpression */ // [a, | - || containingNodeKind === 181 /* BinaryExpression */ // let x = (a, | + || containingNodeKind === 171 /* NewExpression */ // new C(a, | + || containingNodeKind === 166 /* ArrayLiteralExpression */ // [a, | + || containingNodeKind === 183 /* BinaryExpression */ // const x = (a, | || containingNodeKind === 152 /* FunctionType */; // var x: (s: string, list| case 17 /* OpenParenToken */: - return containingNodeKind === 168 /* CallExpression */ // func( | + return containingNodeKind === 170 /* CallExpression */ // func( | || containingNodeKind === 144 /* Constructor */ // constructor( | - || containingNodeKind === 169 /* NewExpression */ // new C(a| - || containingNodeKind === 172 /* ParenthesizedExpression */ // let x = (a| + || containingNodeKind === 171 /* NewExpression */ // new C(a| + || containingNodeKind === 174 /* ParenthesizedExpression */ // const x = (a| || containingNodeKind === 160 /* ParenthesizedType */; // function F(pred: (a| /* this can become an arrow function, where 'a' is the argument */ case 19 /* OpenBracketToken */: - return containingNodeKind === 164 /* ArrayLiteralExpression */ // [ | + return containingNodeKind === 166 /* ArrayLiteralExpression */ // [ | || containingNodeKind === 149 /* IndexSignature */ // [ | : string ] || containingNodeKind === 136 /* ComputedPropertyName */; // [ | /* this can become an index signature */ case 125 /* ModuleKeyword */: // module | case 126 /* NamespaceKeyword */: return true; case 21 /* DotToken */: - return containingNodeKind === 218 /* ModuleDeclaration */; // module A.| + return containingNodeKind === 220 /* ModuleDeclaration */; // module A.| case 15 /* OpenBraceToken */: - return containingNodeKind === 214 /* ClassDeclaration */; // class A{ | + return containingNodeKind === 216 /* ClassDeclaration */; // class A{ | case 56 /* EqualsToken */: - return containingNodeKind === 211 /* VariableDeclaration */ // let x = a| - || containingNodeKind === 181 /* BinaryExpression */; // x = a| + return containingNodeKind === 213 /* VariableDeclaration */ // const x = a| + || containingNodeKind === 183 /* BinaryExpression */; // x = a| case 12 /* TemplateHead */: - return containingNodeKind === 183 /* TemplateExpression */; // `aa ${| + return containingNodeKind === 185 /* TemplateExpression */; // `aa ${| case 13 /* TemplateMiddle */: - return containingNodeKind === 190 /* TemplateSpan */; // `aa ${10} dd ${| + return containingNodeKind === 192 /* TemplateSpan */; // `aa ${10} dd ${| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: @@ -46668,15 +47456,16 @@ var ts; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken) { if (contextToken.kind === 9 /* StringLiteral */ + || contextToken.kind === 162 /* StringLiteralType */ || contextToken.kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(contextToken.kind)) { - var start_4 = contextToken.getStart(); + var start_7 = contextToken.getStart(); var end = contextToken.getEnd(); // To be "in" one of these literals, the position has to be: // 1. entirely within the token text. // 2. at the end position of an unterminated token. // 3. at the end of a regular expression (due to trailing flags like '/foo/g'). - if (start_4 < position && position < end) { + if (start_7 < position && position < end) { return true; } if (position === end) { @@ -46697,14 +47486,14 @@ var ts; isMemberCompletion = true; var typeForObject; var existingMembers; - if (objectLikeContainer.kind === 165 /* ObjectLiteralExpression */) { + if (objectLikeContainer.kind === 167 /* ObjectLiteralExpression */) { // We are completing on contextual types, but may also include properties // other than those within the declared type. isNewIdentifierLocation = true; typeForObject = typeChecker.getContextualType(objectLikeContainer); existingMembers = objectLikeContainer.properties; } - else if (objectLikeContainer.kind === 161 /* ObjectBindingPattern */) { + else if (objectLikeContainer.kind === 163 /* ObjectBindingPattern */) { // We are *only* completing on properties from the type being destructured. isNewIdentifierLocation = false; var rootDeclaration = ts.getRootDeclaration(objectLikeContainer.parent); @@ -46750,9 +47539,9 @@ var ts; * @returns true if 'symbols' was successfully populated; false otherwise. */ function tryGetImportOrExportClauseCompletionSymbols(namedImportsOrExports) { - var declarationKind = namedImportsOrExports.kind === 225 /* NamedImports */ ? - 222 /* ImportDeclaration */ : - 228 /* ExportDeclaration */; + var declarationKind = namedImportsOrExports.kind === 227 /* NamedImports */ ? + 224 /* ImportDeclaration */ : + 230 /* ExportDeclaration */; var importOrExportDeclaration = ts.getAncestor(namedImportsOrExports, declarationKind); var moduleSpecifier = importOrExportDeclaration.moduleSpecifier; if (!moduleSpecifier) { @@ -46775,10 +47564,10 @@ var ts; function tryGetObjectLikeCompletionContainer(contextToken) { if (contextToken) { switch (contextToken.kind) { - case 15 /* OpenBraceToken */: // let x = { | + case 15 /* OpenBraceToken */: // const x = { | case 24 /* CommaToken */: var parent_10 = contextToken.parent; - if (parent_10 && (parent_10.kind === 165 /* ObjectLiteralExpression */ || parent_10.kind === 161 /* ObjectBindingPattern */)) { + if (parent_10 && (parent_10.kind === 167 /* ObjectLiteralExpression */ || parent_10.kind === 163 /* ObjectBindingPattern */)) { return parent_10; } break; @@ -46796,8 +47585,8 @@ var ts; case 15 /* OpenBraceToken */: // import { | case 24 /* CommaToken */: switch (contextToken.parent.kind) { - case 225 /* NamedImports */: - case 229 /* NamedExports */: + case 227 /* NamedImports */: + case 231 /* NamedExports */: return contextToken.parent; } } @@ -46811,12 +47600,12 @@ var ts; case 26 /* LessThanSlashToken */: case 39 /* SlashToken */: case 69 /* Identifier */: - case 238 /* JsxAttribute */: - case 239 /* JsxSpreadAttribute */: - if (parent_11 && (parent_11.kind === 234 /* JsxSelfClosingElement */ || parent_11.kind === 235 /* JsxOpeningElement */)) { + case 240 /* JsxAttribute */: + case 241 /* JsxSpreadAttribute */: + if (parent_11 && (parent_11.kind === 236 /* JsxSelfClosingElement */ || parent_11.kind === 237 /* JsxOpeningElement */)) { return parent_11; } - else if (parent_11.kind === 238 /* JsxAttribute */) { + else if (parent_11.kind === 240 /* JsxAttribute */) { return parent_11.parent; } break; @@ -46824,18 +47613,18 @@ var ts; // its parent is a JsxExpression, whose parent is a JsxAttribute, // whose parent is a JsxOpeningLikeElement case 9 /* StringLiteral */: - if (parent_11 && ((parent_11.kind === 238 /* JsxAttribute */) || (parent_11.kind === 239 /* JsxSpreadAttribute */))) { + if (parent_11 && ((parent_11.kind === 240 /* JsxAttribute */) || (parent_11.kind === 241 /* JsxSpreadAttribute */))) { return parent_11.parent; } break; case 16 /* CloseBraceToken */: if (parent_11 && - parent_11.kind === 240 /* JsxExpression */ && + parent_11.kind === 242 /* JsxExpression */ && parent_11.parent && - (parent_11.parent.kind === 238 /* JsxAttribute */)) { + (parent_11.parent.kind === 240 /* JsxAttribute */)) { return parent_11.parent.parent; } - if (parent_11 && parent_11.kind === 239 /* JsxSpreadAttribute */) { + if (parent_11 && parent_11.kind === 241 /* JsxSpreadAttribute */) { return parent_11.parent; } break; @@ -46845,9 +47634,9 @@ var ts; } function isFunction(kind) { switch (kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 213 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: @@ -46866,54 +47655,54 @@ var ts; var containingNodeKind = contextToken.parent.kind; switch (contextToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 211 /* VariableDeclaration */ || - containingNodeKind === 212 /* VariableDeclarationList */ || - containingNodeKind === 193 /* VariableStatement */ || - containingNodeKind === 217 /* EnumDeclaration */ || + return containingNodeKind === 213 /* VariableDeclaration */ || + containingNodeKind === 214 /* VariableDeclarationList */ || + containingNodeKind === 195 /* VariableStatement */ || + containingNodeKind === 219 /* EnumDeclaration */ || isFunction(containingNodeKind) || - containingNodeKind === 214 /* ClassDeclaration */ || - containingNodeKind === 186 /* ClassExpression */ || - containingNodeKind === 215 /* InterfaceDeclaration */ || - containingNodeKind === 162 /* ArrayBindingPattern */ || - containingNodeKind === 216 /* TypeAliasDeclaration */; // type Map, K, | + containingNodeKind === 216 /* ClassDeclaration */ || + containingNodeKind === 188 /* ClassExpression */ || + containingNodeKind === 217 /* InterfaceDeclaration */ || + containingNodeKind === 164 /* ArrayBindingPattern */ || + containingNodeKind === 218 /* TypeAliasDeclaration */; // type Map, K, | case 21 /* DotToken */: - return containingNodeKind === 162 /* ArrayBindingPattern */; // var [.| + return containingNodeKind === 164 /* ArrayBindingPattern */; // var [.| case 54 /* ColonToken */: - return containingNodeKind === 163 /* BindingElement */; // var {x :html| + return containingNodeKind === 165 /* BindingElement */; // var {x :html| case 19 /* OpenBracketToken */: - return containingNodeKind === 162 /* ArrayBindingPattern */; // var [x| + return containingNodeKind === 164 /* ArrayBindingPattern */; // var [x| case 17 /* OpenParenToken */: - return containingNodeKind === 244 /* CatchClause */ || + return containingNodeKind === 246 /* CatchClause */ || isFunction(containingNodeKind); case 15 /* OpenBraceToken */: - return containingNodeKind === 217 /* EnumDeclaration */ || - containingNodeKind === 215 /* InterfaceDeclaration */ || - containingNodeKind === 155 /* TypeLiteral */; // let x : { | + return containingNodeKind === 219 /* EnumDeclaration */ || + containingNodeKind === 217 /* InterfaceDeclaration */ || + containingNodeKind === 155 /* TypeLiteral */; // const x : { | case 23 /* SemicolonToken */: return containingNodeKind === 140 /* PropertySignature */ && contextToken.parent && contextToken.parent.parent && - (contextToken.parent.parent.kind === 215 /* InterfaceDeclaration */ || - contextToken.parent.parent.kind === 155 /* TypeLiteral */); // let x : { a; | + (contextToken.parent.parent.kind === 217 /* InterfaceDeclaration */ || + contextToken.parent.parent.kind === 155 /* TypeLiteral */); // const x : { a; | case 25 /* LessThanToken */: - return containingNodeKind === 214 /* ClassDeclaration */ || - containingNodeKind === 186 /* ClassExpression */ || - containingNodeKind === 215 /* InterfaceDeclaration */ || - containingNodeKind === 216 /* TypeAliasDeclaration */ || + return containingNodeKind === 216 /* ClassDeclaration */ || + containingNodeKind === 188 /* ClassExpression */ || + containingNodeKind === 217 /* InterfaceDeclaration */ || + containingNodeKind === 218 /* TypeAliasDeclaration */ || isFunction(containingNodeKind); case 113 /* StaticKeyword */: return containingNodeKind === 141 /* PropertyDeclaration */; case 22 /* DotDotDotToken */: return containingNodeKind === 138 /* Parameter */ || (contextToken.parent && contextToken.parent.parent && - contextToken.parent.parent.kind === 162 /* ArrayBindingPattern */); // var [...z| + contextToken.parent.parent.kind === 164 /* ArrayBindingPattern */); // var [...z| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: return containingNodeKind === 138 /* Parameter */; case 116 /* AsKeyword */: - return containingNodeKind === 226 /* ImportSpecifier */ || - containingNodeKind === 230 /* ExportSpecifier */ || - containingNodeKind === 224 /* NamespaceImport */; + return containingNodeKind === 228 /* ImportSpecifier */ || + containingNodeKind === 232 /* ExportSpecifier */ || + containingNodeKind === 226 /* NamespaceImport */; case 73 /* ClassKeyword */: case 81 /* EnumKeyword */: case 107 /* InterfaceKeyword */: @@ -46973,8 +47762,8 @@ var ts; if (element.getStart() <= position && position <= element.getEnd()) { continue; } - var name_35 = element.propertyName || element.name; - exisingImportsOrExports[name_35.text] = true; + var name_31 = element.propertyName || element.name; + exisingImportsOrExports[name_31.text] = true; } if (ts.isEmpty(exisingImportsOrExports)) { return exportsOfModule; @@ -46995,9 +47784,10 @@ var ts; for (var _i = 0, existingMembers_1 = existingMembers; _i < existingMembers_1.length; _i++) { var m = existingMembers_1[_i]; // Ignore omitted expressions for missing members - if (m.kind !== 245 /* PropertyAssignment */ && - m.kind !== 246 /* ShorthandPropertyAssignment */ && - m.kind !== 163 /* BindingElement */) { + if (m.kind !== 247 /* PropertyAssignment */ && + m.kind !== 248 /* ShorthandPropertyAssignment */ && + m.kind !== 165 /* BindingElement */ && + m.kind !== 143 /* MethodDeclaration */) { continue; } // If this is the current item we are editing right now, do not filter it out @@ -47005,7 +47795,7 @@ var ts; continue; } var existingName = void 0; - if (m.kind === 163 /* BindingElement */ && m.propertyName) { + if (m.kind === 165 /* BindingElement */ && m.propertyName) { // include only identifiers in completion list if (m.propertyName.kind === 69 /* Identifier */) { existingName = m.propertyName.text; @@ -47035,7 +47825,7 @@ var ts; if (attr.getStart() <= position && position <= attr.getEnd()) { continue; } - if (attr.kind === 238 /* JsxAttribute */) { + if (attr.kind === 240 /* JsxAttribute */) { seenNames[attr.name.text] = true; } } @@ -47074,10 +47864,10 @@ var ts; var entries = []; var target = program.getCompilerOptions().target; var nameTable = getNameTable(sourceFile); - for (var name_36 in nameTable) { - if (!uniqueNames[name_36]) { - uniqueNames[name_36] = name_36; - var displayName = getCompletionEntryDisplayName(name_36, target, /*performCharacterChecks:*/ true); + for (var name_32 in nameTable) { + if (!uniqueNames[name_32]) { + uniqueNames[name_32] = name_32; + var displayName = getCompletionEntryDisplayName(name_32, target, /*performCharacterChecks*/ true); if (displayName) { var entry = { name: displayName, @@ -47105,7 +47895,7 @@ var ts; // Try to get a valid display name for this symbol, if we could not find one, then ignore it. // We would like to only show things that can be added after a dot, so for instance numeric properties can // not be accessed with a dot (a.1 <- invalid) - var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true, location); + var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks*/ true, location); if (!displayName) { return undefined; } @@ -47154,7 +47944,7 @@ var ts; // We don't need to perform character checks here because we're only comparing the // name against 'entryName' (which is known to be good), not building a new // completion entry. - var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks:*/ false, location_2) === entryName ? s : undefined; }); + var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks*/ false, location_2) === entryName ? s : undefined; }); if (symbol) { var _a = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, location_2, 7 /* All */), displayParts = _a.displayParts, documentation = _a.documentation, symbolKind = _a.symbolKind; return { @@ -47183,7 +47973,7 @@ var ts; function getSymbolKind(symbol, location) { var flags = symbol.getFlags(); if (flags & 32 /* Class */) - return ts.getDeclarationOfKind(symbol, 186 /* ClassExpression */) ? + return ts.getDeclarationOfKind(symbol, 188 /* ClassExpression */) ? ScriptElementKind.localClassElement : ScriptElementKind.classElement; if (flags & 384 /* Enum */) return ScriptElementKind.enumElement; @@ -47248,7 +48038,7 @@ var ts; }); if (!unionPropertyKind) { // If this was union of all methods, - //make sure it has call signatures before we can label it as method + // make sure it has call signatures before we can label it as method var typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (typeOfUnionProperty.getCallSignatures().length) { return ScriptElementKind.memberFunctionElement; @@ -47285,7 +48075,7 @@ var ts; var signature; type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 166 /* PropertyAccessExpression */) { + if (location.parent && location.parent.kind === 168 /* PropertyAccessExpression */) { var right = location.parent.name; // Either the location is on the right of a property access, or on the left and the right is missing if (right === location || (right && right.getFullWidth() === 0)) { @@ -47294,7 +48084,7 @@ var ts; } // try get the call/construct signature from the type if it matches var callExpression; - if (location.kind === 168 /* CallExpression */ || location.kind === 169 /* NewExpression */) { + if (location.kind === 170 /* CallExpression */ || location.kind === 171 /* NewExpression */) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -47307,7 +48097,7 @@ var ts; // Use the first candidate: signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 169 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; + var useConstructSignatures = callExpression.kind === 171 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target) && !ts.contains(allSignatures, signature)) { // Get the first signature if there is one -- allSignatures may contain @@ -47341,16 +48131,16 @@ var ts; case ScriptElementKind.parameterElement: case ScriptElementKind.localVariableElement: // If it is call or construct signature of lambda's write type name - displayParts.push(ts.punctuationPart(ts.SyntaxKind.ColonToken)); + displayParts.push(ts.punctuationPart(54 /* ColonToken */)); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(ts.SyntaxKind.NewKeyword)); + displayParts.push(ts.keywordPart(92 /* NewKeyword */)); displayParts.push(ts.spacePart()); } - if (!(type.flags & ts.TypeFlags.Anonymous)) { - ts.addRange(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, /*meaning*/ undefined, ts.SymbolFormatFlags.WriteTypeParametersOrArguments)); + if (!(type.flags & 65536 /* Anonymous */)) { + ts.addRange(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, /*meaning*/ undefined, 1 /* WriteTypeParametersOrArguments */)); } - addSignatureDisplayParts(signature, allSignatures, ts.TypeFormatFlags.WriteArrowStyleSignature); + addSignatureDisplayParts(signature, allSignatures, 8 /* WriteArrowStyleSignature */); break; default: // Just signature @@ -47386,7 +48176,7 @@ var ts; } } if (symbolFlags & 32 /* Class */ && !hasAddedSymbolInfo) { - if (ts.getDeclarationOfKind(symbol, 186 /* ClassExpression */)) { + if (ts.getDeclarationOfKind(symbol, 188 /* ClassExpression */)) { // Special case for class expressions because we would like to indicate that // the class name is local to the class body (similar to function expression) // (local class) class @@ -47430,7 +48220,7 @@ var ts; } if (symbolFlags & 1536 /* Module */) { addNewLineIfDisplayPartsExist(); - var declaration = ts.getDeclarationOfKind(symbol, 218 /* ModuleDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 220 /* ModuleDeclaration */); var isNamespace = declaration && declaration.name && declaration.name.kind === 69 /* Identifier */; displayParts.push(ts.keywordPart(isNamespace ? 126 /* NamespaceKeyword */ : 125 /* ModuleKeyword */)); displayParts.push(ts.spacePart()); @@ -47453,35 +48243,37 @@ var ts; } else { // Method/function type parameter - var container = ts.getContainingFunction(location); - if (container) { - var signatureDeclaration = ts.getDeclarationOfKind(symbol, 137 /* TypeParameter */).parent; - var signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration); - if (signatureDeclaration.kind === 148 /* ConstructSignature */) { - displayParts.push(ts.keywordPart(92 /* NewKeyword */)); + var declaration = ts.getDeclarationOfKind(symbol, 137 /* TypeParameter */); + ts.Debug.assert(declaration !== undefined); + declaration = declaration.parent; + if (declaration) { + if (ts.isFunctionLikeKind(declaration.kind)) { + var signature = typeChecker.getSignatureFromDeclaration(declaration); + if (declaration.kind === 148 /* ConstructSignature */) { + displayParts.push(ts.keywordPart(92 /* NewKeyword */)); + displayParts.push(ts.spacePart()); + } + else if (declaration.kind !== 147 /* CallSignature */ && declaration.name) { + addFullSymbolName(declaration.symbol); + } + ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */)); + } + else { + // Type alias type parameter + // For example + // type list = T[]; // Both T will go through same code path + displayParts.push(ts.keywordPart(132 /* TypeKeyword */)); displayParts.push(ts.spacePart()); + addFullSymbolName(declaration.symbol); + writeTypeParametersOfSymbol(declaration.symbol, sourceFile); } - else if (signatureDeclaration.kind !== 147 /* CallSignature */ && signatureDeclaration.name) { - addFullSymbolName(signatureDeclaration.symbol); - } - ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */)); - } - else { - // Type aliash type parameter - // For example - // type list = T[]; // Both T will go through same code path - var declaration = ts.getDeclarationOfKind(symbol, 137 /* TypeParameter */).parent; - displayParts.push(ts.keywordPart(132 /* TypeKeyword */)); - displayParts.push(ts.spacePart()); - addFullSymbolName(declaration.symbol); - writeTypeParametersOfSymbol(declaration.symbol, sourceFile); } } } if (symbolFlags & 8 /* EnumMember */) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 247 /* EnumMember */) { + if (declaration.kind === 249 /* EnumMember */) { var constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); @@ -47497,7 +48289,7 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 221 /* ImportEqualsDeclaration */) { + if (declaration.kind === 223 /* ImportEqualsDeclaration */) { var importEqualsDeclaration = declaration; if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); @@ -47630,9 +48422,10 @@ var ts; // Try getting just type at this position and show switch (node.kind) { case 69 /* Identifier */: - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 135 /* QualifiedName */: case 97 /* ThisKeyword */: + case 161 /* ThisType */: case 95 /* SuperKeyword */: // For the identifiers/this/super etc get the type at position var type = typeChecker.getTypeAtLocation(node); @@ -47712,7 +48505,7 @@ var ts; var definition; ts.forEach(signatureDeclarations, function (d) { if ((selectConstructors && d.kind === 144 /* Constructor */) || - (!selectConstructors && (d.kind === 213 /* FunctionDeclaration */ || d.kind === 143 /* MethodDeclaration */ || d.kind === 142 /* MethodSignature */))) { + (!selectConstructors && (d.kind === 215 /* FunctionDeclaration */ || d.kind === 143 /* MethodDeclaration */ || d.kind === 142 /* MethodSignature */))) { declarations.push(d); if (d.body) definition = d; @@ -47781,7 +48574,7 @@ var ts; // go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition // is performed at the location of property access, we would like to go to definition of the property in the short-hand // assignment. This case and others are handled by the following code. - if (node.parent.kind === 246 /* ShorthandPropertyAssignment */) { + if (node.parent.kind === 248 /* ShorthandPropertyAssignment */) { var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; @@ -47857,10 +48650,11 @@ var ts; function getSemanticDocumentHighlights(node) { if (node.kind === 69 /* Identifier */ || node.kind === 97 /* ThisKeyword */ || + node.kind === 161 /* ThisType */ || node.kind === 95 /* SuperKeyword */ || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { - var referencedSymbols = getReferencedSymbolsForNode(node, sourceFilesToSearch, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = getReferencedSymbolsForNode(node, sourceFilesToSearch, /*findInStrings*/ false, /*findInComments*/ false); return convertReferencedSymbols(referencedSymbols); } return undefined; @@ -47910,58 +48704,58 @@ var ts; switch (node.kind) { case 88 /* IfKeyword */: case 80 /* ElseKeyword */: - if (hasKind(node.parent, 196 /* IfStatement */)) { + if (hasKind(node.parent, 198 /* IfStatement */)) { return getIfElseOccurrences(node.parent); } break; case 94 /* ReturnKeyword */: - if (hasKind(node.parent, 204 /* ReturnStatement */)) { + if (hasKind(node.parent, 206 /* ReturnStatement */)) { return getReturnOccurrences(node.parent); } break; case 98 /* ThrowKeyword */: - if (hasKind(node.parent, 208 /* ThrowStatement */)) { + if (hasKind(node.parent, 210 /* ThrowStatement */)) { return getThrowOccurrences(node.parent); } break; case 72 /* CatchKeyword */: - if (hasKind(parent(parent(node)), 209 /* TryStatement */)) { + if (hasKind(parent(parent(node)), 211 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; case 100 /* TryKeyword */: case 85 /* FinallyKeyword */: - if (hasKind(parent(node), 209 /* TryStatement */)) { + if (hasKind(parent(node), 211 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent); } break; case 96 /* SwitchKeyword */: - if (hasKind(node.parent, 206 /* SwitchStatement */)) { + if (hasKind(node.parent, 208 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; case 71 /* CaseKeyword */: case 77 /* DefaultKeyword */: - if (hasKind(parent(parent(parent(node))), 206 /* SwitchStatement */)) { + if (hasKind(parent(parent(parent(node))), 208 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case 70 /* BreakKeyword */: case 75 /* ContinueKeyword */: - if (hasKind(node.parent, 203 /* BreakStatement */) || hasKind(node.parent, 202 /* ContinueStatement */)) { + if (hasKind(node.parent, 205 /* BreakStatement */) || hasKind(node.parent, 204 /* ContinueStatement */)) { return getBreakOrContinueStatementOccurrences(node.parent); } break; case 86 /* ForKeyword */: - if (hasKind(node.parent, 199 /* ForStatement */) || - hasKind(node.parent, 200 /* ForInStatement */) || - hasKind(node.parent, 201 /* ForOfStatement */)) { + if (hasKind(node.parent, 201 /* ForStatement */) || + hasKind(node.parent, 202 /* ForInStatement */) || + hasKind(node.parent, 203 /* ForOfStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 104 /* WhileKeyword */: case 79 /* DoKeyword */: - if (hasKind(node.parent, 198 /* WhileStatement */) || hasKind(node.parent, 197 /* DoStatement */)) { + if (hasKind(node.parent, 200 /* WhileStatement */) || hasKind(node.parent, 199 /* DoStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; @@ -47977,8 +48771,8 @@ var ts; } break; default: - if (ts.isModifier(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 193 /* VariableStatement */)) { + if (ts.isModifierKind(node.kind) && node.parent && + (ts.isDeclaration(node.parent) || node.parent.kind === 195 /* VariableStatement */)) { return getModifierOccurrences(node.kind, node.parent); } } @@ -47994,10 +48788,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 208 /* ThrowStatement */) { + if (node.kind === 210 /* ThrowStatement */) { statementAccumulator.push(node); } - else if (node.kind === 209 /* TryStatement */) { + else if (node.kind === 211 /* TryStatement */) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -48025,12 +48819,12 @@ var ts; var child = throwStatement; while (child.parent) { var parent_12 = child.parent; - if (ts.isFunctionBlock(parent_12) || parent_12.kind === 248 /* SourceFile */) { + if (ts.isFunctionBlock(parent_12) || parent_12.kind === 250 /* SourceFile */) { return parent_12; } // A throw-statement is only owned by a try-statement if the try-statement has // a catch clause, and if the throw-statement occurs within the try block. - if (parent_12.kind === 209 /* TryStatement */) { + if (parent_12.kind === 211 /* TryStatement */) { var tryStatement = parent_12; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; @@ -48045,7 +48839,7 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 203 /* BreakStatement */ || node.kind === 202 /* ContinueStatement */) { + if (node.kind === 205 /* BreakStatement */ || node.kind === 204 /* ContinueStatement */) { statementAccumulator.push(node); } else if (!ts.isFunctionLike(node)) { @@ -48060,16 +48854,16 @@ var ts; function getBreakOrContinueOwner(statement) { for (var node_2 = statement.parent; node_2; node_2 = node_2.parent) { switch (node_2.kind) { - case 206 /* SwitchStatement */: - if (statement.kind === 202 /* ContinueStatement */) { + case 208 /* SwitchStatement */: + if (statement.kind === 204 /* ContinueStatement */) { continue; } // Fall through. - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 198 /* WhileStatement */: - case 197 /* DoStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 200 /* WhileStatement */: + case 199 /* DoStatement */: if (!statement.label || isLabeledBy(node_2, statement.label.text)) { return node_2; } @@ -48088,24 +48882,24 @@ var ts; var container = declaration.parent; // Make sure we only highlight the keyword when it makes sense to do so. if (ts.isAccessibilityModifier(modifier)) { - if (!(container.kind === 214 /* ClassDeclaration */ || - container.kind === 186 /* ClassExpression */ || + if (!(container.kind === 216 /* ClassDeclaration */ || + container.kind === 188 /* ClassExpression */ || (declaration.kind === 138 /* Parameter */ && hasKind(container, 144 /* Constructor */)))) { return undefined; } } else if (modifier === 113 /* StaticKeyword */) { - if (!(container.kind === 214 /* ClassDeclaration */ || container.kind === 186 /* ClassExpression */)) { + if (!(container.kind === 216 /* ClassDeclaration */ || container.kind === 188 /* ClassExpression */)) { return undefined; } } else if (modifier === 82 /* ExportKeyword */ || modifier === 122 /* DeclareKeyword */) { - if (!(container.kind === 219 /* ModuleBlock */ || container.kind === 248 /* SourceFile */)) { + if (!(container.kind === 221 /* ModuleBlock */ || container.kind === 250 /* SourceFile */)) { return undefined; } } else if (modifier === 115 /* AbstractKeyword */) { - if (!(container.kind === 214 /* ClassDeclaration */ || declaration.kind === 214 /* ClassDeclaration */)) { + if (!(container.kind === 216 /* ClassDeclaration */ || declaration.kind === 216 /* ClassDeclaration */)) { return undefined; } } @@ -48117,8 +48911,8 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 219 /* ModuleBlock */: - case 248 /* SourceFile */: + case 221 /* ModuleBlock */: + case 250 /* SourceFile */: // Container is either a class declaration or the declaration is a classDeclaration if (modifierFlag & 128 /* Abstract */) { nodes = declaration.members.concat(declaration); @@ -48130,8 +48924,8 @@ var ts; case 144 /* Constructor */: nodes = container.parameters.concat(container.parent.members); break; - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: nodes = container.members; // If we're an accessibility modifier, we're in an instance member and should search // the constructor's parameter list for instance members as well. @@ -48214,7 +49008,7 @@ var ts; var keywords = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), 86 /* ForKeyword */, 104 /* WhileKeyword */, 79 /* DoKeyword */)) { // If we succeeded and got a do-while loop, then start looking for a 'while' keyword. - if (loopNode.kind === 197 /* DoStatement */) { + if (loopNode.kind === 199 /* DoStatement */) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], 104 /* WhileKeyword */)) { @@ -48235,13 +49029,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: return getLoopBreakContinueOccurrences(owner); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return getSwitchCaseDefaultOccurrences(owner); } } @@ -48295,7 +49089,7 @@ var ts; function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); // If we didn't find a containing function with a block body, bail out. - if (!(func && hasKind(func.body, 192 /* Block */))) { + if (!(func && hasKind(func.body, 194 /* Block */))) { return undefined; } var keywords = []; @@ -48311,7 +49105,7 @@ var ts; function getIfElseOccurrences(ifStatement) { var keywords = []; // Traverse upwards through all parent if-statements linked by their else-branches. - while (hasKind(ifStatement.parent, 196 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 198 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } // Now traverse back down through the else branches, aggregating if/else keywords of if-statements. @@ -48324,7 +49118,7 @@ var ts; break; } } - if (!hasKind(ifStatement.elseStatement, 196 /* IfStatement */)) { + if (!hasKind(ifStatement.elseStatement, 198 /* IfStatement */)) { break; } ifStatement = ifStatement.elseStatement; @@ -48400,11 +49194,11 @@ var ts; return convertReferences(referencedSymbols); } function getReferencesAtPosition(fileName, position) { - var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings*/ false, /*findInComments*/ false); return convertReferences(referencedSymbols); } function findReferences(fileName, position) { - var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings*/ false, /*findInComments*/ false); // Only include referenced symbols that have a valid definition. return ts.filter(referencedSymbols, function (rs) { return !!rs.definition; }); } @@ -48417,8 +49211,8 @@ var ts; } if (node.kind !== 69 /* Identifier */ && // TODO (drosen): This should be enabled in a later release - currently breaks rename. - //node.kind !== SyntaxKind.ThisKeyword && - //node.kind !== SyntaxKind.SuperKeyword && + // node.kind !== SyntaxKind.ThisKeyword && + // node.kind !== SyntaxKind.SuperKeyword && !isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && !isNameOfExternalModuleImportOrDeclaration(node)) { return undefined; @@ -48441,7 +49235,7 @@ var ts; return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 97 /* ThisKeyword */) { + if (node.kind === 97 /* ThisKeyword */ || node.kind === 161 /* ThisType */) { return getReferencesForThisKeyword(node, sourceFiles); } if (node.kind === 95 /* SuperKeyword */) { @@ -48475,8 +49269,8 @@ var ts; } else { var internedName = getInternedName(symbol, node, declarations); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; cancellationToken.throwIfCancellationRequested(); var nameTable = getNameTable(sourceFile); if (ts.lookUp(nameTable, internedName)) { @@ -48504,7 +49298,7 @@ var ts; } function isImportOrExportSpecifierImportSymbol(symbol) { return (symbol.flags & 8388608 /* Alias */) && ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 226 /* ImportSpecifier */ || declaration.kind === 230 /* ExportSpecifier */; + return declaration.kind === 228 /* ImportSpecifier */ || declaration.kind === 232 /* ExportSpecifier */; }); } function getInternedName(symbol, location, declarations) { @@ -48531,14 +49325,14 @@ var ts; // If this is the symbol of a named function expression or named class expression, // then named references are limited to its own scope. var valueDeclaration = symbol.valueDeclaration; - if (valueDeclaration && (valueDeclaration.kind === 173 /* FunctionExpression */ || valueDeclaration.kind === 186 /* ClassExpression */)) { + if (valueDeclaration && (valueDeclaration.kind === 175 /* FunctionExpression */ || valueDeclaration.kind === 188 /* ClassExpression */)) { return valueDeclaration; } // If this is private property or method, the scope is the containing class if (symbol.flags & (4 /* Property */ | 8192 /* Method */)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 16 /* Private */) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 214 /* ClassDeclaration */); + return ts.getAncestor(privateDeclaration, 216 /* ClassDeclaration */); } } // If the symbol is an import we would like to find it if we are looking for what it imports. @@ -48551,7 +49345,7 @@ var ts; if (symbol.parent || (symbol.flags & 268435456 /* SyntheticProperty */)) { return undefined; } - var scope = undefined; + var scope; var declarations = symbol.getDeclarations(); if (declarations) { for (var _i = 0, declarations_8 = declarations; _i < declarations_8.length; _i++) { @@ -48564,7 +49358,7 @@ var ts; // Different declarations have different containers, bail out return undefined; } - if (container.kind === 248 /* SourceFile */ && !ts.isExternalModule(container)) { + if (container.kind === 250 /* SourceFile */ && !ts.isExternalModule(container)) { // This is a global variable and not an external module, any declaration defined // within this scope is visible outside the file return undefined; @@ -48730,7 +49524,7 @@ var ts; } } function getReferencesForSuperKeyword(superKeyword) { - var searchSpaceNode = ts.getSuperContainer(superKeyword, /*includeFunctions*/ false); + var searchSpaceNode = ts.getSuperContainer(superKeyword, /*stopOnFunctions*/ false); if (!searchSpaceNode) { return undefined; } @@ -48759,7 +49553,7 @@ var ts; if (!node || node.kind !== 95 /* SuperKeyword */) { return; } - var container = ts.getSuperContainer(node, /*includeFunctions*/ false); + var container = ts.getSuperContainer(node, /*stopOnFunctions*/ false); // If we have a 'super' container, we must have an enclosing class. // Now make sure the owning class is the same as the search-space // and has the same static qualifier as the original 'super's owner. @@ -48789,13 +49583,13 @@ var ts; staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; // re-assign to be the owning class break; - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } // Fall through - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: break; // Computed properties in classes are not handled here because references to this are illegal, // so there is no point finding references to them. @@ -48804,7 +49598,7 @@ var ts; } var references = []; var possiblePositions; - if (searchSpaceNode.kind === 248 /* SourceFile */) { + if (searchSpaceNode.kind === 250 /* SourceFile */) { ts.forEach(sourceFiles, function (sourceFile) { possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); @@ -48830,13 +49624,13 @@ var ts; ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 97 /* ThisKeyword */) { + if (!node || (node.kind !== 97 /* ThisKeyword */ && node.kind !== 161 /* ThisType */)) { return; } var container = ts.getThisContainer(node, /* includeArrowFunctions */ false); switch (searchSpaceNode.kind) { - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } @@ -48847,16 +49641,16 @@ var ts; result.push(getReferenceEntryFromNode(node)); } break; - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: // Make sure the container belongs to the same class // and has the appropriate static modifier from the original container. if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 64 /* Static */) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 248 /* SourceFile */: - if (container.kind === 248 /* SourceFile */ && !ts.isExternalModule(container)) { + case 250 /* SourceFile */: + if (container.kind === 250 /* SourceFile */ && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -48883,8 +49677,8 @@ var ts; * property name and variable declaration of the identifier. * Like in below example, when querying for all references for an identifier 'name', of the property assignment, the language service * should show both 'name' in 'obj' and 'name' in variable declaration - * let name = "Foo"; - * let obj = { name }; + * const name = "Foo"; + * const obj = { name }; * In order to do that, we will populate the search set with the value symbol of the identifier as a value of the property assignment * so that when matching with potential reference symbol, both symbols from property declaration and variable declaration * will be included correctly. @@ -48894,6 +49688,14 @@ var ts; result.push(shorthandValueSymbol); } } + // If the symbol.valueDeclaration is a property parameter declaration, + // we should include both parameter declaration symbol and property declaration symbol + // Parameter Declaration symbol is only visible within function scope, so the symbol is stored in contructor.locals. + // Property Declaration symbol is a member of the class, so the symbol is stored in its class Declaration.symbol.members + if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 138 /* Parameter */ && + ts.isParameterPropertyDeclaration(symbol.valueDeclaration)) { + result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); + } // If this is a union property, add all the symbols from all its source symbols in all unioned types. // If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) { @@ -48910,11 +49712,11 @@ var ts; function getPropertySymbolsFromBaseTypes(symbol, propertyName, result) { if (symbol && symbol.flags & (32 /* Class */ | 64 /* Interface */)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 214 /* ClassDeclaration */) { + if (declaration.kind === 216 /* ClassDeclaration */) { getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 215 /* InterfaceDeclaration */) { + else if (declaration.kind === 217 /* InterfaceDeclaration */) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -48975,19 +49777,19 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeChecker.getContextualType(objectLiteral); - var name_37 = node.text; + var name_33 = node.text; if (contextualType) { if (contextualType.flags & 16384 /* Union */) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name_37); + var unionProperty = contextualType.getProperty(name_33); if (unionProperty) { return [unionProperty]; } else { var result_4 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_37); + var symbol = t.getProperty(name_33); if (symbol) { result_4.push(symbol); } @@ -48996,7 +49798,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_37); + var symbol_1 = contextualType.getProperty(name_33); if (symbol_1) { return [symbol_1]; } @@ -49054,10 +49856,10 @@ var ts; } var parent = node.parent; if (parent) { - if (parent.kind === 180 /* PostfixUnaryExpression */ || parent.kind === 179 /* PrefixUnaryExpression */) { + if (parent.kind === 182 /* PostfixUnaryExpression */ || parent.kind === 181 /* PrefixUnaryExpression */) { return true; } - else if (parent.kind === 181 /* BinaryExpression */ && parent.left === node) { + else if (parent.kind === 183 /* BinaryExpression */ && parent.left === node) { var operator = parent.operatorToken.kind; return 56 /* FirstAssignment */ <= operator && operator <= 68 /* LastAssignment */; } @@ -49069,9 +49871,6 @@ var ts; synchronizeHostData(); return ts.NavigateTo.getNavigateToItems(program, cancellationToken, searchValue, maxResultCount); } - function containErrors(diagnostics) { - return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === ts.DiagnosticCategory.Error; }); - } function getEmitOutput(fileName) { synchronizeHostData(); var sourceFile = getValidSourceFile(fileName); @@ -49092,32 +49891,32 @@ var ts; function getMeaningFromDeclaration(node) { switch (node.kind) { case 138 /* Parameter */: - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 245 /* PropertyAssignment */: - case 246 /* ShorthandPropertyAssignment */: - case 247 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: + case 249 /* EnumMember */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 244 /* CatchClause */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 246 /* CatchClause */: return 1 /* Value */; case 137 /* TypeParameter */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: case 155 /* TypeLiteral */: return 2 /* Type */; - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: return 1 /* Value */ | 2 /* Type */; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (node.name.kind === 9 /* StringLiteral */) { return 4 /* Namespace */ | 1 /* Value */; } @@ -49127,15 +49926,15 @@ var ts; else { return 4 /* Namespace */; } - case 225 /* NamedImports */: - case 226 /* ImportSpecifier */: - case 221 /* ImportEqualsDeclaration */: - case 222 /* ImportDeclaration */: - case 227 /* ExportAssignment */: - case 228 /* ExportDeclaration */: + case 227 /* NamedImports */: + case 228 /* ImportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 224 /* ImportDeclaration */: + case 229 /* ExportAssignment */: + case 230 /* ExportDeclaration */: return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; // An external module can be a Value - case 248 /* SourceFile */: + case 250 /* SourceFile */: return 4 /* Namespace */ | 1 /* Value */; } return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; @@ -49145,8 +49944,9 @@ var ts; node = node.parent; } return node.parent.kind === 151 /* TypeReference */ || - (node.parent.kind === 188 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || - node.kind === 97 /* ThisKeyword */ && !ts.isExpression(node); + (node.parent.kind === 190 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + (node.kind === 97 /* ThisKeyword */ && !ts.isExpression(node)) || + node.kind === 161 /* ThisType */; } function isNamespaceReference(node) { return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); @@ -49154,16 +49954,16 @@ var ts; function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 166 /* PropertyAccessExpression */) { - while (root.parent && root.parent.kind === 166 /* PropertyAccessExpression */) { + if (root.parent.kind === 168 /* PropertyAccessExpression */) { + while (root.parent && root.parent.kind === 168 /* PropertyAccessExpression */) { root = root.parent; } isLastClause = root.name === node; } - if (!isLastClause && root.parent.kind === 188 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 243 /* HeritageClause */) { + if (!isLastClause && root.parent.kind === 190 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 245 /* HeritageClause */) { var decl = root.parent.parent.parent; - return (decl.kind === 214 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || - (decl.kind === 215 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); + return (decl.kind === 216 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || + (decl.kind === 217 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); } return false; } @@ -49191,13 +49991,13 @@ var ts; // import a = |b.c|.d; // Namespace if (node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node && - node.parent.parent.kind === 221 /* ImportEqualsDeclaration */) { + node.parent.parent.kind === 223 /* ImportEqualsDeclaration */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } return 4 /* Namespace */; } function getMeaningFromLocation(node) { - if (node.parent.kind === 227 /* ExportAssignment */) { + if (node.parent.kind === 229 /* ExportAssignment */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } else if (isInRightSideOfImport(node)) { @@ -49237,14 +50037,16 @@ var ts; return; } switch (node.kind) { - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 135 /* QualifiedName */: case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: case 84 /* FalseKeyword */: case 99 /* TrueKeyword */: case 93 /* NullKeyword */: case 95 /* SuperKeyword */: case 97 /* ThisKeyword */: + case 161 /* ThisType */: case 69 /* Identifier */: break; // Cant create the text span @@ -49261,7 +50063,7 @@ var ts; // If this is name of a module declarations, check if this is right side of dotted module name // If parent of the module declaration which is parent of this node is module declaration and its body is the module declaration that this node is name of // Then this name is name from dotted module - if (nodeForStartPos.parent.parent.kind === 218 /* ModuleDeclaration */ && + if (nodeForStartPos.parent.parent.kind === 220 /* ModuleDeclaration */ && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { // Use parent module declarations name for start pos nodeForStartPos = nodeForStartPos.parent.parent.name; @@ -49285,7 +50087,7 @@ var ts; } function getNavigationBarItems(fileName) { var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); - return ts.NavigationBar.getNavigationBarItems(sourceFile); + return ts.NavigationBar.getNavigationBarItems(sourceFile, host.getCompilationSettings()); } function getSemanticClassifications(fileName, span) { return convertClassifications(getEncodedSemanticClassifications(fileName, span)); @@ -49302,10 +50104,10 @@ var ts; // That means we're calling back into the host around every 1.2k of the file we process. // Lib.d.ts has similar numbers. switch (kind) { - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } @@ -49359,7 +50161,7 @@ var ts; */ function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 218 /* ModuleDeclaration */ && + return declaration.kind === 220 /* ModuleDeclaration */ && ts.getModuleInstanceState(declaration) === 1 /* Instantiated */; }); } @@ -49433,8 +50235,8 @@ var ts; var spanStart = span.start; var spanLength = span.length; // Make a scanner we can get trivia from. - var triviaScanner = ts.createScanner(2 /* Latest */, /*skipTrivia:*/ false, sourceFile.languageVariant, sourceFile.text); - var mergeConflictScanner = ts.createScanner(2 /* Latest */, /*skipTrivia:*/ false, sourceFile.languageVariant, sourceFile.text); + var triviaScanner = ts.createScanner(2 /* Latest */, /*skipTrivia*/ false, sourceFile.languageVariant, sourceFile.text); + var mergeConflictScanner = ts.createScanner(2 /* Latest */, /*skipTrivia*/ false, sourceFile.languageVariant, sourceFile.text); var result = []; processElement(sourceFile); return { spans: result, endOfLineState: 0 /* None */ }; @@ -49517,16 +50319,16 @@ var ts; pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, 18 /* docCommentTagName */); pos = tag.tagName.end; switch (tag.kind) { - case 267 /* JSDocParameterTag */: + case 269 /* JSDocParameterTag */: processJSDocParameterTag(tag); break; - case 270 /* JSDocTemplateTag */: + case 272 /* JSDocTemplateTag */: processJSDocTemplateTag(tag); break; - case 269 /* JSDocTypeTag */: + case 271 /* JSDocTypeTag */: processElement(tag.typeExpression); break; - case 268 /* JSDocReturnTag */: + case 270 /* JSDocReturnTag */: processElement(tag.typeExpression); break; } @@ -49617,16 +50419,16 @@ var ts; if (token) { if (tokenKind === 56 /* EqualsToken */) { // the '=' in a variable declaration is special cased here. - if (token.parent.kind === 211 /* VariableDeclaration */ || + if (token.parent.kind === 213 /* VariableDeclaration */ || token.parent.kind === 141 /* PropertyDeclaration */ || token.parent.kind === 138 /* Parameter */) { return 5 /* operator */; } } - if (token.parent.kind === 181 /* BinaryExpression */ || - token.parent.kind === 179 /* PrefixUnaryExpression */ || - token.parent.kind === 180 /* PostfixUnaryExpression */ || - token.parent.kind === 182 /* ConditionalExpression */) { + if (token.parent.kind === 183 /* BinaryExpression */ || + token.parent.kind === 181 /* PrefixUnaryExpression */ || + token.parent.kind === 182 /* PostfixUnaryExpression */ || + token.parent.kind === 184 /* ConditionalExpression */) { return 5 /* operator */; } } @@ -49635,7 +50437,7 @@ var ts; else if (tokenKind === 8 /* NumericLiteral */) { return 4 /* numericLiteral */; } - else if (tokenKind === 9 /* StringLiteral */) { + else if (tokenKind === 9 /* StringLiteral */ || tokenKind === 162 /* StringLiteralType */) { return 6 /* stringLiteral */; } else if (tokenKind === 10 /* RegularExpressionLiteral */) { @@ -49649,7 +50451,7 @@ var ts; else if (tokenKind === 69 /* Identifier */) { if (token) { switch (token.parent.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: if (token.parent.name === token) { return 11 /* className */; } @@ -49659,17 +50461,17 @@ var ts; return 15 /* typeParameterName */; } return; - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: if (token.parent.name === token) { return 13 /* interfaceName */; } return; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: if (token.parent.name === token) { return 12 /* enumName */; } return; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (token.parent.name === token) { return 14 /* moduleName */; } @@ -49679,17 +50481,17 @@ var ts; return 17 /* parameterName */; } return; - case 235 /* JsxOpeningElement */: + case 237 /* JsxOpeningElement */: if (token.parent.tagName === token) { return 19 /* jsxOpenTagName */; } return; - case 237 /* JsxClosingElement */: + case 239 /* JsxClosingElement */: if (token.parent.tagName === token) { return 20 /* jsxCloseTagName */; } return; - case 234 /* JsxSelfClosingElement */: + case 236 /* JsxSelfClosingElement */: if (token.parent.tagName === token) { return 21 /* jsxSelfClosingTagName */; } @@ -49818,7 +50620,6 @@ var ts; * be performed. */ function getDocCommentTemplateAtPosition(fileName, position) { - var start = new Date().getTime(); var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); // Check if in a context where we don't want to perform any insertion if (ts.isInString(sourceFile, position) || ts.isInComment(sourceFile, position) || ts.hasDocComment(sourceFile, position)) { @@ -49837,19 +50638,19 @@ var ts; var commentOwner; findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { switch (commentOwner.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 144 /* Constructor */: - case 214 /* ClassDeclaration */: - case 193 /* VariableStatement */: + case 216 /* ClassDeclaration */: + case 195 /* VariableStatement */: break findOwner; - case 248 /* SourceFile */: + case 250 /* SourceFile */: return undefined; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // If in walking up the tree, we hit a a nested namespace declaration, // then we must be somewhere within a dotted namespace name; however we don't // want to give back a JSDoc template for the 'b' or 'c' in 'namespace a.b.c { }'. - if (commentOwner.parent.kind === 218 /* ModuleDeclaration */) { + if (commentOwner.parent.kind === 220 /* ModuleDeclaration */) { return undefined; } break findOwner; @@ -49891,7 +50692,7 @@ var ts; if (ts.isFunctionLike(commentOwner)) { return commentOwner.parameters; } - if (commentOwner.kind === 193 /* VariableStatement */) { + if (commentOwner.kind === 195 /* VariableStatement */) { var varStatement = commentOwner; var varDeclarations = varStatement.declarationList.declarations; if (varDeclarations.length === 1 && varDeclarations[0].initializer) { @@ -49909,14 +50710,14 @@ var ts; * @returns the parameters of a signature found on the RHS if one exists; otherwise 'emptyArray'. */ function getParametersFromRightHandSideOfAssignment(rightHandSide) { - while (rightHandSide.kind === 172 /* ParenthesizedExpression */) { + while (rightHandSide.kind === 174 /* ParenthesizedExpression */) { rightHandSide = rightHandSide.expression; } switch (rightHandSide.kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return rightHandSide.parameters; - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: for (var _i = 0, _a = rightHandSide.members; _i < _a.length; _i++) { var member = _a[_i]; if (member.kind === 144 /* Constructor */) { @@ -50065,12 +50866,17 @@ var ts; if (declarations && declarations.length > 0) { // Disallow rename for elements that are defined in the standard TypeScript library. var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); + var canonicalDefaultLibName = getCanonicalFileName(ts.normalizePath(defaultLibFileName)); if (defaultLibFileName) { for (var _i = 0, declarations_10 = declarations; _i < declarations_10.length; _i++) { var current = declarations_10[_i]; var sourceFile_2 = current.getSourceFile(); + // TODO (drosen): When is there no source file? + if (!sourceFile_2) { + continue; + } var canonicalName = getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)); - if (sourceFile_2 && getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { + if (canonicalName === canonicalDefaultLibName) { return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library)); } } @@ -50080,10 +50886,10 @@ var ts; if (kind) { return { canRename: true, - localizedErrorMessage: undefined, - displayName: displayName, - fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kind: kind, + displayName: displayName, + localizedErrorMessage: undefined, + fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kindModifiers: getSymbolModifiers(symbol), triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth()) }; @@ -50168,7 +50974,7 @@ var ts; // then we want 'something' to be in the name table. Similarly, if we have // "a['propname']" then we want to store "propname" in the name table. if (ts.isDeclarationName(node) || - node.parent.kind === 232 /* ExternalModuleReference */ || + node.parent.kind === 234 /* ExternalModuleReference */ || isArgumentOfElementAccessExpression(node)) { nameTable[node.text] = node.text; } @@ -50181,7 +50987,7 @@ var ts; function isArgumentOfElementAccessExpression(node) { return node && node.parent && - node.parent.kind === 167 /* ElementAccessExpression */ && + node.parent.kind === 169 /* ElementAccessExpression */ && node.parent.argumentExpression === node; } /// Classifier @@ -50310,7 +51116,7 @@ var ts; // (and a newline). That way when we lex we'll think we're still in a multiline comment. switch (lexState) { case 3 /* InDoubleQuoteStringLiteral */: - text = '"\\\n' + text; + text = "\"\\\n" + text; offset = 3; break; case 2 /* InSingleQuoteStringLiteral */: @@ -50440,7 +51246,7 @@ var ts; var end = scanner.getTextPos(); addResult(start, end, classFromKind(token)); if (end >= text.length) { - if (token === 9 /* StringLiteral */) { + if (token === 9 /* StringLiteral */ || token === 162 /* StringLiteralType */) { // Check to see if we finished up on a multiline string literal. var tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { @@ -50579,6 +51385,7 @@ var ts; case 8 /* NumericLiteral */: return 4 /* numericLiteral */; case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: return 6 /* stringLiteral */; case 10 /* RegularExpressionLiteral */: return 7 /* regularExpressionLiteral */; @@ -50645,7 +51452,7 @@ var ts; } var tokenAtLocation = ts.getTokenAtPosition(sourceFile, position); var lineOfPosition = sourceFile.getLineAndCharacterOfPosition(position).line; - if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart()).line > lineOfPosition) { + if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart(sourceFile)).line > lineOfPosition) { // Get previous token if the token is returned starts on new line // eg: let x =10; |--- cursor is here // let y = 10; @@ -50664,14 +51471,20 @@ var ts; // Get the span in the node based on its syntax return spanInNode(tokenAtLocation); function textSpan(startNode, endNode) { - return ts.createTextSpanFromBounds(startNode.getStart(), (endNode || startNode).getEnd()); + var start = startNode.decorators ? + ts.skipTrivia(sourceFile.text, startNode.decorators.end) : + startNode.getStart(sourceFile); + return ts.createTextSpanFromBounds(start, (endNode || startNode).getEnd()); } function spanInNodeIfStartsOnSameLine(node, otherwiseOnNode) { - if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart()).line) { + if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line) { return spanInNode(node); } return spanInNode(otherwiseOnNode); } + function spanInNodeArray(nodeArray) { + return ts.createTextSpanFromBounds(ts.skipTrivia(sourceFile.text, nodeArray.pos), nodeArray.end); + } function spanInPreviousNode(node) { return spanInNode(ts.findPrecedingToken(node.pos, sourceFile)); } @@ -50681,125 +51494,131 @@ var ts; function spanInNode(node) { if (node) { if (ts.isExpression(node)) { - if (node.parent.kind === 197 /* DoStatement */) { + if (node.parent.kind === 199 /* DoStatement */) { // Set span as if on while keyword return spanInPreviousNode(node); } - if (node.parent.kind === 199 /* ForStatement */) { + if (node.parent.kind === 139 /* Decorator */) { + // Set breakpoint on the decorator emit + return spanInNode(node.parent); + } + if (node.parent.kind === 201 /* ForStatement */) { // For now lets set the span on this expression, fix it later return textSpan(node); } - if (node.parent.kind === 181 /* BinaryExpression */ && node.parent.operatorToken.kind === 24 /* CommaToken */) { + if (node.parent.kind === 183 /* BinaryExpression */ && node.parent.operatorToken.kind === 24 /* CommaToken */) { // if this is comma expression, the breakpoint is possible in this expression return textSpan(node); } - if (node.parent.kind === 174 /* ArrowFunction */ && node.parent.body === node) { + if (node.parent.kind === 176 /* ArrowFunction */ && node.parent.body === node) { // If this is body of arrow function, it is allowed to have the breakpoint return textSpan(node); } } switch (node.kind) { - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: // Span on first variable declaration return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return spanInVariableDeclaration(node); case 138 /* Parameter */: return spanInParameterDeclaration(node); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 144 /* Constructor */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return spanInFunctionDeclaration(node); - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } // Fall through - case 219 /* ModuleBlock */: + case 221 /* ModuleBlock */: return spanInBlock(node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return spanInBlock(node.block); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: // span on the expression return textSpan(node.expression); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: // span on return keyword and expression if present return textSpan(node.getChildAt(0), node.expression); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: // Span on while(...) return textSpan(node, ts.findNextToken(node.expression, node)); - case 197 /* DoStatement */: + case 199 /* DoStatement */: // span in statement of the do statement return spanInNode(node.statement); - case 210 /* DebuggerStatement */: + case 212 /* DebuggerStatement */: // span on debugger keyword return textSpan(node.getChildAt(0)); - case 196 /* IfStatement */: + case 198 /* IfStatement */: // set on if(..) span return textSpan(node, ts.findNextToken(node.expression, node)); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: // span in statement return spanInNode(node.statement); - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: // On break or continue keyword and label if present return textSpan(node.getChildAt(0), node.label); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return spanInForStatement(node); - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: // span on for (a in ...) return textSpan(node, ts.findNextToken(node.expression, node)); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: // span on switch(...) return textSpan(node, ts.findNextToken(node.expression, node)); - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: // span in first statement of the clause return spanInNode(node.statements[0]); - case 209 /* TryStatement */: + case 211 /* TryStatement */: // span in try block return spanInBlock(node.tryBlock); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: // span in throw ... return textSpan(node, node.expression); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: // span on export = id return textSpan(node, node.expression); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleReference); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // span on complete module if it is instantiated if (ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return undefined; } - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 249 /* EnumMember */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: // span on complete node return textSpan(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: // span in statement return spanInNode(node.statement); + case 139 /* Decorator */: + return spanInNodeArray(node.parent.decorators); // No breakpoint in interface, type alias - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: return undefined; // Tokens: case 23 /* SemicolonToken */: @@ -50829,11 +51648,11 @@ var ts; return spanInNextNode(node); default: // If this is name of property assignment, set breakpoint in the initializer - if (node.parent.kind === 245 /* PropertyAssignment */ && node.parent.name === node) { + if (node.parent.kind === 247 /* PropertyAssignment */ && node.parent.name === node) { return spanInNode(node.parent.initializer); } // Breakpoint in type assertion goes to its operand - if (node.parent.kind === 171 /* TypeAssertionExpression */ && node.parent.type === node) { + if (node.parent.kind === 173 /* TypeAssertionExpression */ && node.parent.type === node) { return spanInNode(node.parent.expression); } // return type of function go to previous token @@ -50846,12 +51665,12 @@ var ts; } function spanInVariableDeclaration(variableDeclaration) { // If declaration of for in statement, just set the span in parent - if (variableDeclaration.parent.parent.kind === 200 /* ForInStatement */ || - variableDeclaration.parent.parent.kind === 201 /* ForOfStatement */) { + if (variableDeclaration.parent.parent.kind === 202 /* ForInStatement */ || + variableDeclaration.parent.parent.kind === 203 /* ForOfStatement */) { return spanInNode(variableDeclaration.parent.parent); } - var isParentVariableStatement = variableDeclaration.parent.parent.kind === 193 /* VariableStatement */; - var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 199 /* ForStatement */ && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); + var isParentVariableStatement = variableDeclaration.parent.parent.kind === 195 /* VariableStatement */; + var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 201 /* ForStatement */ && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); var declarations = isParentVariableStatement ? variableDeclaration.parent.parent.declarationList.declarations : isDeclarationOfForStatement @@ -50905,7 +51724,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 2 /* Export */) || - (functionDeclaration.parent.kind === 214 /* ClassDeclaration */ && functionDeclaration.kind !== 144 /* Constructor */); + (functionDeclaration.parent.kind === 216 /* ClassDeclaration */ && functionDeclaration.kind !== 144 /* Constructor */); } function spanInFunctionDeclaration(functionDeclaration) { // No breakpoints in the function signature @@ -50928,18 +51747,18 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (ts.getModuleInstanceState(block.parent) !== 1 /* Instantiated */) { return undefined; } // Set on parent if on same line otherwise on first statement - case 198 /* WhileStatement */: - case 196 /* IfStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 200 /* WhileStatement */: + case 198 /* IfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); // Set span on previous token if it starts on same line otherwise on the first statement of the block - case 199 /* ForStatement */: + case 201 /* ForStatement */: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } // Default action is to set on first statement @@ -50947,7 +51766,7 @@ var ts; } function spanInForStatement(forStatement) { if (forStatement.initializer) { - if (forStatement.initializer.kind === 212 /* VariableDeclarationList */) { + if (forStatement.initializer.kind === 214 /* VariableDeclarationList */) { var variableDeclarationList = forStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); @@ -50967,13 +51786,13 @@ var ts; // Tokens: function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } // Default to parent node @@ -50981,24 +51800,24 @@ var ts; } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 219 /* ModuleBlock */: + case 221 /* ModuleBlock */: // If this is not instantiated module block no bp span if (ts.getModuleInstanceState(node.parent.parent) !== 1 /* Instantiated */) { return undefined; } - case 217 /* EnumDeclaration */: - case 214 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: // Span on close brace token return textSpan(node); - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionBlock(node.parent)) { // Span on close brace token return textSpan(node); } // fall through. - case 244 /* CatchClause */: + case 246 /* CatchClause */: return spanInNode(ts.lastOrUndefined(node.parent.statements)); - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: // breakpoint in last statement of the last clause var caseBlock = node.parent; var lastClause = ts.lastOrUndefined(caseBlock.clauses); @@ -51012,7 +51831,7 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 197 /* DoStatement */) { + if (node.parent.kind === 199 /* DoStatement */) { // Go to while keyword and do action instead return spanInPreviousNode(node); } @@ -51022,17 +51841,17 @@ var ts; function spanInCloseParenToken(node) { // Is this close paren token of parameter list, set span in previous token switch (node.parent.kind) { - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 144 /* Constructor */: - case 198 /* WhileStatement */: - case 197 /* DoStatement */: - case 199 /* ForStatement */: + case 200 /* WhileStatement */: + case 199 /* DoStatement */: + case 201 /* ForStatement */: return spanInPreviousNode(node); // Default to parent node default: @@ -51041,19 +51860,19 @@ var ts; } function spanInColonToken(node) { // Is this : specifying return annotation of the function declaration - if (ts.isFunctionLike(node.parent) || node.parent.kind === 245 /* PropertyAssignment */) { + if (ts.isFunctionLike(node.parent) || node.parent.kind === 247 /* PropertyAssignment */) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 171 /* TypeAssertionExpression */) { + if (node.parent.kind === 173 /* TypeAssertionExpression */) { return spanInNode(node.parent.expression); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 197 /* DoStatement */) { + if (node.parent.kind === 199 /* DoStatement */) { // Set span on while expression return textSpan(node, ts.findNextToken(node.parent.expression, node.parent)); } @@ -51082,6 +51901,9 @@ var ts; /// /* @internal */ var debugObjectHost = this; +// We need to use 'null' to interface with the managed side. +/* tslint:disable:no-null */ +/* tslint:disable:no-in-operator */ /* @internal */ var ts; (function (ts) { @@ -51093,7 +51915,6 @@ var ts; var ScriptSnapshotShimAdapter = (function () { function ScriptSnapshotShimAdapter(scriptSnapshotShim) { this.scriptSnapshotShim = scriptSnapshotShim; - this.lineStartPositions = null; } ScriptSnapshotShimAdapter.prototype.getText = function (start, end) { return this.scriptSnapshotShim.getText(start, end); @@ -51119,7 +51940,7 @@ var ts; } }; return ScriptSnapshotShimAdapter; - })(); + }()); var LanguageServiceShimHostAdapter = (function () { function LanguageServiceShimHostAdapter(shimHost) { var _this = this; @@ -51137,6 +51958,9 @@ var ts; }); }; } + if ("directoryExists" in this.shimHost) { + this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; + } } LanguageServiceShimHostAdapter.prototype.log = function (s) { if (this.loggingEnabled) { @@ -51174,11 +51998,6 @@ var ts; return this.files = JSON.parse(encoded); }; LanguageServiceShimHostAdapter.prototype.getScriptSnapshot = function (fileName) { - // Shim the API changes for 1.5 release. This should be removed once - // TypeScript 1.5 has shipped. - if (this.files && this.files.indexOf(fileName) < 0) { - return undefined; - } var scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); return scriptSnapshot && new ScriptSnapshotShimAdapter(scriptSnapshot); }; @@ -51206,17 +52025,10 @@ var ts; return this.shimHost.getCurrentDirectory(); }; LanguageServiceShimHostAdapter.prototype.getDefaultLibFileName = function (options) { - // Wrap the API changes for 1.5 release. This try/catch - // should be removed once TypeScript 1.5 has shipped. - try { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); - } - catch (e) { - return ""; - } + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); }; return LanguageServiceShimHostAdapter; - })(); + }()); ts.LanguageServiceShimHostAdapter = LanguageServiceShimHostAdapter; /** A cancellation that throttles calls to the host */ var ThrottledCancellationToken = (function () { @@ -51238,23 +52050,17 @@ var ts; return false; }; return ThrottledCancellationToken; - })(); + }()); var CoreServicesShimHostAdapter = (function () { function CoreServicesShimHostAdapter(shimHost) { + var _this = this; this.shimHost = shimHost; + if ("directoryExists" in this.shimHost) { + this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; + } } CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude) { - // Wrap the API changes for 1.5 release. This try/catch - // should be removed once TypeScript 1.5 has shipped. - // Also consider removing the optional designation for - // the exclude param at this time. - var encoded; - try { - encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); - } - catch (e) { - encoded = this.shimHost.readDirectory(rootDir, extension); - } + var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); }; CoreServicesShimHostAdapter.prototype.fileExists = function (fileName) { @@ -51264,18 +52070,19 @@ var ts; return this.shimHost.readFile(fileName); }; return CoreServicesShimHostAdapter; - })(); + }()); ts.CoreServicesShimHostAdapter = CoreServicesShimHostAdapter; function simpleForwardCall(logger, actionDescription, action, logPerformance) { + var start; if (logPerformance) { logger.log(actionDescription); - var start = Date.now(); + start = Date.now(); } var result = action(); if (logPerformance) { var end = Date.now(); logger.log(actionDescription + " completed in " + (end - start) + " msec"); - if (typeof (result) === "string") { + if (typeof result === "string") { var str = result; if (str.length > 128) { str = str.substring(0, 128) + "..."; @@ -51308,7 +52115,7 @@ var ts; this.factory.unregisterShim(this); }; return ShimBase; - })(); + }()); function realizeDiagnostics(diagnostics, newLine) { return diagnostics.map(function (d) { return realizeDiagnostic(d, newLine); }); } @@ -51357,9 +52164,7 @@ var ts; * Update the list of scripts known to the compiler */ LanguageServiceShimObject.prototype.refresh = function (throwOnError) { - this.forwardJSONCall("refresh(" + throwOnError + ")", function () { - return null; - }); + this.forwardJSONCall("refresh(" + throwOnError + ")", function () { return null; }); }; LanguageServiceShimObject.prototype.cleanupSemanticCache = function () { var _this = this; @@ -51374,33 +52179,25 @@ var ts; }; LanguageServiceShimObject.prototype.getSyntacticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - var classifications = _this.languageService.getSyntacticClassifications(fileName, ts.createTextSpan(start, length)); - return classifications; - }); + return this.forwardJSONCall("getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return _this.languageService.getSyntacticClassifications(fileName, ts.createTextSpan(start, length)); }); }; LanguageServiceShimObject.prototype.getSemanticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - var classifications = _this.languageService.getSemanticClassifications(fileName, ts.createTextSpan(start, length)); - return classifications; - }); + return this.forwardJSONCall("getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return _this.languageService.getSemanticClassifications(fileName, ts.createTextSpan(start, length)); }); }; LanguageServiceShimObject.prototype.getEncodedSyntacticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - // directly serialize the spans out to a string. This is much faster to decode - // on the managed side versus a full JSON array. - return convertClassifications(_this.languageService.getEncodedSyntacticClassifications(fileName, ts.createTextSpan(start, length))); - }); + return this.forwardJSONCall("getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", + // directly serialize the spans out to a string. This is much faster to decode + // on the managed side versus a full JSON array. + function () { return convertClassifications(_this.languageService.getEncodedSyntacticClassifications(fileName, ts.createTextSpan(start, length))); }); }; LanguageServiceShimObject.prototype.getEncodedSemanticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - // directly serialize the spans out to a string. This is much faster to decode - // on the managed side versus a full JSON array. - return convertClassifications(_this.languageService.getEncodedSemanticClassifications(fileName, ts.createTextSpan(start, length))); - }); + return this.forwardJSONCall("getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", + // directly serialize the spans out to a string. This is much faster to decode + // on the managed side versus a full JSON array. + function () { return convertClassifications(_this.languageService.getEncodedSemanticClassifications(fileName, ts.createTextSpan(start, length))); }); }; LanguageServiceShimObject.prototype.getSyntacticDiagnostics = function (fileName) { var _this = this; @@ -51430,10 +52227,7 @@ var ts; */ LanguageServiceShimObject.prototype.getQuickInfoAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getQuickInfoAtPosition('" + fileName + "', " + position + ")", function () { - var quickInfo = _this.languageService.getQuickInfoAtPosition(fileName, position); - return quickInfo; - }); + return this.forwardJSONCall("getQuickInfoAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getQuickInfoAtPosition(fileName, position); }); }; /// NAMEORDOTTEDNAMESPAN /** @@ -51442,10 +52236,7 @@ var ts; */ LanguageServiceShimObject.prototype.getNameOrDottedNameSpan = function (fileName, startPos, endPos) { var _this = this; - return this.forwardJSONCall("getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", function () { - var spanInfo = _this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); - return spanInfo; - }); + return this.forwardJSONCall("getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", function () { return _this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); }); }; /** * STATEMENTSPAN @@ -51453,18 +52244,12 @@ var ts; */ LanguageServiceShimObject.prototype.getBreakpointStatementAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", function () { - var spanInfo = _this.languageService.getBreakpointStatementAtPosition(fileName, position); - return spanInfo; - }); + return this.forwardJSONCall("getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getBreakpointStatementAtPosition(fileName, position); }); }; /// SIGNATUREHELP LanguageServiceShimObject.prototype.getSignatureHelpItems = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getSignatureHelpItems('" + fileName + "', " + position + ")", function () { - var signatureInfo = _this.languageService.getSignatureHelpItems(fileName, position); - return signatureInfo; - }); + return this.forwardJSONCall("getSignatureHelpItems('" + fileName + "', " + position + ")", function () { return _this.languageService.getSignatureHelpItems(fileName, position); }); }; /// GOTO DEFINITION /** @@ -51473,9 +52258,7 @@ var ts; */ LanguageServiceShimObject.prototype.getDefinitionAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getDefinitionAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getDefinitionAtPosition(fileName, position); - }); + return this.forwardJSONCall("getDefinitionAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getDefinitionAtPosition(fileName, position); }); }; /// GOTO Type /** @@ -51484,29 +52267,20 @@ var ts; */ LanguageServiceShimObject.prototype.getTypeDefinitionAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getTypeDefinitionAtPosition(fileName, position); - }); + return this.forwardJSONCall("getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getTypeDefinitionAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getRenameInfo = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getRenameInfo('" + fileName + "', " + position + ")", function () { - return _this.languageService.getRenameInfo(fileName, position); - }); + return this.forwardJSONCall("getRenameInfo('" + fileName + "', " + position + ")", function () { return _this.languageService.getRenameInfo(fileName, position); }); }; LanguageServiceShimObject.prototype.findRenameLocations = function (fileName, position, findInStrings, findInComments) { var _this = this; - return this.forwardJSONCall("findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", function () { - return _this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); - }); + return this.forwardJSONCall("findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", function () { return _this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); }); }; /// GET BRACE MATCHING LanguageServiceShimObject.prototype.getBraceMatchingAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getBraceMatchingAtPosition('" + fileName + "', " + position + ")", function () { - var textRanges = _this.languageService.getBraceMatchingAtPosition(fileName, position); - return textRanges; - }); + return this.forwardJSONCall("getBraceMatchingAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getBraceMatchingAtPosition(fileName, position); }); }; /// GET SMART INDENT LanguageServiceShimObject.prototype.getIndentationAtPosition = function (fileName, position, options /*Services.EditorOptions*/) { @@ -51519,21 +52293,15 @@ var ts; /// GET REFERENCES LanguageServiceShimObject.prototype.getReferencesAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getReferencesAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getReferencesAtPosition(fileName, position); - }); + return this.forwardJSONCall("getReferencesAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getReferencesAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.findReferences = function (fileName, position) { var _this = this; - return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { - return _this.languageService.findReferences(fileName, position); - }); + return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { return _this.languageService.findReferences(fileName, position); }); }; LanguageServiceShimObject.prototype.getOccurrencesAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getOccurrencesAtPosition(fileName, position); - }); + return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getOccurrencesAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getDocumentHighlights = function (fileName, position, filesToSearch) { var _this = this; @@ -51552,41 +52320,32 @@ var ts; */ LanguageServiceShimObject.prototype.getCompletionsAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getCompletionsAtPosition('" + fileName + "', " + position + ")", function () { - var completion = _this.languageService.getCompletionsAtPosition(fileName, position); - return completion; - }); + return this.forwardJSONCall("getCompletionsAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getCompletionsAtPosition(fileName, position); }); }; /** Get a string based representation of a completion list entry details */ LanguageServiceShimObject.prototype.getCompletionEntryDetails = function (fileName, position, entryName) { var _this = this; - return this.forwardJSONCall("getCompletionEntryDetails('" + fileName + "', " + position + ", " + entryName + ")", function () { - var details = _this.languageService.getCompletionEntryDetails(fileName, position, entryName); - return details; - }); + return this.forwardJSONCall("getCompletionEntryDetails('" + fileName + "', " + position + ", '" + entryName + "')", function () { return _this.languageService.getCompletionEntryDetails(fileName, position, entryName); }); }; LanguageServiceShimObject.prototype.getFormattingEditsForRange = function (fileName, start, end, options /*Services.FormatCodeOptions*/) { var _this = this; return this.forwardJSONCall("getFormattingEditsForRange('" + fileName + "', " + start + ", " + end + ")", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); - return edits; + return _this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); }); }; LanguageServiceShimObject.prototype.getFormattingEditsForDocument = function (fileName, options /*Services.FormatCodeOptions*/) { var _this = this; return this.forwardJSONCall("getFormattingEditsForDocument('" + fileName + "')", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsForDocument(fileName, localOptions); - return edits; + return _this.languageService.getFormattingEditsForDocument(fileName, localOptions); }); }; LanguageServiceShimObject.prototype.getFormattingEditsAfterKeystroke = function (fileName, position, key, options /*Services.FormatCodeOptions*/) { var _this = this; return this.forwardJSONCall("getFormattingEditsAfterKeystroke('" + fileName + "', " + position + ", '" + key + "')", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); - return edits; + return _this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); }); }; LanguageServiceShimObject.prototype.getDocCommentTemplateAtPosition = function (fileName, position) { @@ -51597,45 +52356,27 @@ var ts; /** Return a list of symbols that are interesting to navigate to */ LanguageServiceShimObject.prototype.getNavigateToItems = function (searchValue, maxResultCount) { var _this = this; - return this.forwardJSONCall("getNavigateToItems('" + searchValue + "', " + maxResultCount + ")", function () { - var items = _this.languageService.getNavigateToItems(searchValue, maxResultCount); - return items; - }); + return this.forwardJSONCall("getNavigateToItems('" + searchValue + "', " + maxResultCount + ")", function () { return _this.languageService.getNavigateToItems(searchValue, maxResultCount); }); }; LanguageServiceShimObject.prototype.getNavigationBarItems = function (fileName) { var _this = this; - return this.forwardJSONCall("getNavigationBarItems('" + fileName + "')", function () { - var items = _this.languageService.getNavigationBarItems(fileName); - return items; - }); + return this.forwardJSONCall("getNavigationBarItems('" + fileName + "')", function () { return _this.languageService.getNavigationBarItems(fileName); }); }; LanguageServiceShimObject.prototype.getOutliningSpans = function (fileName) { var _this = this; - return this.forwardJSONCall("getOutliningSpans('" + fileName + "')", function () { - var items = _this.languageService.getOutliningSpans(fileName); - return items; - }); + return this.forwardJSONCall("getOutliningSpans('" + fileName + "')", function () { return _this.languageService.getOutliningSpans(fileName); }); }; LanguageServiceShimObject.prototype.getTodoComments = function (fileName, descriptors) { var _this = this; - return this.forwardJSONCall("getTodoComments('" + fileName + "')", function () { - var items = _this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); - return items; - }); + return this.forwardJSONCall("getTodoComments('" + fileName + "')", function () { return _this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); }); }; /// Emit LanguageServiceShimObject.prototype.getEmitOutput = function (fileName) { var _this = this; - return this.forwardJSONCall("getEmitOutput('" + fileName + "')", function () { - var output = _this.languageService.getEmitOutput(fileName); - // Shim the API changes for 1.5 release. This should be removed once - // TypeScript 1.5 has shipped. - output.emitOutputStatus = output.emitSkipped ? 1 : 0; - return output; - }); + return this.forwardJSONCall("getEmitOutput('" + fileName + "')", function () { return _this.languageService.getEmitOutput(fileName); }); }; return LanguageServiceShimObject; - })(ShimBase); + }(ShimBase)); function convertClassifications(classifications) { return { spans: classifications.spans.join(","), endOfLineState: classifications.endOfLineState }; } @@ -51654,17 +52395,17 @@ var ts; /// COLORIZATION ClassifierShimObject.prototype.getClassificationsForLine = function (text, lexState, classifyKeywordsInGenerics) { var classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); - var items = classification.entries; var result = ""; - for (var i = 0; i < items.length; i++) { - result += items[i].length + "\n"; - result += items[i].classification + "\n"; + for (var _i = 0, _a = classification.entries; _i < _a.length; _i++) { + var item = _a[_i]; + result += item.length + "\n"; + result += item.classification + "\n"; } result += classification.finalLexState; return result; }; return ClassifierShimObject; - })(ShimBase); + }(ShimBase)); var CoreServicesShimObject = (function (_super) { __extends(CoreServicesShimObject, _super); function CoreServicesShimObject(factory, logger, host) { @@ -51723,24 +52464,22 @@ var ts; return { options: {}, files: [], - errors: [realizeDiagnostic(result.error, '\r\n')] + errors: [realizeDiagnostic(result.error, "\r\n")] }; } var configFile = ts.parseJsonConfigFileContent(result.config, _this.host, ts.getDirectoryPath(ts.normalizeSlashes(fileName))); return { options: configFile.options, files: configFile.fileNames, - errors: realizeDiagnostics(configFile.errors, '\r\n') + errors: realizeDiagnostics(configFile.errors, "\r\n") }; }); }; CoreServicesShimObject.prototype.getDefaultCompilationSettings = function () { - return this.forwardJSONCall("getDefaultCompilationSettings()", function () { - return ts.getDefaultCompilerOptions(); - }); + return this.forwardJSONCall("getDefaultCompilationSettings()", function () { return ts.getDefaultCompilerOptions(); }); }; return CoreServicesShimObject; - })(ShimBase); + }(ShimBase)); var TypeScriptServicesFactory = (function () { function TypeScriptServicesFactory() { this._shims = []; @@ -51802,12 +52541,14 @@ var ts; throw new Error("Invalid operation"); }; return TypeScriptServicesFactory; - })(); + }()); ts.TypeScriptServicesFactory = TypeScriptServicesFactory; if (typeof module !== "undefined" && module.exports) { module.exports = ts; } })(ts || (ts = {})); +/* tslint:enable:no-in-operator */ +/* tslint:enable:no-null */ /// TODO: this is used by VS, clean this up on both sides of the interface /* @internal */ var TypeScript; @@ -51817,5 +52558,9 @@ var TypeScript; Services.TypeScriptServicesFactory = ts.TypeScriptServicesFactory; })(Services = TypeScript.Services || (TypeScript.Services = {})); })(TypeScript || (TypeScript = {})); +/* tslint:disable:no-unused-variable */ +// 'toolsVersion' gets consumed by the managed side, so it's not unused. +// TODO: it should be moved into a namespace though. /* @internal */ -var toolsVersion = "1.6"; +var toolsVersion = "1.8"; +/* tslint:enable:no-unused-variable */ diff --git a/lib/typescriptServices.d.ts b/lib/typescriptServices.d.ts index af9a8bffe35..797f9ec728c 100644 --- a/lib/typescriptServices.d.ts +++ b/lib/typescriptServices.d.ts @@ -194,118 +194,120 @@ declare namespace ts { UnionType = 158, IntersectionType = 159, ParenthesizedType = 160, - ObjectBindingPattern = 161, - ArrayBindingPattern = 162, - BindingElement = 163, - ArrayLiteralExpression = 164, - ObjectLiteralExpression = 165, - PropertyAccessExpression = 166, - ElementAccessExpression = 167, - CallExpression = 168, - NewExpression = 169, - TaggedTemplateExpression = 170, - TypeAssertionExpression = 171, - ParenthesizedExpression = 172, - FunctionExpression = 173, - ArrowFunction = 174, - DeleteExpression = 175, - TypeOfExpression = 176, - VoidExpression = 177, - AwaitExpression = 178, - PrefixUnaryExpression = 179, - PostfixUnaryExpression = 180, - BinaryExpression = 181, - ConditionalExpression = 182, - TemplateExpression = 183, - YieldExpression = 184, - SpreadElementExpression = 185, - ClassExpression = 186, - OmittedExpression = 187, - ExpressionWithTypeArguments = 188, - AsExpression = 189, - TemplateSpan = 190, - SemicolonClassElement = 191, - Block = 192, - VariableStatement = 193, - EmptyStatement = 194, - ExpressionStatement = 195, - IfStatement = 196, - DoStatement = 197, - WhileStatement = 198, - ForStatement = 199, - ForInStatement = 200, - ForOfStatement = 201, - ContinueStatement = 202, - BreakStatement = 203, - ReturnStatement = 204, - WithStatement = 205, - SwitchStatement = 206, - LabeledStatement = 207, - ThrowStatement = 208, - TryStatement = 209, - DebuggerStatement = 210, - VariableDeclaration = 211, - VariableDeclarationList = 212, - FunctionDeclaration = 213, - ClassDeclaration = 214, - InterfaceDeclaration = 215, - TypeAliasDeclaration = 216, - EnumDeclaration = 217, - ModuleDeclaration = 218, - ModuleBlock = 219, - CaseBlock = 220, - ImportEqualsDeclaration = 221, - ImportDeclaration = 222, - ImportClause = 223, - NamespaceImport = 224, - NamedImports = 225, - ImportSpecifier = 226, - ExportAssignment = 227, - ExportDeclaration = 228, - NamedExports = 229, - ExportSpecifier = 230, - MissingDeclaration = 231, - ExternalModuleReference = 232, - JsxElement = 233, - JsxSelfClosingElement = 234, - JsxOpeningElement = 235, - JsxText = 236, - JsxClosingElement = 237, - JsxAttribute = 238, - JsxSpreadAttribute = 239, - JsxExpression = 240, - CaseClause = 241, - DefaultClause = 242, - HeritageClause = 243, - CatchClause = 244, - PropertyAssignment = 245, - ShorthandPropertyAssignment = 246, - EnumMember = 247, - SourceFile = 248, - JSDocTypeExpression = 249, - JSDocAllType = 250, - JSDocUnknownType = 251, - JSDocArrayType = 252, - JSDocUnionType = 253, - JSDocTupleType = 254, - JSDocNullableType = 255, - JSDocNonNullableType = 256, - JSDocRecordType = 257, - JSDocRecordMember = 258, - JSDocTypeReference = 259, - JSDocOptionalType = 260, - JSDocFunctionType = 261, - JSDocVariadicType = 262, - JSDocConstructorType = 263, - JSDocThisType = 264, - JSDocComment = 265, - JSDocTag = 266, - JSDocParameterTag = 267, - JSDocReturnTag = 268, - JSDocTypeTag = 269, - JSDocTemplateTag = 270, - SyntaxList = 271, - Count = 272, + ThisType = 161, + StringLiteralType = 162, + ObjectBindingPattern = 163, + ArrayBindingPattern = 164, + BindingElement = 165, + ArrayLiteralExpression = 166, + ObjectLiteralExpression = 167, + PropertyAccessExpression = 168, + ElementAccessExpression = 169, + CallExpression = 170, + NewExpression = 171, + TaggedTemplateExpression = 172, + TypeAssertionExpression = 173, + ParenthesizedExpression = 174, + FunctionExpression = 175, + ArrowFunction = 176, + DeleteExpression = 177, + TypeOfExpression = 178, + VoidExpression = 179, + AwaitExpression = 180, + PrefixUnaryExpression = 181, + PostfixUnaryExpression = 182, + BinaryExpression = 183, + ConditionalExpression = 184, + TemplateExpression = 185, + YieldExpression = 186, + SpreadElementExpression = 187, + ClassExpression = 188, + OmittedExpression = 189, + ExpressionWithTypeArguments = 190, + AsExpression = 191, + TemplateSpan = 192, + SemicolonClassElement = 193, + Block = 194, + VariableStatement = 195, + EmptyStatement = 196, + ExpressionStatement = 197, + IfStatement = 198, + DoStatement = 199, + WhileStatement = 200, + ForStatement = 201, + ForInStatement = 202, + ForOfStatement = 203, + ContinueStatement = 204, + BreakStatement = 205, + ReturnStatement = 206, + WithStatement = 207, + SwitchStatement = 208, + LabeledStatement = 209, + ThrowStatement = 210, + TryStatement = 211, + DebuggerStatement = 212, + VariableDeclaration = 213, + VariableDeclarationList = 214, + FunctionDeclaration = 215, + ClassDeclaration = 216, + InterfaceDeclaration = 217, + TypeAliasDeclaration = 218, + EnumDeclaration = 219, + ModuleDeclaration = 220, + ModuleBlock = 221, + CaseBlock = 222, + ImportEqualsDeclaration = 223, + ImportDeclaration = 224, + ImportClause = 225, + NamespaceImport = 226, + NamedImports = 227, + ImportSpecifier = 228, + ExportAssignment = 229, + ExportDeclaration = 230, + NamedExports = 231, + ExportSpecifier = 232, + MissingDeclaration = 233, + ExternalModuleReference = 234, + JsxElement = 235, + JsxSelfClosingElement = 236, + JsxOpeningElement = 237, + JsxText = 238, + JsxClosingElement = 239, + JsxAttribute = 240, + JsxSpreadAttribute = 241, + JsxExpression = 242, + CaseClause = 243, + DefaultClause = 244, + HeritageClause = 245, + CatchClause = 246, + PropertyAssignment = 247, + ShorthandPropertyAssignment = 248, + EnumMember = 249, + SourceFile = 250, + JSDocTypeExpression = 251, + JSDocAllType = 252, + JSDocUnknownType = 253, + JSDocArrayType = 254, + JSDocUnionType = 255, + JSDocTupleType = 256, + JSDocNullableType = 257, + JSDocNonNullableType = 258, + JSDocRecordType = 259, + JSDocRecordMember = 260, + JSDocTypeReference = 261, + JSDocOptionalType = 262, + JSDocFunctionType = 263, + JSDocVariadicType = 264, + JSDocConstructorType = 265, + JSDocThisType = 266, + JSDocComment = 267, + JSDocTag = 268, + JSDocParameterTag = 269, + JSDocReturnTag = 270, + JSDocTypeTag = 271, + JSDocTemplateTag = 272, + SyntaxList = 273, + Count = 274, FirstAssignment = 56, LastAssignment = 68, FirstReservedWord = 70, @@ -314,8 +316,8 @@ declare namespace ts { LastKeyword = 134, FirstFutureReservedWord = 106, LastFutureReservedWord = 114, - FirstTypeNode = 151, - LastTypeNode = 160, + FirstTypeNode = 150, + LastTypeNode = 162, FirstPunctuation = 15, LastPunctuation = 68, FirstToken = 0, @@ -359,10 +361,14 @@ declare namespace ts { } enum JsxFlags { None = 0, + /** An element from a named property of the JSX.IntrinsicElements interface */ IntrinsicNamedElement = 1, + /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */ IntrinsicIndexedElement = 2, - ClassElement = 4, - UnknownElement = 8, + /** An element backed by a class, class-like, or function value */ + ValueElement = 4, + /** Element resolution failed */ + UnknownElement = 16, IntrinsicElement = 3, } interface Node extends TextRange { @@ -375,9 +381,11 @@ declare namespace ts { interface NodeArray extends Array, TextRange { hasTrailingComma?: boolean; } - interface ModifiersArray extends NodeArray { + interface ModifiersArray extends NodeArray { flags: number; } + interface Modifier extends Node { + } interface Identifier extends PrimaryExpression { text: string; originalKeywordKind?: SyntaxKind; @@ -393,6 +401,9 @@ declare namespace ts { _declarationBrand: any; name?: DeclarationName; } + interface DeclarationStatement extends Declaration, Statement { + name?: Identifier; + } interface ComputedPropertyName extends Node { expression: Expression; } @@ -405,10 +416,15 @@ declare namespace ts { expression?: Expression; } interface SignatureDeclaration extends Declaration { + name?: PropertyName; typeParameters?: NodeArray; parameters: NodeArray; type?: TypeNode; } + interface CallSignatureDeclaration extends SignatureDeclaration, TypeElement { + } + interface ConstructSignatureDeclaration extends SignatureDeclaration, TypeElement { + } interface VariableDeclaration extends Declaration { parent?: VariableDeclarationList; name: Identifier | BindingPattern; @@ -431,18 +447,25 @@ declare namespace ts { name: Identifier | BindingPattern; initializer?: Expression; } - interface PropertyDeclaration extends Declaration, ClassElement { - name: DeclarationName; + interface PropertySignature extends TypeElement { + name: PropertyName; questionToken?: Node; type?: TypeNode; initializer?: Expression; } + interface PropertyDeclaration extends ClassElement { + questionToken?: Node; + name: PropertyName; + type?: TypeNode; + initializer?: Expression; + } interface ObjectLiteralElement extends Declaration { _objectLiteralBrandBrand: any; + name?: PropertyName; } interface PropertyAssignment extends ObjectLiteralElement { _propertyAssignmentBrand: any; - name: DeclarationName; + name: PropertyName; questionToken?: Node; initializer: Expression; } @@ -460,9 +483,16 @@ declare namespace ts { type?: TypeNode; initializer?: Expression; } + interface PropertyLikeDeclaration extends Declaration { + name: PropertyName; + } interface BindingPattern extends Node { elements: NodeArray; } + interface ObjectBindingPattern extends BindingPattern { + } + interface ArrayBindingPattern extends BindingPattern { + } /** * Several node kinds share function-like features such as a signature, * a name, and a body. These nodes should extend FunctionLikeDeclaration. @@ -477,45 +507,61 @@ declare namespace ts { questionToken?: Node; body?: Block | Expression; } - interface FunctionDeclaration extends FunctionLikeDeclaration, Statement { + interface FunctionDeclaration extends FunctionLikeDeclaration, DeclarationStatement { name?: Identifier; - body?: Block; + body?: FunctionBody; + } + interface MethodSignature extends SignatureDeclaration, TypeElement { + name: PropertyName; } interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { - body?: Block; + name: PropertyName; + body?: FunctionBody; } interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement { - body?: Block; + body?: FunctionBody; } interface SemicolonClassElement extends ClassElement { _semicolonClassElementBrand: any; } interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement { _accessorDeclarationBrand: any; - body: Block; + name: PropertyName; + body: FunctionBody; } - interface IndexSignatureDeclaration extends SignatureDeclaration, ClassElement { + interface GetAccessorDeclaration extends AccessorDeclaration { + } + interface SetAccessorDeclaration extends AccessorDeclaration { + } + interface IndexSignatureDeclaration extends SignatureDeclaration, ClassElement, TypeElement { _indexSignatureDeclarationBrand: any; } interface TypeNode extends Node { _typeNodeBrand: any; } + interface ThisTypeNode extends TypeNode { + _thisTypeNodeBrand: any; + } interface FunctionOrConstructorTypeNode extends TypeNode, SignatureDeclaration { _functionOrConstructorTypeNodeBrand: any; } + interface FunctionTypeNode extends FunctionOrConstructorTypeNode { + } + interface ConstructorTypeNode extends FunctionOrConstructorTypeNode { + } interface TypeReferenceNode extends TypeNode { typeName: EntityName; typeArguments?: NodeArray; } interface TypePredicateNode extends TypeNode { - parameterName: Identifier; + parameterName: Identifier | ThisTypeNode; type: TypeNode; } interface TypeQueryNode extends TypeNode { exprName: EntityName; } interface TypeLiteralNode extends TypeNode, Declaration { - members: NodeArray; + members: NodeArray; } interface ArrayTypeNode extends TypeNode { elementType: TypeNode; @@ -533,13 +579,18 @@ declare namespace ts { interface ParenthesizedTypeNode extends TypeNode { type: TypeNode; } - interface StringLiteral extends LiteralExpression, TypeNode { + interface StringLiteralTypeNode extends LiteralLikeNode, TypeNode { + _stringLiteralTypeBrand: any; + } + interface StringLiteral extends LiteralExpression { _stringLiteralBrand: any; } interface Expression extends Node { _expressionBrand: any; contextualType?: Type; } + interface OmittedExpression extends Expression { + } interface UnaryExpression extends Expression { _unaryExpressionBrand: any; } @@ -594,25 +645,34 @@ declare namespace ts { colonToken: Node; whenFalse: Expression; } + type FunctionBody = Block; + type ConciseBody = FunctionBody | Expression; interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration { name?: Identifier; - body: Block | Expression; + body: FunctionBody; } interface ArrowFunction extends Expression, FunctionLikeDeclaration { equalsGreaterThanToken: Node; + body: ConciseBody; } - interface LiteralExpression extends PrimaryExpression { + interface LiteralLikeNode extends Node { text: string; isUnterminated?: boolean; hasExtendedUnicodeEscape?: boolean; } + interface LiteralExpression extends LiteralLikeNode, PrimaryExpression { + _literalExpressionBrand: any; + } + interface TemplateLiteralFragment extends LiteralLikeNode { + _templateLiteralFragmentBrand: any; + } interface TemplateExpression extends PrimaryExpression { - head: LiteralExpression; + head: TemplateLiteralFragment; templateSpans: NodeArray; } interface TemplateSpan extends Node { expression: Expression; - literal: LiteralExpression; + literal: TemplateLiteralFragment; } interface ParenthesizedExpression extends PrimaryExpression { expression: Expression; @@ -694,6 +754,14 @@ declare namespace ts { interface Statement extends Node { _statementBrand: any; } + interface EmptyStatement extends Statement { + } + interface DebuggerStatement extends Statement { + } + interface MissingDeclaration extends DeclarationStatement, ClassElement, ObjectLiteralElement, TypeElement { + name?: Identifier; + } + type BlockLike = SourceFile | Block | ModuleBlock | CaseClause; interface Block extends Statement { statements: NodeArray; } @@ -730,9 +798,13 @@ declare namespace ts { initializer: VariableDeclarationList | Expression; expression: Expression; } - interface BreakOrContinueStatement extends Statement { + interface BreakStatement extends Statement { label?: Identifier; } + interface ContinueStatement extends Statement { + label?: Identifier; + } + type BreakOrContinueStatement = BreakStatement | ContinueStatement; interface ReturnStatement extends Statement { expression?: Expression; } @@ -748,7 +820,7 @@ declare namespace ts { clauses: NodeArray; } interface CaseClause extends Node { - expression?: Expression; + expression: Expression; statements: NodeArray; } interface DefaultClause extends Node { @@ -777,24 +849,31 @@ declare namespace ts { heritageClauses?: NodeArray; members: NodeArray; } - interface ClassDeclaration extends ClassLikeDeclaration, Statement { + interface ClassDeclaration extends ClassLikeDeclaration, DeclarationStatement { + name?: Identifier; } interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression { } interface ClassElement extends Declaration { _classElementBrand: any; + name?: PropertyName; } - interface InterfaceDeclaration extends Declaration, Statement { + interface TypeElement extends Declaration { + _typeElementBrand: any; + name?: PropertyName; + questionToken?: Node; + } + interface InterfaceDeclaration extends DeclarationStatement { name: Identifier; typeParameters?: NodeArray; heritageClauses?: NodeArray; - members: NodeArray; + members: NodeArray; } interface HeritageClause extends Node { token: SyntaxKind; types?: NodeArray; } - interface TypeAliasDeclaration extends Declaration, Statement { + interface TypeAliasDeclaration extends DeclarationStatement { name: Identifier; typeParameters?: NodeArray; type: TypeNode; @@ -803,18 +882,19 @@ declare namespace ts { name: DeclarationName; initializer?: Expression; } - interface EnumDeclaration extends Declaration, Statement { + interface EnumDeclaration extends DeclarationStatement { name: Identifier; members: NodeArray; } - interface ModuleDeclaration extends Declaration, Statement { + type ModuleBody = ModuleBlock | ModuleDeclaration; + interface ModuleDeclaration extends DeclarationStatement { name: Identifier | LiteralExpression; body: ModuleBlock | ModuleDeclaration; } interface ModuleBlock extends Node, Statement { statements: NodeArray; } - interface ImportEqualsDeclaration extends Declaration, Statement { + interface ImportEqualsDeclaration extends DeclarationStatement { name: Identifier; moduleReference: EntityName | ExternalModuleReference; } @@ -832,22 +912,27 @@ declare namespace ts { interface NamespaceImport extends Declaration { name: Identifier; } - interface ExportDeclaration extends Declaration, Statement { + interface ExportDeclaration extends DeclarationStatement { exportClause?: NamedExports; moduleSpecifier?: Expression; } - interface NamedImportsOrExports extends Node { - elements: NodeArray; + interface NamedImports extends Node { + elements: NodeArray; } - type NamedImports = NamedImportsOrExports; - type NamedExports = NamedImportsOrExports; - interface ImportOrExportSpecifier extends Declaration { + interface NamedExports extends Node { + elements: NodeArray; + } + type NamedImportsOrExports = NamedImports | NamedExports; + interface ImportSpecifier extends Declaration { propertyName?: Identifier; name: Identifier; } - type ImportSpecifier = ImportOrExportSpecifier; - type ExportSpecifier = ImportOrExportSpecifier; - interface ExportAssignment extends Declaration, Statement { + interface ExportSpecifier extends Declaration { + propertyName?: Identifier; + name: Identifier; + } + type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier; + interface ExportAssignment extends DeclarationStatement { isExportEquals?: boolean; expression: Expression; } @@ -908,7 +993,7 @@ declare namespace ts { interface JSDocThisType extends JSDocType { type: JSDocType; } - interface JSDocRecordMember extends PropertyDeclaration { + interface JSDocRecordMember extends PropertySignature { name: Identifier | LiteralExpression; type?: JSDocType; } @@ -934,16 +1019,17 @@ declare namespace ts { postParameterName?: Identifier; isBracketed: boolean; } + interface AmdDependency { + path: string; + name: string; + } interface SourceFile extends Declaration { statements: NodeArray; endOfFileToken: Node; fileName: string; path: Path; text: string; - amdDependencies: { - path: string; - name: string; - }[]; + amdDependencies: AmdDependency[]; moduleName: string; referencedFiles: FileReference[]; languageVariant: LanguageVariant; @@ -1053,6 +1139,7 @@ declare namespace ts { getReturnTypeOfSignature(signature: Signature): Type; getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; getSymbolAtLocation(node: Node): Symbol; + getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[]; getShorthandAssignmentValueSymbol(location: Node): Symbol; getTypeAtLocation(node: Node): Type; typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; @@ -1078,7 +1165,7 @@ declare namespace ts { 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; @@ -1117,10 +1204,20 @@ declare namespace ts { WriteTypeParametersOrArguments = 1, UseOnlyExternalAliasing = 2, } + enum TypePredicateKind { + This = 0, + Identifier = 1, + } interface TypePredicate { + kind: TypePredicateKind; + type: Type; + } + interface ThisTypePredicate extends TypePredicate { + _thisTypePredicateBrand: any; + } + interface IdentifierTypePredicate extends TypePredicate { parameterName: string; parameterIndex: number; - type: Type; } enum SymbolFlags { None = 0, @@ -1222,6 +1319,7 @@ declare namespace ts { ESSymbol = 16777216, ThisType = 33554432, ObjectLiteralPatternWithComputedProperties = 67108864, + PredicateType = 134217728, StringLike = 258, NumberLike = 132, ObjectType = 80896, @@ -1234,6 +1332,9 @@ declare namespace ts { symbol?: Symbol; pattern?: DestructuringPattern; } + interface PredicateType extends Type { + predicate: ThisTypePredicate | IdentifierTypePredicate; + } interface StringLiteralType extends Type { text: string; } @@ -1279,7 +1380,6 @@ declare namespace ts { declaration: SignatureDeclaration; typeParameters: TypeParameter[]; parameters: Symbol[]; - typePredicate?: TypePredicate; } enum IndexKind { String = 0, @@ -1331,6 +1431,7 @@ declare namespace ts { inlineSourceMap?: boolean; inlineSources?: boolean; jsx?: JsxEmit; + reactNamespace?: string; listFiles?: boolean; locale?: string; mapRoot?: string; @@ -1366,6 +1467,8 @@ declare namespace ts { noImplicitReturns?: boolean; noFallthroughCasesInSwitch?: boolean; forceConsistentCasingInFileNames?: boolean; + allowSyntheticDefaultImports?: boolean; + allowJs?: boolean; [option: string]: string | number | boolean; } enum ModuleKind { @@ -1409,6 +1512,7 @@ declare namespace ts { interface ModuleResolutionHost { fileExists(fileName: string): boolean; readFile(fileName: string): string; + directoryExists?(directoryName: string): boolean; } interface ResolvedModule { resolvedFileName: string; @@ -1537,6 +1641,7 @@ declare namespace ts { */ function collapseTextChangeRangesAcrossMultipleVersions(changes: TextChangeRange[]): TextChangeRange; function getTypeParameterOwner(d: Declaration): Declaration; + function isParameterPropertyDeclaration(node: ParameterDeclaration): boolean; } declare namespace ts { function createNode(kind: SyntaxKind, pos?: number, end?: number): Node; @@ -1546,10 +1651,10 @@ declare namespace ts { } declare namespace ts { const version: string; - function findConfigFile(searchPath: string): string; + function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean): string; function resolveTripleslashReference(moduleName: string, containingFile: string): string; function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; - function nodeModuleNameResolver(moduleName: string, containingFile: string, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; + function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost): ResolvedModuleWithFailedLookupLocations; function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): Diagnostic[]; @@ -1582,7 +1687,7 @@ declare namespace ts { * @param basePath A root directory to resolve relative path entries in the config * file to. e.g. outDir */ - function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string): ParsedCommandLine; + function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions): ParsedCommandLine; function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string): { options: CompilerOptions; errors: Diagnostic[]; @@ -1590,7 +1695,7 @@ declare namespace ts { } declare namespace ts { /** The version of the language service API */ - let servicesVersion: string; + const servicesVersion: string; interface Node { getSourceFile(): SourceFile; getChildCount(sourceFile?: SourceFile): number; @@ -1659,7 +1764,7 @@ declare namespace ts { /** Releases all resources held by this script snapshot */ dispose?(): void; } - module ScriptSnapshot { + namespace ScriptSnapshot { function fromString(text: string): IScriptSnapshot; } interface PreProcessedFileInfo { @@ -1687,6 +1792,7 @@ declare namespace ts { error?(s: string): void; useCaseSensitiveFileNames?(): boolean; resolveModuleNames?(moduleNames: string[], containingFile: string): ResolvedModule[]; + directoryExists?(directoryName: string): boolean; } interface LanguageService { cleanupSemanticCache(): void; @@ -1782,7 +1888,7 @@ declare namespace ts { fileName: string; highlightSpans: HighlightSpan[]; } - module HighlightSpanKind { + namespace HighlightSpanKind { const none: string; const definition: string; const reference: string; @@ -1824,6 +1930,7 @@ declare namespace ts { InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean; + InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean; PlaceOpenBraceOnNewLineForFunctions: boolean; PlaceOpenBraceOnNewLineForControlBlocks: boolean; [s: string]: boolean | number | string; @@ -2068,7 +2175,7 @@ declare namespace ts { releaseDocument(fileName: string, compilationSettings: CompilerOptions): void; reportStats(): string; } - module ScriptElementKind { + namespace ScriptElementKind { const unknown: string; const warning: string; const keyword: string; @@ -2099,7 +2206,7 @@ declare namespace ts { const constElement: string; const letElement: string; } - module ScriptElementKindModifier { + namespace ScriptElementKindModifier { const none: string; const publicMemberModifier: string; const privateMemberModifier: string; diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js index 498ddc37860..1e2f51f5aae 100644 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -195,133 +195,135 @@ var ts; SyntaxKind[SyntaxKind["UnionType"] = 158] = "UnionType"; SyntaxKind[SyntaxKind["IntersectionType"] = 159] = "IntersectionType"; SyntaxKind[SyntaxKind["ParenthesizedType"] = 160] = "ParenthesizedType"; + SyntaxKind[SyntaxKind["ThisType"] = 161] = "ThisType"; + SyntaxKind[SyntaxKind["StringLiteralType"] = 162] = "StringLiteralType"; // Binding patterns - SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 161] = "ObjectBindingPattern"; - SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 162] = "ArrayBindingPattern"; - SyntaxKind[SyntaxKind["BindingElement"] = 163] = "BindingElement"; + SyntaxKind[SyntaxKind["ObjectBindingPattern"] = 163] = "ObjectBindingPattern"; + SyntaxKind[SyntaxKind["ArrayBindingPattern"] = 164] = "ArrayBindingPattern"; + SyntaxKind[SyntaxKind["BindingElement"] = 165] = "BindingElement"; // Expression - SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 164] = "ArrayLiteralExpression"; - SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 165] = "ObjectLiteralExpression"; - SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 166] = "PropertyAccessExpression"; - SyntaxKind[SyntaxKind["ElementAccessExpression"] = 167] = "ElementAccessExpression"; - SyntaxKind[SyntaxKind["CallExpression"] = 168] = "CallExpression"; - SyntaxKind[SyntaxKind["NewExpression"] = 169] = "NewExpression"; - SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 170] = "TaggedTemplateExpression"; - SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 171] = "TypeAssertionExpression"; - SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 172] = "ParenthesizedExpression"; - SyntaxKind[SyntaxKind["FunctionExpression"] = 173] = "FunctionExpression"; - SyntaxKind[SyntaxKind["ArrowFunction"] = 174] = "ArrowFunction"; - SyntaxKind[SyntaxKind["DeleteExpression"] = 175] = "DeleteExpression"; - SyntaxKind[SyntaxKind["TypeOfExpression"] = 176] = "TypeOfExpression"; - SyntaxKind[SyntaxKind["VoidExpression"] = 177] = "VoidExpression"; - SyntaxKind[SyntaxKind["AwaitExpression"] = 178] = "AwaitExpression"; - SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 179] = "PrefixUnaryExpression"; - SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 180] = "PostfixUnaryExpression"; - SyntaxKind[SyntaxKind["BinaryExpression"] = 181] = "BinaryExpression"; - SyntaxKind[SyntaxKind["ConditionalExpression"] = 182] = "ConditionalExpression"; - SyntaxKind[SyntaxKind["TemplateExpression"] = 183] = "TemplateExpression"; - SyntaxKind[SyntaxKind["YieldExpression"] = 184] = "YieldExpression"; - SyntaxKind[SyntaxKind["SpreadElementExpression"] = 185] = "SpreadElementExpression"; - SyntaxKind[SyntaxKind["ClassExpression"] = 186] = "ClassExpression"; - SyntaxKind[SyntaxKind["OmittedExpression"] = 187] = "OmittedExpression"; - SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 188] = "ExpressionWithTypeArguments"; - SyntaxKind[SyntaxKind["AsExpression"] = 189] = "AsExpression"; + SyntaxKind[SyntaxKind["ArrayLiteralExpression"] = 166] = "ArrayLiteralExpression"; + SyntaxKind[SyntaxKind["ObjectLiteralExpression"] = 167] = "ObjectLiteralExpression"; + SyntaxKind[SyntaxKind["PropertyAccessExpression"] = 168] = "PropertyAccessExpression"; + SyntaxKind[SyntaxKind["ElementAccessExpression"] = 169] = "ElementAccessExpression"; + SyntaxKind[SyntaxKind["CallExpression"] = 170] = "CallExpression"; + SyntaxKind[SyntaxKind["NewExpression"] = 171] = "NewExpression"; + SyntaxKind[SyntaxKind["TaggedTemplateExpression"] = 172] = "TaggedTemplateExpression"; + SyntaxKind[SyntaxKind["TypeAssertionExpression"] = 173] = "TypeAssertionExpression"; + SyntaxKind[SyntaxKind["ParenthesizedExpression"] = 174] = "ParenthesizedExpression"; + SyntaxKind[SyntaxKind["FunctionExpression"] = 175] = "FunctionExpression"; + SyntaxKind[SyntaxKind["ArrowFunction"] = 176] = "ArrowFunction"; + SyntaxKind[SyntaxKind["DeleteExpression"] = 177] = "DeleteExpression"; + SyntaxKind[SyntaxKind["TypeOfExpression"] = 178] = "TypeOfExpression"; + SyntaxKind[SyntaxKind["VoidExpression"] = 179] = "VoidExpression"; + SyntaxKind[SyntaxKind["AwaitExpression"] = 180] = "AwaitExpression"; + SyntaxKind[SyntaxKind["PrefixUnaryExpression"] = 181] = "PrefixUnaryExpression"; + SyntaxKind[SyntaxKind["PostfixUnaryExpression"] = 182] = "PostfixUnaryExpression"; + SyntaxKind[SyntaxKind["BinaryExpression"] = 183] = "BinaryExpression"; + SyntaxKind[SyntaxKind["ConditionalExpression"] = 184] = "ConditionalExpression"; + SyntaxKind[SyntaxKind["TemplateExpression"] = 185] = "TemplateExpression"; + SyntaxKind[SyntaxKind["YieldExpression"] = 186] = "YieldExpression"; + SyntaxKind[SyntaxKind["SpreadElementExpression"] = 187] = "SpreadElementExpression"; + SyntaxKind[SyntaxKind["ClassExpression"] = 188] = "ClassExpression"; + SyntaxKind[SyntaxKind["OmittedExpression"] = 189] = "OmittedExpression"; + SyntaxKind[SyntaxKind["ExpressionWithTypeArguments"] = 190] = "ExpressionWithTypeArguments"; + SyntaxKind[SyntaxKind["AsExpression"] = 191] = "AsExpression"; // Misc - SyntaxKind[SyntaxKind["TemplateSpan"] = 190] = "TemplateSpan"; - SyntaxKind[SyntaxKind["SemicolonClassElement"] = 191] = "SemicolonClassElement"; + SyntaxKind[SyntaxKind["TemplateSpan"] = 192] = "TemplateSpan"; + SyntaxKind[SyntaxKind["SemicolonClassElement"] = 193] = "SemicolonClassElement"; // Element - SyntaxKind[SyntaxKind["Block"] = 192] = "Block"; - SyntaxKind[SyntaxKind["VariableStatement"] = 193] = "VariableStatement"; - SyntaxKind[SyntaxKind["EmptyStatement"] = 194] = "EmptyStatement"; - SyntaxKind[SyntaxKind["ExpressionStatement"] = 195] = "ExpressionStatement"; - SyntaxKind[SyntaxKind["IfStatement"] = 196] = "IfStatement"; - SyntaxKind[SyntaxKind["DoStatement"] = 197] = "DoStatement"; - SyntaxKind[SyntaxKind["WhileStatement"] = 198] = "WhileStatement"; - SyntaxKind[SyntaxKind["ForStatement"] = 199] = "ForStatement"; - SyntaxKind[SyntaxKind["ForInStatement"] = 200] = "ForInStatement"; - SyntaxKind[SyntaxKind["ForOfStatement"] = 201] = "ForOfStatement"; - SyntaxKind[SyntaxKind["ContinueStatement"] = 202] = "ContinueStatement"; - SyntaxKind[SyntaxKind["BreakStatement"] = 203] = "BreakStatement"; - SyntaxKind[SyntaxKind["ReturnStatement"] = 204] = "ReturnStatement"; - SyntaxKind[SyntaxKind["WithStatement"] = 205] = "WithStatement"; - SyntaxKind[SyntaxKind["SwitchStatement"] = 206] = "SwitchStatement"; - SyntaxKind[SyntaxKind["LabeledStatement"] = 207] = "LabeledStatement"; - SyntaxKind[SyntaxKind["ThrowStatement"] = 208] = "ThrowStatement"; - SyntaxKind[SyntaxKind["TryStatement"] = 209] = "TryStatement"; - SyntaxKind[SyntaxKind["DebuggerStatement"] = 210] = "DebuggerStatement"; - SyntaxKind[SyntaxKind["VariableDeclaration"] = 211] = "VariableDeclaration"; - SyntaxKind[SyntaxKind["VariableDeclarationList"] = 212] = "VariableDeclarationList"; - SyntaxKind[SyntaxKind["FunctionDeclaration"] = 213] = "FunctionDeclaration"; - SyntaxKind[SyntaxKind["ClassDeclaration"] = 214] = "ClassDeclaration"; - SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 215] = "InterfaceDeclaration"; - SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 216] = "TypeAliasDeclaration"; - SyntaxKind[SyntaxKind["EnumDeclaration"] = 217] = "EnumDeclaration"; - SyntaxKind[SyntaxKind["ModuleDeclaration"] = 218] = "ModuleDeclaration"; - SyntaxKind[SyntaxKind["ModuleBlock"] = 219] = "ModuleBlock"; - SyntaxKind[SyntaxKind["CaseBlock"] = 220] = "CaseBlock"; - SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 221] = "ImportEqualsDeclaration"; - SyntaxKind[SyntaxKind["ImportDeclaration"] = 222] = "ImportDeclaration"; - SyntaxKind[SyntaxKind["ImportClause"] = 223] = "ImportClause"; - SyntaxKind[SyntaxKind["NamespaceImport"] = 224] = "NamespaceImport"; - SyntaxKind[SyntaxKind["NamedImports"] = 225] = "NamedImports"; - SyntaxKind[SyntaxKind["ImportSpecifier"] = 226] = "ImportSpecifier"; - SyntaxKind[SyntaxKind["ExportAssignment"] = 227] = "ExportAssignment"; - SyntaxKind[SyntaxKind["ExportDeclaration"] = 228] = "ExportDeclaration"; - SyntaxKind[SyntaxKind["NamedExports"] = 229] = "NamedExports"; - SyntaxKind[SyntaxKind["ExportSpecifier"] = 230] = "ExportSpecifier"; - SyntaxKind[SyntaxKind["MissingDeclaration"] = 231] = "MissingDeclaration"; + SyntaxKind[SyntaxKind["Block"] = 194] = "Block"; + SyntaxKind[SyntaxKind["VariableStatement"] = 195] = "VariableStatement"; + SyntaxKind[SyntaxKind["EmptyStatement"] = 196] = "EmptyStatement"; + SyntaxKind[SyntaxKind["ExpressionStatement"] = 197] = "ExpressionStatement"; + SyntaxKind[SyntaxKind["IfStatement"] = 198] = "IfStatement"; + SyntaxKind[SyntaxKind["DoStatement"] = 199] = "DoStatement"; + SyntaxKind[SyntaxKind["WhileStatement"] = 200] = "WhileStatement"; + SyntaxKind[SyntaxKind["ForStatement"] = 201] = "ForStatement"; + SyntaxKind[SyntaxKind["ForInStatement"] = 202] = "ForInStatement"; + SyntaxKind[SyntaxKind["ForOfStatement"] = 203] = "ForOfStatement"; + SyntaxKind[SyntaxKind["ContinueStatement"] = 204] = "ContinueStatement"; + SyntaxKind[SyntaxKind["BreakStatement"] = 205] = "BreakStatement"; + SyntaxKind[SyntaxKind["ReturnStatement"] = 206] = "ReturnStatement"; + SyntaxKind[SyntaxKind["WithStatement"] = 207] = "WithStatement"; + SyntaxKind[SyntaxKind["SwitchStatement"] = 208] = "SwitchStatement"; + SyntaxKind[SyntaxKind["LabeledStatement"] = 209] = "LabeledStatement"; + SyntaxKind[SyntaxKind["ThrowStatement"] = 210] = "ThrowStatement"; + SyntaxKind[SyntaxKind["TryStatement"] = 211] = "TryStatement"; + SyntaxKind[SyntaxKind["DebuggerStatement"] = 212] = "DebuggerStatement"; + SyntaxKind[SyntaxKind["VariableDeclaration"] = 213] = "VariableDeclaration"; + SyntaxKind[SyntaxKind["VariableDeclarationList"] = 214] = "VariableDeclarationList"; + SyntaxKind[SyntaxKind["FunctionDeclaration"] = 215] = "FunctionDeclaration"; + SyntaxKind[SyntaxKind["ClassDeclaration"] = 216] = "ClassDeclaration"; + SyntaxKind[SyntaxKind["InterfaceDeclaration"] = 217] = "InterfaceDeclaration"; + SyntaxKind[SyntaxKind["TypeAliasDeclaration"] = 218] = "TypeAliasDeclaration"; + SyntaxKind[SyntaxKind["EnumDeclaration"] = 219] = "EnumDeclaration"; + SyntaxKind[SyntaxKind["ModuleDeclaration"] = 220] = "ModuleDeclaration"; + SyntaxKind[SyntaxKind["ModuleBlock"] = 221] = "ModuleBlock"; + SyntaxKind[SyntaxKind["CaseBlock"] = 222] = "CaseBlock"; + SyntaxKind[SyntaxKind["ImportEqualsDeclaration"] = 223] = "ImportEqualsDeclaration"; + SyntaxKind[SyntaxKind["ImportDeclaration"] = 224] = "ImportDeclaration"; + SyntaxKind[SyntaxKind["ImportClause"] = 225] = "ImportClause"; + SyntaxKind[SyntaxKind["NamespaceImport"] = 226] = "NamespaceImport"; + SyntaxKind[SyntaxKind["NamedImports"] = 227] = "NamedImports"; + SyntaxKind[SyntaxKind["ImportSpecifier"] = 228] = "ImportSpecifier"; + SyntaxKind[SyntaxKind["ExportAssignment"] = 229] = "ExportAssignment"; + SyntaxKind[SyntaxKind["ExportDeclaration"] = 230] = "ExportDeclaration"; + SyntaxKind[SyntaxKind["NamedExports"] = 231] = "NamedExports"; + SyntaxKind[SyntaxKind["ExportSpecifier"] = 232] = "ExportSpecifier"; + SyntaxKind[SyntaxKind["MissingDeclaration"] = 233] = "MissingDeclaration"; // Module references - SyntaxKind[SyntaxKind["ExternalModuleReference"] = 232] = "ExternalModuleReference"; + SyntaxKind[SyntaxKind["ExternalModuleReference"] = 234] = "ExternalModuleReference"; // JSX - SyntaxKind[SyntaxKind["JsxElement"] = 233] = "JsxElement"; - SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 234] = "JsxSelfClosingElement"; - SyntaxKind[SyntaxKind["JsxOpeningElement"] = 235] = "JsxOpeningElement"; - SyntaxKind[SyntaxKind["JsxText"] = 236] = "JsxText"; - SyntaxKind[SyntaxKind["JsxClosingElement"] = 237] = "JsxClosingElement"; - SyntaxKind[SyntaxKind["JsxAttribute"] = 238] = "JsxAttribute"; - SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 239] = "JsxSpreadAttribute"; - SyntaxKind[SyntaxKind["JsxExpression"] = 240] = "JsxExpression"; + SyntaxKind[SyntaxKind["JsxElement"] = 235] = "JsxElement"; + SyntaxKind[SyntaxKind["JsxSelfClosingElement"] = 236] = "JsxSelfClosingElement"; + SyntaxKind[SyntaxKind["JsxOpeningElement"] = 237] = "JsxOpeningElement"; + SyntaxKind[SyntaxKind["JsxText"] = 238] = "JsxText"; + SyntaxKind[SyntaxKind["JsxClosingElement"] = 239] = "JsxClosingElement"; + SyntaxKind[SyntaxKind["JsxAttribute"] = 240] = "JsxAttribute"; + SyntaxKind[SyntaxKind["JsxSpreadAttribute"] = 241] = "JsxSpreadAttribute"; + SyntaxKind[SyntaxKind["JsxExpression"] = 242] = "JsxExpression"; // Clauses - SyntaxKind[SyntaxKind["CaseClause"] = 241] = "CaseClause"; - SyntaxKind[SyntaxKind["DefaultClause"] = 242] = "DefaultClause"; - SyntaxKind[SyntaxKind["HeritageClause"] = 243] = "HeritageClause"; - SyntaxKind[SyntaxKind["CatchClause"] = 244] = "CatchClause"; + SyntaxKind[SyntaxKind["CaseClause"] = 243] = "CaseClause"; + SyntaxKind[SyntaxKind["DefaultClause"] = 244] = "DefaultClause"; + SyntaxKind[SyntaxKind["HeritageClause"] = 245] = "HeritageClause"; + SyntaxKind[SyntaxKind["CatchClause"] = 246] = "CatchClause"; // Property assignments - SyntaxKind[SyntaxKind["PropertyAssignment"] = 245] = "PropertyAssignment"; - SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 246] = "ShorthandPropertyAssignment"; + SyntaxKind[SyntaxKind["PropertyAssignment"] = 247] = "PropertyAssignment"; + SyntaxKind[SyntaxKind["ShorthandPropertyAssignment"] = 248] = "ShorthandPropertyAssignment"; // Enum - SyntaxKind[SyntaxKind["EnumMember"] = 247] = "EnumMember"; + SyntaxKind[SyntaxKind["EnumMember"] = 249] = "EnumMember"; // Top-level nodes - SyntaxKind[SyntaxKind["SourceFile"] = 248] = "SourceFile"; + SyntaxKind[SyntaxKind["SourceFile"] = 250] = "SourceFile"; // JSDoc nodes. - SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 249] = "JSDocTypeExpression"; + SyntaxKind[SyntaxKind["JSDocTypeExpression"] = 251] = "JSDocTypeExpression"; // The * type. - SyntaxKind[SyntaxKind["JSDocAllType"] = 250] = "JSDocAllType"; + SyntaxKind[SyntaxKind["JSDocAllType"] = 252] = "JSDocAllType"; // The ? type. - SyntaxKind[SyntaxKind["JSDocUnknownType"] = 251] = "JSDocUnknownType"; - SyntaxKind[SyntaxKind["JSDocArrayType"] = 252] = "JSDocArrayType"; - SyntaxKind[SyntaxKind["JSDocUnionType"] = 253] = "JSDocUnionType"; - SyntaxKind[SyntaxKind["JSDocTupleType"] = 254] = "JSDocTupleType"; - SyntaxKind[SyntaxKind["JSDocNullableType"] = 255] = "JSDocNullableType"; - SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 256] = "JSDocNonNullableType"; - SyntaxKind[SyntaxKind["JSDocRecordType"] = 257] = "JSDocRecordType"; - SyntaxKind[SyntaxKind["JSDocRecordMember"] = 258] = "JSDocRecordMember"; - SyntaxKind[SyntaxKind["JSDocTypeReference"] = 259] = "JSDocTypeReference"; - SyntaxKind[SyntaxKind["JSDocOptionalType"] = 260] = "JSDocOptionalType"; - SyntaxKind[SyntaxKind["JSDocFunctionType"] = 261] = "JSDocFunctionType"; - SyntaxKind[SyntaxKind["JSDocVariadicType"] = 262] = "JSDocVariadicType"; - SyntaxKind[SyntaxKind["JSDocConstructorType"] = 263] = "JSDocConstructorType"; - SyntaxKind[SyntaxKind["JSDocThisType"] = 264] = "JSDocThisType"; - SyntaxKind[SyntaxKind["JSDocComment"] = 265] = "JSDocComment"; - SyntaxKind[SyntaxKind["JSDocTag"] = 266] = "JSDocTag"; - SyntaxKind[SyntaxKind["JSDocParameterTag"] = 267] = "JSDocParameterTag"; - SyntaxKind[SyntaxKind["JSDocReturnTag"] = 268] = "JSDocReturnTag"; - SyntaxKind[SyntaxKind["JSDocTypeTag"] = 269] = "JSDocTypeTag"; - SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 270] = "JSDocTemplateTag"; + SyntaxKind[SyntaxKind["JSDocUnknownType"] = 253] = "JSDocUnknownType"; + SyntaxKind[SyntaxKind["JSDocArrayType"] = 254] = "JSDocArrayType"; + SyntaxKind[SyntaxKind["JSDocUnionType"] = 255] = "JSDocUnionType"; + SyntaxKind[SyntaxKind["JSDocTupleType"] = 256] = "JSDocTupleType"; + SyntaxKind[SyntaxKind["JSDocNullableType"] = 257] = "JSDocNullableType"; + SyntaxKind[SyntaxKind["JSDocNonNullableType"] = 258] = "JSDocNonNullableType"; + SyntaxKind[SyntaxKind["JSDocRecordType"] = 259] = "JSDocRecordType"; + SyntaxKind[SyntaxKind["JSDocRecordMember"] = 260] = "JSDocRecordMember"; + SyntaxKind[SyntaxKind["JSDocTypeReference"] = 261] = "JSDocTypeReference"; + SyntaxKind[SyntaxKind["JSDocOptionalType"] = 262] = "JSDocOptionalType"; + SyntaxKind[SyntaxKind["JSDocFunctionType"] = 263] = "JSDocFunctionType"; + SyntaxKind[SyntaxKind["JSDocVariadicType"] = 264] = "JSDocVariadicType"; + SyntaxKind[SyntaxKind["JSDocConstructorType"] = 265] = "JSDocConstructorType"; + SyntaxKind[SyntaxKind["JSDocThisType"] = 266] = "JSDocThisType"; + SyntaxKind[SyntaxKind["JSDocComment"] = 267] = "JSDocComment"; + SyntaxKind[SyntaxKind["JSDocTag"] = 268] = "JSDocTag"; + SyntaxKind[SyntaxKind["JSDocParameterTag"] = 269] = "JSDocParameterTag"; + SyntaxKind[SyntaxKind["JSDocReturnTag"] = 270] = "JSDocReturnTag"; + SyntaxKind[SyntaxKind["JSDocTypeTag"] = 271] = "JSDocTypeTag"; + SyntaxKind[SyntaxKind["JSDocTemplateTag"] = 272] = "JSDocTemplateTag"; // Synthesized list - SyntaxKind[SyntaxKind["SyntaxList"] = 271] = "SyntaxList"; + SyntaxKind[SyntaxKind["SyntaxList"] = 273] = "SyntaxList"; // Enum value count - SyntaxKind[SyntaxKind["Count"] = 272] = "Count"; + SyntaxKind[SyntaxKind["Count"] = 274] = "Count"; // Markers SyntaxKind[SyntaxKind["FirstAssignment"] = 56] = "FirstAssignment"; SyntaxKind[SyntaxKind["LastAssignment"] = 68] = "LastAssignment"; @@ -331,8 +333,8 @@ var ts; SyntaxKind[SyntaxKind["LastKeyword"] = 134] = "LastKeyword"; SyntaxKind[SyntaxKind["FirstFutureReservedWord"] = 106] = "FirstFutureReservedWord"; SyntaxKind[SyntaxKind["LastFutureReservedWord"] = 114] = "LastFutureReservedWord"; - SyntaxKind[SyntaxKind["FirstTypeNode"] = 151] = "FirstTypeNode"; - SyntaxKind[SyntaxKind["LastTypeNode"] = 160] = "LastTypeNode"; + SyntaxKind[SyntaxKind["FirstTypeNode"] = 150] = "FirstTypeNode"; + SyntaxKind[SyntaxKind["LastTypeNode"] = 162] = "LastTypeNode"; SyntaxKind[SyntaxKind["FirstPunctuation"] = 15] = "FirstPunctuation"; SyntaxKind[SyntaxKind["LastPunctuation"] = 68] = "LastPunctuation"; SyntaxKind[SyntaxKind["FirstToken"] = 0] = "FirstToken"; @@ -408,10 +410,14 @@ var ts; var ParserContextFlags = ts.ParserContextFlags; (function (JsxFlags) { JsxFlags[JsxFlags["None"] = 0] = "None"; + /** An element from a named property of the JSX.IntrinsicElements interface */ JsxFlags[JsxFlags["IntrinsicNamedElement"] = 1] = "IntrinsicNamedElement"; + /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */ JsxFlags[JsxFlags["IntrinsicIndexedElement"] = 2] = "IntrinsicIndexedElement"; - JsxFlags[JsxFlags["ClassElement"] = 4] = "ClassElement"; - JsxFlags[JsxFlags["UnknownElement"] = 8] = "UnknownElement"; + /** An element backed by a class, class-like, or function value */ + JsxFlags[JsxFlags["ValueElement"] = 4] = "ValueElement"; + /** Element resolution failed */ + JsxFlags[JsxFlags["UnknownElement"] = 16] = "UnknownElement"; JsxFlags[JsxFlags["IntrinsicElement"] = 3] = "IntrinsicElement"; })(ts.JsxFlags || (ts.JsxFlags = {})); var JsxFlags = ts.JsxFlags; @@ -426,7 +432,7 @@ var ts; function OperationCanceledException() { } return OperationCanceledException; - })(); + }()); ts.OperationCanceledException = OperationCanceledException; /** Return code used by getEmitOutput function to indicate status of the function */ (function (ExitStatus) { @@ -472,6 +478,11 @@ var ts; SymbolAccessibility[SymbolAccessibility["CannotBeNamed"] = 2] = "CannotBeNamed"; })(ts.SymbolAccessibility || (ts.SymbolAccessibility = {})); var SymbolAccessibility = ts.SymbolAccessibility; + (function (TypePredicateKind) { + TypePredicateKind[TypePredicateKind["This"] = 0] = "This"; + TypePredicateKind[TypePredicateKind["Identifier"] = 1] = "Identifier"; + })(ts.TypePredicateKind || (ts.TypePredicateKind = {})); + var TypePredicateKind = ts.TypePredicateKind; /** Indicates how to serialize the name for a TypeReferenceNode when emitting decorator * metadata */ /* @internal */ @@ -623,6 +634,7 @@ var ts; TypeFlags[TypeFlags["ESSymbol"] = 16777216] = "ESSymbol"; TypeFlags[TypeFlags["ThisType"] = 33554432] = "ThisType"; TypeFlags[TypeFlags["ObjectLiteralPatternWithComputedProperties"] = 67108864] = "ObjectLiteralPatternWithComputedProperties"; + TypeFlags[TypeFlags["PredicateType"] = 134217728] = "PredicateType"; /* @internal */ TypeFlags[TypeFlags["Intrinsic"] = 16777343] = "Intrinsic"; /* @internal */ @@ -633,7 +645,7 @@ var ts; TypeFlags[TypeFlags["UnionOrIntersection"] = 49152] = "UnionOrIntersection"; TypeFlags[TypeFlags["StructuredType"] = 130048] = "StructuredType"; /* @internal */ - TypeFlags[TypeFlags["RequiresWidening"] = 6291456] = "RequiresWidening"; + TypeFlags[TypeFlags["RequiresWidening"] = 140509184] = "RequiresWidening"; /* @internal */ TypeFlags[TypeFlags["PropagatingFlags"] = 14680064] = "PropagatingFlags"; })(ts.TypeFlags || (ts.TypeFlags = {})); @@ -648,6 +660,19 @@ var ts; IndexKind[IndexKind["Number"] = 1] = "Number"; })(ts.IndexKind || (ts.IndexKind = {})); var IndexKind = ts.IndexKind; + /* @internal */ + (function (SpecialPropertyAssignmentKind) { + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["None"] = 0] = "None"; + /// exports.name = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["ExportsProperty"] = 1] = "ExportsProperty"; + /// module.exports = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["ModuleExports"] = 2] = "ModuleExports"; + /// className.prototype.name = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["PrototypeProperty"] = 3] = "PrototypeProperty"; + /// this.name = expr + SpecialPropertyAssignmentKind[SpecialPropertyAssignmentKind["ThisProperty"] = 4] = "ThisProperty"; + })(ts.SpecialPropertyAssignmentKind || (ts.SpecialPropertyAssignmentKind = {})); + var SpecialPropertyAssignmentKind = ts.SpecialPropertyAssignmentKind; (function (DiagnosticCategory) { DiagnosticCategory[DiagnosticCategory["Warning"] = 0] = "Warning"; DiagnosticCategory[DiagnosticCategory["Error"] = 1] = "Error"; @@ -1068,9 +1093,11 @@ var ts; var count = array.length; if (count > 0) { var pos = 0; - var result = arguments.length <= 2 ? array[pos++] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos++; while (pos < count) { - result = f(result, array[pos++]); + result = f(result, array[pos]); + pos++; } return result; } @@ -1082,9 +1109,11 @@ var ts; if (array) { var pos = array.length - 1; if (pos >= 0) { - var result = arguments.length <= 2 ? array[pos--] : initial; + var result = arguments.length <= 2 ? array[pos] : initial; + pos--; while (pos >= 0) { - result = f(result, array[pos--]); + result = f(result, array[pos]); + pos--; } return result; } @@ -1177,6 +1206,32 @@ var ts; return result; } ts.arrayToMap = arrayToMap; + /** + * Reduce the properties of a map. + * + * @param map The map to reduce + * @param callback An aggregation function that is called for each entry in the map + * @param initial The initial value for the reduction. + */ + function reduceProperties(map, callback, initial) { + var result = initial; + if (map) { + for (var key in map) { + if (hasProperty(map, key)) { + result = callback(result, map[key], String(key)); + } + } + } + return result; + } + ts.reduceProperties = reduceProperties; + /** + * Tests whether a value is an array. + */ + function isArray(value) { + return Array.isArray ? Array.isArray(value) : value instanceof Array; + } + ts.isArray = isArray; function memoize(callback) { var value; return function () { @@ -1502,7 +1557,7 @@ var ts; } ts.getRelativePathToDirectoryOrUrl = getRelativePathToDirectoryOrUrl; function getBaseFileName(path) { - if (!path) { + if (path === undefined) { return undefined; } var i = path.lastIndexOf(ts.directorySeparator); @@ -1530,14 +1585,19 @@ var ts; /** * List of supported extensions in order of file resolution precedence. */ - ts.supportedExtensions = [".ts", ".tsx", ".d.ts"]; - ts.supportedJsExtensions = ts.supportedExtensions.concat(".js", ".jsx"); - function isSupportedSourceFileName(fileName) { + ts.supportedTypeScriptExtensions = [".ts", ".tsx", ".d.ts"]; + ts.supportedJavascriptExtensions = [".js", ".jsx"]; + var allSupportedExtensions = ts.supportedTypeScriptExtensions.concat(ts.supportedJavascriptExtensions); + function getSupportedExtensions(options) { + return options && options.allowJs ? allSupportedExtensions : ts.supportedTypeScriptExtensions; + } + ts.getSupportedExtensions = getSupportedExtensions; + function isSupportedSourceFileName(fileName, compilerOptions) { if (!fileName) { return false; } - for (var _i = 0, supportedExtensions_1 = ts.supportedExtensions; _i < supportedExtensions_1.length; _i++) { - var extension = supportedExtensions_1[_i]; + for (var _i = 0, _a = getSupportedExtensions(compilerOptions); _i < _a.length; _i++) { + var extension = _a[_i]; if (fileExtensionIs(fileName, extension)) { return true; } @@ -1556,22 +1616,6 @@ var ts; return path; } ts.removeFileExtension = removeFileExtension; - var backslashOrDoubleQuote = /[\"\\]/g; - var escapedCharsRegExp = /[\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g; - var escapedCharsMap = { - "\0": "\\0", - "\t": "\\t", - "\v": "\\v", - "\f": "\\f", - "\b": "\\b", - "\r": "\\r", - "\n": "\\n", - "\\": "\\\\", - "\"": "\\\"", - "\u2028": "\\u2028", - "\u2029": "\\u2029", - "\u0085": "\\u0085" // nextLine - }; function Symbol(flags, name) { this.flags = flags; this.name = name; @@ -1622,7 +1666,7 @@ var ts; } Debug.assert = assert; function fail(message) { - Debug.assert(false, message); + Debug.assert(/*expression*/ false, message); } Debug.fail = fail; })(Debug = ts.Debug || (ts.Debug = {})); @@ -1783,7 +1827,6 @@ var ts; var _fs = require("fs"); var _path = require("path"); var _os = require("os"); - var _tty = require("tty"); // average async stat takes about 30 microseconds // set chunk size to do 30 files in < 1 millisecond function createWatchedFileSet(interval, chunkSize) { @@ -1858,7 +1901,7 @@ var 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 @@ -1869,9 +1912,6 @@ var ts; // to increase the chunk size or decrease the interval // time dynamically to match the large reference set? var watchedFileSet = createWatchedFileSet(); - function isNode4OrLater() { - return parseInt(process.version.charAt(1)) >= 4; - } var platform = _os.platform(); // win32\win64 are case insensitive platforms, MacOS (darwin) by default is also case insensitive var useCaseSensitiveFileNames = platform !== "win32" && platform !== "win64" && platform !== "darwin"; @@ -1965,17 +2005,13 @@ var ts; // and is more efficient than `fs.watchFile` (ref: https://github.com/nodejs/node/pull/2649 // and https://github.com/Microsoft/TypeScript/issues/4643), therefore // if the current node.js version is newer than 4, use `fs.watch` instead. - if (isNode4OrLater()) { - // Note: in node the callback of fs.watch is given only the relative file name as a parameter - return _fs.watch(fileName, function (eventName, relativeFileName) { return callback(fileName); }); - } var watchedFile = watchedFileSet.addFile(fileName, callback); return { close: function () { return watchedFileSet.removeFile(watchedFile); } }; }, watchDirectory: function (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, { persistent: true, recursive: !!recursive }, function (eventName, relativeFileName) { // In watchDirectory we only care about adding and removing files (when event name is @@ -2020,6 +2056,33 @@ var ts; } }; } + function getChakraSystem() { + return { + newLine: ChakraHost.newLine || "\r\n", + args: ChakraHost.args, + useCaseSensitiveFileNames: !!ChakraHost.useCaseSensitiveFileNames, + write: ChakraHost.echo, + readFile: function (path, encoding) { + // encoding is automatically handled by the implementation in ChakraHost + return ChakraHost.readFile(path); + }, + writeFile: function (path, data, writeByteOrderMark) { + // If a BOM is required, emit one + if (writeByteOrderMark) { + data = "\uFEFF" + data; + } + ChakraHost.writeFile(path, data); + }, + resolvePath: ChakraHost.resolvePath, + fileExists: ChakraHost.fileExists, + directoryExists: ChakraHost.directoryExists, + createDirectory: ChakraHost.createDirectory, + getExecutingFilePath: function () { return ChakraHost.executingFile; }, + getCurrentDirectory: function () { return ChakraHost.currentDirectory; }, + readDirectory: ChakraHost.readDirectory, + exit: ChakraHost.quit + }; + } if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } @@ -2028,6 +2091,9 @@ var ts; // process.browser check excludes webpack and browserify return getNodeSystem(); } + else if (typeof ChakraHost !== "undefined") { + return getChakraSystem(); + } else { return undefined; // Unsupported host } @@ -2148,7 +2214,7 @@ var ts; Modifiers_not_permitted_on_index_signature_members: { code: 1145, category: ts.DiagnosticCategory.Error, key: "Modifiers_not_permitted_on_index_signature_members_1145", message: "Modifiers not permitted on index signature members." }, Declaration_expected: { code: 1146, category: ts.DiagnosticCategory.Error, key: "Declaration_expected_1146", message: "Declaration expected." }, Import_declarations_in_a_namespace_cannot_reference_a_module: { code: 1147, category: ts.DiagnosticCategory.Error, key: "Import_declarations_in_a_namespace_cannot_reference_a_module_1147", message: "Import declarations in a namespace cannot reference a module." }, - Cannot_compile_modules_unless_the_module_flag_is_provided: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_1148", message: "Cannot compile modules unless the '--module' flag is provided." }, + Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file: { code: 1148, category: ts.DiagnosticCategory.Error, key: "Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_optio_1148", message: "Cannot compile modules unless the '--module' flag is provided. Consider setting the 'module' compiler option in a 'tsconfig.json' file." }, File_name_0_differs_from_already_included_file_name_1_only_in_casing: { code: 1149, category: ts.DiagnosticCategory.Error, key: "File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149", message: "File name '{0}' differs from already included file name '{1}' only in casing" }, new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead: { code: 1150, category: ts.DiagnosticCategory.Error, key: "new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead_1150", message: "'new T[]' cannot be used to create an array. Use 'new Array()' instead." }, const_declarations_must_be_initialized: { code: 1155, category: ts.DiagnosticCategory.Error, key: "const_declarations_must_be_initialized_1155", message: "'const' declarations must be initialized" }, @@ -2235,6 +2301,10 @@ var ts; _0_modifier_cannot_be_used_with_1_modifier: { code: 1243, category: ts.DiagnosticCategory.Error, key: "_0_modifier_cannot_be_used_with_1_modifier_1243", message: "'{0}' modifier cannot be used with '{1}' modifier." }, Abstract_methods_can_only_appear_within_an_abstract_class: { code: 1244, category: ts.DiagnosticCategory.Error, key: "Abstract_methods_can_only_appear_within_an_abstract_class_1244", message: "Abstract methods can only appear within an abstract class." }, Method_0_cannot_have_an_implementation_because_it_is_marked_abstract: { code: 1245, category: ts.DiagnosticCategory.Error, key: "Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245", message: "Method '{0}' cannot have an implementation because it is marked abstract." }, + An_interface_property_cannot_have_an_initializer: { code: 1246, category: ts.DiagnosticCategory.Error, key: "An_interface_property_cannot_have_an_initializer_1246", message: "An interface property cannot have an initializer." }, + A_type_literal_property_cannot_have_an_initializer: { code: 1247, category: ts.DiagnosticCategory.Error, key: "A_type_literal_property_cannot_have_an_initializer_1247", message: "A type literal property cannot have an initializer." }, + A_class_member_cannot_have_the_0_keyword: { code: 1248, category: ts.DiagnosticCategory.Error, key: "A_class_member_cannot_have_the_0_keyword_1248", message: "A class member cannot have the '{0}' keyword." }, + A_decorator_can_only_decorate_a_method_implementation_not_an_overload: { code: 1249, category: ts.DiagnosticCategory.Error, key: "A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249", message: "A decorator can only decorate a method implementation, not an overload." }, with_statements_are_not_allowed_in_an_async_function_block: { code: 1300, category: ts.DiagnosticCategory.Error, key: "with_statements_are_not_allowed_in_an_async_function_block_1300", message: "'with' statements are not allowed in an async function block." }, await_expression_is_only_allowed_within_an_async_function: { code: 1308, category: ts.DiagnosticCategory.Error, key: "await_expression_is_only_allowed_within_an_async_function_1308", message: "'await' expression is only allowed within an async function." }, Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher: { code: 1311, category: ts.DiagnosticCategory.Error, key: "Async_functions_are_only_available_when_targeting_ECMAScript_6_and_higher_1311", message: "Async functions are only available when targeting ECMAScript 6 and higher." }, @@ -2248,11 +2318,12 @@ var ts; Module_0_has_no_exported_member_1: { code: 2305, category: ts.DiagnosticCategory.Error, key: "Module_0_has_no_exported_member_1_2305", message: "Module '{0}' has no exported member '{1}'." }, File_0_is_not_a_module: { code: 2306, category: ts.DiagnosticCategory.Error, key: "File_0_is_not_a_module_2306", message: "File '{0}' is not a module." }, Cannot_find_module_0: { code: 2307, category: ts.DiagnosticCategory.Error, key: "Cannot_find_module_0_2307", message: "Cannot find module '{0}'." }, + Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity: { code: 2308, category: ts.DiagnosticCategory.Error, key: "Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308", message: "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity." }, An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements: { code: 2309, category: ts.DiagnosticCategory.Error, key: "An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309", message: "An export assignment cannot be used in a module with other exported elements." }, Type_0_recursively_references_itself_as_a_base_type: { code: 2310, category: ts.DiagnosticCategory.Error, key: "Type_0_recursively_references_itself_as_a_base_type_2310", message: "Type '{0}' recursively references itself as a base type." }, A_class_may_only_extend_another_class: { code: 2311, category: ts.DiagnosticCategory.Error, key: "A_class_may_only_extend_another_class_2311", message: "A class may only extend another class." }, An_interface_may_only_extend_a_class_or_another_interface: { code: 2312, category: ts.DiagnosticCategory.Error, key: "An_interface_may_only_extend_a_class_or_another_interface_2312", message: "An interface may only extend a class or another interface." }, - Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list_2313", message: "Constraint of a type parameter cannot reference any type parameter from the same type parameter list." }, + Type_parameter_0_has_a_circular_constraint: { code: 2313, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_has_a_circular_constraint_2313", message: "Type parameter '{0}' has a circular constraint." }, Generic_type_0_requires_1_type_argument_s: { code: 2314, category: ts.DiagnosticCategory.Error, key: "Generic_type_0_requires_1_type_argument_s_2314", message: "Generic type '{0}' requires {1} type argument(s)." }, Type_0_is_not_generic: { code: 2315, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_generic_2315", message: "Type '{0}' is not generic." }, Global_type_0_must_be_a_class_or_interface_type: { code: 2316, category: ts.DiagnosticCategory.Error, key: "Global_type_0_must_be_a_class_or_interface_type_2316", message: "Global type '{0}' must be a class or interface type." }, @@ -2262,6 +2333,7 @@ var ts; Interface_0_cannot_simultaneously_extend_types_1_and_2: { code: 2320, category: ts.DiagnosticCategory.Error, key: "Interface_0_cannot_simultaneously_extend_types_1_and_2_2320", message: "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'." }, Excessive_stack_depth_comparing_types_0_and_1: { code: 2321, category: ts.DiagnosticCategory.Error, key: "Excessive_stack_depth_comparing_types_0_and_1_2321", message: "Excessive stack depth comparing types '{0}' and '{1}'." }, Type_0_is_not_assignable_to_type_1: { code: 2322, category: ts.DiagnosticCategory.Error, key: "Type_0_is_not_assignable_to_type_1_2322", message: "Type '{0}' is not assignable to type '{1}'." }, + Cannot_redeclare_exported_variable_0: { code: 2323, category: ts.DiagnosticCategory.Error, key: "Cannot_redeclare_exported_variable_0_2323", message: "Cannot redeclare exported variable '{0}'." }, Property_0_is_missing_in_type_1: { code: 2324, category: ts.DiagnosticCategory.Error, key: "Property_0_is_missing_in_type_1_2324", message: "Property '{0}' is missing in type '{1}'." }, Property_0_is_private_in_type_1_but_not_in_type_2: { code: 2325, category: ts.DiagnosticCategory.Error, key: "Property_0_is_private_in_type_1_but_not_in_type_2_2325", message: "Property '{0}' is private in type '{1}' but not in type '{2}'." }, Types_of_property_0_are_incompatible: { code: 2326, category: ts.DiagnosticCategory.Error, key: "Types_of_property_0_are_incompatible_2326", message: "Types of property '{0}' are incompatible." }, @@ -2332,6 +2404,7 @@ var ts; Overload_signature_is_not_compatible_with_function_implementation: { code: 2394, category: ts.DiagnosticCategory.Error, key: "Overload_signature_is_not_compatible_with_function_implementation_2394", message: "Overload signature is not compatible with function implementation." }, Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local: { code: 2395, category: ts.DiagnosticCategory.Error, key: "Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395", message: "Individual declarations in merged declaration '{0}' must be all exported or all local." }, Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters: { code: 2396, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396", message: "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters." }, + Declaration_name_conflicts_with_built_in_global_identifier_0: { code: 2397, category: ts.DiagnosticCategory.Error, key: "Declaration_name_conflicts_with_built_in_global_identifier_0_2397", message: "Declaration name conflicts with built-in global identifier '{0}'." }, Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference: { code: 2399, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399", message: "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference." }, Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference: { code: 2400, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400", message: "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference." }, Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference: { code: 2401, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference_2401", message: "Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference." }, @@ -2445,6 +2518,8 @@ var ts; Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2: { code: 2515, category: ts.DiagnosticCategory.Error, key: "Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515", message: "Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'." }, All_declarations_of_an_abstract_method_must_be_consecutive: { code: 2516, category: ts.DiagnosticCategory.Error, key: "All_declarations_of_an_abstract_method_must_be_consecutive_2516", message: "All declarations of an abstract method must be consecutive." }, Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type: { code: 2517, category: ts.DiagnosticCategory.Error, key: "Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517", message: "Cannot assign an abstract constructor type to a non-abstract constructor type." }, + A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard: { code: 2518, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518", message: "A 'this'-based type guard is not compatible with a parameter-based type guard." }, + A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods: { code: 2519, category: ts.DiagnosticCategory.Error, key: "A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_r_2519", message: "A 'this'-based type predicate is only allowed within a class or interface's members, get accessors, or return type positions for functions and methods." }, Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions: { code: 2520, category: ts.DiagnosticCategory.Error, key: "Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520", message: "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions." }, Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions: { code: 2521, category: ts.DiagnosticCategory.Error, key: "Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions_2521", message: "Expression resolves to variable declaration '{0}' that compiler uses to support async functions." }, The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_function_expression: { code: 2522, category: ts.DiagnosticCategory.Error, key: "The_arguments_object_cannot_be_referenced_in_an_async_arrow_function_Consider_using_a_standard_async_2522", message: "The 'arguments' object cannot be referenced in an async arrow function. Consider using a standard async function expression." }, @@ -2454,7 +2529,7 @@ var ts; A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface: { code: 2526, category: ts.DiagnosticCategory.Error, key: "A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526", message: "A 'this' type is available only in a non-static member of a class or interface." }, The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary: { code: 2527, category: ts.DiagnosticCategory.Error, key: "The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary_2527", message: "The inferred type of '{0}' references an inaccessible 'this' type. A type annotation is necessary." }, A_module_cannot_have_multiple_default_exports: { code: 2528, category: ts.DiagnosticCategory.Error, key: "A_module_cannot_have_multiple_default_exports_2528", message: "A module cannot have multiple default exports." }, - JSX_element_attributes_type_0_must_be_an_object_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_must_be_an_object_type_2600", message: "JSX element attributes type '{0}' must be an object type." }, + JSX_element_attributes_type_0_may_not_be_a_union_type: { code: 2600, category: ts.DiagnosticCategory.Error, key: "JSX_element_attributes_type_0_may_not_be_a_union_type_2600", message: "JSX element attributes type '{0}' may not be a union type." }, The_return_type_of_a_JSX_element_constructor_must_return_an_object_type: { code: 2601, category: ts.DiagnosticCategory.Error, key: "The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601", message: "The return type of a JSX element constructor must return an object type." }, JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist: { code: 2602, category: ts.DiagnosticCategory.Error, key: "JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602", message: "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist." }, Property_0_in_type_1_is_not_assignable_to_type_2: { code: 2603, category: ts.DiagnosticCategory.Error, key: "Property_0_in_type_1_is_not_assignable_to_type_2_2603", message: "Property '{0}' in type '{1}' is not assignable to type '{2}'" }, @@ -2470,6 +2545,9 @@ var ts; Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition: { code: 2654, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_pack_2654", message: "Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition." }, Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition: { code: 2656, category: ts.DiagnosticCategory.Error, key: "Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_2656", message: "Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition." }, JSX_expressions_must_have_one_parent_element: { code: 2657, category: ts.DiagnosticCategory.Error, key: "JSX_expressions_must_have_one_parent_element_2657", message: "JSX expressions must have one parent element" }, + Type_0_provides_no_match_for_the_signature_1: { code: 2658, category: ts.DiagnosticCategory.Error, key: "Type_0_provides_no_match_for_the_signature_1_2658", message: "Type '{0}' provides no match for the signature '{1}'" }, + super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher: { code: 2659, category: ts.DiagnosticCategory.Error, key: "super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659", message: "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher." }, + super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions: { code: 2660, category: ts.DiagnosticCategory.Error, key: "super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660", message: "'super' can only be referenced in members of derived classes or object literal expressions." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: ts.DiagnosticCategory.Error, key: "Import_declaration_0_is_using_private_name_1_4000", message: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002", message: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: ts.DiagnosticCategory.Error, key: "Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004", message: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, @@ -2554,6 +2632,11 @@ var ts; Option_0_cannot_be_specified_without_specifying_option_1: { code: 5052, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_without_specifying_option_1_5052", message: "Option '{0}' cannot be specified without specifying option '{1}'." }, Option_0_cannot_be_specified_with_option_1: { code: 5053, category: ts.DiagnosticCategory.Error, key: "Option_0_cannot_be_specified_with_option_1_5053", message: "Option '{0}' cannot be specified with option '{1}'." }, A_tsconfig_json_file_is_already_defined_at_Colon_0: { code: 5054, category: ts.DiagnosticCategory.Error, key: "A_tsconfig_json_file_is_already_defined_at_Colon_0_5054", message: "A 'tsconfig.json' file is already defined at: '{0}'." }, + Cannot_write_file_0_because_it_would_overwrite_input_file: { code: 5055, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_overwrite_input_file_5055", message: "Cannot write file '{0}' because it would overwrite input file." }, + Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files: { code: 5056, category: ts.DiagnosticCategory.Error, key: "Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056", message: "Cannot write file '{0}' because it would be overwritten by multiple input files." }, + Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0: { code: 5057, category: ts.DiagnosticCategory.Error, key: "Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057", message: "Cannot find a tsconfig.json file at the specified directory: '{0}'" }, + The_specified_path_does_not_exist_Colon_0: { code: 5058, category: ts.DiagnosticCategory.Error, key: "The_specified_path_does_not_exist_Colon_0_5058", message: "The specified path does not exist: '{0}'" }, + Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier: { code: 5059, category: ts.DiagnosticCategory.Error, key: "Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier_5059", message: "Invalide value for '--reactNamespace'. '{0}' is not a valid identifier." }, Concatenate_and_emit_output_to_single_file: { code: 6001, category: ts.DiagnosticCategory.Message, key: "Concatenate_and_emit_output_to_single_file_6001", message: "Concatenate and emit output to single file." }, Generates_corresponding_d_ts_file: { code: 6002, category: ts.DiagnosticCategory.Message, key: "Generates_corresponding_d_ts_file_6002", message: "Generates corresponding '.d.ts' file." }, Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations: { code: 6003, category: ts.DiagnosticCategory.Message, key: "Specifies_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003", message: "Specifies the location where debugger should locate map files instead of generated locations." }, @@ -2564,6 +2647,7 @@ var ts; Do_not_emit_outputs_if_any_errors_were_reported: { code: 6008, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_if_any_errors_were_reported_6008", message: "Do not emit outputs if any errors were reported." }, Do_not_emit_comments_to_output: { code: 6009, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_comments_to_output_6009", message: "Do not emit comments to output." }, Do_not_emit_outputs: { code: 6010, category: ts.DiagnosticCategory.Message, key: "Do_not_emit_outputs_6010", message: "Do not emit outputs." }, + Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking: { code: 6011, category: ts.DiagnosticCategory.Message, key: "Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011", message: "Allow default imports from modules with no default export. This does not affect code emit, just typechecking." }, Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental: { code: 6015, category: ts.DiagnosticCategory.Message, key: "Specify_ECMAScript_target_version_Colon_ES3_default_ES5_or_ES2015_experimental_6015", message: "Specify ECMAScript target version: 'ES3' (default), 'ES5', or 'ES2015' (experimental)" }, Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015: { code: 6016, category: ts.DiagnosticCategory.Message, key: "Specify_module_code_generation_Colon_commonjs_amd_system_umd_or_es2015_6016", message: "Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'" }, Print_this_message: { code: 6017, category: ts.DiagnosticCategory.Message, key: "Print_this_message_6017", message: "Print this message." }, @@ -2619,6 +2703,8 @@ var ts; Specify_JSX_code_generation_Colon_preserve_or_react: { code: 6080, category: ts.DiagnosticCategory.Message, key: "Specify_JSX_code_generation_Colon_preserve_or_react_6080", message: "Specify JSX code generation: 'preserve' or 'react'" }, Argument_for_jsx_must_be_preserve_or_react: { code: 6081, category: ts.DiagnosticCategory.Message, key: "Argument_for_jsx_must_be_preserve_or_react_6081", message: "Argument for '--jsx' must be 'preserve' or 'react'." }, Only_amd_and_system_modules_are_supported_alongside_0: { code: 6082, category: ts.DiagnosticCategory.Error, key: "Only_amd_and_system_modules_are_supported_alongside_0_6082", message: "Only 'amd' and 'system' modules are supported alongside --{0}." }, + Allow_javascript_files_to_be_compiled: { code: 6083, category: ts.DiagnosticCategory.Message, key: "Allow_javascript_files_to_be_compiled_6083", message: "Allow javascript files to be compiled." }, + Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit: { code: 6084, category: ts.DiagnosticCategory.Message, key: "Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit_6084", message: "Specifies the object invoked for createElement and __spread when targeting 'react' JSX emit" }, Variable_0_implicitly_has_an_1_type: { code: 7005, category: ts.DiagnosticCategory.Error, key: "Variable_0_implicitly_has_an_1_type_7005", message: "Variable '{0}' implicitly has an '{1}' type." }, Parameter_0_implicitly_has_an_1_type: { code: 7006, category: ts.DiagnosticCategory.Error, key: "Parameter_0_implicitly_has_an_1_type_7006", message: "Parameter '{0}' implicitly has an '{1}' type." }, Member_0_implicitly_has_an_1_type: { code: 7008, category: ts.DiagnosticCategory.Error, key: "Member_0_implicitly_has_an_1_type_7008", message: "Member '{0}' implicitly has an '{1}' type." }, @@ -2666,7 +2752,8 @@ var ts; Cannot_use_JSX_unless_the_jsx_flag_is_provided: { code: 17004, category: ts.DiagnosticCategory.Error, key: "Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004", message: "Cannot use JSX unless the '--jsx' flag is provided." }, A_constructor_cannot_contain_a_super_call_when_its_class_extends_null: { code: 17005, category: ts.DiagnosticCategory.Error, key: "A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005", message: "A constructor cannot contain a 'super' call when its class extends 'null'" }, An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17006, category: ts.DiagnosticCategory.Error, key: "An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006", message: "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, - A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." } + A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses: { code: 17007, category: ts.DiagnosticCategory.Error, key: "A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007", message: "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses." }, + JSX_element_0_has_no_corresponding_closing_tag: { code: 17008, category: ts.DiagnosticCategory.Error, key: "JSX_element_0_has_no_corresponding_closing_tag_17008", message: "JSX element '{0}' has no corresponding closing tag." } }; })(ts || (ts = {})); /// @@ -2906,7 +2993,8 @@ var ts; var pos = 0; var lineStart = 0; while (pos < text.length) { - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 13 /* carriageReturn */: if (text.charCodeAt(pos) === 10 /* lineFeed */) { @@ -3040,6 +3128,11 @@ var ts; ts.couldStartTrivia = couldStartTrivia; /* @internal */ function skipTrivia(text, pos, stopAfterLineBreak) { + // Using ! with a greater than test is a fast way of testing the following conditions: + // pos === undefined || pos === null || isNaN(pos) || pos < 0; + if (!(pos >= 0)) { + return pos; + } // Keep in sync with couldStartTrivia while (true) { var ch = text.charCodeAt(pos); @@ -3276,6 +3369,19 @@ var ts; ch > 127 /* maxAsciiCharacter */ && isUnicodeIdentifierPart(ch, languageVersion); } ts.isIdentifierPart = isIdentifierPart; + /* @internal */ + function isIdentifier(name, languageVersion) { + if (!isIdentifierStart(name.charCodeAt(0), languageVersion)) { + return false; + } + for (var i = 1, n = name.length; i < n; i++) { + if (!isIdentifierPart(name.charCodeAt(i), languageVersion)) { + return false; + } + } + return true; + } + ts.isIdentifier = isIdentifier; // Creates a scanner over a (possibly unspecified) range of a piece of text. function createScanner(languageVersion, skipTrivia, languageVariant, text, onError, start, length) { if (languageVariant === void 0) { languageVariant = 0 /* Standard */; } @@ -3398,7 +3504,8 @@ var ts; return value; } function scanString() { - var quote = text.charCodeAt(pos++); + var quote = text.charCodeAt(pos); + pos++; var result = ""; var start = pos; while (true) { @@ -3494,7 +3601,8 @@ var ts; error(ts.Diagnostics.Unexpected_end_of_text); return ""; } - var ch = text.charCodeAt(pos++); + var ch = text.charCodeAt(pos); + pos++; switch (ch) { case 48 /* _0 */: return "\0"; @@ -3721,7 +3829,8 @@ var ts; } return pos += 2, token = 31 /* ExclamationEqualsToken */; } - return pos++, token = 49 /* ExclamationToken */; + pos++; + return token = 49 /* ExclamationToken */; case 34 /* doubleQuote */: case 39 /* singleQuote */: tokenValue = scanString(); @@ -3732,7 +3841,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 62 /* PercentEqualsToken */; } - return pos++, token = 40 /* PercentToken */; + pos++; + return token = 40 /* PercentToken */; case 38 /* ampersand */: if (text.charCodeAt(pos + 1) === 38 /* ampersand */) { return pos += 2, token = 51 /* AmpersandAmpersandToken */; @@ -3740,11 +3850,14 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 66 /* AmpersandEqualsToken */; } - return pos++, token = 46 /* AmpersandToken */; + pos++; + return token = 46 /* AmpersandToken */; case 40 /* openParen */: - return pos++, token = 17 /* OpenParenToken */; + pos++; + return token = 17 /* OpenParenToken */; case 41 /* closeParen */: - return pos++, token = 18 /* CloseParenToken */; + pos++; + return token = 18 /* CloseParenToken */; case 42 /* asterisk */: if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 59 /* AsteriskEqualsToken */; @@ -3755,7 +3868,8 @@ var ts; } return pos += 2, token = 38 /* AsteriskAsteriskToken */; } - return pos++, token = 37 /* AsteriskToken */; + pos++; + return token = 37 /* AsteriskToken */; case 43 /* plus */: if (text.charCodeAt(pos + 1) === 43 /* plus */) { return pos += 2, token = 41 /* PlusPlusToken */; @@ -3763,9 +3877,11 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 57 /* PlusEqualsToken */; } - return pos++, token = 35 /* PlusToken */; + pos++; + return token = 35 /* PlusToken */; case 44 /* comma */: - return pos++, token = 24 /* CommaToken */; + pos++; + return token = 24 /* CommaToken */; case 45 /* minus */: if (text.charCodeAt(pos + 1) === 45 /* minus */) { return pos += 2, token = 42 /* MinusMinusToken */; @@ -3773,7 +3889,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 58 /* MinusEqualsToken */; } - return pos++, token = 36 /* MinusToken */; + pos++; + return token = 36 /* MinusToken */; case 46 /* dot */: if (isDigit(text.charCodeAt(pos + 1))) { tokenValue = scanNumber(); @@ -3782,7 +3899,8 @@ var ts; if (text.charCodeAt(pos + 1) === 46 /* dot */ && text.charCodeAt(pos + 2) === 46 /* dot */) { return pos += 3, token = 22 /* DotDotDotToken */; } - return pos++, token = 21 /* DotToken */; + pos++; + return token = 21 /* DotToken */; case 47 /* slash */: // Single-line comment if (text.charCodeAt(pos + 1) === 47 /* slash */) { @@ -3830,7 +3948,8 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 61 /* SlashEqualsToken */; } - return pos++, token = 39 /* SlashToken */; + pos++; + return token = 39 /* SlashToken */; case 48 /* _0 */: if (pos + 2 < end && (text.charCodeAt(pos + 1) === 88 /* X */ || text.charCodeAt(pos + 1) === 120 /* x */)) { pos += 2; @@ -3882,9 +4001,11 @@ var ts; tokenValue = scanNumber(); return token = 8 /* NumericLiteral */; case 58 /* colon */: - return pos++, token = 54 /* ColonToken */; + pos++; + return token = 54 /* ColonToken */; case 59 /* semicolon */: - return pos++, token = 23 /* SemicolonToken */; + pos++; + return token = 23 /* SemicolonToken */; case 60 /* lessThan */: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -3909,7 +4030,8 @@ var ts; text.charCodeAt(pos + 2) !== 42 /* asterisk */) { return pos += 2, token = 26 /* LessThanSlashToken */; } - return pos++, token = 25 /* LessThanToken */; + pos++; + return token = 25 /* LessThanToken */; case 61 /* equals */: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -3929,7 +4051,8 @@ var ts; if (text.charCodeAt(pos + 1) === 62 /* greaterThan */) { return pos += 2, token = 34 /* EqualsGreaterThanToken */; } - return pos++, token = 56 /* EqualsToken */; + pos++; + return token = 56 /* EqualsToken */; case 62 /* greaterThan */: if (isConflictMarkerTrivia(text, pos)) { pos = scanConflictMarkerTrivia(text, pos, error); @@ -3940,20 +4063,26 @@ var ts; return token = 7 /* ConflictMarkerTrivia */; } } - return pos++, token = 27 /* GreaterThanToken */; + pos++; + return token = 27 /* GreaterThanToken */; case 63 /* question */: - return pos++, token = 53 /* QuestionToken */; + pos++; + return token = 53 /* QuestionToken */; case 91 /* openBracket */: - return pos++, token = 19 /* OpenBracketToken */; + pos++; + return token = 19 /* OpenBracketToken */; case 93 /* closeBracket */: - return pos++, token = 20 /* CloseBracketToken */; + pos++; + return token = 20 /* CloseBracketToken */; case 94 /* caret */: if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 68 /* CaretEqualsToken */; } - return pos++, token = 48 /* CaretToken */; + pos++; + return token = 48 /* CaretToken */; case 123 /* openBrace */: - return pos++, token = 15 /* OpenBraceToken */; + pos++; + return token = 15 /* OpenBraceToken */; case 124 /* bar */: if (text.charCodeAt(pos + 1) === 124 /* bar */) { return pos += 2, token = 52 /* BarBarToken */; @@ -3961,13 +4090,17 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 67 /* BarEqualsToken */; } - return pos++, token = 47 /* BarToken */; + pos++; + return token = 47 /* BarToken */; case 125 /* closeBrace */: - return pos++, token = 16 /* CloseBraceToken */; + pos++; + return token = 16 /* CloseBraceToken */; case 126 /* tilde */: - return pos++, token = 50 /* TildeToken */; + pos++; + return token = 50 /* TildeToken */; case 64 /* at */: - return pos++, token = 55 /* AtToken */; + pos++; + return token = 55 /* AtToken */; case 92 /* backslash */: var cookedChar = peekUnicodeEscape(); if (cookedChar >= 0 && isIdentifierStart(cookedChar, languageVersion)) { @@ -3976,7 +4109,8 @@ var ts; return token = getIdentifierToken(); } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0 /* Unknown */; + pos++; + return token = 0 /* Unknown */; default: if (isIdentifierStart(ch, languageVersion)) { pos++; @@ -3998,7 +4132,8 @@ var ts; continue; } error(ts.Diagnostics.Invalid_character); - return pos++, token = 0 /* Unknown */; + pos++; + return token = 0 /* Unknown */; } } } @@ -4014,10 +4149,12 @@ var ts; if (text.charCodeAt(pos + 1) === 61 /* equals */) { return pos += 2, token = 64 /* GreaterThanGreaterThanEqualsToken */; } - return pos++, token = 44 /* GreaterThanGreaterThanToken */; + pos++; + return token = 44 /* GreaterThanGreaterThanToken */; } if (text.charCodeAt(pos) === 61 /* equals */) { - return pos++, token = 29 /* GreaterThanEqualsToken */; + pos++; + return token = 29 /* GreaterThanEqualsToken */; } } return token; @@ -4109,7 +4246,7 @@ var ts; break; } } - return token = 236 /* JsxText */; + return token = 238 /* JsxText */; } // Scans a JSX identifier; these differ from normal identifiers in that // they allow dashes @@ -4150,10 +4287,10 @@ var ts; return result; } function lookAhead(callback) { - return speculationHelper(callback, /*isLookahead:*/ true); + return speculationHelper(callback, /*isLookahead*/ true); } function tryScan(callback) { - return speculationHelper(callback, /*isLookahead:*/ false); + return speculationHelper(callback, /*isLookahead*/ false); } function setText(newText, start, length) { text = newText || ""; @@ -4244,7 +4381,7 @@ var ts; if (array1.length !== array2.length) { return false; } - for (var i = 0; i < array1.length; ++i) { + for (var i = 0; i < array1.length; i++) { var equals = equaler ? equaler(array1[i], array2[i]) : array1[i] === array2[i]; if (!equals) { return false; @@ -4292,7 +4429,7 @@ var ts; } } function getSourceFileOfNode(node) { - while (node && node.kind !== 248 /* SourceFile */) { + while (node && node.kind !== 250 /* SourceFile */) { node = node.parent; } return node; @@ -4404,15 +4541,15 @@ var ts; return current; } switch (current.kind) { - case 248 /* SourceFile */: - case 220 /* CaseBlock */: - case 244 /* CatchClause */: - case 218 /* ModuleDeclaration */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 250 /* SourceFile */: + case 222 /* CaseBlock */: + case 246 /* CatchClause */: + case 220 /* ModuleDeclaration */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return current; - case 192 /* Block */: + case 194 /* Block */: // function block is not considered block-scope container // see comment in binder.ts: bind(...), case for SyntaxKind.Block if (!isFunctionLike(current.parent)) { @@ -4425,9 +4562,9 @@ var ts; ts.getEnclosingBlockScopeContainer = getEnclosingBlockScopeContainer; function isCatchClauseVariableDeclaration(declaration) { return declaration && - declaration.kind === 211 /* VariableDeclaration */ && + declaration.kind === 213 /* VariableDeclaration */ && declaration.parent && - declaration.parent.kind === 244 /* CatchClause */; + declaration.parent.kind === 246 /* CatchClause */; } ts.isCatchClauseVariableDeclaration = isCatchClauseVariableDeclaration; // Return display name of an identifier @@ -4466,7 +4603,7 @@ var ts; function getErrorSpanForNode(sourceFile, node) { var errorNode = node; switch (node.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: var pos_1 = ts.skipTrivia(sourceFile.text, 0, /*stopAfterLineBreak*/ false); if (pos_1 === sourceFile.text.length) { // file is empty - return span for the beginning of the file @@ -4475,16 +4612,17 @@ var ts; return getSpanOfTokenAtPosition(sourceFile, pos_1); // This list is a work in progress. Add missing node kinds to improve their error // spans. - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 218 /* ModuleDeclaration */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 220 /* ModuleDeclaration */: + case 219 /* EnumDeclaration */: + case 249 /* EnumMember */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 143 /* MethodDeclaration */: errorNode = node.name; break; } @@ -4512,11 +4650,11 @@ var ts; } ts.isDeclarationFile = isDeclarationFile; function isConstEnumDeclaration(node) { - return node.kind === 217 /* EnumDeclaration */ && isConst(node); + return node.kind === 219 /* EnumDeclaration */ && isConst(node); } ts.isConstEnumDeclaration = isConstEnumDeclaration; function walkUpBindingElementsAndPatterns(node) { - while (node && (node.kind === 163 /* BindingElement */ || isBindingPattern(node))) { + while (node && (node.kind === 165 /* BindingElement */ || isBindingPattern(node))) { node = node.parent; } return node; @@ -4531,14 +4669,14 @@ var ts; function getCombinedNodeFlags(node) { node = walkUpBindingElementsAndPatterns(node); var flags = node.flags; - if (node.kind === 211 /* VariableDeclaration */) { + if (node.kind === 213 /* VariableDeclaration */) { node = node.parent; } - if (node && node.kind === 212 /* VariableDeclarationList */) { + if (node && node.kind === 214 /* VariableDeclarationList */) { flags |= node.flags; node = node.parent; } - if (node && node.kind === 193 /* VariableStatement */) { + if (node && node.kind === 195 /* VariableStatement */) { flags |= node.flags; } return flags; @@ -4553,7 +4691,7 @@ var ts; } ts.isLet = isLet; function isPrologueDirective(node) { - return node.kind === 195 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; + return node.kind === 197 /* ExpressionStatement */ && node.expression.kind === 9 /* StringLiteral */; } ts.isPrologueDirective = isPrologueDirective; function getLeadingCommentRangesOfNode(node, sourceFileOfNode) { @@ -4584,7 +4722,7 @@ var ts; ts.fullTripleSlashReferencePathRegEx = /^(\/\/\/\s*/; ts.fullTripleSlashAMDReferencePathRegEx = /^(\/\/\/\s*/; function isTypeNode(node) { - if (151 /* FirstTypeNode */ <= node.kind && node.kind <= 160 /* LastTypeNode */) { + if (150 /* FirstTypeNode */ <= node.kind && node.kind <= 162 /* LastTypeNode */) { return true; } switch (node.kind) { @@ -4595,11 +4733,8 @@ var ts; case 131 /* SymbolKeyword */: return true; case 103 /* VoidKeyword */: - return node.parent.kind !== 177 /* VoidExpression */; - case 9 /* StringLiteral */: - // Specialized signatures can have string literals as their parameters' type names - return node.parent.kind === 138 /* Parameter */; - case 188 /* ExpressionWithTypeArguments */: + return node.parent.kind !== 179 /* VoidExpression */; + case 190 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(node); // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container @@ -4608,13 +4743,13 @@ var ts; if (node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node) { node = node.parent; } - else if (node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.name === node) { + else if (node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.name === node) { node = node.parent; } // At this point, node is either a qualified name or an identifier - ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 166 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); + ts.Debug.assert(node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 168 /* PropertyAccessExpression */, "'node' was expected to be a qualified name, identifier or property access in 'isTypeNode'."); case 135 /* QualifiedName */: - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 97 /* ThisKeyword */: var parent_1 = node.parent; if (parent_1.kind === 154 /* TypeQuery */) { @@ -4626,22 +4761,22 @@ var ts; // // Calling isTypeNode would consider the qualified name A.B a type node. Only C or // A.B.C is a type node. - if (151 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 160 /* LastTypeNode */) { + if (150 /* FirstTypeNode */ <= parent_1.kind && parent_1.kind <= 162 /* LastTypeNode */) { return true; } switch (parent_1.kind) { - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return !isExpressionWithTypeArgumentsInClassExtendsClause(parent_1); case 137 /* TypeParameter */: return node === parent_1.constraint; case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: case 138 /* Parameter */: - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return node === parent_1.type; - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: case 144 /* Constructor */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: @@ -4652,12 +4787,12 @@ var ts; case 148 /* ConstructSignature */: case 149 /* IndexSignature */: return node === parent_1.type; - case 171 /* TypeAssertionExpression */: + case 173 /* TypeAssertionExpression */: return node === parent_1.type; - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return parent_1.typeArguments && ts.indexOf(parent_1.typeArguments, node) >= 0; - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: // TODO (drosen): TaggedTemplateExpressions may eventually support type arguments. return false; } @@ -4671,23 +4806,23 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return visitor(node); - case 220 /* CaseBlock */: - case 192 /* Block */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 205 /* WithStatement */: - case 206 /* SwitchStatement */: - case 241 /* CaseClause */: - case 242 /* DefaultClause */: - case 207 /* LabeledStatement */: - case 209 /* TryStatement */: - case 244 /* CatchClause */: + case 222 /* CaseBlock */: + case 194 /* Block */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 207 /* WithStatement */: + case 208 /* SwitchStatement */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: + case 209 /* LabeledStatement */: + case 211 /* TryStatement */: + case 246 /* CatchClause */: return ts.forEachChild(node, traverse); } } @@ -4697,18 +4832,18 @@ var ts; return traverse(body); function traverse(node) { switch (node.kind) { - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: visitor(node); var operand = node.expression; if (operand) { traverse(operand); } - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: - case 218 /* ModuleDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: + case 220 /* ModuleDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: // These are not allowed inside a generator now, but eventually they may be allowed // as local types. Regardless, any yield statements contained within them should be // skipped in this traversal. @@ -4735,14 +4870,14 @@ var ts; function isVariableLike(node) { if (node) { switch (node.kind) { - case 163 /* BindingElement */: - case 247 /* EnumMember */: + case 165 /* BindingElement */: + case 249 /* EnumMember */: case 138 /* Parameter */: - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 246 /* ShorthandPropertyAssignment */: - case 211 /* VariableDeclaration */: + case 248 /* ShorthandPropertyAssignment */: + case 213 /* VariableDeclaration */: return true; } } @@ -4754,7 +4889,7 @@ var ts; } ts.isAccessor = isAccessor; function isClassLike(node) { - return node && (node.kind === 214 /* ClassDeclaration */ || node.kind === 186 /* ClassExpression */); + return node && (node.kind === 216 /* ClassDeclaration */ || node.kind === 188 /* ClassExpression */); } ts.isClassLike = isClassLike; function isFunctionLike(node) { @@ -4764,9 +4899,9 @@ var ts; function isFunctionLikeKind(kind) { switch (kind) { case 144 /* Constructor */: - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: @@ -4787,8 +4922,8 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: return true; } return false; @@ -4796,26 +4931,30 @@ var ts; ts.introducesArgumentsExoticObject = introducesArgumentsExoticObject; function isIterationStatement(node, lookInLabeledStatements) { switch (node.kind) { - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: return true; - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return lookInLabeledStatements && isIterationStatement(node.statement, lookInLabeledStatements); } return false; } ts.isIterationStatement = isIterationStatement; function isFunctionBlock(node) { - return node && node.kind === 192 /* Block */ && isFunctionLike(node.parent); + return node && node.kind === 194 /* Block */ && isFunctionLike(node.parent); } ts.isFunctionBlock = isFunctionBlock; function isObjectLiteralMethod(node) { - return node && node.kind === 143 /* MethodDeclaration */ && node.parent.kind === 165 /* ObjectLiteralExpression */; + return node && node.kind === 143 /* MethodDeclaration */ && node.parent.kind === 167 /* ObjectLiteralExpression */; } ts.isObjectLiteralMethod = isObjectLiteralMethod; + function isIdentifierTypePredicate(predicate) { + return predicate && predicate.kind === 1 /* Identifier */; + } + ts.isIdentifierTypePredicate = isIdentifierTypePredicate; function getContainingFunction(node) { while (true) { node = node.parent; @@ -4869,14 +5008,14 @@ var ts; node = node.parent; } break; - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: if (!includeArrowFunctions) { continue; } // Fall through - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 218 /* ModuleDeclaration */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 220 /* ModuleDeclaration */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: case 143 /* MethodDeclaration */: @@ -4887,34 +5026,45 @@ var ts; case 147 /* CallSignature */: case 148 /* ConstructSignature */: case 149 /* IndexSignature */: - case 217 /* EnumDeclaration */: - case 248 /* SourceFile */: + case 219 /* EnumDeclaration */: + case 250 /* SourceFile */: return node; } } } ts.getThisContainer = getThisContainer; - function getSuperContainer(node, includeFunctions) { + /** + * Given an super call\property node returns a closest node where either + * - super call\property is legal in the node and not legal in the parent node the node. + * i.e. super call is legal in constructor but not legal in the class body. + * - node is arrow function (so caller might need to call getSuperContainer in case if he needs to climb higher) + * - super call\property is definitely illegal in the node (but might be legal in some subnode) + * i.e. super property access is illegal in function declaration but can be legal in the statement list + */ + function getSuperContainer(node, stopOnFunctions) { while (true) { node = node.parent; - if (!node) + if (!node) { return node; + } switch (node.kind) { case 136 /* ComputedPropertyName */: - // If the grandparent node is an object literal (as opposed to a class), - // then the computed property is not a 'super' container. - // A computed property name in a class needs to be a super container - // so that we can error on it. - if (isClassLike(node.parent.parent)) { - return node; - } - // If this is a computed property, then the parent should not - // make it a super container. The parent might be a property - // in an object literal, like a method or accessor. But in order for - // such a parent to be a super container, the reference must be in - // the *body* of the container. node = node.parent; break; + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + if (!stopOnFunctions) { + continue; + } + case 141 /* PropertyDeclaration */: + case 140 /* PropertySignature */: + case 143 /* MethodDeclaration */: + case 142 /* MethodSignature */: + case 144 /* Constructor */: + case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + return node; case 139 /* Decorator */: // Decorators are always applied outside of the body of a class or method. if (node.parent.kind === 138 /* Parameter */ && isClassElement(node.parent.parent)) { @@ -4928,20 +5078,6 @@ var ts; node = node.parent; } break; - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - if (!includeFunctions) { - continue; - } - case 141 /* PropertyDeclaration */: - case 140 /* PropertySignature */: - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - case 144 /* Constructor */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - return node; } } } @@ -4951,7 +5087,7 @@ var ts; switch (node.kind) { case 151 /* TypeReference */: return node.typeName; - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return node.expression; case 69 /* Identifier */: case 135 /* QualifiedName */: @@ -4962,7 +5098,7 @@ var ts; } ts.getEntityNameFromTypeNode = getEntityNameFromTypeNode; function getInvokedExpression(node) { - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { return node.tag; } // Will either be a CallExpression, NewExpression, or Decorator. @@ -4971,27 +5107,27 @@ var ts; ts.getInvokedExpression = getInvokedExpression; function nodeCanBeDecorated(node) { switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: // classes are valid targets return true; case 141 /* PropertyDeclaration */: // property declarations are valid if their parent is a class declaration. - return node.parent.kind === 214 /* ClassDeclaration */; + return node.parent.kind === 216 /* ClassDeclaration */; case 138 /* Parameter */: // if the parameter's parent has a body and its grandparent is a class declaration, this is a valid target; - return node.parent.body && node.parent.parent.kind === 214 /* ClassDeclaration */; + return node.parent.body && node.parent.parent.kind === 216 /* ClassDeclaration */; case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 143 /* MethodDeclaration */: // if this method has a body and its parent is a class declaration, this is a valid target. - return node.body && node.parent.kind === 214 /* ClassDeclaration */; + return node.body && node.parent.kind === 216 /* ClassDeclaration */; } return false; } ts.nodeCanBeDecorated = nodeCanBeDecorated; function nodeIsDecorated(node) { switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: if (node.decorators) { return true; } @@ -5017,27 +5153,12 @@ var ts; return false; } ts.nodeIsDecorated = nodeIsDecorated; - function childIsDecorated(node) { - switch (node.kind) { - case 214 /* ClassDeclaration */: - return ts.forEach(node.members, nodeOrChildIsDecorated); - case 143 /* MethodDeclaration */: - case 146 /* SetAccessor */: - return ts.forEach(node.parameters, nodeIsDecorated); - } - return false; - } - ts.childIsDecorated = childIsDecorated; - function nodeOrChildIsDecorated(node) { - return nodeIsDecorated(node) || childIsDecorated(node); - } - ts.nodeOrChildIsDecorated = nodeOrChildIsDecorated; function isPropertyAccessExpression(node) { - return node.kind === 166 /* PropertyAccessExpression */; + return node.kind === 168 /* PropertyAccessExpression */; } ts.isPropertyAccessExpression = isPropertyAccessExpression; function isElementAccessExpression(node) { - return node.kind === 167 /* ElementAccessExpression */; + return node.kind === 169 /* ElementAccessExpression */; } ts.isElementAccessExpression = isElementAccessExpression; function isExpression(node) { @@ -5047,34 +5168,34 @@ var ts; case 99 /* TrueKeyword */: case 84 /* FalseKeyword */: case 10 /* RegularExpressionLiteral */: - case 164 /* ArrayLiteralExpression */: - case 165 /* ObjectLiteralExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 170 /* TaggedTemplateExpression */: - case 189 /* AsExpression */: - case 171 /* TypeAssertionExpression */: - case 172 /* ParenthesizedExpression */: - case 173 /* FunctionExpression */: - case 186 /* ClassExpression */: - case 174 /* ArrowFunction */: - case 177 /* VoidExpression */: - case 175 /* DeleteExpression */: - case 176 /* TypeOfExpression */: - case 179 /* PrefixUnaryExpression */: - case 180 /* PostfixUnaryExpression */: - case 181 /* BinaryExpression */: - case 182 /* ConditionalExpression */: - case 185 /* SpreadElementExpression */: - case 183 /* TemplateExpression */: + case 166 /* ArrayLiteralExpression */: + case 167 /* ObjectLiteralExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 172 /* TaggedTemplateExpression */: + case 191 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 174 /* ParenthesizedExpression */: + case 175 /* FunctionExpression */: + case 188 /* ClassExpression */: + case 176 /* ArrowFunction */: + case 179 /* VoidExpression */: + case 177 /* DeleteExpression */: + case 178 /* TypeOfExpression */: + case 181 /* PrefixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: + case 183 /* BinaryExpression */: + case 184 /* ConditionalExpression */: + case 187 /* SpreadElementExpression */: + case 185 /* TemplateExpression */: case 11 /* NoSubstitutionTemplateLiteral */: - case 187 /* OmittedExpression */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 184 /* YieldExpression */: - case 178 /* AwaitExpression */: + case 189 /* OmittedExpression */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: + case 186 /* YieldExpression */: + case 180 /* AwaitExpression */: return true; case 135 /* QualifiedName */: while (node.parent.kind === 135 /* QualifiedName */) { @@ -5091,47 +5212,47 @@ var ts; case 97 /* ThisKeyword */: var parent_2 = node.parent; switch (parent_2.kind) { - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: case 138 /* Parameter */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 247 /* EnumMember */: - case 245 /* PropertyAssignment */: - case 163 /* BindingElement */: + case 249 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 165 /* BindingElement */: return parent_2.initializer === node; - case 195 /* ExpressionStatement */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 204 /* ReturnStatement */: - case 205 /* WithStatement */: - case 206 /* SwitchStatement */: - case 241 /* CaseClause */: - case 208 /* ThrowStatement */: - case 206 /* SwitchStatement */: + case 197 /* ExpressionStatement */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 206 /* ReturnStatement */: + case 207 /* WithStatement */: + case 208 /* SwitchStatement */: + case 243 /* CaseClause */: + case 210 /* ThrowStatement */: + case 208 /* SwitchStatement */: return parent_2.expression === node; - case 199 /* ForStatement */: + case 201 /* ForStatement */: var forStatement = parent_2; - return (forStatement.initializer === node && forStatement.initializer.kind !== 212 /* VariableDeclarationList */) || + return (forStatement.initializer === node && forStatement.initializer.kind !== 214 /* VariableDeclarationList */) || forStatement.condition === node || forStatement.incrementor === node; - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: var forInStatement = parent_2; - return (forInStatement.initializer === node && forInStatement.initializer.kind !== 212 /* VariableDeclarationList */) || + return (forInStatement.initializer === node && forInStatement.initializer.kind !== 214 /* VariableDeclarationList */) || forInStatement.expression === node; - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: return node === parent_2.expression; - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return node === parent_2.expression; case 136 /* ComputedPropertyName */: return node === parent_2.expression; case 139 /* Decorator */: - case 240 /* JsxExpression */: - case 239 /* JsxSpreadAttribute */: + case 242 /* JsxExpression */: + case 241 /* JsxSpreadAttribute */: return true; - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return parent_2.expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent_2); default: if (isExpression(parent_2)) { @@ -5155,7 +5276,7 @@ var ts; } ts.isInstantiatedModule = isInstantiatedModule; function isExternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 232 /* ExternalModuleReference */; + return node.kind === 223 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 234 /* ExternalModuleReference */; } ts.isExternalModuleImportEqualsDeclaration = isExternalModuleImportEqualsDeclaration; function getExternalModuleImportEqualsDeclarationExpression(node) { @@ -5164,7 +5285,7 @@ var ts; } ts.getExternalModuleImportEqualsDeclarationExpression = getExternalModuleImportEqualsDeclarationExpression; function isInternalModuleImportEqualsDeclaration(node) { - return node.kind === 221 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 232 /* ExternalModuleReference */; + return node.kind === 223 /* ImportEqualsDeclaration */ && node.moduleReference.kind !== 234 /* ExternalModuleReference */; } ts.isInternalModuleImportEqualsDeclaration = isInternalModuleImportEqualsDeclaration; function isSourceFileJavaScript(file) { @@ -5182,53 +5303,59 @@ var ts; */ function isRequireCall(expression) { // of the form 'require("name")' - return expression.kind === 168 /* CallExpression */ && + return expression.kind === 170 /* CallExpression */ && expression.expression.kind === 69 /* Identifier */ && expression.expression.text === "require" && expression.arguments.length === 1 && expression.arguments[0].kind === 9 /* StringLiteral */; } ts.isRequireCall = isRequireCall; - /** - * 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. - */ - function isExportsPropertyAssignment(expression) { - // of the form 'exports.name = expr' where 'name' and 'expr' are arbitrary - return isInJavaScriptFile(expression) && - (expression.kind === 181 /* BinaryExpression */) && - (expression.operatorToken.kind === 56 /* EqualsToken */) && - (expression.left.kind === 166 /* PropertyAccessExpression */) && - (expression.left.expression.kind === 69 /* Identifier */) && - ((expression.left.expression).text === "exports"); + /// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property + /// assignments we treat as special in the binder + function getSpecialPropertyAssignmentKind(expression) { + if (expression.kind !== 183 /* BinaryExpression */) { + return 0 /* None */; + } + var expr = expression; + if (expr.operatorToken.kind !== 56 /* EqualsToken */ || expr.left.kind !== 168 /* PropertyAccessExpression */) { + return 0 /* None */; + } + var lhs = expr.left; + if (lhs.expression.kind === 69 /* Identifier */) { + var lhsId = lhs.expression; + if (lhsId.text === "exports") { + // exports.name = expr + return 1 /* ExportsProperty */; + } + else if (lhsId.text === "module" && lhs.name.text === "exports") { + // module.exports = expr + return 2 /* ModuleExports */; + } + } + else if (lhs.expression.kind === 97 /* ThisKeyword */) { + return 4 /* ThisProperty */; + } + else if (lhs.expression.kind === 168 /* PropertyAccessExpression */) { + // chained dot, e.g. x.y.z = expr; this var is the 'x.y' part + var innerPropertyAccess = lhs.expression; + if (innerPropertyAccess.expression.kind === 69 /* Identifier */ && innerPropertyAccess.name.text === "prototype") { + return 3 /* PrototypeProperty */; + } + } + return 0 /* None */; } - ts.isExportsPropertyAssignment = isExportsPropertyAssignment; - /** - * 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. - */ - function isModuleExportsAssignment(expression) { - // of the form 'module.exports = expr' where 'expr' is arbitrary - return isInJavaScriptFile(expression) && - (expression.kind === 181 /* BinaryExpression */) && - (expression.operatorToken.kind === 56 /* EqualsToken */) && - (expression.left.kind === 166 /* PropertyAccessExpression */) && - (expression.left.expression.kind === 69 /* Identifier */) && - ((expression.left.expression).text === "module") && - (expression.left.name.text === "exports"); - } - ts.isModuleExportsAssignment = isModuleExportsAssignment; + ts.getSpecialPropertyAssignmentKind = getSpecialPropertyAssignmentKind; function getExternalModuleName(node) { - if (node.kind === 222 /* ImportDeclaration */) { + if (node.kind === 224 /* ImportDeclaration */) { return node.moduleSpecifier; } - if (node.kind === 221 /* ImportEqualsDeclaration */) { + if (node.kind === 223 /* ImportEqualsDeclaration */) { var reference = node.moduleReference; - if (reference.kind === 232 /* ExternalModuleReference */) { + if (reference.kind === 234 /* ExternalModuleReference */) { return reference.expression; } } - if (node.kind === 228 /* ExportDeclaration */) { + if (node.kind === 230 /* ExportDeclaration */) { return node.moduleSpecifier; } } @@ -5239,8 +5366,8 @@ var ts; case 138 /* Parameter */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 246 /* ShorthandPropertyAssignment */: - case 245 /* PropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return node.questionToken !== undefined; @@ -5250,9 +5377,9 @@ var ts; } ts.hasQuestionToken = hasQuestionToken; function isJSDocConstructSignature(node) { - return node.kind === 261 /* JSDocFunctionType */ && + return node.kind === 263 /* JSDocFunctionType */ && node.parameters.length > 0 && - node.parameters[0].type.kind === 263 /* JSDocConstructorType */; + node.parameters[0].type.kind === 265 /* JSDocConstructorType */; } ts.isJSDocConstructSignature = isJSDocConstructSignature; function getJSDocTag(node, kind) { @@ -5266,15 +5393,15 @@ var ts; } } function getJSDocTypeTag(node) { - return getJSDocTag(node, 269 /* JSDocTypeTag */); + return getJSDocTag(node, 271 /* JSDocTypeTag */); } ts.getJSDocTypeTag = getJSDocTypeTag; function getJSDocReturnTag(node) { - return getJSDocTag(node, 268 /* JSDocReturnTag */); + return getJSDocTag(node, 270 /* JSDocReturnTag */); } ts.getJSDocReturnTag = getJSDocReturnTag; function getJSDocTemplateTag(node) { - return getJSDocTag(node, 270 /* JSDocTemplateTag */); + return getJSDocTag(node, 272 /* JSDocTemplateTag */); } ts.getJSDocTemplateTag = getJSDocTemplateTag; function getCorrespondingJSDocParameterTag(parameter) { @@ -5285,7 +5412,7 @@ var ts; var docComment = parameter.parent.jsDocComment; if (docComment) { return ts.forEach(docComment.tags, function (t) { - if (t.kind === 267 /* JSDocParameterTag */) { + if (t.kind === 269 /* JSDocParameterTag */) { var parameterTag = t; var name_6 = parameterTag.preParameterName || parameterTag.postParameterName; if (name_6.text === parameterName) { @@ -5304,12 +5431,12 @@ var ts; function isRestParameter(node) { if (node) { if (node.parserContextFlags & 32 /* JavaScriptFile */) { - if (node.type && node.type.kind === 262 /* JSDocVariadicType */) { + if (node.type && node.type.kind === 264 /* JSDocVariadicType */) { return true; } var paramTag = getCorrespondingJSDocParameterTag(node); if (paramTag && paramTag.typeExpression) { - return paramTag.typeExpression.type.kind === 262 /* JSDocVariadicType */; + return paramTag.typeExpression.type.kind === 264 /* JSDocVariadicType */; } } return node.dotDotDotToken !== undefined; @@ -5330,7 +5457,7 @@ var ts; } ts.isTemplateLiteralKind = isTemplateLiteralKind; function isBindingPattern(node) { - return !!node && (node.kind === 162 /* ArrayBindingPattern */ || node.kind === 161 /* ObjectBindingPattern */); + return !!node && (node.kind === 164 /* ArrayBindingPattern */ || node.kind === 163 /* ObjectBindingPattern */); } ts.isBindingPattern = isBindingPattern; function isNodeDescendentOf(node, ancestor) { @@ -5354,34 +5481,34 @@ var ts; ts.isInAmbientContext = isInAmbientContext; function isDeclaration(node) { switch (node.kind) { - case 174 /* ArrowFunction */: - case 163 /* BindingElement */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 176 /* ArrowFunction */: + case 165 /* BindingElement */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: case 144 /* Constructor */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 230 /* ExportSpecifier */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 219 /* EnumDeclaration */: + case 249 /* EnumMember */: + case 232 /* ExportSpecifier */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 145 /* GetAccessor */: - case 223 /* ImportClause */: - case 221 /* ImportEqualsDeclaration */: - case 226 /* ImportSpecifier */: - case 215 /* InterfaceDeclaration */: + case 225 /* ImportClause */: + case 223 /* ImportEqualsDeclaration */: + case 228 /* ImportSpecifier */: + case 217 /* InterfaceDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 218 /* ModuleDeclaration */: - case 224 /* NamespaceImport */: + case 220 /* ModuleDeclaration */: + case 226 /* NamespaceImport */: case 138 /* Parameter */: - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: case 146 /* SetAccessor */: - case 246 /* ShorthandPropertyAssignment */: - case 216 /* TypeAliasDeclaration */: + case 248 /* ShorthandPropertyAssignment */: + case 218 /* TypeAliasDeclaration */: case 137 /* TypeParameter */: - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return true; } return false; @@ -5389,25 +5516,25 @@ var ts; ts.isDeclaration = isDeclaration; function isStatement(n) { switch (n.kind) { - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: - case 210 /* DebuggerStatement */: - case 197 /* DoStatement */: - case 195 /* ExpressionStatement */: - case 194 /* EmptyStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 199 /* ForStatement */: - case 196 /* IfStatement */: - case 207 /* LabeledStatement */: - case 204 /* ReturnStatement */: - case 206 /* SwitchStatement */: - case 208 /* ThrowStatement */: - case 209 /* TryStatement */: - case 193 /* VariableStatement */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 227 /* ExportAssignment */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 212 /* DebuggerStatement */: + case 199 /* DoStatement */: + case 197 /* ExpressionStatement */: + case 196 /* EmptyStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 201 /* ForStatement */: + case 198 /* IfStatement */: + case 209 /* LabeledStatement */: + case 206 /* ReturnStatement */: + case 208 /* SwitchStatement */: + case 210 /* ThrowStatement */: + case 211 /* TryStatement */: + case 195 /* VariableStatement */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 229 /* ExportAssignment */: return true; default: return false; @@ -5435,7 +5562,7 @@ var ts; return false; } var parent = name.parent; - if (parent.kind === 226 /* ImportSpecifier */ || parent.kind === 230 /* ExportSpecifier */) { + if (parent.kind === 228 /* ImportSpecifier */ || parent.kind === 232 /* ExportSpecifier */) { if (parent.propertyName) { return true; } @@ -5456,9 +5583,9 @@ var ts; case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 247 /* EnumMember */: - case 245 /* PropertyAssignment */: - case 166 /* PropertyAccessExpression */: + case 249 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 168 /* PropertyAccessExpression */: // Name in member declaration or property name in property access return parent.name === node; case 135 /* QualifiedName */: @@ -5470,11 +5597,11 @@ var ts; return parent.kind === 154 /* TypeQuery */; } return false; - case 163 /* BindingElement */: - case 226 /* ImportSpecifier */: + case 165 /* BindingElement */: + case 228 /* ImportSpecifier */: // Property name in binding element or import specifier return parent.propertyName === node; - case 230 /* ExportSpecifier */: + case 232 /* ExportSpecifier */: // Any name in an export specifier return true; } @@ -5490,12 +5617,12 @@ var ts; // export = ... // export default ... function isAliasSymbolDeclaration(node) { - return node.kind === 221 /* ImportEqualsDeclaration */ || - node.kind === 223 /* ImportClause */ && !!node.name || - node.kind === 224 /* NamespaceImport */ || - node.kind === 226 /* ImportSpecifier */ || - node.kind === 230 /* ExportSpecifier */ || - node.kind === 227 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; + return node.kind === 223 /* ImportEqualsDeclaration */ || + node.kind === 225 /* ImportClause */ && !!node.name || + node.kind === 226 /* NamespaceImport */ || + node.kind === 228 /* ImportSpecifier */ || + node.kind === 232 /* ExportSpecifier */ || + node.kind === 229 /* ExportAssignment */ && node.expression.kind === 69 /* Identifier */; } ts.isAliasSymbolDeclaration = isAliasSymbolDeclaration; function getClassExtendsHeritageClauseElement(node) { @@ -5643,7 +5770,7 @@ var ts; return node.kind === 69 /* Identifier */ && node.text === "Symbol"; } ts.isESSymbolIdentifier = isESSymbolIdentifier; - function isModifier(token) { + function isModifierKind(token) { switch (token) { case 115 /* AbstractKeyword */: case 118 /* AsyncKeyword */: @@ -5659,39 +5786,73 @@ var ts; } return false; } - ts.isModifier = isModifier; + ts.isModifierKind = isModifierKind; function isParameterDeclaration(node) { var root = getRootDeclaration(node); return root.kind === 138 /* Parameter */; } ts.isParameterDeclaration = isParameterDeclaration; function getRootDeclaration(node) { - while (node.kind === 163 /* BindingElement */) { + while (node.kind === 165 /* BindingElement */) { node = node.parent.parent; } return node; } ts.getRootDeclaration = getRootDeclaration; function nodeStartsNewLexicalEnvironment(n) { - return isFunctionLike(n) || n.kind === 218 /* ModuleDeclaration */ || n.kind === 248 /* SourceFile */; + return isFunctionLike(n) || n.kind === 220 /* ModuleDeclaration */ || n.kind === 250 /* SourceFile */; } ts.nodeStartsNewLexicalEnvironment = nodeStartsNewLexicalEnvironment; - function cloneEntityName(node) { - if (node.kind === 69 /* Identifier */) { - var clone_1 = createSynthesizedNode(69 /* Identifier */); - clone_1.text = node.text; - return clone_1; + /** + * Creates a shallow, memberwise clone of a node. The "kind", "pos", "end", "flags", and "parent" + * properties are excluded by default, and can be provided via the "location", "flags", and + * "parent" parameters. + * @param node The node to clone. + * @param location An optional TextRange to use to supply the new position. + * @param flags The NodeFlags to use for the cloned node. + * @param parent The parent for the new node. + */ + function cloneNode(node, location, flags, parent) { + // We don't use "clone" from core.ts here, as we need to preserve the prototype chain of + // the original node. We also need to exclude specific properties and only include own- + // properties (to skip members already defined on the shared prototype). + var clone = location !== undefined + ? ts.createNode(node.kind, location.pos, location.end) + : createSynthesizedNode(node.kind); + for (var key in node) { + if (clone.hasOwnProperty(key) || !node.hasOwnProperty(key)) { + continue; + } + clone[key] = node[key]; } - else { - var clone_2 = createSynthesizedNode(135 /* QualifiedName */); - clone_2.left = cloneEntityName(node.left); - clone_2.left.parent = clone_2; - clone_2.right = cloneEntityName(node.right); - clone_2.right.parent = clone_2; - return clone_2; + if (flags !== undefined) { + clone.flags = flags; } + if (parent !== undefined) { + clone.parent = parent; + } + return clone; + } + ts.cloneNode = cloneNode; + /** + * Creates a deep clone of an EntityName, with new parent pointers. + * @param node The EntityName to clone. + * @param parent The parent for the cloned node. + */ + function cloneEntityName(node, parent) { + var clone = cloneNode(node, node, node.flags, parent); + if (isQualifiedName(clone)) { + var left = clone.left, right = clone.right; + clone.left = cloneEntityName(left, clone); + clone.right = cloneNode(right, right, right.flags, parent); + } + return clone; } ts.cloneEntityName = cloneEntityName; + function isQualifiedName(node) { + return node.kind === 135 /* QualifiedName */; + } + ts.isQualifiedName = isQualifiedName; function nodeIsSynthesized(node) { return node.pos === -1; } @@ -5906,8 +6067,8 @@ var ts; writeTextOfNode: writeTextOfNode, writeLiteral: writeLiteral, writeLine: writeLine, - increaseIndent: function () { return indent++; }, - decreaseIndent: function () { return indent--; }, + increaseIndent: function () { indent++; }, + decreaseIndent: function () { indent--; }, getIndent: function () { return indent; }, getTextPos: function () { return output.length; }, getLine: function () { return lineCount + 1; }, @@ -5921,8 +6082,10 @@ var ts; * Resolves a local path to a path which is absolute to the base of the emit */ function getExternalModuleNameFromPath(host, fileName) { - var dir = host.getCurrentDirectory(); - var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, fileName, dir, function (f) { return host.getCanonicalFileName(f); }, /*isAbsolutePathAnUrl*/ false); + var getCanonicalFileName = function (f) { return host.getCanonicalFileName(f); }; + var dir = ts.toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), getCanonicalFileName); + var filePath = ts.getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); + var relativePath = ts.getRelativePathToDirectoryOrUrl(dir, filePath, dir, getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); return ts.removeFileExtension(relativePath); } ts.getExternalModuleNameFromPath = getExternalModuleNameFromPath; @@ -5938,6 +6101,63 @@ var ts; return emitOutputFilePathWithoutExtension + extension; } ts.getOwnEmitOutputFilePath = getOwnEmitOutputFilePath; + function getEmitScriptTarget(compilerOptions) { + return compilerOptions.target || 0 /* ES3 */; + } + ts.getEmitScriptTarget = getEmitScriptTarget; + function getEmitModuleKind(compilerOptions) { + return compilerOptions.module ? + compilerOptions.module : + getEmitScriptTarget(compilerOptions) === 2 /* ES6 */ ? 5 /* ES6 */ : 0 /* None */; + } + ts.getEmitModuleKind = getEmitModuleKind; + function forEachExpectedEmitFile(host, action, targetSourceFile) { + var options = host.getCompilerOptions(); + // Emit on each source file + if (options.outFile || options.out) { + onBundledEmit(host); + } + else { + var sourceFiles = targetSourceFile === undefined ? host.getSourceFiles() : [targetSourceFile]; + for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { + var sourceFile = sourceFiles_1[_i]; + if (!isDeclarationFile(sourceFile)) { + onSingleFileEmit(host, sourceFile); + } + } + } + function onSingleFileEmit(host, sourceFile) { + var jsFilePath = getOwnEmitOutputFilePath(sourceFile, host, sourceFile.languageVariant === 1 /* JSX */ && options.jsx === 1 /* Preserve */ ? ".jsx" : ".js"); + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: !isSourceFileJavaScript(sourceFile) ? getDeclarationEmitFilePath(jsFilePath, options) : undefined + }; + action(emitFileNames, [sourceFile], /*isBundledEmit*/ false); + } + function onBundledEmit(host) { + // Can emit only sources that are not declaration file and are either non module code or module with --module or --target es6 specified + var bundledSources = ts.filter(host.getSourceFiles(), function (sourceFile) { return !isDeclarationFile(sourceFile) && + (!isExternalModule(sourceFile) || + (getEmitModuleKind(options) && isExternalModule(sourceFile))); }); // module that can emit - note falsy value from getEmitModuleKind means the module kind that shouldn't be emitted + if (bundledSources.length) { + var jsFilePath = options.outFile || options.out; + var emitFileNames = { + jsFilePath: jsFilePath, + sourceMapFilePath: getSourceMapFilePath(jsFilePath, options), + declarationFilePath: getDeclarationEmitFilePath(jsFilePath, options) + }; + action(emitFileNames, bundledSources, /*isBundledEmit*/ true); + } + } + function getSourceMapFilePath(jsFilePath, options) { + return options.sourceMap ? jsFilePath + ".map" : undefined; + } + function getDeclarationEmitFilePath(jsFilePath, options) { + return options.declaration ? ts.removeFileExtension(jsFilePath) + ".d.ts" : undefined; + } + } + ts.forEachExpectedEmitFile = forEachExpectedEmitFile; function getSourceFilePathInNewDir(sourceFile, host, newDirPath) { var sourceFilePath = ts.getNormalizedAbsolutePath(sourceFile.fileName, host.getCurrentDirectory()); sourceFilePath = sourceFilePath.replace(host.getCommonSourceDirectory(), ""); @@ -5946,7 +6166,7 @@ var ts; ts.getSourceFilePathInNewDir = getSourceFilePathInNewDir; function writeFile(host, diagnostics, fileName, data, writeByteOrderMark) { host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) { - diagnostics.push(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); + diagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage)); }); } ts.writeFile = writeFile; @@ -5970,18 +6190,6 @@ var ts; return accessor && accessor.parameters.length > 0 && accessor.parameters[0].type; } ts.getSetAccessorTypeAnnotationNode = getSetAccessorTypeAnnotationNode; - function shouldEmitToOwnFile(sourceFile, compilerOptions) { - if (!isDeclarationFile(sourceFile)) { - if ((isExternalModule(sourceFile) || !(compilerOptions.outFile || compilerOptions.out))) { - // 1. in-browser single file compilation scenario - // 2. non .js file - return compilerOptions.isolatedModules || !ts.fileExtensionIs(sourceFile.fileName, ".js"); - } - return false; - } - return false; - } - ts.shouldEmitToOwnFile = shouldEmitToOwnFile; function getAllAccessorDeclarations(declarations, accessor) { var firstAccessor; var secondAccessor; @@ -6225,24 +6433,24 @@ var ts; function isLeftHandSideExpression(expr) { if (expr) { switch (expr.kind) { - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 169 /* NewExpression */: - case 168 /* CallExpression */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 170 /* TaggedTemplateExpression */: - case 164 /* ArrayLiteralExpression */: - case 172 /* ParenthesizedExpression */: - case 165 /* ObjectLiteralExpression */: - case 186 /* ClassExpression */: - case 173 /* FunctionExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 171 /* NewExpression */: + case 170 /* CallExpression */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: + case 172 /* TaggedTemplateExpression */: + case 166 /* ArrayLiteralExpression */: + case 174 /* ParenthesizedExpression */: + case 167 /* ObjectLiteralExpression */: + case 188 /* ClassExpression */: + case 175 /* FunctionExpression */: case 69 /* Identifier */: case 10 /* RegularExpressionLiteral */: case 8 /* NumericLiteral */: case 9 /* StringLiteral */: case 11 /* NoSubstitutionTemplateLiteral */: - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: case 84 /* FalseKeyword */: case 93 /* NullKeyword */: case 97 /* ThisKeyword */: @@ -6259,7 +6467,7 @@ var ts; } ts.isAssignmentOperator = isAssignmentOperator; function isExpressionWithTypeArgumentsInClassExtendsClause(node) { - return node.kind === 188 /* ExpressionWithTypeArguments */ && + return node.kind === 190 /* ExpressionWithTypeArguments */ && node.parent.token === 83 /* ExtendsKeyword */ && isClassLike(node.parent.parent); } @@ -6283,15 +6491,15 @@ var ts; } function isRightSideOfQualifiedNameOrPropertyAccess(node) { return (node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node) || - (node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.name === node); + (node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.name === node); } ts.isRightSideOfQualifiedNameOrPropertyAccess = isRightSideOfQualifiedNameOrPropertyAccess; function isEmptyObjectLiteralOrArrayLiteral(expression) { var kind = expression.kind; - if (kind === 165 /* ObjectLiteralExpression */) { + if (kind === 167 /* ObjectLiteralExpression */) { return expression.properties.length === 0; } - if (kind === 164 /* ArrayLiteralExpression */) { + if (kind === 166 /* ArrayLiteralExpression */) { return expression.elements.length === 0; } return false; @@ -6302,13 +6510,9 @@ var ts; } ts.getLocalSymbolForExportDefault = getLocalSymbolForExportDefault; function hasJavaScriptFileExtension(fileName) { - return ts.fileExtensionIs(fileName, ".js") || ts.fileExtensionIs(fileName, ".jsx"); + return ts.forEach(ts.supportedJavascriptExtensions, function (extension) { return ts.fileExtensionIs(fileName, extension); }); } ts.hasJavaScriptFileExtension = hasJavaScriptFileExtension; - function allowsJsxExpressions(fileName) { - return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx"); - } - ts.allowsJsxExpressions = allowsJsxExpressions; /** * Replace each instance of non-ascii characters by one, two, three, or four escape sequences * representing the UTF-8 encoding of the character, and return the expanded char code list. @@ -6343,6 +6547,47 @@ var ts; } return output; } + /** + * 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. + */ + ts.stringify = typeof JSON !== "undefined" && JSON.stringify + ? JSON.stringify + : stringifyFallback; + /** + * Serialize an object graph into a JSON string. + */ + function stringifyFallback(value) { + // JSON.stringify returns `undefined` here, instead of the string "undefined". + return value === undefined ? undefined : stringifyValue(value); + } + function stringifyValue(value) { + return typeof value === "string" ? "\"" + escapeString(value) + "\"" + : typeof value === "number" ? isFinite(value) ? String(value) : "null" + : typeof value === "boolean" ? value ? "true" : "false" + : typeof value === "object" && value ? ts.isArray(value) ? cycleCheck(stringifyArray, value) : cycleCheck(stringifyObject, value) + : "null"; + } + function cycleCheck(cb, value) { + ts.Debug.assert(!value.hasOwnProperty("__cycle"), "Converting circular structure to JSON"); + value.__cycle = true; + var result = cb(value); + delete value.__cycle; + return result; + } + function stringifyArray(value) { + return "[" + ts.reduceLeft(value, stringifyElement, "") + "]"; + } + function stringifyElement(memo, value) { + return (memo ? memo + "," : memo) + stringifyValue(value); + } + function stringifyObject(value) { + return "{" + ts.reduceProperties(value, stringifyProperty, "") + "}"; + } + function stringifyProperty(memo, value, key) { + return value === undefined || typeof value === "function" || key === "__cycle" ? memo + : (memo ? memo + "," : memo) + ("\"" + escapeString(key) + "\":" + stringifyValue(value)); + } var base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; /** * Converts a string to a base-64 encoded ASCII string. @@ -6611,13 +6856,17 @@ var ts; function getTypeParameterOwner(d) { if (d && d.kind === 137 /* TypeParameter */) { for (var current = d; current; current = current.parent) { - if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 215 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(current) || ts.isClassLike(current) || current.kind === 217 /* InterfaceDeclaration */) { return current; } } } } ts.getTypeParameterOwner = getTypeParameterOwner; + function isParameterPropertyDeclaration(node) { + return node.flags & 56 /* AccessibilityModifier */ && node.parent.kind === 144 /* Constructor */ && ts.isClassLike(node.parent.parent); + } + ts.isParameterPropertyDeclaration = isParameterPropertyDeclaration; })(ts || (ts = {})); /// /// @@ -6627,7 +6876,7 @@ var ts; var NodeConstructor; var SourceFileConstructor; function createNode(kind, pos, end) { - if (kind === 248 /* SourceFile */) { + if (kind === 250 /* SourceFile */) { return new (SourceFileConstructor || (SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor()))(kind, pos, end); } else { @@ -6677,7 +6926,7 @@ var ts; return visitNode(cbNode, node.name) || visitNode(cbNode, node.constraint) || visitNode(cbNode, node.expression); - case 246 /* ShorthandPropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || @@ -6687,9 +6936,9 @@ var ts; case 138 /* Parameter */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 245 /* PropertyAssignment */: - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 247 /* PropertyAssignment */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.propertyName) || @@ -6713,9 +6962,9 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.asteriskToken) || @@ -6745,271 +6994,271 @@ var ts; return visitNodes(cbNodes, node.types); case 160 /* ParenthesizedType */: return visitNode(cbNode, node.type); - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: return visitNodes(cbNodes, node.elements); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return visitNodes(cbNodes, node.elements); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return visitNodes(cbNodes, node.properties); - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.dotToken) || visitNode(cbNode, node.name); - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.argumentExpression); - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments) || visitNodes(cbNodes, node.arguments); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return visitNode(cbNode, node.tag) || visitNode(cbNode, node.template); - case 171 /* TypeAssertionExpression */: + case 173 /* TypeAssertionExpression */: return visitNode(cbNode, node.type) || visitNode(cbNode, node.expression); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return visitNode(cbNode, node.expression); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return visitNode(cbNode, node.expression); - case 176 /* TypeOfExpression */: + case 178 /* TypeOfExpression */: return visitNode(cbNode, node.expression); - case 177 /* VoidExpression */: + case 179 /* VoidExpression */: return visitNode(cbNode, node.expression); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return visitNode(cbNode, node.operand); - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return visitNode(cbNode, node.asteriskToken) || visitNode(cbNode, node.expression); - case 178 /* AwaitExpression */: + case 180 /* AwaitExpression */: return visitNode(cbNode, node.expression); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return visitNode(cbNode, node.operand); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return visitNode(cbNode, node.left) || visitNode(cbNode, node.operatorToken) || visitNode(cbNode, node.right); - case 189 /* AsExpression */: + case 191 /* AsExpression */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.type); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return visitNode(cbNode, node.condition) || visitNode(cbNode, node.questionToken) || visitNode(cbNode, node.whenTrue) || visitNode(cbNode, node.colonToken) || visitNode(cbNode, node.whenFalse); - case 185 /* SpreadElementExpression */: + case 187 /* SpreadElementExpression */: return visitNode(cbNode, node.expression); - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return visitNodes(cbNodes, node.statements); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return visitNodes(cbNodes, node.statements) || visitNode(cbNode, node.endOfFileToken); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.declarationList); - case 212 /* VariableDeclarationList */: + case 214 /* VariableDeclarationList */: return visitNodes(cbNodes, node.declarations); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return visitNode(cbNode, node.expression); - case 196 /* IfStatement */: + case 198 /* IfStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.thenStatement) || visitNode(cbNode, node.elseStatement); - case 197 /* DoStatement */: + case 199 /* DoStatement */: return visitNode(cbNode, node.statement) || visitNode(cbNode, node.expression); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.condition) || visitNode(cbNode, node.incrementor) || visitNode(cbNode, node.statement); - case 200 /* ForInStatement */: + case 202 /* ForInStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 201 /* ForOfStatement */: + case 203 /* ForOfStatement */: return visitNode(cbNode, node.initializer) || visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 205 /* BreakStatement */: return visitNode(cbNode, node.label); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return visitNode(cbNode, node.expression); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.statement); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.caseBlock); - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: return visitNodes(cbNodes, node.clauses); - case 241 /* CaseClause */: + case 243 /* CaseClause */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.statements); - case 242 /* DefaultClause */: + case 244 /* DefaultClause */: return visitNodes(cbNodes, node.statements); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return visitNode(cbNode, node.label) || visitNode(cbNode, node.statement); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: return visitNode(cbNode, node.expression); - case 209 /* TryStatement */: + case 211 /* TryStatement */: return visitNode(cbNode, node.tryBlock) || visitNode(cbNode, node.catchClause) || visitNode(cbNode, node.finallyBlock); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return visitNode(cbNode, node.variableDeclaration) || visitNode(cbNode, node.block); case 139 /* Decorator */: return visitNode(cbNode, node.expression); - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNodes(cbNodes, node.heritageClauses) || visitNodes(cbNodes, node.members); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeParameters) || visitNode(cbNode, node.type); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNodes(cbNodes, node.members); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.body); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.name) || visitNode(cbNode, node.moduleReference); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.importClause) || visitNode(cbNode, node.moduleSpecifier); - case 223 /* ImportClause */: + case 225 /* ImportClause */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.namedBindings); - case 224 /* NamespaceImport */: + case 226 /* NamespaceImport */: return visitNode(cbNode, node.name); - case 225 /* NamedImports */: - case 229 /* NamedExports */: + case 227 /* NamedImports */: + case 231 /* NamedExports */: return visitNodes(cbNodes, node.elements); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.exportClause) || visitNode(cbNode, node.moduleSpecifier); - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: return visitNode(cbNode, node.propertyName) || visitNode(cbNode, node.name); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return visitNodes(cbNodes, node.decorators) || visitNodes(cbNodes, node.modifiers) || visitNode(cbNode, node.expression); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: return visitNode(cbNode, node.head) || visitNodes(cbNodes, node.templateSpans); - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return visitNode(cbNode, node.expression) || visitNode(cbNode, node.literal); case 136 /* ComputedPropertyName */: return visitNode(cbNode, node.expression); - case 243 /* HeritageClause */: + case 245 /* HeritageClause */: return visitNodes(cbNodes, node.types); - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return visitNode(cbNode, node.expression) || visitNodes(cbNodes, node.typeArguments); - case 232 /* ExternalModuleReference */: + case 234 /* ExternalModuleReference */: return visitNode(cbNode, node.expression); - case 231 /* MissingDeclaration */: + case 233 /* MissingDeclaration */: return visitNodes(cbNodes, node.decorators); - case 233 /* JsxElement */: + case 235 /* JsxElement */: return visitNode(cbNode, node.openingElement) || visitNodes(cbNodes, node.children) || visitNode(cbNode, node.closingElement); - case 234 /* JsxSelfClosingElement */: - case 235 /* JsxOpeningElement */: + case 236 /* JsxSelfClosingElement */: + case 237 /* JsxOpeningElement */: return visitNode(cbNode, node.tagName) || visitNodes(cbNodes, node.attributes); - case 238 /* JsxAttribute */: + case 240 /* JsxAttribute */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.initializer); - case 239 /* JsxSpreadAttribute */: + case 241 /* JsxSpreadAttribute */: return visitNode(cbNode, node.expression); - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: return visitNode(cbNode, node.expression); - case 237 /* JsxClosingElement */: + case 239 /* JsxClosingElement */: return visitNode(cbNode, node.tagName); - case 249 /* JSDocTypeExpression */: + case 251 /* JSDocTypeExpression */: return visitNode(cbNode, node.type); - case 253 /* JSDocUnionType */: + case 255 /* JSDocUnionType */: return visitNodes(cbNodes, node.types); - case 254 /* JSDocTupleType */: + case 256 /* JSDocTupleType */: return visitNodes(cbNodes, node.types); - case 252 /* JSDocArrayType */: + case 254 /* JSDocArrayType */: return visitNode(cbNode, node.elementType); - case 256 /* JSDocNonNullableType */: + case 258 /* JSDocNonNullableType */: return visitNode(cbNode, node.type); - case 255 /* JSDocNullableType */: + case 257 /* JSDocNullableType */: return visitNode(cbNode, node.type); - case 257 /* JSDocRecordType */: + case 259 /* JSDocRecordType */: return visitNodes(cbNodes, node.members); - case 259 /* JSDocTypeReference */: + case 261 /* JSDocTypeReference */: return visitNode(cbNode, node.name) || visitNodes(cbNodes, node.typeArguments); - case 260 /* JSDocOptionalType */: + case 262 /* JSDocOptionalType */: return visitNode(cbNode, node.type); - case 261 /* JSDocFunctionType */: + case 263 /* JSDocFunctionType */: return visitNodes(cbNodes, node.parameters) || visitNode(cbNode, node.type); - case 262 /* JSDocVariadicType */: + case 264 /* JSDocVariadicType */: return visitNode(cbNode, node.type); - case 263 /* JSDocConstructorType */: + case 265 /* JSDocConstructorType */: return visitNode(cbNode, node.type); - case 264 /* JSDocThisType */: + case 266 /* JSDocThisType */: return visitNode(cbNode, node.type); - case 258 /* JSDocRecordMember */: + case 260 /* JSDocRecordMember */: return visitNode(cbNode, node.name) || visitNode(cbNode, node.type); - case 265 /* JSDocComment */: + case 267 /* JSDocComment */: return visitNodes(cbNodes, node.tags); - case 267 /* JSDocParameterTag */: + case 269 /* JSDocParameterTag */: return visitNode(cbNode, node.preParameterName) || visitNode(cbNode, node.typeExpression) || visitNode(cbNode, node.postParameterName); - case 268 /* JSDocReturnTag */: + case 270 /* JSDocReturnTag */: return visitNode(cbNode, node.typeExpression); - case 269 /* JSDocTypeTag */: + case 271 /* JSDocTypeTag */: return visitNode(cbNode, node.typeExpression); - case 270 /* JSDocTemplateTag */: + case 272 /* JSDocTemplateTag */: return visitNodes(cbNodes, node.typeParameters); } } @@ -7150,6 +7399,10 @@ var ts; return result; } Parser.parseSourceFile = parseSourceFile; + function getLanguageVariant(fileName) { + // .tsx and .jsx files are treated as jsx language variant. + return ts.fileExtensionIs(fileName, ".tsx") || ts.fileExtensionIs(fileName, ".jsx") ? 1 /* JSX */ : 0 /* Standard */; + } function initializeState(fileName, _sourceText, languageVersion, isJavaScriptFile, _syntaxCursor) { NodeConstructor = ts.objectAllocator.getNodeConstructor(); SourceFileConstructor = ts.objectAllocator.getSourceFileConstructor(); @@ -7166,7 +7419,7 @@ var ts; scanner.setText(sourceText); scanner.setOnError(scanError); scanner.setScriptTarget(languageVersion); - scanner.setLanguageVariant(ts.allowsJsxExpressions(fileName) ? 1 /* JSX */ : 0 /* Standard */); + scanner.setLanguageVariant(getLanguageVariant(fileName)); } function clearState() { // Clear out the text the scanner is pointing at, so it doesn't keep anything alive unnecessarily. @@ -7213,8 +7466,8 @@ var ts; // Add additional cases as necessary depending on how we see JSDoc comments used // in the wild. switch (node.kind) { - case 193 /* VariableStatement */: - case 213 /* FunctionDeclaration */: + case 195 /* VariableStatement */: + case 215 /* FunctionDeclaration */: case 138 /* Parameter */: addJSDocComment(node); } @@ -7258,14 +7511,14 @@ var ts; function createSourceFile(fileName, languageVersion) { // code from createNode is inlined here so createNode won't have to deal with special case of creating source files // this is quite rare comparing to other nodes and createNode should be as fast as possible - var sourceFile = new SourceFileConstructor(248 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); + var sourceFile = new SourceFileConstructor(250 /* SourceFile */, /*pos*/ 0, /* end */ sourceText.length); nodeCount++; sourceFile.text = sourceText; sourceFile.bindDiagnostics = []; sourceFile.languageVersion = languageVersion; sourceFile.fileName = ts.normalizePath(fileName); sourceFile.flags = ts.fileExtensionIs(sourceFile.fileName, ".d.ts") ? 4096 /* DeclarationFile */ : 0; - sourceFile.languageVariant = ts.allowsJsxExpressions(sourceFile.fileName) ? 1 /* JSX */ : 0 /* Standard */; + sourceFile.languageVariant = getLanguageVariant(sourceFile.fileName); return sourceFile; } function setContextFlag(val, flag) { @@ -7298,10 +7551,10 @@ var ts; var contextFlagsToClear = context & contextFlags; if (contextFlagsToClear) { // clear the requested context flags - setContextFlag(false, contextFlagsToClear); + setContextFlag(/*val*/ false, contextFlagsToClear); var result = func(); // restore the context flags we just cleared - setContextFlag(true, contextFlagsToClear); + setContextFlag(/*val*/ true, contextFlagsToClear); return result; } // no need to do anything special as we are not in any of the requested contexts @@ -7317,10 +7570,10 @@ var ts; var contextFlagsToSet = context & ~contextFlags; if (contextFlagsToSet) { // set the requested context flags - setContextFlag(true, contextFlagsToSet); + setContextFlag(/*val*/ true, contextFlagsToSet); var result = func(); // reset the context flags we just set - setContextFlag(false, contextFlagsToSet); + setContextFlag(/*val*/ false, contextFlagsToSet); return result; } // no need to do anything special as we are already in all of the requested contexts @@ -7335,9 +7588,6 @@ var ts; function doInYieldContext(func) { return doInsideOfContext(2 /* Yield */, func); } - function doOutsideOfYieldContext(func) { - return doOutsideOfContext(2 /* Yield */, func); - } function doInDecoratorContext(func) { return doInsideOfContext(4 /* Decorator */, func); } @@ -7350,9 +7600,6 @@ var ts; function doInYieldAndAwaitContext(func) { return doInsideOfContext(2 /* Yield */ | 8 /* Await */, func); } - function doOutsideOfYieldAndAwaitContext(func) { - return doOutsideOfContext(2 /* Yield */ | 8 /* Await */, func); - } function inContext(flags) { return (contextFlags & flags) !== 0; } @@ -7396,9 +7643,6 @@ var ts; function nextToken() { return token = scanner.scan(); } - function getTokenPos(pos) { - return ts.skipTrivia(sourceText, pos); - } function reScanGreaterToken() { return token = scanner.reScanGreaterToken(); } @@ -7605,10 +7849,10 @@ var ts; return parseIdentifierName(); } function parsePropertyName() { - return parsePropertyNameWorker(/*allowComputedPropertyNames:*/ true); + return parsePropertyNameWorker(/*allowComputedPropertyNames*/ true); } function parseSimplePropertyName() { - return parsePropertyNameWorker(/*allowComputedPropertyNames:*/ false); + return parsePropertyNameWorker(/*allowComputedPropertyNames*/ false); } function isSimplePropertyName() { return token === 9 /* StringLiteral */ || token === 8 /* NumericLiteral */ || ts.tokenIsIdentifierOrKeyword(token); @@ -7629,6 +7873,13 @@ var ts; function parseContextualModifier(t) { return token === t && tryParse(nextTokenCanFollowModifier); } + function nextTokenIsOnSameLineAndCanFollowModifier() { + nextToken(); + if (scanner.hasPrecedingLineBreak()) { + return false; + } + return canFollowModifier(); + } function nextTokenCanFollowModifier() { if (token === 74 /* ConstKeyword */) { // 'const' is only a modifier if followed by 'enum'. @@ -7648,14 +7899,10 @@ var ts; nextToken(); return canFollowModifier(); } - nextToken(); - if (scanner.hasPrecedingLineBreak()) { - return false; - } - return canFollowModifier(); + return nextTokenIsOnSameLineAndCanFollowModifier(); } function parseAnyContextualModifier() { - return ts.isModifier(token) && tryParse(nextTokenCanFollowModifier); + return ts.isModifierKind(token) && tryParse(nextTokenCanFollowModifier); } function canFollowModifier() { return token === 19 /* OpenBracketToken */ @@ -7861,7 +8108,7 @@ var ts; function isInSomeParsingContext() { for (var kind = 0; kind < 26 /* Count */; kind++) { if (parsingContext & (1 << kind)) { - if (isListElement(kind, /* inErrorRecovery */ true) || isListTerminator(kind)) { + if (isListElement(kind, /*inErrorRecovery*/ true) || isListTerminator(kind)) { return true; } } @@ -7875,7 +8122,7 @@ var ts; var result = []; result.pos = getNodePos(); while (!isListTerminator(kind)) { - if (isListElement(kind, /* inErrorRecovery */ false)) { + if (isListElement(kind, /*inErrorRecovery*/ false)) { var element = parseListElement(kind, parseElement); result.push(element); continue; @@ -8020,7 +8267,7 @@ var ts; case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 141 /* PropertyDeclaration */: - case 191 /* SemicolonClassElement */: + case 193 /* SemicolonClassElement */: return true; case 143 /* MethodDeclaration */: // Method declarations are not necessarily reusable. An object-literal @@ -8037,8 +8284,8 @@ var ts; function isReusableSwitchClause(node) { if (node) { switch (node.kind) { - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: return true; } } @@ -8047,42 +8294,42 @@ var ts; function isReusableStatement(node) { if (node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: - case 193 /* VariableStatement */: - case 192 /* Block */: - case 196 /* IfStatement */: - case 195 /* ExpressionStatement */: - case 208 /* ThrowStatement */: - case 204 /* ReturnStatement */: - case 206 /* SwitchStatement */: - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 199 /* ForStatement */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 194 /* EmptyStatement */: - case 209 /* TryStatement */: - case 207 /* LabeledStatement */: - case 197 /* DoStatement */: - case 210 /* DebuggerStatement */: - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 228 /* ExportDeclaration */: - case 227 /* ExportAssignment */: - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 216 /* TypeAliasDeclaration */: + case 215 /* FunctionDeclaration */: + case 195 /* VariableStatement */: + case 194 /* Block */: + case 198 /* IfStatement */: + case 197 /* ExpressionStatement */: + case 210 /* ThrowStatement */: + case 206 /* ReturnStatement */: + case 208 /* SwitchStatement */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 201 /* ForStatement */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 196 /* EmptyStatement */: + case 211 /* TryStatement */: + case 209 /* LabeledStatement */: + case 199 /* DoStatement */: + case 212 /* DebuggerStatement */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 230 /* ExportDeclaration */: + case 229 /* ExportAssignment */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 218 /* TypeAliasDeclaration */: return true; } } return false; } function isReusableEnumMember(node) { - return node.kind === 247 /* EnumMember */; + return node.kind === 249 /* EnumMember */; } function isReusableTypeMember(node) { if (node) { @@ -8098,7 +8345,7 @@ var ts; return false; } function isReusableVariableDeclaration(node) { - if (node.kind !== 211 /* VariableDeclaration */) { + if (node.kind !== 213 /* VariableDeclaration */) { return false; } // Very subtle incremental parsing bug. Consider the following code: @@ -8174,7 +8421,7 @@ var ts; result.pos = getNodePos(); var commaStart = -1; // Meaning the previous token was not a comma while (true) { - if (isListElement(kind, /* inErrorRecovery */ false)) { + if (isListElement(kind, /*inErrorRecovery*/ false)) { result.push(parseListElement(kind, parseElement)); commaStart = scanner.getTokenPos(); if (parseOptional(24 /* CommaToken */)) { @@ -8269,14 +8516,14 @@ var ts; // Report that we need an identifier. However, report it right after the dot, // and not on the next token. This is because the next token might actually // be an identifier and the error would be quite confusing. - return createMissingNode(69 /* Identifier */, /*reportAtCurrentToken*/ true, ts.Diagnostics.Identifier_expected); + return createMissingNode(69 /* Identifier */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Identifier_expected); } } return allowIdentifierNames ? parseIdentifierName() : parseIdentifier(); } function parseTemplateExpression() { - var template = createNode(183 /* TemplateExpression */); - template.head = parseLiteralNode(); + var template = createNode(185 /* TemplateExpression */); + template.head = parseTemplateLiteralFragment(); ts.Debug.assert(template.head.kind === 12 /* TemplateHead */, "Template head has wrong token kind"); var templateSpans = []; templateSpans.pos = getNodePos(); @@ -8288,12 +8535,12 @@ var ts; return finishNode(template); } function parseTemplateSpan() { - var span = createNode(190 /* TemplateSpan */); + var span = createNode(192 /* TemplateSpan */); span.expression = allowInAnd(parseExpression); var literal; if (token === 16 /* CloseBraceToken */) { reScanTemplateToken(); - literal = parseLiteralNode(); + literal = parseTemplateLiteralFragment(); } else { literal = parseExpectedToken(14 /* TemplateTail */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, ts.tokenToString(16 /* CloseBraceToken */)); @@ -8301,8 +8548,17 @@ var ts; span.literal = literal; return finishNode(span); } + function parseStringLiteralTypeNode() { + return parseLiteralLikeNode(162 /* StringLiteralType */, /*internName*/ true); + } function parseLiteralNode(internName) { - var node = createNode(token); + return parseLiteralLikeNode(token, internName); + } + function parseTemplateLiteralFragment() { + return parseLiteralLikeNode(token, /*internName*/ false); + } + function parseLiteralLikeNode(kind, internName) { + var node = createNode(kind); var text = scanner.getTokenValue(); node.text = internName ? internIdentifier(text) : text; if (scanner.hasExtendedUnicodeEscape()) { @@ -8331,11 +8587,7 @@ var ts; function parseTypeReferenceOrTypePredicate() { var typeName = parseEntityName(/*allowReservedWords*/ false, ts.Diagnostics.Type_expected); if (typeName.kind === 69 /* Identifier */ && token === 124 /* IsKeyword */ && !scanner.hasPrecedingLineBreak()) { - nextToken(); - var node_1 = createNode(150 /* TypePredicate */, typeName.pos); - node_1.parameterName = typeName; - node_1.type = parseType(); - return finishNode(node_1); + return parseTypePredicate(typeName); } var node = createNode(151 /* TypeReference */, typeName.pos); node.typeName = typeName; @@ -8344,6 +8596,18 @@ var ts; } return finishNode(node); } + function parseTypePredicate(lhs) { + nextToken(); + var node = createNode(150 /* TypePredicate */, lhs.pos); + node.parameterName = lhs; + node.type = parseType(); + return finishNode(node); + } + function parseThisTypeNode() { + var node = createNode(161 /* ThisType */); + nextToken(); + return finishNode(node); + } function parseTypeQuery() { var node = createNode(154 /* TypeQuery */); parseExpected(101 /* TypeOfKeyword */); @@ -8386,7 +8650,7 @@ var ts; return undefined; } function isStartOfParameter() { - return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifier(token) || token === 55 /* AtToken */; + return token === 22 /* DotDotDotToken */ || isIdentifierOrPattern() || ts.isModifierKind(token) || token === 55 /* AtToken */; } function setModifiers(node, modifiers) { if (modifiers) { @@ -8402,7 +8666,7 @@ var ts; // FormalParameter [Yield,Await]: // BindingElement[?Yield,?Await] node.name = parseIdentifierOrPattern(); - if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifier(token)) { + if (ts.getFullWidth(node.name) === 0 && node.flags === 0 && ts.isModifierKind(token)) { // in cases like // 'use strict' // function foo(static) @@ -8523,7 +8787,7 @@ var ts; if (token === 22 /* DotDotDotToken */ || token === 20 /* CloseBracketToken */) { return true; } - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { nextToken(); if (isIdentifier()) { return true; @@ -8580,6 +8844,12 @@ var ts; property.name = name; property.questionToken = questionToken; property.type = parseTypeAnnotation(); + if (token === 56 /* EqualsToken */) { + // Although type literal properties cannot not have initializers, we attempt + // to parse an initializer so we can report in the checker that an interface + // property or type literal property cannot have an initializer. + property.initializer = parseNonParameterInitializer(); + } parseTypeMemberSemicolon(); return finishNode(property); } @@ -8591,7 +8861,7 @@ var ts; case 19 /* OpenBracketToken */: return true; default: - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = lookAhead(isStartOfIndexSignatureDeclaration); if (result) { return result; @@ -8601,7 +8871,7 @@ var ts; } } function isStartOfIndexSignatureDeclaration() { - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { nextToken(); } return isIndexSignature(); @@ -8639,7 +8909,7 @@ var ts; // when incrementally parsing as the parser will produce the Index declaration // if it has the same text regardless of whether it is inside a class or an // object type. - if (ts.isModifier(token)) { + if (ts.isModifierKind(token)) { var result = tryParse(parseIndexSignatureWithModifiers); if (result) { return result; @@ -8713,10 +8983,18 @@ var ts; var node = tryParse(parseKeywordAndNoDot); return node || parseTypeReferenceOrTypePredicate(); case 9 /* StringLiteral */: - return parseLiteralNode(/*internName*/ true); + return parseStringLiteralTypeNode(); case 103 /* VoidKeyword */: - case 97 /* ThisKeyword */: return parseTokenNode(); + case 97 /* ThisKeyword */: { + var thisKeyword = parseThisTypeNode(); + if (token === 124 /* IsKeyword */ && !scanner.hasPrecedingLineBreak()) { + return parseTypePredicate(thisKeyword); + } + else { + return thisKeyword; + } + } case 101 /* TypeOfKeyword */: return parseTypeQuery(); case 15 /* OpenBraceToken */: @@ -8801,11 +9079,11 @@ var ts; // ( ... return true; } - if (isIdentifier() || ts.isModifier(token)) { + if (isIdentifier() || ts.isModifierKind(token)) { nextToken(); if (token === 54 /* ColonToken */ || token === 24 /* CommaToken */ || token === 53 /* QuestionToken */ || token === 56 /* EqualsToken */ || - isIdentifier() || ts.isModifier(token)) { + isIdentifier() || ts.isModifierKind(token)) { // ( id : // ( id , // ( id ? @@ -8906,9 +9184,6 @@ var ts; token !== 55 /* AtToken */ && isStartOfExpression(); } - function allowInAndParseExpression() { - return allowInAnd(parseExpression); - } function parseExpression() { // Expression[in]: // AssignmentExpression[in] @@ -8916,7 +9191,7 @@ var ts; // clear the decorator context when parsing Expression, as it should be unambiguous when parsing a decorator var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { - setDecoratorContext(false); + setDecoratorContext(/*val*/ false); } var expr = parseAssignmentExpressionOrHigher(); var operatorToken; @@ -8924,7 +9199,7 @@ var ts; expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher()); } if (saveDecoratorContext) { - setDecoratorContext(true); + setDecoratorContext(/*val*/ true); } return expr; } @@ -9029,7 +9304,7 @@ var ts; return !scanner.hasPrecedingLineBreak() && isIdentifier(); } function parseYieldExpression() { - var node = createNode(184 /* YieldExpression */); + var node = createNode(186 /* YieldExpression */); // YieldExpression[In] : // yield // yield [no LineTerminator here] [Lexical goal InputElementRegExp]AssignmentExpression[?In, Yield] @@ -9049,14 +9324,14 @@ var ts; } function parseSimpleArrowFunctionExpression(identifier) { ts.Debug.assert(token === 34 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>"); - var node = createNode(174 /* ArrowFunction */, identifier.pos); + var node = createNode(176 /* ArrowFunction */, identifier.pos); var parameter = createNode(138 /* Parameter */, identifier.pos); parameter.name = identifier; finishNode(parameter); node.parameters = [parameter]; node.parameters.pos = parameter.pos; node.parameters.end = parameter.end; - node.equalsGreaterThanToken = parseExpectedToken(34 /* EqualsGreaterThanToken */, false, ts.Diagnostics._0_expected, "=>"); + node.equalsGreaterThanToken = parseExpectedToken(34 /* EqualsGreaterThanToken */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, "=>"); node.body = parseArrowFunctionExpressionBody(/*isAsync*/ false); return finishNode(node); } @@ -9160,7 +9435,7 @@ var ts; return 1 /* True */; } // This *could* be a parenthesized arrow function. - // Return Unknown to const the caller know. + // Return Unknown to let the caller know. return 2 /* Unknown */; } else { @@ -9202,7 +9477,7 @@ var ts; return parseParenthesizedArrowFunctionExpressionHead(/*allowAmbiguity*/ false); } function parseParenthesizedArrowFunctionExpressionHead(allowAmbiguity) { - var node = createNode(174 /* ArrowFunction */); + var node = createNode(176 /* ArrowFunction */); setModifiers(node, parseModifiersForArrowFunction()); var isAsync = !!(node.flags & 256 /* Async */); // Arrow functions are never generators. @@ -9246,7 +9521,7 @@ var ts; // user meant to supply a block. For example, if the user wrote: // // a => - // const v = 0; + // let v = 0; // } // // they may be missing an open brace. Check to see if that's the case so we can @@ -9268,7 +9543,7 @@ var ts; } // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and // we do not that for the 'whenFalse' part. - var node = createNode(182 /* ConditionalExpression */, leftOperand.pos); + var node = createNode(184 /* ConditionalExpression */, leftOperand.pos); node.condition = leftOperand; node.questionToken = questionToken; node.whenTrue = doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher); @@ -9389,39 +9664,39 @@ var ts; return -1; } function makeBinaryExpression(left, operatorToken, right) { - var node = createNode(181 /* BinaryExpression */, left.pos); + var node = createNode(183 /* BinaryExpression */, left.pos); node.left = left; node.operatorToken = operatorToken; node.right = right; return finishNode(node); } function makeAsExpression(left, right) { - var node = createNode(189 /* AsExpression */, left.pos); + var node = createNode(191 /* AsExpression */, left.pos); node.expression = left; node.type = right; return finishNode(node); } function parsePrefixUnaryExpression() { - var node = createNode(179 /* PrefixUnaryExpression */); + var node = createNode(181 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseSimpleUnaryExpression(); return finishNode(node); } function parseDeleteExpression() { - var node = createNode(175 /* DeleteExpression */); + var node = createNode(177 /* DeleteExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseTypeOfExpression() { - var node = createNode(176 /* TypeOfExpression */); + var node = createNode(178 /* TypeOfExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); } function parseVoidExpression() { - var node = createNode(177 /* VoidExpression */); + var node = createNode(179 /* VoidExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -9437,7 +9712,7 @@ var ts; return false; } function parseAwaitExpression() { - var node = createNode(178 /* AwaitExpression */); + var node = createNode(180 /* AwaitExpression */); nextToken(); node.expression = parseSimpleUnaryExpression(); return finishNode(node); @@ -9463,7 +9738,7 @@ var ts; var simpleUnaryExpression = parseSimpleUnaryExpression(); if (token === 38 /* AsteriskAsteriskToken */) { var start = ts.skipTrivia(sourceText, simpleUnaryExpression.pos); - if (simpleUnaryExpression.kind === 171 /* TypeAssertionExpression */) { + if (simpleUnaryExpression.kind === 173 /* TypeAssertionExpression */) { parseErrorAtPosition(start, simpleUnaryExpression.end - start, ts.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses); } else { @@ -9553,7 +9828,7 @@ var ts; */ function parseIncrementExpression() { if (token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) { - var node = createNode(179 /* PrefixUnaryExpression */); + var node = createNode(181 /* PrefixUnaryExpression */); node.operator = token; nextToken(); node.operand = parseLeftHandSideExpressionOrHigher(); @@ -9566,7 +9841,7 @@ var ts; var expression = parseLeftHandSideExpressionOrHigher(); ts.Debug.assert(ts.isLeftHandSideExpression(expression)); if ((token === 41 /* PlusPlusToken */ || token === 42 /* MinusMinusToken */) && !scanner.hasPrecedingLineBreak()) { - var node = createNode(180 /* PostfixUnaryExpression */, expression.pos); + var node = createNode(182 /* PostfixUnaryExpression */, expression.pos); node.operand = expression; node.operator = token; nextToken(); @@ -9670,24 +9945,37 @@ var ts; } // If we have seen "super" it must be followed by '(' or '.'. // If it wasn't then just try to parse out a '.' and report an error. - var node = createNode(166 /* PropertyAccessExpression */, expression.pos); + var node = createNode(168 /* PropertyAccessExpression */, expression.pos); node.expression = expression; node.dotToken = parseExpectedToken(21 /* DotToken */, /*reportAtCurrentPosition*/ false, ts.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access); node.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); return finishNode(node); } + function tagNamesAreEquivalent(lhs, rhs) { + if (lhs.kind !== rhs.kind) { + return false; + } + if (lhs.kind === 69 /* Identifier */) { + return lhs.text === rhs.text; + } + return lhs.right.text === rhs.right.text && + tagNamesAreEquivalent(lhs.left, rhs.left); + } function parseJsxElementOrSelfClosingElement(inExpressionContext) { var opening = parseJsxOpeningOrSelfClosingElement(inExpressionContext); var result; - if (opening.kind === 235 /* JsxOpeningElement */) { - var node = createNode(233 /* JsxElement */, opening.pos); + if (opening.kind === 237 /* JsxOpeningElement */) { + var node = createNode(235 /* JsxElement */, opening.pos); node.openingElement = opening; node.children = parseJsxChildren(node.openingElement.tagName); node.closingElement = parseJsxClosingElement(inExpressionContext); + if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { + parseErrorAtPosition(node.closingElement.pos, node.closingElement.end - node.closingElement.pos, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, node.openingElement.tagName)); + } result = finishNode(node); } else { - ts.Debug.assert(opening.kind === 234 /* JsxSelfClosingElement */); + ts.Debug.assert(opening.kind === 236 /* JsxSelfClosingElement */); // Nothing else to do for self-closing elements result = opening; } @@ -9702,7 +9990,7 @@ var ts; var invalidElement = tryParse(function () { return parseJsxElementOrSelfClosingElement(/*inExpressionContext*/ true); }); if (invalidElement) { parseErrorAtCurrentToken(ts.Diagnostics.JSX_expressions_must_have_one_parent_element); - var badNode = createNode(181 /* BinaryExpression */, result.pos); + var badNode = createNode(183 /* BinaryExpression */, result.pos); badNode.end = invalidElement.end; badNode.left = result; badNode.right = invalidElement; @@ -9714,13 +10002,13 @@ var ts; return result; } function parseJsxText() { - var node = createNode(236 /* JsxText */, scanner.getStartPos()); + var node = createNode(238 /* JsxText */, scanner.getStartPos()); token = scanner.scanJsxToken(); return finishNode(node); } function parseJsxChild() { switch (token) { - case 236 /* JsxText */: + case 238 /* JsxText */: return parseJsxText(); case 15 /* OpenBraceToken */: return parseJsxExpression(/*inExpressionContext*/ false); @@ -9737,10 +10025,13 @@ var ts; while (true) { token = scanner.reScanJsxToken(); if (token === 26 /* LessThanSlashToken */) { + // Closing tag break; } else if (token === 1 /* EndOfFileToken */) { - parseErrorAtCurrentToken(ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); + // If we hit EOF, issue the error at the tag that lacks the closing element + // rather than at the end of the file (which is useless) + parseErrorAtPosition(openingTagName.pos, openingTagName.end - openingTagName.pos, ts.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag, ts.getTextOfNodeFromSourceText(sourceText, openingTagName)); break; } result.push(parseJsxChild()); @@ -9759,7 +10050,7 @@ var ts; // Closing tag, so scan the immediately-following text with the JSX scanning instead // of regular scanning to avoid treating illegal characters (e.g. '#') as immediate // scanning errors - node = createNode(235 /* JsxOpeningElement */, fullStart); + node = createNode(237 /* JsxOpeningElement */, fullStart); scanJsxText(); } else { @@ -9768,10 +10059,10 @@ var ts; parseExpected(27 /* GreaterThanToken */); } else { - parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*advance*/ false); + parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } - node = createNode(234 /* JsxSelfClosingElement */, fullStart); + node = createNode(236 /* JsxSelfClosingElement */, fullStart); } node.tagName = tagName; node.attributes = attributes; @@ -9790,16 +10081,16 @@ var ts; return elementName; } function parseJsxExpression(inExpressionContext) { - var node = createNode(240 /* JsxExpression */); + var node = createNode(242 /* JsxExpression */); parseExpected(15 /* OpenBraceToken */); if (token !== 16 /* CloseBraceToken */) { - node.expression = parseExpression(); + node.expression = parseAssignmentExpressionOrHigher(); } if (inExpressionContext) { parseExpected(16 /* CloseBraceToken */); } else { - parseExpected(16 /* CloseBraceToken */, /*message*/ undefined, /*advance*/ false); + parseExpected(16 /* CloseBraceToken */, /*message*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } return finishNode(node); @@ -9809,7 +10100,7 @@ var ts; return parseJsxSpreadAttribute(); } scanJsxIdentifier(); - var node = createNode(238 /* JsxAttribute */); + var node = createNode(240 /* JsxAttribute */); node.name = parseIdentifierName(); if (parseOptional(56 /* EqualsToken */)) { switch (token) { @@ -9824,7 +10115,7 @@ var ts; return finishNode(node); } function parseJsxSpreadAttribute() { - var node = createNode(239 /* JsxSpreadAttribute */); + var node = createNode(241 /* JsxSpreadAttribute */); parseExpected(15 /* OpenBraceToken */); parseExpected(22 /* DotDotDotToken */); node.expression = parseExpression(); @@ -9832,20 +10123,20 @@ var ts; return finishNode(node); } function parseJsxClosingElement(inExpressionContext) { - var node = createNode(237 /* JsxClosingElement */); + var node = createNode(239 /* JsxClosingElement */); parseExpected(26 /* LessThanSlashToken */); node.tagName = parseJsxElementName(); if (inExpressionContext) { parseExpected(27 /* GreaterThanToken */); } else { - parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*advance*/ false); + parseExpected(27 /* GreaterThanToken */, /*diagnostic*/ undefined, /*shouldAdvance*/ false); scanJsxText(); } return finishNode(node); } function parseTypeAssertion() { - var node = createNode(171 /* TypeAssertionExpression */); + var node = createNode(173 /* TypeAssertionExpression */); parseExpected(25 /* LessThanToken */); node.type = parseType(); parseExpected(27 /* GreaterThanToken */); @@ -9856,7 +10147,7 @@ var ts; while (true) { var dotToken = parseOptionalToken(21 /* DotToken */); if (dotToken) { - var propertyAccess = createNode(166 /* PropertyAccessExpression */, expression.pos); + var propertyAccess = createNode(168 /* PropertyAccessExpression */, expression.pos); propertyAccess.expression = expression; propertyAccess.dotToken = dotToken; propertyAccess.name = parseRightSideOfDot(/*allowIdentifierNames*/ true); @@ -9865,7 +10156,7 @@ var ts; } // when in the [Decorator] context, we do not parse ElementAccess as it could be part of a ComputedPropertyName if (!inDecoratorContext() && parseOptional(19 /* OpenBracketToken */)) { - var indexedAccess = createNode(167 /* ElementAccessExpression */, expression.pos); + var indexedAccess = createNode(169 /* ElementAccessExpression */, expression.pos); indexedAccess.expression = expression; // It's not uncommon for a user to write: "new Type[]". // Check for that common pattern and report a better error message. @@ -9881,7 +10172,7 @@ var ts; continue; } if (token === 11 /* NoSubstitutionTemplateLiteral */ || token === 12 /* TemplateHead */) { - var tagExpression = createNode(170 /* TaggedTemplateExpression */, expression.pos); + var tagExpression = createNode(172 /* TaggedTemplateExpression */, expression.pos); tagExpression.tag = expression; tagExpression.template = token === 11 /* NoSubstitutionTemplateLiteral */ ? parseLiteralNode() @@ -9904,7 +10195,7 @@ var ts; if (!typeArguments) { return expression; } - var callExpr = createNode(168 /* CallExpression */, expression.pos); + var callExpr = createNode(170 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.typeArguments = typeArguments; callExpr.arguments = parseArgumentList(); @@ -9912,7 +10203,7 @@ var ts; continue; } else if (token === 17 /* OpenParenToken */) { - var callExpr = createNode(168 /* CallExpression */, expression.pos); + var callExpr = createNode(170 /* CallExpression */, expression.pos); callExpr.expression = expression; callExpr.arguments = parseArgumentList(); expression = finishNode(callExpr); @@ -10022,28 +10313,28 @@ var ts; return parseIdentifier(ts.Diagnostics.Expression_expected); } function parseParenthesizedExpression() { - var node = createNode(172 /* ParenthesizedExpression */); + var node = createNode(174 /* ParenthesizedExpression */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); return finishNode(node); } function parseSpreadElement() { - var node = createNode(185 /* SpreadElementExpression */); + var node = createNode(187 /* SpreadElementExpression */); parseExpected(22 /* DotDotDotToken */); node.expression = parseAssignmentExpressionOrHigher(); return finishNode(node); } function parseArgumentOrArrayLiteralElement() { return token === 22 /* DotDotDotToken */ ? parseSpreadElement() : - token === 24 /* CommaToken */ ? createNode(187 /* OmittedExpression */) : + token === 24 /* CommaToken */ ? createNode(189 /* OmittedExpression */) : parseAssignmentExpressionOrHigher(); } function parseArgumentExpression() { return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement); } function parseArrayLiteralExpression() { - var node = createNode(164 /* ArrayLiteralExpression */); + var node = createNode(166 /* ArrayLiteralExpression */); parseExpected(19 /* OpenBracketToken */); if (scanner.hasPrecedingLineBreak()) node.flags |= 1024 /* MultiLine */; @@ -10070,7 +10361,6 @@ var ts; } var asteriskToken = parseOptionalToken(37 /* AsteriskToken */); var tokenIsIdentifier = isIdentifier(); - var nameToken = token; var propertyName = parsePropertyName(); // Disallowing of optional property assignments happens in the grammar checker. var questionToken = parseOptionalToken(53 /* QuestionToken */); @@ -10084,7 +10374,7 @@ var ts; // this is necessary because ObjectLiteral productions are also used to cover grammar for ObjectAssignmentPattern var isShorthandPropertyAssignment = tokenIsIdentifier && (token === 24 /* CommaToken */ || token === 16 /* CloseBraceToken */ || token === 56 /* EqualsToken */); if (isShorthandPropertyAssignment) { - var shorthandDeclaration = createNode(246 /* ShorthandPropertyAssignment */, fullStart); + var shorthandDeclaration = createNode(248 /* ShorthandPropertyAssignment */, fullStart); shorthandDeclaration.name = propertyName; shorthandDeclaration.questionToken = questionToken; var equalsToken = parseOptionalToken(56 /* EqualsToken */); @@ -10095,7 +10385,8 @@ var ts; return finishNode(shorthandDeclaration); } else { - var propertyAssignment = createNode(245 /* PropertyAssignment */, fullStart); + var propertyAssignment = createNode(247 /* PropertyAssignment */, fullStart); + propertyAssignment.modifiers = modifiers; propertyAssignment.name = propertyName; propertyAssignment.questionToken = questionToken; parseExpected(54 /* ColonToken */); @@ -10104,7 +10395,7 @@ var ts; } } function parseObjectLiteralExpression() { - var node = createNode(165 /* ObjectLiteralExpression */); + var node = createNode(167 /* ObjectLiteralExpression */); parseExpected(15 /* OpenBraceToken */); if (scanner.hasPrecedingLineBreak()) { node.flags |= 1024 /* MultiLine */; @@ -10121,9 +10412,9 @@ var ts; // function BindingIdentifier[opt](FormalParameters){ FunctionBody } var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { - setDecoratorContext(false); + setDecoratorContext(/*val*/ false); } - var node = createNode(173 /* FunctionExpression */); + var node = createNode(175 /* FunctionExpression */); setModifiers(node, parseModifiers()); parseExpected(87 /* FunctionKeyword */); node.asteriskToken = parseOptionalToken(37 /* AsteriskToken */); @@ -10137,7 +10428,7 @@ var ts; fillSignature(54 /* ColonToken */, /*yieldContext*/ isGenerator, /*awaitContext*/ isAsync, /*requireCompleteParameterList*/ false, node); node.body = parseFunctionBlock(/*allowYield*/ isGenerator, /*allowAwait*/ isAsync, /*ignoreMissingOpenBrace*/ false); if (saveDecoratorContext) { - setDecoratorContext(true); + setDecoratorContext(/*val*/ true); } return finishNode(node); } @@ -10145,7 +10436,7 @@ var ts; return isIdentifier() ? parseIdentifier() : undefined; } function parseNewExpression() { - var node = createNode(169 /* NewExpression */); + var node = createNode(171 /* NewExpression */); parseExpected(92 /* NewKeyword */); node.expression = parseMemberExpressionOrHigher(); node.typeArguments = tryParse(parseTypeArgumentsInExpression); @@ -10156,7 +10447,7 @@ var ts; } // STATEMENTS function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) { - var node = createNode(192 /* Block */); + var node = createNode(194 /* Block */); if (parseExpected(15 /* OpenBraceToken */, diagnosticMessage) || ignoreMissingOpenBrace) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -10175,23 +10466,23 @@ var ts; // arrow function. The body of the function is not in [Decorator] context. var saveDecoratorContext = inDecoratorContext(); if (saveDecoratorContext) { - setDecoratorContext(false); + setDecoratorContext(/*val*/ false); } var block = parseBlock(ignoreMissingOpenBrace, diagnosticMessage); if (saveDecoratorContext) { - setDecoratorContext(true); + setDecoratorContext(/*val*/ true); } setYieldContext(savedYieldContext); setAwaitContext(savedAwaitContext); return block; } function parseEmptyStatement() { - var node = createNode(194 /* EmptyStatement */); + var node = createNode(196 /* EmptyStatement */); parseExpected(23 /* SemicolonToken */); return finishNode(node); } function parseIfStatement() { - var node = createNode(196 /* IfStatement */); + var node = createNode(198 /* IfStatement */); parseExpected(88 /* IfKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10201,7 +10492,7 @@ var ts; return finishNode(node); } function parseDoStatement() { - var node = createNode(197 /* DoStatement */); + var node = createNode(199 /* DoStatement */); parseExpected(79 /* DoKeyword */); node.statement = parseStatement(); parseExpected(104 /* WhileKeyword */); @@ -10216,7 +10507,7 @@ var ts; return finishNode(node); } function parseWhileStatement() { - var node = createNode(198 /* WhileStatement */); + var node = createNode(200 /* WhileStatement */); parseExpected(104 /* WhileKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10239,21 +10530,21 @@ var ts; } var forOrForInOrForOfStatement; if (parseOptional(90 /* InKeyword */)) { - var forInStatement = createNode(200 /* ForInStatement */, pos); + var forInStatement = createNode(202 /* ForInStatement */, pos); forInStatement.initializer = initializer; forInStatement.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forInStatement; } else if (parseOptional(134 /* OfKeyword */)) { - var forOfStatement = createNode(201 /* ForOfStatement */, pos); + var forOfStatement = createNode(203 /* ForOfStatement */, pos); forOfStatement.initializer = initializer; forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher); parseExpected(18 /* CloseParenToken */); forOrForInOrForOfStatement = forOfStatement; } else { - var forStatement = createNode(199 /* ForStatement */, pos); + var forStatement = createNode(201 /* ForStatement */, pos); forStatement.initializer = initializer; parseExpected(23 /* SemicolonToken */); if (token !== 23 /* SemicolonToken */ && token !== 18 /* CloseParenToken */) { @@ -10271,7 +10562,7 @@ var ts; } function parseBreakOrContinueStatement(kind) { var node = createNode(kind); - parseExpected(kind === 203 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); + parseExpected(kind === 205 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */); if (!canParseSemicolon()) { node.label = parseIdentifier(); } @@ -10279,7 +10570,7 @@ var ts; return finishNode(node); } function parseReturnStatement() { - var node = createNode(204 /* ReturnStatement */); + var node = createNode(206 /* ReturnStatement */); parseExpected(94 /* ReturnKeyword */); if (!canParseSemicolon()) { node.expression = allowInAnd(parseExpression); @@ -10288,7 +10579,7 @@ var ts; return finishNode(node); } function parseWithStatement() { - var node = createNode(205 /* WithStatement */); + var node = createNode(207 /* WithStatement */); parseExpected(105 /* WithKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); @@ -10297,7 +10588,7 @@ var ts; return finishNode(node); } function parseCaseClause() { - var node = createNode(241 /* CaseClause */); + var node = createNode(243 /* CaseClause */); parseExpected(71 /* CaseKeyword */); node.expression = allowInAnd(parseExpression); parseExpected(54 /* ColonToken */); @@ -10305,7 +10596,7 @@ var ts; return finishNode(node); } function parseDefaultClause() { - var node = createNode(242 /* DefaultClause */); + var node = createNode(244 /* DefaultClause */); parseExpected(77 /* DefaultKeyword */); parseExpected(54 /* ColonToken */); node.statements = parseList(3 /* SwitchClauseStatements */, parseStatement); @@ -10315,12 +10606,12 @@ var ts; return token === 71 /* CaseKeyword */ ? parseCaseClause() : parseDefaultClause(); } function parseSwitchStatement() { - var node = createNode(206 /* SwitchStatement */); + var node = createNode(208 /* SwitchStatement */); parseExpected(96 /* SwitchKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = allowInAnd(parseExpression); parseExpected(18 /* CloseParenToken */); - var caseBlock = createNode(220 /* CaseBlock */, scanner.getStartPos()); + var caseBlock = createNode(222 /* CaseBlock */, scanner.getStartPos()); parseExpected(15 /* OpenBraceToken */); caseBlock.clauses = parseList(2 /* SwitchClauses */, parseCaseOrDefaultClause); parseExpected(16 /* CloseBraceToken */); @@ -10335,7 +10626,7 @@ var ts; // directly as that might consume an expression on the following line. // We just return 'undefined' in that case. The actual error will be reported in the // grammar walker. - var node = createNode(208 /* ThrowStatement */); + var node = createNode(210 /* ThrowStatement */); parseExpected(98 /* ThrowKeyword */); node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression); parseSemicolon(); @@ -10343,7 +10634,7 @@ var ts; } // TODO: Review for error recovery function parseTryStatement() { - var node = createNode(209 /* TryStatement */); + var node = createNode(211 /* TryStatement */); parseExpected(100 /* TryKeyword */); node.tryBlock = parseBlock(/*ignoreMissingOpenBrace*/ false); node.catchClause = token === 72 /* CatchKeyword */ ? parseCatchClause() : undefined; @@ -10356,7 +10647,7 @@ var ts; return finishNode(node); } function parseCatchClause() { - var result = createNode(244 /* CatchClause */); + var result = createNode(246 /* CatchClause */); parseExpected(72 /* CatchKeyword */); if (parseExpected(17 /* OpenParenToken */)) { result.variableDeclaration = parseVariableDeclaration(); @@ -10366,7 +10657,7 @@ var ts; return finishNode(result); } function parseDebuggerStatement() { - var node = createNode(210 /* DebuggerStatement */); + var node = createNode(212 /* DebuggerStatement */); parseExpected(76 /* DebuggerKeyword */); parseSemicolon(); return finishNode(node); @@ -10378,13 +10669,13 @@ var ts; var fullStart = scanner.getStartPos(); var expression = allowInAnd(parseExpression); if (expression.kind === 69 /* Identifier */ && parseOptional(54 /* ColonToken */)) { - var labeledStatement = createNode(207 /* LabeledStatement */, fullStart); + var labeledStatement = createNode(209 /* LabeledStatement */, fullStart); labeledStatement.label = expression; labeledStatement.statement = parseStatement(); return finishNode(labeledStatement); } else { - var expressionStatement = createNode(195 /* ExpressionStatement */, fullStart); + var expressionStatement = createNode(197 /* ExpressionStatement */, fullStart); expressionStatement.expression = expression; parseSemicolon(); return finishNode(expressionStatement); @@ -10558,9 +10849,9 @@ var ts; case 86 /* ForKeyword */: return parseForOrForInOrForOfStatement(); case 75 /* ContinueKeyword */: - return parseBreakOrContinueStatement(202 /* ContinueStatement */); + return parseBreakOrContinueStatement(204 /* ContinueStatement */); case 70 /* BreakKeyword */: - return parseBreakOrContinueStatement(203 /* BreakStatement */); + return parseBreakOrContinueStatement(205 /* BreakStatement */); case 94 /* ReturnKeyword */: return parseReturnStatement(); case 105 /* WithKeyword */: @@ -10633,7 +10924,7 @@ var ts; if (decorators || modifiers) { // We reached this point because we encountered decorators and/or modifiers and assumed a declaration // would follow. For recovery and error reporting purposes, return an incomplete declaration. - var node = createMissingNode(231 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); + var node = createMissingNode(233 /* MissingDeclaration */, /*reportAtCurrentPosition*/ true, ts.Diagnostics.Declaration_expected); node.pos = fullStart; node.decorators = decorators; setModifiers(node, modifiers); @@ -10655,16 +10946,16 @@ var ts; // DECLARATIONS function parseArrayBindingElement() { if (token === 24 /* CommaToken */) { - return createNode(187 /* OmittedExpression */); + return createNode(189 /* OmittedExpression */); } - var node = createNode(163 /* BindingElement */); + var node = createNode(165 /* BindingElement */); node.dotDotDotToken = parseOptionalToken(22 /* DotDotDotToken */); node.name = parseIdentifierOrPattern(); node.initializer = parseBindingElementInitializer(/*inParameter*/ false); return finishNode(node); } function parseObjectBindingElement() { - var node = createNode(163 /* BindingElement */); + var node = createNode(165 /* BindingElement */); var tokenIsIdentifier = isIdentifier(); var propertyName = parsePropertyName(); if (tokenIsIdentifier && token !== 54 /* ColonToken */) { @@ -10679,14 +10970,14 @@ var ts; return finishNode(node); } function parseObjectBindingPattern() { - var node = createNode(161 /* ObjectBindingPattern */); + var node = createNode(163 /* ObjectBindingPattern */); parseExpected(15 /* OpenBraceToken */); node.elements = parseDelimitedList(9 /* ObjectBindingElements */, parseObjectBindingElement); parseExpected(16 /* CloseBraceToken */); return finishNode(node); } function parseArrayBindingPattern() { - var node = createNode(162 /* ArrayBindingPattern */); + var node = createNode(164 /* ArrayBindingPattern */); parseExpected(19 /* OpenBracketToken */); node.elements = parseDelimitedList(10 /* ArrayBindingElements */, parseArrayBindingElement); parseExpected(20 /* CloseBracketToken */); @@ -10705,7 +10996,7 @@ var ts; return parseIdentifier(); } function parseVariableDeclaration() { - var node = createNode(211 /* VariableDeclaration */); + var node = createNode(213 /* VariableDeclaration */); node.name = parseIdentifierOrPattern(); node.type = parseTypeAnnotation(); if (!isInOrOfKeyword(token)) { @@ -10714,7 +11005,7 @@ var ts; return finishNode(node); } function parseVariableDeclarationList(inForStatementInitializer) { - var node = createNode(212 /* VariableDeclarationList */); + var node = createNode(214 /* VariableDeclarationList */); switch (token) { case 102 /* VarKeyword */: break; @@ -10752,7 +11043,7 @@ var ts; return nextTokenIsIdentifier() && nextToken() === 18 /* CloseParenToken */; } function parseVariableStatement(fullStart, decorators, modifiers) { - var node = createNode(193 /* VariableStatement */, fullStart); + var node = createNode(195 /* VariableStatement */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.declarationList = parseVariableDeclarationList(/*inForStatementInitializer*/ false); @@ -10760,7 +11051,7 @@ var ts; return finishNode(node); } function parseFunctionDeclaration(fullStart, decorators, modifiers) { - var node = createNode(213 /* FunctionDeclaration */, fullStart); + var node = createNode(215 /* FunctionDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(87 /* FunctionKeyword */); @@ -10858,7 +11149,7 @@ var ts; return true; } // Eat up all modifiers, but hold on to the last one in case it is actually an identifier. - while (ts.isModifier(token)) { + while (ts.isModifierKind(token)) { idToken = token; // If the idToken is a class modifier (protected, private, public, and static), it is // certain that we are starting to parse class member. This allows better error recovery @@ -10919,7 +11210,7 @@ var ts; } if (!decorators) { decorators = []; - decorators.pos = scanner.getStartPos(); + decorators.pos = decoratorStart; } var decorator = createNode(139 /* Decorator */, decoratorStart); decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher); @@ -10930,14 +11221,30 @@ var ts; } return decorators; } - function parseModifiers() { + /* + * There are situations in which a modifier like 'const' will appear unexpectedly, such as on a class member. + * In those situations, if we are entirely sure that 'const' is not valid on its own (such as when ASI takes effect + * and turns it into a standalone declaration), then it is better to parse it and report an error later. + * + * In such situations, 'permitInvalidConstAsModifier' should be set to true. + */ + function parseModifiers(permitInvalidConstAsModifier) { var flags = 0; var modifiers; while (true) { var modifierStart = scanner.getStartPos(); var modifierKind = token; - if (!parseAnyContextualModifier()) { - break; + if (token === 74 /* ConstKeyword */ && permitInvalidConstAsModifier) { + // We need to ensure that any subsequent modifiers appear on the same line + // so that when 'const' is a standalone declaration, we don't issue an error. + if (!tryParse(nextTokenIsOnSameLineAndCanFollowModifier)) { + break; + } + } + else { + if (!parseAnyContextualModifier()) { + break; + } } if (!modifiers) { modifiers = []; @@ -10970,13 +11277,13 @@ var ts; } function parseClassElement() { if (token === 23 /* SemicolonToken */) { - var result = createNode(191 /* SemicolonClassElement */); + var result = createNode(193 /* SemicolonClassElement */); nextToken(); return finishNode(result); } var fullStart = getNodePos(); var decorators = parseDecorators(); - var modifiers = parseModifiers(); + var modifiers = parseModifiers(/*permitInvalidConstAsModifier*/ true); var accessor = tryParseAccessorDeclaration(fullStart, decorators, modifiers); if (accessor) { return accessor; @@ -11008,10 +11315,10 @@ var ts; return parseClassDeclarationOrExpression( /*fullStart*/ scanner.getStartPos(), /*decorators*/ undefined, - /*modifiers*/ undefined, 186 /* ClassExpression */); + /*modifiers*/ undefined, 188 /* ClassExpression */); } function parseClassDeclaration(fullStart, decorators, modifiers) { - return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 214 /* ClassDeclaration */); + return parseClassDeclarationOrExpression(fullStart, decorators, modifiers, 216 /* ClassDeclaration */); } function parseClassDeclarationOrExpression(fullStart, decorators, modifiers, kind) { var node = createNode(kind, fullStart); @@ -11036,8 +11343,8 @@ var ts; // implements is a future reserved word so // 'class implements' might mean either // - class expression with omitted name, 'implements' starts heritage clause - // - class with name 'implements' - // 'isImplementsClause' helps to disambiguate between these two cases + // - class with name 'implements' + // 'isImplementsClause' helps to disambiguate between these two cases return isIdentifier() && !isImplementsClause() ? parseIdentifier() : undefined; @@ -11053,12 +11360,9 @@ var ts; } return undefined; } - function parseHeritageClausesWorker() { - return parseList(20 /* HeritageClauses */, parseHeritageClause); - } function parseHeritageClause() { if (token === 83 /* ExtendsKeyword */ || token === 106 /* ImplementsKeyword */) { - var node = createNode(243 /* HeritageClause */); + var node = createNode(245 /* HeritageClause */); node.token = token; nextToken(); node.types = parseDelimitedList(7 /* HeritageClauseElement */, parseExpressionWithTypeArguments); @@ -11067,7 +11371,7 @@ var ts; return undefined; } function parseExpressionWithTypeArguments() { - var node = createNode(188 /* ExpressionWithTypeArguments */); + var node = createNode(190 /* ExpressionWithTypeArguments */); node.expression = parseLeftHandSideExpressionOrHigher(); if (token === 25 /* LessThanToken */) { node.typeArguments = parseBracketedList(18 /* TypeArguments */, parseType, 25 /* LessThanToken */, 27 /* GreaterThanToken */); @@ -11081,7 +11385,7 @@ var ts; return parseList(5 /* ClassMembers */, parseClassElement); } function parseInterfaceDeclaration(fullStart, decorators, modifiers) { - var node = createNode(215 /* InterfaceDeclaration */, fullStart); + var node = createNode(217 /* InterfaceDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(107 /* InterfaceKeyword */); @@ -11092,7 +11396,7 @@ var ts; return finishNode(node); } function parseTypeAliasDeclaration(fullStart, decorators, modifiers) { - var node = createNode(216 /* TypeAliasDeclaration */, fullStart); + var node = createNode(218 /* TypeAliasDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(132 /* TypeKeyword */); @@ -11108,13 +11412,13 @@ var ts; // ConstantEnumMemberSection, which starts at the beginning of an enum declaration // or any time an integer literal initializer is encountered. function parseEnumMember() { - var node = createNode(247 /* EnumMember */, scanner.getStartPos()); + var node = createNode(249 /* EnumMember */, scanner.getStartPos()); node.name = parsePropertyName(); node.initializer = allowInAnd(parseNonParameterInitializer); return finishNode(node); } function parseEnumDeclaration(fullStart, decorators, modifiers) { - var node = createNode(217 /* EnumDeclaration */, fullStart); + var node = createNode(219 /* EnumDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); parseExpected(81 /* EnumKeyword */); @@ -11129,7 +11433,7 @@ var ts; return finishNode(node); } function parseModuleBlock() { - var node = createNode(219 /* ModuleBlock */, scanner.getStartPos()); + var node = createNode(221 /* ModuleBlock */, scanner.getStartPos()); if (parseExpected(15 /* OpenBraceToken */)) { node.statements = parseList(1 /* BlockStatements */, parseStatement); parseExpected(16 /* CloseBraceToken */); @@ -11140,7 +11444,7 @@ var ts; return finishNode(node); } function parseModuleOrNamespaceDeclaration(fullStart, decorators, modifiers, flags) { - var node = createNode(218 /* ModuleDeclaration */, fullStart); + var node = createNode(220 /* ModuleDeclaration */, fullStart); // If we are parsing a dotted namespace name, we want to // propagate the 'Namespace' flag across the names if set. var namespaceFlag = flags & 65536 /* Namespace */; @@ -11154,7 +11458,7 @@ var ts; return finishNode(node); } function parseAmbientExternalModuleDeclaration(fullStart, decorators, modifiers) { - var node = createNode(218 /* ModuleDeclaration */, fullStart); + var node = createNode(220 /* ModuleDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); node.name = parseLiteralNode(/*internName*/ true); @@ -11184,11 +11488,6 @@ var ts; function nextTokenIsSlash() { return nextToken() === 39 /* SlashToken */; } - function nextTokenIsCommaOrFromKeyword() { - nextToken(); - return token === 24 /* CommaToken */ || - token === 133 /* FromKeyword */; - } function parseImportDeclarationOrImportEqualsDeclaration(fullStart, decorators, modifiers) { parseExpected(89 /* ImportKeyword */); var afterImportPos = scanner.getStartPos(); @@ -11199,7 +11498,7 @@ var ts; // ImportEquals declaration of type: // import x = require("mod"); or // import x = M.x; - var importEqualsDeclaration = createNode(221 /* ImportEqualsDeclaration */, fullStart); + var importEqualsDeclaration = createNode(223 /* ImportEqualsDeclaration */, fullStart); importEqualsDeclaration.decorators = decorators; setModifiers(importEqualsDeclaration, modifiers); importEqualsDeclaration.name = identifier; @@ -11210,7 +11509,7 @@ var ts; } } // Import statement - var importDeclaration = createNode(222 /* ImportDeclaration */, fullStart); + var importDeclaration = createNode(224 /* ImportDeclaration */, fullStart); importDeclaration.decorators = decorators; setModifiers(importDeclaration, modifiers); // ImportDeclaration: @@ -11233,7 +11532,7 @@ var ts; // NamedImports // ImportedDefaultBinding, NameSpaceImport // ImportedDefaultBinding, NamedImports - var importClause = createNode(223 /* ImportClause */, fullStart); + var importClause = createNode(225 /* ImportClause */, fullStart); if (identifier) { // ImportedDefaultBinding: // ImportedBinding @@ -11243,7 +11542,7 @@ var ts; // parse namespace or named imports if (!importClause.name || parseOptional(24 /* CommaToken */)) { - importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(225 /* NamedImports */); + importClause.namedBindings = token === 37 /* AsteriskToken */ ? parseNamespaceImport() : parseNamedImportsOrExports(227 /* NamedImports */); } return finishNode(importClause); } @@ -11253,7 +11552,7 @@ var ts; : parseEntityName(/*allowReservedWords*/ false); } function parseExternalModuleReference() { - var node = createNode(232 /* ExternalModuleReference */); + var node = createNode(234 /* ExternalModuleReference */); parseExpected(127 /* RequireKeyword */); parseExpected(17 /* OpenParenToken */); node.expression = parseModuleSpecifier(); @@ -11261,21 +11560,22 @@ var ts; return finishNode(node); } function parseModuleSpecifier() { - // We allow arbitrary expressions here, even though the grammar only allows string - // literals. We check to ensure that it is only a string literal later in the grammar - // walker. - var result = parseExpression(); - // Ensure the string being required is in our 'identifier' table. This will ensure - // that features like 'find refs' will look inside this file when search for its name. - if (result.kind === 9 /* StringLiteral */) { + if (token === 9 /* StringLiteral */) { + var result = parseLiteralNode(); internIdentifier(result.text); + return result; + } + else { + // We allow arbitrary expressions here, even though the grammar only allows string + // literals. We check to ensure that it is only a string literal later in the grammar + // check pass. + return parseExpression(); } - return result; } function parseNamespaceImport() { // NameSpaceImport: // * as ImportedBinding - var namespaceImport = createNode(224 /* NamespaceImport */); + var namespaceImport = createNode(226 /* NamespaceImport */); parseExpected(37 /* AsteriskToken */); parseExpected(116 /* AsKeyword */); namespaceImport.name = parseIdentifier(); @@ -11290,14 +11590,14 @@ var ts; // ImportsList: // ImportSpecifier // ImportsList, ImportSpecifier - node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 225 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); + node.elements = parseBracketedList(21 /* ImportOrExportSpecifiers */, kind === 227 /* NamedImports */ ? parseImportSpecifier : parseExportSpecifier, 15 /* OpenBraceToken */, 16 /* CloseBraceToken */); return finishNode(node); } function parseExportSpecifier() { - return parseImportOrExportSpecifier(230 /* ExportSpecifier */); + return parseImportOrExportSpecifier(232 /* ExportSpecifier */); } function parseImportSpecifier() { - return parseImportOrExportSpecifier(226 /* ImportSpecifier */); + return parseImportOrExportSpecifier(228 /* ImportSpecifier */); } function parseImportOrExportSpecifier(kind) { var node = createNode(kind); @@ -11322,14 +11622,14 @@ var ts; else { node.name = identifierName; } - if (kind === 226 /* ImportSpecifier */ && checkIdentifierIsKeyword) { + if (kind === 228 /* ImportSpecifier */ && checkIdentifierIsKeyword) { // Report error identifier expected parseErrorAtPosition(checkIdentifierStart, checkIdentifierEnd - checkIdentifierStart, ts.Diagnostics.Identifier_expected); } return finishNode(node); } function parseExportDeclaration(fullStart, decorators, modifiers) { - var node = createNode(228 /* ExportDeclaration */, fullStart); + var node = createNode(230 /* ExportDeclaration */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(37 /* AsteriskToken */)) { @@ -11337,7 +11637,7 @@ var ts; node.moduleSpecifier = parseModuleSpecifier(); } else { - node.exportClause = parseNamedImportsOrExports(229 /* NamedExports */); + node.exportClause = parseNamedImportsOrExports(231 /* NamedExports */); // It is not uncommon to accidentally omit the 'from' keyword. Additionally, in editing scenarios, // the 'from' keyword can be parsed as a named export when the export clause is unterminated (i.e. `export { from "moduleName";`) // If we don't have a 'from' keyword, see if we have a string literal such that ASI won't take effect. @@ -11350,7 +11650,7 @@ var ts; return finishNode(node); } function parseExportAssignment(fullStart, decorators, modifiers) { - var node = createNode(227 /* ExportAssignment */, fullStart); + var node = createNode(229 /* ExportAssignment */, fullStart); node.decorators = decorators; setModifiers(node, modifiers); if (parseOptional(56 /* EqualsToken */)) { @@ -11373,11 +11673,13 @@ var ts; // reference comment. while (true) { var kind = triviaScanner.scan(); - if (kind === 5 /* WhitespaceTrivia */ || kind === 4 /* NewLineTrivia */ || kind === 3 /* MultiLineCommentTrivia */) { - continue; - } if (kind !== 2 /* SingleLineCommentTrivia */) { - break; + if (ts.isTrivia(kind)) { + continue; + } + else { + break; + } } var range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos(), kind: triviaScanner.getToken() }; var comment = sourceText.substring(range.pos, range.end); @@ -11423,10 +11725,10 @@ var ts; function setExternalModuleIndicator(sourceFile) { sourceFile.externalModuleIndicator = ts.forEach(sourceFile.statements, function (node) { return node.flags & 2 /* Export */ - || node.kind === 221 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 232 /* ExternalModuleReference */ - || node.kind === 222 /* ImportDeclaration */ - || node.kind === 227 /* ExportAssignment */ - || node.kind === 228 /* ExportDeclaration */ + || node.kind === 223 /* ImportEqualsDeclaration */ && node.moduleReference.kind === 234 /* ExternalModuleReference */ + || node.kind === 224 /* ImportDeclaration */ + || node.kind === 229 /* ExportAssignment */ + || node.kind === 230 /* ExportDeclaration */ ? node : undefined; }); @@ -11501,7 +11803,7 @@ var ts; scanner.setText(sourceText, start, length); // Prime the first token for us to start processing. token = nextToken(); - var result = createNode(249 /* JSDocTypeExpression */); + var result = createNode(251 /* JSDocTypeExpression */); parseExpected(15 /* OpenBraceToken */); result.type = parseJSDocTopLevelType(); parseExpected(16 /* CloseBraceToken */); @@ -11512,12 +11814,12 @@ var ts; function parseJSDocTopLevelType() { var type = parseJSDocType(); if (token === 47 /* BarToken */) { - var unionType = createNode(253 /* JSDocUnionType */, type.pos); + var unionType = createNode(255 /* JSDocUnionType */, type.pos); unionType.types = parseJSDocTypeList(type); type = finishNode(unionType); } if (token === 56 /* EqualsToken */) { - var optionalType = createNode(260 /* JSDocOptionalType */, type.pos); + var optionalType = createNode(262 /* JSDocOptionalType */, type.pos); nextToken(); optionalType.type = type; type = finishNode(optionalType); @@ -11528,20 +11830,20 @@ var ts; var type = parseBasicTypeExpression(); while (true) { if (token === 19 /* OpenBracketToken */) { - var arrayType = createNode(252 /* JSDocArrayType */, type.pos); + var arrayType = createNode(254 /* JSDocArrayType */, type.pos); arrayType.elementType = type; nextToken(); parseExpected(20 /* CloseBracketToken */); type = finishNode(arrayType); } else if (token === 53 /* QuestionToken */) { - var nullableType = createNode(255 /* JSDocNullableType */, type.pos); + var nullableType = createNode(257 /* JSDocNullableType */, type.pos); nullableType.type = type; nextToken(); type = finishNode(nullableType); } else if (token === 49 /* ExclamationToken */) { - var nonNullableType = createNode(256 /* JSDocNonNullableType */, type.pos); + var nonNullableType = createNode(258 /* JSDocNonNullableType */, type.pos); nonNullableType.type = type; nextToken(); type = finishNode(nonNullableType); @@ -11586,27 +11888,27 @@ var ts; return parseJSDocTypeReference(); } function parseJSDocThisType() { - var result = createNode(264 /* JSDocThisType */); + var result = createNode(266 /* JSDocThisType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocConstructorType() { - var result = createNode(263 /* JSDocConstructorType */); + var result = createNode(265 /* JSDocConstructorType */); nextToken(); parseExpected(54 /* ColonToken */); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocVariadicType() { - var result = createNode(262 /* JSDocVariadicType */); + var result = createNode(264 /* JSDocVariadicType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocFunctionType() { - var result = createNode(261 /* JSDocFunctionType */); + var result = createNode(263 /* JSDocFunctionType */); nextToken(); parseExpected(17 /* OpenParenToken */); result.parameters = parseDelimitedList(22 /* JSDocFunctionParameters */, parseJSDocParameter); @@ -11623,14 +11925,8 @@ var ts; parameter.type = parseJSDocType(); return finishNode(parameter); } - function parseJSDocOptionalType(type) { - var result = createNode(260 /* JSDocOptionalType */, type.pos); - nextToken(); - result.type = type; - return finishNode(result); - } function parseJSDocTypeReference() { - var result = createNode(259 /* JSDocTypeReference */); + var result = createNode(261 /* JSDocTypeReference */); result.name = parseSimplePropertyName(); while (parseOptional(21 /* DotToken */)) { if (token === 25 /* LessThanToken */) { @@ -11666,7 +11962,7 @@ var ts; return finishNode(result); } function parseJSDocRecordType() { - var result = createNode(257 /* JSDocRecordType */); + var result = createNode(259 /* JSDocRecordType */); nextToken(); result.members = parseDelimitedList(24 /* JSDocRecordMembers */, parseJSDocRecordMember); checkForTrailingComma(result.members); @@ -11674,7 +11970,7 @@ var ts; return finishNode(result); } function parseJSDocRecordMember() { - var result = createNode(258 /* JSDocRecordMember */); + var result = createNode(260 /* JSDocRecordMember */); result.name = parseSimplePropertyName(); if (token === 54 /* ColonToken */) { nextToken(); @@ -11683,13 +11979,13 @@ var ts; return finishNode(result); } function parseJSDocNonNullableType() { - var result = createNode(256 /* JSDocNonNullableType */); + var result = createNode(258 /* JSDocNonNullableType */); nextToken(); result.type = parseJSDocType(); return finishNode(result); } function parseJSDocTupleType() { - var result = createNode(254 /* JSDocTupleType */); + var result = createNode(256 /* JSDocTupleType */); nextToken(); result.types = parseDelimitedList(25 /* JSDocTupleTypes */, parseJSDocType); checkForTrailingComma(result.types); @@ -11703,7 +11999,7 @@ var ts; } } function parseJSDocUnionType() { - var result = createNode(253 /* JSDocUnionType */); + var result = createNode(255 /* JSDocUnionType */); nextToken(); result.types = parseJSDocTypeList(parseJSDocType()); parseExpected(18 /* CloseParenToken */); @@ -11721,7 +12017,7 @@ var ts; return types; } function parseJSDocAllType() { - var result = createNode(250 /* JSDocAllType */); + var result = createNode(252 /* JSDocAllType */); nextToken(); return finishNode(result); } @@ -11744,11 +12040,11 @@ var ts; token === 27 /* GreaterThanToken */ || token === 56 /* EqualsToken */ || token === 47 /* BarToken */) { - var result = createNode(251 /* JSDocUnknownType */, pos); + var result = createNode(253 /* JSDocUnknownType */, pos); return finishNode(result); } else { - var result = createNode(255 /* JSDocNullableType */, pos); + var result = createNode(257 /* JSDocNullableType */, pos); result.type = parseJSDocType(); return finishNode(result); } @@ -11836,7 +12132,7 @@ var ts; if (!tags) { return undefined; } - var result = createNode(265 /* JSDocComment */, start); + var result = createNode(267 /* JSDocComment */, start); result.tags = tags; return finishNode(result, end); } @@ -11873,7 +12169,7 @@ var ts; return undefined; } function handleUnknownTag(atToken, tagName) { - var result = createNode(266 /* JSDocTag */, atToken.pos); + var result = createNode(268 /* JSDocTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; return finishNode(result, pos); @@ -11924,7 +12220,7 @@ var ts; if (!typeExpression) { typeExpression = tryParseTypeExpression(); } - var result = createNode(267 /* JSDocParameterTag */, atToken.pos); + var result = createNode(269 /* JSDocParameterTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.preParameterName = preName; @@ -11934,27 +12230,27 @@ var ts; return finishNode(result, pos); } function handleReturnTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 268 /* JSDocReturnTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 270 /* JSDocReturnTag */; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(268 /* JSDocReturnTag */, atToken.pos); + var result = createNode(270 /* JSDocReturnTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTypeTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 269 /* JSDocTypeTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 271 /* JSDocTypeTag */; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } - var result = createNode(269 /* JSDocTypeTag */, atToken.pos); + var result = createNode(271 /* JSDocTypeTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeExpression = tryParseTypeExpression(); return finishNode(result, pos); } function handleTemplateTag(atToken, tagName) { - if (ts.forEach(tags, function (t) { return t.kind === 270 /* JSDocTemplateTag */; })) { + if (ts.forEach(tags, function (t) { return t.kind === 272 /* JSDocTemplateTag */; })) { parseErrorAtPosition(tagName.pos, pos - tagName.pos, ts.Diagnostics._0_tag_already_specified, tagName.text); } var typeParameters = []; @@ -11978,7 +12274,7 @@ var ts; pos++; } typeParameters.end = pos; - var result = createNode(270 /* JSDocTemplateTag */, atToken.pos); + var result = createNode(272 /* JSDocTemplateTag */, atToken.pos); result.atToken = atToken; result.tagName = tagName; result.typeParameters = typeParameters; @@ -12019,7 +12315,7 @@ var ts; if (sourceFile.statements.length === 0) { // If we don't have any statements in the current source file, then there's no real // way to incrementally parse. So just do a full parse instead. - return Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, /*syntaxCursor*/ undefined, /*setNodeParents*/ true); + return Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, /*syntaxCursor*/ undefined, /*setParentNodes*/ true); } // Make sure we're not trying to incrementally update a source file more than once. Once // we do an update the original source file is considered unusbale from that point onwards. @@ -12075,7 +12371,7 @@ var ts; // inconsistent tree. Setting the parents on the new tree should be very fast. We // will immediately bail out of walking any subtrees when we can see that their parents // are already correct. - var result = Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, /* setParentNode */ true); + var result = Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, /*setParentNodes*/ true); return result; } IncrementalParser.updateSourceFile = updateSourceFile; @@ -12508,16 +12804,16 @@ var ts; function getModuleInstanceState(node) { // A module is uninstantiated if it contains only // 1. interface declarations, type alias declarations - if (node.kind === 215 /* InterfaceDeclaration */ || node.kind === 216 /* TypeAliasDeclaration */) { + if (node.kind === 217 /* InterfaceDeclaration */ || node.kind === 218 /* TypeAliasDeclaration */) { return 0 /* NonInstantiated */; } else if (ts.isConstEnumDeclaration(node)) { return 2 /* ConstEnumOnly */; } - else if ((node.kind === 222 /* ImportDeclaration */ || node.kind === 221 /* ImportEqualsDeclaration */) && !(node.flags & 2 /* Export */)) { + else if ((node.kind === 224 /* ImportDeclaration */ || node.kind === 223 /* ImportEqualsDeclaration */) && !(node.flags & 2 /* Export */)) { return 0 /* NonInstantiated */; } - else if (node.kind === 219 /* ModuleBlock */) { + else if (node.kind === 221 /* ModuleBlock */) { var state = 0 /* NonInstantiated */; ts.forEachChild(node, function (n) { switch (getModuleInstanceState(n)) { @@ -12536,7 +12832,7 @@ var ts; }); return state; } - else if (node.kind === 218 /* ModuleDeclaration */) { + else if (node.kind === 220 /* ModuleDeclaration */) { return getModuleInstanceState(node.body); } else { @@ -12604,6 +12900,8 @@ var ts; file.symbolCount = symbolCount; file.classifiableNames = classifiableNames; } + file = undefined; + options = undefined; parent = undefined; container = undefined; blockScopeContainer = undefined; @@ -12632,20 +12930,25 @@ var ts; if (symbolFlags & 6240 /* HasMembers */ && !symbol.members) { symbol.members = {}; } - if (symbolFlags & 107455 /* Value */ && !symbol.valueDeclaration) { - symbol.valueDeclaration = node; + if (symbolFlags & 107455 /* Value */) { + var valueDeclaration = symbol.valueDeclaration; + if (!valueDeclaration || + (valueDeclaration.kind !== node.kind && valueDeclaration.kind === 220 /* ModuleDeclaration */)) { + // other kinds of value declarations take precedence over modules + symbol.valueDeclaration = node; + } } } // Should not be called on a declaration with a computed property name, // unless it is a well known Symbol. function getDeclarationName(node) { if (node.name) { - if (node.kind === 218 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { + if (node.kind === 220 /* ModuleDeclaration */ && node.name.kind === 9 /* StringLiteral */) { return "\"" + node.name.text + "\""; } if (node.name.kind === 136 /* ComputedPropertyName */) { var nameExpression = node.name.expression; - // treat computed property names where expression is string/numeric literal as just string/numeric literal + // treat computed property names where expression is string/numeric literal as just string/numeric literal if (ts.isStringOrNumericLiteral(nameExpression.kind)) { return nameExpression.text; } @@ -12665,15 +12968,27 @@ var ts; return "__new"; case 149 /* IndexSignature */: return "__index"; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return "__export"; - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return node.isExportEquals ? "export=" : "default"; - case 181 /* BinaryExpression */: - // Binary expression case is for JS module 'module.exports = expr' - return "export="; - case 213 /* FunctionDeclaration */: - case 214 /* ClassDeclaration */: + case 183 /* BinaryExpression */: + switch (ts.getSpecialPropertyAssignmentKind(node)) { + case 2 /* ModuleExports */: + // module.exports = ... + return "export="; + case 1 /* ExportsProperty */: + case 4 /* ThisProperty */: + // exports.x = ... or this.y = ... + return node.left.name.text; + case 3 /* PrototypeProperty */: + // className.prototype.methodName = ... + return node.left.expression.name.text; + } + ts.Debug.fail("Unknown binary declaration kind"); + break; + case 215 /* FunctionDeclaration */: + case 216 /* ClassDeclaration */: return node.flags & 512 /* Default */ ? "default" : undefined; } } @@ -12750,7 +13065,7 @@ var ts; function declareModuleMember(node, symbolFlags, symbolExcludes) { var hasExportModifier = ts.getCombinedNodeFlags(node) & 2 /* Export */; if (symbolFlags & 8388608 /* Alias */) { - if (node.kind === 230 /* ExportSpecifier */ || (node.kind === 221 /* ImportEqualsDeclaration */ && hasExportModifier)) { + if (node.kind === 232 /* ExportSpecifier */ || (node.kind === 223 /* ImportEqualsDeclaration */ && hasExportModifier)) { return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); } else { @@ -12833,10 +13148,10 @@ var ts; var flags = node.flags; // reset all reachability check related flags on node (for incremental scenarios) flags &= ~1572864 /* ReachabilityCheckFlags */; - if (kind === 215 /* InterfaceDeclaration */) { + if (kind === 217 /* InterfaceDeclaration */) { seenThisKeyword = false; } - var saveState = kind === 248 /* SourceFile */ || kind === 219 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); + var saveState = kind === 250 /* SourceFile */ || kind === 221 /* ModuleBlock */ || ts.isFunctionLikeKind(kind); if (saveState) { savedReachabilityState = currentReachabilityState; savedLabelStack = labelStack; @@ -12854,7 +13169,7 @@ var ts; flags |= 1048576 /* HasExplicitReturn */; } } - if (kind === 215 /* InterfaceDeclaration */) { + if (kind === 217 /* InterfaceDeclaration */) { flags = seenThisKeyword ? flags | 262144 /* ContainsThis */ : flags & ~262144 /* ContainsThis */; } node.flags = flags; @@ -12879,40 +13194,40 @@ var ts; return; } switch (node.kind) { - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: bindWhileStatement(node); break; - case 197 /* DoStatement */: + case 199 /* DoStatement */: bindDoStatement(node); break; - case 199 /* ForStatement */: + case 201 /* ForStatement */: bindForStatement(node); break; - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: bindForInOrForOfStatement(node); break; - case 196 /* IfStatement */: + case 198 /* IfStatement */: bindIfStatement(node); break; - case 204 /* ReturnStatement */: - case 208 /* ThrowStatement */: + case 206 /* ReturnStatement */: + case 210 /* ThrowStatement */: bindReturnOrThrow(node); break; - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: bindBreakOrContinueStatement(node); break; - case 209 /* TryStatement */: + case 211 /* TryStatement */: bindTryStatement(node); break; - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: bindSwitchStatement(node); break; - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: bindCaseBlock(node); break; - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: bindLabeledStatement(node); break; default: @@ -12964,7 +13279,7 @@ var ts; popImplicitLabel(postStatementLabel, preStatementState); } function bindIfStatement(n) { - // denotes reachability state when entering 'thenStatement' part of the if statement: + // denotes reachability state when entering 'thenStatement' part of the if statement: // i.e. if condition is false then thenStatement is unreachable var ifTrueState = n.expression.kind === 84 /* FalseKeyword */ ? 4 /* Unreachable */ : currentReachabilityState; // denotes reachability state when entering 'elseStatement': @@ -12987,7 +13302,7 @@ var ts; function bindReturnOrThrow(n) { // bind expression (don't affect reachability) bind(n.expression); - if (n.kind === 204 /* ReturnStatement */) { + if (n.kind === 206 /* ReturnStatement */) { hasExplicitReturn = true; } currentReachabilityState = 4 /* Unreachable */; @@ -12996,7 +13311,7 @@ var ts; // call bind on label (don't affect reachability) bind(n.label); // for continue case touch label so it will be marked a used - var isValidJump = jumpToLabel(n.label, n.kind === 203 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); + var isValidJump = jumpToLabel(n.label, n.kind === 205 /* BreakStatement */ ? currentReachabilityState : 4 /* Unreachable */); if (isValidJump) { currentReachabilityState = 4 /* Unreachable */; } @@ -13022,7 +13337,7 @@ var ts; // bind expression (don't affect reachability) bind(n.expression); bind(n.caseBlock); - var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 242 /* DefaultClause */; }); + var hasDefault = ts.forEach(n.caseBlock.clauses, function (c) { return c.kind === 244 /* DefaultClause */; }); // post switch state is unreachable if switch is exaustive (has a default case ) and does not have fallthrough from the last case var postSwitchState = hasDefault && currentReachabilityState !== 2 /* Reachable */ ? 4 /* Unreachable */ : preSwitchState; popImplicitLabel(postSwitchLabel, postSwitchState); @@ -13049,37 +13364,37 @@ var ts; } function getContainerFlags(node) { switch (node.kind) { - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: case 155 /* TypeLiteral */: - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return 1 /* IsContainer */; case 147 /* CallSignature */: case 148 /* ConstructSignature */: case 149 /* IndexSignature */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 152 /* FunctionType */: case 153 /* ConstructorType */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 218 /* ModuleDeclaration */: - case 248 /* SourceFile */: - case 216 /* TypeAliasDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 220 /* ModuleDeclaration */: + case 250 /* SourceFile */: + case 218 /* TypeAliasDeclaration */: return 5 /* IsContainerWithLocals */; - case 244 /* CatchClause */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 220 /* CaseBlock */: + case 246 /* CatchClause */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 222 /* CaseBlock */: return 2 /* IsBlockScopedContainer */; - case 192 /* Block */: + case 194 /* Block */: // do not treat blocks directly inside a function as a block-scoped-container. // Locals that reside in this block should go to the function locals. Othewise 'x' // would not appear to be a redeclaration of a block scoped local in the following @@ -13116,18 +13431,18 @@ var ts; // members are declared (for example, a member of a class will go into a specific // symbol table depending on if it is static or not). We defer to specialized // handlers to take care of declaring these child members. - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return declareModuleMember(node, symbolFlags, symbolExcludes); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return declareSourceFileMember(node, symbolFlags, symbolExcludes); - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: return declareClassMember(node, symbolFlags, symbolExcludes); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return declareSymbol(container.symbol.exports, container.symbol, node, symbolFlags, symbolExcludes); case 155 /* TypeLiteral */: - case 165 /* ObjectLiteralExpression */: - case 215 /* InterfaceDeclaration */: + case 167 /* ObjectLiteralExpression */: + case 217 /* InterfaceDeclaration */: // Interface/Object-types always have their children added to the 'members' of // their container. They are only accessible through an instance of their // container, and are never in scope otherwise (even inside the body of the @@ -13144,10 +13459,10 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 216 /* TypeAliasDeclaration */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 218 /* TypeAliasDeclaration */: // All the children of these container types are never visible through another // symbol (i.e. through another symbol's 'exports' or 'members'). Instead, // they're only accessed 'lexically' (i.e. from code that exists underneath @@ -13168,11 +13483,11 @@ var ts; : declareSymbol(file.locals, undefined, node, symbolFlags, symbolExcludes); } function hasExportDeclarations(node) { - var body = node.kind === 248 /* SourceFile */ ? node : node.body; - if (body.kind === 248 /* SourceFile */ || body.kind === 219 /* ModuleBlock */) { + var body = node.kind === 250 /* SourceFile */ ? node : node.body; + if (body.kind === 250 /* SourceFile */ || body.kind === 221 /* ModuleBlock */) { for (var _i = 0, _a = body.statements; _i < _a.length; _i++) { var stat = _a[_i]; - if (stat.kind === 228 /* ExportDeclaration */ || stat.kind === 227 /* ExportAssignment */) { + if (stat.kind === 230 /* ExportDeclaration */ || stat.kind === 229 /* ExportAssignment */) { return true; } } @@ -13256,7 +13571,7 @@ var ts; // c.IsAccessorDescriptor(previous) is true and IsDataDescriptor(propId.descriptor) is true. // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields - var currentKind = prop.kind === 245 /* PropertyAssignment */ || prop.kind === 246 /* ShorthandPropertyAssignment */ || prop.kind === 143 /* MethodDeclaration */ + var currentKind = prop.kind === 247 /* PropertyAssignment */ || prop.kind === 248 /* ShorthandPropertyAssignment */ || prop.kind === 143 /* MethodDeclaration */ ? 1 /* Property */ : 2 /* Accessor */; var existingKind = seen[identifier.text]; @@ -13278,10 +13593,10 @@ var ts; } function bindBlockScopedDeclaration(node, symbolFlags, symbolExcludes) { switch (blockScopeContainer.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: declareModuleMember(node, symbolFlags, symbolExcludes); break; - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (ts.isExternalModule(container)) { declareModuleMember(node, symbolFlags, symbolExcludes); break; @@ -13441,17 +13756,17 @@ var ts; } function updateStrictMode(node) { switch (node.kind) { - case 248 /* SourceFile */: - case 219 /* ModuleBlock */: + case 250 /* SourceFile */: + case 221 /* ModuleBlock */: updateStrictModeStatementList(node.statements); return; - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionLike(node.parent)) { updateStrictModeStatementList(node.statements); } return; - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: // All classes are automatically in strict mode in ES6. inStrictMode = true; return; @@ -13481,45 +13796,61 @@ var ts; /* Strict mode checks */ case 69 /* Identifier */: return checkStrictModeIdentifier(node); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: if (ts.isInJavaScriptFile(node)) { - if (ts.isExportsPropertyAssignment(node)) { - bindExportsPropertyAssignment(node); - } - else if (ts.isModuleExportsAssignment(node)) { - bindModuleExportsAssignment(node); + var specialKind = ts.getSpecialPropertyAssignmentKind(node); + switch (specialKind) { + case 1 /* ExportsProperty */: + bindExportsPropertyAssignment(node); + break; + case 2 /* ModuleExports */: + bindModuleExportsAssignment(node); + break; + case 3 /* PrototypeProperty */: + bindPrototypePropertyAssignment(node); + break; + case 4 /* ThisProperty */: + bindThisPropertyAssignment(node); + break; + case 0 /* None */: + // Nothing to do + break; + default: + ts.Debug.fail("Unknown special property assignment kind"); } } return checkStrictModeBinaryExpression(node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return checkStrictModeCatchClause(node); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return checkStrictModeDeleteExpression(node); case 8 /* NumericLiteral */: return checkStrictModeNumericLiteral(node); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return checkStrictModePostfixUnaryExpression(node); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return checkStrictModePrefixUnaryExpression(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return checkStrictModeWithStatement(node); - case 97 /* ThisKeyword */: + case 161 /* ThisType */: seenThisKeyword = true; return; + case 150 /* TypePredicate */: + return checkTypePredicate(node); case 137 /* TypeParameter */: return declareSymbolAndAddToSymbolTable(node, 262144 /* TypeParameter */, 530912 /* TypeParameterExcludes */); case 138 /* Parameter */: return bindParameter(node); - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: return bindVariableDeclarationOrBindingElement(node); case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), 107455 /* PropertyExcludes */); - case 245 /* PropertyAssignment */: - case 246 /* ShorthandPropertyAssignment */: + case 247 /* PropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: return bindPropertyOrMethodOrAccessor(node, 4 /* Property */, 107455 /* PropertyExcludes */); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return bindPropertyOrMethodOrAccessor(node, 8 /* EnumMember */, 107455 /* EnumMemberExcludes */); case 147 /* CallSignature */: case 148 /* ConstructSignature */: @@ -13532,7 +13863,7 @@ var ts; // so that it will conflict with any other object literal members with the same // name. return bindPropertyOrMethodOrAccessor(node, 8192 /* Method */ | (node.questionToken ? 536870912 /* Optional */ : 0 /* None */), ts.isObjectLiteralMethod(node) ? 107455 /* PropertyExcludes */ : 99263 /* MethodExcludes */); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: checkStrictModeFunctionName(node); return declareSymbolAndAddToSymbolTable(node, 16 /* Function */, 106927 /* FunctionExcludes */); case 144 /* Constructor */: @@ -13546,46 +13877,56 @@ var ts; return bindFunctionOrConstructorType(node); case 155 /* TypeLiteral */: return bindAnonymousDeclaration(node, 2048 /* TypeLiteral */, "__type"); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return bindObjectLiteralExpression(node); - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: checkStrictModeFunctionName(node); var bindingName = node.name ? node.name.text : "__function"; return bindAnonymousDeclaration(node, 16 /* Function */, bindingName); - case 168 /* CallExpression */: + case 170 /* CallExpression */: if (ts.isInJavaScriptFile(node)) { bindCallExpression(node); } break; // Members of classes, interfaces, and modules - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: return bindClassLikeDeclaration(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return bindBlockScopedDeclaration(node, 64 /* Interface */, 792960 /* InterfaceExcludes */); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return bindBlockScopedDeclaration(node, 524288 /* TypeAlias */, 793056 /* TypeAliasExcludes */); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return bindEnumDeclaration(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return bindModuleDeclaration(node); // Imports and exports - case 221 /* ImportEqualsDeclaration */: - case 224 /* NamespaceImport */: - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 226 /* NamespaceImport */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: return declareSymbolAndAddToSymbolTable(node, 8388608 /* Alias */, 8388608 /* AliasExcludes */); - case 223 /* ImportClause */: + case 225 /* ImportClause */: return bindImportClause(node); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return bindExportDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return bindExportAssignment(node); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return bindSourceFileIfExternalModule(); } } + function checkTypePredicate(node) { + var parameterName = node.parameterName, type = node.type; + if (parameterName && parameterName.kind === 69 /* Identifier */) { + checkStrictModeIdentifier(parameterName); + } + if (parameterName && parameterName.kind === 161 /* ThisType */) { + seenThisKeyword = true; + } + bind(type); + } function bindSourceFileIfExternalModule() { setExportContextFlag(file); if (ts.isExternalModule(file)) { @@ -13596,7 +13937,7 @@ var ts; bindAnonymousDeclaration(file, 512 /* ValueModule */, "\"" + ts.removeFileExtension(file.fileName) + "\""); } function bindExportAssignment(node) { - var boundExpression = node.kind === 227 /* ExportAssignment */ ? node.expression : node.right; + var boundExpression = node.kind === 229 /* ExportAssignment */ ? node.expression : node.right; if (!container.symbol || !container.symbol.exports) { // Export assignment in some sort of block construct bindAnonymousDeclaration(node, 8388608 /* Alias */, getDeclarationName(node)); @@ -13642,6 +13983,29 @@ var ts; setCommonJsModuleIndicator(node); bindExportAssignment(node); } + function bindThisPropertyAssignment(node) { + // Declare a 'member' in case it turns out the container was an ES5 class + if (container.kind === 175 /* FunctionExpression */ || container.kind === 215 /* FunctionDeclaration */) { + container.symbol.members = container.symbol.members || {}; + declareSymbol(container.symbol.members, container.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */); + } + } + function bindPrototypePropertyAssignment(node) { + // We saw a node of the form 'x.prototype.y = z'. Declare a 'member' y on x if x was a function. + // Look up the function in the local scope, since prototype assignments should + // follow the function declaration + var classId = node.left.expression.expression; + var funcSymbol = container.locals[classId.text]; + if (!funcSymbol || !(funcSymbol.flags & 16 /* Function */)) { + return; + } + // Set up the members collection if it doesn't exist already + if (!funcSymbol.members) { + funcSymbol.members = {}; + } + // Declare the method/property + declareSymbol(funcSymbol.members, funcSymbol, node.left, 4 /* Property */, 107455 /* PropertyExcludes */); + } function bindCallExpression(node) { // We're only inspecting call expressions to detect CommonJS modules, so we can skip // this check if we've already seen the module indicator @@ -13650,7 +14014,7 @@ var ts; } } function bindClassLikeDeclaration(node) { - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { bindBlockScopedDeclaration(node, 32 /* Class */, 899519 /* ClassExcludes */); } else { @@ -13725,9 +14089,7 @@ var ts; } // If this is a property-parameter, then also declare the property symbol into the // containing class. - if (node.flags & 56 /* AccessibilityModifier */ && - node.parent.kind === 144 /* Constructor */ && - ts.isClassLike(node.parent.parent)) { + if (ts.isParameterPropertyDeclaration(node)) { var classDeclaration = node.parent.parent; declareSymbol(classDeclaration.symbol.members, classDeclaration.symbol, node, 4 /* Property */, 107455 /* PropertyExcludes */); } @@ -13797,18 +14159,18 @@ var ts; case 4 /* Unreachable */: var reportError = // report error on all statements except empty ones - (ts.isStatement(node) && node.kind !== 194 /* EmptyStatement */) || + (ts.isStatement(node) && node.kind !== 196 /* EmptyStatement */) || // report error on class declarations - node.kind === 214 /* ClassDeclaration */ || + node.kind === 216 /* ClassDeclaration */ || // report error on instantiated modules or const-enums only modules if preserveConstEnums is set - (node.kind === 218 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || + (node.kind === 220 /* ModuleDeclaration */ && shouldReportErrorOnModuleDeclaration(node)) || // report error on regular enums and const enums if preserveConstEnums is set - (node.kind === 217 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); + (node.kind === 219 /* EnumDeclaration */ && (!ts.isConstEnumDeclaration(node) || options.preserveConstEnums)); if (reportError) { currentReachabilityState = 8 /* ReportedUnreachable */; // unreachable code is reported if // - user has explicitly asked about it AND - // - statement is in not ambient context (statements in ambient context is already an error + // - statement is in not ambient context (statements in ambient context is already an error // so we should not report extras) AND // - node is not variable statement OR // - node is block scoped variable statement OR @@ -13817,7 +14179,7 @@ var ts; // On the other side we do want to report errors on non-initialized 'lets' because of TDZ var reportUnreachableCode = !options.allowUnreachableCode && !ts.isInAmbientContext(node) && - (node.kind !== 193 /* VariableStatement */ || + (node.kind !== 195 /* VariableStatement */ || ts.getCombinedNodeFlags(node.declarationList) & 24576 /* BlockScoped */ || ts.forEach(node.declarationList.declarations, function (d) { return d.initializer; })); if (reportUnreachableCode) { @@ -13853,15 +14215,18 @@ var ts; var nextNodeId = 1; var nextMergeId = 1; function getNodeId(node) { - if (!node.id) - node.id = nextNodeId++; + if (!node.id) { + node.id = nextNodeId; + nextNodeId++; + } return node.id; } ts.getNodeId = getNodeId; ts.checkTime = 0; function getSymbolId(symbol) { if (!symbol.id) { - symbol.id = nextSymbolId++; + symbol.id = nextSymbolId; + nextSymbolId++; } return symbol.id; } @@ -13887,8 +14252,10 @@ var ts; var compilerOptions = host.getCompilerOptions(); var languageVersion = compilerOptions.target || 0 /* ES3 */; var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 /* ES6 */ ? 5 /* ES6 */ : 0 /* None */; + var allowSyntheticDefaultImports = typeof compilerOptions.allowSyntheticDefaultImports !== "undefined" ? compilerOptions.allowSyntheticDefaultImports : modulekind === 4 /* System */; var emitResolver = createResolver(); var undefinedSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "undefined"); + undefinedSymbol.declarations = []; var argumentsSymbol = createSymbol(4 /* Property */ | 67108864 /* Transient */, "arguments"); var checker = { getNodeCount: function () { return ts.sum(host.getSourceFiles(), "nodeCount"); }, @@ -13902,6 +14269,7 @@ var ts; // The language service will always care about the narrowed type of a symbol, because that is // the type the language says the symbol should have. getTypeOfSymbolAtLocation: getNarrowedTypeOfSymbol, + getSymbolsOfParameterPropertyDeclaration: getSymbolsOfParameterPropertyDeclaration, getDeclaredTypeOfSymbol: getDeclaredTypeOfSymbol, getPropertiesOfType: getPropertiesOfType, getPropertyOfType: getPropertyOfType, @@ -13918,7 +14286,7 @@ var ts; symbolToString: symbolToString, getAugmentedPropertiesOfType: getAugmentedPropertiesOfType, getRootSymbols: getRootSymbols, - getContextualType: getApparentTypeOfContextualType, + getContextualType: getContextualType, getFullyQualifiedName: getFullyQualifiedName, getResolvedSignature: getResolvedSignature, getConstantValue: getConstantValue, @@ -13943,8 +14311,8 @@ var ts; var undefinedType = createIntrinsicType(32 /* Undefined */ | 2097152 /* ContainsUndefinedOrNull */, "undefined"); var nullType = createIntrinsicType(64 /* Null */ | 2097152 /* ContainsUndefinedOrNull */, "null"); var unknownType = createIntrinsicType(1 /* Any */, "unknown"); - var circularType = createIntrinsicType(1 /* Any */, "__circular__"); var emptyObjectType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); + var emptyUnionType = emptyObjectType; var emptyGenericType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); emptyGenericType.instantiations = {}; var anyFunctionType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); @@ -13952,8 +14320,8 @@ var ts; // in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes. anyFunctionType.flags |= 8388608 /* ContainsAnyFunctionType */; var noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - var anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + var anySignature = createSignature(undefined, undefined, emptyArray, anyType, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + var unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); var globals = {}; var globalESSymbolConstructorSymbol; var getGlobalPromiseConstructorSymbol; @@ -13966,9 +14334,6 @@ var ts; var globalRegExpType; var globalTemplateStringsArrayType; var globalESSymbolType; - var jsxElementType; - /** Lazily loaded, use getJsxIntrinsicElementType() */ - var jsxIntrinsicElementsType; var globalIterableType; var globalIteratorType; var globalIterableIteratorType; @@ -13985,6 +14350,7 @@ var ts; var getGlobalPromiseConstructorLikeType; var getGlobalThenableType; var jsxElementClassType; + var deferredNodes; var tupleTypes = {}; var unionTypes = {}; var intersectionTypes = {}; @@ -14019,14 +14385,23 @@ var ts; "symbol": { type: esSymbolType, flags: 16777216 /* ESSymbol */ + }, + "undefined": { + type: undefinedType, + flags: 2097152 /* ContainsUndefinedOrNull */ } }; + var jsxElementType; + /** Things we lazy load from the JSX namespace */ + var jsxTypes = {}; var JsxNames = { JSX: "JSX", IntrinsicElements: "IntrinsicElements", ElementClass: "ElementClass", ElementAttributesPropertyNameContainer: "ElementAttributesProperty", - Element: "Element" + Element: "Element", + IntrinsicAttributes: "IntrinsicAttributes", + IntrinsicClassAttributes: "IntrinsicClassAttributes" }; var subtypeRelation = {}; var assignableRelation = {}; @@ -14040,6 +14415,10 @@ var ts; TypeSystemPropertyName[TypeSystemPropertyName["DeclaredType"] = 2] = "DeclaredType"; TypeSystemPropertyName[TypeSystemPropertyName["ResolvedReturnType"] = 3] = "ResolvedReturnType"; })(TypeSystemPropertyName || (TypeSystemPropertyName = {})); + var builtinGlobals = (_a = {}, + _a[undefinedSymbol.name] = undefinedSymbol, + _a + ); initializeTypeChecker(); return checker; function getEmitResolver(sourceFile, cancellationToken) { @@ -14095,8 +14474,10 @@ var ts; return result; } function recordMergedSymbol(target, source) { - if (!source.mergeId) - source.mergeId = nextMergeId++; + if (!source.mergeId) { + source.mergeId = nextMergeId; + nextMergeId++; + } mergedSymbols[source.mergeId] = target; } function cloneSymbol(symbol) { @@ -14121,8 +14502,12 @@ var ts; target.constEnumOnlyModule = false; } target.flags |= source.flags; - if (!target.valueDeclaration && source.valueDeclaration) + if (source.valueDeclaration && + (!target.valueDeclaration || + (target.valueDeclaration.kind === 220 /* ModuleDeclaration */ && source.valueDeclaration.kind !== 220 /* ModuleDeclaration */))) { + // other kinds of value declarations take precedence over modules target.valueDeclaration = source.valueDeclaration; + } ts.forEach(source.declarations, function (node) { target.declarations.push(node); }); @@ -14174,6 +14559,22 @@ var ts; } } } + function addToSymbolTable(target, source, message) { + for (var id in source) { + if (ts.hasProperty(source, id)) { + if (ts.hasProperty(target, id)) { + // Error on redeclarations + ts.forEach(target[id].declarations, addDeclarationDiagnostic(id, message)); + } + else { + target[id] = source[id]; + } + } + } + function addDeclarationDiagnostic(id, message) { + return function (declaration) { return diagnostics.add(ts.createDiagnosticForNode(declaration, message, id)); }; + } + } function getSymbolLinks(symbol) { if (symbol.flags & 67108864 /* Transient */) return symbol; @@ -14185,10 +14586,17 @@ var ts; return nodeLinks[nodeId] || (nodeLinks[nodeId] = {}); } function getSourceFile(node) { - return ts.getAncestor(node, 248 /* SourceFile */); + return ts.getAncestor(node, 250 /* SourceFile */); } function isGlobalSourceFile(node) { - return node.kind === 248 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); + return node.kind === 250 /* SourceFile */ && !ts.isExternalOrCommonJsModule(node); + } + /** Is this type one of the apparent types created from the primitive types. */ + function isPrimitiveApparentType(type) { + return type === globalStringType || + type === globalNumberType || + type === globalBooleanType || + type === globalESSymbolType; } function getSymbol(symbols, name, meaning) { if (meaning && ts.hasProperty(symbols, name)) { @@ -14207,6 +14615,22 @@ var ts; } // return undefined if we can't find a symbol. } + /** + * Get symbols that represent parameter-property-declaration as parameter and as property declaration + * @param parameter a parameterDeclaration node + * @param parameterName a name of the parameter to get the symbols for. + * @return a tuple of two symbols + */ + function getSymbolsOfParameterPropertyDeclaration(parameter, parameterName) { + var constructoDeclaration = parameter.parent; + var classDeclaration = parameter.parent.parent; + var parameterSymbol = getSymbol(constructoDeclaration.locals, parameterName, 107455 /* Value */); + var propertySymbol = getSymbol(classDeclaration.symbol.members, parameterName, 107455 /* Value */); + if (parameterSymbol && propertySymbol) { + return [parameterSymbol, propertySymbol]; + } + ts.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration"); + } function isBlockScopedNameDeclaredBeforeUse(declaration, usage) { var declarationFile = ts.getSourceFileOfNode(declaration); var useFile = ts.getSourceFileOfNode(usage); @@ -14221,7 +14645,7 @@ var ts; if (declaration.pos <= usage.pos) { // declaration is before usage // still might be illegal if usage is in the initializer of the variable declaration - return declaration.kind !== 211 /* VariableDeclaration */ || + return declaration.kind !== 213 /* VariableDeclaration */ || !isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage); } // declaration is after usage @@ -14229,14 +14653,14 @@ var ts; return isUsedInFunctionOrNonStaticProperty(declaration, usage); function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration, usage) { var container = ts.getEnclosingBlockScopeContainer(declaration); - if (declaration.parent.parent.kind === 193 /* VariableStatement */ || - declaration.parent.parent.kind === 199 /* ForStatement */) { + if (declaration.parent.parent.kind === 195 /* VariableStatement */ || + declaration.parent.parent.kind === 201 /* ForStatement */) { // variable statement/for statement case, // use site should not be inside variable declaration (initializer of declaration or binding element) return isSameScopeDescendentOf(usage, declaration, container); } - else if (declaration.parent.parent.kind === 201 /* ForOfStatement */ || - declaration.parent.parent.kind === 200 /* ForInStatement */) { + else if (declaration.parent.parent.kind === 203 /* ForOfStatement */ || + declaration.parent.parent.kind === 202 /* ForInStatement */) { // ForIn/ForOf case - use site should not be used in expression part var expression = declaration.parent.parent.expression; return isSameScopeDescendentOf(usage, expression, container); @@ -14277,25 +14701,46 @@ var ts; // Locals of a source file are not in scope (because they get merged into the global symbol table) if (location.locals && !isGlobalSourceFile(location)) { if (result = getSymbol(location.locals, name, meaning)) { - // Type parameters of a function are in scope in the entire function declaration, including the parameter - // list and return type. However, local types are only in scope in the function body. - if (!(meaning & 793056 /* Type */) || - !(result.flags & (793056 /* Type */ & ~262144 /* TypeParameter */)) || - !ts.isFunctionLike(location) || - lastLocation === location.body) { + var useResult = true; + if (ts.isFunctionLike(location) && lastLocation && lastLocation !== location.body) { + // symbol lookup restrictions for function-like declarations + // - Type parameters of a function are in scope in the entire function declaration, including the parameter + // list and return type. However, local types are only in scope in the function body. + // - parameters are only in the scope of function body + if (meaning & result.flags & 793056 /* Type */) { + useResult = result.flags & 262144 /* TypeParameter */ + ? lastLocation === location.type || + lastLocation.kind === 138 /* Parameter */ || + lastLocation.kind === 137 /* TypeParameter */ + : false; + } + if (meaning & 107455 /* Value */ && result.flags & 1 /* FunctionScopedVariable */) { + // parameters are visible only inside function body, parameter list and return type + // technically for parameter list case here we might mix parameters and variables declared in function, + // however it is detected separately when checking initializers of parameters + // to make sure that they reference no variables declared after them. + useResult = + lastLocation.kind === 138 /* Parameter */ || + (lastLocation === location.type && + result.valueDeclaration.kind === 138 /* Parameter */); + } + } + if (useResult) { break loop; } - result = undefined; + else { + result = undefined; + } } } switch (location.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) break; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: var moduleExports = getSymbolOfNode(location).exports; - if (location.kind === 248 /* SourceFile */ || - (location.kind === 218 /* ModuleDeclaration */ && location.name.kind === 9 /* StringLiteral */)) { + if (location.kind === 250 /* SourceFile */ || + (location.kind === 220 /* ModuleDeclaration */ && location.name.kind === 9 /* StringLiteral */)) { // It's an external module. First see if the module has an export default and if the local // name of that export default matches. if (result = moduleExports["default"]) { @@ -14306,7 +14751,7 @@ var ts; result = undefined; } // Because of module/namespace merging, a module's exports are in scope, - // yet we never want to treat an export specifier as putting a member in scope. + // yet we never want to treat an export specifier as putting a member in scope. // Therefore, if the name we find is purely an export specifier, it is not actually considered in scope. // Two things to note about this: // 1. We have to check this without calling getSymbol. The problem with calling getSymbol @@ -14318,7 +14763,7 @@ var ts; // which is not the desired behavior. if (ts.hasProperty(moduleExports, name) && moduleExports[name].flags === 8388608 /* Alias */ && - ts.getDeclarationOfKind(moduleExports[name], 230 /* ExportSpecifier */)) { + ts.getDeclarationOfKind(moduleExports[name], 232 /* ExportSpecifier */)) { break; } } @@ -14326,7 +14771,7 @@ var ts; break loop; } break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: if (result = getSymbol(getSymbolOfNode(location).exports, name, meaning & 8 /* EnumMember */)) { break loop; } @@ -14349,9 +14794,9 @@ var ts; } } break; - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: if (result = getSymbol(getSymbolOfNode(location).members, name, meaning & 793056 /* Type */)) { if (lastLocation && lastLocation.flags & 64 /* Static */) { // TypeScript 1.0 spec (April 2014): 3.4.1 @@ -14362,7 +14807,7 @@ var ts; } break loop; } - if (location.kind === 186 /* ClassExpression */ && meaning & 32 /* Class */) { + if (location.kind === 188 /* ClassExpression */ && meaning & 32 /* Class */) { var className = location.name; if (className && name === className.text) { result = location.symbol; @@ -14380,7 +14825,7 @@ var ts; // case 136 /* ComputedPropertyName */: grandparent = location.parent.parent; - if (ts.isClassLike(grandparent) || grandparent.kind === 215 /* InterfaceDeclaration */) { + if (ts.isClassLike(grandparent) || grandparent.kind === 217 /* InterfaceDeclaration */) { // A reference to this grandparent's type parameters would be an error if (result = getSymbol(getSymbolOfNode(grandparent).members, name, meaning & 793056 /* Type */)) { error(errorLocation, ts.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type); @@ -14393,14 +14838,14 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; } break; - case 173 /* FunctionExpression */: + case 175 /* FunctionExpression */: if (meaning & 3 /* Variable */ && name === "arguments") { result = argumentsSymbol; break loop; @@ -14482,7 +14927,7 @@ var ts; // Block-scoped variables cannot be used before their definition var declaration = ts.forEach(result.declarations, function (d) { return ts.isBlockOrCatchScoped(d) ? d : undefined; }); ts.Debug.assert(declaration !== undefined, "Block-scoped variable declaration is undefined"); - if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 211 /* VariableDeclaration */), errorLocation)) { + if (!isBlockScopedNameDeclaredBeforeUse(ts.getAncestor(declaration, 213 /* VariableDeclaration */), errorLocation)) { error(errorLocation, ts.Diagnostics.Block_scoped_variable_0_used_before_its_declaration, ts.declarationNameToString(declaration.name)); } } @@ -14503,10 +14948,10 @@ var ts; } function getAnyImportSyntax(node) { if (ts.isAliasSymbolDeclaration(node)) { - if (node.kind === 221 /* ImportEqualsDeclaration */) { + if (node.kind === 223 /* ImportEqualsDeclaration */) { return node; } - while (node && node.kind !== 222 /* ImportDeclaration */) { + while (node && node.kind !== 224 /* ImportDeclaration */) { node = node.parent; } return node; @@ -14516,7 +14961,7 @@ var ts; return ts.forEach(symbol.declarations, function (d) { return ts.isAliasSymbolDeclaration(d) ? d : undefined; }); } function getTargetOfImportEqualsDeclaration(node) { - if (node.moduleReference.kind === 232 /* ExternalModuleReference */) { + if (node.moduleReference.kind === 234 /* ExternalModuleReference */) { return resolveExternalModuleSymbol(resolveExternalModuleName(node, ts.getExternalModuleImportEqualsDeclarationExpression(node))); } return getSymbolOfPartOfRightHandSideOfImportEquals(node.moduleReference, node); @@ -14525,9 +14970,12 @@ var ts; var moduleSymbol = resolveExternalModuleName(node, node.parent.moduleSpecifier); if (moduleSymbol) { var exportDefaultSymbol = resolveSymbol(moduleSymbol.exports["default"]); - if (!exportDefaultSymbol) { + if (!exportDefaultSymbol && !allowSyntheticDefaultImports) { error(node.name, ts.Diagnostics.Module_0_has_no_default_export, symbolToString(moduleSymbol)); } + else if (!exportDefaultSymbol && allowSyntheticDefaultImports) { + return resolveSymbol(moduleSymbol.exports["export="]) || resolveSymbol(moduleSymbol); + } return exportDefaultSymbol; } } @@ -14535,14 +14983,6 @@ var ts; var moduleSpecifier = node.parent.parent.moduleSpecifier; return resolveESModuleSymbol(resolveExternalModuleName(node, moduleSpecifier), moduleSpecifier); } - function getMemberOfModuleVariable(moduleSymbol, name) { - if (moduleSymbol.flags & 3 /* Variable */) { - var typeAnnotation = moduleSymbol.valueDeclaration.type; - if (typeAnnotation) { - return getPropertyOfType(getTypeFromTypeNode(typeAnnotation), name); - } - } - } // This function creates a synthetic symbol that combines the value side of one symbol with the // type/namespace side of another symbol. Consider this example: // @@ -14623,17 +15063,17 @@ var ts; } function getTargetOfAliasDeclaration(node) { switch (node.kind) { - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return getTargetOfImportEqualsDeclaration(node); - case 223 /* ImportClause */: + case 225 /* ImportClause */: return getTargetOfImportClause(node); - case 224 /* NamespaceImport */: + case 226 /* NamespaceImport */: return getTargetOfNamespaceImport(node); - case 226 /* ImportSpecifier */: + case 228 /* ImportSpecifier */: return getTargetOfImportSpecifier(node); - case 230 /* ExportSpecifier */: + case 232 /* ExportSpecifier */: return getTargetOfExportSpecifier(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return getTargetOfExportAssignment(node); } } @@ -14678,11 +15118,11 @@ var ts; if (!links.referenced) { links.referenced = true; var node = getDeclarationOfAliasSymbol(symbol); - if (node.kind === 227 /* ExportAssignment */) { + if (node.kind === 229 /* ExportAssignment */) { // export default checkExpressionCached(node.expression); } - else if (node.kind === 230 /* ExportSpecifier */) { + else if (node.kind === 232 /* ExportSpecifier */) { // export { } or export { as foo } checkExpressionCached(node.propertyName || node.name); } @@ -14695,7 +15135,7 @@ var ts; // This function is only for imports with entity names function getSymbolOfPartOfRightHandSideOfImportEquals(entityName, importDeclaration) { if (!importDeclaration) { - importDeclaration = ts.getAncestor(entityName, 221 /* ImportEqualsDeclaration */); + importDeclaration = ts.getAncestor(entityName, 223 /* ImportEqualsDeclaration */); ts.Debug.assert(importDeclaration !== undefined); } // There are three things we might try to look for. In the following examples, @@ -14714,7 +15154,7 @@ var ts; else { // Case 2 in above example // entityName.kind could be a QualifiedName or a Missing identifier - ts.Debug.assert(entityName.parent.kind === 221 /* ImportEqualsDeclaration */); + ts.Debug.assert(entityName.parent.kind === 223 /* ImportEqualsDeclaration */); return resolveEntityName(entityName, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */); } } @@ -14734,7 +15174,7 @@ var ts; return undefined; } } - else if (name.kind === 135 /* QualifiedName */ || name.kind === 166 /* PropertyAccessExpression */) { + else if (name.kind === 135 /* QualifiedName */ || name.kind === 168 /* PropertyAccessExpression */) { var left = name.kind === 135 /* QualifiedName */ ? name.left : name.expression; var right = name.kind === 135 /* QualifiedName */ ? name.right : name.name; var namespace = resolveEntityName(left, 1536 /* Namespace */, ignoreErrors); @@ -14760,16 +15200,12 @@ var ts; return; } var moduleReferenceLiteral = moduleReferenceExpression; - var searchPath = ts.getDirectoryPath(getSourceFile(location).fileName); // Module names are escaped in our symbol table. However, string literal values aren't. // Escape the name in the "require(...)" clause to ensure we find the right symbol. var moduleName = ts.escapeIdentifier(moduleReferenceLiteral.text); if (moduleName === undefined) { return; } - if (moduleName.indexOf("!") >= 0) { - moduleName = moduleName.substr(0, moduleName.indexOf("!")); - } var isRelative = ts.isExternalModuleNameRelative(moduleName); if (!isRelative) { var symbol = getSymbol(globals, "\"" + moduleName + "\"", 512 /* ValueModule */); @@ -14817,38 +15253,66 @@ var ts; var links = getSymbolLinks(moduleSymbol); return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function extendExportSymbols(target, source) { + /** + * Extends one symbol table with another 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, source, lookupTable, exportNode) { for (var id in source) { if (id !== "default" && !ts.hasProperty(target, id)) { target[id] = source[id]; + if (lookupTable && exportNode) { + lookupTable[id] = { + specifierText: ts.getTextOfNode(exportNode.moduleSpecifier) + }; + } + } + else if (lookupTable && exportNode && id !== "default" && ts.hasProperty(target, id) && resolveSymbol(target[id]) !== resolveSymbol(source[id])) { + if (!lookupTable[id].exportsWithDuplicate) { + lookupTable[id].exportsWithDuplicate = [exportNode]; + } + else { + lookupTable[id].exportsWithDuplicate.push(exportNode); + } } } } function getExportsForModule(moduleSymbol) { - var result; var visitedSymbols = []; - 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) { - if (symbol && symbol.flags & 1952 /* HasExports */ && !ts.contains(visitedSymbols, symbol)) { - visitedSymbols.push(symbol); - if (symbol !== moduleSymbol) { - if (!result) { - result = cloneSymbolTable(moduleSymbol.exports); - } - extendExportSymbols(result, symbol.exports); - } - // All export * declarations are collected in an __export symbol by the binder - var exportStars = symbol.exports["__export"]; - if (exportStars) { - for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { - var node = _a[_i]; - visit(resolveExternalModuleName(node, node.moduleSpecifier)); - } - } + if (!(symbol && symbol.flags & 1952 /* HasExports */ && !ts.contains(visitedSymbols, symbol))) { + return; } + visitedSymbols.push(symbol); + var symbols = cloneSymbolTable(symbol.exports); + // All export * declarations are collected in an __export symbol by the binder + var exportStars = symbol.exports["__export"]; + if (exportStars) { + var nestedSymbols = {}; + var lookupTable = {}; + for (var _i = 0, _a = exportStars.declarations; _i < _a.length; _i++) { + var node = _a[_i]; + var resolvedModule = resolveExternalModuleName(node, node.moduleSpecifier); + var exportedSymbols = visit(resolvedModule); + extendExportSymbols(nestedSymbols, exportedSymbols, lookupTable, node); + } + for (var id in lookupTable) { + var exportsWithDuplicate = lookupTable[id].exportsWithDuplicate; + // 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 && exportsWithDuplicate.length) || ts.hasProperty(symbols, id)) { + continue; + } + for (var _b = 0, exportsWithDuplicate_1 = exportsWithDuplicate; _b < exportsWithDuplicate_1.length; _b++) { + var node = exportsWithDuplicate_1[_b]; + diagnostics.add(ts.createDiagnosticForNode(node, ts.Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id)); + } + } + extendExportSymbols(symbols, nestedSymbols); + } + return symbols; } } function getMergedSymbol(symbol) { @@ -14893,7 +15357,8 @@ var ts; } function createType(flags) { var result = new Type(checker, flags); - result.id = typeCount++; + result.id = typeCount; + typeCount++; return result; } function createIntrinsicType(kind, intrinsicName) { @@ -14956,17 +15421,17 @@ var ts; } } switch (location_1.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location_1)) { break; } - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (result = callback(getSymbolOfNode(location_1).exports)) { return result; } break; - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: if (result = callback(getSymbolOfNode(location_1).members)) { return result; } @@ -15007,7 +15472,7 @@ var ts; return ts.forEachValue(symbols, function (symbolFromSymbolTable) { if (symbolFromSymbolTable.flags & 8388608 /* Alias */ && symbolFromSymbolTable.name !== "export=" - && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230 /* ExportSpecifier */)) { + && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232 /* ExportSpecifier */)) { if (!useOnlyExternalAliasing || // Is this external alias, then use it to name ts.forEach(symbolFromSymbolTable.declarations, ts.isExternalModuleImportEqualsDeclaration)) { @@ -15044,7 +15509,7 @@ var ts; return true; } // Qualify if the symbol from symbol table has same meaning as expected - symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 230 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; + symbolFromSymbolTable = (symbolFromSymbolTable.flags & 8388608 /* Alias */ && !ts.getDeclarationOfKind(symbolFromSymbolTable, 232 /* ExportSpecifier */)) ? resolveAlias(symbolFromSymbolTable) : symbolFromSymbolTable; if (symbolFromSymbolTable.flags & meaning) { qualify = true; return true; @@ -15117,8 +15582,8 @@ var ts; } } function hasExternalModuleSymbol(declaration) { - return (declaration.kind === 218 /* ModuleDeclaration */ && declaration.name.kind === 9 /* StringLiteral */) || - (declaration.kind === 248 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); + return (declaration.kind === 220 /* ModuleDeclaration */ && declaration.name.kind === 9 /* StringLiteral */) || + (declaration.kind === 250 /* SourceFile */ && ts.isExternalOrCommonJsModule(declaration)); } function hasVisibleDeclarations(symbol) { var aliasesToMakeVisible; @@ -15158,8 +15623,8 @@ var ts; // Typeof value meaning = 107455 /* Value */ | 1048576 /* ExportValue */; } - else if (entityName.kind === 135 /* QualifiedName */ || entityName.kind === 166 /* PropertyAccessExpression */ || - entityName.parent.kind === 221 /* ImportEqualsDeclaration */) { + else if (entityName.kind === 135 /* QualifiedName */ || entityName.kind === 168 /* PropertyAccessExpression */ || + entityName.parent.kind === 223 /* ImportEqualsDeclaration */) { // Left identifier from type reference or TypeAlias // Entity name of the import declaration meaning = 1536 /* Namespace */; @@ -15193,9 +15658,9 @@ var ts; ts.releaseStringWriter(writer); return result; } - function signatureToString(signature, enclosingDeclaration, flags) { + function signatureToString(signature, enclosingDeclaration, flags, kind) { var writer = ts.getSingleLineStringWriter(); - getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); + getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind); var result = writer.string(); ts.releaseStringWriter(writer); return result; @@ -15217,7 +15682,7 @@ var ts; while (node.kind === 160 /* ParenthesizedType */) { node = node.parent; } - if (node.kind === 216 /* TypeAliasDeclaration */) { + if (node.kind === 218 /* TypeAliasDeclaration */) { return getSymbolOfNode(node); } } @@ -15231,10 +15696,10 @@ var ts; return ts.declarationNameToString(declaration.name); } switch (declaration.kind) { - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return "(Anonymous class)"; - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return "(Anonymous function)"; } } @@ -15322,10 +15787,16 @@ var ts; function writeType(type, flags) { // Write undefined/null type as any if (type.flags & 16777343 /* Intrinsic */) { - // Special handling for unknown / resolving types, they should show up as any and not unknown or __resolving - writer.writeKeyword(!(globalFlags & 16 /* WriteOwnNameForAnyLike */) && isTypeAny(type) - ? "any" - : type.intrinsicName); + if (type.flags & 134217728 /* PredicateType */) { + buildTypePredicateDisplay(writer, type.predicate); + buildTypeDisplay(type.predicate.type, writer, enclosingDeclaration, flags, symbolStack); + } + else { + // Special handling for unknown / resolving types, they should show up as any and not unknown or __resolving + writer.writeKeyword(!(globalFlags & 16 /* WriteOwnNameForAnyLike */) && isTypeAny(type) + ? "any" + : type.intrinsicName); + } } else if (type.flags & 33554432 /* ThisType */) { if (inObjectTypeLiteral) { @@ -15381,11 +15852,13 @@ var ts; } if (pos < end) { writePunctuation(writer, 25 /* LessThanToken */); - writeType(typeArguments[pos++], 0 /* None */); + writeType(typeArguments[pos], 0 /* None */); + pos++; while (pos < end) { writePunctuation(writer, 24 /* CommaToken */); writeSpace(writer); - writeType(typeArguments[pos++], 0 /* None */); + writeType(typeArguments[pos], 0 /* None */); + pos++; } writePunctuation(writer, 27 /* GreaterThanToken */); } @@ -15481,7 +15954,7 @@ var ts; var isNonLocalFunctionSymbol = !!(symbol.flags & 16 /* Function */) && (symbol.parent || ts.forEach(symbol.declarations, function (declaration) { - return declaration.parent.kind === 248 /* SourceFile */ || declaration.parent.kind === 219 /* ModuleBlock */; + return declaration.parent.kind === 250 /* SourceFile */ || declaration.parent.kind === 221 /* ModuleBlock */; })); if (isStaticMethodSymbol || isNonLocalFunctionSymbol) { // typeof is allowed only for static/non local functions @@ -15517,7 +15990,7 @@ var ts; if (flags & 64 /* InElementType */) { writePunctuation(writer, 17 /* OpenParenToken */); } - buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, symbolStack); + buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, /*kind*/ undefined, symbolStack); if (flags & 64 /* InElementType */) { writePunctuation(writer, 18 /* CloseParenToken */); } @@ -15529,7 +16002,7 @@ var ts; } writeKeyword(writer, 92 /* NewKeyword */); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, symbolStack); + buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | 8 /* WriteArrowStyleSignature */, /*kind*/ undefined, symbolStack); if (flags & 64 /* InElementType */) { writePunctuation(writer, 18 /* CloseParenToken */); } @@ -15543,15 +16016,13 @@ var ts; writer.increaseIndent(); for (var _i = 0, _a = resolved.callSignatures; _i < _a.length; _i++) { var signature = _a[_i]; - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, /*kind*/ undefined, symbolStack); writePunctuation(writer, 23 /* SemicolonToken */); writer.writeLine(); } for (var _b = 0, _c = resolved.constructSignatures; _b < _c.length; _b++) { var signature = _c[_b]; - writeKeyword(writer, 92 /* NewKeyword */); - writeSpace(writer); - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, 1 /* Construct */, symbolStack); writePunctuation(writer, 23 /* SemicolonToken */); writer.writeLine(); } @@ -15594,7 +16065,7 @@ var ts; if (p.flags & 536870912 /* Optional */) { writePunctuation(writer, 53 /* QuestionToken */); } - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, /*kind*/ undefined, symbolStack); writePunctuation(writer, 23 /* SemicolonToken */); writer.writeLine(); } @@ -15682,6 +16153,17 @@ var ts; } writePunctuation(writer, 18 /* CloseParenToken */); } + function buildTypePredicateDisplay(writer, predicate) { + if (ts.isIdentifierTypePredicate(predicate)) { + writer.writeParameter(predicate.parameterName); + } + else { + writeKeyword(writer, 97 /* ThisKeyword */); + } + writeSpace(writer); + writeKeyword(writer, 124 /* IsKeyword */); + writeSpace(writer); + } function buildReturnTypeDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { if (flags & 8 /* WriteArrowStyleSignature */) { writeSpace(writer); @@ -15691,20 +16173,14 @@ var ts; writePunctuation(writer, 54 /* ColonToken */); } writeSpace(writer); - var returnType; - if (signature.typePredicate) { - writer.writeParameter(signature.typePredicate.parameterName); - writeSpace(writer); - writeKeyword(writer, 124 /* IsKeyword */); - writeSpace(writer); - returnType = signature.typePredicate.type; - } - else { - returnType = getReturnTypeOfSignature(signature); - } + var returnType = getReturnTypeOfSignature(signature); buildTypeDisplay(returnType, writer, enclosingDeclaration, flags, symbolStack); } - function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, symbolStack) { + function buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind, symbolStack) { + if (kind === 1 /* Construct */) { + writeKeyword(writer, 92 /* NewKeyword */); + writeSpace(writer); + } if (signature.target && (flags & 32 /* WriteTypeArgumentsOfSignature */)) { // Instantiated signature, write type arguments instead // This is achieved by passing in the mapper separately @@ -15729,82 +16205,36 @@ var ts; }); } function isDeclarationVisible(node) { - function getContainingExternalModule(node) { - for (; node; node = node.parent) { - if (node.kind === 218 /* ModuleDeclaration */) { - if (node.name.kind === 9 /* StringLiteral */) { - return node; - } - } - else if (node.kind === 248 /* SourceFile */) { - return ts.isExternalOrCommonJsModule(node) ? node : undefined; - } - } - ts.Debug.fail("getContainingModule cant reach here"); - } - function isUsedInExportAssignment(node) { - // Get source File and see if it is external module and has export assigned symbol - var externalModule = getContainingExternalModule(node); - var exportAssignmentSymbol; - var resolvedExportSymbol; - if (externalModule) { - // This is export assigned symbol node - var externalModuleSymbol = getSymbolOfNode(externalModule); - exportAssignmentSymbol = getExportAssignmentSymbol(externalModuleSymbol); - var symbolOfNode = getSymbolOfNode(node); - if (isSymbolUsedInExportAssignment(symbolOfNode)) { - return true; - } - // if symbolOfNode is alias declaration, resolve the symbol declaration and check - if (symbolOfNode.flags & 8388608 /* Alias */) { - return isSymbolUsedInExportAssignment(resolveAlias(symbolOfNode)); - } - } - // Check if the symbol is used in export assignment - function isSymbolUsedInExportAssignment(symbol) { - if (exportAssignmentSymbol === symbol) { - return true; - } - if (exportAssignmentSymbol && !!(exportAssignmentSymbol.flags & 8388608 /* Alias */)) { - // if export assigned symbol is alias declaration, resolve the alias - resolvedExportSymbol = resolvedExportSymbol || resolveAlias(exportAssignmentSymbol); - if (resolvedExportSymbol === symbol) { - return true; - } - // Container of resolvedExportSymbol is visible - return ts.forEach(resolvedExportSymbol.declarations, function (current) { - while (current) { - if (current === node) { - return true; - } - current = current.parent; - } - }); - } + if (node) { + var links = getNodeLinks(node); + if (links.isVisible === undefined) { + links.isVisible = !!determineIfDeclarationIsVisible(); } + return links.isVisible; } + return false; function determineIfDeclarationIsVisible() { switch (node.kind) { - case 163 /* BindingElement */: + case 165 /* BindingElement */: return isDeclarationVisible(node.parent.parent); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: if (ts.isBindingPattern(node.name) && !node.name.elements.length) { // If the binding pattern is empty, this variable declaration is not visible return false; } // Otherwise fall through - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 213 /* FunctionDeclaration */: - case 217 /* EnumDeclaration */: - case 221 /* ImportEqualsDeclaration */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 215 /* FunctionDeclaration */: + case 219 /* EnumDeclaration */: + case 223 /* ImportEqualsDeclaration */: var parent_4 = getDeclarationContainer(node); // If the node is not exported or it is not ambient module element (except import declaration) if (!(ts.getCombinedNodeFlags(node) & 2 /* Export */) && - !(node.kind !== 221 /* ImportEqualsDeclaration */ && parent_4.kind !== 248 /* SourceFile */ && ts.isInAmbientContext(parent_4))) { + !(node.kind !== 223 /* ImportEqualsDeclaration */ && parent_4.kind !== 250 /* SourceFile */ && ts.isInAmbientContext(parent_4))) { return isGlobalSourceFile(parent_4); } // Exported members/ambient module elements (exception import declaration) are visible if parent is visible @@ -15825,7 +16255,7 @@ var ts; case 147 /* CallSignature */: case 149 /* IndexSignature */: case 138 /* Parameter */: - case 219 /* ModuleBlock */: + case 221 /* ModuleBlock */: case 152 /* FunctionType */: case 153 /* ConstructorType */: case 155 /* TypeLiteral */: @@ -15838,36 +16268,29 @@ var ts; return isDeclarationVisible(node.parent); // Default binding, import specifier and namespace import is visible // only on demand so by default it is not visible - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: - case 226 /* ImportSpecifier */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: + case 228 /* ImportSpecifier */: return false; // Type parameters are always visible case 137 /* TypeParameter */: // Source file is always visible - case 248 /* SourceFile */: + case 250 /* SourceFile */: return true; // Export assignments do not create name bindings outside the module - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return false; default: ts.Debug.fail("isDeclarationVisible unknown: SyntaxKind: " + node.kind); } } - if (node) { - var links = getNodeLinks(node); - if (links.isVisible === undefined) { - links.isVisible = !!determineIfDeclarationIsVisible(); - } - return links.isVisible; - } } function collectLinkedAliases(node) { var exportSymbol; - if (node.parent && node.parent.kind === 227 /* ExportAssignment */) { + if (node.parent && node.parent.kind === 229 /* ExportAssignment */) { exportSymbol = resolveName(node.parent, node.text, 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */, ts.Diagnostics.Cannot_find_name_0, node); } - else if (node.parent.kind === 230 /* ExportSpecifier */) { + else if (node.parent.kind === 232 /* ExportSpecifier */) { var exportSpecifier = node.parent; exportSymbol = exportSpecifier.parent.parent.moduleSpecifier ? getExternalModuleMember(exportSpecifier.parent.parent, exportSpecifier) : @@ -15917,7 +16340,7 @@ var ts; return false; } resolutionTargets.push(target); - resolutionResults.push(true); + resolutionResults.push(/*items*/ true); resolutionPropertyNames.push(propertyName); return true; } @@ -15959,7 +16382,7 @@ var ts; node = ts.getRootDeclaration(node); // Parent chain: // VaribleDeclaration -> VariableDeclarationList -> VariableStatement -> 'Declaration Container' - return node.kind === 211 /* VariableDeclaration */ ? node.parent.parent.parent : node.parent; + return node.kind === 213 /* VariableDeclaration */ ? node.parent.parent.parent : node.parent; } function getTypeOfPrototypeProperty(prototype) { // TypeScript 1.0 spec (April 2014): 8.4 @@ -16018,7 +16441,7 @@ var ts; return parentType; } var type; - if (pattern.kind === 161 /* ObjectBindingPattern */) { + if (pattern.kind === 163 /* ObjectBindingPattern */) { // Use explicitly specified property name ({ p: xxx } form), or otherwise the implied name ({ p } form) var name_10 = declaration.propertyName || declaration.name; if (isComputedNonLiteralName(name_10)) { @@ -16067,10 +16490,10 @@ var ts; // Return the inferred type for a variable, parameter, or property declaration function getTypeForVariableLikeDeclaration(declaration) { // A variable declared in a for..in statement is always of type any - if (declaration.parent.parent.kind === 200 /* ForInStatement */) { + if (declaration.parent.parent.kind === 202 /* ForInStatement */) { return anyType; } - if (declaration.parent.parent.kind === 201 /* ForOfStatement */) { + if (declaration.parent.parent.kind === 203 /* ForOfStatement */) { // checkRightHandSideOfForOf will return undefined if the for-of expression type was // missing properties/signatures required to get its iteratedType (like // [Symbol.iterator] or next). This may be because we accessed properties from anyType, @@ -16104,7 +16527,7 @@ var ts; return checkExpressionCached(declaration.initializer); } // If it is a short-hand property assignment, use the type of the identifier - if (declaration.kind === 246 /* ShorthandPropertyAssignment */) { + if (declaration.kind === 248 /* ShorthandPropertyAssignment */) { return checkIdentifier(declaration.name); } // If the declaration specifies a binding pattern, use the type implied by the binding pattern @@ -16160,7 +16583,7 @@ var ts; return languageVersion >= 2 /* ES6 */ ? createIterableType(anyType) : anyArrayType; } // If the pattern has at least one element, and no rest element, then it should imply a tuple type. - var elementTypes = ts.map(elements, function (e) { return e.kind === 187 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); + var elementTypes = ts.map(elements, function (e) { return e.kind === 189 /* OmittedExpression */ ? anyType : getTypeFromBindingElement(e, includePatternInType); }); if (includePatternInType) { var result = createNewTupleType(elementTypes); result.pattern = pattern; @@ -16176,7 +16599,7 @@ var ts; // parameter with no type annotation or initializer, the type implied by the binding pattern becomes the type of // the parameter. function getTypeFromBindingPattern(pattern, includePatternInType) { - return pattern.kind === 161 /* ObjectBindingPattern */ + return pattern.kind === 163 /* ObjectBindingPattern */ ? getTypeFromObjectBindingPattern(pattern, includePatternInType) : getTypeFromArrayBindingPattern(pattern, includePatternInType); } @@ -16198,7 +16621,13 @@ var ts; // During a normal type check we'll never get to here with a property assignment (the check of the containing // object literal uses a different path). We exclude widening only so that language services and type verification // tools see the actual type. - return declaration.kind !== 245 /* PropertyAssignment */ ? getWidenedType(type) : type; + if (declaration.kind === 247 /* PropertyAssignment */) { + return type; + } + if (type.flags & 134217728 /* PredicateType */ && (declaration.kind === 141 /* PropertyDeclaration */ || declaration.kind === 140 /* PropertySignature */)) { + return type; + } + return getWidenedType(type); } // Rest parameters default to type any[], other parameters default to type any type = declaration.dotDotDotToken ? anyArrayType : anyType; @@ -16220,20 +16649,24 @@ var ts; } // Handle catch clause variables var declaration = symbol.valueDeclaration; - if (declaration.parent.kind === 244 /* CatchClause */) { + if (declaration.parent.kind === 246 /* CatchClause */) { return links.type = anyType; } // Handle export default expressions - if (declaration.kind === 227 /* ExportAssignment */) { + if (declaration.kind === 229 /* ExportAssignment */) { return links.type = checkExpression(declaration.expression); } // Handle module.exports = expr - if (declaration.kind === 181 /* BinaryExpression */) { + if (declaration.kind === 183 /* BinaryExpression */) { return links.type = checkExpression(declaration.right); } - // Handle exports.p = expr - if (declaration.kind === 166 /* PropertyAccessExpression */) { - return checkExpressionCached(declaration.parent.right); + if (declaration.kind === 168 /* PropertyAccessExpression */) { + // Declarations only exist for property access expressions for certain + // special assignment kinds + if (declaration.parent.kind === 183 /* BinaryExpression */) { + // Handle exports.p = expr or this.p = expr or className.prototype.method = expr + return links.type = checkExpressionCached(declaration.parent.right); + } } // Handle variable, parameter or property if (!pushTypeResolution(symbol, 0 /* Type */)) { @@ -16406,9 +16839,9 @@ var ts; if (!node) { return typeParameters; } - if (node.kind === 214 /* ClassDeclaration */ || node.kind === 186 /* ClassExpression */ || - node.kind === 213 /* FunctionDeclaration */ || node.kind === 173 /* FunctionExpression */ || - node.kind === 143 /* MethodDeclaration */ || node.kind === 174 /* ArrowFunction */) { + if (node.kind === 216 /* ClassDeclaration */ || node.kind === 188 /* ClassExpression */ || + node.kind === 215 /* FunctionDeclaration */ || node.kind === 175 /* FunctionExpression */ || + node.kind === 143 /* MethodDeclaration */ || node.kind === 176 /* ArrowFunction */) { var declarations = node.typeParameters; if (declarations) { return appendTypeParameters(appendOuterTypeParameters(typeParameters, node), declarations); @@ -16418,7 +16851,7 @@ var ts; } // The outer type parameters are those defined by enclosing generic classes, methods, or functions. function getOuterTypeParametersOfClassOrInterface(symbol) { - var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 215 /* InterfaceDeclaration */); + var declaration = symbol.flags & 32 /* Class */ ? symbol.valueDeclaration : ts.getDeclarationOfKind(symbol, 217 /* InterfaceDeclaration */); return appendOuterTypeParameters(undefined, declaration); } // The local type parameters are the combined set of type parameters from all declarations of the class, @@ -16427,8 +16860,8 @@ var ts; var result; for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var node = _a[_i]; - if (node.kind === 215 /* InterfaceDeclaration */ || node.kind === 214 /* ClassDeclaration */ || - node.kind === 186 /* ClassExpression */ || node.kind === 216 /* TypeAliasDeclaration */) { + if (node.kind === 217 /* InterfaceDeclaration */ || node.kind === 216 /* ClassDeclaration */ || + node.kind === 188 /* ClassExpression */ || node.kind === 218 /* TypeAliasDeclaration */) { var declaration = node; if (declaration.typeParameters) { result = appendTypeParameters(result, declaration.typeParameters); @@ -16492,9 +16925,6 @@ var ts; } return type.resolvedBaseConstructorType; } - function hasClassBaseType(type) { - return !!ts.forEach(getBaseTypes(type), function (t) { return !!(t.symbol.flags & 32 /* Class */); }); - } function getBaseTypes(type) { var isClass = type.symbol.flags & 32 /* Class */; var isInterface = type.symbol.flags & 64 /* Interface */; @@ -16571,7 +17001,7 @@ var ts; type.resolvedBaseTypes = type.resolvedBaseTypes || emptyArray; for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { + if (declaration.kind === 217 /* InterfaceDeclaration */ && ts.getInterfaceBaseTypeNodes(declaration)) { for (var _b = 0, _c = ts.getInterfaceBaseTypeNodes(declaration); _b < _c.length; _b++) { var node = _c[_b]; var baseType = getTypeFromTypeNode(node); @@ -16603,7 +17033,7 @@ var ts; function isIndependentInterface(symbol) { for (var _i = 0, _a = symbol.declarations; _i < _a.length; _i++) { var declaration = _a[_i]; - if (declaration.kind === 215 /* InterfaceDeclaration */) { + if (declaration.kind === 217 /* InterfaceDeclaration */) { if (declaration.flags & 262144 /* ContainsThis */) { return false; } @@ -16659,7 +17089,7 @@ var ts; if (!pushTypeResolution(symbol, 2 /* DeclaredType */)) { return unknownType; } - var declaration = ts.getDeclarationOfKind(symbol, 216 /* TypeAliasDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 218 /* TypeAliasDeclaration */); var type = getTypeFromTypeNode(declaration.type); if (popTypeResolution()) { links.typeParameters = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol); @@ -16748,7 +17178,7 @@ var ts; case 120 /* BooleanKeyword */: case 131 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: return true; case 156 /* ArrayType */: return isIndependentType(node.elementType); @@ -16824,14 +17254,6 @@ var ts; } } } - function addInheritedSignatures(signatures, baseSignatures) { - if (baseSignatures) { - for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { - var signature = baseSignatures_1[_i]; - signatures.push(signature); - } - } - } function resolveDeclaredMembers(type) { if (!type.declaredProperties) { var symbol = type.symbol; @@ -16892,33 +17314,32 @@ var ts; type.typeArguments : ts.concatenate(type.typeArguments, [type]); resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration, typeParameters, parameters, resolvedReturnType, typePredicate, minArgumentCount, hasRestParameter, hasStringLiterals) { + function createSignature(declaration, typeParameters, parameters, resolvedReturnType, minArgumentCount, hasRestParameter, hasStringLiterals) { var sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; sig.resolvedReturnType = resolvedReturnType; - sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; sig.hasRestParameter = hasRestParameter; sig.hasStringLiterals = hasStringLiterals; return sig; } function cloneSignature(sig) { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); + return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType) { - if (!hasClassBaseType(classType)) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; - } var baseConstructorType = getBaseConstructorTypeOfClass(classType); var baseSignatures = getSignaturesOfType(baseConstructorType, 1 /* Construct */); + if (baseSignatures.length === 0) { + return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false)]; + } var baseTypeNode = getBaseTypeNodeOfClass(classType); var typeArguments = ts.map(baseTypeNode.typeArguments, getTypeFromTypeNode); var typeArgCount = typeArguments ? typeArguments.length : 0; var result = []; - for (var _i = 0, baseSignatures_2 = baseSignatures; _i < baseSignatures_2.length; _i++) { - var baseSig = baseSignatures_2[_i]; + for (var _i = 0, baseSignatures_1 = baseSignatures; _i < baseSignatures_1.length; _i++) { + var baseSig = baseSignatures_1[_i]; var typeParamCount = baseSig.typeParameters ? baseSig.typeParameters.length : 0; if (typeParamCount === typeArgCount) { var sig = typeParamCount ? getSignatureInstantiation(baseSig, typeArguments) : cloneSignature(baseSig); @@ -16949,7 +17370,7 @@ var ts; function findMatchingSignature(signatureList, signature, partialMatch, ignoreReturnTypes) { for (var _i = 0, signatureList_1 = signatureList; _i < signatureList_1.length; _i++) { var s = signatureList_1[_i]; - if (compareSignatures(s, signature, partialMatch, ignoreReturnTypes, compareTypes)) { + if (compareSignaturesIdentical(s, signature, partialMatch, ignoreReturnTypes, compareTypesIdentical)) { return s; } } @@ -17052,36 +17473,29 @@ var ts; } function resolveAnonymousTypeMembers(type) { var symbol = type.symbol; - var members; - var callSignatures; - var constructSignatures; - var stringIndexType; - var numberIndexType; if (type.target) { - members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, /*mappingThisOnly*/ false); - callSignatures = instantiateList(getSignaturesOfType(type.target, 0 /* Call */), type.mapper, instantiateSignature); - constructSignatures = instantiateList(getSignaturesOfType(type.target, 1 /* Construct */), type.mapper, instantiateSignature); - stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0 /* String */), type.mapper); - numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1 /* Number */), type.mapper); + var members = createInstantiatedSymbolTable(getPropertiesOfObjectType(type.target), type.mapper, /*mappingThisOnly*/ false); + var callSignatures = instantiateList(getSignaturesOfType(type.target, 0 /* Call */), type.mapper, instantiateSignature); + var constructSignatures = instantiateList(getSignaturesOfType(type.target, 1 /* Construct */), type.mapper, instantiateSignature); + var stringIndexType = instantiateType(getIndexTypeOfType(type.target, 0 /* String */), type.mapper); + var numberIndexType = instantiateType(getIndexTypeOfType(type.target, 1 /* Number */), type.mapper); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else if (symbol.flags & 2048 /* TypeLiteral */) { - members = symbol.members; - callSignatures = getSignaturesOfSymbol(members["__call"]); - constructSignatures = getSignaturesOfSymbol(members["__new"]); - stringIndexType = getIndexTypeOfSymbol(symbol, 0 /* String */); - numberIndexType = getIndexTypeOfSymbol(symbol, 1 /* Number */); + var members = symbol.members; + var callSignatures = getSignaturesOfSymbol(members["__call"]); + var constructSignatures = getSignaturesOfSymbol(members["__new"]); + var stringIndexType = getIndexTypeOfSymbol(symbol, 0 /* String */); + var numberIndexType = getIndexTypeOfSymbol(symbol, 1 /* Number */); + setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } else { // Combinations of function, class, enum and module - members = emptySymbols; - callSignatures = emptyArray; - constructSignatures = emptyArray; + var members = emptySymbols; + var constructSignatures = emptyArray; if (symbol.flags & 1952 /* HasExports */) { members = getExportsOfSymbol(symbol); } - if (symbol.flags & (16 /* Function */ | 8192 /* Method */)) { - callSignatures = getSignaturesOfSymbol(symbol); - } if (symbol.flags & 32 /* Class */) { var classType = getDeclaredTypeOfClassOrInterface(symbol); constructSignatures = getSignaturesOfSymbol(symbol.members["__constructor"]); @@ -17094,10 +17508,16 @@ var ts; addInheritedMembers(members, getPropertiesOfObjectType(baseConstructorType)); } } - stringIndexType = undefined; - numberIndexType = (symbol.flags & 384 /* Enum */) ? stringType : undefined; + var numberIndexType = (symbol.flags & 384 /* Enum */) ? stringType : undefined; + setObjectTypeMembers(type, members, emptyArray, constructSignatures, undefined, numberIndexType); + // We resolve the members before computing the signatures because a signature may use + // typeof with a qualified name expression that circularly references the type we are + // in the process of resolving (see issue #6072). The temporarily empty signature list + // will never be observed because a qualified name can't reference signatures. + if (symbol.flags & (16 /* Function */ | 8192 /* Method */)) { + type.callSignatures = getSignaturesOfSymbol(symbol); + } } - setObjectTypeMembers(type, members, callSignatures, constructSignatures, stringIndexType, numberIndexType); } function resolveStructuredTypeMembers(type) { if (!type.members) { @@ -17122,15 +17542,15 @@ var ts; } return type; } - // Return properties of an object type or an empty array for other types + /** Return properties of an object type or an empty array for other types */ function getPropertiesOfObjectType(type) { if (type.flags & 80896 /* ObjectType */) { return resolveStructuredTypeMembers(type).properties; } return emptyArray; } - // If the given type is an object type and that type has a property by the given name, - // return the symbol for that property.Otherwise return undefined. + /** If the given type is an object type and that type has a property by the given name, + * return the symbol for that property. Otherwise return undefined. */ function getPropertyOfObjectType(type, name) { if (type.flags & 80896 /* ObjectType */) { var resolved = resolveStructuredTypeMembers(type); @@ -17201,12 +17621,15 @@ var ts; function createUnionOrIntersectionProperty(containingType, name) { var types = containingType.types; var props; + // Flags we want to propagate to the result if they exist in all source symbols + var commonFlags = (containingType.flags & 32768 /* Intersection */) ? 536870912 /* Optional */ : 0 /* None */; for (var _i = 0, types_2 = types; _i < types_2.length; _i++) { var current = types_2[_i]; var type = getApparentType(current); if (type !== unknownType) { var prop = getPropertyOfType(type, name); if (prop && !(getDeclarationFlagsFromSymbol(prop) & (16 /* Private */ | 32 /* Protected */))) { + commonFlags &= prop.flags; if (!props) { props = [prop]; } @@ -17235,7 +17658,10 @@ var ts; } propTypes.push(getTypeOfSymbol(prop)); } - var result = createSymbol(4 /* Property */ | 67108864 /* Transient */ | 268435456 /* SyntheticProperty */, name); + var result = createSymbol(4 /* Property */ | + 67108864 /* Transient */ | + 268435456 /* SyntheticProperty */ | + commonFlags, name); result.containingType = containingType; result.declarations = declarations; result.type = containingType.flags & 16384 /* Union */ ? getUnionType(propTypes) : getIntersectionType(propTypes); @@ -17292,22 +17718,6 @@ var ts; function getSignaturesOfType(type, kind) { return getSignaturesOfStructuredType(getApparentType(type), kind); } - function typeHasConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & (80896 /* ObjectType */ | 16384 /* Union */)) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.constructSignatures.length > 0; - } - return false; - } - function typeHasCallOrConstructSignatures(type) { - var apparentType = getApparentType(type); - if (apparentType.flags & 130048 /* StructuredType */) { - var resolved = resolveStructuredTypeMembers(type); - return resolved.callSignatures.length > 0 || resolved.constructSignatures.length > 0; - } - return false; - } function getIndexTypeOfStructuredType(type, kind) { if (type.flags & 130048 /* StructuredType */) { var resolved = resolveStructuredTypeMembers(type); @@ -17353,6 +17763,23 @@ var ts; } return false; } + function createTypePredicateFromTypePredicateNode(node) { + if (node.parameterName.kind === 69 /* Identifier */) { + var parameterName = node.parameterName; + return { + kind: 1 /* Identifier */, + parameterName: parameterName ? parameterName.text : undefined, + parameterIndex: parameterName ? getTypePredicateParameterIndex(node.parent.parameters, parameterName) : undefined, + type: getTypeFromTypeNode(node.type) + }; + } + else { + return { + kind: 0 /* This */, + type: getTypeFromTypeNode(node.type) + }; + } + } function getSignatureFromDeclaration(declaration) { var links = getNodeLinks(declaration); if (!links.resolvedSignature) { @@ -17366,8 +17793,14 @@ var ts; var minArgumentCount = -1; for (var i = 0, n = declaration.parameters.length; i < n; i++) { var param = declaration.parameters[i]; - parameters.push(param.symbol); - if (param.type && param.type.kind === 9 /* StringLiteral */) { + var paramSymbol = param.symbol; + // Include parameter symbol instead of property symbol in the signature + if (paramSymbol && !!(paramSymbol.flags & 4 /* Property */) && !ts.isBindingPattern(param.name)) { + var resolvedSymbol = resolveName(param, paramSymbol.name, 107455 /* Value */, undefined, undefined); + paramSymbol = resolvedSymbol; + } + parameters.push(paramSymbol); + if (param.type && param.type.kind === 162 /* StringLiteralType */) { hasStringLiterals = true; } if (param.initializer || param.questionToken || param.dotDotDotToken) { @@ -17384,20 +17817,11 @@ var ts; minArgumentCount = declaration.parameters.length; } var returnType; - var typePredicate; if (classType) { returnType = classType; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); - if (declaration.type.kind === 150 /* TypePredicate */) { - var typePredicateNode = declaration.type; - typePredicate = { - parameterName: typePredicateNode.parameterName ? typePredicateNode.parameterName.text : undefined, - parameterIndex: typePredicateNode.parameterName ? getTypePredicateParameterIndex(declaration.parameters, typePredicateNode.parameterName) : undefined, - type: getTypeFromTypeNode(typePredicateNode.type) - }; - } } else { // TypeScript 1.0 spec (April 2014): @@ -17410,7 +17834,7 @@ var ts; returnType = anyType; } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); + links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, minArgumentCount, ts.hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; } @@ -17423,7 +17847,7 @@ var ts; switch (node.kind) { case 152 /* FunctionType */: case 153 /* ConstructorType */: - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 144 /* Constructor */: @@ -17432,8 +17856,8 @@ var ts; case 149 /* IndexSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: // Don't include signature if node is the implementation of an overloaded function. A node is considered // an implementation node if it has a body and the previous node is of the same kind and immediately // precedes the implementation node (i.e. has the same parent and ends where the implementation starts). @@ -17499,7 +17923,7 @@ var ts; return anyType; } function getSignatureInstantiation(signature, typeArguments) { - return instantiateSignature(signature, createTypeMapper(signature.typeParameters, typeArguments), true); + return instantiateSignature(signature, createTypeMapper(signature.typeParameters, typeArguments), /*eraseTypeParameters*/ true); } function getErasedSignature(signature) { if (!signature.typeParameters) @@ -17509,7 +17933,7 @@ var ts; signature.erasedSignatureCache = instantiateSignature(getErasedSignature(signature.target), signature.mapper); } else { - signature.erasedSignatureCache = instantiateSignature(signature, createTypeEraser(signature.typeParameters), true); + signature.erasedSignatureCache = instantiateSignature(signature, createTypeEraser(signature.typeParameters), /*eraseTypeParameters*/ true); } } return signature.erasedSignatureCache; @@ -17556,17 +17980,38 @@ var ts; ? declaration.type ? getTypeFromTypeNode(declaration.type) : anyType : undefined; } - function getConstraintOfTypeParameter(type) { - if (!type.constraint) { - if (type.target) { - var targetConstraint = getConstraintOfTypeParameter(type.target); - type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; + function getConstraintDeclaration(type) { + return ts.getDeclarationOfKind(type.symbol, 137 /* TypeParameter */).constraint; + } + function hasConstraintReferenceTo(type, target) { + var checked; + while (type && type.flags & 512 /* TypeParameter */ && !ts.contains(checked, type)) { + if (type === target) { + return true; + } + (checked || (checked = [])).push(type); + var constraintDeclaration = getConstraintDeclaration(type); + type = constraintDeclaration && getTypeFromTypeNode(constraintDeclaration); + } + return false; + } + function getConstraintOfTypeParameter(typeParameter) { + if (!typeParameter.constraint) { + if (typeParameter.target) { + var targetConstraint = getConstraintOfTypeParameter(typeParameter.target); + typeParameter.constraint = targetConstraint ? instantiateType(targetConstraint, typeParameter.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode(ts.getDeclarationOfKind(type.symbol, 137 /* TypeParameter */).constraint); + var constraintDeclaration = getConstraintDeclaration(typeParameter); + var constraint = getTypeFromTypeNode(constraintDeclaration); + if (hasConstraintReferenceTo(constraint, typeParameter)) { + error(constraintDeclaration, ts.Diagnostics.Type_parameter_0_has_a_circular_constraint, typeToString(typeParameter)); + constraint = unknownType; + } + typeParameter.constraint = constraint; } } - return type.constraint === noConstraintType ? undefined : type.constraint; + return typeParameter.constraint === noConstraintType ? undefined : typeParameter.constraint; } function getParentSymbolOfTypeParameter(typeParameter) { return getSymbolOfNode(ts.getDeclarationOfKind(typeParameter.symbol, 137 /* TypeParameter */).parent); @@ -17614,50 +18059,6 @@ var ts; } return type; } - function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode, typeParameterSymbol) { - var links = getNodeLinks(typeReferenceNode); - if (links.isIllegalTypeReferenceInConstraint !== undefined) { - return links.isIllegalTypeReferenceInConstraint; - } - // bubble up to the declaration - var currentNode = typeReferenceNode; - // forEach === exists - while (!ts.forEach(typeParameterSymbol.declarations, function (d) { return 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 === 137 /* TypeParameter */; - return links.isIllegalTypeReferenceInConstraint; - } - function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter) { - var typeParameterSymbol; - function check(n) { - if (n.kind === 151 /* TypeReference */ && n.typeName.kind === 69 /* Identifier */) { - var links = getNodeLinks(n); - if (links.isIllegalTypeReferenceInConstraint === undefined) { - var symbol = resolveName(typeParameter, n.typeName.text, 793056 /* Type */, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); - if (symbol && (symbol.flags & 262144 /* 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 = ts.forEach(symbol.declarations, function (d) { return d.parent === typeParameter.parent; }); - } - } - if (links.isIllegalTypeReferenceInConstraint) { - error(typeParameter, ts.Diagnostics.Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list); - } - } - ts.forEachChild(n, check); - } - if (typeParameter.constraint) { - typeParameterSymbol = getSymbolOfNode(typeParameter); - check(typeParameter.constraint); - } - } // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node, symbol) { var type = getDeclaredTypeOfSymbol(symbol); @@ -17702,13 +18103,6 @@ var ts; } // Get type from reference to named type that cannot be generic (enum or type parameter) function getTypeFromNonGenericTypeReference(node, symbol) { - if (symbol.flags & 262144 /* 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, ts.Diagnostics.Type_0_is_not_generic, symbolToString(symbol)); return unknownType; @@ -17751,9 +18145,9 @@ var ts; for (var _i = 0, declarations_3 = declarations; _i < declarations_3.length; _i++) { var declaration = declarations_3[_i]; switch (declaration.kind) { - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: return declaration; } } @@ -17785,10 +18179,6 @@ var ts; if (arity === void 0) { arity = 0; } return getTypeOfGlobalSymbol(getGlobalTypeSymbol(name), arity); } - function tryGetGlobalType(name, arity) { - if (arity === void 0) { arity = 0; } - return getTypeOfGlobalSymbol(getGlobalSymbol(name, 793056 /* Type */, /*diagnostic*/ undefined), arity); - } /** * Returns a type that is inside a namespace at the global scope, e.g. * getExportedTypeFromNamespace('JSX', 'Element') returns the JSX.Element type @@ -17908,7 +18298,7 @@ var ts; // a named type that circularly references itself. function getUnionType(types, noSubtypeReduction) { if (types.length === 0) { - return emptyObjectType; + return emptyUnionType; } var typeSet = []; addTypesToSet(typeSet, types, 16384 /* Union */); @@ -17980,8 +18370,7 @@ var ts; } return links.resolvedType; } - function getStringLiteralType(node) { - var text = node.text; + function getStringLiteralTypeForText(text) { if (ts.hasProperty(stringLiteralTypes, text)) { return stringLiteralTypes[text]; } @@ -17989,17 +18378,17 @@ var ts; type.text = text; return type; } - function getTypeFromStringLiteral(node) { + function getTypeFromStringLiteralTypeNode(node) { var links = getNodeLinks(node); if (!links.resolvedType) { - links.resolvedType = getStringLiteralType(node); + links.resolvedType = getStringLiteralTypeForText(node.text); } return links.resolvedType; } function getThisType(node) { var container = ts.getThisContainer(node, /*includeArrowFunctions*/ false); var parent = container && container.parent; - if (parent && (ts.isClassLike(parent) || parent.kind === 215 /* InterfaceDeclaration */)) { + if (parent && (ts.isClassLike(parent) || parent.kind === 217 /* InterfaceDeclaration */)) { if (!(container.flags & 64 /* Static */) && (container.kind !== 144 /* Constructor */ || ts.isNodeDescendentOf(node, container.body))) { return getDeclaredTypeOfClassOrInterface(getSymbolOfNode(parent)).thisType; @@ -18015,6 +18404,22 @@ var ts; } return links.resolvedType; } + function getPredicateType(node) { + return createPredicateType(getSymbolOfNode(node), createTypePredicateFromTypePredicateNode(node)); + } + function createPredicateType(symbol, predicate) { + var type = createType(8 /* Boolean */ | 134217728 /* PredicateType */); + type.symbol = symbol; + type.predicate = predicate; + return type; + } + function getTypeFromPredicateTypeNode(node) { + var links = getNodeLinks(node); + if (!links.resolvedType) { + links.resolvedType = getPredicateType(node); + } + return links.resolvedType; + } function getTypeFromTypeNode(node) { switch (node.kind) { case 117 /* AnyKeyword */: @@ -18029,15 +18434,15 @@ var ts; return esSymbolType; case 103 /* VoidKeyword */: return voidType; - case 97 /* ThisKeyword */: + case 161 /* ThisType */: return getTypeFromThisTypeNode(node); - case 9 /* StringLiteral */: - return getTypeFromStringLiteral(node); + case 162 /* StringLiteralType */: + return getTypeFromStringLiteralTypeNode(node); case 151 /* TypeReference */: return getTypeFromTypeReference(node); case 150 /* TypePredicate */: - return booleanType; - case 188 /* ExpressionWithTypeArguments */: + return getTypeFromPredicateTypeNode(node); + case 190 /* ExpressionWithTypeArguments */: return getTypeFromTypeReference(node); case 154 /* TypeQuery */: return getTypeFromTypeQueryNode(node); @@ -18117,18 +18522,22 @@ var ts; return t; }; } - function createInferenceMapper(context) { - var mapper = function (t) { - for (var i = 0; i < context.typeParameters.length; i++) { - if (t === context.typeParameters[i]) { - context.inferences[i].isFixed = true; - return getInferredType(context, i); + function getInferenceMapper(context) { + if (!context.mapper) { + var mapper = function (t) { + var typeParameters = context.typeParameters; + for (var i = 0; i < typeParameters.length; i++) { + if (t === 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) { return type; @@ -18136,33 +18545,42 @@ var ts; function combineTypeMappers(mapper1, mapper2) { return function (t) { return instantiateType(mapper1(t), mapper2); }; } - function instantiateTypeParameter(typeParameter, mapper) { + function cloneTypeParameter(typeParameter) { var result = createType(512 /* TypeParameter */); result.symbol = typeParameter.symbol; - if (typeParameter.constraint) { - result.constraint = instantiateType(typeParameter.constraint, mapper); + result.target = typeParameter; + return result; + } + function cloneTypePredicate(predicate, mapper) { + if (ts.isIdentifierTypePredicate(predicate)) { + return { + kind: 1 /* Identifier */, + parameterName: predicate.parameterName, + parameterIndex: predicate.parameterIndex, + type: instantiateType(predicate.type, mapper) + }; } else { - result.target = typeParameter; - result.mapper = mapper; + return { + kind: 0 /* This */, + type: instantiateType(predicate.type, mapper) + }; } - return result; } function instantiateSignature(signature, mapper, eraseTypeParameters) { var freshTypeParameters; - var freshTypePredicate; if (signature.typeParameters && !eraseTypeParameters) { - freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); + // First create a fresh set of type parameters, then include a mapping from the old to the + // new type parameters in the mapper function. Finally store this mapper in the new type + // parameters such that we can use it when instantiating constraints. + freshTypeParameters = ts.map(signature.typeParameters, cloneTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); + for (var _i = 0, freshTypeParameters_1 = freshTypeParameters; _i < freshTypeParameters_1.length; _i++) { + var tp = freshTypeParameters_1[_i]; + tp.mapper = mapper; + } } - if (signature.typePredicate) { - freshTypePredicate = { - parameterName: signature.typePredicate.parameterName, - parameterIndex: signature.typePredicate.parameterIndex, - type: instantiateType(signature.typePredicate.type, mapper) - }; - } - var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); + var result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), instantiateType(signature.resolvedReturnType, mapper), signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); result.target = signature; result.mapper = mapper; return result; @@ -18226,6 +18644,10 @@ var ts; if (type.flags & 32768 /* Intersection */) { return getIntersectionType(instantiateList(type.types, mapper, instantiateType)); } + if (type.flags & 134217728 /* PredicateType */) { + var predicate = type.predicate; + return createPredicateType(type.symbol, cloneTypePredicate(predicate, mapper)); + } } return type; } @@ -18234,25 +18656,25 @@ var ts; function isContextSensitive(node) { ts.Debug.assert(node.kind !== 143 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); switch (node.kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return isContextSensitiveFunctionLikeDeclaration(node); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return ts.forEach(node.properties, isContextSensitive); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return ts.forEach(node.elements, isContextSensitive); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return isContextSensitive(node.whenTrue) || isContextSensitive(node.whenFalse); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return node.operatorToken.kind === 52 /* BarBarToken */ && (isContextSensitive(node.left) || isContextSensitive(node.right)); - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: return isContextSensitive(node.initializer); case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: return isContextSensitiveFunctionLikeDeclaration(node); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return isContextSensitive(node.expression); } return false; @@ -18278,7 +18700,7 @@ var ts; function isTypeIdenticalTo(source, target) { return checkTypeRelatedTo(source, target, identityRelation, /*errorNode*/ undefined); } - function compareTypes(source, target) { + function compareTypesIdentical(source, target) { return checkTypeRelatedTo(source, target, identityRelation, /*errorNode*/ undefined) ? -1 /* True */ : 0 /* False */; } function isTypeSubtypeOf(source, target) { @@ -18293,10 +18715,84 @@ var ts; function checkTypeAssignableTo(source, target, errorNode, headMessage, containingMessageChain) { return checkTypeRelatedTo(source, target, assignableRelation, errorNode, headMessage, containingMessageChain); } - function isSignatureAssignableTo(source, target) { - var sourceType = getOrCreateTypeFromSignature(source); - var targetType = getOrCreateTypeFromSignature(target); - return checkTypeRelatedTo(sourceType, targetType, assignableRelation, /*errorNode*/ undefined); + /** + * See signatureRelatedTo, compareSignaturesIdentical + */ + function isSignatureAssignableTo(source, target, ignoreReturnTypes) { + // TODO (drosen): De-duplicate code between related functions. + if (source === target) { + return true; + } + if (!target.hasRestParameter && source.minArgumentCount > target.parameters.length) { + return 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); + var sourceMax = getNumNonRestParameters(source); + var targetMax = getNumNonRestParameters(target); + var checkCount = getNumParametersToCheckForSignatureRelatability(source, sourceMax, target, targetMax); + for (var i = 0; i < checkCount; i++) { + var s = i < sourceMax ? getTypeOfSymbol(source.parameters[i]) : getRestTypeOfSignature(source); + var t = i < targetMax ? getTypeOfSymbol(target.parameters[i]) : getRestTypeOfSignature(target); + var related = isTypeAssignableTo(t, s) || isTypeAssignableTo(s, t); + if (!related) { + return false; + } + } + if (!ignoreReturnTypes) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return true; + } + var sourceReturnType = getReturnTypeOfSignature(source); + // The following block preserves behavior forbidding boolean returning functions from being assignable to type guard returning functions + if (targetReturnType.flags & 134217728 /* PredicateType */ && targetReturnType.predicate.kind === 1 /* Identifier */) { + if (!(sourceReturnType.flags & 134217728 /* PredicateType */)) { + return false; + } + } + return isTypeAssignableTo(sourceReturnType, targetReturnType); + } + return true; + } + function isImplementationCompatibleWithOverload(implementation, overload) { + var erasedSource = getErasedSignature(implementation); + var erasedTarget = getErasedSignature(overload); + // First see if the return types are compatible in either direction. + var sourceReturnType = getReturnTypeOfSignature(erasedSource); + var targetReturnType = getReturnTypeOfSignature(erasedTarget); + if (targetReturnType === voidType + || checkTypeRelatedTo(targetReturnType, sourceReturnType, assignableRelation, /*errorNode*/ undefined) + || checkTypeRelatedTo(sourceReturnType, targetReturnType, assignableRelation, /*errorNode*/ undefined)) { + return isSignatureAssignableTo(erasedSource, erasedTarget, /*ignoreReturnTypes*/ true); + } + return false; + } + function getNumNonRestParameters(signature) { + var numParams = signature.parameters.length; + return signature.hasRestParameter ? + numParams - 1 : + numParams; + } + function getNumParametersToCheckForSignatureRelatability(source, sourceNonRestParamCount, target, targetNonRestParamCount) { + if (source.hasRestParameter === target.hasRestParameter) { + if (source.hasRestParameter) { + // If both have rest parameters, get the max and add 1 to + // compensate for the rest parameter. + return Math.max(sourceNonRestParamCount, targetNonRestParamCount) + 1; + } + else { + return Math.min(sourceNonRestParamCount, targetNonRestParamCount); + } + } + else { + // Return the count for whichever signature doesn't have rest parameters. + return source.hasRestParameter ? + targetNonRestParamCount : + sourceNonRestParamCount; + } } /** * Checks if 'source' is related to 'target' (e.g.: is a assignable to). @@ -18370,6 +18866,11 @@ var ts; return -1 /* True */; if (source.flags & 128 /* Enum */ && target === numberType) return -1 /* True */; + if (source.flags & 128 /* Enum */ && target.flags & 128 /* Enum */) { + if (result = enumRelatedTo(source, target)) { + return result; + } + } if (source.flags & 256 /* StringLiteral */ && target === stringType) return -1 /* True */; if (relation === assignableRelation) { @@ -18378,6 +18879,36 @@ var ts; if (source === numberType && target.flags & 128 /* Enum */) return -1 /* True */; } + if (source.flags & 8 /* Boolean */ && target.flags & 8 /* Boolean */) { + if (source.flags & 134217728 /* PredicateType */ && target.flags & 134217728 /* PredicateType */) { + var sourcePredicate = source; + var targetPredicate = target; + if (sourcePredicate.predicate.kind !== targetPredicate.predicate.kind) { + if (reportErrors) { + reportError(ts.Diagnostics.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0 /* False */; + } + if (sourcePredicate.predicate.kind === 1 /* Identifier */) { + var sourceIdentifierPredicate = sourcePredicate.predicate; + var targetIdentifierPredicate = targetPredicate.predicate; + if (sourceIdentifierPredicate.parameterIndex !== targetIdentifierPredicate.parameterIndex) { + if (reportErrors) { + reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceIdentifierPredicate.parameterName, targetIdentifierPredicate.parameterName); + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return 0 /* False */; + } + } + var related = isRelatedTo(sourcePredicate.predicate.type, targetPredicate.predicate.type, reportErrors, headMessage); + if (related === 0 /* False */ && reportErrors) { + reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, typeToString(source), typeToString(target)); + } + return related; + } + return -1 /* True */; + } if (source.flags & 1048576 /* FreshObjectLiteral */) { if (hasExcessProperties(source, target, reportErrors)) { if (reportErrors) { @@ -18471,9 +19002,6 @@ var ts; } return objectTypeRelatedTo(source, source, target, /*reportErrors*/ false); } - if (source.flags & 512 /* TypeParameter */ && target.flags & 512 /* TypeParameter */) { - return typeParameterIdenticalTo(source, target); - } if (source.flags & 16384 /* Union */ && target.flags & 16384 /* Union */ || source.flags & 32768 /* Intersection */ && target.flags & 32768 /* Intersection */) { if (result = eachTypeRelatedToSomeType(source, target)) { @@ -18529,7 +19057,7 @@ var ts; var sourceTypes = source.types; for (var _i = 0, sourceTypes_1 = sourceTypes; _i < sourceTypes_1.length; _i++) { var sourceType = sourceTypes_1[_i]; - var related = typeRelatedToSomeType(sourceType, target, false); + var related = typeRelatedToSomeType(sourceType, target, /*reportErrors*/ false); if (!related) { return 0 /* False */; } @@ -18589,8 +19117,9 @@ var ts; if (sources.length !== targets.length && relation === identityRelation) { return 0 /* False */; } + var length = sources.length <= targets.length ? sources.length : targets.length; var result = -1 /* True */; - for (var i = 0; i < targets.length; i++) { + for (var i = 0; i < length; i++) { var related = isRelatedTo(sources[i], targets[i], reportErrors); if (!related) { return 0 /* False */; @@ -18599,31 +19128,24 @@ var ts; } return result; } - function typeParameterIdenticalTo(source, target) { - // covers case when both type parameters does not have constraint (both equal to noConstraintType) - if (source.constraint === target.constraint) { - return -1 /* True */; - } - if (source.constraint === noConstraintType || target.constraint === noConstraintType) { - return 0 /* 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, originalSource, target, reportErrors) { + function objectTypeRelatedTo(source, originalSource, target, reportErrors) { if (overflow) { return 0 /* False */; } - var id = relation !== identityRelation || apparentSource.id < target.id ? apparentSource.id + "," + target.id : target.id + "," + apparentSource.id; + var id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; var related = relation[id]; if (related !== undefined) { - // If we computed this relation already and it was failed and reported, or if we're not being asked to elaborate - // errors, we can use the cached value. Otherwise, recompute the relation - if (!elaborateErrors || (related === 3 /* FailedAndReported */)) { + if (elaborateErrors && related === 2 /* Failed */) { + // We are elaborating errors and the cached result is an unreported failure. Record the result as a reported + // failure and continue computing the relation such that errors get reported. + relation[id] = 3 /* FailedAndReported */; + } + else { return related === 1 /* Succeeded */ ? -1 /* True */ : 0 /* False */; } } @@ -18645,13 +19167,13 @@ var ts; maybeStack = []; expandingFlags = 0; } - sourceStack[depth] = apparentSource; + sourceStack[depth] = source; targetStack[depth] = target; maybeStack[depth] = {}; maybeStack[depth][id] = 1 /* Succeeded */; depth++; var saveExpandingFlags = expandingFlags; - if (!(expandingFlags & 1) && isDeeplyNestedGeneric(apparentSource, sourceStack, depth)) + if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack, depth)) expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack, depth)) expandingFlags |= 2; @@ -18660,15 +19182,15 @@ var ts; result = 1 /* Maybe */; } else { - result = propertiesRelatedTo(apparentSource, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 0 /* Call */, reportErrors); + result &= signaturesRelatedTo(source, target, 0 /* Call */, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, 1 /* Construct */, reportErrors); + result &= signaturesRelatedTo(source, target, 1 /* 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); } } } @@ -18800,75 +19322,51 @@ var ts; } var sourceSignatures = getSignaturesOfType(source, kind); var targetSignatures = getSignaturesOfType(target, kind); + if (kind === 1 /* Construct */ && sourceSignatures.length && targetSignatures.length && + isAbstractConstructorType(source) && !isAbstractConstructorType(target)) { + // An abstract constructor type is not assignable to a non-abstract constructor type + // as it would otherwise be possible to new an abstract class. Note that the assignablity + // check we perform for an extends clause excludes construct signatures from the target, + // so this check never proceeds. + if (reportErrors) { + reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); + } + return 0 /* False */; + } var result = -1 /* True */; var saveErrorInfo = errorInfo; - if (kind === 1 /* Construct */) { - // Only want to compare the construct signatures for abstractness guarantees. - // Because the "abstractness" of a class is the same across all construct signatures - // (internally we are checking the corresponding declaration), it is enough to perform - // the check and report an error once over all pairs of source and target construct signatures. - // - // sourceSig and targetSig are (possibly) undefined. - // - // Note that in an extends-clause, targetSignatures is stripped, so the check never proceeds. - var sourceSig = sourceSignatures[0]; - var targetSig = targetSignatures[0]; - result &= abstractSignatureRelatedTo(source, sourceSig, target, targetSig); - if (result !== -1 /* True */) { - return result; - } - } outer: for (var _i = 0, targetSignatures_1 = targetSignatures; _i < targetSignatures_1.length; _i++) { var t = targetSignatures_1[_i]; if (!t.hasStringLiterals || target.flags & 262144 /* FromSignature */) { - var localErrors = reportErrors; - var checkedAbstractAssignability = false; + // Only elaborate errors from the first failure + var shouldElaborateErrors = reportErrors; for (var _a = 0, sourceSignatures_1 = sourceSignatures; _a < sourceSignatures_1.length; _a++) { var s = sourceSignatures_1[_a]; if (!s.hasStringLiterals || source.flags & 262144 /* FromSignature */) { - var related = signatureRelatedTo(s, t, localErrors); + var related = signatureRelatedTo(s, t, shouldElaborateErrors); if (related) { result &= related; errorInfo = saveErrorInfo; continue outer; } - // Only report errors from the first failure - localErrors = false; + 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(ts.Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind)); + } return 0 /* False */; } } return result; - function abstractSignatureRelatedTo(source, sourceSig, target, targetSig) { - if (sourceSig && targetSig) { - var sourceDecl = source.symbol && getClassLikeDeclarationOfSymbol(source.symbol); - var targetDecl = target.symbol && getClassLikeDeclarationOfSymbol(target.symbol); - if (!sourceDecl) { - // If the source object isn't itself a class declaration, it can be freely assigned, regardless - // of whether the constructed object is abstract or not. - return -1 /* True */; - } - var sourceErasedSignature = getErasedSignature(sourceSig); - var targetErasedSignature = getErasedSignature(targetSig); - var sourceReturnType = sourceErasedSignature && getReturnTypeOfSignature(sourceErasedSignature); - var targetReturnType = targetErasedSignature && getReturnTypeOfSignature(targetErasedSignature); - var sourceReturnDecl = sourceReturnType && sourceReturnType.symbol && getClassLikeDeclarationOfSymbol(sourceReturnType.symbol); - var targetReturnDecl = targetReturnType && targetReturnType.symbol && getClassLikeDeclarationOfSymbol(targetReturnType.symbol); - var sourceIsAbstract = sourceReturnDecl && sourceReturnDecl.flags & 128 /* Abstract */; - var targetIsAbstract = targetReturnDecl && targetReturnDecl.flags & 128 /* Abstract */; - if (sourceIsAbstract && !(targetIsAbstract && targetDecl)) { - // if target isn't a class-declaration type, then it can be new'd, so we forbid the assignment. - if (reportErrors) { - reportError(ts.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type); - } - return 0 /* False */; - } - } - return -1 /* True */; - } } + /** + * See signatureAssignableTo, signatureAssignableTo + */ function signatureRelatedTo(source, target, reportErrors) { + // TODO (drosen): De-duplicate code between related functions. if (source === target) { return -1 /* True */; } @@ -18905,7 +19403,7 @@ var ts; var saveErrorInfo = errorInfo; var related = isRelatedTo(s, t, reportErrors); if (!related) { - related = isRelatedTo(t, s, false); + related = isRelatedTo(t, s, /*reportErrors*/ false); if (!related) { if (reportErrors) { reportError(ts.Diagnostics.Types_of_parameters_0_and_1_are_incompatible, source.parameters[i < sourceMax ? i : sourceMax].name, target.parameters[i < targetMax ? i : targetMax].name); @@ -18916,37 +19414,20 @@ var ts; } result &= related; } - if (source.typePredicate && target.typePredicate) { - var hasDifferentParameterIndex = source.typePredicate.parameterIndex !== target.typePredicate.parameterIndex; - var hasDifferentTypes; - if (hasDifferentParameterIndex || - (hasDifferentTypes = !isTypeIdenticalTo(source.typePredicate.type, target.typePredicate.type))) { + var targetReturnType = getReturnTypeOfSignature(target); + if (targetReturnType === voidType) { + return result; + } + var sourceReturnType = getReturnTypeOfSignature(source); + // The following block preserves behavior forbidding boolean returning functions from being assignable to type guard returning functions + if (targetReturnType.flags & 134217728 /* PredicateType */ && targetReturnType.predicate.kind === 1 /* Identifier */) { + if (!(sourceReturnType.flags & 134217728 /* PredicateType */)) { if (reportErrors) { - var sourceParamText = source.typePredicate.parameterName; - var targetParamText = target.typePredicate.parameterName; - var sourceTypeText = typeToString(source.typePredicate.type); - var targetTypeText = typeToString(target.typePredicate.type); - if (hasDifferentParameterIndex) { - reportError(ts.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, sourceParamText, targetParamText); - } - else if (hasDifferentTypes) { - reportError(ts.Diagnostics.Type_0_is_not_assignable_to_type_1, sourceTypeText, targetTypeText); - } - reportError(ts.Diagnostics.Type_predicate_0_is_not_assignable_to_1, sourceParamText + " is " + sourceTypeText, targetParamText + " is " + targetTypeText); + reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); } return 0 /* False */; } } - else if (!source.typePredicate && target.typePredicate) { - if (reportErrors) { - reportError(ts.Diagnostics.Signature_0_must_have_a_type_predicate, signatureToString(source)); - } - return 0 /* False */; - } - var targetReturnType = getReturnTypeOfSignature(target); - if (targetReturnType === voidType) - return result; - var sourceReturnType = getReturnTypeOfSignature(source); return result & isRelatedTo(sourceReturnType, targetReturnType, reportErrors); } function signaturesIdenticalTo(source, target, kind) { @@ -18956,8 +19437,8 @@ var ts; return 0 /* False */; } var result = -1 /* True */; - for (var i = 0, len = sourceSignatures.length; i < len; ++i) { - var related = compareSignatures(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); + for (var i = 0, len = sourceSignatures.length; i < len; i++) { + var related = compareSignaturesIdentical(sourceSignatures[i], targetSignatures[i], /*partialMatch*/ false, /*ignoreReturnTypes*/ false, isRelatedTo); if (!related) { return 0 /* False */; } @@ -19016,7 +19497,7 @@ var ts; var related; if (sourceStringType && sourceNumberType) { // If we know for sure we're testing both string and numeric index types then only report errors from the second one - related = isRelatedTo(sourceStringType, targetType, false) || isRelatedTo(sourceNumberType, targetType, reportErrors); + related = isRelatedTo(sourceStringType, targetType, /*reportErrors*/ false) || isRelatedTo(sourceNumberType, targetType, reportErrors); } else { related = isRelatedTo(sourceStringType || sourceNumberType, targetType, reportErrors); @@ -19042,6 +19523,38 @@ var ts; } return 0 /* False */; } + function enumRelatedTo(source, target) { + if (source.symbol.name !== target.symbol.name || + source.symbol.flags & 128 /* ConstEnum */ || + target.symbol.flags & 128 /* ConstEnum */) { + return 0 /* False */; + } + var targetEnumType = getTypeOfSymbol(target.symbol); + for (var _i = 0, _a = getPropertiesOfType(getTypeOfSymbol(source.symbol)); _i < _a.length; _i++) { + var property = _a[_i]; + if (property.flags & 8 /* EnumMember */) { + var targetProperty = getPropertyOfType(targetEnumType, property.name); + if (!targetProperty || !(targetProperty.flags & 8 /* EnumMember */)) { + reportError(ts.Diagnostics.Property_0_is_missing_in_type_1, property.name, typeToString(target, /*enclosingDeclaration*/ undefined, 128 /* UseFullyQualifiedType */)); + return 0 /* False */; + } + } + } + return -1 /* True */; + } + } + // Return true if the given type is the constructor type for an abstract class + function isAbstractConstructorType(type) { + if (type.flags & 65536 /* Anonymous */) { + var symbol = type.symbol; + if (symbol && symbol.flags & 32 /* Class */) { + var declaration = getClassLikeDeclarationOfSymbol(symbol); + if (declaration && declaration.flags & 128 /* Abstract */) { + return true; + } + } + } + return false; } // Return true if the given type is part of a deeply nested chain of generic instantiations. We consider this to be the case // when structural type comparisons have been started for 10 or more instantiations of the same generic type. It is possible, @@ -19065,7 +19578,7 @@ var ts; return false; } function isPropertyIdenticalTo(sourceProp, targetProp) { - return compareProperties(sourceProp, targetProp, compareTypes) !== 0 /* False */; + return compareProperties(sourceProp, targetProp, compareTypesIdentical) !== 0 /* False */; } function compareProperties(sourceProp, targetProp, compareTypes) { // Two members are considered identical when @@ -19108,33 +19621,30 @@ var ts; } return false; } - function compareSignatures(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + /** + * See signatureRelatedTo, compareSignaturesIdentical + */ + function compareSignaturesIdentical(source, target, partialMatch, ignoreReturnTypes, compareTypes) { + // TODO (drosen): De-duplicate code between related functions. if (source === target) { return -1 /* True */; } if (!(isMatchingSignature(source, target, partialMatch))) { return 0 /* False */; } - var result = -1 /* True */; - if (source.typeParameters && target.typeParameters) { - if (source.typeParameters.length !== target.typeParameters.length) { - return 0 /* False */; - } - for (var i = 0, len = source.typeParameters.length; i < len; ++i) { - var related = compareTypes(source.typeParameters[i], target.typeParameters[i]); - if (!related) { - return 0 /* 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 0 /* 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); + var result = -1 /* True */; var targetLen = target.parameters.length; for (var i = 0; i < targetLen; i++) { var s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); @@ -19262,10 +19772,13 @@ var ts; return createAnonymousType(type.symbol, members, emptyArray, emptyArray, stringIndexType, numberIndexType); } function getWidenedType(type) { - if (type.flags & 6291456 /* RequiresWidening */) { + if (type.flags & 140509184 /* RequiresWidening */) { if (type.flags & (32 /* Undefined */ | 64 /* Null */)) { return anyType; } + if (type.flags & 134217728 /* PredicateType */) { + return booleanType; + } if (type.flags & 524288 /* ObjectLiteral */) { return getWidenedTypeOfObjectLiteral(type); } @@ -19340,13 +19853,13 @@ var ts; ts.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type : ts.Diagnostics.Parameter_0_implicitly_has_an_1_type; break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: if (!declaration.name) { error(declaration, ts.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type, typeAsString); return; @@ -19393,13 +19906,7 @@ var ts; } } function createInferenceContext(typeParameters, inferUnionTypes) { - var inferences = []; - for (var _i = 0, typeParameters_1 = typeParameters; _i < typeParameters_1.length; _i++) { - var unused = typeParameters_1[_i]; - inferences.push({ - primary: undefined, secondary: undefined, isFixed: false - }); - } + var inferences = ts.map(typeParameters, createTypeInferencesObject); return { typeParameters: typeParameters, inferUnionTypes: inferUnionTypes, @@ -19407,6 +19914,13 @@ var ts; inferredTypes: new Array(typeParameters.length) }; } + function createTypeInferencesObject() { + return { + primary: undefined, + secondary: undefined, + isFixed: false + }; + } function inferTypes(context, source, target) { var sourceStack; var targetStack; @@ -19422,6 +19936,29 @@ var ts; return false; } function inferFromTypes(source, target) { + if (source.flags & 16384 /* Union */ && target.flags & 16384 /* Union */ || + source.flags & 32768 /* Intersection */ && target.flags & 32768 /* Intersection */) { + // Source and target are both unions or both intersections. First, find each + // target constituent type that has an identically matching source constituent + // type, and for each such target constituent type infer from the type to itself. + // When inferring from a type to itself we effectively find all type parameter + // occurrences within that type and infer themselves as their type arguments. + var matchingTypes; + for (var _i = 0, _a = target.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (typeIdenticalToSomeType(t, source.types)) { + (matchingTypes || (matchingTypes = [])).push(t); + inferFromTypes(t, t); + } + } + // Next, to improve the quality of inferences, reduce the source and target types by + // removing the identically matched constituents. For example, when inferring from + // 'string | string[]' to 'string | T' we reduce the types to 'string[]' and 'T'. + if (matchingTypes) { + source = removeTypesFromUnionOrIntersection(source, matchingTypes); + target = removeTypesFromUnionOrIntersection(target, matchingTypes); + } + } if (target.flags & 512 /* TypeParameter */) { // If target is a type parameter, make an inference, unless the source type contains // the anyFunctionType (the wildcard type that's used to avoid contextually typing functions). @@ -19463,6 +20000,11 @@ var ts; inferFromTypes(sourceTypes[i], targetTypes[i]); } } + else if (source.flags & 134217728 /* PredicateType */ && target.flags & 134217728 /* PredicateType */) { + if (source.predicate.kind === target.predicate.kind) { + inferFromTypes(source.predicate.type, target.predicate.type); + } + } else if (source.flags & 8192 /* Tuple */ && target.flags & 8192 /* Tuple */ && source.elementTypes.length === target.elementTypes.length) { // If source and target are tuples of the same size, infer from element types var sourceTypes = source.elementTypes; @@ -19476,8 +20018,8 @@ var ts; var typeParameterCount = 0; var typeParameter; // First infer to each type in union or intersection that isn't a type parameter - for (var _i = 0, targetTypes_2 = targetTypes; _i < targetTypes_2.length; _i++) { - var t = targetTypes_2[_i]; + for (var _b = 0, targetTypes_2 = targetTypes; _b < targetTypes_2.length; _b++) { + var t = targetTypes_2[_b]; if (t.flags & 512 /* TypeParameter */ && ts.contains(context.typeParameters, t)) { typeParameter = t; typeParameterCount++; @@ -19499,16 +20041,18 @@ var ts; else if (source.flags & 49152 /* UnionOrIntersection */) { // Source is a union or intersection type, infer from each consituent type var sourceTypes = source.types; - for (var _a = 0, sourceTypes_3 = sourceTypes; _a < sourceTypes_3.length; _a++) { - var sourceType = sourceTypes_3[_a]; + for (var _c = 0, sourceTypes_3 = sourceTypes; _c < sourceTypes_3.length; _c++) { + var sourceType = sourceTypes_3[_c]; inferFromTypes(sourceType, target); } } else { source = getApparentType(source); - if (source.flags & 80896 /* ObjectType */ && (target.flags & (4096 /* Reference */ | 8192 /* Tuple */) || - (target.flags & 65536 /* Anonymous */) && target.symbol && target.symbol.flags & (8192 /* Method */ | 2048 /* TypeLiteral */ | 32 /* Class */))) { - // If source is an object type, and target is a type reference, a tuple type, the type of a method, or a type literal, infer from members + if (source.flags & 80896 /* ObjectType */ && (target.flags & 4096 /* Reference */ && target.typeArguments || + target.flags & 8192 /* Tuple */ || + target.flags & 65536 /* Anonymous */ && target.symbol && target.symbol.flags & (8192 /* Method */ | 2048 /* TypeLiteral */ | 32 /* Class */))) { + // If source is an object type, and target is a type reference with type arguments, a tuple type, + // the type of a method, or a type literal, infer from members if (isInProcess(source, target)) { return; } @@ -19554,17 +20098,7 @@ var ts; } function inferFromSignature(source, target) { 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); - } - } - else { - inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); - } + inferFromTypes(getReturnTypeOfSignature(source), getReturnTypeOfSignature(target)); } function inferFromIndexTypes(source, target, sourceKind, targetKind) { var targetIndexType = getIndexTypeOfType(target, targetKind); @@ -19576,6 +20110,29 @@ var ts; } } } + function typeIdenticalToSomeType(type, types) { + for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { + var t = types_7[_i]; + if (isTypeIdenticalTo(t, type)) { + return true; + } + } + return false; + } + /** + * Return a new union or intersection type computed by removing a given set of types + * from a given union or intersection type. + */ + function removeTypesFromUnionOrIntersection(type, typesToRemove) { + var reducedTypes = []; + for (var _i = 0, _a = type.types; _i < _a.length; _i++) { + var t = _a[_i]; + if (!typeIdenticalToSomeType(t, typesToRemove)) { + reducedTypes.push(t); + } + } + return type.flags & 16384 /* Union */ ? getUnionType(reducedTypes, /*noSubtypeReduction*/ true) : getIntersectionType(reducedTypes); + } function getInferenceCandidates(context, index) { var inferences = context.inferences[index]; return inferences.primary || inferences.secondary || emptyArray; @@ -19599,10 +20156,16 @@ var ts; inferredType = emptyObjectType; inferenceSucceeded = true; } + context.inferredTypes[index] = inferredType; // Only do the constraint check if inference succeeded (to prevent cascading errors) if (inferenceSucceeded) { var constraint = getConstraintOfTypeParameter(context.typeParameters[index]); - inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; + if (constraint) { + var instantiatedConstraint = instantiateType(constraint, getInferenceMapper(context)); + if (!isTypeAssignableTo(inferredType, getTypeWithThisArgument(instantiatedConstraint, inferredType))) { + context.inferredTypes[index] = inferredType = instantiatedConstraint; + } + } } 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). @@ -19610,7 +20173,6 @@ var 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; } @@ -19620,9 +20182,6 @@ var ts; } return context.inferredTypes; } - function hasAncestor(node, kind) { - return ts.getAncestor(node, kind) !== undefined; - } // EXPRESSION TYPE CHECKING function getResolvedSymbol(node) { var links = getNodeLinks(node); @@ -19649,26 +20208,6 @@ var ts; } ts.Debug.fail("should not get here"); } - // For a union type, remove all constituent types that are of the given type kind (when isOfTypeKind is true) - // or not of the given type kind (when isOfTypeKind is false) - function removeTypesFromUnionType(type, typeKind, isOfTypeKind, allowEmptyUnionResult) { - if (type.flags & 16384 /* Union */) { - var types = type.types; - if (ts.forEach(types, function (t) { return !!(t.flags & typeKind) === isOfTypeKind; })) { - // Above we checked if we have anything to remove, now use the opposite test to do the removal - var narrowedType = getUnionType(ts.filter(types, function (t) { return !(t.flags & typeKind) === isOfTypeKind; })); - if (allowEmptyUnionResult || narrowedType !== emptyObjectType) { - return narrowedType; - } - } - } - else if (allowEmptyUnionResult && !!(type.flags & typeKind) === isOfTypeKind) { - // Use getUnionType(emptyArray) instead of emptyObjectType in case the way empty union types - // are represented ever changes. - return getUnionType(emptyArray); - } - return type; - } function hasInitializer(node) { return !!(node.initializer || ts.isBindingPattern(node.parent) && hasInitializer(node.parent.parent)); } @@ -19687,10 +20226,7 @@ var ts; return links.assignmentChecks[symbol.id] = isAssignedIn(node); function isAssignedInBinaryExpression(node) { if (node.operatorToken.kind >= 56 /* FirstAssignment */ && node.operatorToken.kind <= 68 /* LastAssignment */) { - var n = node.left; - while (n.kind === 172 /* ParenthesizedExpression */) { - n = n.expression; - } + var n = skipParenthesizedNodes(node.left); if (n.kind === 69 /* Identifier */ && getResolvedSymbol(n) === symbol) { return true; } @@ -19705,55 +20241,55 @@ var ts; } function isAssignedIn(node) { switch (node.kind) { - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return isAssignedInBinaryExpression(node); - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: return isAssignedInVariableDeclaration(node); - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: - case 164 /* ArrayLiteralExpression */: - case 165 /* ObjectLiteralExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: - case 172 /* ParenthesizedExpression */: - case 179 /* PrefixUnaryExpression */: - case 175 /* DeleteExpression */: - case 178 /* AwaitExpression */: - case 176 /* TypeOfExpression */: - case 177 /* VoidExpression */: - case 180 /* PostfixUnaryExpression */: - case 184 /* YieldExpression */: - case 182 /* ConditionalExpression */: - case 185 /* SpreadElementExpression */: - case 192 /* Block */: - case 193 /* VariableStatement */: - case 195 /* ExpressionStatement */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 204 /* ReturnStatement */: - case 205 /* WithStatement */: - case 206 /* SwitchStatement */: - case 241 /* CaseClause */: - case 242 /* DefaultClause */: - case 207 /* LabeledStatement */: - case 208 /* ThrowStatement */: - case 209 /* TryStatement */: - case 244 /* CatchClause */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 238 /* JsxAttribute */: - case 239 /* JsxSpreadAttribute */: - case 235 /* JsxOpeningElement */: - case 240 /* JsxExpression */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: + case 166 /* ArrayLiteralExpression */: + case 167 /* ObjectLiteralExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: + case 174 /* ParenthesizedExpression */: + case 181 /* PrefixUnaryExpression */: + case 177 /* DeleteExpression */: + case 180 /* AwaitExpression */: + case 178 /* TypeOfExpression */: + case 179 /* VoidExpression */: + case 182 /* PostfixUnaryExpression */: + case 186 /* YieldExpression */: + case 184 /* ConditionalExpression */: + case 187 /* SpreadElementExpression */: + case 194 /* Block */: + case 195 /* VariableStatement */: + case 197 /* ExpressionStatement */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 206 /* ReturnStatement */: + case 207 /* WithStatement */: + case 208 /* SwitchStatement */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: + case 209 /* LabeledStatement */: + case 210 /* ThrowStatement */: + case 211 /* TryStatement */: + case 246 /* CatchClause */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: + case 240 /* JsxAttribute */: + case 241 /* JsxSpreadAttribute */: + case 237 /* JsxOpeningElement */: + case 242 /* JsxExpression */: return ts.forEachChild(node, isAssignedIn); } return false; @@ -19765,59 +20301,73 @@ var ts; // Only narrow when symbol is variable of type any or an object, union, or type parameter type if (node && symbol.flags & 3 /* Variable */) { if (isTypeAny(type) || type.flags & (80896 /* ObjectType */ | 16384 /* Union */ | 512 /* TypeParameter */)) { + var declaration = ts.getDeclarationOfKind(symbol, 213 /* VariableDeclaration */); + var top_1 = declaration && getDeclarationContainer(declaration); + var originalType = type; + var nodeStack = []; loop: while (node.parent) { var child = node; node = node.parent; - var narrowedType = type; switch (node.kind) { - case 196 /* IfStatement */: - // In a branch of an if statement, narrow based on controlling expression - if (child !== node.expression) { - narrowedType = narrowType(type, node.expression, /*assumeTrue*/ child === node.thenStatement); - } + case 198 /* IfStatement */: + case 184 /* ConditionalExpression */: + case 183 /* BinaryExpression */: + nodeStack.push({ node: node, child: child }); break; - case 182 /* ConditionalExpression */: - // In a branch of a conditional expression, narrow based on controlling condition - if (child !== node.condition) { - narrowedType = narrowType(type, node.condition, /*assumeTrue*/ child === node.whenTrue); - } - break; - case 181 /* BinaryExpression */: - // In the right operand of an && or ||, narrow based on left operand - if (child === node.right) { - if (node.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { - narrowedType = narrowType(type, node.left, /*assumeTrue*/ true); - } - else if (node.operatorToken.kind === 52 /* BarBarToken */) { - narrowedType = narrowType(type, node.left, /*assumeTrue*/ false); - } - } - break; - case 248 /* SourceFile */: - case 218 /* ModuleDeclaration */: - case 213 /* FunctionDeclaration */: - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - case 144 /* Constructor */: - // Stop at the first containing function or module declaration + case 250 /* SourceFile */: + case 220 /* ModuleDeclaration */: + // Stop at the first containing file or module declaration break loop; } - // Use narrowed type if construct contains no assignments to variable - if (narrowedType !== type) { - if (isVariableAssignedWithin(symbol, node)) { - break; - } - type = narrowedType; + if (node === top_1) { + break; } } + var nodes; + while (nodes = nodeStack.pop()) { + var node_1 = nodes.node, child = nodes.child; + switch (node_1.kind) { + case 198 /* IfStatement */: + // In a branch of an if statement, narrow based on controlling expression + if (child !== node_1.expression) { + type = narrowType(type, node_1.expression, /*assumeTrue*/ child === node_1.thenStatement); + } + break; + case 184 /* ConditionalExpression */: + // In a branch of a conditional expression, narrow based on controlling condition + if (child !== node_1.condition) { + type = narrowType(type, node_1.condition, /*assumeTrue*/ child === node_1.whenTrue); + } + break; + case 183 /* BinaryExpression */: + // In the right operand of an && or ||, narrow based on left operand + if (child === node_1.right) { + if (node_1.operatorToken.kind === 51 /* AmpersandAmpersandToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ true); + } + else if (node_1.operatorToken.kind === 52 /* BarBarToken */) { + type = narrowType(type, node_1.left, /*assumeTrue*/ false); + } + } + break; + default: + ts.Debug.fail("Unreachable!"); + } + // Use original type if construct contains assignments to variable + if (type !== originalType && isVariableAssignedWithin(symbol, node_1)) { + type = originalType; + } + } + // Preserve old top-level behavior - if the branch is really an empty set, revert to prior type + if (type === emptyUnionType) { + type = originalType; + } } } return type; function narrowTypeByEquality(type, expr, assumeTrue) { // Check that we have 'typeof ' on the left and string literal on the right - if (expr.left.kind !== 176 /* TypeOfExpression */ || expr.right.kind !== 9 /* StringLiteral */) { + if (expr.left.kind !== 178 /* TypeOfExpression */ || expr.right.kind !== 9 /* StringLiteral */) { return type; } var left = expr.left; @@ -19825,31 +20375,34 @@ var ts; if (left.expression.kind !== 69 /* Identifier */ || getResolvedSymbol(left.expression) !== symbol) { return type; } - var typeInfo = primitiveTypeInfo[right.text]; if (expr.operatorToken.kind === 33 /* ExclamationEqualsEqualsToken */) { assumeTrue = !assumeTrue; } - if (assumeTrue) { - // Assumed result is true. If check was not for a primitive type, remove all primitive types - if (!typeInfo) { - return removeTypesFromUnionType(type, /*typeKind*/ 258 /* StringLike */ | 132 /* NumberLike */ | 8 /* Boolean */ | 16777216 /* ESSymbol */, - /*isOfTypeKind*/ true, /*allowEmptyUnionResult*/ false); - } - // Check was for a primitive type, return that primitive type if it is a subtype - if (isTypeSubtypeOf(typeInfo.type, type)) { - return typeInfo.type; - } - // Otherwise, remove all types that aren't of the primitive type kind. This can happen when the type is - // union of enum types and other types. - return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ false, /*allowEmptyUnionResult*/ false); + var typeInfo = primitiveTypeInfo[right.text]; + // Don't narrow `undefined` + if (typeInfo && typeInfo.type === undefinedType) { + return type; + } + // If the type to be narrowed is any and we're checking a primitive with assumeTrue=true, return the primitive + if (!!(type.flags & 1 /* Any */) && typeInfo && assumeTrue) { + return typeInfo.type; + } + var flags; + if (typeInfo) { + flags = typeInfo.flags; } else { - // Assumed result is false. If check was for a primitive type, remove that primitive type - if (typeInfo) { - return removeTypesFromUnionType(type, /*typeKind*/ typeInfo.flags, /*isOfTypeKind*/ true, /*allowEmptyUnionResult*/ false); - } - // Otherwise we don't have enough information to do anything. - return type; + assumeTrue = !assumeTrue; + flags = 132 /* NumberLike */ | 258 /* StringLike */ | 16777216 /* ESSymbol */ | 8 /* Boolean */; + } + // At this point we can bail if it's not a union + if (!(type.flags & 16384 /* Union */)) { + // If the active non-union type would be removed from a union by this type guard, return an empty union + return filterUnion(type) ? type : emptyUnionType; + } + return getUnionType(ts.filter(type.types, filterUnion), /*noSubtypeReduction*/ true); + function filterUnion(type) { + return assumeTrue === !!(type.flags & flags); } } function narrowTypeByAnd(type, expr, assumeTrue) { @@ -19862,7 +20415,7 @@ var ts; // and the second operand was false. We narrow with those assumptions and union the two resulting types. return getUnionType([ narrowType(type, expr.left, /*assumeTrue*/ false), - narrowType(narrowType(type, expr.left, /*assumeTrue*/ true), expr.right, /*assumeTrue*/ false) + narrowType(type, expr.right, /*assumeTrue*/ false) ]); } } @@ -19872,7 +20425,7 @@ var ts; // and the second operand was true. We narrow with those assumptions and union the two resulting types. return getUnionType([ narrowType(type, expr.left, /*assumeTrue*/ true), - narrowType(narrowType(type, expr.left, /*assumeTrue*/ false), expr.right, /*assumeTrue*/ true) + narrowType(type, expr.right, /*assumeTrue*/ true) ]); } else { @@ -19913,17 +20466,17 @@ var ts; } } if (targetType) { - if (!assumeTrue) { - if (type.flags & 16384 /* Union */) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, targetType); })); - } - return type; - } - return getNarrowedType(type, targetType); + return getNarrowedType(type, targetType, assumeTrue); } return type; } - function getNarrowedType(originalType, narrowedTypeCandidate) { + function getNarrowedType(originalType, narrowedTypeCandidate, assumeTrue) { + if (!assumeTrue) { + if (originalType.flags & 16384 /* Union */) { + return getUnionType(ts.filter(originalType.types, function (t) { return !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 & 16384 /* Union */) { @@ -19943,28 +20496,62 @@ var ts; return type; } var signature = getResolvedSignature(expr); - if (signature.typePredicate && - expr.arguments[signature.typePredicate.parameterIndex] && - getSymbolAtLocation(expr.arguments[signature.typePredicate.parameterIndex]) === symbol) { - if (!assumeTrue) { - if (type.flags & 16384 /* Union */) { - return getUnionType(ts.filter(type.types, function (t) { return !isTypeSubtypeOf(t, signature.typePredicate.type); })); - } - return type; + var predicateType = getReturnTypeOfSignature(signature); + if (!predicateType || !(predicateType.flags & 134217728 /* PredicateType */)) { + return type; + } + var predicate = predicateType.predicate; + if (ts.isIdentifierTypePredicate(predicate)) { + var callExpression = expr; + if (callExpression.arguments[predicate.parameterIndex] && + getSymbolAtTypePredicatePosition(callExpression.arguments[predicate.parameterIndex]) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); } - return getNarrowedType(type, signature.typePredicate.type); + } + else { + var expression = skipParenthesizedNodes(expr.expression); + return narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue); } return type; } + function narrowTypeByTypePredicateMember(type, expr, assumeTrue) { + if (type.flags & 1 /* Any */) { + return type; + } + var memberType = getTypeOfExpression(expr); + if (!(memberType.flags & 134217728 /* PredicateType */)) { + return type; + } + return narrowTypeByThisTypePredicate(type, memberType.predicate, expr, assumeTrue); + } + function narrowTypeByThisTypePredicate(type, predicate, expression, assumeTrue) { + if (expression.kind === 169 /* ElementAccessExpression */ || expression.kind === 168 /* PropertyAccessExpression */) { + var accessExpression = expression; + var possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); + if (possibleIdentifier.kind === 69 /* Identifier */ && getSymbolAtTypePredicatePosition(possibleIdentifier) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + } + return type; + } + function getSymbolAtTypePredicatePosition(expr) { + expr = skipParenthesizedNodes(expr); + switch (expr.kind) { + case 69 /* Identifier */: + case 168 /* PropertyAccessExpression */: + case 135 /* QualifiedName */: + return getSymbolOfEntityNameOrPropertyAccessExpression(expr); + } + } // Narrow the given type based on the given expression having the assumed boolean value. The returned type // will be a subtype or the same type as the argument. function narrowType(type, expr, assumeTrue) { switch (expr.kind) { - case 168 /* CallExpression */: + case 170 /* CallExpression */: return narrowTypeByTypePredicate(type, expr, assumeTrue); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return narrowType(type, expr.expression, assumeTrue); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: var operator = expr.operatorToken.kind; if (operator === 32 /* EqualsEqualsEqualsToken */ || operator === 33 /* ExclamationEqualsEqualsToken */) { return narrowTypeByEquality(type, expr, assumeTrue); @@ -19979,15 +20566,24 @@ var ts; return narrowTypeByInstanceof(type, expr, assumeTrue); } break; - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: if (expr.operator === 49 /* ExclamationToken */) { return narrowType(type, expr.operand, !assumeTrue); } break; + case 169 /* ElementAccessExpression */: + case 168 /* PropertyAccessExpression */: + return narrowTypeByTypePredicateMember(type, expr, assumeTrue); } return type; } } + function skipParenthesizedNodes(expression) { + while (expression.kind === 174 /* ParenthesizedExpression */) { + expression = expression.expression; + } + return expression; + } function checkIdentifier(node) { var symbol = getResolvedSymbol(node); // As noted in ECMAScript 6 language spec, arrow functions never have an arguments objects. @@ -19998,7 +20594,7 @@ var ts; // can explicitly bound arguments objects if (symbol === argumentsSymbol) { var container = ts.getContainingFunction(node); - if (container.kind === 174 /* ArrowFunction */) { + if (container.kind === 176 /* ArrowFunction */) { if (languageVersion < 2 /* ES6 */) { error(node, ts.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression); } @@ -20029,7 +20625,7 @@ var ts; function checkBlockScopedBindingCapturedInLoop(node, symbol) { if (languageVersion >= 2 /* ES6 */ || (symbol.flags & (2 /* BlockScopedVariable */ | 32 /* Class */)) === 0 || - symbol.valueDeclaration.parent.kind === 244 /* CatchClause */) { + symbol.valueDeclaration.parent.kind === 246 /* CatchClause */) { return; } // 1. walk from the use site up to the declaration and check @@ -20045,12 +20641,12 @@ var ts; // nesting structure: // (variable declaration or binding element) -> variable declaration list -> container container = symbol.valueDeclaration; - while (container.kind !== 212 /* VariableDeclarationList */) { + while (container.kind !== 214 /* VariableDeclarationList */) { container = container.parent; } // get the parent of variable declaration list container = container.parent; - if (container.kind === 193 /* VariableStatement */) { + if (container.kind === 195 /* VariableStatement */) { // if parent is variable statement - get its parent container = container.parent; } @@ -20085,17 +20681,17 @@ var ts; var container = ts.getThisContainer(node, /* includeArrowFunctions */ true); var needToCaptureLexicalThis = false; // Now skip arrow functions to get the "real" owner of 'this'. - if (container.kind === 174 /* ArrowFunction */) { + if (container.kind === 176 /* ArrowFunction */) { container = ts.getThisContainer(container, /* includeArrowFunctions */ false); // When targeting es6, arrow function lexically bind "this" so we do not need to do the work of binding "this" in emitted code needToCaptureLexicalThis = (languageVersion < 2 /* ES6 */); } switch (container.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: error(node, ts.Diagnostics.this_cannot_be_referenced_in_current_location); // do not return here so in case if lexical this is captured - it will be reflected in flags on NodeLinks break; @@ -20121,6 +20717,21 @@ var ts; var symbol = getSymbolOfNode(container.parent); return container.flags & 64 /* Static */ ? getTypeOfSymbol(symbol) : getDeclaredTypeOfSymbol(symbol).thisType; } + // If this is a function in a JS file, it might be a class method. Check if it's the RHS + // of a x.prototype.y = function [name]() { .... } + if (ts.isInJavaScriptFile(node) && container.kind === 175 /* FunctionExpression */) { + if (ts.getSpecialPropertyAssignmentKind(container.parent) === 3 /* PrototypeProperty */) { + // Get the 'x' of 'x.prototype.y = f' (here, 'f' is 'container') + var className = container.parent // x.protoype.y = f + .left // x.prototype.y + .expression // x.prototype + .expression; // x + var classSymbol = checkExpression(className).symbol; + if (classSymbol && classSymbol.members && (classSymbol.flags & 16 /* Function */)) { + return getInferredClassType(classSymbol); + } + } + } return anyType; } function isInConstructorArgumentInitializer(node, constructorDecl) { @@ -20132,55 +20743,75 @@ var ts; return false; } function checkSuperExpression(node) { - var isCallExpression = node.parent.kind === 168 /* CallExpression */ && node.parent.expression === node; - var classDeclaration = ts.getContainingClass(node); - var classType = classDeclaration && getDeclaredTypeOfSymbol(getSymbolOfNode(classDeclaration)); - var baseClassType = classType && getBaseTypes(classType)[0]; - var container = ts.getSuperContainer(node, /*includeFunctions*/ true); + var isCallExpression = node.parent.kind === 170 /* CallExpression */ && node.parent.expression === node; + var container = ts.getSuperContainer(node, /*stopOnFunctions*/ true); var needToCaptureLexicalThis = false; if (!isCallExpression) { // adjust the container reference in case if super is used inside arrow functions with arbitrary deep nesting - while (container && container.kind === 174 /* ArrowFunction */) { - container = ts.getSuperContainer(container, /*includeFunctions*/ true); + while (container && container.kind === 176 /* ArrowFunction */) { + container = ts.getSuperContainer(container, /*stopOnFunctions*/ true); needToCaptureLexicalThis = languageVersion < 2 /* ES6 */; } } var canUseSuperExpression = isLegalUsageOfSuperExpression(container); var nodeCheckFlag = 0; - // always set NodeCheckFlags for 'super' expression node - if (canUseSuperExpression) { - if ((container.flags & 64 /* Static */) || isCallExpression) { - nodeCheckFlag = 512 /* SuperStatic */; - } - else { - nodeCheckFlag = 256 /* SuperInstance */; - } - getNodeLinks(node).flags |= nodeCheckFlag; - if (needToCaptureLexicalThis) { - // call expressions are allowed only in constructors so they should always capture correct 'this' - // super property access expressions can also appear in arrow functions - - // in this case they should also use correct lexical this - captureLexicalThis(node.parent, container); - } - } - if (!baseClassType) { - if (!classDeclaration || !ts.getClassExtendsHeritageClauseElement(classDeclaration)) { - error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); - } - return unknownType; - } if (!canUseSuperExpression) { - if (container && container.kind === 136 /* ComputedPropertyName */) { + // issue more specific error if super is used in computed property name + // class A { foo() { return "1" }} + // class B { + // [super.foo()]() {} + // } + var current = node; + while (current && current !== container && current.kind !== 136 /* ComputedPropertyName */) { + current = current.parent; + } + if (current && current.kind === 136 /* ComputedPropertyName */) { error(node, ts.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name); } else if (isCallExpression) { error(node, ts.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors); } + else if (!container || !container.parent || !(ts.isClassLike(container.parent) || container.parent.kind === 167 /* ObjectLiteralExpression */)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions); + } else { error(node, ts.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class); } return unknownType; } + if ((container.flags & 64 /* Static */) || isCallExpression) { + nodeCheckFlag = 512 /* SuperStatic */; + } + else { + nodeCheckFlag = 256 /* SuperInstance */; + } + getNodeLinks(node).flags |= nodeCheckFlag; + if (needToCaptureLexicalThis) { + // call expressions are allowed only in constructors so they should always capture correct 'this' + // super property access expressions can also appear in arrow functions - + // in this case they should also use correct lexical this + captureLexicalThis(node.parent, container); + } + if (container.parent.kind === 167 /* ObjectLiteralExpression */) { + if (languageVersion < 2 /* ES6 */) { + error(node, ts.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); + return unknownType; + } + else { + // for object literal assume that type of 'super' is 'any' + return anyType; + } + } + // at this point the only legal case for parent is ClassLikeDeclaration + var classLikeDeclaration = container.parent; + var classType = getDeclaredTypeOfSymbol(getSymbolOfNode(classLikeDeclaration)); + var baseClassType = classType && getBaseTypes(classType)[0]; + if (!baseClassType) { + if (!ts.getClassExtendsHeritageClauseElement(classLikeDeclaration)) { + error(node, ts.Diagnostics.super_can_only_be_referenced_in_a_derived_class); + } + return unknownType; + } if (container.kind === 144 /* Constructor */ && isInConstructorArgumentInitializer(node, container)) { // issue custom error message for super property access in constructor arguments (to be aligned with old compiler) error(node, ts.Diagnostics.super_cannot_be_referenced_in_constructor_arguments); @@ -20203,8 +20834,8 @@ var ts; // 'super' property access is allowed // - In a constructor, instance member function, instance member accessor, or instance member variable initializer where this references a derived class instance // - In a static member function or static member accessor - // topmost container must be something that is directly nested in the class declaration - if (container && ts.isClassLike(container.parent)) { + // topmost container must be something that is directly nested in the class declaration\object literal expression + if (ts.isClassLike(container.parent) || container.parent.kind === 167 /* ObjectLiteralExpression */) { if (container.flags & 64 /* Static */) { return container.kind === 143 /* MethodDeclaration */ || container.kind === 142 /* MethodSignature */ || @@ -20327,7 +20958,7 @@ var ts; return undefined; } function getContextualTypeForSubstitutionExpression(template, substitutionExpression) { - if (template.parent.kind === 170 /* TaggedTemplateExpression */) { + if (template.parent.kind === 172 /* TaggedTemplateExpression */) { return getContextualTypeForArgument(template.parent, substitutionExpression); } return undefined; @@ -20350,6 +20981,11 @@ var ts; } return type; } + else if (operator === 51 /* AmpersandAmpersandToken */ || operator === 24 /* CommaToken */) { + if (node === binaryExpression.right) { + return getContextualType(binaryExpression); + } + } return undefined; } // Apply a mapping function to a contextual type and return the resulting type. If the contextual type @@ -20362,8 +20998,8 @@ var ts; var types = type.types; var mappedType; var mappedTypes; - for (var _i = 0, types_7 = types; _i < types_7.length; _i++) { - var current = types_7[_i]; + for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { + var current = types_8[_i]; var t = mapper(current); if (t) { if (!mappedType) { @@ -20449,22 +21085,20 @@ var ts; var conditional = node.parent; return node === conditional.whenTrue || node === conditional.whenFalse ? getContextualType(conditional) : undefined; } - function getContextualTypeForJsxExpression(expr) { - // Contextual type only applies to JSX expressions that are in attribute assignments (not in 'Children' positions) - if (expr.parent.kind === 238 /* JsxAttribute */) { - var attrib = expr.parent; - var attrsType = getJsxElementAttributesType(attrib.parent); + function getContextualTypeForJsxAttribute(attribute) { + var kind = attribute.kind; + var jsxElement = attribute.parent; + var attrsType = getJsxElementAttributesType(jsxElement); + if (attribute.kind === 240 /* JsxAttribute */) { if (!attrsType || isTypeAny(attrsType)) { return undefined; } - else { - return getTypeOfPropertyOfType(attrsType, attrib.name.text); - } + return getTypeOfPropertyOfType(attrsType, attribute.name.text); } - if (expr.kind === 239 /* JsxSpreadAttribute */) { - return getJsxElementAttributesType(expr.parent); + else if (attribute.kind === 241 /* JsxSpreadAttribute */) { + return attrsType; } - return undefined; + ts.Debug.fail("Expected JsxAttribute or JsxSpreadAttribute, got ts.SyntaxKind[" + kind + "]"); } // Return the contextual type for a given expression node. During overload resolution, a contextual type may temporarily // be "pushed" onto a node using the contextualType property. @@ -20499,39 +21133,41 @@ var ts; } var parent = node.parent; switch (parent.kind) { - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: case 138 /* Parameter */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 163 /* BindingElement */: + case 165 /* BindingElement */: return getContextualTypeForInitializerExpression(node); - case 174 /* ArrowFunction */: - case 204 /* ReturnStatement */: + case 176 /* ArrowFunction */: + case 206 /* ReturnStatement */: return getContextualTypeForReturnExpression(node); - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return getContextualTypeForYieldOperand(parent); - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return getContextualTypeForArgument(parent, node); - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: return getTypeFromTypeNode(parent.type); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return getContextualTypeForBinaryOperand(node); - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: return getContextualTypeForObjectLiteralElement(parent); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return getContextualTypeForElementExpression(node); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return getContextualTypeForConditionalOperand(node); - case 190 /* TemplateSpan */: - ts.Debug.assert(parent.parent.kind === 183 /* TemplateExpression */); + case 192 /* TemplateSpan */: + ts.Debug.assert(parent.parent.kind === 185 /* TemplateExpression */); return getContextualTypeForSubstitutionExpression(parent.parent, node); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return getContextualType(parent); - case 240 /* JsxExpression */: - case 239 /* JsxSpreadAttribute */: - return getContextualTypeForJsxExpression(parent); + case 242 /* JsxExpression */: + return getContextualType(parent); + case 240 /* JsxAttribute */: + case 241 /* JsxSpreadAttribute */: + return getContextualTypeForJsxAttribute(parent); } return undefined; } @@ -20547,7 +21183,7 @@ var ts; } } function isFunctionExpressionOrArrowFunction(node) { - return node.kind === 173 /* FunctionExpression */ || node.kind === 174 /* ArrowFunction */; + return node.kind === 175 /* FunctionExpression */ || node.kind === 176 /* ArrowFunction */; } function getContextualSignatureForFunctionLikeDeclaration(node) { // Only function expressions, arrow functions, and object literal methods are contextually typed. @@ -20573,15 +21209,15 @@ var ts; } var signatureList; var types = type.types; - for (var _i = 0, types_8 = types; _i < types_8.length; _i++) { - var current = types_8[_i]; + for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { + var current = types_9[_i]; var signature = getNonGenericSignature(current); if (signature) { if (!signatureList) { // This signature will contribute to contextual union signature signatureList = [signature]; } - else if (!compareSignatures(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypes)) { + else if (!compareSignaturesIdentical(signatureList[0], signature, /*partialMatch*/ false, /*ignoreReturnTypes*/ true, compareTypesIdentical)) { // Signatures aren't identical, do not use return undefined; } @@ -20624,13 +21260,13 @@ var ts; // an assignment target. Examples include 'a = xxx', '{ p: a } = xxx', '[{ p: a}] = xxx'. function isAssignmentTarget(node) { var parent = node.parent; - if (parent.kind === 181 /* BinaryExpression */ && parent.operatorToken.kind === 56 /* EqualsToken */ && parent.left === node) { + if (parent.kind === 183 /* BinaryExpression */ && parent.operatorToken.kind === 56 /* EqualsToken */ && parent.left === node) { return true; } - if (parent.kind === 245 /* PropertyAssignment */) { + if (parent.kind === 247 /* PropertyAssignment */) { return isAssignmentTarget(parent.parent); } - if (parent.kind === 164 /* ArrayLiteralExpression */) { + if (parent.kind === 166 /* ArrayLiteralExpression */) { return isAssignmentTarget(parent); } return false; @@ -20646,8 +21282,8 @@ var ts; return checkIteratedTypeOrElementType(arrayOrIterableType, node.expression, /*allowStringInput*/ false); } function hasDefaultValue(node) { - return (node.kind === 163 /* BindingElement */ && !!node.initializer) || - (node.kind === 181 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); + return (node.kind === 165 /* BindingElement */ && !!node.initializer) || + (node.kind === 183 /* BinaryExpression */ && node.operatorToken.kind === 56 /* EqualsToken */); } function checkArrayLiteral(node, contextualMapper) { var elements = node.elements; @@ -20656,7 +21292,7 @@ var ts; var inDestructuringPattern = isAssignmentTarget(node); for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) { var e = elements_1[_i]; - if (inDestructuringPattern && e.kind === 185 /* SpreadElementExpression */) { + if (inDestructuringPattern && e.kind === 187 /* SpreadElementExpression */) { // Given the following situation: // var c: {}; // [...c] = ["", 0]; @@ -20680,7 +21316,7 @@ var ts; var type = checkExpression(e, contextualMapper); elementTypes.push(type); } - hasSpreadElement = hasSpreadElement || e.kind === 185 /* SpreadElementExpression */; + hasSpreadElement = hasSpreadElement || e.kind === 187 /* SpreadElementExpression */; } if (!hasSpreadElement) { // If array literal is actually a destructuring pattern, mark it as an implied type. We do this such @@ -20695,7 +21331,7 @@ var ts; var pattern = contextualType.pattern; // If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting // tuple type with the corresponding binding or assignment element types to make the lengths equal. - if (pattern && (pattern.kind === 162 /* ArrayBindingPattern */ || pattern.kind === 164 /* ArrayLiteralExpression */)) { + if (pattern && (pattern.kind === 164 /* ArrayBindingPattern */ || pattern.kind === 166 /* ArrayLiteralExpression */)) { var patternElements = pattern.elements; for (var i = elementTypes.length; i < patternElements.length; i++) { var patternElement = patternElements[i]; @@ -20703,7 +21339,7 @@ var ts; elementTypes.push(contextualType.elementTypes[i]); } else { - if (patternElement.kind !== 187 /* OmittedExpression */) { + if (patternElement.kind !== 189 /* OmittedExpression */) { error(patternElement, ts.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value); } elementTypes.push(unknownType); @@ -20775,24 +21411,24 @@ var ts; var propertiesArray = []; var contextualType = getApparentTypeOfContextualType(node); var contextualTypeHasPattern = contextualType && contextualType.pattern && - (contextualType.pattern.kind === 161 /* ObjectBindingPattern */ || contextualType.pattern.kind === 165 /* ObjectLiteralExpression */); + (contextualType.pattern.kind === 163 /* ObjectBindingPattern */ || contextualType.pattern.kind === 167 /* ObjectLiteralExpression */); var typeFlags = 0; var patternWithComputedProperties = false; for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { var memberDecl = _a[_i]; var member = memberDecl.symbol; - if (memberDecl.kind === 245 /* PropertyAssignment */ || - memberDecl.kind === 246 /* ShorthandPropertyAssignment */ || + if (memberDecl.kind === 247 /* PropertyAssignment */ || + memberDecl.kind === 248 /* ShorthandPropertyAssignment */ || ts.isObjectLiteralMethod(memberDecl)) { var type = void 0; - if (memberDecl.kind === 245 /* PropertyAssignment */) { + if (memberDecl.kind === 247 /* PropertyAssignment */) { type = checkPropertyAssignment(memberDecl, contextualMapper); } else if (memberDecl.kind === 143 /* MethodDeclaration */) { type = checkObjectLiteralMethod(memberDecl, contextualMapper); } else { - ts.Debug.assert(memberDecl.kind === 246 /* ShorthandPropertyAssignment */); + ts.Debug.assert(memberDecl.kind === 248 /* ShorthandPropertyAssignment */); type = checkExpression(memberDecl.name, contextualMapper); } typeFlags |= type.flags; @@ -20800,8 +21436,8 @@ var ts; if (inDestructuringPattern) { // If object literal is an assignment pattern and if the assignment pattern specifies a default value // for the property, make the property optional. - var isOptional = (memberDecl.kind === 245 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || - (memberDecl.kind === 246 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); + var isOptional = (memberDecl.kind === 247 /* PropertyAssignment */ && hasDefaultValue(memberDecl.initializer)) || + (memberDecl.kind === 248 /* ShorthandPropertyAssignment */ && memberDecl.objectAssignmentInitializer); if (isOptional) { prop.flags |= 536870912 /* Optional */; } @@ -20893,38 +21529,22 @@ var ts; checkJsxOpeningLikeElement(node); return jsxElementType || anyType; } - function tagNamesAreEquivalent(lhs, rhs) { - if (lhs.kind !== rhs.kind) { - return false; - } - if (lhs.kind === 69 /* Identifier */) { - return lhs.text === rhs.text; - } - return lhs.right.text === rhs.right.text && - tagNamesAreEquivalent(lhs.left, rhs.left); - } function checkJsxElement(node) { // Check attributes checkJsxOpeningLikeElement(node.openingElement); - // Check that the closing tag matches - if (!tagNamesAreEquivalent(node.openingElement.tagName, node.closingElement.tagName)) { - error(node.closingElement, ts.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0, ts.getTextOfNode(node.openingElement.tagName)); - } - else { - // Perform resolution on the closing tag so that rename/go to definition/etc work - getJsxElementTagSymbol(node.closingElement); - } + // Perform resolution on the closing tag so that rename/go to definition/etc work + getJsxElementTagSymbol(node.closingElement); // Check children for (var _i = 0, _a = node.children; _i < _a.length; _i++) { var child = _a[_i]; switch (child.kind) { - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: checkJsxExpression(child); break; - case 233 /* JsxElement */: + case 235 /* JsxElement */: checkJsxElement(child); break; - case 234 /* JsxSelfClosingElement */: + case 236 /* JsxSelfClosingElement */: checkJsxSelfClosingElement(child); break; } @@ -21006,12 +21626,11 @@ var ts; } return type; } - /// Returns the type JSX.IntrinsicElements. May return `unknownType` if that type is not present. - function getJsxIntrinsicElementsType() { - if (!jsxIntrinsicElementsType) { - jsxIntrinsicElementsType = getExportedTypeFromNamespace(JsxNames.JSX, JsxNames.IntrinsicElements) || unknownType; + function getJsxType(name) { + if (jsxTypes[name] === undefined) { + return jsxTypes[name] = getExportedTypeFromNamespace(JsxNames.JSX, name) || unknownType; } - return jsxIntrinsicElementsType; + return jsxTypes[name]; } /// Given a JSX opening element or self-closing element, return the symbol of the property that the tag name points to if /// this is an intrinsic tag. This might be a named @@ -21020,7 +21639,6 @@ var ts; /// type or factory function. /// Otherwise, returns unknownSymbol. function getJsxElementTagSymbol(node) { - var flags = 8 /* UnknownElement */; var links = getNodeLinks(node); if (!links.resolvedSymbol) { if (isJsxIntrinsicIdentifier(node.tagName)) { @@ -21032,7 +21650,7 @@ var ts; } return links.resolvedSymbol; function lookupIntrinsicTag(node) { - var intrinsicElementsType = getJsxIntrinsicElementsType(); + var intrinsicElementsType = getJsxType(JsxNames.IntrinsicElements); if (intrinsicElementsType !== unknownType) { // Property case var intrinsicProp = getPropertyOfType(intrinsicElementsType, node.tagName.text); @@ -21060,7 +21678,7 @@ var ts; var valueSymbol = resolveJsxTagName(node); // Look up the value in the current scope if (valueSymbol && valueSymbol !== unknownSymbol) { - links.jsxFlags |= 4 /* ClassElement */; + links.jsxFlags |= 4 /* ValueElement */; if (valueSymbol.flags & 8388608 /* Alias */) { markAliasSymbolAsReferenced(valueSymbol); } @@ -21086,7 +21704,7 @@ var ts; function getJsxElementInstanceType(node) { // There is no such thing as an instance type for a non-class element. This // line shouldn't be hit. - ts.Debug.assert(!!(getNodeLinks(node).jsxFlags & 4 /* ClassElement */), "Should not call getJsxElementInstanceType on non-class Element"); + ts.Debug.assert(!!(getNodeLinks(node).jsxFlags & 4 /* ValueElement */), "Should not call getJsxElementInstanceType on non-class Element"); var classSymbol = getJsxElementTagSymbol(node); if (classSymbol === unknownSymbol) { // Couldn't find the class instance type. Error has already been issued @@ -21108,13 +21726,7 @@ var ts; return unknownType; } } - var returnType = getUnionType(signatures.map(getReturnTypeOfSignature)); - // Issue an error if this return type isn't assignable to JSX.ElementClass - var elemClassType = getJsxGlobalElementClassType(); - if (elemClassType) { - checkTypeRelatedTo(returnType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); - } - return returnType; + return getUnionType(signatures.map(getReturnTypeOfSignature)); } /// e.g. "props" for React.d.ts, /// or 'undefined' if ElementAttributesPropery doesn't exist (which means all @@ -21156,8 +21768,27 @@ var ts; var links = getNodeLinks(node); if (!links.resolvedJsxType) { var sym = getJsxElementTagSymbol(node); - if (links.jsxFlags & 4 /* ClassElement */) { + if (links.jsxFlags & 4 /* ValueElement */) { + // Get the element instance type (the result of newing or invoking this tag) var elemInstanceType = getJsxElementInstanceType(node); + // Is this is a stateless function component? See if its single signature is + // assignable to the JSX Element Type + var callSignature = getSingleCallSignature(getTypeOfSymbol(sym)); + var callReturnType = callSignature && getReturnTypeOfSignature(callSignature); + var paramType = callReturnType && (callSignature.parameters.length === 0 ? emptyObjectType : getTypeOfSymbol(callSignature.parameters[0])); + if (callReturnType && isTypeAssignableTo(callReturnType, jsxElementType) && (paramType.flags & 80896 /* ObjectType */)) { + // Intersect in JSX.IntrinsicAttributes if it exists + var intrinsicAttributes = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttributes !== unknownType) { + paramType = intersectTypes(intrinsicAttributes, paramType); + } + return paramType; + } + // Issue an error if this return type isn't assignable to JSX.ElementClass + var elemClassType = getJsxGlobalElementClassType(); + if (elemClassType) { + checkTypeRelatedTo(elemInstanceType, elemClassType, assignableRelation, node, ts.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements); + } if (isTypeAny(elemInstanceType)) { return links.resolvedJsxType = elemInstanceType; } @@ -21177,14 +21808,34 @@ var ts; return links.resolvedJsxType = emptyObjectType; } else if (isTypeAny(attributesType) || (attributesType === unknownType)) { + // Props is of type 'any' or unknown return links.resolvedJsxType = attributesType; } - else if (!(attributesType.flags & 80896 /* ObjectType */)) { - error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_must_be_an_object_type, typeToString(attributesType)); + else if (attributesType.flags & 16384 /* Union */) { + // Props cannot be a union type + error(node.tagName, ts.Diagnostics.JSX_element_attributes_type_0_may_not_be_a_union_type, typeToString(attributesType)); return links.resolvedJsxType = anyType; } else { - return links.resolvedJsxType = attributesType; + // Normal case -- add in IntrinsicClassElements and IntrinsicElements + var apparentAttributesType = attributesType; + var intrinsicClassAttribs = getJsxType(JsxNames.IntrinsicClassAttributes); + if (intrinsicClassAttribs !== unknownType) { + var typeParams = getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(intrinsicClassAttribs.symbol); + if (typeParams) { + if (typeParams.length === 1) { + apparentAttributesType = intersectTypes(createTypeReference(intrinsicClassAttribs, [elemInstanceType]), apparentAttributesType); + } + } + else { + apparentAttributesType = intersectTypes(attributesType, intrinsicClassAttribs); + } + } + var intrinsicAttribs = getJsxType(JsxNames.IntrinsicAttributes); + if (intrinsicAttribs !== unknownType) { + apparentAttributesType = intersectTypes(intrinsicAttribs, apparentAttributesType); + } + return links.resolvedJsxType = apparentAttributesType; } } } @@ -21219,7 +21870,7 @@ var ts; } /// Returns all the properties of the Jsx.IntrinsicElements interface function getJsxIntrinsicTagNames() { - var intrinsics = getJsxIntrinsicElementsType(); + var intrinsics = getJsxType(JsxNames.IntrinsicElements); return intrinsics ? getPropertiesOfType(intrinsics) : emptyArray; } function checkJsxPreconditions(errorNode) { @@ -21236,14 +21887,13 @@ var ts; function checkJsxOpeningLikeElement(node) { checkGrammarJsxElement(node); checkJsxPreconditions(node); - // If we're compiling under --jsx react, the symbol 'React' should - // be marked as 'used' so we don't incorrectly elide its import. And if there - // is no 'React' symbol in scope, we should issue an error. - if (compilerOptions.jsx === 2 /* React */) { - var reactSym = resolveName(node.tagName, "React", 107455 /* Value */, ts.Diagnostics.Cannot_find_name_0, "React"); - if (reactSym) { - getSymbolLinks(reactSym).referenced = true; - } + // The reactNamespace symbol should be marked as 'used' so we don't incorrectly elide its import. And if there + // is no reactNamespace symbol in scope when targeting React emit, we should issue an error. + var reactRefErr = compilerOptions.jsx === 2 /* React */ ? ts.Diagnostics.Cannot_find_name_0 : undefined; + var reactNamespace = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; + var reactSym = resolveName(node.tagName, reactNamespace, 107455 /* Value */, reactRefErr, reactNamespace); + if (reactSym) { + getSymbolLinks(reactSym).referenced = true; } var targetAttributesType = getJsxElementAttributesType(node); var nameTable = {}; @@ -21252,11 +21902,11 @@ var ts; // thus should have their types ignored var sawSpreadedAny = false; for (var i = node.attributes.length - 1; i >= 0; i--) { - if (node.attributes[i].kind === 238 /* JsxAttribute */) { + if (node.attributes[i].kind === 240 /* JsxAttribute */) { checkJsxAttribute((node.attributes[i]), targetAttributesType, nameTable); } else { - ts.Debug.assert(node.attributes[i].kind === 239 /* JsxSpreadAttribute */); + ts.Debug.assert(node.attributes[i].kind === 241 /* JsxSpreadAttribute */); var spreadType = checkJsxSpreadAttribute((node.attributes[i]), targetAttributesType, nameTable); if (isTypeAny(spreadType)) { sawSpreadedAny = true; @@ -21303,7 +21953,7 @@ var ts; var flags = getDeclarationFlagsFromSymbol(prop); var declaringClass = getDeclaredTypeOfSymbol(prop.parent); if (left.kind === 95 /* SuperKeyword */) { - var errorNode = node.kind === 166 /* PropertyAccessExpression */ ? + var errorNode = node.kind === 168 /* PropertyAccessExpression */ ? node.name : node.right; // TS 1.0 spec (April 2014): 4.8.2 @@ -21313,7 +21963,7 @@ var 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) !== 143 /* MethodDeclaration */) { + if (languageVersion < 2 /* ES6 */ && getDeclarationKindFromSymbol(prop) !== 143 /* MethodDeclaration */) { // `prop` refers to a *property* declared in the super class // rather than a *method*, so it does not satisfy the above criteria. error(errorNode, ts.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); @@ -21400,7 +22050,7 @@ var ts; return getTypeOfSymbol(prop); } function isValidPropertyAccess(node, propertyName) { - var left = node.kind === 166 /* PropertyAccessExpression */ + var left = node.kind === 168 /* PropertyAccessExpression */ ? node.expression : node.left; var type = checkExpression(left); @@ -21416,7 +22066,7 @@ var ts; // Grammar checking if (!node.argumentExpression) { var sourceFile = getSourceFile(node); - if (node.parent.kind === 169 /* NewExpression */ && node.parent.expression === node) { + if (node.parent.kind === 171 /* NewExpression */ && node.parent.expression === node) { var start = ts.skipTrivia(sourceFile.text, node.expression.end); var end = node.end; grammarErrorAtPos(sourceFile, start, end - start, ts.Diagnostics.new_T_cannot_be_used_to_create_an_array_Use_new_Array_T_instead); @@ -21497,7 +22147,7 @@ var ts; if (indexArgumentExpression.kind === 9 /* StringLiteral */ || indexArgumentExpression.kind === 8 /* NumericLiteral */) { return indexArgumentExpression.text; } - if (indexArgumentExpression.kind === 167 /* ElementAccessExpression */ || indexArgumentExpression.kind === 166 /* PropertyAccessExpression */) { + if (indexArgumentExpression.kind === 169 /* ElementAccessExpression */ || indexArgumentExpression.kind === 168 /* PropertyAccessExpression */) { var value = getConstantValue(indexArgumentExpression); if (value !== undefined) { return value.toString(); @@ -21552,7 +22202,7 @@ var ts; return true; } function resolveUntypedCall(node) { - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { checkExpression(node.template); } else if (node.kind !== 139 /* Decorator */) { @@ -21621,7 +22271,7 @@ var ts; function getSpreadArgumentIndex(args) { for (var i = 0; i < args.length; i++) { var arg = args[i]; - if (arg && arg.kind === 185 /* SpreadElementExpression */) { + if (arg && arg.kind === 187 /* SpreadElementExpression */) { return i; } } @@ -21633,13 +22283,13 @@ var ts; var callIsIncomplete; // In incomplete call we want to be lenient when we have too few arguments var isDecorator; var spreadArgIndex = -1; - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { var tagExpression = node; // Even if the call is incomplete, we'll have a missing expression as our last argument, // so we can say the count is just the arg list length adjustedArgCount = args.length; typeArguments = undefined; - if (tagExpression.template.kind === 183 /* TemplateExpression */) { + if (tagExpression.template.kind === 185 /* TemplateExpression */) { // If a tagged template expression lacks a tail literal, the call is incomplete. // Specifically, a template only can end in a TemplateTail or a Missing literal. var templateExpression = tagExpression.template; @@ -21665,7 +22315,7 @@ var ts; var callExpression = node; if (!callExpression.arguments) { // This only happens when we have something of the form: 'new C' - ts.Debug.assert(callExpression.kind === 169 /* NewExpression */); + ts.Debug.assert(callExpression.kind === 171 /* NewExpression */); return signature.minArgumentCount === 0; } // For IDE scenarios we may have an incomplete call, so a trailing comma is tantamount to adding another argument. @@ -21717,7 +22367,7 @@ var ts; } function inferTypeArguments(node, signature, args, excludeArgument, context) { var typeParameters = signature.typeParameters; - var inferenceMapper = createInferenceMapper(context); + var inferenceMapper = getInferenceMapper(context); // Clear out all the inference results from the last time inferTypeArguments was called on this context for (var i = 0; i < typeParameters.length; i++) { // As an optimization, we don't have to clear (and later recompute) inferred types @@ -21744,7 +22394,7 @@ var ts; for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 187 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 189 /* OmittedExpression */) { var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); // If the effective argument type is 'undefined', there is no synthetic type @@ -21775,14 +22425,11 @@ var ts; } getInferredTypes(context); } - function checkTypeArguments(signature, typeArguments, typeArgumentResultTypes, reportErrors, headMessage) { + function checkTypeArguments(signature, typeArgumentNodes, typeArgumentTypes, reportErrors, headMessage) { var typeParameters = signature.typeParameters; var typeArgumentsAreAssignable = true; + var mapper; for (var i = 0; i < typeParameters.length; i++) { - var typeArgNode = typeArguments[i]; - var typeArgument = getTypeFromTypeNode(typeArgNode); - // Do not push on this array! It has a preallocated length - typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable /* so far */) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { @@ -21792,7 +22439,11 @@ var ts; errorInfo = ts.chainDiagnosticMessages(errorInfo, typeArgumentHeadMessage); typeArgumentHeadMessage = headMessage; } - typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, constraint, reportErrors ? typeArgNode : undefined, typeArgumentHeadMessage, errorInfo); + if (!mapper) { + mapper = createTypeMapper(typeParameters, typeArgumentTypes); + } + var typeArgument = typeArgumentTypes[i]; + typeArgumentsAreAssignable = checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), reportErrors ? typeArgumentNodes[i] : undefined, typeArgumentHeadMessage, errorInfo); } } } @@ -21803,7 +22454,7 @@ var ts; for (var i = 0; i < argCount; i++) { var arg = getEffectiveArgument(node, args, i); // If the effective argument is 'undefined', then it is an argument that is present but is synthetic. - if (arg === undefined || arg.kind !== 187 /* OmittedExpression */) { + if (arg === undefined || arg.kind !== 189 /* OmittedExpression */) { // Check spread elements against rest type (from arity check we know spread argument corresponds to a rest parameter) var paramType = getTypeAtPosition(signature, i); var argType = getEffectiveArgumentType(node, i, arg); @@ -21811,7 +22462,7 @@ var ts; // for the argument. In that case, we should check the argument. if (argType === undefined) { argType = arg.kind === 9 /* StringLiteral */ && !reportErrors - ? getStringLiteralType(arg) + ? getStringLiteralTypeForText(arg.text) : checkExpressionWithContextualType(arg, paramType, excludeArgument && excludeArgument[i] ? identityMapper : undefined); } // Use argument expression as error location when reporting errors @@ -21835,10 +22486,10 @@ var ts; */ function getEffectiveCallArguments(node) { var args; - if (node.kind === 170 /* TaggedTemplateExpression */) { + if (node.kind === 172 /* TaggedTemplateExpression */) { var template = node.template; args = [undefined]; - if (template.kind === 183 /* TemplateExpression */) { + if (template.kind === 185 /* TemplateExpression */) { ts.forEach(template.templateSpans, function (span) { args.push(span.expression); }); @@ -21871,8 +22522,8 @@ var ts; function getEffectiveArgumentCount(node, args, signature) { if (node.kind === 139 /* Decorator */) { switch (node.parent.kind) { - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: // A class decorator will have one argument (see `ClassDecorator` in core.d.ts) return 1; case 141 /* PropertyDeclaration */: @@ -21915,7 +22566,7 @@ var ts; */ function getEffectiveDecoratorFirstArgumentType(node) { // The first argument to a decorator is its `target`. - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { // For a class decorator, the `target` is the type of the class (e.g. the // "static" or "constructor" side of the class) var classSymbol = getSymbolOfNode(node); @@ -21960,7 +22611,7 @@ var ts; */ function getEffectiveDecoratorSecondArgumentType(node) { // The second argument to a decorator is its `propertyKey` - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a second synthetic argument."); return unknownType; } @@ -21984,7 +22635,7 @@ var ts; case 69 /* Identifier */: case 8 /* NumericLiteral */: case 9 /* StringLiteral */: - return getStringLiteralType(element.name); + return getStringLiteralTypeForText(element.name.text); case 136 /* ComputedPropertyName */: var nameType = checkComputedPropertyName(element.name); if (allConstituentTypesHaveKind(nameType, 16777216 /* ESSymbol */)) { @@ -22011,7 +22662,7 @@ var ts; function getEffectiveDecoratorThirdArgumentType(node) { // The third argument to a decorator is either its `descriptor` for a method decorator // or its `parameterIndex` for a paramter decorator - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { ts.Debug.fail("Class decorators should not have a third synthetic argument."); return unknownType; } @@ -22060,7 +22711,7 @@ var ts; if (node.kind === 139 /* Decorator */) { return getEffectiveDecoratorArgumentType(node, argIndex); } - else if (argIndex === 0 && node.kind === 170 /* TaggedTemplateExpression */) { + else if (argIndex === 0 && node.kind === 172 /* TaggedTemplateExpression */) { return globalTemplateStringsArrayType; } // This is not a synthetic argument, so we return 'undefined' @@ -22073,7 +22724,7 @@ var ts; function getEffectiveArgument(node, args, argIndex) { // For a decorator or the first argument of a tagged template expression we return undefined. if (node.kind === 139 /* Decorator */ || - (argIndex === 0 && node.kind === 170 /* TaggedTemplateExpression */)) { + (argIndex === 0 && node.kind === 172 /* TaggedTemplateExpression */)) { return undefined; } return args[argIndex]; @@ -22086,7 +22737,7 @@ var ts; // For a decorator, we use the expression of the decorator for error reporting. return node.expression; } - else if (argIndex === 0 && node.kind === 170 /* TaggedTemplateExpression */) { + else if (argIndex === 0 && node.kind === 172 /* TaggedTemplateExpression */) { // For a the first argument of a tagged template expression, we use the template of the tag for error reporting. return node.template; } @@ -22095,7 +22746,7 @@ var ts; } } function resolveCall(node, signatures, candidatesOutArray, headMessage) { - var isTaggedTemplate = node.kind === 170 /* TaggedTemplateExpression */; + var isTaggedTemplate = node.kind === 172 /* TaggedTemplateExpression */; var isDecorator = node.kind === 139 /* Decorator */; var typeArguments; if (!isTaggedTemplate && !isDecorator) { @@ -22202,7 +22853,8 @@ var ts; } else if (candidateForTypeArgumentError) { if (!isTaggedTemplate && !isDecorator && typeArguments) { - checkTypeArguments(candidateForTypeArgumentError, node.typeArguments, [], /*reportErrors*/ true, headMessage); + var typeArguments_1 = node.typeArguments; + checkTypeArguments(candidateForTypeArgumentError, typeArguments_1, ts.map(typeArguments_1, getTypeFromTypeNode), /*reportErrors*/ true, headMessage); } else { ts.Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); @@ -22260,7 +22912,7 @@ var ts; if (candidate.typeParameters) { var typeArgumentTypes = void 0; if (typeArguments) { - typeArgumentTypes = new Array(candidate.typeParameters.length); + typeArgumentTypes = ts.map(typeArguments, getTypeFromTypeNode); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, /*reportErrors*/ false); } else { @@ -22441,8 +23093,8 @@ var ts; */ function getDiagnosticHeadMessageForDecoratorResolution(node) { switch (node.parent.kind) { - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: return ts.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression; case 138 /* Parameter */: return ts.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression; @@ -22487,13 +23139,13 @@ var ts; // to correctly fill the candidatesOutArray. if (!links.resolvedSignature || candidatesOutArray) { links.resolvedSignature = anySignature; - if (node.kind === 168 /* CallExpression */) { + if (node.kind === 170 /* CallExpression */) { links.resolvedSignature = resolveCallExpression(node, candidatesOutArray); } - else if (node.kind === 169 /* NewExpression */) { + else if (node.kind === 171 /* NewExpression */) { links.resolvedSignature = resolveNewExpression(node, candidatesOutArray); } - else if (node.kind === 170 /* TaggedTemplateExpression */) { + else if (node.kind === 172 /* TaggedTemplateExpression */) { links.resolvedSignature = resolveTaggedTemplateExpression(node, candidatesOutArray); } else if (node.kind === 139 /* Decorator */) { @@ -22505,6 +23157,13 @@ var ts; } return links.resolvedSignature; } + function getInferredClassType(symbol) { + var links = getSymbolLinks(symbol); + if (!links.inferredClassType) { + links.inferredClassType = createAnonymousType(undefined, symbol.members, emptyArray, emptyArray, /*stringIndexType*/ undefined, /*numberIndexType*/ undefined); + } + return links.inferredClassType; + } /** * Syntactically and semantically checks a call or new expression. * @param node The call/new expression to be checked. @@ -22517,14 +23176,20 @@ var ts; if (node.expression.kind === 95 /* SuperKeyword */) { return voidType; } - if (node.kind === 169 /* NewExpression */) { + if (node.kind === 171 /* NewExpression */) { var declaration = signature.declaration; if (declaration && declaration.kind !== 144 /* Constructor */ && declaration.kind !== 148 /* ConstructSignature */ && declaration.kind !== 153 /* ConstructorType */) { - // When resolved signature is a call signature (and not a construct signature) the result type is any - if (compilerOptions.noImplicitAny) { + // When resolved signature is a call signature (and not a construct signature) the result type is any, unless + // the declaring function had members created through 'x.prototype.y = expr' or 'this.y = expr' psuedodeclarations + // in a JS file + var funcSymbol = checkExpression(node.expression).symbol; + if (funcSymbol && funcSymbol.members && (funcSymbol.flags & 16 /* Function */)) { + return getInferredClassType(funcSymbol); + } + else if (compilerOptions.noImplicitAny) { error(node, ts.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); } return anyType; @@ -22577,7 +23242,7 @@ var ts; if (ts.isBindingPattern(node.name)) { for (var _i = 0, _a = node.name.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187 /* OmittedExpression */) { + if (element.kind !== 189 /* OmittedExpression */) { if (element.name.kind === 69 /* Identifier */) { getSymbolLinks(getSymbolOfNode(element)).type = getTypeForBindingElement(element); } @@ -22642,7 +23307,7 @@ var ts; } var isAsync = ts.isAsyncFunctionLike(func); var type; - if (func.body.kind !== 192 /* Block */) { + if (func.body.kind !== 194 /* Block */) { type = checkExpressionCached(func.body, contextualMapper); if (isAsync) { // From within an async function you can return either a non-promise value or a promise. Any @@ -22755,38 +23420,53 @@ var ts; }); return aggregatedTypes; } - // TypeScript Specification 1.0 (6.3) - July 2014 - // An explicitly typed function whose return type isn't the Void or the Any type - // must have at least one return statement somewhere in its body. - // An exception to this rule is if the function implementation consists of a single 'throw' statement. + /* + *TypeScript Specification 1.0 (6.3) - July 2014 + * An explicitly typed function whose return type isn't the Void or the Any type + * must have at least one return statement somewhere in its body. + * An exception to this rule is if the function implementation consists of a single 'throw' statement. + * @param returnType - return type of the function, can be undefined if return type is not explicitly specified + */ function checkAllCodePathsInNonVoidFunctionReturnOrThrow(func, returnType) { if (!produceDiagnostics) { return; } - // Functions that return 'void' or 'any' don't need any return expressions. + // Functions with with an explicitly specified 'void' or 'any' return type don't need any return expressions. if (returnType === voidType || isTypeAny(returnType)) { return; } // If all we have is a function signature, or an arrow function with an expression body, then there is nothing to check. - // also if HasImplicitReturnValue flags is not set this means that all codepaths in function body end with return of throw - if (ts.nodeIsMissing(func.body) || func.body.kind !== 192 /* Block */ || !(func.flags & 524288 /* HasImplicitReturn */)) { + // also if HasImplicitReturn flag is not set this means that all codepaths in function body end with return or throw + if (ts.nodeIsMissing(func.body) || func.body.kind !== 194 /* Block */ || !(func.flags & 524288 /* HasImplicitReturn */)) { return; } - if (func.flags & 1048576 /* HasExplicitReturn */) { - if (compilerOptions.noImplicitReturns) { - error(func.type, ts.Diagnostics.Not_all_code_paths_return_a_value); - } - } - else { - // This function does not conform to the specification. + var hasExplicitReturn = func.flags & 1048576 /* HasExplicitReturn */; + if (returnType && !hasExplicitReturn) { + // minimal check: function has syntactic return type annotation and no explicit return statements in the body + // this function does not conform to the specification. + // NOTE: having returnType !== undefined is a precondition for entering this branch so func.type will always be present error(func.type, ts.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value); } + else if (compilerOptions.noImplicitReturns) { + if (!returnType) { + // If return type annotation is omitted check if function has any explicit return statements. + // If it does not have any - its inferred return type is void - don't do any checks. + // Otherwise get inferred return type from function body and report error only if it is not void / anytype + var inferredReturnType = hasExplicitReturn + ? getReturnTypeOfSignature(getSignatureFromDeclaration(func)) + : voidType; + if (inferredReturnType === voidType || isTypeAny(inferredReturnType)) { + return; + } + } + error(func.type || func, ts.Diagnostics.Not_all_code_paths_return_a_value); + } } function checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper) { ts.Debug.assert(node.kind !== 143 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); // Grammar checking var hasGrammarError = checkGrammarFunctionLikeDeclaration(node); - if (!hasGrammarError && node.kind === 173 /* FunctionExpression */) { + if (!hasGrammarError && node.kind === 175 /* FunctionExpression */) { checkGrammarForGenerator(node); } // The identityMapper object is used to indicate that function expressions are wildcards @@ -22826,6 +23506,7 @@ var ts; } if (!contextChecked) { checkSignatureDeclaration(node); + checkNodeDeferred(node); } } } @@ -22835,19 +23516,16 @@ var ts; } return type; } - function checkFunctionExpressionOrObjectLiteralMethodBody(node) { + function checkFunctionExpressionOrObjectLiteralMethodDeferred(node) { ts.Debug.assert(node.kind !== 143 /* MethodDeclaration */ || ts.isObjectLiteralMethod(node)); var isAsync = ts.isAsyncFunctionLike(node); if (isAsync) { emitAwaiter = true; } - var returnType = node.type && getTypeFromTypeNode(node.type); - var promisedType; - if (returnType && isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - if (returnType && !node.asteriskToken) { - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + if (!node.asteriskToken) { + // return is not necessary in the body of generators + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (node.body) { if (!node.type) { @@ -22858,7 +23536,7 @@ var ts; // checkFunctionExpressionBodies). So it must be done now. getReturnTypeOfSignature(getSignatureFromDeclaration(node)); } - if (node.body.kind === 192 /* Block */) { + if (node.body.kind === 194 /* Block */) { checkSourceElement(node.body); } else { @@ -22868,16 +23546,15 @@ var ts; // check assignability of the awaited type of the expression body against the promised type of // its return type annotation. var exprType = checkExpression(node.body); - if (returnType) { + if (returnOrPromisedType) { if (isAsync) { var awaitedType = checkAwaitedType(exprType, node.body, ts.Diagnostics.Expression_body_for_async_arrow_function_does_not_have_a_valid_callable_then_member); - checkTypeAssignableTo(awaitedType, promisedType, node.body); + checkTypeAssignableTo(awaitedType, returnOrPromisedType, node.body); } else { - checkTypeAssignableTo(exprType, returnType, node.body); + checkTypeAssignableTo(exprType, returnOrPromisedType, node.body); } } - checkFunctionAndClassExpressionBodies(node.body); } } } @@ -22911,17 +23588,17 @@ var ts; // An identifier expression that references any other kind of entity is classified as a value(and therefore cannot be the target of an assignment). return !symbol || symbol === unknownSymbol || symbol === argumentsSymbol || (symbol.flags & 3 /* Variable */) !== 0; } - case 166 /* PropertyAccessExpression */: { + case 168 /* PropertyAccessExpression */: { var symbol = findSymbol(n); // TypeScript 1.0 spec (April 2014): 4.10 // A property access expression is always classified as a reference. // NOTE (not in spec): assignment to enum members should not be allowed return !symbol || symbol === unknownSymbol || (symbol.flags & ~8 /* EnumMember */) !== 0; } - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: // old compiler doesn't check indexed access return true; - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return isReferenceOrErrorExpression(n.expression); default: return false; @@ -22930,11 +23607,11 @@ var ts; function isConstVariableReference(n) { switch (n.kind) { case 69 /* Identifier */: - case 166 /* PropertyAccessExpression */: { + case 168 /* PropertyAccessExpression */: { var symbol = findSymbol(n); return symbol && (symbol.flags & 3 /* Variable */) !== 0 && (getDeclarationFlagsFromSymbol(symbol) & 16384 /* Const */) !== 0; } - case 167 /* ElementAccessExpression */: { + case 169 /* ElementAccessExpression */: { var index = n.argumentExpression; var symbol = findSymbol(n.expression); if (symbol && index && index.kind === 9 /* StringLiteral */) { @@ -22944,7 +23621,7 @@ var ts; } return false; } - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return isConstVariableReference(n.expression); default: return false; @@ -23025,8 +23702,8 @@ var ts; } if (type.flags & 49152 /* UnionOrIntersection */) { var types = type.types; - for (var _i = 0, types_9 = types; _i < types_9.length; _i++) { - var current = types_9[_i]; + for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { + var current = types_10[_i]; if (current.flags & kind) { return true; } @@ -23042,8 +23719,8 @@ var ts; } if (type.flags & 49152 /* UnionOrIntersection */) { var types = type.types; - for (var _i = 0, types_10 = types; _i < types_10.length; _i++) { - var current = types_10[_i]; + for (var _i = 0, types_11 = types; _i < types_11.length; _i++) { + var current = types_11[_i]; if (!(current.flags & kind)) { return false; } @@ -23090,7 +23767,7 @@ var ts; var properties = node.properties; for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) { var p = properties_3[_i]; - if (p.kind === 245 /* PropertyAssignment */ || p.kind === 246 /* ShorthandPropertyAssignment */) { + if (p.kind === 247 /* PropertyAssignment */ || p.kind === 248 /* ShorthandPropertyAssignment */) { var name_13 = p.name; if (name_13.kind === 136 /* ComputedPropertyName */) { checkComputedPropertyName(name_13); @@ -23105,11 +23782,11 @@ var ts; isNumericLiteralName(text) && getIndexTypeOfType(sourceType, 1 /* Number */) || getIndexTypeOfType(sourceType, 0 /* String */); if (type) { - if (p.kind === 246 /* ShorthandPropertyAssignment */) { + if (p.kind === 248 /* ShorthandPropertyAssignment */) { checkDestructuringAssignment(p, type); } else { - // non-shorthand property assignments should always have initializers + // non-shorthand property assignments should always have initializers checkDestructuringAssignment(p.initializer, type); } } @@ -23131,8 +23808,8 @@ var ts; var elements = node.elements; for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187 /* OmittedExpression */) { - if (e.kind !== 185 /* SpreadElementExpression */) { + if (e.kind !== 189 /* OmittedExpression */) { + if (e.kind !== 187 /* SpreadElementExpression */) { var propName = "" + i; var type = isTypeAny(sourceType) ? sourceType @@ -23157,7 +23834,7 @@ var ts; } else { var restExpression = e.expression; - if (restExpression.kind === 181 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { + if (restExpression.kind === 183 /* BinaryExpression */ && restExpression.operatorToken.kind === 56 /* EqualsToken */) { error(restExpression.operatorToken, ts.Diagnostics.A_rest_element_cannot_have_an_initializer); } else { @@ -23171,7 +23848,7 @@ var ts; } function checkDestructuringAssignment(exprOrAssignment, sourceType, contextualMapper) { var target; - if (exprOrAssignment.kind === 246 /* ShorthandPropertyAssignment */) { + if (exprOrAssignment.kind === 248 /* ShorthandPropertyAssignment */) { var prop = exprOrAssignment; if (prop.objectAssignmentInitializer) { checkBinaryLikeExpression(prop.name, prop.equalsToken, prop.objectAssignmentInitializer, contextualMapper); @@ -23181,14 +23858,14 @@ var ts; else { target = exprOrAssignment; } - if (target.kind === 181 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + if (target.kind === 183 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { checkBinaryExpression(target, contextualMapper); target = target.left; } - if (target.kind === 165 /* ObjectLiteralExpression */) { + if (target.kind === 167 /* ObjectLiteralExpression */) { return checkObjectLiteralAssignment(target, sourceType, contextualMapper); } - if (target.kind === 164 /* ArrayLiteralExpression */) { + if (target.kind === 166 /* ArrayLiteralExpression */) { return checkArrayLiteralAssignment(target, sourceType, contextualMapper); } return checkReferenceAssignment(target, sourceType, contextualMapper); @@ -23205,7 +23882,7 @@ var ts; } function checkBinaryLikeExpression(left, operatorToken, right, contextualMapper, errorNode) { var operator = operatorToken.kind; - if (operator === 56 /* EqualsToken */ && (left.kind === 165 /* ObjectLiteralExpression */ || left.kind === 164 /* ArrayLiteralExpression */)) { + if (operator === 56 /* EqualsToken */ && (left.kind === 167 /* ObjectLiteralExpression */ || left.kind === 166 /* ArrayLiteralExpression */)) { return checkDestructuringAssignment(left, checkExpression(right, contextualMapper), contextualMapper); } var leftType = checkExpression(left, contextualMapper); @@ -23441,7 +24118,7 @@ var ts; function checkStringLiteralExpression(node) { var contextualType = getContextualType(node); if (contextualType && contextualTypeIsStringLiteralType(contextualType)) { - return getStringLiteralType(node); + return getStringLiteralTypeForText(node.text); } return stringType; } @@ -23527,8 +24204,8 @@ var ts; // - 'left' in property access // - 'object' in indexed access // - target in rhs of import statement - var ok = (node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.expression === node) || - (node.parent.kind === 167 /* ElementAccessExpression */ && node.parent.expression === node) || + var ok = (node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.expression === node) || + (node.parent.kind === 169 /* ElementAccessExpression */ && node.parent.expression === node) || ((node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */) && isInRightSideOfImportOrExportAssignment(node)); if (!ok) { error(node, ts.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment); @@ -23556,7 +24233,7 @@ var ts; return booleanType; case 8 /* NumericLiteral */: return checkNumericLiteral(node); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: return checkTemplateExpression(node); case 9 /* StringLiteral */: return checkStringLiteralExpression(node); @@ -23564,58 +24241,58 @@ var ts; return stringType; case 10 /* RegularExpressionLiteral */: return globalRegExpType; - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return checkArrayLiteral(node, contextualMapper); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return checkObjectLiteral(node, contextualMapper); - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return checkPropertyAccessExpression(node); - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return checkIndexedAccess(node); - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return checkCallExpression(node); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return checkTaggedTemplateExpression(node); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return checkExpression(node.expression, contextualMapper); - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return checkClassExpression(node); - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return checkFunctionExpressionOrObjectLiteralMethod(node, contextualMapper); - case 176 /* TypeOfExpression */: + case 178 /* TypeOfExpression */: return checkTypeOfExpression(node); - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: + case 173 /* TypeAssertionExpression */: + case 191 /* AsExpression */: return checkAssertion(node); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return checkDeleteExpression(node); - case 177 /* VoidExpression */: + case 179 /* VoidExpression */: return checkVoidExpression(node); - case 178 /* AwaitExpression */: + case 180 /* AwaitExpression */: return checkAwaitExpression(node); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return checkPrefixUnaryExpression(node); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return checkPostfixUnaryExpression(node); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return checkBinaryExpression(node, contextualMapper); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return checkConditionalExpression(node, contextualMapper); - case 185 /* SpreadElementExpression */: + case 187 /* SpreadElementExpression */: return checkSpreadElementExpression(node, contextualMapper); - case 187 /* OmittedExpression */: + case 189 /* OmittedExpression */: return undefinedType; - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return checkYieldExpression(node); - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: return checkJsxExpression(node); - case 233 /* JsxElement */: + case 235 /* JsxElement */: return checkJsxElement(node); - case 234 /* JsxSelfClosingElement */: + case 236 /* JsxSelfClosingElement */: return checkJsxSelfClosingElement(node); - case 235 /* JsxOpeningElement */: + case 237 /* JsxOpeningElement */: ts.Debug.fail("Shouldn't ever directly check a JsxOpeningElement"); } return unknownType; @@ -23627,11 +24304,10 @@ var ts; grammarErrorOnFirstToken(node.expression, ts.Diagnostics.Type_expected); } checkSourceElement(node.constraint); + getConstraintOfTypeParameter(getDeclaredTypeOfTypeParameter(getSymbolOfNode(node))); if (produceDiagnostics) { - checkTypeParameterHasIllegalReferencesInConstraint(node); checkTypeNameIsReserved(node.name, ts.Diagnostics.Type_parameter_name_cannot_be_0); } - // TODO: Check multiple declarations are identical } function checkParameter(node) { // Grammar checking @@ -23662,8 +24338,8 @@ var ts; return false; } return node.kind === 143 /* MethodDeclaration */ || - node.kind === 213 /* FunctionDeclaration */ || - node.kind === 173 /* FunctionExpression */; + node.kind === 215 /* FunctionDeclaration */ || + node.kind === 175 /* FunctionExpression */; } function getTypePredicateParameterIndex(parameterList, parameter) { if (parameterList) { @@ -23677,12 +24353,12 @@ var ts; } return -1; } - function isInLegalTypePredicatePosition(node) { + function isInLegalParameterTypePredicatePosition(node) { switch (node.parent.kind) { - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: case 147 /* CallSignature */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 152 /* FunctionType */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: @@ -23690,12 +24366,24 @@ var ts; } return false; } + function isInLegalThisTypePredicatePosition(node) { + if (isInLegalParameterTypePredicatePosition(node)) { + return true; + } + switch (node.parent.kind) { + case 141 /* PropertyDeclaration */: + case 140 /* PropertySignature */: + case 145 /* GetAccessor */: + return node === node.parent.type; + } + return false; + } function checkSignatureDeclaration(node) { // Grammar checking if (node.kind === 149 /* IndexSignature */) { checkGrammarIndexSignature(node); } - else if (node.kind === 152 /* FunctionType */ || node.kind === 213 /* FunctionDeclaration */ || node.kind === 153 /* ConstructorType */ || + else if (node.kind === 152 /* FunctionType */ || node.kind === 215 /* FunctionDeclaration */ || node.kind === 153 /* ConstructorType */ || node.kind === 147 /* CallSignature */ || node.kind === 144 /* Constructor */ || node.kind === 148 /* ConstructSignature */) { checkGrammarFunctionLikeDeclaration(node); @@ -23704,9 +24392,14 @@ var ts; ts.forEach(node.parameters, checkParameter); if (node.type) { if (node.type.kind === 150 /* TypePredicate */) { - var typePredicate = getSignatureFromDeclaration(node).typePredicate; + var returnType = getReturnTypeOfSignature(getSignatureFromDeclaration(node)); + if (!returnType || !(returnType.flags & 134217728 /* PredicateType */)) { + return; + } + var typePredicate = returnType.predicate; var typePredicateNode = node.type; - if (isInLegalTypePredicatePosition(typePredicateNode)) { + checkSourceElement(typePredicateNode); + if (ts.isIdentifierTypePredicate(typePredicate)) { if (typePredicate.parameterIndex >= 0) { if (node.parameters[typePredicate.parameterIndex].dotDotDotToken) { error(typePredicateNode.parameterName, ts.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); @@ -23722,8 +24415,8 @@ var ts; if (hasReportedError) { break; } - if (param.name.kind === 161 /* ObjectBindingPattern */ || - param.name.kind === 162 /* ArrayBindingPattern */) { + if (param.name.kind === 163 /* ObjectBindingPattern */ || + param.name.kind === 164 /* ArrayBindingPattern */) { (function checkBindingPattern(pattern) { for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) { var element = _a[_i]; @@ -23733,8 +24426,8 @@ var ts; hasReportedError = true; break; } - else if (element.name.kind === 162 /* ArrayBindingPattern */ || - element.name.kind === 161 /* ObjectBindingPattern */) { + else if (element.name.kind === 164 /* ArrayBindingPattern */ || + element.name.kind === 163 /* ObjectBindingPattern */) { checkBindingPattern(element.name); } } @@ -23746,9 +24439,6 @@ var ts; } } } - else { - error(typePredicateNode, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); - } } else { checkSourceElement(node.type); @@ -23789,7 +24479,7 @@ var ts; checkSpecializedSignatureDeclaration(node); } function checkTypeForDuplicateIndexSignatures(node) { - if (node.kind === 215 /* InterfaceDeclaration */) { + if (node.kind === 217 /* InterfaceDeclaration */) { var nodeSymbol = getSymbolOfNode(node); // in case of merging interface declaration it is possible that we'll enter this check procedure several times for every declaration // to prevent this run check only for the first declaration of a given kind @@ -23839,7 +24529,7 @@ var ts; // Grammar checking checkGrammarMethod(node) || checkGrammarComputedPropertyName(node.name); // Grammar checking for modifiers is done inside the function checkGrammarFunctionLikeDeclaration - checkFunctionLikeDeclaration(node); + checkFunctionOrMethodDeclaration(node); // Abstract methods cannot have an implementation. // Extra checks are to avoid reporting multiple errors relating to the "abstractness" of the node. if (node.flags & 128 /* Abstract */ && node.body) { @@ -23866,7 +24556,7 @@ var ts; return; } function isSuperCallExpression(n) { - return n.kind === 168 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; + return n.kind === 170 /* CallExpression */ && n.expression.kind === 95 /* SuperKeyword */; } function containsSuperCallAsComputedPropertyName(n) { return n.name && containsSuperCall(n.name); @@ -23887,7 +24577,7 @@ var ts; if (n.kind === 97 /* ThisKeyword */) { error(n, ts.Diagnostics.this_cannot_be_referenced_in_current_location); } - else if (n.kind !== 173 /* FunctionExpression */ && n.kind !== 213 /* FunctionDeclaration */) { + else if (n.kind !== 175 /* FunctionExpression */ && n.kind !== 215 /* FunctionDeclaration */) { ts.forEachChild(n, markThisReferencesAsErrors); } } @@ -23922,7 +24612,7 @@ var ts; var superCallStatement; for (var _i = 0, statements_2 = statements; _i < statements_2.length; _i++) { var statement = statements_2[_i]; - if (statement.kind === 195 /* ExpressionStatement */ && isSuperCallExpression(statement.expression)) { + if (statement.kind === 197 /* ExpressionStatement */ && isSuperCallExpression(statement.expression)) { superCallStatement = statement; break; } @@ -23948,6 +24638,8 @@ var ts; if (produceDiagnostics) { // Grammar checking accessors checkGrammarFunctionLikeDeclaration(node) || checkGrammarAccessor(node) || checkGrammarComputedPropertyName(node.name); + checkDecorators(node); + checkSignatureDeclaration(node); if (node.kind === 145 /* GetAccessor */) { if (!ts.isInAmbientContext(node) && ts.nodeIsPresent(node.body) && (node.flags & 524288 /* HasImplicitReturn */)) { if (node.flags & 1048576 /* HasExplicitReturn */) { @@ -23960,6 +24652,12 @@ var ts; } } } + // Do not use hasDynamicName here, because that returns false for well known symbols. + // We want to perform checkComputedPropertyName for all computed properties, including + // well known symbols. + if (node.name.kind === 136 /* ComputedPropertyName */) { + checkComputedPropertyName(node.name); + } if (!ts.hasDynamicName(node)) { // TypeScript 1.0 spec (April 2014): 8.4.3 // Accessors for the same member name must specify the same accessibility. @@ -23982,18 +24680,32 @@ var ts; } getTypeOfAccessors(getSymbolOfNode(node)); } - checkFunctionLikeDeclaration(node); + if (node.parent.kind !== 167 /* ObjectLiteralExpression */) { + checkSourceElement(node.body); + } + else { + checkNodeDeferred(node); + } + } + function checkAccessorDeferred(node) { + checkSourceElement(node.body); } function checkMissingDeclaration(node) { checkDecorators(node); } - function checkTypeArgumentConstraints(typeParameters, typeArguments) { + function checkTypeArgumentConstraints(typeParameters, typeArgumentNodes) { + var typeArguments; + var mapper; var result = true; for (var i = 0; i < typeParameters.length; i++) { var constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { + if (!typeArguments) { + typeArguments = ts.map(typeArgumentNodes, getTypeFromTypeNode); + mapper = createTypeMapper(typeParameters, typeArguments); + } var typeArgument = typeArguments[i]; - result = result && checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + result = result && checkTypeAssignableTo(typeArgument, getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), typeArgumentNodes[i], ts.Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } return result; @@ -24059,7 +24771,7 @@ var ts; var signaturesToCheck; // Unnamed (call\construct) signatures in interfaces are inherited and not shadowed so examining just node symbol won't give complete answer. // Use declaring type to obtain full list of signatures. - if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 215 /* InterfaceDeclaration */) { + if (!signatureDeclarationNode.name && signatureDeclarationNode.parent && signatureDeclarationNode.parent.kind === 217 /* InterfaceDeclaration */) { ts.Debug.assert(signatureDeclarationNode.kind === 147 /* CallSignature */ || signatureDeclarationNode.kind === 148 /* ConstructSignature */); var signatureKind = signatureDeclarationNode.kind === 147 /* CallSignature */ ? 0 /* Call */ : 1 /* Construct */; var containingSymbol = getSymbolOfNode(signatureDeclarationNode.parent); @@ -24071,7 +24783,7 @@ var ts; } for (var _i = 0, signaturesToCheck_1 = signaturesToCheck; _i < signaturesToCheck_1.length; _i++) { var otherSignature = signaturesToCheck_1[_i]; - if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature)) { + if (!otherSignature.hasStringLiterals && isSignatureAssignableTo(signature, otherSignature, /*ignoreReturnTypes*/ false)) { return; } } @@ -24081,9 +24793,9 @@ var ts; var flags = ts.getCombinedNodeFlags(n); // children of classes (even ambient classes) should not be marked as ambient or export // because those flags have no useful semantics there. - if (n.parent.kind !== 215 /* InterfaceDeclaration */ && - n.parent.kind !== 214 /* ClassDeclaration */ && - n.parent.kind !== 186 /* ClassExpression */ && + if (n.parent.kind !== 217 /* InterfaceDeclaration */ && + n.parent.kind !== 216 /* ClassDeclaration */ && + n.parent.kind !== 188 /* ClassExpression */ && ts.isInAmbientContext(n)) { if (!(flags & 4 /* Ambient */)) { // It is nested in an ambient context, which means it is automatically exported @@ -24164,16 +24876,23 @@ var ts; seen = c === node; } }); - if (subsequentNode) { + // We may be here because of some extra junk between overloads that could not be parsed into a valid node. + // In this case the subsequent node is not really consecutive (.pos !== node.end), and we must ignore it here. + if (subsequentNode && subsequentNode.pos === node.end) { if (subsequentNode.kind === node.kind) { var errorNode_1 = subsequentNode.name || subsequentNode; // TODO(jfreeman): These are methods, so handle computed name case if (node.name && subsequentNode.name && node.name.text === subsequentNode.name.text) { - // the only situation when this is possible (same kind\same name but different symbol) - mixed static and instance class members - ts.Debug.assert(node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */); - ts.Debug.assert((node.flags & 64 /* Static */) !== (subsequentNode.flags & 64 /* Static */)); - var diagnostic = node.flags & 64 /* Static */ ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; - error(errorNode_1, diagnostic); + var reportError = (node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */) && + (node.flags & 64 /* Static */) !== (subsequentNode.flags & 64 /* Static */); + // we can get here in two cases + // 1. mixed static and instance class members + // 2. something with the same name was defined before the set of overloads that prevents them from merging + // here we'll report error only for the first case since for second we should already report error in binder + if (reportError) { + var diagnostic = node.flags & 64 /* Static */ ? ts.Diagnostics.Function_overload_must_be_static : ts.Diagnostics.Function_overload_must_not_be_static; + error(errorNode_1, diagnostic); + } return; } else if (ts.nodeIsPresent(subsequentNode.body)) { @@ -24206,7 +24925,7 @@ var ts; var current = declarations_4[_i]; var node = current; var inAmbientContext = ts.isInAmbientContext(node); - var inAmbientContextOrInterface = node.parent.kind === 215 /* InterfaceDeclaration */ || node.parent.kind === 155 /* TypeLiteral */ || inAmbientContext; + var inAmbientContextOrInterface = node.parent.kind === 217 /* InterfaceDeclaration */ || node.parent.kind === 155 /* TypeLiteral */ || inAmbientContext; if (inAmbientContextOrInterface) { // check if declarations are consecutive only if they are non-ambient // 1. ambient declarations can be interleaved @@ -24217,7 +24936,7 @@ var ts; // 2. mixing ambient and non-ambient declarations is a separate error that will be reported - do not want to report an extra one previousDeclaration = undefined; } - if (node.kind === 213 /* FunctionDeclaration */ || node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */ || node.kind === 144 /* Constructor */) { + if (node.kind === 215 /* FunctionDeclaration */ || node.kind === 143 /* MethodDeclaration */ || node.kind === 142 /* MethodSignature */ || node.kind === 144 /* Constructor */) { var currentNodeFlags = getEffectiveDeclarationFlags(node, flagsToCheck); someNodeFlags |= currentNodeFlags; allNodeFlags &= currentNodeFlags; @@ -24288,7 +25007,7 @@ var ts; // The implementation is completely unrelated to the specialized signature, yet we do not check this. for (var _a = 0, signatures_3 = signatures; _a < signatures_3.length; _a++) { var signature = signatures_3[_a]; - if (!signature.hasStringLiterals && !isSignatureAssignableTo(bodySignature, signature)) { + if (!signature.hasStringLiterals && !isImplementationCompatibleWithOverload(bodySignature, signature)) { error(signature.declaration, ts.Diagnostics.Overload_signature_is_not_compatible_with_function_implementation); break; } @@ -24357,16 +25076,16 @@ var ts; } function getDeclarationSpaces(d) { switch (d.kind) { - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return 2097152 /* ExportType */; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return d.name.kind === 9 /* StringLiteral */ || ts.getModuleInstanceState(d) !== 0 /* NonInstantiated */ ? 4194304 /* ExportNamespace */ | 1048576 /* ExportValue */ : 4194304 /* ExportNamespace */; - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: return 2097152 /* ExportType */ | 1048576 /* ExportValue */; - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: var result = 0; var target = resolveAlias(getSymbolOfNode(d)); ts.forEach(target.declarations, function (d) { result |= getDeclarationSpaces(d); }); @@ -24587,6 +25306,8 @@ var ts; error(node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type, typeName); return unknownType; } + // If the Promise constructor, resolved locally, is an alias symbol we should mark it as referenced. + checkReturnTypeAnnotationAsExpression(node); // Validate the promise constructor type. var promiseConstructorType = getTypeOfSymbol(promiseConstructor); if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, node, ts.Diagnostics.Type_0_is_not_a_valid_async_function_return_type)) { @@ -24594,10 +25315,10 @@ var ts; } // Verify there is no local declaration that could collide with the promise constructor. var promiseName = ts.getEntityNameFromTypeNode(node.type); - var root = getFirstIdentifier(promiseName); - var rootSymbol = getSymbol(node.locals, root.text, 107455 /* Value */); + var promiseNameOrNamespaceRoot = getFirstIdentifier(promiseName); + var rootSymbol = getSymbol(node.locals, promiseNameOrNamespaceRoot.text, 107455 /* Value */); if (rootSymbol) { - error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, root.text, getFullyQualifiedName(promiseConstructor)); + error(rootSymbol.valueDeclaration, ts.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, promiseNameOrNamespaceRoot.text, getFullyQualifiedName(promiseConstructor)); return unknownType; } // Get and return the awaited type of the return type. @@ -24614,7 +25335,7 @@ var ts; var headMessage = getDiagnosticHeadMessageForDecoratorResolution(node); var errorInfo; switch (node.parent.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: var classSymbol = getSymbolOfNode(node.parent); var classConstructorType = getTypeOfSymbol(classSymbol); expectedReturnType = getUnionType([classConstructorType, voidType]); @@ -24662,23 +25383,10 @@ var ts; * an expression if it is a type reference to a type with a value declaration. */ function checkTypeAnnotationAsExpression(node) { - switch (node.kind) { - case 141 /* PropertyDeclaration */: - checkTypeNodeAsExpression(node.type); - break; - case 138 /* Parameter */: - checkTypeNodeAsExpression(node.type); - break; - case 143 /* MethodDeclaration */: - checkTypeNodeAsExpression(node.type); - break; - case 145 /* GetAccessor */: - checkTypeNodeAsExpression(node.type); - break; - case 146 /* SetAccessor */: - checkTypeNodeAsExpression(ts.getSetAccessorTypeAnnotationNode(node)); - break; - } + checkTypeNodeAsExpression(node.type); + } + function checkReturnTypeAnnotationAsExpression(node) { + checkTypeNodeAsExpression(node.type); } /** Checks the type annotation of the parameters of a function/method or the constructor of a class as expressions */ function checkParameterTypeAnnotationsAsExpressions(node) { @@ -24704,17 +25412,18 @@ var ts; if (compilerOptions.emitDecoratorMetadata) { // we only need to perform these checks if we are emitting serialized type metadata for the target of a decorator. switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: var constructor = ts.getFirstConstructorWithBody(node); if (constructor) { checkParameterTypeAnnotationsAsExpressions(constructor); } break; case 143 /* MethodDeclaration */: - checkParameterTypeAnnotationsAsExpressions(node); - // fall-through - case 146 /* SetAccessor */: case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + checkParameterTypeAnnotationsAsExpressions(node); + checkReturnTypeAnnotationAsExpression(node); + break; case 141 /* PropertyDeclaration */: case 138 /* Parameter */: checkTypeAnnotationAsExpression(node); @@ -24729,13 +25438,13 @@ var ts; } function checkFunctionDeclaration(node) { if (produceDiagnostics) { - checkFunctionLikeDeclaration(node) || checkGrammarForGenerator(node); + checkFunctionOrMethodDeclaration(node) || checkGrammarForGenerator(node); checkCollisionWithCapturedSuperVariable(node, node.name); checkCollisionWithCapturedThisVariable(node, node.name); checkCollisionWithRequireExportsInGeneratedCode(node, node.name); } } - function checkFunctionLikeDeclaration(node) { + function checkFunctionOrMethodDeclaration(node) { checkDecorators(node); checkSignatureDeclaration(node); var isAsync = ts.isAsyncFunctionLike(node); @@ -24756,7 +25465,13 @@ var ts; // - if node.localSymbol === undefined - this node is non-exported so we can just pick the result of getSymbolOfNode var symbol = getSymbolOfNode(node); var localSymbol = node.localSymbol || symbol; - var firstDeclaration = ts.getDeclarationOfKind(localSymbol, node.kind); + // Since the javascript won't do semantic analysis like typescript, + // if the javascript file comes before the typescript file and both contain same name functions, + // checkFunctionOrConstructorSymbol wouldn't be called if we didnt ignore javascript function. + var firstDeclaration = ts.forEach(localSymbol.declarations, + // Get first non javascript function declaration + function (declaration) { return declaration.kind === node.kind && !ts.isSourceFileJavaScript(getSourceFile(declaration)) ? + declaration : undefined; }); // Only type check the symbol once if (node === firstDeclaration) { checkFunctionOrConstructorSymbol(localSymbol); @@ -24770,13 +25485,9 @@ var ts; } } checkSourceElement(node.body); - if (node.type && !isAccessor(node.kind) && !node.asteriskToken) { - var returnType = getTypeFromTypeNode(node.type); - var promisedType; - if (isAsync) { - promisedType = checkAsyncFunctionReturnType(node); - } - checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, isAsync ? promisedType : returnType); + if (!node.asteriskToken) { + var returnOrPromisedType = node.type && (isAsync ? checkAsyncFunctionReturnType(node) : getTypeFromTypeNode(node.type)); + checkAllCodePathsInNonVoidFunctionReturnOrThrow(node, returnOrPromisedType); } if (produceDiagnostics && !node.type) { // Report an implicit any error if there is no body, no explicit return type, and node is not a private method @@ -24794,13 +25505,10 @@ var ts; } function checkBlock(node) { // Grammar checking for SyntaxKind.Block - if (node.kind === 192 /* Block */) { + if (node.kind === 194 /* Block */) { checkGrammarStatementInAmbientContext(node); } ts.forEach(node.statements, checkSourceElement); - if (ts.isFunctionBlock(node) || node.kind === 219 /* ModuleBlock */) { - checkFunctionAndClassExpressionBodies(node); - } } function checkCollisionWithArgumentsInGeneratedCode(node) { // no rest parameters \ declaration context \ overload - no codegen impact @@ -24884,12 +25592,12 @@ var ts; return; } // Uninstantiated modules shouldnt do this check - if (node.kind === 218 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { + if (node.kind === 220 /* ModuleDeclaration */ && ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return; } // In case of variable declaration, node.parent is variable statement so look at the variable statement's parent var parent = getDeclarationContainer(node); - if (parent.kind === 248 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { + if (parent.kind === 250 /* SourceFile */ && ts.isExternalOrCommonJsModule(parent)) { // If the declaration happens to be in external module, report error that require and exports are reserved keywords error(name, ts.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module, ts.declarationNameToString(name), ts.declarationNameToString(name)); } @@ -24924,7 +25632,7 @@ var ts; // skip variable declarations that don't have initializers // NOTE: in ES6 spec initializer is required in variable declarations where name is binding pattern // so we'll always treat binding elements as initialized - if (node.kind === 211 /* VariableDeclaration */ && !node.initializer) { + if (node.kind === 213 /* VariableDeclaration */ && !node.initializer) { return; } var symbol = getSymbolOfNode(node); @@ -24934,17 +25642,17 @@ var ts; localDeclarationSymbol !== symbol && localDeclarationSymbol.flags & 2 /* BlockScopedVariable */) { if (getDeclarationFlagsFromSymbol(localDeclarationSymbol) & 24576 /* BlockScoped */) { - var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 212 /* VariableDeclarationList */); - var container = varDeclList.parent.kind === 193 /* VariableStatement */ && varDeclList.parent.parent + var varDeclList = ts.getAncestor(localDeclarationSymbol.valueDeclaration, 214 /* VariableDeclarationList */); + var container = varDeclList.parent.kind === 195 /* VariableStatement */ && varDeclList.parent.parent ? varDeclList.parent.parent : undefined; // names of block-scoped and function scoped variables can collide only // if block scoped variable is defined in the function\module\source file scope (because of variable hoisting) var namesShareScope = container && - (container.kind === 192 /* Block */ && ts.isFunctionLike(container.parent) || - container.kind === 219 /* ModuleBlock */ || - container.kind === 218 /* ModuleDeclaration */ || - container.kind === 248 /* SourceFile */); + (container.kind === 194 /* Block */ && ts.isFunctionLike(container.parent) || + container.kind === 221 /* ModuleBlock */ || + container.kind === 220 /* ModuleDeclaration */ || + container.kind === 250 /* SourceFile */); // here we know that function scoped variable is shadowed by block scoped one // if they are defined in the same scope - binder has already reported redeclaration error // otherwise if variable has an initializer - show error that initialization will fail @@ -25002,7 +25710,7 @@ var ts; checkExpressionCached(node.initializer); } } - if (node.kind === 163 /* BindingElement */) { + if (node.kind === 165 /* BindingElement */) { // check computed properties inside property names of binding elements if (node.propertyName && node.propertyName.kind === 136 /* ComputedPropertyName */) { checkComputedPropertyName(node.propertyName); @@ -25048,7 +25756,7 @@ var ts; if (node.kind !== 141 /* PropertyDeclaration */ && node.kind !== 140 /* PropertySignature */) { // We know we don't have a binding pattern or computed name here checkExportsOnMergedDeclarations(node); - if (node.kind === 211 /* VariableDeclaration */ || node.kind === 163 /* BindingElement */) { + if (node.kind === 213 /* VariableDeclaration */ || node.kind === 165 /* BindingElement */) { checkVarDeclaredNamesNotShadowed(node); } checkCollisionWithCapturedSuperVariable(node, node.name); @@ -25071,7 +25779,7 @@ var ts; } function checkGrammarDisallowedModifiersOnObjectLiteralExpressionMethod(node) { // We only disallow modifier on a method declaration if it is a property of object-literal-expression - if (node.modifiers && node.parent.kind === 165 /* ObjectLiteralExpression */) { + if (node.modifiers && node.parent.kind === 167 /* ObjectLiteralExpression */) { if (ts.isAsyncFunctionLike(node)) { if (node.modifiers.length > 1) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); @@ -25092,7 +25800,7 @@ var ts; checkGrammarStatementInAmbientContext(node); checkExpression(node.expression); checkSourceElement(node.thenStatement); - if (node.thenStatement.kind === 194 /* EmptyStatement */) { + if (node.thenStatement.kind === 196 /* EmptyStatement */) { error(node.thenStatement, ts.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement); } checkSourceElement(node.elseStatement); @@ -25112,12 +25820,12 @@ var ts; function checkForStatement(node) { // Grammar checking if (!checkGrammarStatementInAmbientContext(node)) { - if (node.initializer && node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 214 /* VariableDeclarationList */) { checkGrammarVariableDeclarationList(node.initializer); } } if (node.initializer) { - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { ts.forEach(node.initializer.declarations, checkVariableDeclaration); } else { @@ -25137,14 +25845,14 @@ var ts; // via checkRightHandSideOfForOf. // If the LHS is an expression, check the LHS, as a destructuring assignment or as a reference. // Then check that the RHS is assignable to it. - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { checkForInOrForOfVariableDeclaration(node); } else { var varExpr = node.initializer; var iteratedType = checkRightHandSideOfForOf(node.expression); // There may be a destructuring assignment on the left side - if (varExpr.kind === 164 /* ArrayLiteralExpression */ || varExpr.kind === 165 /* ObjectLiteralExpression */) { + if (varExpr.kind === 166 /* ArrayLiteralExpression */ || varExpr.kind === 167 /* ObjectLiteralExpression */) { // iteratedType may be undefined. In this case, we still want to check the structure of // varExpr, in particular making sure it's a valid LeftHandSideExpression. But we'd like // to short circuit the type relation checking as much as possible, so we pass the unknownType. @@ -25173,7 +25881,7 @@ var ts; // for (let VarDecl in Expr) Statement // VarDecl must be a variable declaration without a type annotation that declares a variable of type Any, // and Expr must be an expression of type Any, an object type, or a type parameter type. - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { var variable = node.initializer.declarations[0]; if (variable && ts.isBindingPattern(variable.name)) { error(variable.name, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); @@ -25187,7 +25895,7 @@ var ts; // and Expr must be an expression of type Any, an object type, or a type parameter type. var varExpr = node.initializer; var leftType = checkExpression(varExpr); - if (varExpr.kind === 164 /* ArrayLiteralExpression */ || varExpr.kind === 165 /* ObjectLiteralExpression */) { + if (varExpr.kind === 166 /* ArrayLiteralExpression */ || varExpr.kind === 167 /* ObjectLiteralExpression */) { error(varExpr, ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern); } else if (!isTypeAnyOrAllConstituentTypesHaveKind(leftType, 258 /* StringLike */)) { @@ -25383,7 +26091,13 @@ var ts; ts.Debug.assert(languageVersion < 2 /* ES6 */); // After we remove all types that are StringLike, we will know if there was a string constituent // based on whether the remaining type is the same as the initial type. - var arrayType = removeTypesFromUnionType(arrayOrStringType, 258 /* StringLike */, /*isTypeOfKind*/ true, /*allowEmptyUnionResult*/ true); + var arrayType = arrayOrStringType; + if (arrayOrStringType.flags & 16384 /* Union */) { + arrayType = getUnionType(ts.filter(arrayOrStringType.types, function (t) { return !(t.flags & 258 /* StringLike */); })); + } + else if (arrayOrStringType.flags & 258 /* StringLike */) { + arrayType = emptyUnionType; + } var hasStringConstituent = arrayOrStringType !== arrayType; var reportedError = false; if (hasStringConstituent) { @@ -25457,7 +26171,7 @@ var ts; error(node.expression, ts.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class); } } - else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || signature.typePredicate) { + else if (func.type || isGetAccessorWithAnnotatatedSetAccessor(func) || returnType.flags & 134217728 /* PredicateType */) { if (ts.isAsyncFunctionLike(func)) { var promisedType = getPromisedType(returnType); var awaitedType = checkAwaitedType(exprType, node.expression, ts.Diagnostics.Return_expression_in_async_function_does_not_have_a_valid_callable_then_member); @@ -25494,7 +26208,7 @@ var ts; var expressionTypeIsStringLike = someConstituentTypeHasKind(expressionType, 258 /* StringLike */); ts.forEach(node.caseBlock.clauses, function (clause) { // Grammar check for duplicate default clauses, skip if we already report duplicate default clause - if (clause.kind === 242 /* DefaultClause */ && !hasDuplicateDefaultClause) { + if (clause.kind === 244 /* DefaultClause */ && !hasDuplicateDefaultClause) { if (firstDefaultClause === undefined) { firstDefaultClause = clause; } @@ -25506,17 +26220,17 @@ var ts; hasDuplicateDefaultClause = true; } } - if (produceDiagnostics && clause.kind === 241 /* CaseClause */) { + if (produceDiagnostics && clause.kind === 243 /* CaseClause */) { var caseClause = clause; // TypeScript 1.0 spec (April 2014):5.9 // In a 'switch' statement, each 'case' expression must be of a type that is assignable to or from the type of the 'switch' expression. var caseType = checkExpression(caseClause.expression); + var expressionTypeIsAssignableToCaseType = // Permit 'number[] | "foo"' to be asserted to 'string'. - if (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258 /* StringLike */)) { - return; - } - if (!isTypeAssignableTo(expressionType, caseType)) { - // check 'expressionType isAssignableTo caseType' failed, try the reversed check and report errors if it fails + (expressionTypeIsStringLike && someConstituentTypeHasKind(caseType, 258 /* StringLike */)) || + isTypeAssignableTo(expressionType, caseType); + if (!expressionTypeIsAssignableToCaseType) { + // 'expressionType is not assignable to caseType', try the reversed check and report errors if it fails checkTypeAssignableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); } } @@ -25531,7 +26245,7 @@ var ts; if (ts.isFunctionLike(current)) { break; } - if (current.kind === 207 /* LabeledStatement */ && current.label.text === node.label.text) { + if (current.kind === 209 /* LabeledStatement */ && current.label.text === node.label.text) { var sourceFile = ts.getSourceFileOfNode(node); grammarErrorOnNode(node.label, ts.Diagnostics.Duplicate_label_0, ts.getTextOfNodeFromSourceText(sourceFile.text, node.label)); break; @@ -25688,8 +26402,12 @@ var ts; } function checkClassExpression(node) { checkClassLikeDeclaration(node); + checkNodeDeferred(node); return getTypeOfSymbol(getSymbolOfNode(node)); } + function checkClassExpressionDeferred(node) { + ts.forEach(node.members, checkSourceElement); + } function checkClassDeclaration(node) { if (!node.name && !(node.flags & 512 /* Default */)) { grammarErrorOnFirstToken(node, ts.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name); @@ -25814,7 +26532,7 @@ var ts; // If there is no declaration for the derived class (as in the case of class expressions), // then the class cannot be declared abstract. if (baseDeclarationFlags & 128 /* Abstract */ && (!derivedClassDecl || !(derivedClassDecl.flags & 128 /* Abstract */))) { - if (derivedClassDecl.kind === 186 /* ClassExpression */) { + if (derivedClassDecl.kind === 188 /* ClassExpression */) { error(derivedClassDecl, ts.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1, symbolToString(baseProperty), typeToString(baseType)); } else { @@ -25932,7 +26650,7 @@ var ts; checkTypeNameIsReserved(node.name, ts.Diagnostics.Interface_name_cannot_be_0); checkExportsOnMergedDeclarations(node); var symbol = getSymbolOfNode(node); - var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 215 /* InterfaceDeclaration */); + var firstInterfaceDecl = ts.getDeclarationOfKind(symbol, 217 /* InterfaceDeclaration */); if (symbol.declarations.length > 1) { if (node !== firstInterfaceDecl && !areTypeParametersIdentical(firstInterfaceDecl.typeParameters, node.typeParameters)) { error(node.name, ts.Diagnostics.All_declarations_of_an_interface_must_have_identical_type_parameters); @@ -26006,7 +26724,8 @@ var ts; error(member.name, ts.Diagnostics.Enum_member_must_have_initializer); } if (autoValue !== undefined) { - getNodeLinks(member).enumMemberValue = autoValue++; + getNodeLinks(member).enumMemberValue = autoValue; + autoValue++; } } nodeLinks.flags |= 8192 /* EnumValuesComputed */; @@ -26041,7 +26760,7 @@ var ts; return value; function evalConstant(e) { switch (e.kind) { - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: var value_1 = evalConstant(e.operand); if (value_1 === undefined) { return undefined; @@ -26052,7 +26771,7 @@ var ts; case 50 /* TildeToken */: return ~value_1; } return undefined; - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: var left = evalConstant(e.left); if (left === undefined) { return undefined; @@ -26077,11 +26796,11 @@ var ts; return undefined; case 8 /* NumericLiteral */: return +e.text; - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return evalConstant(e.expression); case 69 /* Identifier */: - case 167 /* ElementAccessExpression */: - case 166 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 168 /* PropertyAccessExpression */: var member = initializer.parent; var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent)); var enumType_1; @@ -26094,7 +26813,7 @@ var ts; } else { var expression; - if (e.kind === 167 /* ElementAccessExpression */) { + if (e.kind === 169 /* ElementAccessExpression */) { if (e.argumentExpression === undefined || e.argumentExpression.kind !== 9 /* StringLiteral */) { return undefined; @@ -26112,7 +26831,7 @@ var ts; if (current.kind === 69 /* Identifier */) { break; } - else if (current.kind === 166 /* PropertyAccessExpression */) { + else if (current.kind === 168 /* PropertyAccessExpression */) { current = current.expression; } else { @@ -26183,7 +26902,7 @@ var ts; var seenEnumMissingInitialInitializer = false; ts.forEach(enumSymbol.declarations, function (declaration) { // return true if we hit a violation of the rule, false otherwise - if (declaration.kind !== 217 /* EnumDeclaration */) { + if (declaration.kind !== 219 /* EnumDeclaration */) { return false; } var enumDeclaration = declaration; @@ -26206,8 +26925,8 @@ var ts; var declarations = symbol.declarations; for (var _i = 0, declarations_5 = declarations; _i < declarations_5.length; _i++) { var declaration = declarations_5[_i]; - if ((declaration.kind === 214 /* ClassDeclaration */ || - (declaration.kind === 213 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && + if ((declaration.kind === 216 /* ClassDeclaration */ || + (declaration.kind === 215 /* FunctionDeclaration */ && ts.nodeIsPresent(declaration.body))) && !ts.isInAmbientContext(declaration)) { return declaration; } @@ -26263,7 +26982,7 @@ var ts; } // if the module merges with a class declaration in the same lexical scope, // we need to track this to ensure the correct emit. - var mergedClass = ts.getDeclarationOfKind(symbol, 214 /* ClassDeclaration */); + var mergedClass = ts.getDeclarationOfKind(symbol, 216 /* ClassDeclaration */); if (mergedClass && inSameLexicalScope(node, mergedClass)) { getNodeLinks(node).flags |= 32768 /* LexicalModuleMergesWithClass */; @@ -26286,7 +27005,7 @@ var ts; if (node.kind === 135 /* QualifiedName */) { node = node.left; } - else if (node.kind === 166 /* PropertyAccessExpression */) { + else if (node.kind === 168 /* PropertyAccessExpression */) { node = node.expression; } else { @@ -26302,9 +27021,9 @@ var ts; error(moduleName, ts.Diagnostics.String_literal_expected); return false; } - var inAmbientExternalModule = node.parent.kind === 219 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; - if (node.parent.kind !== 248 /* SourceFile */ && !inAmbientExternalModule) { - error(moduleName, node.kind === 228 /* ExportDeclaration */ ? + var inAmbientExternalModule = node.parent.kind === 221 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; + if (node.parent.kind !== 250 /* SourceFile */ && !inAmbientExternalModule) { + error(moduleName, node.kind === 230 /* ExportDeclaration */ ? ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace : ts.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module); return false; @@ -26327,7 +27046,7 @@ var ts; (symbol.flags & 793056 /* Type */ ? 793056 /* Type */ : 0) | (symbol.flags & 1536 /* Namespace */ ? 1536 /* Namespace */ : 0); if (target.flags & excludedMeanings) { - var message = node.kind === 230 /* ExportSpecifier */ ? + var message = node.kind === 232 /* ExportSpecifier */ ? ts.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0 : ts.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0; error(node, message, symbolToString(symbol)); @@ -26354,7 +27073,7 @@ var ts; checkImportBinding(importClause); } if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 226 /* NamespaceImport */) { checkImportBinding(importClause.namedBindings); } else { @@ -26411,8 +27130,8 @@ var ts; // export { x, y } // export { x, y } from "foo" ts.forEach(node.exportClause.elements, checkExportSpecifier); - var inAmbientExternalModule = node.parent.kind === 219 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; - if (node.parent.kind !== 248 /* SourceFile */ && !inAmbientExternalModule) { + var inAmbientExternalModule = node.parent.kind === 221 /* ModuleBlock */ && node.parent.parent.name.kind === 9 /* StringLiteral */; + if (node.parent.kind !== 250 /* SourceFile */ && !inAmbientExternalModule) { error(node, ts.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace); } } @@ -26426,7 +27145,7 @@ var ts; } } function checkGrammarModuleElementContext(node, errorMessage) { - if (node.parent.kind !== 248 /* SourceFile */ && node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 218 /* ModuleDeclaration */) { + if (node.parent.kind !== 250 /* SourceFile */ && node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 220 /* ModuleDeclaration */) { return grammarErrorOnFirstToken(node, errorMessage); } } @@ -26441,8 +27160,8 @@ var ts; // If we hit an export assignment in an illegal context, just bail out to avoid cascading errors. return; } - var container = node.parent.kind === 248 /* SourceFile */ ? node.parent : node.parent.parent; - if (container.kind === 218 /* ModuleDeclaration */ && container.name.kind === 69 /* Identifier */) { + var container = node.parent.kind === 250 /* SourceFile */ ? node.parent : node.parent.parent; + if (container.kind === 220 /* ModuleDeclaration */ && container.name.kind === 69 /* Identifier */) { error(node, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace); return; } @@ -26468,15 +27187,6 @@ var ts; } } } - function getModuleStatements(node) { - if (node.kind === 248 /* SourceFile */) { - return node.statements; - } - if (node.kind === 218 /* ModuleDeclaration */ && node.body.kind === 219 /* ModuleBlock */) { - return node.body.statements; - } - return emptyArray; - } function hasExportedMembers(moduleSymbol) { for (var id in moduleSymbol.exports) { if (id !== "export=") { @@ -26494,13 +27204,43 @@ var ts; var declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, ts.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } + // Checks for export * conflicts + var exports = getExportsOfModule(moduleSymbol); + for (var id in exports) { + if (id === "__export") { + continue; + } + var _a = exports[id], declarations = _a.declarations, flags = _a.flags; + // 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 & (1536 /* Namespace */ | 64 /* Interface */ | 384 /* Enum */)) && (flags & 524288 /* TypeAlias */ ? declarations.length - 1 : declarations.length) > 1) { + var exportedDeclarations = ts.filter(declarations, isNotOverload); + if (exportedDeclarations.length > 1) { + for (var _i = 0, exportedDeclarations_1 = exportedDeclarations; _i < exportedDeclarations_1.length; _i++) { + var declaration = exportedDeclarations_1[_i]; + diagnostics.add(ts.createDiagnosticForNode(declaration, ts.Diagnostics.Cannot_redeclare_exported_variable_0, id)); + } + } + } + } links.exportsChecked = true; } + function isNotOverload(declaration) { + return declaration.kind !== 215 /* FunctionDeclaration */ || !!declaration.body; + } } function checkTypePredicate(node) { - if (!isInLegalTypePredicatePosition(node)) { + var parameterName = node.parameterName; + if (parameterName.kind === 69 /* Identifier */ && !isInLegalParameterTypePredicatePosition(node)) { error(node, ts.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods); } + else if (parameterName.kind === 161 /* ThisType */) { + if (!isInLegalThisTypePredicatePosition(node)) { + error(node, ts.Diagnostics.A_this_based_type_predicate_is_only_allowed_within_a_class_or_interface_s_members_get_accessors_or_return_type_positions_for_functions_and_methods); + } + else { + getTypeFromThisTypeNode(parameterName); + } + } } function checkSourceElement(node) { if (!node) { @@ -26511,10 +27251,10 @@ var ts; // Only bother checking on a few construct kinds. We don't want to be excessivly // hitting the cancellation token on every node we check. switch (kind) { - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } @@ -26558,71 +27298,71 @@ var ts; return checkUnionOrIntersectionType(node); case 160 /* ParenthesizedType */: return checkSourceElement(node.type); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return checkFunctionDeclaration(node); - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return checkBlock(node); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return checkVariableStatement(node); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return checkExpressionStatement(node); - case 196 /* IfStatement */: + case 198 /* IfStatement */: return checkIfStatement(node); - case 197 /* DoStatement */: + case 199 /* DoStatement */: return checkDoStatement(node); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: return checkWhileStatement(node); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return checkForStatement(node); - case 200 /* ForInStatement */: + case 202 /* ForInStatement */: return checkForInStatement(node); - case 201 /* ForOfStatement */: + case 203 /* ForOfStatement */: return checkForOfStatement(node); - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 205 /* BreakStatement */: return checkBreakOrContinueStatement(node); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return checkReturnStatement(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return checkWithStatement(node); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return checkSwitchStatement(node); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return checkLabeledStatement(node); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: return checkThrowStatement(node); - case 209 /* TryStatement */: + case 211 /* TryStatement */: return checkTryStatement(node); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return checkVariableDeclaration(node); - case 163 /* BindingElement */: + case 165 /* BindingElement */: return checkBindingElement(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return checkClassDeclaration(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return checkInterfaceDeclaration(node); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return checkTypeAliasDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return checkEnumDeclaration(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return checkModuleDeclaration(node); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return checkImportDeclaration(node); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return checkImportEqualsDeclaration(node); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return checkExportDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return checkExportAssignment(node); - case 194 /* EmptyStatement */: + case 196 /* EmptyStatement */: checkGrammarStatementInAmbientContext(node); return; - case 210 /* DebuggerStatement */: + case 212 /* DebuggerStatement */: checkGrammarStatementInAmbientContext(node); return; - case 231 /* MissingDeclaration */: + case 233 /* MissingDeclaration */: return checkMissingDeclaration(node); } } @@ -26635,102 +27375,29 @@ var ts; // Here, performing a full type check of the body of the function expression whilst in the process of // determining the type of foo would cause foo to be given type any because of the recursive reference. // Delaying the type check of the body ensures foo has been assigned a type. - function checkFunctionAndClassExpressionBodies(node) { - switch (node.kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - checkFunctionExpressionOrObjectLiteralMethodBody(node); - break; - case 186 /* ClassExpression */: - ts.forEach(node.members, checkSourceElement); - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - ts.forEach(node.decorators, checkFunctionAndClassExpressionBodies); - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - if (ts.isObjectLiteralMethod(node)) { - checkFunctionExpressionOrObjectLiteralMethodBody(node); - } - break; - case 144 /* Constructor */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - ts.forEach(node.parameters, checkFunctionAndClassExpressionBodies); - break; - case 205 /* WithStatement */: - checkFunctionAndClassExpressionBodies(node.expression); - break; - case 139 /* Decorator */: - case 138 /* Parameter */: - case 141 /* PropertyDeclaration */: - case 140 /* PropertySignature */: - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: - case 163 /* BindingElement */: - case 164 /* ArrayLiteralExpression */: - case 165 /* ObjectLiteralExpression */: - case 245 /* PropertyAssignment */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 170 /* TaggedTemplateExpression */: - case 183 /* TemplateExpression */: - case 190 /* TemplateSpan */: - case 171 /* TypeAssertionExpression */: - case 189 /* AsExpression */: - case 172 /* ParenthesizedExpression */: - case 176 /* TypeOfExpression */: - case 177 /* VoidExpression */: - case 178 /* AwaitExpression */: - case 175 /* DeleteExpression */: - case 179 /* PrefixUnaryExpression */: - case 180 /* PostfixUnaryExpression */: - case 181 /* BinaryExpression */: - case 182 /* ConditionalExpression */: - case 185 /* SpreadElementExpression */: - case 184 /* YieldExpression */: - case 192 /* Block */: - case 219 /* ModuleBlock */: - case 193 /* VariableStatement */: - case 195 /* ExpressionStatement */: - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: - case 204 /* ReturnStatement */: - case 206 /* SwitchStatement */: - case 220 /* CaseBlock */: - case 241 /* CaseClause */: - case 242 /* DefaultClause */: - case 207 /* LabeledStatement */: - case 208 /* ThrowStatement */: - case 209 /* TryStatement */: - case 244 /* CatchClause */: - case 211 /* VariableDeclaration */: - case 212 /* VariableDeclarationList */: - case 214 /* ClassDeclaration */: - case 243 /* HeritageClause */: - case 188 /* ExpressionWithTypeArguments */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 227 /* ExportAssignment */: - case 248 /* SourceFile */: - case 240 /* JsxExpression */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: - case 238 /* JsxAttribute */: - case 239 /* JsxSpreadAttribute */: - case 235 /* JsxOpeningElement */: - ts.forEachChild(node, checkFunctionAndClassExpressionBodies); - break; + function checkNodeDeferred(node) { + if (deferredNodes) { + deferredNodes.push(node); + } + } + function checkDeferredNodes() { + for (var _i = 0, deferredNodes_1 = deferredNodes; _i < deferredNodes_1.length; _i++) { + var node = deferredNodes_1[_i]; + switch (node.kind) { + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 143 /* MethodDeclaration */: + case 142 /* MethodSignature */: + checkFunctionExpressionOrObjectLiteralMethodDeferred(node); + break; + case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + checkAccessorDeferred(node); + break; + case 188 /* ClassExpression */: + checkClassExpressionDeferred(node); + break; + } } } function checkSourceFile(node) { @@ -26756,9 +27423,12 @@ var ts; emitExtends = false; emitDecorate = false; emitParam = false; + emitAwaiter = false; potentialThisCollisions.length = 0; + deferredNodes = []; ts.forEach(node.statements, checkSourceElement); - checkFunctionAndClassExpressionBodies(node); + checkDeferredNodes(); + deferredNodes = undefined; if (ts.isExternalOrCommonJsModule(node)) { checkExternalModuleExports(node); } @@ -26818,7 +27488,7 @@ var ts; function isInsideWithStatementBody(node) { if (node) { while (node.parent) { - if (node.parent.kind === 205 /* WithStatement */ && node.parent.statement === node) { + if (node.parent.kind === 207 /* WithStatement */ && node.parent.statement === node) { return true; } node = node.parent; @@ -26841,25 +27511,25 @@ var ts; copySymbols(location.locals, meaning); } switch (location.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (!ts.isExternalOrCommonJsModule(location)) { break; } - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8914931 /* ModuleMember */); break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: copySymbols(getSymbolOfNode(location).exports, meaning & 8 /* EnumMember */); break; - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: var className = location.name; if (className) { copySymbol(location.symbol, meaning); } // fall through; this fall-through is necessary because we would like to handle // type parameter inside class expression similar to how we handle it in classDeclaration and interface Declaration - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: // If we didn't come from static member of class or interface, // add the type parameters into the symbol table // (type parameters of classDeclaration/classExpression and interface are in member property of the symbol. @@ -26868,7 +27538,7 @@ var ts; copySymbols(getSymbolOfNode(location).members, meaning & 793056 /* Type */); } break; - case 173 /* FunctionExpression */: + case 175 /* FunctionExpression */: var funcName = location.name; if (funcName) { copySymbol(location.symbol, meaning); @@ -26918,10 +27588,10 @@ var ts; function isTypeDeclaration(node) { switch (node.kind) { case 137 /* TypeParameter */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 219 /* EnumDeclaration */: return true; } } @@ -26935,19 +27605,19 @@ var ts; } function isHeritageClauseElementIdentifier(entityName) { var node = entityName; - while (node.parent && node.parent.kind === 166 /* PropertyAccessExpression */) { + while (node.parent && node.parent.kind === 168 /* PropertyAccessExpression */) { node = node.parent; } - return node.parent && node.parent.kind === 188 /* ExpressionWithTypeArguments */; + return node.parent && node.parent.kind === 190 /* ExpressionWithTypeArguments */; } function getLeftSideOfImportEqualsOrExportAssignment(nodeOnRightSide) { while (nodeOnRightSide.parent.kind === 135 /* QualifiedName */) { nodeOnRightSide = nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 221 /* ImportEqualsDeclaration */) { + if (nodeOnRightSide.parent.kind === 223 /* ImportEqualsDeclaration */) { return nodeOnRightSide.parent.moduleReference === nodeOnRightSide && nodeOnRightSide.parent; } - if (nodeOnRightSide.parent.kind === 227 /* ExportAssignment */) { + if (nodeOnRightSide.parent.kind === 229 /* ExportAssignment */) { return nodeOnRightSide.parent.expression === nodeOnRightSide && nodeOnRightSide.parent; } return undefined; @@ -26959,11 +27629,11 @@ var ts; if (ts.isDeclarationName(entityName)) { return getSymbolOfNode(entityName.parent); } - if (entityName.parent.kind === 227 /* ExportAssignment */) { + if (entityName.parent.kind === 229 /* ExportAssignment */) { return resolveEntityName(entityName, /*all meanings*/ 107455 /* Value */ | 793056 /* Type */ | 1536 /* Namespace */ | 8388608 /* Alias */); } - if (entityName.kind !== 166 /* PropertyAccessExpression */) { + if (entityName.kind !== 168 /* PropertyAccessExpression */) { if (isInRightSideOfImportOrExportAssignment(entityName)) { // Since we already checked for ExportAssignment, this really could only be an Import return getSymbolOfPartOfRightHandSideOfImportEquals(entityName); @@ -26975,7 +27645,7 @@ var ts; if (isHeritageClauseElementIdentifier(entityName)) { var meaning = 0 /* None */; // In an interface or class, we're definitely interested in a type. - if (entityName.parent.kind === 188 /* ExpressionWithTypeArguments */) { + if (entityName.parent.kind === 190 /* ExpressionWithTypeArguments */) { meaning = 793056 /* Type */; // In a class 'extends' clause we are also looking for a value. if (ts.isExpressionWithTypeArgumentsInClassExtendsClause(entityName.parent)) { @@ -26988,9 +27658,9 @@ var ts; meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if ((entityName.parent.kind === 235 /* JsxOpeningElement */) || - (entityName.parent.kind === 234 /* JsxSelfClosingElement */) || - (entityName.parent.kind === 237 /* JsxClosingElement */)) { + else if ((entityName.parent.kind === 237 /* JsxOpeningElement */) || + (entityName.parent.kind === 236 /* JsxSelfClosingElement */) || + (entityName.parent.kind === 239 /* JsxClosingElement */)) { return getJsxElementTagSymbol(entityName.parent); } else if (ts.isExpression(entityName)) { @@ -27004,7 +27674,7 @@ var ts; var meaning = 107455 /* Value */ | 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.kind === 166 /* PropertyAccessExpression */) { + else if (entityName.kind === 168 /* PropertyAccessExpression */) { var symbol = getNodeLinks(entityName).resolvedSymbol; if (!symbol) { checkPropertyAccessExpression(entityName); @@ -27026,7 +27696,7 @@ var ts; meaning |= 8388608 /* Alias */; return resolveEntityName(entityName, meaning); } - else if (entityName.parent.kind === 238 /* JsxAttribute */) { + else if (entityName.parent.kind === 240 /* JsxAttribute */) { return getJsxAttributePropertySymbol(entityName.parent); } if (entityName.parent.kind === 150 /* TypePredicate */) { @@ -27046,12 +27716,12 @@ var ts; } if (node.kind === 69 /* Identifier */) { if (isInRightSideOfImportOrExportAssignment(node)) { - return node.parent.kind === 227 /* ExportAssignment */ + return node.parent.kind === 229 /* ExportAssignment */ ? getSymbolOfEntityNameOrPropertyAccessExpression(node) : getSymbolOfPartOfRightHandSideOfImportEquals(node); } - else if (node.parent.kind === 163 /* BindingElement */ && - node.parent.parent.kind === 161 /* ObjectBindingPattern */ && + else if (node.parent.kind === 165 /* BindingElement */ && + node.parent.parent.kind === 163 /* ObjectBindingPattern */ && node === node.parent.propertyName) { var typeOfPattern = getTypeOfNode(node.parent.parent); var propertyDeclaration = typeOfPattern && getPropertyOfType(typeOfPattern, node.text); @@ -27062,13 +27732,15 @@ var ts; } switch (node.kind) { case 69 /* Identifier */: - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 135 /* QualifiedName */: return getSymbolOfEntityNameOrPropertyAccessExpression(node); case 97 /* ThisKeyword */: case 95 /* SuperKeyword */: var type = ts.isExpression(node) ? checkExpression(node) : getTypeFromTypeNode(node); return type.symbol; + case 161 /* ThisType */: + return getTypeFromTypeNode(node).symbol; case 121 /* ConstructorKeyword */: // constructor keyword for an overload, should take us to the definition if it exist var constructorDeclaration = node.parent; @@ -27080,14 +27752,14 @@ var ts; // External module name in an import declaration if ((ts.isExternalModuleImportEqualsDeclaration(node.parent.parent) && ts.getExternalModuleImportEqualsDeclarationExpression(node.parent.parent) === node) || - ((node.parent.kind === 222 /* ImportDeclaration */ || node.parent.kind === 228 /* ExportDeclaration */) && + ((node.parent.kind === 224 /* ImportDeclaration */ || node.parent.kind === 230 /* ExportDeclaration */) && node.parent.moduleSpecifier === node)) { return resolveExternalModuleName(node, node); } // Fall through case 8 /* NumericLiteral */: // index access - if (node.parent.kind === 167 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { + if (node.parent.kind === 169 /* ElementAccessExpression */ && node.parent.argumentExpression === node) { var objectType = checkExpression(node.parent.expression); if (objectType === unknownType) return undefined; @@ -27104,7 +27776,7 @@ var ts; // The function returns a value symbol of an identifier in the short-hand property assignment. // This is necessary as an identifier in short-hand property assignment can contains two meaning: // property name and property value. - if (location && location.kind === 246 /* ShorthandPropertyAssignment */) { + if (location && location.kind === 248 /* ShorthandPropertyAssignment */) { return resolveEntityName(location.name, 107455 /* Value */); } return undefined; @@ -27207,6 +27879,30 @@ var ts; function isArgumentsLocalBinding(node) { return getReferencedValueSymbol(node) === argumentsSymbol; } + function moduleExportsSomeValue(moduleReferenceExpression) { + var moduleSymbol = resolveExternalModuleName(moduleReferenceExpression.parent, moduleReferenceExpression); + if (!moduleSymbol) { + // module not found - be conservative + return true; + } + var hasExportAssignment = getExportAssignmentSymbol(moduleSymbol) !== undefined; + // if module has export assignment then 'resolveExternalModuleSymbol' will return resolved symbol for export assignment + // otherwise it will return moduleSymbol itself + moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); + var 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 & 107455 /* Value */) + : ts.forEachValue(getExportsOfModule(moduleSymbol), isValue); + } + return symbolLinks.exportsSomeValue; + function isValue(s) { + s = resolveSymbol(s); + return s && !!(s.flags & 107455 /* 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) { @@ -27224,11 +27920,11 @@ var ts; } var parentSymbol = getParentOfSymbol(symbol); if (parentSymbol) { - if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 248 /* SourceFile */) { + if (parentSymbol.flags & 512 /* ValueModule */ && parentSymbol.valueDeclaration.kind === 250 /* SourceFile */) { return parentSymbol.valueDeclaration; } for (var n = node.parent; n; n = n.parent) { - if ((n.kind === 218 /* ModuleDeclaration */ || n.kind === 217 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { + if ((n.kind === 220 /* ModuleDeclaration */ || n.kind === 219 /* EnumDeclaration */) && getSymbolOfNode(n) === parentSymbol) { return n; } } @@ -27243,11 +27939,11 @@ var ts; } function isStatementWithLocals(node) { switch (node.kind) { - case 192 /* Block */: - case 220 /* CaseBlock */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 194 /* Block */: + case 222 /* CaseBlock */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return true; } return false; @@ -27277,22 +27973,22 @@ var ts; } function isValueAliasDeclaration(node) { switch (node.kind) { - case 221 /* ImportEqualsDeclaration */: - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: return isAliasResolvedToValue(getSymbolOfNode(node)); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: var exportClause = node.exportClause; return exportClause && ts.forEach(exportClause.elements, isValueAliasDeclaration); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return node.expression && node.expression.kind === 69 /* Identifier */ ? isAliasResolvedToValue(getSymbolOfNode(node)) : true; } return false; } function isTopLevelValueImportEqualsWithEntityName(node) { - if (node.parent.kind !== 248 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { + if (node.parent.kind !== 250 /* SourceFile */ || !ts.isInternalModuleImportEqualsDeclaration(node)) { // parent is not source file or it is not reference to internal module return false; } @@ -27354,7 +28050,7 @@ var ts; return getNodeLinks(node).enumMemberValue; } function getConstantValue(node) { - if (node.kind === 247 /* EnumMember */) { + if (node.kind === 249 /* EnumMember */) { return getEnumMemberValue(node); } var symbol = getNodeLinks(node).resolvedSymbol; @@ -27446,17 +28142,6 @@ var ts; var symbol = getReferencedValueSymbol(reference); return symbol && getExportSymbolOfValueSymbolIfExported(symbol).valueDeclaration; } - function instantiateSingleCallFunctionType(functionType, typeArguments) { - if (functionType === unknownType) { - return unknownType; - } - var signature = getSingleCallSignature(functionType); - if (!signature) { - return unknownType; - } - var instantiatedSignature = getSignatureInstantiation(signature, typeArguments); - return getOrCreateTypeFromSignature(instantiatedSignature); - } function createResolver() { return { getReferencedExportContainer: getReferencedExportContainer, @@ -27480,6 +28165,7 @@ var ts; getReferencedValueDeclaration: getReferencedValueDeclaration, getTypeReferenceSerializationKind: getTypeReferenceSerializationKind, isOptionalParameter: isOptionalParameter, + moduleExportsSomeValue: moduleExportsSomeValue, isArgumentsLocalBinding: isArgumentsLocalBinding, getExternalModuleFileFromDeclaration: getExternalModuleFileFromDeclaration }; @@ -27490,7 +28176,7 @@ var ts; if (!moduleSymbol) { return undefined; } - return ts.getDeclarationOfKind(moduleSymbol, 248 /* SourceFile */); + return ts.getDeclarationOfKind(moduleSymbol, 250 /* SourceFile */); } function initializeTypeChecker() { // Bind all source files and propagate errors @@ -27503,10 +28189,11 @@ var ts; mergeSymbolTable(globals, file.locals); } }); + // Setup global builtins + addToSymbolTable(globals, builtinGlobals, ts.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0); 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"); @@ -27575,7 +28262,12 @@ var ts; return false; } if (!ts.nodeCanBeDecorated(node)) { - return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + if (node.kind === 143 /* MethodDeclaration */ && !ts.nodeIsPresent(node.body)) { + return grammarErrorOnFirstToken(node, ts.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload); + } + else { + return grammarErrorOnFirstToken(node, ts.Diagnostics.Decorators_are_not_valid_here); + } } else if (node.kind === 145 /* GetAccessor */ || node.kind === 146 /* SetAccessor */) { var accessors = ts.getAllAccessorDeclarations(node.parent.members, node); @@ -27595,30 +28287,30 @@ var ts; case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 149 /* IndexSignature */: - case 218 /* ModuleDeclaration */: - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 228 /* ExportDeclaration */: - case 227 /* ExportAssignment */: + case 220 /* ModuleDeclaration */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 230 /* ExportDeclaration */: + case 229 /* ExportAssignment */: case 138 /* Parameter */: break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 118 /* AsyncKeyword */) && - node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 248 /* SourceFile */) { + node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 250 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 193 /* VariableStatement */: - case 216 /* TypeAliasDeclaration */: - if (node.modifiers && node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 248 /* SourceFile */) { + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 195 /* VariableStatement */: + case 218 /* TypeAliasDeclaration */: + if (node.modifiers && node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 250 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: if (node.modifiers && (node.modifiers.length > 1 || node.modifiers[0].kind !== 74 /* ConstKeyword */) && - node.parent.kind !== 219 /* ModuleBlock */ && node.parent.kind !== 248 /* SourceFile */) { + node.parent.kind !== 221 /* ModuleBlock */ && node.parent.kind !== 250 /* SourceFile */) { return grammarErrorOnFirstToken(node, ts.Diagnostics.Modifiers_cannot_appear_here); } break; @@ -27633,6 +28325,11 @@ var ts; for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) { var modifier = _a[_i]; switch (modifier.kind) { + case 74 /* ConstKeyword */: + if (node.kind !== 219 /* EnumDeclaration */ && node.parent.kind === 216 /* ClassDeclaration */) { + return grammarErrorOnNode(node, ts.Diagnostics.A_class_member_cannot_have_the_0_keyword, ts.tokenToString(74 /* ConstKeyword */)); + } + break; case 112 /* PublicKeyword */: case 111 /* ProtectedKeyword */: case 110 /* PrivateKeyword */: @@ -27657,7 +28354,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, text, "async"); } - else if (node.parent.kind === 219 /* ModuleBlock */ || node.parent.kind === 248 /* SourceFile */) { + else if (node.parent.kind === 221 /* ModuleBlock */ || node.parent.kind === 250 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, text); } else if (flags & 128 /* Abstract */) { @@ -27677,7 +28374,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "static", "async"); } - else if (node.parent.kind === 219 /* ModuleBlock */ || node.parent.kind === 248 /* SourceFile */) { + else if (node.parent.kind === 221 /* ModuleBlock */ || node.parent.kind === 250 /* SourceFile */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_module_element, "static"); } else if (node.kind === 138 /* Parameter */) { @@ -27702,7 +28399,7 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_must_precede_1_modifier, "export", "async"); } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "export"); } else if (node.kind === 138 /* Parameter */) { @@ -27717,13 +28414,13 @@ var ts; else if (flags & 256 /* Async */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context, "async"); } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_class_element, "declare"); } else if (node.kind === 138 /* Parameter */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_cannot_appear_on_a_parameter, "declare"); } - else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 219 /* ModuleBlock */) { + else if (ts.isInAmbientContext(node.parent) && node.parent.kind === 221 /* ModuleBlock */) { return grammarErrorOnNode(modifier, ts.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context); } flags |= 4 /* Ambient */; @@ -27733,11 +28430,11 @@ var ts; if (flags & 128 /* Abstract */) { return grammarErrorOnNode(modifier, ts.Diagnostics._0_modifier_already_seen, "abstract"); } - if (node.kind !== 214 /* ClassDeclaration */) { + if (node.kind !== 216 /* ClassDeclaration */) { if (node.kind !== 143 /* MethodDeclaration */) { return grammarErrorOnNode(modifier, ts.Diagnostics.abstract_modifier_can_only_appear_on_a_class_or_method_declaration); } - if (!(node.parent.kind === 214 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { + if (!(node.parent.kind === 216 /* ClassDeclaration */ && node.parent.flags & 128 /* Abstract */)) { return grammarErrorOnNode(modifier, ts.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class); } if (flags & 64 /* Static */) { @@ -27782,7 +28479,7 @@ var ts; } return; } - else if ((node.kind === 222 /* ImportDeclaration */ || node.kind === 221 /* ImportEqualsDeclaration */) && flags & 4 /* Ambient */) { + else if ((node.kind === 224 /* ImportDeclaration */ || node.kind === 223 /* ImportEqualsDeclaration */) && flags & 4 /* Ambient */) { return grammarErrorOnNode(lastDeclare, ts.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration, "declare"); } else if (node.kind === 138 /* Parameter */ && (flags & 56 /* AccessibilityModifier */) && ts.isBindingPattern(node.name)) { @@ -27798,9 +28495,9 @@ var ts; } switch (node.kind) { case 143 /* MethodDeclaration */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: if (!node.asteriskToken) { return false; } @@ -27866,7 +28563,7 @@ var ts; checkGrammarParameterList(node.parameters) || checkGrammarArrowFunction(node, file); } function checkGrammarArrowFunction(node, file) { - if (node.kind === 174 /* ArrowFunction */) { + if (node.kind === 176 /* ArrowFunction */) { var arrowFunction = node; var startLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.pos).line; var endLine = ts.getLineAndCharacterOfPosition(file, arrowFunction.equalsGreaterThanToken.end).line; @@ -27934,7 +28631,7 @@ var ts; var sourceFile = ts.getSourceFileOfNode(node); for (var _i = 0, args_1 = args; _i < args_1.length; _i++) { var arg = args_1[_i]; - if (arg.kind === 187 /* OmittedExpression */) { + if (arg.kind === 189 /* OmittedExpression */) { return grammarErrorAtPos(sourceFile, arg.pos, 0, ts.Diagnostics.Argument_expression_expected); } } @@ -28012,14 +28709,14 @@ var ts; return false; } var computedPropertyName = node; - if (computedPropertyName.expression.kind === 181 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { + if (computedPropertyName.expression.kind === 183 /* BinaryExpression */ && computedPropertyName.expression.operatorToken.kind === 24 /* CommaToken */) { return grammarErrorOnNode(computedPropertyName.expression, ts.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name); } } function checkGrammarForGenerator(node) { if (node.asteriskToken) { - ts.Debug.assert(node.kind === 213 /* FunctionDeclaration */ || - node.kind === 173 /* FunctionExpression */ || + ts.Debug.assert(node.kind === 215 /* FunctionDeclaration */ || + node.kind === 175 /* FunctionExpression */ || node.kind === 143 /* MethodDeclaration */); if (ts.isInAmbientContext(node)) { return grammarErrorOnNode(node.asteriskToken, ts.Diagnostics.Generators_are_not_allowed_in_an_ambient_context); @@ -28043,20 +28740,25 @@ var ts; var GetAccessor = 2; var SetAccesor = 4; var GetOrSetAccessor = GetAccessor | SetAccesor; - for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { - var prop = _a[_i]; + var _loop_1 = function(prop) { var name_16 = prop.name; - if (prop.kind === 187 /* OmittedExpression */ || + if (prop.kind === 189 /* OmittedExpression */ || name_16.kind === 136 /* ComputedPropertyName */) { // If the name is not a ComputedPropertyName, the grammar checking will skip it checkGrammarComputedPropertyName(name_16); - continue; + return "continue"; } - if (prop.kind === 246 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { + if (prop.kind === 248 /* ShorthandPropertyAssignment */ && !inDestructuring && prop.objectAssignmentInitializer) { // having objectAssignmentInitializer is only valid in ObjectAssignmentPattern // outside of destructuring it is a syntax error - return grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment); + return { value: grammarErrorOnNode(prop.equalsToken, ts.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment) }; } + // Modifiers are never allowed on properties except for 'async' on a method declaration + ts.forEach(prop.modifiers, function (mod) { + if (mod.kind !== 118 /* AsyncKeyword */ || prop.kind !== 143 /* MethodDeclaration */) { + grammarErrorOnNode(mod, ts.Diagnostics._0_modifier_cannot_be_used_here, ts.getTextOfNode(mod)); + } + }); // ECMA-262 11.1.5 Object Initialiser // If previous is not undefined then throw a SyntaxError exception if any of the following conditions are true // a.This production is contained in strict code and IsDataDescriptor(previous) is true and @@ -28066,7 +28768,7 @@ var ts; // d.IsAccessorDescriptor(previous) is true and IsAccessorDescriptor(propId.descriptor) is true // and either both previous and propId.descriptor have[[Get]] fields or both previous and propId.descriptor have[[Set]] fields var currentKind = void 0; - if (prop.kind === 245 /* PropertyAssignment */ || prop.kind === 246 /* ShorthandPropertyAssignment */) { + if (prop.kind === 247 /* PropertyAssignment */ || prop.kind === 248 /* ShorthandPropertyAssignment */) { // Grammar checking for computedPropertName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop, prop.questionToken, ts.Diagnostics.An_object_member_cannot_be_declared_optional); if (name_16.kind === 8 /* NumericLiteral */) { @@ -28092,27 +28794,33 @@ var ts; else { var existingKind = seen[name_16.text]; if (currentKind === Property && existingKind === Property) { - continue; + return "continue"; } else if ((currentKind & GetOrSetAccessor) && (existingKind & GetOrSetAccessor)) { if (existingKind !== GetOrSetAccessor && currentKind !== existingKind) { seen[name_16.text] = currentKind | existingKind; } else { - return grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name) }; } } else { - return grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name); + return { value: grammarErrorOnNode(name_16, ts.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name) }; } } + }; + for (var _i = 0, _a = node.properties; _i < _a.length; _i++) { + var prop = _a[_i]; + var state_1 = _loop_1(prop); + if (typeof state_1 === "object") return state_1.value + if (state_1 === "continue") continue; } } function checkGrammarJsxElement(node) { var seen = {}; for (var _i = 0, _a = node.attributes; _i < _a.length; _i++) { var attr = _a[_i]; - if (attr.kind === 239 /* JsxSpreadAttribute */) { + if (attr.kind === 241 /* JsxSpreadAttribute */) { continue; } var jsxAttr = attr; @@ -28124,7 +28832,7 @@ var ts; return grammarErrorOnNode(name_17, ts.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name); } var initializer = jsxAttr.initializer; - if (initializer && initializer.kind === 240 /* JsxExpression */ && !initializer.expression) { + if (initializer && initializer.kind === 242 /* JsxExpression */ && !initializer.expression) { return grammarErrorOnNode(jsxAttr.initializer, ts.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression); } } @@ -28133,24 +28841,35 @@ var ts; if (checkGrammarStatementInAmbientContext(forInOrOfStatement)) { return true; } - if (forInOrOfStatement.initializer.kind === 212 /* VariableDeclarationList */) { + if (forInOrOfStatement.initializer.kind === 214 /* VariableDeclarationList */) { var variableList = forInOrOfStatement.initializer; if (!checkGrammarVariableDeclarationList(variableList)) { - if (variableList.declarations.length > 1) { - var diagnostic = forInOrOfStatement.kind === 200 /* ForInStatement */ + var declarations = variableList.declarations; + // declarations.length can be zero if there is an error in 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 + // We will then want to skip on grammar checking on variableList declaration + if (!declarations.length) { + return false; + } + if (declarations.length > 1) { + var diagnostic = forInOrOfStatement.kind === 202 /* ForInStatement */ ? ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement : ts.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - var firstDeclaration = variableList.declarations[0]; + var firstDeclaration = declarations[0]; if (firstDeclaration.initializer) { - var diagnostic = forInOrOfStatement.kind === 200 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 202 /* ForInStatement */ ? ts.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer : ts.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; return grammarErrorOnNode(firstDeclaration.name, diagnostic); } if (firstDeclaration.type) { - var diagnostic = forInOrOfStatement.kind === 200 /* ForInStatement */ + var diagnostic = forInOrOfStatement.kind === 202 /* ForInStatement */ ? ts.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation : ts.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; return grammarErrorOnNode(firstDeclaration, diagnostic); @@ -28211,7 +28930,7 @@ var ts; checkGrammarForGenerator(node)) { return true; } - if (node.parent.kind === 165 /* ObjectLiteralExpression */) { + if (node.parent.kind === 167 /* ObjectLiteralExpression */) { if (checkGrammarForInvalidQuestionMark(node, node.questionToken, ts.Diagnostics.A_class_member_cannot_be_declared_optional)) { return true; } @@ -28235,7 +28954,7 @@ var ts; return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_method_overload_must_directly_refer_to_a_built_in_symbol); } } - else if (node.parent.kind === 215 /* InterfaceDeclaration */) { + else if (node.parent.kind === 217 /* InterfaceDeclaration */) { return checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol); } else if (node.parent.kind === 155 /* TypeLiteral */) { @@ -28249,11 +28968,11 @@ var ts; return grammarErrorOnNode(node, ts.Diagnostics.Jump_target_cannot_cross_function_boundary); } switch (current.kind) { - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: if (node.label && current.label.text === node.label.text) { // found matching label - verify that label usage is correct // continue can only target labels that are on iteration statements - var isMisplacedContinueLabel = node.kind === 202 /* ContinueStatement */ + var isMisplacedContinueLabel = node.kind === 204 /* ContinueStatement */ && !ts.isIterationStatement(current.statement, /*lookInLabeledStatement*/ true); if (isMisplacedContinueLabel) { return grammarErrorOnNode(node, ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement); @@ -28261,8 +28980,8 @@ var ts; return false; } break; - case 206 /* SwitchStatement */: - if (node.kind === 203 /* BreakStatement */ && !node.label) { + case 208 /* SwitchStatement */: + if (node.kind === 205 /* BreakStatement */ && !node.label) { // unlabeled break within switch statement - ok return false; } @@ -28277,13 +28996,13 @@ var ts; current = current.parent; } if (node.label) { - var message = node.kind === 203 /* BreakStatement */ + var message = node.kind === 205 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement : ts.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); } else { - var message = node.kind === 203 /* BreakStatement */ + var message = node.kind === 205 /* BreakStatement */ ? ts.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement : ts.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement; return grammarErrorOnNode(node, message); @@ -28295,7 +29014,7 @@ var ts; if (node !== ts.lastOrUndefined(elements)) { return grammarErrorOnNode(node, ts.Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern); } - if (node.name.kind === 162 /* ArrayBindingPattern */ || node.name.kind === 161 /* ObjectBindingPattern */) { + if (node.name.kind === 164 /* ArrayBindingPattern */ || node.name.kind === 163 /* ObjectBindingPattern */) { return grammarErrorOnNode(node.name, ts.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern); } if (node.initializer) { @@ -28305,7 +29024,7 @@ var ts; } } function checkGrammarVariableDeclaration(node) { - if (node.parent.parent.kind !== 200 /* ForInStatement */ && node.parent.parent.kind !== 201 /* ForOfStatement */) { + if (node.parent.parent.kind !== 202 /* ForInStatement */ && node.parent.parent.kind !== 203 /* ForOfStatement */) { if (ts.isInAmbientContext(node)) { if (node.initializer) { // Error on equals token which immediate precedes the initializer @@ -28322,7 +29041,7 @@ var ts; } } } - var checkLetConstNames = languageVersion >= 2 /* ES6 */ && (ts.isLet(node) || ts.isConst(node)); + var checkLetConstNames = (ts.isLet(node) || ts.isConst(node)); // 1. LexicalDeclaration : LetOrConst BindingList ; // It is a Syntax Error if the BoundNames of BindingList contains "let". // 2. ForDeclaration: ForDeclaration : LetOrConst ForBinding @@ -28333,7 +29052,7 @@ var ts; } function checkGrammarNameInLetOrConstDeclarations(name) { if (name.kind === 69 /* Identifier */) { - if (name.text === "let") { + if (name.originalKeywordKind === 108 /* LetKeyword */) { return grammarErrorOnNode(name, ts.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } @@ -28341,7 +29060,7 @@ var ts; var elements = name.elements; for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) { var element = elements_2[_i]; - if (element.kind !== 187 /* OmittedExpression */) { + if (element.kind !== 189 /* OmittedExpression */) { checkGrammarNameInLetOrConstDeclarations(element.name); } } @@ -28358,15 +29077,15 @@ var ts; } function allowLetAndConstDeclarations(parent) { switch (parent.kind) { - case 196 /* IfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 198 /* IfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return false; - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return allowLetAndConstDeclarations(parent.parent); } return true; @@ -28381,23 +29100,6 @@ var ts; } } } - function isIntegerLiteral(expression) { - if (expression.kind === 179 /* PrefixUnaryExpression */) { - var unaryExpression = expression; - if (unaryExpression.operator === 35 /* PlusToken */ || unaryExpression.operator === 36 /* MinusToken */) { - expression = unaryExpression.operand; - } - } - if (expression.kind === 8 /* NumericLiteral */) { - // Allows for scientific notation since literalExpression.text was formed by - // coercing a number to a string. Sometimes this coercion can yield a string - // in scientific notation. - // We also don't need special logic for hex because a hex integer is converted - // to decimal when it is coerced. - return /^[0-9]+([eE]\+?[0-9]+)?$/.test(expression.text); - } - return false; - } function hasParseDiagnostics(sourceFile) { return sourceFile.parseDiagnostics.length > 0; } @@ -28422,10 +29124,6 @@ var ts; return true; } } - function isEvalOrArgumentsIdentifier(node) { - return node.kind === 69 /* Identifier */ && - (node.text === "eval" || node.text === "arguments"); - } function checkGrammarConstructorTypeParameters(node) { if (node.typeParameters) { return grammarErrorAtPos(ts.getSourceFileOfNode(node), node.typeParameters.pos, node.typeParameters.end - node.typeParameters.pos, ts.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration); @@ -28443,15 +29141,21 @@ var ts; return true; } } - else if (node.parent.kind === 215 /* InterfaceDeclaration */) { + else if (node.parent.kind === 217 /* InterfaceDeclaration */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_an_interface_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.An_interface_property_cannot_have_an_initializer); + } } else if (node.parent.kind === 155 /* TypeLiteral */) { if (checkGrammarForNonSymbolComputedProperty(node.name, ts.Diagnostics.A_computed_property_name_in_a_type_literal_must_directly_refer_to_a_built_in_symbol)) { return true; } + if (node.initializer) { + return grammarErrorOnNode(node.initializer, ts.Diagnostics.A_type_literal_property_cannot_have_an_initializer); + } } if (ts.isInAmbientContext(node) && node.initializer) { return grammarErrorOnFirstToken(node.initializer, ts.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts); @@ -28470,12 +29174,12 @@ var ts; // export_opt AmbientDeclaration // // TODO: The spec needs to be amended to reflect this grammar. - if (node.kind === 215 /* InterfaceDeclaration */ || - node.kind === 216 /* TypeAliasDeclaration */ || - node.kind === 222 /* ImportDeclaration */ || - node.kind === 221 /* ImportEqualsDeclaration */ || - node.kind === 228 /* ExportDeclaration */ || - node.kind === 227 /* ExportAssignment */ || + if (node.kind === 217 /* InterfaceDeclaration */ || + node.kind === 218 /* TypeAliasDeclaration */ || + node.kind === 224 /* ImportDeclaration */ || + node.kind === 223 /* ImportEqualsDeclaration */ || + node.kind === 230 /* ExportDeclaration */ || + node.kind === 229 /* ExportAssignment */ || (node.flags & 4 /* Ambient */) || (node.flags & (2 /* Export */ | 512 /* Default */))) { return false; @@ -28485,7 +29189,7 @@ var ts; function checkGrammarTopLevelElementsForRequiredDeclareModifier(file) { for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var decl = _a[_i]; - if (ts.isDeclaration(decl) || decl.kind === 193 /* VariableStatement */) { + if (ts.isDeclaration(decl) || decl.kind === 195 /* VariableStatement */) { if (checkGrammarTopLevelElementForRequiredDeclareModifier(decl)) { return true; } @@ -28511,7 +29215,7 @@ var ts; // to prevent noisyness. So use a bit on the block to indicate if // this has already been reported, and don't report if it has. // - if (node.parent.kind === 192 /* Block */ || node.parent.kind === 219 /* ModuleBlock */ || node.parent.kind === 248 /* SourceFile */) { + if (node.parent.kind === 194 /* Block */ || node.parent.kind === 221 /* ModuleBlock */ || node.parent.kind === 250 /* SourceFile */) { var links_1 = getNodeLinks(node.parent); // Check if the containing block ever report this error if (!links_1.hasReportedStatementInAmbientContext) { @@ -28536,21 +29240,293 @@ var ts; return true; } } + var _a; } ts.createTypeChecker = createTypeChecker; })(ts || (ts = {})); /// /* @internal */ var ts; +(function (ts) { + var nullSourceMapWriter; + function getNullSourceMapWriter() { + if (nullSourceMapWriter === undefined) { + nullSourceMapWriter = { + getSourceMapData: function () { return undefined; }, + setSourceFile: function (sourceFile) { }, + emitStart: function (range) { }, + emitEnd: function (range) { }, + emitPos: function (pos) { }, + getText: function () { return undefined; }, + getSourceMappingURL: function () { return undefined; }, + initialize: function (filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { }, + reset: function () { } + }; + } + return nullSourceMapWriter; + } + ts.getNullSourceMapWriter = getNullSourceMapWriter; + function createSourceMapWriter(host, writer) { + var compilerOptions = host.getCompilerOptions(); + var currentSourceFile; + var sourceMapDir; // The directory in which sourcemap will be + // Current source map file and its index in the sources list + var sourceMapSourceIndex; + // Last recorded and encoded spans + var lastRecordedSourceMapSpan; + var lastEncodedSourceMapSpan; + var lastEncodedNameIndex; + // Source map data + var sourceMapData; + return { + getSourceMapData: function () { return sourceMapData; }, + setSourceFile: setSourceFile, + emitPos: emitPos, + emitStart: emitStart, + emitEnd: emitEnd, + getText: getText, + getSourceMappingURL: getSourceMappingURL, + initialize: initialize, + reset: reset + }; + function initialize(filePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + if (sourceMapData) { + reset(); + } + currentSourceFile = undefined; + // Current source map file and its index in the sources list + sourceMapSourceIndex = -1; + // Last recorded and encoded spans + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = { + emittedLine: 1, + emittedColumn: 1, + sourceLine: 1, + sourceColumn: 1, + sourceIndex: 0 + }; + lastEncodedNameIndex = 0; + // Initialize source map data + sourceMapData = { + sourceMapFilePath: sourceMapFilePath, + jsSourceMappingURL: !compilerOptions.inlineSourceMap ? ts.getBaseFileName(ts.normalizeSlashes(sourceMapFilePath)) : undefined, + sourceMapFile: ts.getBaseFileName(ts.normalizeSlashes(filePath)), + sourceMapSourceRoot: compilerOptions.sourceRoot || "", + sourceMapSources: [], + inputSourceFileNames: [], + sourceMapNames: [], + sourceMapMappings: "", + sourceMapSourcesContent: compilerOptions.inlineSources ? [] : undefined, + sourceMapDecodedMappings: [] + }; + // Normalize source root and make sure it has trailing "/" so that it can be used to combine paths with the + // relative paths of the sources list in the sourcemap + sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); + if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47 /* slash */) { + sourceMapData.sourceMapSourceRoot += ts.directorySeparator; + } + if (compilerOptions.mapRoot) { + sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); + if (!isBundledEmit) { + ts.Debug.assert(sourceFiles.length === 1); + // For modules or multiple emit files the mapRoot will have directory structure like the sources + // So if src\a.ts and src\lib\b.ts are compiled together user would be moving the maps into mapRoot\a.js.map and mapRoot\lib\b.js.map + sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(sourceFiles[0], host, sourceMapDir)); + } + if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { + // The relative paths are relative to the common directory + sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); + sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(filePath)), // get the relative sourceMapDir path based on jsFilePath + ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), // this is where user expects to see sourceMap + host.getCurrentDirectory(), host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ true); + } + else { + sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); + } + } + else { + sourceMapDir = ts.getDirectoryPath(ts.normalizePath(filePath)); + } + } + function reset() { + currentSourceFile = undefined; + sourceMapDir = undefined; + sourceMapSourceIndex = undefined; + lastRecordedSourceMapSpan = undefined; + lastEncodedSourceMapSpan = undefined; + lastEncodedNameIndex = undefined; + sourceMapData = undefined; + } + // Encoding for sourcemap span + function encodeLastRecordedSourceMapSpan() { + if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { + return; + } + var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; + // Line/Comma delimiters + if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { + // Emit comma to separate the entry + if (sourceMapData.sourceMapMappings) { + sourceMapData.sourceMapMappings += ","; + } + } + else { + // Emit line delimiters + for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { + sourceMapData.sourceMapMappings += ";"; + } + prevEncodedEmittedColumn = 1; + } + // 1. Relative Column 0 based + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); + // 2. Relative sourceIndex + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); + // 3. Relative sourceLine 0 based + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); + // 4. Relative sourceColumn 0 based + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); + // 5. Relative namePosition 0 based + if (lastRecordedSourceMapSpan.nameIndex >= 0) { + sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); + lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; + } + lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; + sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); + } + function emitPos(pos) { + if (pos === -1) { + return; + } + var sourceLinePos = ts.getLineAndCharacterOfPosition(currentSourceFile, pos); + // Convert the location to be one-based. + sourceLinePos.line++; + sourceLinePos.character++; + var emittedLine = writer.getLine(); + var emittedColumn = writer.getColumn(); + // If this location wasn't recorded or the location in source is going backwards, record the span + if (!lastRecordedSourceMapSpan || + lastRecordedSourceMapSpan.emittedLine !== emittedLine || + lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || + (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && + (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || + (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { + // Encode the last recordedSpan before assigning new + encodeLastRecordedSourceMapSpan(); + // New span + lastRecordedSourceMapSpan = { + emittedLine: emittedLine, + emittedColumn: emittedColumn, + sourceLine: sourceLinePos.line, + sourceColumn: sourceLinePos.character, + sourceIndex: sourceMapSourceIndex + }; + } + else { + // Take the new pos instead since there is no change in emittedLine and column since last location + lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; + lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; + lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; + } + } + function emitStart(range) { + var rangeHasDecorators = !!range.decorators; + emitPos(range.pos !== -1 ? ts.skipTrivia(currentSourceFile.text, rangeHasDecorators ? range.decorators.end : range.pos) : -1); + } + function emitEnd(range) { + emitPos(range.end); + } + function setSourceFile(sourceFile) { + currentSourceFile = sourceFile; + // Add the file to tsFilePaths + // If sourceroot option: Use the relative path corresponding to the common directory path + // otherwise source locations relative to map file location + var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; + var source = ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, currentSourceFile.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ true); + sourceMapSourceIndex = ts.indexOf(sourceMapData.sourceMapSources, source); + if (sourceMapSourceIndex === -1) { + sourceMapSourceIndex = sourceMapData.sourceMapSources.length; + sourceMapData.sourceMapSources.push(source); + // The one that can be used from program to get the actual source file + sourceMapData.inputSourceFileNames.push(sourceFile.fileName); + if (compilerOptions.inlineSources) { + sourceMapData.sourceMapSourcesContent.push(sourceFile.text); + } + } + } + function getText() { + encodeLastRecordedSourceMapSpan(); + return ts.stringify({ + version: 3, + file: sourceMapData.sourceMapFile, + sourceRoot: sourceMapData.sourceMapSourceRoot, + sources: sourceMapData.sourceMapSources, + names: sourceMapData.sourceMapNames, + mappings: sourceMapData.sourceMapMappings, + sourcesContent: sourceMapData.sourceMapSourcesContent + }); + } + function getSourceMappingURL() { + if (compilerOptions.inlineSourceMap) { + // Encode the sourceMap into the sourceMap url + var base64SourceMapText = ts.convertToBase64(getText()); + return sourceMapData.jsSourceMappingURL = "data:application/json;base64," + base64SourceMapText; + } + else { + return sourceMapData.jsSourceMappingURL; + } + } + } + ts.createSourceMapWriter = createSourceMapWriter; + var base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + function base64FormatEncode(inValue) { + if (inValue < 64) { + return base64Chars.charAt(inValue); + } + throw TypeError(inValue + ": not a 64 based value"); + } + function base64VLQFormatEncode(inValue) { + // Add a new least significant bit that has the sign of the value. + // if negative number the least significant bit that gets added to the number has value 1 + // else least significant bit value that gets added is 0 + // eg. -1 changes to binary : 01 [1] => 3 + // +1 changes to binary : 01 [0] => 2 + if (inValue < 0) { + inValue = ((-inValue) << 1) + 1; + } + else { + inValue = inValue << 1; + } + // Encode 5 bits at a time starting from least significant bits + var encodedStr = ""; + do { + var currentDigit = inValue & 31; // 11111 + inValue = inValue >> 5; + if (inValue > 0) { + // There are still more digits to decode, set the msb (6th bit) + currentDigit = currentDigit | 32; + } + encodedStr = encodedStr + base64FormatEncode(currentDigit); + } while (inValue > 0); + return encodedStr; + } +})(ts || (ts = {})); +/// +/* @internal */ +var ts; (function (ts) { function getDeclarationDiagnostics(host, resolver, targetSourceFile) { - var diagnostics = []; - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, ".js"); - emitDeclarations(host, resolver, diagnostics, jsFilePath, targetSourceFile); - return diagnostics; + var declarationDiagnostics = ts.createDiagnosticCollection(); + ts.forEachExpectedEmitFile(host, getDeclarationDiagnosticsFromFile, targetSourceFile); + return declarationDiagnostics.getDiagnostics(targetSourceFile.fileName); + function getDeclarationDiagnosticsFromFile(_a, sources, isBundledEmit) { + var declarationFilePath = _a.declarationFilePath; + emitDeclarations(host, resolver, declarationDiagnostics, declarationFilePath, sources, isBundledEmit); + } } ts.getDeclarationDiagnostics = getDeclarationDiagnostics; - function emitDeclarations(host, resolver, diagnostics, jsFilePath, root) { + function emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit) { var newLine = host.getNewLine(); var compilerOptions = host.getCompilerOptions(); var write; @@ -28568,103 +29544,79 @@ var ts; var errorNameNode; var emitJsDocComments = compilerOptions.removeComments ? function (declaration) { } : writeJsDocComments; var emit = compilerOptions.stripInternal ? stripInternal : emitNode; - var noDeclare = !root; + var noDeclare; var moduleElementDeclarationEmitInfo = []; var asynchronousSubModuleDeclarationEmitInfo; // Contains the reference paths that needs to go in the declaration file. // Collecting this separately because reference paths need to be first thing in the declaration file // and we could be collecting these paths from multiple files into single one with --out option var referencePathsOutput = ""; - if (root) { - // Emitting just a single file, so emit references in this file only + // Emit references corresponding to each file + var emittedReferencedFiles = []; + var addedGlobalFileReference = false; + var allSourcesModuleElementDeclarationEmitInfo = []; + ts.forEach(sourceFiles, function (sourceFile) { + // Dont emit for javascript file + if (ts.isSourceFileJavaScript(sourceFile)) { + return; + } + // Check what references need to be added if (!compilerOptions.noResolve) { - var addedGlobalFileReference = false; - ts.forEach(root.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, root, fileReference); - // All the references that are not going to be part of same file - if (referencedFile && ((referencedFile.flags & 4096 /* DeclarationFile */) || - ts.shouldEmitToOwnFile(referencedFile, compilerOptions) || - !addedGlobalFileReference)) { - writeReferencePath(referencedFile); - if (!ts.isExternalModuleOrDeclarationFile(referencedFile)) { + ts.forEach(sourceFile.referencedFiles, function (fileReference) { + var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); + // Emit reference in dts, if the file reference was not already emitted + if (referencedFile && !ts.contains(emittedReferencedFiles, referencedFile)) { + // Add a reference to generated dts file, + // global file reference is added only + // - if it is not bundled emit (because otherwise it would be self reference) + // - and it is not already added + if (writeReferencePath(referencedFile, !isBundledEmit && !addedGlobalFileReference)) { addedGlobalFileReference = true; } + emittedReferencedFiles.push(referencedFile); } }); } - emitSourceFile(root); + if (!isBundledEmit || !ts.isExternalModule(sourceFile)) { + noDeclare = false; + emitSourceFile(sourceFile); + } + else if (ts.isExternalModule(sourceFile)) { + noDeclare = true; + write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); + writeLine(); + increaseIndent(); + emitSourceFile(sourceFile); + decreaseIndent(); + write("}"); + writeLine(); + } // create asynchronous output for the importDeclarations if (moduleElementDeclarationEmitInfo.length) { var oldWriter = writer; ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222 /* ImportDeclaration */); + if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { + ts.Debug.assert(aliasEmitInfo.node.kind === 224 /* ImportDeclaration */); createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 0); + ts.Debug.assert(aliasEmitInfo.indent === 0 || (aliasEmitInfo.indent === 1 && isBundledEmit)); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + increaseIndent(); + } writeImportDeclaration(aliasEmitInfo.node); aliasEmitInfo.asynchronousOutput = writer.getText(); + for (var i = 0; i < aliasEmitInfo.indent; i++) { + decreaseIndent(); + } } }); setWriter(oldWriter); + allSourcesModuleElementDeclarationEmitInfo = allSourcesModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); + moduleElementDeclarationEmitInfo = []; } - } - else { - // Emit references corresponding to this file - var emittedReferencedFiles = []; - var prevModuleElementDeclarationEmitInfo = []; - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (!ts.isDeclarationFile(sourceFile)) { - // Check what references need to be added - if (!compilerOptions.noResolve) { - ts.forEach(sourceFile.referencedFiles, function (fileReference) { - var referencedFile = ts.tryResolveScriptReference(host, sourceFile, fileReference); - // If the reference file is a declaration file, emit that reference - if (referencedFile && (ts.isDeclarationFile(referencedFile) && - !ts.contains(emittedReferencedFiles, referencedFile))) { - writeReferencePath(referencedFile); - emittedReferencedFiles.push(referencedFile); - } - }); - } - } - if (!ts.isExternalModuleOrDeclarationFile(sourceFile)) { - noDeclare = false; - emitSourceFile(sourceFile); - } - else if (ts.isExternalModule(sourceFile)) { - noDeclare = true; - write("declare module \"" + ts.getResolvedExternalModuleName(host, sourceFile) + "\" {"); - writeLine(); - increaseIndent(); - emitSourceFile(sourceFile); - decreaseIndent(); - write("}"); - writeLine(); - // create asynchronous output for the importDeclarations - if (moduleElementDeclarationEmitInfo.length) { - var oldWriter = writer; - ts.forEach(moduleElementDeclarationEmitInfo, function (aliasEmitInfo) { - if (aliasEmitInfo.isVisible && !aliasEmitInfo.asynchronousOutput) { - ts.Debug.assert(aliasEmitInfo.node.kind === 222 /* ImportDeclaration */); - createAndSetNewTextWriterWithSymbolWriter(); - ts.Debug.assert(aliasEmitInfo.indent === 1); - increaseIndent(); - writeImportDeclaration(aliasEmitInfo.node); - aliasEmitInfo.asynchronousOutput = writer.getText(); - decreaseIndent(); - } - }); - setWriter(oldWriter); - } - prevModuleElementDeclarationEmitInfo = prevModuleElementDeclarationEmitInfo.concat(moduleElementDeclarationEmitInfo); - moduleElementDeclarationEmitInfo = []; - } - }); - moduleElementDeclarationEmitInfo = moduleElementDeclarationEmitInfo.concat(prevModuleElementDeclarationEmitInfo); - } + }); return { reportedDeclarationError: reportedDeclarationError, - moduleElementDeclarationEmitInfo: moduleElementDeclarationEmitInfo, + moduleElementDeclarationEmitInfo: allSourcesModuleElementDeclarationEmitInfo, synchronousDeclarationOutput: writer.getText(), referencePathsOutput: referencePathsOutput }; @@ -28707,10 +29659,10 @@ var ts; var oldWriter = writer; ts.forEach(nodes, function (declaration) { var nodeToCheck; - if (declaration.kind === 211 /* VariableDeclaration */) { + if (declaration.kind === 213 /* VariableDeclaration */) { nodeToCheck = declaration.parent.parent; } - else if (declaration.kind === 225 /* NamedImports */ || declaration.kind === 226 /* ImportSpecifier */ || declaration.kind === 223 /* ImportClause */) { + else if (declaration.kind === 227 /* NamedImports */ || declaration.kind === 228 /* ImportSpecifier */ || declaration.kind === 225 /* ImportClause */) { ts.Debug.fail("We should be getting ImportDeclaration instead to write"); } else { @@ -28728,7 +29680,7 @@ var ts; // Writing of function bar would mark alias declaration foo as visible but we haven't yet visited that declaration so do nothing, // we would write alias foo declaration when we visit it since it would now be marked as visible if (moduleElementEmitInfo) { - if (moduleElementEmitInfo.node.kind === 222 /* ImportDeclaration */) { + if (moduleElementEmitInfo.node.kind === 224 /* ImportDeclaration */) { // we have to create asynchronous output only after we have collected complete information // because it is possible to enable multiple bindings as asynchronously visible moduleElementEmitInfo.isVisible = true; @@ -28738,12 +29690,12 @@ var ts; for (var declarationIndent = moduleElementEmitInfo.indent; declarationIndent; declarationIndent--) { increaseIndent(); } - if (nodeToCheck.kind === 218 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 220 /* ModuleDeclaration */) { ts.Debug.assert(asynchronousSubModuleDeclarationEmitInfo === undefined); asynchronousSubModuleDeclarationEmitInfo = []; } writeModuleElement(nodeToCheck); - if (nodeToCheck.kind === 218 /* ModuleDeclaration */) { + if (nodeToCheck.kind === 220 /* ModuleDeclaration */) { moduleElementEmitInfo.subModuleElementDeclarationEmitInfo = asynchronousSubModuleDeclarationEmitInfo; asynchronousSubModuleDeclarationEmitInfo = undefined; } @@ -28766,10 +29718,10 @@ var ts; var errorInfo = writer.getSymbolAccessibilityDiagnostic(symbolAccesibilityResult); if (errorInfo) { if (errorInfo.typeName) { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, ts.getTextOfNodeFromSourceText(currentText, errorInfo.typeName), symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } else { - diagnostics.push(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); + emitterDiagnostics.add(ts.createDiagnosticForNode(symbolAccesibilityResult.errorNode || errorInfo.errorNode, errorInfo.diagnosticMessage, symbolAccesibilityResult.errorSymbolName, symbolAccesibilityResult.errorModuleName)); } } } @@ -28779,7 +29731,8 @@ var ts; } function reportInaccessibleThisError() { if (errorNameNode) { - diagnostics.push(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); + reportedDeclarationError = true; + emitterDiagnostics.add(ts.createDiagnosticForNode(errorNameNode, ts.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_this_type_A_type_annotation_is_necessary, ts.declarationNameToString(errorNameNode))); } } function writeTypeOfDeclaration(declaration, type, getSymbolAccessibilityDiagnostic) { @@ -28850,10 +29803,10 @@ var ts; case 120 /* BooleanKeyword */: case 131 /* SymbolKeyword */: case 103 /* VoidKeyword */: - case 97 /* ThisKeyword */: - case 9 /* StringLiteral */: + case 161 /* ThisType */: + case 162 /* StringLiteralType */: return writeTextOfNode(currentText, type); - case 188 /* ExpressionWithTypeArguments */: + case 190 /* ExpressionWithTypeArguments */: return emitExpressionWithTypeArguments(type); case 151 /* TypeReference */: return emitTypeReference(type); @@ -28896,13 +29849,13 @@ var ts; function emitEntityName(entityName) { var visibilityResult = resolver.isEntityNameVisible(entityName, // Aliases can be written asynchronously so use correct enclosing declaration - entityName.parent.kind === 221 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); + entityName.parent.kind === 223 /* ImportEqualsDeclaration */ ? entityName.parent : enclosingDeclaration); handleSymbolAccessibilityError(visibilityResult); writeEntityName(entityName); } function emitExpressionWithTypeArguments(node) { if (ts.isSupportedExpressionWithTypeArguments(node)) { - ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 166 /* PropertyAccessExpression */); + ts.Debug.assert(node.expression.kind === 69 /* Identifier */ || node.expression.kind === 168 /* PropertyAccessExpression */); emitEntityName(node.expression); if (node.typeArguments) { write("<"); @@ -28980,7 +29933,8 @@ var ts; } var count = 0; while (true) { - var name_18 = baseName + "_" + (++count); + count++; + var name_18 = baseName + "_" + count; if (!ts.hasProperty(currentIdentifiers, name_18)) { return name_18; } @@ -29026,10 +29980,10 @@ var ts; if (isModuleElementVisible) { writeModuleElement(node); } - else if (node.kind === 221 /* ImportEqualsDeclaration */ || - (node.parent.kind === 248 /* SourceFile */ && isCurrentFileExternalModule)) { + else if (node.kind === 223 /* ImportEqualsDeclaration */ || + (node.parent.kind === 250 /* SourceFile */ && isCurrentFileExternalModule)) { var isVisible; - if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 248 /* SourceFile */) { + if (asynchronousSubModuleDeclarationEmitInfo && node.parent.kind !== 250 /* SourceFile */) { // Import declaration of another module that is visited async so lets put it in right spot asynchronousSubModuleDeclarationEmitInfo.push({ node: node, @@ -29039,7 +29993,7 @@ var ts; }); } else { - if (node.kind === 222 /* ImportDeclaration */) { + if (node.kind === 224 /* ImportDeclaration */) { var importDeclaration = node; if (importDeclaration.importClause) { isVisible = (importDeclaration.importClause.name && resolver.isDeclarationVisible(importDeclaration.importClause)) || @@ -29057,23 +30011,23 @@ var ts; } function writeModuleElement(node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return writeFunctionDeclaration(node); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return writeVariableStatement(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return writeInterfaceDeclaration(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return writeClassDeclaration(node); - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: return writeTypeAliasDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return writeEnumDeclaration(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return writeModuleDeclaration(node); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return writeImportEqualsDeclaration(node); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return writeImportDeclaration(node); default: ts.Debug.fail("Unknown symbol kind"); @@ -29081,7 +30035,7 @@ var ts; } function emitModuleElementDeclarationFlags(node) { // If the node is parented in the current source file we need to emit export declare or just export - if (node.parent.kind === 248 /* SourceFile */) { + if (node.parent.kind === 250 /* SourceFile */) { // If the node is exported if (node.flags & 2 /* Export */) { write("export "); @@ -29089,7 +30043,7 @@ var ts; if (node.flags & 512 /* Default */) { write("default "); } - else if (node.kind !== 215 /* InterfaceDeclaration */ && !noDeclare) { + else if (node.kind !== 217 /* InterfaceDeclaration */ && !noDeclare) { write("declare "); } } @@ -29124,7 +30078,7 @@ var ts; } else { write("require("); - writeTextOfNode(currentText, ts.getExternalModuleImportEqualsDeclarationExpression(node)); + emitExternalModuleSpecifier(node); write(");"); } writer.writeLine(); @@ -29138,7 +30092,7 @@ var ts; } function isVisibleNamedBinding(namedBindings) { if (namedBindings) { - if (namedBindings.kind === 224 /* NamespaceImport */) { + if (namedBindings.kind === 226 /* NamespaceImport */) { return resolver.isDeclarationVisible(namedBindings); } else { @@ -29166,7 +30120,7 @@ var ts; // If the default binding was emitted, write the separated write(", "); } - if (node.importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 226 /* NamespaceImport */) { write("* as "); writeTextOfNode(currentText, node.importClause.namedBindings.name); } @@ -29178,13 +30132,22 @@ var ts; } write(" from "); } - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); write(";"); writer.writeLine(); } - function emitExternalModuleSpecifier(moduleSpecifier) { - if (moduleSpecifier.kind === 9 /* StringLiteral */ && (!root) && (compilerOptions.out || compilerOptions.outFile)) { - var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, moduleSpecifier.parent); + function emitExternalModuleSpecifier(parent) { + var moduleSpecifier; + if (parent.kind === 223 /* ImportEqualsDeclaration */) { + var node = parent; + moduleSpecifier = ts.getExternalModuleImportEqualsDeclarationExpression(node); + } + else { + var node = parent; + moduleSpecifier = node.moduleSpecifier; + } + if (moduleSpecifier.kind === 9 /* StringLiteral */ && isBundledEmit && (compilerOptions.out || compilerOptions.outFile)) { + var moduleName = ts.getExternalModuleNameFromDeclaration(host, resolver, parent); if (moduleName) { write("\""); write(moduleName); @@ -29221,7 +30184,7 @@ var ts; } if (node.moduleSpecifier) { write(" from "); - emitExternalModuleSpecifier(node.moduleSpecifier); + emitExternalModuleSpecifier(node); } write(";"); writer.writeLine(); @@ -29236,7 +30199,7 @@ var ts; write("module "); } writeTextOfNode(currentText, node.name); - while (node.body.kind !== 219 /* ModuleBlock */) { + while (node.body.kind !== 221 /* ModuleBlock */) { node = node.body; write("."); writeTextOfNode(currentText, node.name); @@ -29331,10 +30294,10 @@ var ts; // Type parameter constraints are named by user so we should always be able to name it var diagnosticMessage; switch (node.parent.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1; break; - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1; break; case 148 /* ConstructSignature */: @@ -29348,14 +30311,14 @@ var ts; if (node.parent.flags & 64 /* Static */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 216 /* ClassDeclaration */) { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1; } else { diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: diagnosticMessage = ts.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1; break; default: @@ -29389,7 +30352,7 @@ var ts; function getHeritageClauseVisibilityError(symbolAccesibilityResult) { var diagnosticMessage; // Heritage clause is written by user so it can always be named - if (node.parent.parent.kind === 214 /* ClassDeclaration */) { + if (node.parent.parent.kind === 216 /* ClassDeclaration */) { // Class or Interface implemented/extended is inaccessible diagnosticMessage = isImplementsList ? ts.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1 : @@ -29473,7 +30436,7 @@ var ts; function emitVariableDeclaration(node) { // If we are emitting property it isn't moduleElement and hence we already know it needs to be emitted // so there is no check needed to see if declaration is visible - if (node.kind !== 211 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { + if (node.kind !== 213 /* VariableDeclaration */ || resolver.isDeclarationVisible(node)) { if (ts.isBindingPattern(node.name)) { emitBindingPattern(node.name); } @@ -29495,7 +30458,7 @@ var ts; } } function getVariableDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult) { - if (node.kind === 211 /* VariableDeclaration */) { + if (node.kind === 213 /* VariableDeclaration */) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29511,7 +30474,7 @@ var ts; ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29543,7 +30506,7 @@ var ts; var elements = []; for (var _i = 0, _a = bindingPattern.elements; _i < _a.length; _i++) { var element = _a[_i]; - if (element.kind !== 187 /* OmittedExpression */) { + if (element.kind !== 189 /* OmittedExpression */) { elements.push(element); } } @@ -29685,13 +30648,13 @@ var ts; // so no need to verify if the declaration is visible if (!resolver.isImplementationOfOverload(node)) { emitJsDocComments(node); - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { emitModuleElementDeclarationFlags(node); } else if (node.kind === 143 /* MethodDeclaration */) { emitClassMemberDeclarationFlags(node); } - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { write("function "); writeTextOfNode(currentText, node.name); } @@ -29712,6 +30675,8 @@ var ts; emitSignatureDeclaration(node); } function emitSignatureDeclaration(node) { + var prevEnclosingDeclaration = enclosingDeclaration; + enclosingDeclaration = node; // Construct signature or constructor type write new Signature if (node.kind === 148 /* ConstructSignature */ || node.kind === 153 /* ConstructorType */) { write("new "); @@ -29723,8 +30688,6 @@ var ts; else { write("("); } - var prevEnclosingDeclaration = enclosingDeclaration; - enclosingDeclaration = node; // Parameters emitCommaList(node.parameters, emitParameterDeclaration); if (node.kind === 149 /* IndexSignature */) { @@ -29780,7 +30743,7 @@ var ts; ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1 : ts.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0; } - else if (node.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.kind === 216 /* ClassDeclaration */) { diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -29794,7 +30757,7 @@ var ts; ts.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0; } break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: diagnosticMessage = symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named : @@ -29872,7 +30835,7 @@ var ts; ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1; } - else if (node.parent.parent.kind === 214 /* ClassDeclaration */) { + else if (node.parent.parent.kind === 216 /* ClassDeclaration */) { return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29885,7 +30848,7 @@ var ts; ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2 : ts.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1; } - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return symbolAccesibilityResult.errorModuleName ? symbolAccesibilityResult.accessibility === 2 /* CannotBeNamed */ ? ts.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named : @@ -29897,12 +30860,12 @@ var ts; } function emitBindingPattern(bindingPattern) { // We have to explicitly emit square bracket and bracket because these tokens are not store inside the node. - if (bindingPattern.kind === 161 /* ObjectBindingPattern */) { + if (bindingPattern.kind === 163 /* ObjectBindingPattern */) { write("{"); emitCommaList(bindingPattern.elements, emitBindingElement); write("}"); } - else if (bindingPattern.kind === 162 /* ArrayBindingPattern */) { + else if (bindingPattern.kind === 164 /* ArrayBindingPattern */) { write("["); var elements = bindingPattern.elements; emitCommaList(elements, emitBindingElement); @@ -29913,15 +30876,7 @@ var ts; } } function emitBindingElement(bindingElement) { - function getBindingElementTypeVisibilityError(symbolAccesibilityResult) { - var diagnosticMessage = getParameterDeclarationTypeVisibilityDiagnosticMessage(symbolAccesibilityResult); - return diagnosticMessage !== undefined ? { - diagnosticMessage: diagnosticMessage, - errorNode: bindingElement, - typeName: bindingElement.name - } : undefined; - } - if (bindingElement.kind === 187 /* OmittedExpression */) { + if (bindingElement.kind === 189 /* OmittedExpression */) { // If bindingElement is an omittedExpression (i.e. containing elision), // we will emit blank space (although this may differ from users' original code, // it allows emitSeparatedList to write separator appropriately) @@ -29930,7 +30885,7 @@ var ts; // emit : function foo([ , x, , ]) {} write(" "); } - else if (bindingElement.kind === 163 /* BindingElement */) { + else if (bindingElement.kind === 165 /* BindingElement */) { if (bindingElement.propertyName) { // bindingElement has propertyName property in the following case: // { y: [a,b,c] ...} -> bindingPattern will have a property called propertyName for "y" @@ -29969,20 +30924,20 @@ var ts; } function emitNode(node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: - case 218 /* ModuleDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 215 /* InterfaceDeclaration */: - case 214 /* ClassDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 217 /* EnumDeclaration */: + case 215 /* FunctionDeclaration */: + case 220 /* ModuleDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 217 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 219 /* EnumDeclaration */: return emitModuleElement(node, isModuleElementVisible(node)); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return emitModuleElement(node, isVariableStatementVisible(node)); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: // Import declaration without import clause is visible, otherwise it is not visible return emitModuleElement(node, /*isModuleElementVisible*/ !node.importClause); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return emitExportDeclaration(node); case 144 /* Constructor */: case 143 /* MethodDeclaration */: @@ -29998,35 +30953,57 @@ var ts; case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return emitPropertyDeclaration(node); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return emitEnumMemberDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return emitExportAssignment(node); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return emitSourceFile(node); } } - function writeReferencePath(referencedFile) { - var declFileName = referencedFile.flags & 4096 /* DeclarationFile */ - ? referencedFile.fileName // Declaration file, use declaration file name - : ts.shouldEmitToOwnFile(referencedFile, compilerOptions) - ? ts.getOwnEmitOutputFilePath(referencedFile, host, ".d.ts") // Own output file so get the .d.ts file - : ts.removeFileExtension(compilerOptions.outFile || compilerOptions.out) + ".d.ts"; // Global out file - declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(jsFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ false); - referencePathsOutput += "/// " + newLine; + /** + * Adds the reference to referenced file, returns true if global file reference was emitted + * @param referencedFile + * @param addBundledFileReference Determines if global file reference corresponding to bundled file should be emitted or not + */ + function writeReferencePath(referencedFile, addBundledFileReference) { + var declFileName; + var addedBundledEmitReference = false; + if (ts.isDeclarationFile(referencedFile)) { + // Declaration file, use declaration file name + declFileName = referencedFile.fileName; + } + else { + // Get the declaration file path + ts.forEachExpectedEmitFile(host, getDeclFileName, referencedFile); + } + if (declFileName) { + declFileName = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizeSlashes(declarationFilePath)), declFileName, host.getCurrentDirectory(), host.getCanonicalFileName, + /*isAbsolutePathAnUrl*/ false); + referencePathsOutput += "/// " + newLine; + } + return addedBundledEmitReference; + function getDeclFileName(emitFileNames, sourceFiles, isBundledEmit) { + // Dont add reference path to this file if it is a bundled emit and caller asked not emit bundled file path + if (isBundledEmit && !addBundledFileReference) { + return; + } + ts.Debug.assert(!!emitFileNames.declarationFilePath || ts.isSourceFileJavaScript(referencedFile), "Declaration file is not present only for javascript files"); + declFileName = emitFileNames.declarationFilePath || emitFileNames.jsFilePath; + addedBundledEmitReference = isBundledEmit; + } } } /* @internal */ - function writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics) { - var emitDeclarationResult = emitDeclarations(host, resolver, diagnostics, jsFilePath, sourceFile); - // TODO(shkamat): Should we not write any declaration file if any of them can produce error, - // or should we just not write this file like we are doing now - if (!emitDeclarationResult.reportedDeclarationError) { + function writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) { + var emitDeclarationResult = emitDeclarations(host, resolver, emitterDiagnostics, declarationFilePath, sourceFiles, isBundledEmit); + var emitSkipped = emitDeclarationResult.reportedDeclarationError || host.isEmitBlocked(declarationFilePath) || host.getCompilerOptions().noEmit; + if (!emitSkipped) { var declarationOutput = emitDeclarationResult.referencePathsOutput + getDeclarationOutput(emitDeclarationResult.synchronousDeclarationOutput, emitDeclarationResult.moduleElementDeclarationEmitInfo); - ts.writeFile(host, diagnostics, ts.removeFileExtension(jsFilePath) + ".d.ts", declarationOutput, host.getCompilerOptions().emitBOM); + ts.writeFile(host, emitterDiagnostics, declarationFilePath, declarationOutput, host.getCompilerOptions().emitBOM); } + return emitSkipped; function getDeclarationOutput(synchronousDeclarationOutput, moduleElementDeclarationEmitInfo) { var appliedSyncOutputPos = 0; var declarationOutput = ""; @@ -30045,14 +31022,11 @@ var ts; ts.writeDeclarationFile = writeDeclarationFile; })(ts || (ts = {})); /// +/// /// /* @internal */ var ts; (function (ts) { - function isExternalModuleOrDeclarationFile(sourceFile) { - return ts.isExternalModule(sourceFile) || ts.isDeclarationFile(sourceFile); - } - ts.isExternalModuleOrDeclarationFile = isExternalModuleOrDeclarationFile; function getResolvedExternalModuleName(host, file) { return file.moduleName || ts.getExternalModuleNameFromPath(host, file.fileName); } @@ -30345,43 +31319,17 @@ var ts; var paramHelper = "\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};"; var awaiterHelper = "\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promise, generator) {\n return new Promise(function (resolve, reject) {\n generator = generator.call(thisArg, _arguments);\n function cast(value) { return value instanceof Promise && value.constructor === Promise ? value : new Promise(function (resolve) { resolve(value); }); }\n function onfulfill(value) { try { step(\"next\", value); } catch (e) { reject(e); } }\n function onreject(value) { try { step(\"throw\", value); } catch (e) { reject(e); } }\n function step(verb, value) {\n var result = generator[verb](value);\n result.done ? resolve(result.value) : cast(result.value).then(onfulfill, onreject);\n }\n step(\"next\", void 0);\n });\n};"; var compilerOptions = host.getCompilerOptions(); - var languageVersion = compilerOptions.target || 0 /* ES3 */; - var modulekind = compilerOptions.module ? compilerOptions.module : languageVersion === 2 /* ES6 */ ? 5 /* ES6 */ : 0 /* None */; + var languageVersion = ts.getEmitScriptTarget(compilerOptions); + var modulekind = ts.getEmitModuleKind(compilerOptions); var sourceMapDataList = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? [] : undefined; - var diagnostics = []; + var emitterDiagnostics = ts.createDiagnosticCollection(); + var emitSkipped = false; var newLine = host.getNewLine(); - var jsxDesugaring = host.getCompilerOptions().jsx !== 1 /* Preserve */; - var shouldEmitJsx = function (s) { return (s.languageVariant === 1 /* JSX */ && !jsxDesugaring); }; - var outFile = compilerOptions.outFile || compilerOptions.out; var emitJavaScript = createFileEmitter(); - if (targetSourceFile === undefined) { - if (outFile) { - emitFile(outFile); - } - else { - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if (ts.shouldEmitToOwnFile(sourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(sourceFile, host, shouldEmitJsx(sourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, sourceFile); - } - }); - } - } - else { - // targetSourceFile is specified (e.g calling emitter from language service or calling getSemanticDiagnostic from language service) - if (ts.shouldEmitToOwnFile(targetSourceFile, compilerOptions)) { - var jsFilePath = ts.getOwnEmitOutputFilePath(targetSourceFile, host, shouldEmitJsx(targetSourceFile) ? ".jsx" : ".js"); - emitFile(jsFilePath, targetSourceFile); - } - else if (!ts.isDeclarationFile(targetSourceFile) && outFile) { - emitFile(outFile); - } - } - // Sort and make the unique list of diagnostics - diagnostics = ts.sortAndDeduplicateDiagnostics(diagnostics); + ts.forEachExpectedEmitFile(host, emitFile, targetSourceFile); return { - emitSkipped: false, - diagnostics: diagnostics, + emitSkipped: emitSkipped, + diagnostics: emitterDiagnostics.getDiagnostics(), sourceMaps: sourceMapDataList }; function isUniqueLocalName(name, container) { @@ -30429,6 +31377,8 @@ var ts; function createFileEmitter() { var writer = ts.createTextWriter(newLine); var write = writer.write, writeTextOfNode = writer.writeTextOfNode, writeLine = writer.writeLine, increaseIndent = writer.increaseIndent, decreaseIndent = writer.decreaseIndent; + var sourceMap = compilerOptions.sourceMap || compilerOptions.inlineSourceMap ? ts.createSourceMapWriter(host, writer) : ts.getNullSourceMapWriter(); + var setSourceFile = sourceMap.setSourceFile, emitStart = sourceMap.emitStart, emitEnd = sourceMap.emitEnd, emitPos = sourceMap.emitPos; var currentSourceFile; var currentText; var currentLineMap; @@ -30451,40 +31401,18 @@ var ts; var decorateEmitted; var paramEmitted; var awaiterEmitted; - var tempFlags; + var tempFlags = 0; var tempVariables; var tempParameters; var externalImports; var exportSpecifiers; var exportEquals; - var hasExportStars; - /** Write emitted output to disk */ - var writeEmittedFiles = writeJavaScriptFile; + var hasExportStarsToExportValues; var detachedCommentsInfo; - var writeComment = ts.writeCommentRange; - /** Emit a node */ - var emit = emitNodeWithCommentsAndWithoutSourcemap; - /** Called just before starting emit of a node */ - var emitStart = function (node) { }; - /** Called once the emit of the node is done */ - var emitEnd = function (node) { }; - /** Emit the text for the given token that comes after startPos - * This by default writes the text provided with the given tokenKind - * but if optional emitFn callback is provided the text is emitted using the callback instead of default text - * @param tokenKind the kind of the token to search and emit - * @param startPos the position in the source to start searching for the token - * @param emitFn if given will be invoked to emit the text instead of actual token emit */ - var emitToken = emitTokenText; - /** Called to before starting the lexical scopes as in function/class in the emitted code because of node - * @param scopeDeclaration node that starts the lexical scope - * @param scopeName Optional name of this scope instead of deducing one from the declaration node */ - var scopeEmitStart = function (scopeDeclaration, scopeName) { }; - /** Called after coming out of the scope */ - var scopeEmitEnd = function () { }; /** Sourcemap data that will get encoded */ var sourceMapData; - /** The root file passed to the emit function (if present) */ - var root; + /** Is the file being emitted into its own file */ + var isOwnFileEmit; /** If removeComments is true, no leading-comments needed to be emitted **/ var emitLeadingCommentsOfPosition = compilerOptions.removeComments ? function (pos) { } : emitLeadingCommentsOfPositionWorker; var moduleEmitDelegates = (_a = {}, @@ -30504,15 +31432,32 @@ var ts; _b ); return doEmit; - function doEmit(jsFilePath, rootFile) { + function doEmit(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit) { + sourceMap.initialize(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + generatedNameSet = {}; + nodeToGeneratedName = []; + isOwnFileEmit = !isBundledEmit; + // Emit helpers from all the files + if (isBundledEmit && modulekind) { + ts.forEach(sourceFiles, emitEmitHelpers); + } + // Do not call emit directly. It does not set the currentSourceFile. + ts.forEach(sourceFiles, emitSourceFile); + writeLine(); + var sourceMappingURL = sourceMap.getSourceMappingURL(); + if (sourceMappingURL) { + write("//# sourceMappingURL=" + sourceMappingURL); + } + writeEmittedFiles(writer.getText(), jsFilePath, sourceMapFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); // reset the state + sourceMap.reset(); writer.reset(); currentSourceFile = undefined; currentText = undefined; currentLineMap = undefined; exportFunctionForFile = undefined; - generatedNameSet = {}; - nodeToGeneratedName = []; + generatedNameSet = undefined; + nodeToGeneratedName = undefined; computedPropertyNamesToGeneratedNames = undefined; convertedLoopState = undefined; extendsEmitted = false; @@ -30525,32 +31470,12 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = undefined; + hasExportStarsToExportValues = undefined; detachedCommentsInfo = undefined; sourceMapData = undefined; isEs6Module = false; renamedDependencies = undefined; isCurrentFileExternalModule = false; - root = rootFile; - if (compilerOptions.sourceMap || compilerOptions.inlineSourceMap) { - initializeEmitterWithSourceMaps(jsFilePath, root); - } - if (root) { - // Do not call emit directly. It does not set the currentSourceFile. - emitSourceFile(root); - } - else { - if (modulekind) { - ts.forEach(host.getSourceFiles(), emitEmitHelpers); - } - ts.forEach(host.getSourceFiles(), function (sourceFile) { - if ((!isExternalModuleOrDeclarationFile(sourceFile)) || (modulekind && ts.isExternalModule(sourceFile))) { - emitSourceFile(sourceFile); - } - }); - } - writeLine(); - writeEmittedFiles(writer.getText(), jsFilePath, /*writeByteOrderMark*/ compilerOptions.emitBOM); } function emitSourceFile(sourceFile) { currentSourceFile = sourceFile; @@ -30561,7 +31486,8 @@ var ts; renamedDependencies = sourceFile.renamedDependencies; currentFileIdentifiers = sourceFile.identifiers; isCurrentFileExternalModule = ts.isExternalModule(sourceFile); - emit(sourceFile); + setSourceFile(sourceFile); + emitNodeWithCommentsAndWithoutSourcemap(sourceFile); } function isUniqueName(name) { return !resolver.hasGlobalName(name) && @@ -30630,17 +31556,17 @@ var ts; switch (node.kind) { case 69 /* Identifier */: return makeUniqueName(node.text); - case 218 /* ModuleDeclaration */: - case 217 /* EnumDeclaration */: + case 220 /* ModuleDeclaration */: + case 219 /* EnumDeclaration */: return generateNameForModuleOrEnum(node); - case 222 /* ImportDeclaration */: - case 228 /* ExportDeclaration */: + case 224 /* ImportDeclaration */: + case 230 /* ExportDeclaration */: return generateNameForImportOrExportDeclaration(node); - case 213 /* FunctionDeclaration */: - case 214 /* ClassDeclaration */: - case 227 /* ExportAssignment */: + case 215 /* FunctionDeclaration */: + case 216 /* ClassDeclaration */: + case 229 /* ExportAssignment */: return generateNameForExportDefault(); - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return generateNameForClassExpression(); } } @@ -30648,338 +31574,15 @@ var ts; var id = ts.getNodeId(node); return nodeToGeneratedName[id] || (nodeToGeneratedName[id] = ts.unescapeIdentifier(generateNameForNode(node))); } - function initializeEmitterWithSourceMaps(jsFilePath, root) { - var sourceMapDir; // The directory in which sourcemap will be - // Current source map file and its index in the sources list - var sourceMapSourceIndex = -1; - // Names and its index map - var sourceMapNameIndexMap = {}; - var sourceMapNameIndices = []; - function getSourceMapNameIndex() { - return sourceMapNameIndices.length ? ts.lastOrUndefined(sourceMapNameIndices) : -1; + /** Write emitted output to disk */ + function writeEmittedFiles(emitOutput, jsFilePath, sourceMapFilePath, writeByteOrderMark) { + if (compilerOptions.sourceMap && !compilerOptions.inlineSourceMap) { + ts.writeFile(host, emitterDiagnostics, sourceMapFilePath, sourceMap.getText(), /*writeByteOrderMark*/ false); } - // Last recorded and encoded spans - var lastRecordedSourceMapSpan; - var lastEncodedSourceMapSpan = { - emittedLine: 1, - emittedColumn: 1, - sourceLine: 1, - sourceColumn: 1, - sourceIndex: 0 - }; - var lastEncodedNameIndex = 0; - // Encoding for sourcemap span - function encodeLastRecordedSourceMapSpan() { - if (!lastRecordedSourceMapSpan || lastRecordedSourceMapSpan === lastEncodedSourceMapSpan) { - return; - } - var prevEncodedEmittedColumn = lastEncodedSourceMapSpan.emittedColumn; - // Line/Comma delimiters - if (lastEncodedSourceMapSpan.emittedLine === lastRecordedSourceMapSpan.emittedLine) { - // Emit comma to separate the entry - if (sourceMapData.sourceMapMappings) { - sourceMapData.sourceMapMappings += ","; - } - } - else { - // Emit line delimiters - for (var encodedLine = lastEncodedSourceMapSpan.emittedLine; encodedLine < lastRecordedSourceMapSpan.emittedLine; encodedLine++) { - sourceMapData.sourceMapMappings += ";"; - } - prevEncodedEmittedColumn = 1; - } - // 1. Relative Column 0 based - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.emittedColumn - prevEncodedEmittedColumn); - // 2. Relative sourceIndex - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceIndex - lastEncodedSourceMapSpan.sourceIndex); - // 3. Relative sourceLine 0 based - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceLine - lastEncodedSourceMapSpan.sourceLine); - // 4. Relative sourceColumn 0 based - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.sourceColumn - lastEncodedSourceMapSpan.sourceColumn); - // 5. Relative namePosition 0 based - if (lastRecordedSourceMapSpan.nameIndex >= 0) { - sourceMapData.sourceMapMappings += base64VLQFormatEncode(lastRecordedSourceMapSpan.nameIndex - lastEncodedNameIndex); - lastEncodedNameIndex = lastRecordedSourceMapSpan.nameIndex; - } - lastEncodedSourceMapSpan = lastRecordedSourceMapSpan; - sourceMapData.sourceMapDecodedMappings.push(lastEncodedSourceMapSpan); - function base64VLQFormatEncode(inValue) { - function base64FormatEncode(inValue) { - if (inValue < 64) { - return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(inValue); - } - throw TypeError(inValue + ": not a 64 based value"); - } - // Add a new least significant bit that has the sign of the value. - // if negative number the least significant bit that gets added to the number has value 1 - // else least significant bit value that gets added is 0 - // eg. -1 changes to binary : 01 [1] => 3 - // +1 changes to binary : 01 [0] => 2 - if (inValue < 0) { - inValue = ((-inValue) << 1) + 1; - } - else { - inValue = inValue << 1; - } - // Encode 5 bits at a time starting from least significant bits - var encodedStr = ""; - do { - var currentDigit = inValue & 31; // 11111 - inValue = inValue >> 5; - if (inValue > 0) { - // There are still more digits to decode, set the msb (6th bit) - currentDigit = currentDigit | 32; - } - encodedStr = encodedStr + base64FormatEncode(currentDigit); - } while (inValue > 0); - return encodedStr; - } + if (sourceMapDataList) { + sourceMapDataList.push(sourceMap.getSourceMapData()); } - function recordSourceMapSpan(pos) { - var sourceLinePos = ts.computeLineAndCharacterOfPosition(currentLineMap, pos); - // Convert the location to be one-based. - sourceLinePos.line++; - sourceLinePos.character++; - var emittedLine = writer.getLine(); - var emittedColumn = writer.getColumn(); - // If this location wasn't recorded or the location in source is going backwards, record the span - if (!lastRecordedSourceMapSpan || - lastRecordedSourceMapSpan.emittedLine !== emittedLine || - lastRecordedSourceMapSpan.emittedColumn !== emittedColumn || - (lastRecordedSourceMapSpan.sourceIndex === sourceMapSourceIndex && - (lastRecordedSourceMapSpan.sourceLine > sourceLinePos.line || - (lastRecordedSourceMapSpan.sourceLine === sourceLinePos.line && lastRecordedSourceMapSpan.sourceColumn > sourceLinePos.character)))) { - // Encode the last recordedSpan before assigning new - encodeLastRecordedSourceMapSpan(); - // New span - lastRecordedSourceMapSpan = { - emittedLine: emittedLine, - emittedColumn: emittedColumn, - sourceLine: sourceLinePos.line, - sourceColumn: sourceLinePos.character, - nameIndex: getSourceMapNameIndex(), - sourceIndex: sourceMapSourceIndex - }; - } - else { - // Take the new pos instead since there is no change in emittedLine and column since last location - lastRecordedSourceMapSpan.sourceLine = sourceLinePos.line; - lastRecordedSourceMapSpan.sourceColumn = sourceLinePos.character; - lastRecordedSourceMapSpan.sourceIndex = sourceMapSourceIndex; - } - } - function recordEmitNodeStartSpan(node) { - // Get the token pos after skipping to the token (ignoring the leading trivia) - recordSourceMapSpan(ts.skipTrivia(currentText, node.pos)); - } - function recordEmitNodeEndSpan(node) { - recordSourceMapSpan(node.end); - } - function writeTextWithSpanRecord(tokenKind, startPos, emitFn) { - var tokenStartPos = ts.skipTrivia(currentText, startPos); - recordSourceMapSpan(tokenStartPos); - var tokenEndPos = emitTokenText(tokenKind, tokenStartPos, emitFn); - recordSourceMapSpan(tokenEndPos); - return tokenEndPos; - } - function recordNewSourceFileStart(node) { - // Add the file to tsFilePaths - // If sourceroot option: Use the relative path corresponding to the common directory path - // otherwise source locations relative to map file location - var sourcesDirectoryPath = compilerOptions.sourceRoot ? host.getCommonSourceDirectory() : sourceMapDir; - sourceMapData.sourceMapSources.push(ts.getRelativePathToDirectoryOrUrl(sourcesDirectoryPath, node.fileName, host.getCurrentDirectory(), host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ true)); - sourceMapSourceIndex = sourceMapData.sourceMapSources.length - 1; - // The one that can be used from program to get the actual source file - sourceMapData.inputSourceFileNames.push(node.fileName); - if (compilerOptions.inlineSources) { - if (!sourceMapData.sourceMapSourcesContent) { - sourceMapData.sourceMapSourcesContent = []; - } - sourceMapData.sourceMapSourcesContent.push(node.text); - } - } - function recordScopeNameOfNode(node, scopeName) { - function recordScopeNameIndex(scopeNameIndex) { - sourceMapNameIndices.push(scopeNameIndex); - } - function recordScopeNameStart(scopeName) { - var scopeNameIndex = -1; - if (scopeName) { - var parentIndex = getSourceMapNameIndex(); - if (parentIndex !== -1) { - // Child scopes are always shown with a dot (even if they have no name), - // unless it is a computed property. Then it is shown with brackets, - // but the brackets are included in the name. - var name_21 = node.name; - if (!name_21 || name_21.kind !== 136 /* ComputedPropertyName */) { - scopeName = "." + scopeName; - } - scopeName = sourceMapData.sourceMapNames[parentIndex] + scopeName; - } - scopeNameIndex = ts.getProperty(sourceMapNameIndexMap, scopeName); - if (scopeNameIndex === undefined) { - scopeNameIndex = sourceMapData.sourceMapNames.length; - sourceMapData.sourceMapNames.push(scopeName); - sourceMapNameIndexMap[scopeName] = scopeNameIndex; - } - } - recordScopeNameIndex(scopeNameIndex); - } - if (scopeName) { - // The scope was already given a name use it - recordScopeNameStart(scopeName); - } - else if (node.kind === 213 /* FunctionDeclaration */ || - node.kind === 173 /* FunctionExpression */ || - node.kind === 143 /* MethodDeclaration */ || - node.kind === 142 /* MethodSignature */ || - node.kind === 145 /* GetAccessor */ || - node.kind === 146 /* SetAccessor */ || - node.kind === 218 /* ModuleDeclaration */ || - node.kind === 214 /* ClassDeclaration */ || - node.kind === 217 /* EnumDeclaration */) { - // Declaration and has associated name use it - if (node.name) { - var name_22 = node.name; - // For computed property names, the text will include the brackets - scopeName = name_22.kind === 136 /* ComputedPropertyName */ - ? ts.getTextOfNode(name_22) - : node.name.text; - } - recordScopeNameStart(scopeName); - } - else { - // Block just use the name from upper level scope - recordScopeNameIndex(getSourceMapNameIndex()); - } - } - function recordScopeNameEnd() { - sourceMapNameIndices.pop(); - } - ; - function writeCommentRangeWithMap(currentText, currentLineMap, writer, comment, newLine) { - recordSourceMapSpan(comment.pos); - ts.writeCommentRange(currentText, currentLineMap, writer, comment, newLine); - recordSourceMapSpan(comment.end); - } - function serializeSourceMapContents(version, file, sourceRoot, sources, names, mappings, sourcesContent) { - if (typeof JSON !== "undefined") { - var map_1 = { - version: version, - file: file, - sourceRoot: sourceRoot, - sources: sources, - names: names, - mappings: mappings - }; - if (sourcesContent !== undefined) { - map_1.sourcesContent = sourcesContent; - } - return JSON.stringify(map_1); - } - return "{\"version\":" + version + ",\"file\":\"" + ts.escapeString(file) + "\",\"sourceRoot\":\"" + ts.escapeString(sourceRoot) + "\",\"sources\":[" + serializeStringArray(sources) + "],\"names\":[" + serializeStringArray(names) + "],\"mappings\":\"" + ts.escapeString(mappings) + "\" " + (sourcesContent !== undefined ? ",\"sourcesContent\":[" + serializeStringArray(sourcesContent) + "]" : "") + "}"; - function serializeStringArray(list) { - var output = ""; - for (var i = 0, n = list.length; i < n; i++) { - if (i) { - output += ","; - } - output += "\"" + ts.escapeString(list[i]) + "\""; - } - return output; - } - } - function writeJavaScriptAndSourceMapFile(emitOutput, jsFilePath, writeByteOrderMark) { - encodeLastRecordedSourceMapSpan(); - var sourceMapText = serializeSourceMapContents(3, sourceMapData.sourceMapFile, sourceMapData.sourceMapSourceRoot, sourceMapData.sourceMapSources, sourceMapData.sourceMapNames, sourceMapData.sourceMapMappings, sourceMapData.sourceMapSourcesContent); - sourceMapDataList.push(sourceMapData); - var sourceMapUrl; - if (compilerOptions.inlineSourceMap) { - // Encode the sourceMap into the sourceMap url - var base64SourceMapText = ts.convertToBase64(sourceMapText); - sourceMapUrl = "//# sourceMappingURL=data:application/json;base64," + base64SourceMapText; - } - else { - // Write source map file - ts.writeFile(host, diagnostics, sourceMapData.sourceMapFilePath, sourceMapText, /*writeByteOrderMark*/ false); - sourceMapUrl = "//# sourceMappingURL=" + sourceMapData.jsSourceMappingURL; - } - // Write sourcemap url to the js file and write the js file - writeJavaScriptFile(emitOutput + sourceMapUrl, jsFilePath, writeByteOrderMark); - } - // Initialize source map data - var sourceMapJsFile = ts.getBaseFileName(ts.normalizeSlashes(jsFilePath)); - sourceMapData = { - sourceMapFilePath: jsFilePath + ".map", - jsSourceMappingURL: sourceMapJsFile + ".map", - sourceMapFile: sourceMapJsFile, - sourceMapSourceRoot: compilerOptions.sourceRoot || "", - sourceMapSources: [], - inputSourceFileNames: [], - sourceMapNames: [], - sourceMapMappings: "", - sourceMapSourcesContent: undefined, - sourceMapDecodedMappings: [] - }; - // Normalize source root and make sure it has trailing "/" so that it can be used to combine paths with the - // relative paths of the sources list in the sourcemap - sourceMapData.sourceMapSourceRoot = ts.normalizeSlashes(sourceMapData.sourceMapSourceRoot); - if (sourceMapData.sourceMapSourceRoot.length && sourceMapData.sourceMapSourceRoot.charCodeAt(sourceMapData.sourceMapSourceRoot.length - 1) !== 47 /* slash */) { - sourceMapData.sourceMapSourceRoot += ts.directorySeparator; - } - if (compilerOptions.mapRoot) { - sourceMapDir = ts.normalizeSlashes(compilerOptions.mapRoot); - if (root) { - // For modules or multiple emit files the mapRoot will have directory structure like the sources - // So if src\a.ts and src\lib\b.ts are compiled together user would be moving the maps into mapRoot\a.js.map and mapRoot\lib\b.js.map - sourceMapDir = ts.getDirectoryPath(ts.getSourceFilePathInNewDir(root, host, sourceMapDir)); - } - if (!ts.isRootedDiskPath(sourceMapDir) && !ts.isUrl(sourceMapDir)) { - // The relative paths are relative to the common directory - sourceMapDir = ts.combinePaths(host.getCommonSourceDirectory(), sourceMapDir); - sourceMapData.jsSourceMappingURL = ts.getRelativePathToDirectoryOrUrl(ts.getDirectoryPath(ts.normalizePath(jsFilePath)), // get the relative sourceMapDir path based on jsFilePath - ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL), // this is where user expects to see sourceMap - host.getCurrentDirectory(), host.getCanonicalFileName, - /*isAbsolutePathAnUrl*/ true); - } - else { - sourceMapData.jsSourceMappingURL = ts.combinePaths(sourceMapDir, sourceMapData.jsSourceMappingURL); - } - } - else { - sourceMapDir = ts.getDirectoryPath(ts.normalizePath(jsFilePath)); - } - function emitNodeWithSourceMap(node) { - if (node) { - if (ts.nodeIsSynthesized(node)) { - return emitNodeWithoutSourceMap(node); - } - if (node.kind !== 248 /* SourceFile */) { - recordEmitNodeStartSpan(node); - emitNodeWithoutSourceMap(node); - recordEmitNodeEndSpan(node); - } - else { - recordNewSourceFileStart(node); - emitNodeWithoutSourceMap(node); - } - } - } - function emitNodeWithCommentsAndWithSourcemap(node) { - emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); - } - writeEmittedFiles = writeJavaScriptAndSourceMapFile; - emit = emitNodeWithCommentsAndWithSourcemap; - emitStart = recordEmitNodeStartSpan; - emitEnd = recordEmitNodeEndSpan; - emitToken = writeTextWithSpanRecord; - scopeEmitStart = recordScopeNameOfNode; - scopeEmitEnd = recordScopeNameEnd; - writeComment = writeCommentRangeWithMap; - } - function writeJavaScriptFile(emitOutput, jsFilePath, writeByteOrderMark) { - ts.writeFile(host, diagnostics, jsFilePath, emitOutput, writeByteOrderMark); + ts.writeFile(host, emitterDiagnostics, jsFilePath, emitOutput, writeByteOrderMark); } // Create a temporary variable with a unique unused name. function createTempVariable(flags) { @@ -31011,7 +31614,15 @@ var ts; write(";"); } } - function emitTokenText(tokenKind, startPos, emitFn) { + /** Emit the text for the given token that comes after startPos + * This by default writes the text provided with the given tokenKind + * but if optional emitFn callback is provided the text is emitted using the callback instead of default text + * @param tokenKind the kind of the token to search and emit + * @param startPos the position in the source to start searching for the token + * @param emitFn if given will be invoked to emit the text instead of actual token emit */ + function emitToken(tokenKind, startPos, emitFn) { + var tokenStartPos = ts.skipTrivia(currentText, startPos); + emitPos(tokenStartPos); var tokenString = ts.tokenToString(tokenKind); if (emitFn) { emitFn(); @@ -31019,7 +31630,9 @@ var ts; else { write(tokenString); } - return startPos + tokenString.length; + var tokenEndPos = tokenStartPos + tokenString.length; + emitPos(tokenEndPos); + return tokenEndPos; } function emitOptional(prefix, node) { if (node) { @@ -31036,11 +31649,6 @@ var ts; write(")"); } } - function emitTrailingCommaIfPresent(nodeList) { - if (nodeList.hasTrailingComma) { - write(","); - } - } function emitLinePreservingList(parent, nodes, allowTrailingComma, spacesBetweenBraces) { ts.Debug.assert(nodes.length > 0); increaseIndent(); @@ -31113,7 +31721,7 @@ var ts; } function emitCommaList(nodes) { if (nodes) { - emitList(nodes, 0, nodes.length, /*multiline*/ false, /*trailingComma*/ false); + emitList(nodes, 0, nodes.length, /*multiLine*/ false, /*trailingComma*/ false); } } function emitLines(nodes) { @@ -31228,10 +31836,10 @@ var ts; write("("); emit(tempVariable); // Now we emit the expressions - if (node.template.kind === 183 /* TemplateExpression */) { + if (node.template.kind === 185 /* TemplateExpression */) { ts.forEach(node.template.templateSpans, function (templateSpan) { write(", "); - var needsParens = templateSpan.expression.kind === 181 /* BinaryExpression */ + var needsParens = templateSpan.expression.kind === 183 /* BinaryExpression */ && templateSpan.expression.operatorToken.kind === 24 /* CommaToken */; emitParenthesizedIf(templateSpan.expression, needsParens); }); @@ -31266,7 +31874,7 @@ var ts; // ("abc" + 1) << (2 + "") // rather than // "abc" + (1 << 2) + "" - var needsParens = templateSpan.expression.kind !== 172 /* ParenthesizedExpression */ + var needsParens = templateSpan.expression.kind !== 174 /* ParenthesizedExpression */ && comparePrecedenceToBinaryPlus(templateSpan.expression) !== 1 /* GreaterThan */; if (i > 0 || headEmitted) { // If this is the first span and the head was not emitted, then this templateSpan's @@ -31308,11 +31916,11 @@ var ts; } function templateNeedsParens(template, parent) { switch (parent.kind) { - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: return parent.expression === template; - case 170 /* TaggedTemplateExpression */: - case 172 /* ParenthesizedExpression */: + case 172 /* TaggedTemplateExpression */: + case 174 /* ParenthesizedExpression */: return false; default: return comparePrecedenceToBinaryPlus(parent) !== -1 /* LessThan */; @@ -31333,7 +31941,7 @@ var ts; // TODO (drosen): Note that we need to account for the upcoming 'yield' and // spread ('...') unary operators that are anticipated for ES6. switch (expression.kind) { - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: switch (expression.operatorToken.kind) { case 37 /* AsteriskToken */: case 39 /* SlashToken */: @@ -31345,8 +31953,8 @@ var ts; default: return -1 /* LessThan */; } - case 184 /* YieldExpression */: - case 182 /* ConditionalExpression */: + case 186 /* YieldExpression */: + case 184 /* ConditionalExpression */: return -1 /* LessThan */; default: return 1 /* GreaterThan */; @@ -31374,13 +31982,13 @@ var ts; /// these emit into an object literal property name, we don't need to be worried /// about keywords, just non-identifier characters function emitAttributeName(name) { - if (/[A-Za-z_]+[\w*]/.test(name.text)) { - write("\""); + if (/^[A-Za-z_]\w*$/.test(name.text)) { emit(name); - write("\""); } else { + write("\""); emit(name); + write("\""); } } /// Emit an name/value pair for an attribute (e.g. "x: 3") @@ -31396,7 +32004,7 @@ var ts; } function emitJsxElement(openingNode, children) { var syntheticReactRef = ts.createSynthesizedNode(69 /* Identifier */); - syntheticReactRef.text = "React"; + syntheticReactRef.text = compilerOptions.reactNamespace ? compilerOptions.reactNamespace : "React"; syntheticReactRef.parent = openingNode; // Call React.createElement(tag, ... emitLeadingComments(openingNode); @@ -31413,12 +32021,12 @@ var ts; // Either emit one big object literal (no spread attribs), or // a call to React.__spread var attrs = openingNode.attributes; - if (ts.forEach(attrs, function (attr) { return attr.kind === 239 /* JsxSpreadAttribute */; })) { + if (ts.forEach(attrs, function (attr) { return attr.kind === 241 /* JsxSpreadAttribute */; })) { emitExpressionIdentifier(syntheticReactRef); write(".__spread("); var haveOpenedObjectLiteral = false; for (var i_1 = 0; i_1 < attrs.length; i_1++) { - if (attrs[i_1].kind === 239 /* JsxSpreadAttribute */) { + if (attrs[i_1].kind === 241 /* JsxSpreadAttribute */) { // If this is the first argument, we need to emit a {} as the first argument if (i_1 === 0) { write("{}, "); @@ -31433,7 +32041,7 @@ var ts; emit(attrs[i_1].expression); } else { - ts.Debug.assert(attrs[i_1].kind === 238 /* JsxAttribute */); + ts.Debug.assert(attrs[i_1].kind === 240 /* JsxAttribute */); if (haveOpenedObjectLiteral) { write(", "); } @@ -31467,11 +32075,11 @@ var ts; if (children) { for (var i = 0; i < children.length; i++) { // Don't emit empty expressions - if (children[i].kind === 240 /* JsxExpression */ && !(children[i].expression)) { + if (children[i].kind === 242 /* JsxExpression */ && !(children[i].expression)) { continue; } // Don't emit empty strings - if (children[i].kind === 236 /* JsxText */) { + if (children[i].kind === 238 /* JsxText */) { var text = getTextToEmit(children[i]); if (text !== undefined) { write(", \""); @@ -31489,11 +32097,11 @@ var ts; write(")"); // closes "React.createElement(" emitTrailingComments(openingNode); } - if (node.kind === 233 /* JsxElement */) { + if (node.kind === 235 /* JsxElement */) { emitJsxElement(node.openingElement, node.children); } else { - ts.Debug.assert(node.kind === 234 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 236 /* JsxSelfClosingElement */); emitJsxElement(node); } } @@ -31515,11 +32123,11 @@ var ts; if (i > 0) { write(" "); } - if (attribs[i].kind === 239 /* JsxSpreadAttribute */) { + if (attribs[i].kind === 241 /* JsxSpreadAttribute */) { emitJsxSpreadAttribute(attribs[i]); } else { - ts.Debug.assert(attribs[i].kind === 238 /* JsxAttribute */); + ts.Debug.assert(attribs[i].kind === 240 /* JsxAttribute */); emitJsxAttribute(attribs[i]); } } @@ -31527,11 +32135,11 @@ var ts; function emitJsxOpeningOrSelfClosingElement(node) { write("<"); emit(node.tagName); - if (node.attributes.length > 0 || (node.kind === 234 /* JsxSelfClosingElement */)) { + if (node.attributes.length > 0 || (node.kind === 236 /* JsxSelfClosingElement */)) { write(" "); } emitAttributes(node.attributes); - if (node.kind === 234 /* JsxSelfClosingElement */) { + if (node.kind === 236 /* JsxSelfClosingElement */) { write("/>"); } else { @@ -31550,11 +32158,11 @@ var ts; } emitJsxClosingElement(node.closingElement); } - if (node.kind === 233 /* JsxElement */) { + if (node.kind === 235 /* JsxElement */) { emitJsxElement(node); } else { - ts.Debug.assert(node.kind === 234 /* JsxSelfClosingElement */); + ts.Debug.assert(node.kind === 236 /* JsxSelfClosingElement */); emitJsxOpeningOrSelfClosingElement(node); } } @@ -31562,7 +32170,7 @@ var ts; // In a sense, it does not actually emit identifiers as much as it declares a name for a specific property. // For example, this is utilized when feeding in a result to Object.defineProperty. function emitExpressionForPropertyName(node) { - ts.Debug.assert(node.kind !== 163 /* BindingElement */); + ts.Debug.assert(node.kind !== 165 /* BindingElement */); if (node.kind === 9 /* StringLiteral */) { emitLiteral(node); } @@ -31610,59 +32218,60 @@ var ts; function isExpressionIdentifier(node) { var parent = node.parent; switch (parent.kind) { - case 164 /* ArrayLiteralExpression */: - case 189 /* AsExpression */: - case 181 /* BinaryExpression */: - case 168 /* CallExpression */: - case 241 /* CaseClause */: + case 166 /* ArrayLiteralExpression */: + case 191 /* AsExpression */: + case 183 /* BinaryExpression */: + case 170 /* CallExpression */: + case 243 /* CaseClause */: case 136 /* ComputedPropertyName */: - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: case 139 /* Decorator */: - case 175 /* DeleteExpression */: - case 197 /* DoStatement */: - case 167 /* ElementAccessExpression */: - case 227 /* ExportAssignment */: - case 195 /* ExpressionStatement */: - case 188 /* ExpressionWithTypeArguments */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 196 /* IfStatement */: - case 234 /* JsxSelfClosingElement */: - case 235 /* JsxOpeningElement */: - case 239 /* JsxSpreadAttribute */: - case 240 /* JsxExpression */: - case 169 /* NewExpression */: - case 172 /* ParenthesizedExpression */: - case 180 /* PostfixUnaryExpression */: - case 179 /* PrefixUnaryExpression */: - case 204 /* ReturnStatement */: - case 246 /* ShorthandPropertyAssignment */: - case 185 /* SpreadElementExpression */: - case 206 /* SwitchStatement */: - case 170 /* TaggedTemplateExpression */: - case 190 /* TemplateSpan */: - case 208 /* ThrowStatement */: - case 171 /* TypeAssertionExpression */: - case 176 /* TypeOfExpression */: - case 177 /* VoidExpression */: - case 198 /* WhileStatement */: - case 205 /* WithStatement */: - case 184 /* YieldExpression */: + case 177 /* DeleteExpression */: + case 199 /* DoStatement */: + case 169 /* ElementAccessExpression */: + case 229 /* ExportAssignment */: + case 197 /* ExpressionStatement */: + case 190 /* ExpressionWithTypeArguments */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 198 /* IfStatement */: + case 239 /* JsxClosingElement */: + case 236 /* JsxSelfClosingElement */: + case 237 /* JsxOpeningElement */: + case 241 /* JsxSpreadAttribute */: + case 242 /* JsxExpression */: + case 171 /* NewExpression */: + case 174 /* ParenthesizedExpression */: + case 182 /* PostfixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: + case 206 /* ReturnStatement */: + case 248 /* ShorthandPropertyAssignment */: + case 187 /* SpreadElementExpression */: + case 208 /* SwitchStatement */: + case 172 /* TaggedTemplateExpression */: + case 192 /* TemplateSpan */: + case 210 /* ThrowStatement */: + case 173 /* TypeAssertionExpression */: + case 178 /* TypeOfExpression */: + case 179 /* VoidExpression */: + case 200 /* WhileStatement */: + case 207 /* WithStatement */: + case 186 /* YieldExpression */: return true; - case 163 /* BindingElement */: - case 247 /* EnumMember */: + case 165 /* BindingElement */: + case 249 /* EnumMember */: case 138 /* Parameter */: - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: case 141 /* PropertyDeclaration */: - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return parent.initializer === node; - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return parent.expression === node; - case 174 /* ArrowFunction */: - case 173 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 175 /* FunctionExpression */: return parent.body === node; - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return parent.moduleReference === node; case 135 /* QualifiedName */: return parent.left === node; @@ -31676,7 +32285,7 @@ var ts; } var container = resolver.getReferencedExportContainer(node); if (container) { - if (container.kind === 248 /* SourceFile */) { + if (container.kind === 250 /* SourceFile */) { // Identifier references module export if (modulekind !== 5 /* ES6 */ && modulekind !== 4 /* System */) { write("exports."); @@ -31692,17 +32301,17 @@ var ts; if (modulekind !== 5 /* ES6 */) { var declaration = resolver.getReferencedImportDeclaration(node); if (declaration) { - if (declaration.kind === 223 /* ImportClause */) { + if (declaration.kind === 225 /* ImportClause */) { // Identifier references default import write(getGeneratedNameForNode(declaration.parent)); write(languageVersion === 0 /* ES3 */ ? "[\"default\"]" : ".default"); return; } - else if (declaration.kind === 226 /* ImportSpecifier */) { + else if (declaration.kind === 228 /* ImportSpecifier */) { // Identifier references named import write(getGeneratedNameForNode(declaration.parent.parent.parent)); - var name_23 = declaration.propertyName || declaration.name; - var identifier = ts.getTextOfNodeFromSourceText(currentText, name_23); + var name_21 = declaration.propertyName || declaration.name; + var identifier = ts.getTextOfNodeFromSourceText(currentText, name_21); if (languageVersion === 0 /* ES3 */ && identifier === "default") { write("[\"default\"]"); } @@ -31733,10 +32342,10 @@ var ts; if (languageVersion < 2 /* ES6 */) { var parent_6 = node.parent; switch (parent_6.kind) { - case 163 /* BindingElement */: - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 211 /* VariableDeclaration */: + case 165 /* BindingElement */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 213 /* VariableDeclaration */: return parent_6.name === node && resolver.isNestedRedeclaration(parent_6); } } @@ -31746,8 +32355,8 @@ var ts; if (convertedLoopState) { if (node.text == "arguments" && resolver.isArgumentsLocalBinding(node)) { // in converted loop body arguments cannot be used directly. - var name_24 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); - write(name_24); + var name_22 = convertedLoopState.argumentsName || (convertedLoopState.argumentsName = makeUniqueName("arguments")); + write(name_22); return; } } @@ -31771,6 +32380,9 @@ var ts; if (resolver.getNodeCheckFlags(node) & 2 /* LexicalThis */) { write("_this"); } + else if (convertedLoopState) { + write(convertedLoopState.thisName || (convertedLoopState.thisName = makeUniqueName("this"))); + } else { write("this"); } @@ -31844,10 +32456,10 @@ var ts; } } function needsParenthesisForAwaitExpressionAsYield(node) { - if (node.parent.kind === 181 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { + if (node.parent.kind === 183 /* BinaryExpression */ && !ts.isAssignmentOperator(node.parent.operatorToken.kind)) { return true; } - else if (node.parent.kind === 182 /* ConditionalExpression */ && node.parent.condition === node) { + else if (node.parent.kind === 184 /* ConditionalExpression */ && node.parent.condition === node) { return true; } return false; @@ -31855,11 +32467,11 @@ var ts; function needsParenthesisForPropertyAccessOrInvocation(node) { switch (node.kind) { case 69 /* Identifier */: - case 164 /* ArrayLiteralExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: - case 168 /* CallExpression */: - case 172 /* ParenthesizedExpression */: + case 166 /* ArrayLiteralExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 174 /* ParenthesizedExpression */: // This list is not exhaustive and only includes those cases that are relevant // to the check in emitArrayLiteral. More cases can be added as needed. return false; @@ -31879,17 +32491,17 @@ var ts; write(", "); } var e = elements[pos]; - if (e.kind === 185 /* SpreadElementExpression */) { + if (e.kind === 187 /* SpreadElementExpression */) { e = e.expression; emitParenthesizedIf(e, /*parenthesized*/ group === 0 && needsParenthesisForPropertyAccessOrInvocation(e)); pos++; - if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 164 /* ArrayLiteralExpression */) { + if (pos === length && group === 0 && needsUniqueCopy && e.kind !== 166 /* ArrayLiteralExpression */) { write(".slice()"); } } else { var i = pos; - while (i < length && elements[i].kind !== 185 /* SpreadElementExpression */) { + while (i < length && elements[i].kind !== 187 /* SpreadElementExpression */) { i++; } write("["); @@ -31912,7 +32524,7 @@ var ts; } } function isSpreadElementExpression(node) { - return node.kind === 185 /* SpreadElementExpression */; + return node.kind === 187 /* SpreadElementExpression */; } function emitArrayLiteral(node) { var elements = node.elements; @@ -31921,7 +32533,7 @@ var ts; } else if (languageVersion >= 2 /* ES6 */ || !ts.forEach(elements, isSpreadElementExpression)) { write("["); - emitLinePreservingList(node, node.elements, elements.hasTrailingComma, /*spacesBetweenBraces:*/ false); + emitLinePreservingList(node, node.elements, elements.hasTrailingComma, /*spacesBetweenBraces*/ false); write("]"); } else { @@ -31941,7 +32553,7 @@ var ts; // then try to preserve the original shape of the object literal. // Otherwise just try to preserve the formatting. if (numElements === properties.length) { - emitLinePreservingList(node, properties, /* allowTrailingComma */ languageVersion >= 1 /* ES5 */, /* spacesBetweenBraces */ true); + emitLinePreservingList(node, properties, /*allowTrailingComma*/ languageVersion >= 1 /* ES5 */, /*spacesBetweenBraces*/ true); } else { var multiLine = (node.flags & 1024 /* MultiLine */) !== 0; @@ -32034,10 +32646,10 @@ var ts; emitMemberAccessForPropertyName(property.name); emitEnd(property.name); write(" = "); - if (property.kind === 245 /* PropertyAssignment */) { + if (property.kind === 247 /* PropertyAssignment */) { emit(property.initializer); } - else if (property.kind === 246 /* ShorthandPropertyAssignment */) { + else if (property.kind === 248 /* ShorthandPropertyAssignment */) { emitExpressionIdentifier(property.name); } else if (property.kind === 143 /* MethodDeclaration */) { @@ -32090,21 +32702,21 @@ var ts; emitObjectLiteralBody(node, properties.length); } function createBinaryExpression(left, operator, right, startsOnNewLine) { - var result = ts.createSynthesizedNode(181 /* BinaryExpression */, startsOnNewLine); + var result = ts.createSynthesizedNode(183 /* BinaryExpression */, startsOnNewLine); result.operatorToken = ts.createSynthesizedNode(operator); result.left = left; result.right = right; return result; } function createPropertyAccessExpression(expression, name) { - var result = ts.createSynthesizedNode(166 /* PropertyAccessExpression */); + var result = ts.createSynthesizedNode(168 /* PropertyAccessExpression */); result.expression = parenthesizeForAccess(expression); result.dotToken = ts.createSynthesizedNode(21 /* DotToken */); result.name = name; return result; } function createElementAccessExpression(expression, argumentExpression) { - var result = ts.createSynthesizedNode(167 /* ElementAccessExpression */); + var result = ts.createSynthesizedNode(169 /* ElementAccessExpression */); result.expression = parenthesizeForAccess(expression); result.argumentExpression = argumentExpression; return result; @@ -32112,7 +32724,7 @@ var ts; function parenthesizeForAccess(expr) { // When diagnosing whether the expression needs parentheses, the decision should be based // on the innermost expression in a chain of nested type assertions. - while (expr.kind === 171 /* TypeAssertionExpression */ || expr.kind === 189 /* AsExpression */) { + while (expr.kind === 173 /* TypeAssertionExpression */ || expr.kind === 191 /* AsExpression */) { expr = expr.expression; } // isLeftHandSideExpression is almost the correct criterion for when it is not necessary @@ -32124,11 +32736,11 @@ var ts; // 1.x -> not the same as (1).x // if (ts.isLeftHandSideExpression(expr) && - expr.kind !== 169 /* NewExpression */ && + expr.kind !== 171 /* NewExpression */ && expr.kind !== 8 /* NumericLiteral */) { return expr; } - var node = ts.createSynthesizedNode(172 /* ParenthesizedExpression */); + var node = ts.createSynthesizedNode(174 /* ParenthesizedExpression */); node.expression = expr; return node; } @@ -32163,7 +32775,7 @@ var ts; // Return true if identifier resolves to an exported member of a namespace function isNamespaceExportReference(node) { var container = resolver.getReferencedExportContainer(node); - return container && container.kind !== 248 /* SourceFile */; + return container && container.kind !== 250 /* SourceFile */; } function emitShorthandPropertyAssignment(node) { // The name property of a short-hand property assignment is considered an expression position, so here @@ -32193,7 +32805,7 @@ var ts; if (constantValue !== undefined) { write(constantValue.toString()); if (!compilerOptions.removeComments) { - var propertyName = node.kind === 166 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); + var propertyName = node.kind === 168 /* PropertyAccessExpression */ ? ts.declarationNameToString(node.name) : ts.getTextOfNode(node.argumentExpression); write(" /* " + propertyName + " */"); } return true; @@ -32204,7 +32816,7 @@ var ts; if (compilerOptions.isolatedModules) { return undefined; } - return node.kind === 166 /* PropertyAccessExpression */ || node.kind === 167 /* ElementAccessExpression */ + return node.kind === 168 /* PropertyAccessExpression */ || node.kind === 169 /* ElementAccessExpression */ ? resolver.getConstantValue(node) : undefined; } @@ -32296,6 +32908,9 @@ var ts; case 135 /* QualifiedName */: emitQualifiedNameAsExpression(node, useFallback); break; + default: + emitNodeWithoutSourceMap(node); + break; } } function emitIndexedAccess(node) { @@ -32308,10 +32923,10 @@ var ts; write("]"); } function hasSpreadElement(elements) { - return ts.forEach(elements, function (e) { return e.kind === 185 /* SpreadElementExpression */; }); + return ts.forEach(elements, function (e) { return e.kind === 187 /* SpreadElementExpression */; }); } function skipParentheses(node) { - while (node.kind === 172 /* ParenthesizedExpression */ || node.kind === 171 /* TypeAssertionExpression */ || node.kind === 189 /* AsExpression */) { + while (node.kind === 174 /* ParenthesizedExpression */ || node.kind === 173 /* TypeAssertionExpression */ || node.kind === 191 /* AsExpression */) { node = node.expression; } return node; @@ -32332,13 +32947,13 @@ var ts; function emitCallWithSpread(node) { var target; var expr = skipParentheses(node.expression); - if (expr.kind === 166 /* PropertyAccessExpression */) { + if (expr.kind === 168 /* PropertyAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("."); emit(expr.name); } - else if (expr.kind === 167 /* ElementAccessExpression */) { + else if (expr.kind === 169 /* ElementAccessExpression */) { // Target will be emitted as "this" argument target = emitCallTarget(expr.expression); write("["); @@ -32383,7 +32998,7 @@ var ts; } else { emit(node.expression); - superCall = node.expression.kind === 166 /* PropertyAccessExpression */ && node.expression.expression.kind === 95 /* SuperKeyword */; + superCall = node.expression.kind === 168 /* PropertyAccessExpression */ && node.expression.expression.kind === 95 /* SuperKeyword */; } if (superCall && languageVersion < 2 /* ES6 */) { write(".call("); @@ -32425,7 +33040,7 @@ var ts; write(".bind.apply("); emit(target); write(", [void 0].concat("); - emitListWithSpread(node.arguments, /*needsUniqueCopy*/ false, /*multiline*/ false, /*trailingComma*/ false, /*useConcat*/ false); + emitListWithSpread(node.arguments, /*needsUniqueCopy*/ false, /*multiLine*/ false, /*trailingComma*/ false, /*useConcat*/ false); write(")))"); write("()"); } @@ -32452,12 +33067,12 @@ var ts; // If the node is synthesized, it means the emitter put the parentheses there, // not the user. If we didn't want them, the emitter would not have put them // there. - if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 174 /* ArrowFunction */) { - if (node.expression.kind === 171 /* TypeAssertionExpression */ || node.expression.kind === 189 /* AsExpression */) { + if (!ts.nodeIsSynthesized(node) && node.parent.kind !== 176 /* ArrowFunction */) { + if (node.expression.kind === 173 /* TypeAssertionExpression */ || node.expression.kind === 191 /* AsExpression */) { var operand = node.expression.expression; // Make sure we consider all nested cast expressions, e.g.: // (-A).x; - while (operand.kind === 171 /* TypeAssertionExpression */ || operand.kind === 189 /* AsExpression */) { + while (operand.kind === 173 /* TypeAssertionExpression */ || operand.kind === 191 /* AsExpression */) { operand = operand.expression; } // We have an expression of the form: (SubExpr) @@ -32468,15 +33083,15 @@ var ts; // (typeof A).toString() should be emitted as (typeof A).toString() and not typeof A.toString() // new (A()) should be emitted as new (A()) and not new A() // (function foo() { })() should be emitted as an IIF (function foo(){})() and not declaration function foo(){} () - if (operand.kind !== 179 /* PrefixUnaryExpression */ && - operand.kind !== 177 /* VoidExpression */ && - operand.kind !== 176 /* TypeOfExpression */ && - operand.kind !== 175 /* DeleteExpression */ && - operand.kind !== 180 /* PostfixUnaryExpression */ && - operand.kind !== 169 /* NewExpression */ && - !(operand.kind === 168 /* CallExpression */ && node.parent.kind === 169 /* NewExpression */) && - !(operand.kind === 173 /* FunctionExpression */ && node.parent.kind === 168 /* CallExpression */) && - !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 166 /* PropertyAccessExpression */)) { + if (operand.kind !== 181 /* PrefixUnaryExpression */ && + operand.kind !== 179 /* VoidExpression */ && + operand.kind !== 178 /* TypeOfExpression */ && + operand.kind !== 177 /* DeleteExpression */ && + operand.kind !== 182 /* PostfixUnaryExpression */ && + operand.kind !== 171 /* NewExpression */ && + !(operand.kind === 170 /* CallExpression */ && node.parent.kind === 171 /* NewExpression */) && + !(operand.kind === 175 /* FunctionExpression */ && node.parent.kind === 170 /* CallExpression */) && + !(operand.kind === 8 /* NumericLiteral */ && node.parent.kind === 168 /* PropertyAccessExpression */)) { emit(operand); return; } @@ -32505,14 +33120,15 @@ var ts; if (!isCurrentFileSystemExternalModule() || node.kind !== 69 /* Identifier */ || ts.nodeIsSynthesized(node)) { return false; } - var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 211 /* VariableDeclaration */ || node.parent.kind === 163 /* BindingElement */); + var isVariableDeclarationOrBindingElement = node.parent && (node.parent.kind === 213 /* VariableDeclaration */ || node.parent.kind === 165 /* BindingElement */); var targetDeclaration = isVariableDeclarationOrBindingElement ? node.parent : resolver.getReferencedValueDeclaration(node); return isSourceFileLevelDeclarationInSystemJsModule(targetDeclaration, /*isExported*/ true); } function emitPrefixUnaryExpression(node) { - var exportChanged = isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); + var exportChanged = (node.operator === 41 /* PlusPlusToken */ || node.operator === 42 /* MinusMinusToken */) && + isNameOfExportedSourceLevelDeclarationInSystemExternalModule(node.operand); if (exportChanged) { // emit // ++x @@ -32535,7 +33151,7 @@ var ts; // the resulting expression a prefix increment operation. And in the second, it will make the resulting // expression a prefix increment whose operand is a plus expression - (++(+x)) // The same is true of minus of course. - if (node.operand.kind === 179 /* PrefixUnaryExpression */) { + if (node.operand.kind === 181 /* PrefixUnaryExpression */) { var operand = node.operand; if (node.operator === 35 /* PlusToken */ && (operand.operator === 35 /* PlusToken */ || operand.operator === 41 /* PlusPlusToken */)) { write(" "); @@ -32591,10 +33207,10 @@ var ts; } var current = node; while (current) { - if (current.kind === 248 /* SourceFile */) { + if (current.kind === 250 /* SourceFile */) { return !isExported || ((ts.getCombinedNodeFlags(node) & 2 /* Export */) !== 0); } - else if (ts.isFunctionLike(current) || current.kind === 219 /* ModuleBlock */) { + else if (ts.isFunctionLike(current) || current.kind === 221 /* ModuleBlock */) { return false; } else { @@ -32614,8 +33230,8 @@ var ts; if (ts.isElementAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(167 /* ElementAccessExpression */, /*startsOnNewLine*/ false); - var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefinedTempVariablesInPlaces*/ false, /*shouldEmitCommaBeforeAssignment*/ false); + synthesizedLHS = ts.createSynthesizedNode(169 /* ElementAccessExpression */, /*startsOnNewLine*/ false); + var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; if (leftHandSideExpression.argumentExpression.kind !== 8 /* NumericLiteral */ && leftHandSideExpression.argumentExpression.kind !== 9 /* StringLiteral */) { @@ -32631,8 +33247,8 @@ var ts; else if (ts.isPropertyAccessExpression(leftHandSideExpression)) { shouldEmitParentheses = true; write("("); - synthesizedLHS = ts.createSynthesizedNode(166 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); - var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefinedTempVariablesInPlaces*/ false, /*shouldemitCommaBeforeAssignment*/ false); + synthesizedLHS = ts.createSynthesizedNode(168 /* PropertyAccessExpression */, /*startsOnNewLine*/ false); + var identifier = emitTempVariableAssignment(leftHandSideExpression.expression, /*canDefineTempVariablesInPlace*/ false, /*shouldEmitCommaBeforeAssignment*/ false); synthesizedLHS.expression = identifier; synthesizedLHS.dotToken = leftHandSideExpression.dotToken; synthesizedLHS.name = leftHandSideExpression.name; @@ -32659,8 +33275,8 @@ var ts; } function emitBinaryExpression(node) { if (languageVersion < 2 /* ES6 */ && node.operatorToken.kind === 56 /* EqualsToken */ && - (node.left.kind === 165 /* ObjectLiteralExpression */ || node.left.kind === 164 /* ArrayLiteralExpression */)) { - emitDestructuring(node, node.parent.kind === 195 /* ExpressionStatement */); + (node.left.kind === 167 /* ObjectLiteralExpression */ || node.left.kind === 166 /* ArrayLiteralExpression */)) { + emitDestructuring(node, node.parent.kind === 197 /* ExpressionStatement */); } else { var exportChanged = node.operatorToken.kind >= 56 /* FirstAssignment */ && @@ -32725,7 +33341,7 @@ var ts; } } function isSingleLineEmptyBlock(node) { - if (node && node.kind === 192 /* Block */) { + if (node && node.kind === 194 /* Block */) { var block = node; return block.statements.length === 0 && nodeEndIsOnSameLineAsNodeStart(block, block); } @@ -32739,22 +33355,20 @@ var ts; } emitToken(15 /* OpenBraceToken */, node.pos); increaseIndent(); - scopeEmitStart(node.parent); - if (node.kind === 219 /* ModuleBlock */) { - ts.Debug.assert(node.parent.kind === 218 /* ModuleDeclaration */); + if (node.kind === 221 /* ModuleBlock */) { + ts.Debug.assert(node.parent.kind === 220 /* ModuleDeclaration */); emitCaptureThisForNodeIfNecessary(node.parent); } emitLines(node.statements); - if (node.kind === 219 /* ModuleBlock */) { + if (node.kind === 221 /* ModuleBlock */) { emitTempDeclarations(/*newLine*/ true); } decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.statements.end); - scopeEmitEnd(); } function emitEmbeddedStatement(node) { - if (node.kind === 192 /* Block */) { + if (node.kind === 194 /* Block */) { write(" "); emit(node); } @@ -32766,7 +33380,7 @@ var ts; } } function emitExpressionStatement(node) { - emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 174 /* ArrowFunction */); + emitParenthesizedIf(node.expression, /*parenthesized*/ node.expression.kind === 176 /* ArrowFunction */); write(";"); } function emitIfStatement(node) { @@ -32779,7 +33393,7 @@ var ts; if (node.elseStatement) { writeLine(); emitToken(80 /* ElseKeyword */, node.thenStatement.end); - if (node.elseStatement.kind === 196 /* IfStatement */) { + if (node.elseStatement.kind === 198 /* IfStatement */) { write(" "); emit(node.elseStatement); } @@ -32794,12 +33408,12 @@ var ts; function emitDoStatementWorker(node, loop) { write("do"); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } - if (node.statement.kind === 192 /* Block */) { + if (node.statement.kind === 194 /* Block */) { write(" "); } else { @@ -32817,10 +33431,10 @@ var ts; emit(node.expression); write(")"); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } } /** @@ -32834,7 +33448,7 @@ var ts; return false; } if (convertedLoopState && (ts.getCombinedNodeFlags(decl) & 24576 /* BlockScoped */) === 0) { - // we are inside a converted loop - this can only happen in downlevel scenarios + // we are inside a converted loop - this can only happen in downlevel scenarios // record names for all variable declarations for (var _a = 0, _b = decl.declarations; _a < _b.length; _a++) { var varDecl = _b[_a]; @@ -32898,7 +33512,7 @@ var ts; } else { var loop = convertLoopBody(node); - if (node.parent.kind === 207 /* LabeledStatement */) { + if (node.parent.kind === 209 /* LabeledStatement */) { // if parent of the loop was labeled statement - attach the label to loop skipping converted loop body emitLabelAndColon(node.parent); } @@ -32909,10 +33523,10 @@ var ts; var functionName = makeUniqueName("_loop"); var loopInitializer; switch (node.kind) { - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + if (node.initializer.kind === 214 /* VariableDeclarationList */) { loopInitializer = node.initializer; } break; @@ -32926,7 +33540,7 @@ var ts; collectNames(varDeclaration.name); } } - var bodyIsBlock = node.statement.kind === 192 /* Block */; + var bodyIsBlock = node.statement.kind === 194 /* Block */; var paramList = loopParameters ? loopParameters.join(", ") : ""; writeLine(); write("var " + functionName + " = function(" + paramList + ")"); @@ -32945,6 +33559,11 @@ var ts; // use the same name in all nested loops convertedLoopState.argumentsName = convertedOuterLoopState.argumentsName; } + if (convertedOuterLoopState.thisName) { + // outer loop has already used 'this' so we've already have some name to alias it + // use the same name in all nested loops + convertedLoopState.thisName = convertedOuterLoopState.thisName; + } if (convertedOuterLoopState.hoistedLocalVariables) { // we've already collected some non-block scoped variable declarations in enclosing loop // use the same storage in nested loop @@ -32971,6 +33590,21 @@ var ts; writeLine(); } } + if (convertedLoopState.thisName) { + // if alias for this is set + if (convertedOuterLoopState) { + // pass it to outer converted loop + convertedOuterLoopState.thisName = convertedLoopState.thisName; + } + else { + // this is top level converted loop so we need to create an alias for 'this' here + // 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;"); + writeLine(); + } + } if (convertedLoopState.hoistedLocalVariables) { // if hoistedLocalVariables !== undefined this means that we've possibly collected some variable declarations to be hoisted later if (convertedOuterLoopState) { @@ -33027,7 +33661,7 @@ var ts; if (emitAsEmbeddedStatement) { emitEmbeddedStatement(node.statement); } - else if (node.statement.kind === 192 /* Block */) { + else if (node.statement.kind === 194 /* Block */) { emitLines(node.statement.statements); } else { @@ -33097,8 +33731,8 @@ var ts; } write("switch(" + loopResultVariable + ") {"); increaseIndent(); - emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalBreaks, /* isBreak */ true, loopResultVariable, outerLoop); - emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalContinues, /* isBreak */ false, loopResultVariable, outerLoop); + emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalBreaks, /*isBreak*/ true, loopResultVariable, outerLoop); + emitDispatchEntriesForLabeledJumps(currentLoop.labeledNonLocalContinues, /*isBreak*/ false, loopResultVariable, outerLoop); decreaseIndent(); writeLine(); write("}"); @@ -33113,7 +33747,7 @@ var ts; write("case \"" + labelMarker + "\": "); // if there are no outer converted loop or outer label in question is located inside outer converted loop // then emit labeled break\continue - // otherwise propagate pair 'label -> marker' to outer converted loop and emit 'return labelMarker' so outer loop can later decide what to do + // otherwise propagate pair 'label -> marker' to outer converted loop and emit 'return labelMarker' so outer loop can later decide what to do if (!outerLoop || (outerLoop.labels && outerLoop.labels[labelText])) { if (isBreak) { write("break "); @@ -33137,7 +33771,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer && node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer && node.initializer.kind === 214 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; var startIsEmitted = tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); if (startIsEmitted) { @@ -33156,14 +33790,14 @@ var ts; emitOptional(" ", node.incrementor); write(")"); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } } function emitForInOrForOfStatement(node) { - if (languageVersion < 2 /* ES6 */ && node.kind === 201 /* ForOfStatement */) { + if (languageVersion < 2 /* ES6 */ && node.kind === 203 /* ForOfStatement */) { emitLoop(node, emitDownLevelForOfStatementWorker); } else { @@ -33174,7 +33808,7 @@ var ts; var endPos = emitToken(86 /* ForKeyword */, node.pos); write(" "); endPos = emitToken(17 /* OpenParenToken */, endPos); - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length >= 1) { tryEmitStartOfVariableDeclarationList(variableDeclarationList, endPos); @@ -33184,7 +33818,7 @@ var ts; else { emit(node.initializer); } - if (node.kind === 200 /* ForInStatement */) { + if (node.kind === 202 /* ForInStatement */) { write(" in "); } else { @@ -33193,15 +33827,12 @@ var ts; emit(node.expression); emitToken(18 /* CloseParenToken */, node.expression.end); if (loop) { - emitConvertedLoopCall(loop, /* emitAsBlock */ true); + emitConvertedLoopCall(loop, /*emitAsBlock*/ true); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ true); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ true); } } - function emitDownLevelForOfStatement(node) { - emitLoop(node, emitDownLevelForOfStatementWorker); - } function emitDownLevelForOfStatementWorker(node, loop) { // The following ES6 code: // @@ -33277,7 +33908,7 @@ var ts; // let v = _a[_i]; var rhsIterationValue = createElementAccessExpression(rhsReference, counter); emitStart(node.initializer); - if (node.initializer.kind === 212 /* VariableDeclarationList */) { + if (node.initializer.kind === 214 /* VariableDeclarationList */) { write("var "); var variableDeclarationList = node.initializer; if (variableDeclarationList.declarations.length > 0) { @@ -33307,7 +33938,7 @@ var ts; // Initializer is an expression. Emit the expression in the body, so that it's // evaluated on every iteration. var assignmentExpression = createBinaryExpression(node.initializer, 56 /* EqualsToken */, rhsIterationValue, /*startsOnNewLine*/ false); - if (node.initializer.kind === 164 /* ArrayLiteralExpression */ || node.initializer.kind === 165 /* ObjectLiteralExpression */) { + if (node.initializer.kind === 166 /* ArrayLiteralExpression */ || node.initializer.kind === 167 /* ObjectLiteralExpression */) { // This is a destructuring pattern, so call emitDestructuring instead of emit. Calling emit will not work, because it will cause // the BinaryExpression to be passed in instead of the expression statement, which will cause emitDestructuring to crash. emitDestructuring(assignmentExpression, /*isAssignmentExpressionStatement*/ true, /*value*/ undefined); @@ -33320,10 +33951,10 @@ var ts; write(";"); if (loop) { writeLine(); - emitConvertedLoopCall(loop, /* emitAsBlock */ false); + emitConvertedLoopCall(loop, /*emitAsBlock*/ false); } else { - emitNormalLoopBody(node, /* emitAsEmbeddedStatement */ false); + emitNormalLoopBody(node, /*emitAsEmbeddedStatement*/ false); } writeLine(); decreaseIndent(); @@ -33335,12 +33966,12 @@ var ts; // it is possible if either // - break\continue is statement labeled and label is located inside the converted loop // - break\continue is non-labeled and located in non-converted loop\switch statement - var jump = node.kind === 203 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; + var jump = node.kind === 205 /* BreakStatement */ ? 2 /* Break */ : 4 /* Continue */; var canUseBreakOrContinue = (node.label && convertedLoopState.labels && convertedLoopState.labels[node.label.text]) || (!node.label && (convertedLoopState.allowedNonLabeledJumps & jump)); if (!canUseBreakOrContinue) { if (!node.label) { - if (node.kind === 203 /* BreakStatement */) { + if (node.kind === 205 /* BreakStatement */) { convertedLoopState.nonLocalJumps |= 2 /* Break */; write("return \"break\";"); } @@ -33351,20 +33982,20 @@ var ts; } else { var labelMarker; - if (node.kind === 203 /* BreakStatement */) { + if (node.kind === 205 /* BreakStatement */) { labelMarker = "break-" + node.label.text; - setLabeledJump(convertedLoopState, /* isBreak */ true, node.label.text, labelMarker); + setLabeledJump(convertedLoopState, /*isBreak*/ true, node.label.text, labelMarker); } else { labelMarker = "continue-" + node.label.text; - setLabeledJump(convertedLoopState, /* isBreak */ false, node.label.text, labelMarker); + setLabeledJump(convertedLoopState, /*isBreak*/ false, node.label.text, labelMarker); } write("return \"" + labelMarker + "\";"); } return; } } - emitToken(node.kind === 203 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); + emitToken(node.kind === 205 /* BreakStatement */ ? 70 /* BreakKeyword */ : 75 /* ContinueKeyword */, node.pos); emitOptional(" ", node.label); write(";"); } @@ -33430,7 +34061,7 @@ var ts; ts.getLineOfLocalPositionFromLineMap(currentLineMap, ts.skipTrivia(currentText, node2.pos)); } function emitCaseOrDefaultClause(node) { - if (node.kind === 241 /* CaseClause */) { + if (node.kind === 243 /* CaseClause */) { write("case "); emit(node.expression); write(":"); @@ -33499,7 +34130,7 @@ var ts; function getContainingModule(node) { do { node = node.parent; - } while (node && node.kind !== 218 /* ModuleDeclaration */); + } while (node && node.kind !== 220 /* ModuleDeclaration */); return node; } function emitContainingModuleName(node) { @@ -33524,22 +34155,22 @@ var ts; function createVoidZero() { var zero = ts.createSynthesizedNode(8 /* NumericLiteral */); zero.text = "0"; - var result = ts.createSynthesizedNode(177 /* VoidExpression */); + var result = ts.createSynthesizedNode(179 /* VoidExpression */); result.expression = zero; return result; } function emitEs6ExportDefaultCompat(node) { - if (node.parent.kind === 248 /* SourceFile */) { - ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 227 /* ExportAssignment */); + if (node.parent.kind === 250 /* SourceFile */) { + ts.Debug.assert(!!(node.flags & 512 /* Default */) || node.kind === 229 /* ExportAssignment */); // only allow export default at a source file level if (modulekind === 1 /* CommonJS */ || modulekind === 2 /* AMD */ || modulekind === 3 /* UMD */) { if (!isEs6Module) { - if (languageVersion === 1 /* ES5 */) { + if (languageVersion !== 0 /* ES3 */) { // default value of configurable, enumerable, writable are `false`. write("Object.defineProperty(exports, \"__esModule\", { value: true });"); writeLine(); } - else if (languageVersion === 0 /* ES3 */) { + else { write("exports.__esModule = true;"); writeLine(); } @@ -33636,7 +34267,7 @@ var ts; emitNodeWithCommentsAndWithoutSourcemap(name); write("\", "); } - var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 211 /* VariableDeclaration */ || name.parent.kind === 163 /* BindingElement */); + var isVariableDeclarationOrBindingElement = name.parent && (name.parent.kind === 213 /* VariableDeclaration */ || name.parent.kind === 165 /* BindingElement */); if (isVariableDeclarationOrBindingElement) { emitModuleMemberName(name.parent); } @@ -33670,7 +34301,7 @@ var ts; // Also temporary variables should be explicitly allocated for source level declarations when module target is system // because actual variable declarations are hoisted var canDefineTempVariablesInPlace = false; - if (root.kind === 211 /* VariableDeclaration */) { + if (root.kind === 213 /* VariableDeclaration */) { var isExported = ts.getCombinedNodeFlags(root) & 2 /* Export */; var isSourceLevelForSystemModuleKind = shouldHoistDeclarationInSystemJsModule(root); canDefineTempVariablesInPlace = !isExported && !isSourceLevelForSystemModuleKind; @@ -33678,7 +34309,7 @@ var ts; else if (root.kind === 138 /* Parameter */) { canDefineTempVariablesInPlace = true; } - if (root.kind === 181 /* BinaryExpression */) { + if (root.kind === 183 /* BinaryExpression */) { emitAssignmentExpression(root); } else { @@ -33707,14 +34338,14 @@ var ts; // we need to generate a temporary variable value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); // Return the expression 'value === void 0 ? defaultValue : value' - var equals = ts.createSynthesizedNode(181 /* BinaryExpression */); + var equals = ts.createSynthesizedNode(183 /* BinaryExpression */); equals.left = value; equals.operatorToken = ts.createSynthesizedNode(32 /* EqualsEqualsEqualsToken */); equals.right = createVoidZero(); return createConditionalExpression(equals, defaultValue, value); } function createConditionalExpression(condition, whenTrue, whenFalse) { - var cond = ts.createSynthesizedNode(182 /* ConditionalExpression */); + var cond = ts.createSynthesizedNode(184 /* ConditionalExpression */); cond.condition = condition; cond.questionToken = ts.createSynthesizedNode(53 /* QuestionToken */); cond.whenTrue = whenTrue; @@ -33731,7 +34362,7 @@ var ts; var index; var nameIsComputed = propName.kind === 136 /* ComputedPropertyName */; if (nameIsComputed) { - index = ensureIdentifier(propName.expression, /* reuseIdentifierExpression */ false); + index = ensureIdentifier(propName.expression, /*reuseIdentifierExpressions*/ false); } else { // We create a synthetic copy of the identifier in order to avoid the rewriting that might @@ -33744,7 +34375,7 @@ var ts; : createElementAccessExpression(object, index); } function createSliceCall(value, sliceIndex) { - var call = ts.createSynthesizedNode(168 /* CallExpression */); + var call = ts.createSynthesizedNode(170 /* CallExpression */); var sliceIdentifier = ts.createSynthesizedNode(69 /* Identifier */); sliceIdentifier.text = "slice"; call.expression = createPropertyAccessExpression(value, sliceIdentifier); @@ -33761,9 +34392,9 @@ var ts; } for (var _a = 0, properties_5 = properties; _a < properties_5.length; _a++) { var p = properties_5[_a]; - if (p.kind === 245 /* PropertyAssignment */ || p.kind === 246 /* ShorthandPropertyAssignment */) { + if (p.kind === 247 /* PropertyAssignment */ || p.kind === 248 /* ShorthandPropertyAssignment */) { var propName = p.name; - var target_1 = p.kind === 246 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; + var target_1 = p.kind === 248 /* ShorthandPropertyAssignment */ ? p : p.initializer || propName; emitDestructuringAssignment(target_1, createPropertyAccessForDestructuringProperty(value, propName)); } } @@ -33777,8 +34408,8 @@ var ts; } for (var i = 0; i < elements.length; i++) { var e = elements[i]; - if (e.kind !== 187 /* OmittedExpression */) { - if (e.kind !== 185 /* SpreadElementExpression */) { + if (e.kind !== 189 /* OmittedExpression */) { + if (e.kind !== 187 /* SpreadElementExpression */) { emitDestructuringAssignment(e, createElementAccessExpression(value, createNumericLiteral(i))); } else if (i === elements.length - 1) { @@ -33788,20 +34419,20 @@ var ts; } } function emitDestructuringAssignment(target, value) { - if (target.kind === 246 /* ShorthandPropertyAssignment */) { + if (target.kind === 248 /* ShorthandPropertyAssignment */) { if (target.objectAssignmentInitializer) { value = createDefaultValueCheck(value, target.objectAssignmentInitializer); } target = target.name; } - else if (target.kind === 181 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { + else if (target.kind === 183 /* BinaryExpression */ && target.operatorToken.kind === 56 /* EqualsToken */) { value = createDefaultValueCheck(value, target.right); target = target.left; } - if (target.kind === 165 /* ObjectLiteralExpression */) { + if (target.kind === 167 /* ObjectLiteralExpression */) { emitObjectLiteralAssignment(target, value); } - else if (target.kind === 164 /* ArrayLiteralExpression */) { + else if (target.kind === 166 /* ArrayLiteralExpression */) { emitArrayLiteralAssignment(target, value); } else { @@ -33819,14 +34450,14 @@ var ts; emitDestructuringAssignment(target, value); } else { - if (root.parent.kind !== 172 /* ParenthesizedExpression */) { + if (root.parent.kind !== 174 /* ParenthesizedExpression */) { write("("); } value = ensureIdentifier(value, /*reuseIdentifierExpressions*/ true); emitDestructuringAssignment(target, value); write(", "); emit(value); - if (root.parent.kind !== 172 /* ParenthesizedExpression */) { + if (root.parent.kind !== 174 /* ParenthesizedExpression */) { write(")"); } } @@ -33853,12 +34484,12 @@ var ts; } for (var i = 0; i < numElements; i++) { var element = elements[i]; - if (pattern.kind === 161 /* ObjectBindingPattern */) { + if (pattern.kind === 163 /* ObjectBindingPattern */) { // Rewrite element to a declaration with an initializer that fetches property var propName = element.propertyName || element.name; emitBindingElement(element, createPropertyAccessForDestructuringProperty(value, propName)); } - else if (element.kind !== 187 /* OmittedExpression */) { + else if (element.kind !== 189 /* OmittedExpression */) { if (!element.dotDotDotToken) { // Rewrite element to a declaration that accesses array element at index i emitBindingElement(element, createElementAccessExpression(value, createNumericLiteral(i))); @@ -33898,8 +34529,8 @@ var ts; (getCombinedFlagsForIdentifier(node.name) & 8192 /* Let */); // NOTE: default initialization should not be added to let bindings in for-in\for-of statements if (isLetDefinedInLoop && - node.parent.parent.kind !== 200 /* ForInStatement */ && - node.parent.parent.kind !== 201 /* ForOfStatement */) { + node.parent.parent.kind !== 202 /* ForInStatement */ && + node.parent.parent.kind !== 203 /* ForOfStatement */) { initializer = createVoidZero(); } } @@ -33917,7 +34548,7 @@ var ts; } } function emitExportVariableAssignments(node) { - if (node.kind === 187 /* OmittedExpression */) { + if (node.kind === 189 /* OmittedExpression */) { return; } var name = node.name; @@ -33929,7 +34560,7 @@ var ts; } } function getCombinedFlagsForIdentifier(node) { - if (!node.parent || (node.parent.kind !== 211 /* VariableDeclaration */ && node.parent.kind !== 163 /* BindingElement */)) { + if (!node.parent || (node.parent.kind !== 213 /* VariableDeclaration */ && node.parent.kind !== 165 /* BindingElement */)) { return 0; } return ts.getCombinedNodeFlags(node.parent); @@ -33937,7 +34568,7 @@ var ts; function isES6ExportedDeclaration(node) { return !!(node.flags & 2 /* Export */) && modulekind === 5 /* ES6 */ && - node.parent.kind === 248 /* SourceFile */; + node.parent.kind === 250 /* SourceFile */; } function emitVariableStatement(node) { var startIsEmitted = false; @@ -33988,12 +34619,12 @@ var ts; function emitParameter(node) { if (languageVersion < 2 /* ES6 */) { if (ts.isBindingPattern(node.name)) { - var name_25 = createTempVariable(0 /* Auto */); + var name_23 = createTempVariable(0 /* Auto */); if (!tempParameters) { tempParameters = []; } - tempParameters.push(name_25); - emit(name_25); + tempParameters.push(name_23); + emit(name_23); } else { emit(node.name); @@ -34103,7 +34734,7 @@ var ts; emitSignatureAndBody(node); } function shouldEmitAsArrowFunction(node) { - return node.kind === 174 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; + return node.kind === 176 /* ArrowFunction */ && languageVersion >= 2 /* ES6 */; } function emitDeclarationName(node) { if (node.name) { @@ -34114,13 +34745,13 @@ var ts; } } function shouldEmitFunctionName(node) { - if (node.kind === 173 /* FunctionExpression */) { + if (node.kind === 175 /* FunctionExpression */) { // Emit name if one is present return !!node.name; } - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { // Emit name if one is present, or emit generated name in down-level case (for export default case) - return !!node.name || languageVersion < 2 /* ES6 */; + return !!node.name || modulekind !== 5 /* ES6 */; } } function emitFunctionDeclaration(node) { @@ -34129,20 +34760,29 @@ var ts; } // TODO (yuisu) : we should not have special cases to condition emitting comments // but have one place to fix check for these conditions. - if (node.kind !== 143 /* MethodDeclaration */ && node.kind !== 142 /* MethodSignature */ && - node.parent && node.parent.kind !== 245 /* PropertyAssignment */ && - node.parent.kind !== 168 /* CallExpression */) { - // 1. Methods will emit the comments as part of emitting method declaration + var kind = node.kind, parent = node.parent; + if (kind !== 143 /* MethodDeclaration */ && + kind !== 142 /* MethodSignature */ && + parent && + parent.kind !== 247 /* PropertyAssignment */ && + parent.kind !== 170 /* CallExpression */ && + parent.kind !== 166 /* ArrayLiteralExpression */) { + // 1. Methods will emit comments at their assignment declaration sites. + // // 2. If the function is a property of object literal, emitting leading-comments - // is done by emitNodeWithoutSourceMap which then call this function. - // In particular, we would like to avoid emit comments twice in following case: - // For example: + // is done by emitNodeWithoutSourceMap which then call this function. + // In particular, we would like to avoid emit comments twice in following case: + // // var obj = { // id: // /*comment*/ () => void // } + // // 3. If the function is an argument in call expression, emitting of comments will be - // taken care of in emit list of arguments inside of emitCallexpression + // taken care of in emit list of arguments inside of 'emitCallExpression'. + // + // 4. If the function is in an array literal, 'emitLinePreservingList' will take care + // of leading comments. emitLeadingComments(node); } emitStart(node); @@ -34165,11 +34805,11 @@ var ts; emitDeclarationName(node); } emitSignatureAndBody(node); - if (modulekind !== 5 /* ES6 */ && node.kind === 213 /* FunctionDeclaration */ && node.parent === currentSourceFile && node.name) { + if (modulekind !== 5 /* ES6 */ && kind === 215 /* FunctionDeclaration */ && parent === currentSourceFile && node.name) { emitExportMemberAssignments(node.name); } emitEnd(node); - if (node.kind !== 143 /* MethodDeclaration */ && node.kind !== 142 /* MethodSignature */) { + if (kind !== 143 /* MethodDeclaration */ && kind !== 142 /* MethodSignature */) { emitTrailingComments(node); } } @@ -34202,7 +34842,7 @@ var ts; } function emitAsyncFunctionBodyForES6(node) { var promiseConstructor = ts.getEntityNameFromTypeNode(node.type); - var isArrowFunction = node.kind === 174 /* ArrowFunction */; + var isArrowFunction = node.kind === 176 /* ArrowFunction */; var hasLexicalArguments = (resolver.getNodeCheckFlags(node) & 4096 /* CaptureArguments */) !== 0; // An async function is emit as an outer function that calls an inner // generator function. To preserve lexical bindings, we pass the current @@ -34285,17 +34925,16 @@ var ts; } write(" __awaiter(this"); if (hasLexicalArguments) { - write(", arguments"); + write(", arguments, "); } else { - write(", void 0"); + write(", void 0, "); } if (promiseConstructor) { - write(", "); - emitNodeWithoutSourceMap(promiseConstructor); + emitEntityNameAsExpression(promiseConstructor, /*useFallback*/ false); } else { - write(", Promise"); + write("Promise"); } // Emit the call to __awaiter. if (hasLexicalArguments) { @@ -34322,7 +34961,7 @@ var ts; write(" { }"); } else { - if (node.body.kind === 192 /* Block */) { + if (node.body.kind === 194 /* Block */) { emitBlockFunctionBody(node, node.body); } else { @@ -34348,7 +34987,7 @@ var ts; emitSignatureParameters(node); } var isAsync = ts.isAsyncFunctionLike(node); - if (isAsync && languageVersion === 2 /* ES6 */) { + if (isAsync) { emitAsyncFunctionBodyForES6(node); } else { @@ -34381,14 +35020,13 @@ var ts; write(" "); // Unwrap all type assertions. var current = body; - while (current.kind === 171 /* TypeAssertionExpression */) { + while (current.kind === 173 /* TypeAssertionExpression */) { current = current.expression; } - emitParenthesizedIf(body, current.kind === 165 /* ObjectLiteralExpression */); + emitParenthesizedIf(body, current.kind === 167 /* ObjectLiteralExpression */); } function emitDownLevelExpressionFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); increaseIndent(); var outPos = writer.getTextPos(); emitDetachedCommentsAndUpdateCommentsInfo(node.body); @@ -34411,8 +35049,10 @@ var ts; increaseIndent(); writeLine(); emitLeadingComments(node.body); + emitStart(body); write("return "); emit(body); + emitEnd(body); write(";"); emitTrailingComments(node.body); emitTempDeclarations(/*newLine*/ true); @@ -34422,11 +35062,9 @@ var ts; emitStart(node.body); write("}"); emitEnd(node.body); - scopeEmitEnd(); } function emitBlockFunctionBody(node, body) { write(" {"); - scopeEmitStart(node); var initialTextPos = writer.getTextPos(); increaseIndent(); emitDetachedCommentsAndUpdateCommentsInfo(body.statements); @@ -34455,14 +35093,13 @@ var ts; decreaseIndent(); } emitToken(16 /* CloseBraceToken */, body.statements.end); - scopeEmitEnd(); } function findInitialSuperCall(ctor) { if (ctor.body) { var statement = ctor.body.statements[0]; - if (statement && statement.kind === 195 /* ExpressionStatement */) { + if (statement && statement.kind === 197 /* ExpressionStatement */) { var expr = statement.expression; - if (expr && expr.kind === 168 /* CallExpression */) { + if (expr && expr.kind === 170 /* CallExpression */) { var func = expr.expression; if (func && func.kind === 95 /* SuperKeyword */) { return statement; @@ -34548,7 +35185,7 @@ var ts; } function emitMemberFunctionsForES5AndLower(node) { ts.forEach(node.members, function (member) { - if (member.kind === 191 /* SemicolonClassElement */) { + if (member.kind === 193 /* SemicolonClassElement */) { writeLine(); write(";"); } @@ -34645,7 +35282,7 @@ var ts; emitEnd(member); emitTrailingComments(member); } - else if (member.kind === 191 /* SemicolonClassElement */) { + else if (member.kind === 193 /* SemicolonClassElement */) { writeLine(); write(";"); } @@ -34719,7 +35356,6 @@ var ts; } var startIndex = 0; write(" {"); - scopeEmitStart(node, "constructor"); increaseIndent(); if (ctor) { // Emit all the directive prologues (like "use strict"). These have to come before @@ -34754,7 +35390,7 @@ var ts; emitEnd(baseTypeElement); } } - emitPropertyDeclarations(node, getInitializedProperties(node, /*static:*/ false)); + emitPropertyDeclarations(node, getInitializedProperties(node, /*isStatic*/ false)); if (ctor) { var statements = ctor.body.statements; if (superCall) { @@ -34769,7 +35405,6 @@ var ts; } decreaseIndent(); emitToken(16 /* CloseBraceToken */, ctor ? ctor.body.statements.end : node.members.end); - scopeEmitEnd(); emitEnd(ctor || node); if (ctor) { emitTrailingComments(ctor); @@ -34794,7 +35429,7 @@ var ts; } function emitClassLikeDeclarationForES6AndHigher(node) { var thisNodeIsDecorated = ts.nodeIsDecorated(node); - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { if (thisNodeIsDecorated) { // To preserve the correct runtime semantics when decorators are applied to the class, // the emit needs to follow one of the following rules: @@ -34870,8 +35505,8 @@ var ts; // // This keeps the expression as an expression, while ensuring that the static parts // of it have been initialized by the time it is used. - var staticProperties = getInitializedProperties(node, /*static:*/ true); - var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 186 /* ClassExpression */; + var staticProperties = getInitializedProperties(node, /*isStatic*/ true); + var isClassExpressionWithStaticProperties = staticProperties.length > 0 && node.kind === 188 /* ClassExpression */; var tempVariable; if (isClassExpressionWithStaticProperties) { tempVariable = createAndRecordTempVariable(0 /* Auto */); @@ -34884,7 +35519,7 @@ var ts; // emit name if // - node has a name // - this is default export with static initializers - if ((node.name || (node.flags & 512 /* Default */ && staticProperties.length > 0)) && !thisNodeIsDecorated) { + if ((node.name || (node.flags & 512 /* Default */ && (staticProperties.length > 0 || modulekind !== 5 /* ES6 */))) && !thisNodeIsDecorated) { write(" "); emitDeclarationName(node); } @@ -34895,14 +35530,12 @@ var ts; } write(" {"); increaseIndent(); - scopeEmitStart(node); writeLine(); emitConstructor(node, baseTypeNode); emitMemberFunctionsForES6AndHigher(node); decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - scopeEmitEnd(); // TODO(rbuckton): Need to go back to `let _a = class C {}` approach, removing the defineProperty call for now. // For a decorated class, we need to assign its name (if it has one). This is because we emit // the class as a class expression to avoid the double-binding of the identifier: @@ -34924,7 +35557,7 @@ var ts; var property = staticProperties_1[_a]; write(","); writeLine(); - emitPropertyDeclaration(node, property, /*receiver:*/ tempVariable, /*isExpression:*/ true); + emitPropertyDeclaration(node, property, /*receiver*/ tempVariable, /*isExpression*/ true); } write(","); writeLine(); @@ -34937,27 +35570,37 @@ var ts; emitPropertyDeclarations(node, staticProperties); emitDecoratorsOfClass(node); } - // If this is an exported class, but not on the top level (i.e. on an internal - // module), export it - if (!isES6ExportedDeclaration(node) && (node.flags & 2 /* Export */)) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emitDeclarationName(node); - emitEnd(node); - write(";"); + if (!(node.flags & 2 /* Export */)) { + return; } - else if (isES6ExportedDeclaration(node) && (node.flags & 512 /* Default */) && thisNodeIsDecorated) { - // if this is a top level default export of decorated class, write the export after the declaration. - writeLine(); - write("export default "); - emitDeclarationName(node); - write(";"); + if (modulekind !== 5 /* ES6 */) { + emitExportMemberAssignment(node); + } + else { + // If this is an exported class, but not on the top level (i.e. on an internal + // module), export it + if (node.flags & 512 /* 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 !== 250 /* SourceFile */) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } } } function emitClassLikeDeclarationBelowES6(node) { - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { // source file level classes in system modules are hoisted so 'var's for them are already defined if (!shouldHoistDeclarationInSystemJsModule(node)) { write("var "); @@ -34982,7 +35625,6 @@ var ts; tempParameters = undefined; computedPropertyNamesToGeneratedNames = undefined; increaseIndent(); - scopeEmitStart(node); if (baseTypeNode) { writeLine(); emitStart(baseTypeNode); @@ -34994,7 +35636,7 @@ var ts; writeLine(); emitConstructor(node, baseTypeNode); emitMemberFunctionsForES5AndLower(node); - emitPropertyDeclarations(node, getInitializedProperties(node, /*static:*/ true)); + emitPropertyDeclarations(node, getInitializedProperties(node, /*isStatic*/ true)); writeLine(); emitDecoratorsOfClass(node); writeLine(); @@ -35013,18 +35655,17 @@ var ts; decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - scopeEmitEnd(); emitStart(node); - write(")("); + write("("); if (baseTypeNode) { emit(baseTypeNode.expression); } - write(")"); - if (node.kind === 214 /* ClassDeclaration */) { + write("))"); + if (node.kind === 216 /* ClassDeclaration */) { write(";"); } emitEnd(node); - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { emitExportMemberAssignment(node); } } @@ -35042,9 +35683,9 @@ var ts; function emitDecoratorsOfConstructor(node) { var decorators = node.decorators; var constructor = ts.getFirstConstructorWithBody(node); - var hasDecoratedParameters = constructor && ts.forEach(constructor.parameters, ts.nodeIsDecorated); + var firstParameterDecorator = constructor && ts.forEach(constructor.parameters, function (parameter) { return parameter.decorators; }); // skip decoration of the constructor if neither it nor its parameters are decorated - if (!decorators && !hasDecoratedParameters) { + if (!decorators && !firstParameterDecorator) { return; } // Emit the call to __decorate. Given the class: @@ -35058,25 +35699,24 @@ var ts; // C = __decorate([dec], C); // writeLine(); - emitStart(node); + emitStart(node.decorators || firstParameterDecorator); emitDeclarationName(node); write(" = __decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(constructor, /*leadingComma*/ argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(constructor, /*leadingComma*/ argumentsWritten > 0); + } emitSerializedTypeMetadata(node, /*leadingComma*/ argumentsWritten >= 0); decreaseIndent(); writeLine(); write("], "); emitDeclarationName(node); - write(");"); - emitEnd(node); + write(")"); + emitEnd(node.decorators || firstParameterDecorator); + write(";"); writeLine(); } function emitDecoratorsOfMembers(node, staticFlag) { @@ -35090,10 +35730,6 @@ var ts; if (!ts.nodeCanBeDecorated(member)) { continue; } - // skip a member if it or any of its parameters are not decorated - if (!ts.nodeOrChildIsDecorated(member)) { - continue; - } // skip an accessor declaration if it is not the first accessor var decorators = void 0; var functionLikeMember = void 0; @@ -35117,6 +35753,11 @@ var ts; functionLikeMember = member; } } + var firstParameterDecorator = functionLikeMember && ts.forEach(functionLikeMember.parameters, function (parameter) { return parameter.decorators; }); + // skip a member if it or any of its parameters are not decorated + if (!decorators && !firstParameterDecorator) { + continue; + } // Emit the call to __decorate. Given the following: // // class C { @@ -35148,26 +35789,22 @@ var ts; // ], C.prototype, "prop"); // writeLine(); - emitStart(member); + emitStart(decorators || firstParameterDecorator); write("__decorate(["); increaseIndent(); writeLine(); var decoratorCount = decorators ? decorators.length : 0; - var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { - emitStart(decorator); - emit(decorator.expression); - emitEnd(decorator); - }); - argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + var argumentsWritten = emitList(decorators, 0, decoratorCount, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ false, /*noTrailingNewLine*/ true, function (decorator) { return emit(decorator.expression); }); + if (firstParameterDecorator) { + argumentsWritten += emitDecoratorsOfParameters(functionLikeMember, argumentsWritten > 0); + } emitSerializedTypeMetadata(member, argumentsWritten > 0); decreaseIndent(); writeLine(); write("], "); - emitStart(member.name); emitClassMemberPrefix(node, member); write(", "); emitExpressionForPropertyName(member.name); - emitEnd(member.name); if (languageVersion > 0 /* ES3 */) { if (member.kind !== 141 /* PropertyDeclaration */) { // We emit `null` here to indicate to `__decorate` that it can invoke `Object.getOwnPropertyDescriptor` directly. @@ -35180,8 +35817,9 @@ var ts; write(", void 0"); } } - write(");"); - emitEnd(member); + write(")"); + emitEnd(decorators || firstParameterDecorator); + write(";"); writeLine(); } } @@ -35194,15 +35832,13 @@ var ts; if (ts.nodeIsDecorated(parameter)) { var decorators = parameter.decorators; argumentsWritten += emitList(decorators, 0, decorators.length, /*multiLine*/ true, /*trailingComma*/ false, /*leadingComma*/ leadingComma, /*noTrailingNewLine*/ true, function (decorator) { - emitStart(decorator); write("__param(" + parameterIndex + ", "); emit(decorator.expression); write(")"); - emitEnd(decorator); }); leadingComma = true; } - ++parameterIndex; + parameterIndex++; } } return argumentsWritten; @@ -35235,7 +35871,7 @@ var ts; // The caller should have already tested whether the node has decorators and whether the emitDecoratorMetadata // compiler option is set. switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: case 143 /* MethodDeclaration */: case 146 /* SetAccessor */: return true; @@ -35255,7 +35891,7 @@ var ts; // // For rules on serializing type annotations, see `serializeTypeNode`. switch (node.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: write("Function"); return; case 141 /* PropertyDeclaration */: @@ -35299,7 +35935,7 @@ var ts; write("Boolean"); return; case 130 /* StringKeyword */: - case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: write("String"); return; case 128 /* NumberKeyword */: @@ -35316,6 +35952,7 @@ var ts; case 158 /* UnionType */: case 159 /* IntersectionType */: case 117 /* AnyKeyword */: + case 161 /* ThisType */: break; default: ts.Debug.fail("Cannot serialize unexpected type node."); @@ -35331,8 +35968,7 @@ var ts; location = location.parent; } // Clone the type name and parent it to a location outside of the current declaration. - var typeName = ts.cloneEntityName(node.typeName); - typeName.parent = location; + var typeName = ts.cloneEntityName(node.typeName, location); var result = resolver.getTypeReferenceSerializationKind(typeName); switch (result) { case ts.TypeReferenceSerializationKind.Unknown: @@ -35389,7 +36025,7 @@ var ts; // For the rules on serializing the type of each parameter declaration, see `serializeTypeOfDeclaration`. if (node) { var valueDeclaration; - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { valueDeclaration = ts.getFirstConstructorWithBody(node); } else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) { @@ -35484,9 +36120,10 @@ var ts; } if (!shouldHoistDeclarationInSystemJsModule(node)) { // do not emit var if variable was already hoisted - if (!(node.flags & 2 /* Export */) || isES6ExportedDeclaration(node)) { + var isES6ExportedEnum = isES6ExportedDeclaration(node); + if (!(node.flags & 2 /* Export */) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 219 /* EnumDeclaration */))) { emitStart(node); - if (isES6ExportedDeclaration(node)) { + if (isES6ExportedEnum) { write("export "); } write("var "); @@ -35503,12 +36140,10 @@ var ts; emitEnd(node.name); write(") {"); increaseIndent(); - scopeEmitStart(node); emitLines(node.members); decreaseIndent(); writeLine(); emitToken(16 /* CloseBraceToken */, node.members.end); - scopeEmitEnd(); write(")("); emitModuleMemberName(node); write(" || ("); @@ -35568,7 +36203,7 @@ var ts; } } function getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration) { - if (moduleDeclaration.body.kind === 218 /* ModuleDeclaration */) { + if (moduleDeclaration.body.kind === 220 /* ModuleDeclaration */) { var recursiveInnerModule = getInnerMostModuleDeclarationFromDottedModule(moduleDeclaration.body); return recursiveInnerModule || moduleDeclaration.body; } @@ -35579,6 +36214,9 @@ var ts; function isModuleMergedWithES6Class(node) { return languageVersion === 2 /* ES6 */ && !!(resolver.getNodeCheckFlags(node) & 32768 /* LexicalModuleMergesWithClass */); } + function isFirstDeclarationOfKind(node, declarations, kind) { + return !ts.forEach(declarations, function (declaration) { return declaration.kind === kind && declaration.pos < node.pos; }); + } function emitModuleDeclaration(node) { // Emit only if this module is non-ambient. var shouldEmit = shouldEmitModuleDeclaration(node); @@ -35588,15 +36226,18 @@ var ts; var hoistedInDeclarationScope = shouldHoistDeclarationInSystemJsModule(node); var emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { - emitStart(node); - if (isES6ExportedDeclaration(node)) { - write("export "); + var isES6ExportedNamespace = isES6ExportedDeclaration(node); + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, 220 /* ModuleDeclaration */)) { + 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); write("(function ("); @@ -35604,7 +36245,7 @@ var ts; write(getGeneratedNameForNode(node)); emitEnd(node.name); write(") "); - if (node.body.kind === 219 /* ModuleBlock */) { + if (node.body.kind === 221 /* ModuleBlock */) { var saveConvertedLoopState = convertedLoopState; var saveTempFlags = tempFlags; var saveTempVariables = tempVariables; @@ -35620,7 +36261,6 @@ var ts; else { write("{"); increaseIndent(); - scopeEmitStart(node); emitCaptureThisForNodeIfNecessary(node); writeLine(); emit(node.body); @@ -35628,7 +36268,6 @@ var ts; writeLine(); var moduleBlock = getInnerMostModuleDeclarationFromDottedModule(node).body; emitToken(16 /* CloseBraceToken */, moduleBlock.statements.end); - scopeEmitEnd(); } write(")("); // write moduleDecl = containingModule.m only if it is not exported es6 module member @@ -35682,16 +36321,16 @@ var ts; } } function getNamespaceDeclarationNode(node) { - if (node.kind === 221 /* ImportEqualsDeclaration */) { + if (node.kind === 223 /* ImportEqualsDeclaration */) { return node; } var importClause = node.importClause; - if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause && importClause.namedBindings && importClause.namedBindings.kind === 226 /* NamespaceImport */) { return importClause.namedBindings; } } function isDefaultImport(node) { - return node.kind === 222 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; + return node.kind === 224 /* ImportDeclaration */ && node.importClause && !!node.importClause.name; } function emitExportImportAssignments(node) { if (ts.isAliasSymbolDeclaration(node) && resolver.isValueAliasDeclaration(node)) { @@ -35719,7 +36358,7 @@ var ts; if (shouldEmitNamedBindings) { emitLeadingComments(node.importClause.namedBindings); emitStart(node.importClause.namedBindings); - if (node.importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (node.importClause.namedBindings.kind === 226 /* NamespaceImport */) { write("* as "); emit(node.importClause.namedBindings.name); } @@ -35745,7 +36384,7 @@ var ts; } function emitExternalImportDeclaration(node) { if (ts.contains(externalImports, node)) { - var isExportedImport = node.kind === 221 /* ImportEqualsDeclaration */ && (node.flags & 2 /* Export */) !== 0; + var isExportedImport = node.kind === 223 /* ImportEqualsDeclaration */ && (node.flags & 2 /* Export */) !== 0; var namespaceDeclaration = getNamespaceDeclarationNode(node); if (modulekind !== 2 /* AMD */) { emitLeadingComments(node); @@ -35764,7 +36403,7 @@ var ts; // import { x, y } from "foo" // import d, * as x from "foo" // import d, { x, y } from "foo" - var isNakedImport = 222 /* ImportDeclaration */ && !node.importClause; + var isNakedImport = 224 /* ImportDeclaration */ && !node.importClause; if (!isNakedImport) { write("var "); write(getGeneratedNameForNode(node)); @@ -35882,15 +36521,17 @@ var ts; } else { // export * from "foo" - writeLine(); - write("__export("); - if (modulekind !== 2 /* AMD */) { - emitRequire(ts.getExternalModuleName(node)); + if (hasExportStarsToExportValues && resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + writeLine(); + write("__export("); + if (modulekind !== 2 /* AMD */) { + emitRequire(ts.getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); } - else { - write(generatedName); - } - write(");"); } emitEnd(node); } @@ -35941,8 +36582,8 @@ var ts; write("export default "); var expression = node.expression; emit(expression); - if (expression.kind !== 213 /* FunctionDeclaration */ && - expression.kind !== 214 /* ClassDeclaration */) { + if (expression.kind !== 215 /* FunctionDeclaration */ && + expression.kind !== 216 /* ClassDeclaration */) { write(";"); } emitEnd(node); @@ -35975,11 +36616,11 @@ var ts; externalImports = []; exportSpecifiers = {}; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; for (var _a = 0, _b = sourceFile.statements; _a < _b.length; _a++) { var node = _b[_a]; switch (node.kind) { - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: if (!node.importClause || resolver.isReferencedAliasDeclaration(node.importClause, /*checkChildren*/ true)) { // import "mod" @@ -35989,18 +36630,20 @@ var ts; externalImports.push(node); } break; - case 221 /* ImportEqualsDeclaration */: - if (node.moduleReference.kind === 232 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { + case 223 /* ImportEqualsDeclaration */: + if (node.moduleReference.kind === 234 /* ExternalModuleReference */ && resolver.isReferencedAliasDeclaration(node)) { // import x = require("mod") where x is referenced externalImports.push(node); } break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: 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 @@ -36011,12 +36654,12 @@ var ts; // export { x, y } for (var _c = 0, _d = node.exportClause.elements; _c < _d.length; _c++) { var specifier = _d[_c]; - var name_26 = (specifier.propertyName || specifier.name).text; - (exportSpecifiers[name_26] || (exportSpecifiers[name_26] = [])).push(specifier); + var name_24 = (specifier.propertyName || specifier.name).text; + (exportSpecifiers[name_24] || (exportSpecifiers[name_24] = [])).push(specifier); } } break; - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: if (node.isExportEquals && !exportEquals) { // export = x exportEquals = node; @@ -36026,7 +36669,7 @@ var ts; } } function emitExportStarHelper() { - if (hasExportStars) { + if (hasExportStarsToExportValues) { writeLine(); write("function __export(m) {"); increaseIndent(); @@ -36042,14 +36685,20 @@ var ts; if (namespaceDeclaration && !isDefaultImport(node)) { return ts.getTextOfNodeFromSourceText(currentText, namespaceDeclaration.name); } - if (node.kind === 222 /* ImportDeclaration */ && node.importClause) { + if (node.kind === 224 /* ImportDeclaration */ && node.importClause) { return getGeneratedNameForNode(node); } - if (node.kind === 228 /* ExportDeclaration */ && node.moduleSpecifier) { + if (node.kind === 230 /* ExportDeclaration */ && node.moduleSpecifier) { return getGeneratedNameForNode(node); } } - function getExternalModuleNameText(importNode) { + function getExternalModuleNameText(importNode, emitRelativePathAsModuleName) { + if (emitRelativePathAsModuleName) { + var name_25 = getExternalModuleNameFromDeclaration(host, resolver, importNode); + if (name_25) { + return "\"" + name_25 + "\""; + } + } var moduleName = ts.getExternalModuleName(importNode); if (moduleName.kind === 9 /* StringLiteral */) { return tryRenameExternalModule(moduleName) || getLiteralText(moduleName); @@ -36065,8 +36714,8 @@ var ts; for (var _a = 0, externalImports_1 = externalImports; _a < externalImports_1.length; _a++) { var importNode = externalImports_1[_a]; // do not create variable declaration for exports and imports that lack import clause - var skipNode = importNode.kind === 228 /* ExportDeclaration */ || - (importNode.kind === 222 /* ImportDeclaration */ && !importNode.importClause); + var skipNode = importNode.kind === 230 /* ExportDeclaration */ || + (importNode.kind === 224 /* ImportDeclaration */ && !importNode.importClause); if (skipNode) { continue; } @@ -36088,7 +36737,7 @@ var ts; // 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; } @@ -36099,7 +36748,7 @@ var ts; var hasExportDeclarationWithExportClause = false; for (var _a = 0, externalImports_2 = externalImports; _a < externalImports_2.length; _a++) { var externalImport = externalImports_2[_a]; - if (externalImport.kind === 228 /* ExportDeclaration */ && externalImport.exportClause) { + if (externalImport.kind === 230 /* ExportDeclaration */ && externalImport.exportClause) { hasExportDeclarationWithExportClause = true; break; } @@ -36115,7 +36764,7 @@ var ts; increaseIndent(); var started = false; if (exportedDeclarations) { - for (var i = 0; i < exportedDeclarations.length; ++i) { + for (var i = 0; i < exportedDeclarations.length; i++) { // write name of exported declaration, i.e 'export var x...' writeExportedName(exportedDeclarations[i]); } @@ -36131,7 +36780,7 @@ var ts; } for (var _d = 0, externalImports_3 = externalImports; _d < externalImports_3.length; _d++) { var externalImport = externalImports_3[_d]; - if (externalImport.kind !== 228 /* ExportDeclaration */) { + if (externalImport.kind !== 230 /* ExportDeclaration */) { continue; } var exportDecl = externalImport; @@ -36217,14 +36866,14 @@ var ts; writeLine(); write("var "); var seen = {}; - for (var i = 0; i < hoistedVars.length; ++i) { + for (var i = 0; i < hoistedVars.length; i++) { var local = hoistedVars[i]; - var name_27 = local.kind === 69 /* Identifier */ + var name_26 = local.kind === 69 /* Identifier */ ? local : local.name; - if (name_27) { + if (name_26) { // do not emit duplicate entries (in case of declaration merging) in the list of hoisted variables - var text = ts.unescapeIdentifier(name_27.text); + var text = ts.unescapeIdentifier(name_26.text); if (ts.hasProperty(seen, text)) { continue; } @@ -36235,7 +36884,7 @@ var ts; if (i !== 0) { write(", "); } - if (local.kind === 214 /* ClassDeclaration */ || local.kind === 218 /* ModuleDeclaration */ || local.kind === 217 /* EnumDeclaration */) { + if (local.kind === 216 /* ClassDeclaration */ || local.kind === 220 /* ModuleDeclaration */ || local.kind === 219 /* EnumDeclaration */) { emitDeclarationName(local); } else { @@ -36269,21 +36918,21 @@ var ts; if (node.flags & 4 /* Ambient */) { return; } - if (node.kind === 213 /* FunctionDeclaration */) { + if (node.kind === 215 /* FunctionDeclaration */) { if (!hoistedFunctionDeclarations) { hoistedFunctionDeclarations = []; } hoistedFunctionDeclarations.push(node); return; } - if (node.kind === 214 /* ClassDeclaration */) { + if (node.kind === 216 /* ClassDeclaration */) { if (!hoistedVars) { hoistedVars = []; } hoistedVars.push(node); return; } - if (node.kind === 217 /* EnumDeclaration */) { + if (node.kind === 219 /* EnumDeclaration */) { if (shouldEmitEnumDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -36292,7 +36941,7 @@ var ts; } return; } - if (node.kind === 218 /* ModuleDeclaration */) { + if (node.kind === 220 /* ModuleDeclaration */) { if (shouldEmitModuleDeclaration(node)) { if (!hoistedVars) { hoistedVars = []; @@ -36301,17 +36950,17 @@ var ts; } return; } - if (node.kind === 211 /* VariableDeclaration */ || node.kind === 163 /* BindingElement */) { + if (node.kind === 213 /* VariableDeclaration */ || node.kind === 165 /* BindingElement */) { if (shouldHoistVariable(node, /*checkIfSourceFileLevelDecl*/ false)) { - var name_28 = node.name; - if (name_28.kind === 69 /* Identifier */) { + var name_27 = node.name; + if (name_27.kind === 69 /* Identifier */) { if (!hoistedVars) { hoistedVars = []; } - hoistedVars.push(name_28); + hoistedVars.push(name_27); } else { - ts.forEachChild(name_28, visit); + ts.forEachChild(name_27, visit); } } return; @@ -36342,7 +36991,7 @@ var ts; // if block scoped variables are nested in some another block then // no other functions can use them except ones that are defined at least in the same block return (ts.getCombinedNodeFlags(node) & 24576 /* BlockScoped */) === 0 || - ts.getEnclosingBlockScopeContainer(node).kind === 248 /* SourceFile */; + ts.getEnclosingBlockScopeContainer(node).kind === 250 /* SourceFile */; } function isCurrentFileSystemExternalModule() { return modulekind === 4 /* System */ && isCurrentFileExternalModule; @@ -36402,7 +37051,7 @@ var ts; } function emitSetters(exportStarFunction, dependencyGroups) { write("setters:["); - for (var i = 0; i < dependencyGroups.length; ++i) { + for (var i = 0; i < dependencyGroups.length; i++) { if (i !== 0) { write(","); } @@ -36417,21 +37066,21 @@ var ts; var entry = group_1[_a]; var importVariableName = getLocalNameForExternalImport(entry) || ""; switch (entry.kind) { - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: if (!entry.importClause) { // 'import "..."' case // module is imported only for side-effects, no emit required break; } // fall-through - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: ts.Debug.assert(importVariableName !== ""); writeLine(); // save import into the local write(importVariableName + " = " + parameterName + ";"); writeLine(); break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: ts.Debug.assert(importVariableName !== ""); if (entry.exportClause) { // export {a, b as c} from 'foo' @@ -36444,7 +37093,7 @@ var ts; write(exportFunctionForFile + "({"); writeLine(); increaseIndent(); - for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; ++i_2) { + for (var i_2 = 0, len = entry.exportClause.elements.length; i_2 < len; i_2++) { if (i_2 !== 0) { write(","); writeLine(); @@ -36461,6 +37110,8 @@ var ts; 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: @@ -36481,17 +37132,17 @@ var ts; write("execute: function() {"); increaseIndent(); writeLine(); - for (var i = startIndex; i < node.statements.length; ++i) { + for (var i = startIndex; i < node.statements.length; i++) { var statement = node.statements[i]; switch (statement.kind) { // - function declarations are not emitted because they were already hoisted // - import declarations are not emitted since they are already handled in setters // - export declarations with module specifiers are not emitted since they were already written in setters // - export declarations without module specifiers are emitted preserving the order - case 213 /* FunctionDeclaration */: - case 222 /* ImportDeclaration */: + case 215 /* FunctionDeclaration */: + case 224 /* ImportDeclaration */: continue; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: if (!statement.moduleSpecifier) { for (var _a = 0, _b = statement.exportClause.elements; _a < _b.length; _a++) { var element = _b[_a]; @@ -36500,7 +37151,7 @@ var ts; } } continue; - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: if (!ts.isInternalModuleImportEqualsDeclaration(statement)) { // - import equals declarations that import external modules are not emitted continue; @@ -36540,8 +37191,8 @@ var ts; write("["); var groupIndices = {}; var dependencyGroups = []; - for (var i = 0; i < externalImports.length; ++i) { - var text = getExternalModuleNameText(externalImports[i]); + for (var i = 0; i < externalImports.length; i++) { + var text = getExternalModuleNameText(externalImports[i], emitRelativePathAsModuleName); if (ts.hasProperty(groupIndices, text)) { // deduplicate/group entries in dependency list by the dependency name var groupIndex = groupIndices[text]; @@ -36555,18 +37206,12 @@ var ts; if (i !== 0) { write(", "); } - if (emitRelativePathAsModuleName) { - var name_29 = getExternalModuleNameFromDeclaration(host, resolver, externalImports[i]); - if (name_29) { - text = "\"" + name_29 + "\""; - } - } write(text); } write("], function(" + exportFunctionForFile + ") {"); writeLine(); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitSystemModuleBody(node, dependencyGroups, startIndex); @@ -36596,13 +37241,7 @@ var ts; for (var _c = 0, externalImports_4 = externalImports; _c < externalImports_4.length; _c++) { var importNode = externalImports_4[_c]; // Find the name of the external module - var externalModuleName = getExternalModuleNameText(importNode); - if (emitRelativePathAsModuleName) { - var name_30 = getExternalModuleNameFromDeclaration(host, resolver, importNode); - if (name_30) { - externalModuleName = "\"" + name_30 + "\""; - } - } + var externalModuleName = getExternalModuleNameText(importNode, emitRelativePathAsModuleName); // Find the name of the module alias, if there is one var importAliasName = getLocalNameForExternalImport(importNode); if (includeNonAmdDependencies && importAliasName) { @@ -36662,7 +37301,7 @@ var ts; writeModuleName(node, emitRelativePathAsModuleName); emitAMDDependencies(node, /*includeNonAmdDependencies*/ true, emitRelativePathAsModuleName); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -36673,7 +37312,7 @@ var ts; write("});"); } function emitCommonJSModule(node) { - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false, /*ensureUseStrict*/ true); emitEmitHelpers(node); collectExternalModuleInfo(node); emitExportStarHelper(); @@ -36693,7 +37332,7 @@ var ts; writeLines(" }\n})("); emitAMDFactoryHeader(dependencyNames); increaseIndent(); - var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true); + var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true); emitExportStarHelper(); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -36707,7 +37346,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; var startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ false); emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); @@ -36770,7 +37409,9 @@ var ts; // Replace entities like   result = result.replace(/&(\w+);/g, function (s, m) { if (entities[m] !== undefined) { - return String.fromCharCode(entities[m]); + var ch = String.fromCharCode(entities[m]); + // " needs to be escaped + return ch === "\"" ? "\\\"" : ch; } else { return s; @@ -36822,24 +37463,41 @@ var ts; } } } - function emitDirectivePrologues(statements, startWithNewLine) { - for (var i = 0; i < statements.length; ++i) { + function isUseStrictPrologue(node) { + return !!node.expression.text.match(/use strict/); + } + function ensureUseStrictPrologue(startWithNewLine, writeUseStrict) { + if (writeUseStrict) { + if (startWithNewLine) { + writeLine(); + } + write("\"use strict\";"); + } + } + function emitDirectivePrologues(statements, startWithNewLine, ensureUseStrict) { + var foundUseStrict = false; + for (var i = 0; i < statements.length; i++) { if (ts.isPrologueDirective(statements[i])) { + if (isUseStrictPrologue(statements[i])) { + foundUseStrict = true; + } if (startWithNewLine || i > 0) { writeLine(); } emit(statements[i]); } else { + ensureUseStrictPrologue(startWithNewLine || i > 0, !foundUseStrict && ensureUseStrict); // return index of the first non prologue directive return i; } } + ensureUseStrictPrologue(startWithNewLine, !foundUseStrict && ensureUseStrict); return statements.length; } function writeLines(text) { var lines = text.split(/\r\n|\r|\n/g); - for (var i = 0; i < lines.length; ++i) { + for (var i = 0; i < lines.length; i++) { var line = lines[i]; if (line.length) { writeLine(); @@ -36879,7 +37537,7 @@ var ts; emitShebang(); emitDetachedCommentsAndUpdateCommentsInfo(node); if (ts.isExternalModule(node) || compilerOptions.isolatedModules) { - if (root || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { + if (isOwnFileEmit || (!ts.isExternalModule(node) && compilerOptions.isolatedModules)) { var emitModule = moduleEmitDelegates[modulekind] || moduleEmitDelegates[1 /* CommonJS */]; emitModule(node); } @@ -36893,7 +37551,7 @@ var ts; externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -36901,6 +37559,9 @@ var ts; } emitLeadingComments(node.endOfFileToken); } + function emit(node) { + emitNodeConsideringCommentsOption(node, emitNodeWithSourceMap); + } function emitNodeWithCommentsAndWithoutSourcemap(node) { emitNodeConsideringCommentsOption(node, emitNodeWithoutSourceMap); } @@ -36923,6 +37584,13 @@ var ts; } } } + function emitNodeWithSourceMap(node) { + if (node) { + emitStart(node); + emitNodeWithoutSourceMap(node); + emitEnd(node); + } + } function emitNodeWithoutSourceMap(node) { if (node) { emitJavaScriptWorker(node); @@ -36932,24 +37600,24 @@ var ts; switch (node.kind) { // All of these entities are emitted in a specialized fashion. As such, we allow // the specialized methods for each to handle the comments on the nodes. - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 227 /* ExportAssignment */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 229 /* ExportAssignment */: return true; } } function shouldEmitLeadingAndTrailingComments(node) { switch (node.kind) { - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return shouldEmitLeadingAndTrailingCommentsForVariableStatement(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // Only emit the leading/trailing comments for a module if we're actually // emitting the module as well. return shouldEmitModuleDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: // Only emit the leading/trailing comments for an enum if we're actually // emitting the module as well. return shouldEmitEnumDeclaration(node); @@ -36961,9 +37629,9 @@ var ts; // then we don't want to emit comments when we emit the body. It will have already // been taken care of when we emitted the 'return' statement for the function // expression body. - if (node.kind !== 192 /* Block */ && + if (node.kind !== 194 /* Block */ && node.parent && - node.parent.kind === 174 /* ArrowFunction */ && + node.parent.kind === 176 /* ArrowFunction */ && node.parent.body === node && compilerOptions.target <= 1 /* ES5 */) { return false; @@ -37002,142 +37670,142 @@ var ts; case 13 /* TemplateMiddle */: case 14 /* TemplateTail */: return emitLiteral(node); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: return emitTemplateExpression(node); - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return emitTemplateSpan(node); - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: + case 235 /* JsxElement */: + case 236 /* JsxSelfClosingElement */: return emitJsxElement(node); - case 236 /* JsxText */: + case 238 /* JsxText */: return emitJsxText(node); - case 240 /* JsxExpression */: + case 242 /* JsxExpression */: return emitJsxExpression(node); case 135 /* QualifiedName */: return emitQualifiedName(node); - case 161 /* ObjectBindingPattern */: + case 163 /* ObjectBindingPattern */: return emitObjectBindingPattern(node); - case 162 /* ArrayBindingPattern */: + case 164 /* ArrayBindingPattern */: return emitArrayBindingPattern(node); - case 163 /* BindingElement */: + case 165 /* BindingElement */: return emitBindingElement(node); - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return emitArrayLiteral(node); - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return emitObjectLiteral(node); - case 245 /* PropertyAssignment */: + case 247 /* PropertyAssignment */: return emitPropertyAssignment(node); - case 246 /* ShorthandPropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: return emitShorthandPropertyAssignment(node); case 136 /* ComputedPropertyName */: return emitComputedPropertyName(node); - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: return emitPropertyAccess(node); - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return emitIndexedAccess(node); - case 168 /* CallExpression */: + case 170 /* CallExpression */: return emitCallExpression(node); - case 169 /* NewExpression */: + case 171 /* NewExpression */: return emitNewExpression(node); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return emitTaggedTemplateExpression(node); - case 171 /* TypeAssertionExpression */: + case 173 /* TypeAssertionExpression */: return emit(node.expression); - case 189 /* AsExpression */: + case 191 /* AsExpression */: return emit(node.expression); - case 172 /* ParenthesizedExpression */: + case 174 /* ParenthesizedExpression */: return emitParenExpression(node); - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return emitFunctionDeclaration(node); - case 175 /* DeleteExpression */: + case 177 /* DeleteExpression */: return emitDeleteExpression(node); - case 176 /* TypeOfExpression */: + case 178 /* TypeOfExpression */: return emitTypeOfExpression(node); - case 177 /* VoidExpression */: + case 179 /* VoidExpression */: return emitVoidExpression(node); - case 178 /* AwaitExpression */: + case 180 /* AwaitExpression */: return emitAwaitExpression(node); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return emitPrefixUnaryExpression(node); - case 180 /* PostfixUnaryExpression */: + case 182 /* PostfixUnaryExpression */: return emitPostfixUnaryExpression(node); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return emitBinaryExpression(node); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return emitConditionalExpression(node); - case 185 /* SpreadElementExpression */: + case 187 /* SpreadElementExpression */: return emitSpreadElementExpression(node); - case 184 /* YieldExpression */: + case 186 /* YieldExpression */: return emitYieldExpression(node); - case 187 /* OmittedExpression */: + case 189 /* OmittedExpression */: return; - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return emitBlock(node); - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: return emitVariableStatement(node); - case 194 /* EmptyStatement */: + case 196 /* EmptyStatement */: return write(";"); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return emitExpressionStatement(node); - case 196 /* IfStatement */: + case 198 /* IfStatement */: return emitIfStatement(node); - case 197 /* DoStatement */: + case 199 /* DoStatement */: return emitDoStatement(node); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: return emitWhileStatement(node); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return emitForStatement(node); - case 201 /* ForOfStatement */: - case 200 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 202 /* ForInStatement */: return emitForInOrForOfStatement(node); - case 202 /* ContinueStatement */: - case 203 /* BreakStatement */: + case 204 /* ContinueStatement */: + case 205 /* BreakStatement */: return emitBreakOrContinueStatement(node); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: return emitReturnStatement(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: return emitWithStatement(node); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return emitSwitchStatement(node); - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: return emitCaseOrDefaultClause(node); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: return emitLabeledStatement(node); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: return emitThrowStatement(node); - case 209 /* TryStatement */: + case 211 /* TryStatement */: return emitTryStatement(node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return emitCatchClause(node); - case 210 /* DebuggerStatement */: + case 212 /* DebuggerStatement */: return emitDebuggerStatement(node); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: return emitVariableDeclaration(node); - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: return emitClassExpression(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return emitClassDeclaration(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return emitInterfaceDeclaration(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return emitEnumDeclaration(node); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return emitEnumMember(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return emitModuleDeclaration(node); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: return emitImportDeclaration(node); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: return emitImportEqualsDeclaration(node); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: return emitExportDeclaration(node); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: return emitExportAssignment(node); - case 248 /* SourceFile */: + case 250 /* SourceFile */: return emitSourceFileNode(node); } } @@ -37176,7 +37844,7 @@ var ts; function getLeadingCommentsToEmit(node) { // Emit the leading comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 248 /* SourceFile */ || node.pos !== node.parent.pos) { + if (node.parent.kind === 250 /* SourceFile */ || node.pos !== node.parent.pos) { if (hasDetachedComments(node.pos)) { // get comments without detached comments return getLeadingCommentsWithoutDetachedComments(); @@ -37191,7 +37859,7 @@ var ts; function getTrailingCommentsToEmit(node) { // Emit the trailing comments only if the parent's pos doesn't match because parent should take care of emitting these comments if (node.parent) { - if (node.parent.kind === 248 /* SourceFile */ || node.end !== node.parent.end) { + if (node.parent.kind === 250 /* SourceFile */ || node.end !== node.parent.end) { return ts.getTrailingCommentRanges(currentText, node.end); } } @@ -37200,10 +37868,10 @@ var ts; * Emit comments associated with node that will not be emitted into JS file */ function emitCommentsOnNotEmittedNode(node) { - emitLeadingCommentsWorker(node, /*isEmittedNode:*/ false); + emitLeadingCommentsWorker(node, /*isEmittedNode*/ false); } function emitLeadingComments(node) { - return emitLeadingCommentsWorker(node, /*isEmittedNode:*/ true); + return emitLeadingCommentsWorker(node, /*isEmittedNode*/ true); } function emitLeadingCommentsWorker(node, isEmittedNode) { if (compilerOptions.removeComments) { @@ -37228,7 +37896,7 @@ var ts; } ts.emitNewLineBeforeLeadingComments(currentLineMap, writer, node, leadingComments); // Leading comments are emitted at /*leading comment1 */space/*leading comment*/space - ts.emitComments(currentText, currentLineMap, writer, leadingComments, /*trailingSeparator:*/ true, newLine, writeComment); + ts.emitComments(currentText, currentLineMap, writer, leadingComments, /*trailingSeparator*/ true, newLine, writeComment); } function emitTrailingComments(node) { if (compilerOptions.removeComments) { @@ -37280,18 +37948,31 @@ var ts; } } } + function writeComment(text, lineMap, writer, comment, newLine) { + emitPos(comment.pos); + ts.writeCommentRange(text, lineMap, writer, comment, newLine); + emitPos(comment.end); + } function emitShebang() { var shebang = ts.getShebang(currentText); if (shebang) { write(shebang); + writeLine(); } } var _a, _b; } - function emitFile(jsFilePath, sourceFile) { - emitJavaScript(jsFilePath, sourceFile); - if (compilerOptions.declaration) { - ts.writeDeclarationFile(jsFilePath, sourceFile, host, resolver, diagnostics); + function emitFile(_a, sourceFiles, isBundledEmit) { + var jsFilePath = _a.jsFilePath, sourceMapFilePath = _a.sourceMapFilePath, declarationFilePath = _a.declarationFilePath; + // Make sure not to write js File and source map file if any of them cannot be written + if (!host.isEmitBlocked(jsFilePath) && !compilerOptions.noEmit) { + emitJavaScript(jsFilePath, sourceMapFilePath, sourceFiles, isBundledEmit); + } + else { + emitSkipped = true; + } + if (declarationFilePath) { + emitSkipped = ts.writeDeclarationFile(declarationFilePath, sourceFiles, isBundledEmit, host, resolver, emitterDiagnostics) || emitSkipped; } } } @@ -37309,10 +37990,10 @@ var ts; /** The version of the TypeScript compiler release */ var emptyArray = []; ts.version = "1.8.0"; - function findConfigFile(searchPath) { + function findConfigFile(searchPath, fileExists) { var fileName = "tsconfig.json"; while (true) { - if (ts.sys.fileExists(fileName)) { + if (fileExists(fileName)) { return fileName; } var parentPath = ts.getDirectoryPath(searchPath); @@ -37336,21 +38017,22 @@ var ts; ? compilerOptions.moduleResolution : compilerOptions.module === 1 /* CommonJS */ ? 2 /* NodeJs */ : 1 /* Classic */; switch (moduleResolution) { - case 2 /* NodeJs */: return nodeModuleNameResolver(moduleName, containingFile, host); + case 2 /* NodeJs */: return nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host); case 1 /* Classic */: return classicNameResolver(moduleName, containingFile, compilerOptions, host); } } ts.resolveModuleName = resolveModuleName; - function nodeModuleNameResolver(moduleName, containingFile, host) { + function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, host) { var containingDirectory = ts.getDirectoryPath(containingFile); + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); if (ts.getRootLength(moduleName) !== 0 || nameStartsWithDotSlashOrDotDotSlash(moduleName)) { var failedLookupLocations = []; var candidate = ts.normalizePath(ts.combinePaths(containingDirectory, moduleName)); - var resolvedFileName = loadNodeModuleFromFile(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + var resolvedFileName = loadNodeModuleFromFile(supportedExtensions, candidate, failedLookupLocations, /*onlyRecordFailures*/ false, host); if (resolvedFileName) { return { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations }; } - resolvedFileName = loadNodeModuleFromDirectory(ts.supportedJsExtensions, candidate, failedLookupLocations, host); + resolvedFileName = loadNodeModuleFromDirectory(supportedExtensions, candidate, failedLookupLocations, /*onlyRecordFailures*/ false, host); return resolvedFileName ? { resolvedModule: { resolvedFileName: resolvedFileName }, failedLookupLocations: failedLookupLocations } : { resolvedModule: undefined, failedLookupLocations: failedLookupLocations }; @@ -37360,11 +38042,21 @@ var ts; } } ts.nodeModuleNameResolver = nodeModuleNameResolver; - function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, host) { + /* @internal */ + function directoryProbablyExists(directoryName, host) { + // if host does not support 'directoryExists' assume that directory will exist + return !host.directoryExists || host.directoryExists(directoryName); + } + ts.directoryProbablyExists = directoryProbablyExists; + /** + * @param {boolean} onlyRecordFailures - if true then function won't try to actually load files but instead record all attempts as failures. This flag is necessary + * in cases when we know upfront that all load attempts will fail (because containing folder does not exists) however we still need to record all failed lookup locations. + */ + function loadNodeModuleFromFile(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { return ts.forEach(extensions, tryLoad); function tryLoad(ext) { var fileName = ts.fileExtensionIs(candidate, ext) ? candidate : candidate + ext; - if (host.fileExists(fileName)) { + if (!onlyRecordFailures && host.fileExists(fileName)) { return fileName; } else { @@ -37373,9 +38065,10 @@ var ts; } } } - function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, host) { + function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocation, onlyRecordFailures, host) { var packageJsonPath = ts.combinePaths(candidate, "package.json"); - if (host.fileExists(packageJsonPath)) { + var directoryExists = !onlyRecordFailures && directoryProbablyExists(candidate, host); + if (directoryExists && host.fileExists(packageJsonPath)) { var jsonContent; try { var jsonText = host.readFile(packageJsonPath); @@ -37385,8 +38078,9 @@ var ts; // gracefully handle if readFile fails or returns not JSON jsonContent = { typings: undefined }; } - if (jsonContent.typings) { - var result = loadNodeModuleFromFile(extensions, ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)), failedLookupLocation, host); + if (typeof jsonContent.typings === "string") { + var path = ts.normalizePath(ts.combinePaths(candidate, jsonContent.typings)); + var result = loadNodeModuleFromFile(extensions, path, failedLookupLocation, !directoryProbablyExists(ts.getDirectoryPath(path), host), host); if (result) { return result; } @@ -37396,7 +38090,7 @@ var ts; // record package json as one of failed lookup locations - in the future if this file will appear it will invalidate resolution results failedLookupLocation.push(packageJsonPath); } - return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, host); + return loadNodeModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocation, !directoryExists, host); } function loadModuleFromNodeModules(moduleName, directory, host) { var failedLookupLocations = []; @@ -37405,12 +38099,14 @@ var ts; var baseName = ts.getBaseFileName(directory); if (baseName !== "node_modules") { var nodeModulesFolder = ts.combinePaths(directory, "node_modules"); + var nodeModulesFolderExists = directoryProbablyExists(nodeModulesFolder, host); var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName)); - var result = loadNodeModuleFromFile(ts.supportedExtensions, candidate, failedLookupLocations, host); + // Load only typescript files irrespective of allowJs option if loading from node modules + var result = loadNodeModuleFromFile(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } - result = loadNodeModuleFromDirectory(ts.supportedExtensions, candidate, failedLookupLocations, host); + result = loadNodeModuleFromDirectory(ts.supportedTypeScriptExtensions, candidate, failedLookupLocations, !nodeModulesFolderExists, host); if (result) { return { resolvedModule: { resolvedFileName: result, isExternalLibraryImport: true }, failedLookupLocations: failedLookupLocations }; } @@ -37436,10 +38132,10 @@ var ts; var searchName; var failedLookupLocations = []; var referencedSourceFile; - var extensions = compilerOptions.allowNonTsExtensions ? ts.supportedJsExtensions : ts.supportedExtensions; + var supportedExtensions = ts.getSupportedExtensions(compilerOptions); while (true) { searchName = ts.normalizePath(ts.combinePaths(searchPath, moduleName)); - referencedSourceFile = ts.forEach(extensions, function (extension) { + referencedSourceFile = ts.forEach(supportedExtensions, function (extension) { if (extension === ".tsx" && !compilerOptions.jsx) { // resolve .tsx files only if jsx support is enabled // 'logical not' handles both undefined and None cases @@ -37540,14 +38236,15 @@ var ts; getCanonicalFileName: getCanonicalFileName, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return ts.sys.fileExists(fileName); }, - readFile: function (fileName) { return ts.sys.readFile(fileName); } + readFile: function (fileName) { return ts.sys.readFile(fileName); }, + directoryExists: function (directoryName) { return ts.sys.directoryExists(directoryName); } }; } ts.createCompilerHost = createCompilerHost; function getPreEmitDiagnostics(program, sourceFile, cancellationToken) { var diagnostics = program.getOptionsDiagnostics(cancellationToken).concat(program.getSyntacticDiagnostics(sourceFile, cancellationToken), program.getGlobalDiagnostics(cancellationToken), program.getSemanticDiagnostics(sourceFile, cancellationToken)); if (program.getCompilerOptions().declaration) { - diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); + diagnostics = diagnostics.concat(program.getDeclarationDiagnostics(sourceFile, cancellationToken)); } return ts.sortAndDeduplicateDiagnostics(diagnostics); } @@ -37585,8 +38282,11 @@ var ts; var noDiagnosticsTypeChecker; var classifiableNames; var skipDefaultLib = options.noLib; + var supportedExtensions = ts.getSupportedExtensions(options); var start = new Date().getTime(); host = host || createCompilerHost(options); + // Map storing if there is emit blocking diagnostics for given input + var hasEmitBlockingDiagnostics = ts.createFileMap(getCanonicalFileName); var currentDirectory = host.getCurrentDirectory(); var resolveModuleNamesWorker = host.resolveModuleNames ? (function (moduleNames, containingFile) { return host.resolveModuleNames(moduleNames, containingFile); }) @@ -37603,24 +38303,23 @@ var ts; (oldOptions.noResolve !== options.noResolve) || (oldOptions.target !== options.target) || (oldOptions.noLib !== options.noLib) || - (oldOptions.jsx !== options.jsx)) { + (oldOptions.jsx !== options.jsx) || + (oldOptions.allowJs !== options.allowJs)) { oldProgram = undefined; } } if (!tryReuseStructureFromOldProgram()) { - ts.forEach(rootNames, function (name) { return processRootFile(name, false); }); + ts.forEach(rootNames, function (name) { return processRootFile(name, /*isDefaultLib*/ false); }); // Do not process the default library if: // - The '--noLib' flag is used. // - A 'no-default-lib' reference comment is encountered in // processing the root files. if (!skipDefaultLib) { - processRootFile(host.getDefaultLibFileName(options), true); + processRootFile(host.getDefaultLibFileName(options), /*isDefaultLib*/ true); } } - verifyCompilerOptions(); // unconditionally set oldProgram to undefined to prevent it from being captured in closure oldProgram = undefined; - ts.programTime += new Date().getTime() - start; program = { getRootFileNames: function () { return rootNames; }, getSourceFile: getSourceFile, @@ -37634,7 +38333,7 @@ var ts; getTypeChecker: getTypeChecker, getClassifiableNames: getClassifiableNames, getDiagnosticsProducingTypeChecker: getDiagnosticsProducingTypeChecker, - getCommonSourceDirectory: function () { return commonSourceDirectory; }, + getCommonSourceDirectory: getCommonSourceDirectory, emit: emit, getCurrentDirectory: function () { return currentDirectory; }, getNodeCount: function () { return getDiagnosticsProducingTypeChecker().getNodeCount(); }, @@ -37643,7 +38342,27 @@ var ts; getTypeCount: function () { return getDiagnosticsProducingTypeChecker().getTypeCount(); }, getFileProcessingDiagnostics: function () { return fileProcessingDiagnostics; } }; + verifyCompilerOptions(); + ts.programTime += new Date().getTime() - start; return program; + function getCommonSourceDirectory() { + if (typeof commonSourceDirectory === "undefined") { + if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { + // If a rootDir is specified and is valid use it as the commonSourceDirectory + commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); + } + else { + commonSourceDirectory = computeCommonSourceDirectory(files); + } + if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { + // Make sure directory path ends with directory separator so this string can directly + // used to replace with "" to get the relative path of the source file and the relative path doesn't + // start with / making it rooted path + commonSourceDirectory += ts.directorySeparator; + } + } + return commonSourceDirectory; + } function getClassifiableNames() { if (!classifiableNames) { // Initialize a checker so that all our files are bound. @@ -37699,7 +38418,7 @@ var ts; var moduleNames = ts.map(newSourceFile.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(newSourceFile.fileName, currentDirectory)); // ensure that module resolution results are still correct - for (var i = 0; i < moduleNames.length; ++i) { + for (var i = 0; i < moduleNames.length; i++) { var newResolution = resolutions[i]; var oldResolution = ts.getResolvedModule(oldSourceFile, moduleNames[i]); var resolutionChanged = oldResolution @@ -37724,7 +38443,7 @@ var ts; newSourceFiles.push(newSourceFile); } // update fileName -> file mapping - for (var i = 0, len = newSourceFiles.length; i < len; ++i) { + for (var i = 0, len = newSourceFiles.length; i < len; i++) { filesByName.set(filePaths[i], newSourceFiles[i]); } files = newSourceFiles; @@ -37745,7 +38464,8 @@ var ts; getNewLine: function () { return host.getNewLine(); }, getSourceFile: program.getSourceFile, getSourceFiles: program.getSourceFiles, - writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }) + writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError) { return host.writeFile(fileName, data, writeByteOrderMark, onError); }), + isEmitBlocked: isEmitBlocked }; } function getDiagnosticsProducingTypeChecker() { @@ -37758,12 +38478,18 @@ var ts; var _this = this; return runWithCancellationToken(function () { return emitWorker(_this, sourceFile, writeFileCallback, cancellationToken); }); } + function isEmitBlocked(emitFileName) { + return hasEmitBlockingDiagnostics.contains(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName)); + } function emitWorker(program, sourceFile, writeFileCallback, cancellationToken) { // If the noEmitOnError flag is set, then check if we have any errors so far. If so, // immediately bail out. Note that we pass 'undefined' for 'sourceFile' so that we // get any preEmit diagnostics, not just the ones - if (options.noEmitOnError && getPreEmitDiagnostics(program, /*sourceFile:*/ undefined, cancellationToken).length > 0) { - return { diagnostics: [], sourceMaps: undefined, emitSkipped: true }; + if (options.noEmitOnError) { + var preEmitDiagnostics = getPreEmitDiagnostics(program, /*sourceFile:*/ undefined, cancellationToken); + if (preEmitDiagnostics.length > 0) { + return { diagnostics: preEmitDiagnostics, sourceMaps: undefined, emitSkipped: true }; + } } // Create the emit resolver outside of the "emitTime" tracking code below. That way // any cost associated with it (like type checking) are appropriate associated with @@ -37833,12 +38559,164 @@ var ts; var typeChecker = getDiagnosticsProducingTypeChecker(); ts.Debug.assert(!!sourceFile.bindDiagnostics); var bindDiagnostics = sourceFile.bindDiagnostics; - var 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. + var checkDiagnostics = ts.isSourceFileJavaScript(sourceFile) ? + getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) : + typeChecker.getDiagnostics(sourceFile, cancellationToken); var fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); var programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); return bindDiagnostics.concat(checkDiagnostics).concat(fileProcessingDiagnosticsInFile).concat(programDiagnosticsInFile); }); } + function getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) { + return runWithCancellationToken(function () { + var diagnostics = []; + walk(sourceFile); + return diagnostics; + function walk(node) { + if (!node) { + return false; + } + switch (node.kind) { + case 223 /* ImportEqualsDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); + return true; + case 229 /* ExportAssignment */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); + return true; + case 216 /* ClassDeclaration */: + var classDeclaration = node; + if (checkModifiers(classDeclaration.modifiers) || + checkTypeParameters(classDeclaration.typeParameters)) { + return true; + } + break; + case 245 /* HeritageClause */: + var heritageClause = node; + if (heritageClause.token === 106 /* ImplementsKeyword */) { + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 217 /* InterfaceDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 220 /* ModuleDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 218 /* TypeAliasDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); + return true; + case 143 /* MethodDeclaration */: + case 142 /* MethodSignature */: + case 144 /* Constructor */: + case 145 /* GetAccessor */: + case 146 /* SetAccessor */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + var functionDeclaration = node; + if (checkModifiers(functionDeclaration.modifiers) || + checkTypeParameters(functionDeclaration.typeParameters) || + checkTypeAnnotation(functionDeclaration.type)) { + return true; + } + break; + case 195 /* VariableStatement */: + var variableStatement = node; + if (checkModifiers(variableStatement.modifiers)) { + return true; + } + break; + case 213 /* VariableDeclaration */: + var variableDeclaration = node; + if (checkTypeAnnotation(variableDeclaration.type)) { + return true; + } + break; + case 170 /* CallExpression */: + case 171 /* NewExpression */: + var expression = node; + if (expression.typeArguments && expression.typeArguments.length > 0) { + var start_2 = expression.typeArguments.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_2, expression.typeArguments.end - start_2, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 138 /* Parameter */: + var parameter = node; + if (parameter.modifiers) { + var start_3 = parameter.modifiers.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_3, parameter.modifiers.end - start_3, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); + return true; + } + if (parameter.questionToken) { + diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, "?")); + return true; + } + if (parameter.type) { + diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + break; + case 141 /* PropertyDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 219 /* EnumDeclaration */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); + return true; + case 173 /* TypeAssertionExpression */: + var typeAssertionExpression = node; + diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); + return true; + case 139 /* Decorator */: + diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); + return true; + } + return ts.forEachChild(node, walk); + } + function checkTypeParameters(typeParameters) { + if (typeParameters) { + var start_4 = typeParameters.pos; + diagnostics.push(ts.createFileDiagnostic(sourceFile, start_4, typeParameters.end - start_4, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkTypeAnnotation(type) { + if (type) { + diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); + return true; + } + return false; + } + function checkModifiers(modifiers) { + if (modifiers) { + for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { + var modifier = modifiers_1[_i]; + switch (modifier.kind) { + case 112 /* PublicKeyword */: + case 110 /* PrivateKeyword */: + case 111 /* ProtectedKeyword */: + case 122 /* DeclareKeyword */: + diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); + return true; + // These are all legal modifiers. + case 113 /* StaticKeyword */: + case 82 /* ExportKeyword */: + case 74 /* ConstKeyword */: + case 77 /* DefaultKeyword */: + case 115 /* AbstractKeyword */: + } + } + } + return false; + } + }); + } function getDeclarationDiagnosticsForFile(sourceFile, cancellationToken) { return runWithCancellationToken(function () { if (!ts.isDeclarationFile(sourceFile)) { @@ -37880,16 +38758,16 @@ var ts; var imports; for (var _i = 0, _a = file.statements; _i < _a.length; _i++) { var node = _a[_i]; - collect(node, /* allowRelativeModuleNames */ true, /* collectOnlyRequireCalls */ false); + collect(node, /*allowRelativeModuleNames*/ true, /*collectOnlyRequireCalls*/ false); } file.imports = imports || emptyArray; return; function collect(node, allowRelativeModuleNames, collectOnlyRequireCalls) { if (!collectOnlyRequireCalls) { switch (node.kind) { - case 222 /* ImportDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 228 /* ExportDeclaration */: + case 224 /* ImportDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 230 /* ExportDeclaration */: var moduleNameExpr = ts.getExternalModuleName(node); if (!moduleNameExpr || moduleNameExpr.kind !== 9 /* StringLiteral */) { break; @@ -37901,7 +38779,7 @@ var ts; (imports || (imports = [])).push(moduleNameExpr); } break; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (node.name.kind === 9 /* StringLiteral */ && (node.flags & 4 /* Ambient */ || ts.isDeclarationFile(file))) { // TypeScript 1.0 spec (April 2014): 12.1.6 // An AmbientExternalModuleDeclaration declares an external module. @@ -37912,7 +38790,7 @@ var ts; // TypeScript 1.0 spec (April 2014): 12.1.6 // An ExternalImportDeclaration in anAmbientExternalModuleDeclaration may reference other external modules // only through top - level external module names. Relative external module names are not permitted. - collect(node, /* allowRelativeModuleNames */ false, collectOnlyRequireCalls); + collect(node, /*allowRelativeModuleNames*/ false, collectOnlyRequireCalls); }); } break; @@ -37923,7 +38801,7 @@ var ts; (imports || (imports = [])).push(node.arguments[0]); } else { - ts.forEachChild(node, function (node) { return collect(node, allowRelativeModuleNames, /* collectOnlyRequireCalls */ true); }); + ts.forEachChild(node, function (node) { return collect(node, allowRelativeModuleNames, /*collectOnlyRequireCalls*/ true); }); } } } @@ -37932,9 +38810,9 @@ var ts; var diagnosticArgument; var diagnostic; if (hasExtension(fileName)) { - if (!options.allowNonTsExtensions && !ts.forEach(ts.supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { + if (!options.allowNonTsExtensions && !ts.forEach(supportedExtensions, function (extension) { return ts.fileExtensionIs(host.getCanonicalFileName(fileName), extension); })) { diagnostic = ts.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1; - diagnosticArgument = [fileName, "'" + ts.supportedExtensions.join("', '") + "'"]; + diagnosticArgument = [fileName, "'" + supportedExtensions.join("', '") + "'"]; } else if (!findSourceFile(fileName, ts.toPath(fileName, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd)) { diagnostic = ts.Diagnostics.File_0_not_found; @@ -37952,7 +38830,7 @@ var ts; diagnostic = ts.Diagnostics.File_0_not_found; diagnosticArgument = [fileName]; } - else if (!ts.forEach(ts.supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { + else if (!ts.forEach(supportedExtensions, function (extension) { return findSourceFile(fileName + extension, ts.toPath(fileName + extension, currentDirectory, getCanonicalFileName), isDefaultLib, refFile, refPos, refEnd); })) { diagnostic = ts.Diagnostics.File_0_not_found; fileName += ".ts"; diagnosticArgument = [fileName]; @@ -37977,12 +38855,12 @@ var ts; } } // Get source file from normalized fileName - function findSourceFile(fileName, normalizedAbsolutePath, isDefaultLib, refFile, refPos, refEnd) { - if (filesByName.contains(normalizedAbsolutePath)) { - var file_1 = filesByName.get(normalizedAbsolutePath); + function findSourceFile(fileName, path, isDefaultLib, refFile, refPos, refEnd) { + if (filesByName.contains(path)) { + var file_1 = filesByName.get(path); // try to check if we've already seen this file but with a different casing in path // NOTE: this only makes sense for case-insensitive file systems - if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== normalizedAbsolutePath) { + if (file_1 && options.forceConsistentCasingInFileNames && ts.getNormalizedAbsolutePath(file_1.fileName, currentDirectory) !== ts.getNormalizedAbsolutePath(fileName, currentDirectory)) { reportFileNamesDifferOnlyInCasingError(fileName, file_1.fileName, refFile, refPos, refEnd); } return file_1; @@ -37996,17 +38874,17 @@ var ts; fileProcessingDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage)); } }); - filesByName.set(normalizedAbsolutePath, file); + filesByName.set(path, file); if (file) { - file.path = normalizedAbsolutePath; + file.path = path; if (host.useCaseSensitiveFileNames()) { // for case-sensitive file systems check if we've already seen some file with similar filename ignoring case - var existingFile = filesByNameIgnoreCase.get(normalizedAbsolutePath); + var existingFile = filesByNameIgnoreCase.get(path); if (existingFile) { reportFileNamesDifferOnlyInCasingError(fileName, existingFile.fileName, refFile, refPos, refEnd); } else { - filesByNameIgnoreCase.set(normalizedAbsolutePath, file); + filesByNameIgnoreCase.set(path, file); } } skipDefaultLib = skipDefaultLib || file.hasNoDefaultLib; @@ -38028,7 +38906,7 @@ var ts; function processReferencedFiles(file, basePath) { ts.forEach(file.referencedFiles, function (ref) { var referencedFileName = resolveTripleslashReference(ref.fileName, file.fileName); - processSourceFile(referencedFileName, /* isDefaultLib */ false, file, ref.pos, ref.end); + processSourceFile(referencedFileName, /*isDefaultLib*/ false, file, ref.pos, ref.end); }); } function getCanonicalFileName(fileName) { @@ -38040,15 +38918,17 @@ var ts; file.resolvedModules = {}; var moduleNames = ts.map(file.imports, function (name) { return name.text; }); var resolutions = resolveModuleNamesWorker(moduleNames, ts.getNormalizedAbsolutePath(file.fileName, currentDirectory)); - for (var i = 0; i < file.imports.length; ++i) { + for (var i = 0; i < file.imports.length; i++) { var resolution = resolutions[i]; ts.setResolvedModule(file, moduleNames[i], resolution); if (resolution && !options.noResolve) { - var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /* isDefaultLib */ false, file, ts.skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); + var importedFile = findSourceFile(resolution.resolvedFileName, ts.toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, file, ts.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 (!ts.isExternalModule(importedFile)) { - var start_2 = ts.getTokenPosOfNode(file.imports[i], file); - fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_2, file.imports[i].end - start_2, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); + var start_5 = ts.getTokenPosOfNode(file.imports[i], file); + fileProcessingDiagnostics.add(ts.createFileDiagnostic(file, start_5, file.imports[i].end - start_5, ts.Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); } else if (importedFile.referencedFiles.length) { var firstRef = importedFile.referencedFiles[0]; @@ -38066,7 +38946,7 @@ var ts; } function computeCommonSourceDirectory(sourceFiles) { var commonPathComponents; - ts.forEach(files, function (sourceFile) { + var failed = ts.forEach(files, function (sourceFile) { // Each file contributes into common source file path if (ts.isDeclarationFile(sourceFile)) { return; @@ -38079,10 +38959,10 @@ var ts; return; } for (var i = 0, n = Math.min(commonPathComponents.length, sourcePathComponents.length); i < n; i++) { - if (commonPathComponents[i] !== sourcePathComponents[i]) { + if (getCanonicalFileName(commonPathComponents[i]) !== getCanonicalFileName(sourcePathComponents[i])) { if (i === 0) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); - return; + // Failed to find any common path component + return true; } // New common path found that is 0 -> i-1 commonPathComponents.length = i; @@ -38094,6 +38974,10 @@ var ts; commonPathComponents.length = sourcePathComponents.length; } }); + // A common path can not be found when paths span multiple drives on windows, for example + if (failed) { + return ""; + } if (!commonPathComponents) { return currentDirectory; } @@ -38103,8 +38987,8 @@ var ts; var allFilesBelongToPath = true; if (sourceFiles) { var absoluteRootDirectoryPath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(rootDirectory, currentDirectory)); - for (var _i = 0, sourceFiles_1 = sourceFiles; _i < sourceFiles_1.length; _i++) { - var sourceFile = sourceFiles_1[_i]; + for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { + var sourceFile = sourceFiles_2[_i]; if (!ts.isDeclarationFile(sourceFile)) { var absoluteSourceFilePath = host.getCanonicalFileName(ts.getNormalizedAbsolutePath(sourceFile.fileName, currentDirectory)); if (absoluteSourceFilePath.indexOf(absoluteRootDirectoryPath) !== 0) { @@ -38138,14 +39022,14 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "mapRoot", "inlineSourceMap")); } - if (options.sourceRoot) { - programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSourceMap")); - } } if (options.inlineSources) { if (!options.sourceMap && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_inlineSources_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided)); } + if (options.sourceRoot) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "sourceRoot", "inlineSources")); + } } if (options.out && options.outFile) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "out", "outFile")); @@ -38155,10 +39039,9 @@ var ts; if (options.mapRoot) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "mapRoot", "sourceMap")); } - if (options.sourceRoot) { + if (options.sourceRoot && !options.inlineSourceMap) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "sourceRoot", "sourceMap")); } - return; } var languageVersion = options.target || 0 /* ES3 */; var outFile = options.outFile || options.out; @@ -38176,7 +39059,7 @@ var ts; else if (firstExternalModuleSourceFile && languageVersion < 2 /* ES6 */ && !options.module) { // We cannot use createDiagnosticFromNode because nodes do not have parents yet var span = ts.getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator); - programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided)); + programDiagnostics.add(ts.createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, ts.Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file)); } // Cannot specify module gen target of es6 when below es6 if (options.module === 5 /* ES6 */ && languageVersion < 2 /* ES6 */) { @@ -38191,19 +39074,11 @@ var ts; if (options.outDir || options.sourceRoot || options.mapRoot) { - if (options.rootDir && checkSourceFilesBelongToPath(files, options.rootDir)) { - // If a rootDir is specified and is valid use it as the commonSourceDirectory - commonSourceDirectory = ts.getNormalizedAbsolutePath(options.rootDir, currentDirectory); - } - else { - // Compute the commonSourceDirectory from the input files - commonSourceDirectory = computeCommonSourceDirectory(files); - } - if (commonSourceDirectory && commonSourceDirectory[commonSourceDirectory.length - 1] !== ts.directorySeparator) { - // Make sure directory path ends with directory separator so this string can directly - // used to replace with "" to get the relative path of the source file and the relative path doesn't - // start with / making it rooted path - commonSourceDirectory += ts.directorySeparator; + // Precalculate and cache the common source directory + var dir = getCommonSourceDirectory(); + // If we failed to find a good common directory, but outDir is specified and at least one of our files is on a windows drive/URL/other resource, add a failure + if (options.outDir && dir === "" && ts.forEach(files, function (file) { return ts.getRootLength(file.fileName) > 1; })) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files)); } } if (options.noEmit) { @@ -38220,10 +39095,47 @@ var ts; programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "noEmit", "declaration")); } } + else if (options.allowJs && options.declaration) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_with_option_1, "allowJs", "declaration")); + } if (options.emitDecoratorMetadata && !options.experimentalDecorators) { programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1, "emitDecoratorMetadata", "experimentalDecorators")); } + if (options.reactNamespace && !ts.isIdentifier(options.reactNamespace, languageVersion)) { + programDiagnostics.add(ts.createCompilerDiagnostic(ts.Diagnostics.Invalide_value_for_reactNamespace_0_is_not_a_valid_identifier, options.reactNamespace)); + } + // If the emit is enabled make sure that every output file is unique and not overwriting any of the input files + if (!options.noEmit) { + var emitHost = getEmitHost(); + var emitFilesSeen = ts.createFileMap(!host.useCaseSensitiveFileNames() ? function (key) { return key.toLocaleLowerCase(); } : undefined); + ts.forEachExpectedEmitFile(emitHost, function (emitFileNames, sourceFiles, isBundledEmit) { + verifyEmitFilePath(emitFileNames.jsFilePath, emitFilesSeen); + verifyEmitFilePath(emitFileNames.declarationFilePath, emitFilesSeen); + }); + } + // Verify that all the emit files are unique and don't overwrite input files + function verifyEmitFilePath(emitFileName, emitFilesSeen) { + if (emitFileName) { + var emitFilePath = ts.toPath(emitFileName, currentDirectory, getCanonicalFileName); + // Report error if the output overwrites input file + if (filesByName.contains(emitFilePath)) { + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file); + } + // Report error if multiple files write into same file + if (emitFilesSeen.contains(emitFilePath)) { + // Already seen the same emit file - report error + createEmitBlockingDiagnostics(emitFileName, emitFilePath, ts.Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files); + } + else { + emitFilesSeen.set(emitFilePath, true); + } + } + } + } + function createEmitBlockingDiagnostics(emitFileName, emitFilePath, message) { + hasEmitBlockingDiagnostics.set(ts.toPath(emitFileName, currentDirectory, getCanonicalFileName), true); + programDiagnostics.add(ts.createCompilerDiagnostic(message, emitFileName)); } } ts.createProgram = createProgram; @@ -38284,6 +39196,11 @@ var ts; description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_or_react, error: ts.Diagnostics.Argument_for_jsx_must_be_preserve_or_react }, + { + name: "reactNamespace", + type: "string", + description: ts.Diagnostics.Specifies_the_object_invoked_for_createElement_and_spread_when_targeting_react_JSX_emit + }, { name: "listFiles", type: "boolean" @@ -38509,6 +39426,16 @@ var ts; name: "forceConsistentCasingInFileNames", type: "boolean", description: ts.Diagnostics.Disallow_inconsistently_cased_references_to_the_same_file + }, + { + name: "allowSyntheticDefaultImports", + type: "boolean", + description: ts.Diagnostics.Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking + }, + { + name: "allowJs", + type: "boolean", + description: ts.Diagnostics.Allow_javascript_files_to_be_compiled } ]; var optionNameMapCache; @@ -38543,7 +39470,8 @@ var ts; function parseStrings(args) { var i = 0; while (i < args.length) { - var s = args[i++]; + var s = args[i]; + i++; if (s.charCodeAt(0) === 64 /* at */) { parseResponseFile(s.slice(1)); } @@ -38561,20 +39489,23 @@ var ts; } switch (opt.type) { case "number": - options[opt.name] = parseInt(args[i++]); + options[opt.name] = parseInt(args[i]); + i++; break; case "boolean": options[opt.name] = true; break; case "string": - options[opt.name] = args[i++] || ""; + options[opt.name] = args[i] || ""; + i++; break; // If not a primitive, the possible types are specified in what is effectively a map of options. default: - var map_2 = opt.type; - var key = (args[i++] || "").toLowerCase(); - if (ts.hasProperty(map_2, key)) { - options[opt.name] = map_2[key]; + var map_1 = opt.type; + var key = (args[i] || "").toLowerCase(); + i++; + if (ts.hasProperty(map_1, key)) { + options[opt.name] = map_1[key]; } else { errors.push(ts.createCompilerDiagnostic(opt.error)); @@ -38687,8 +39618,10 @@ var ts; * @param basePath A root directory to resolve relative path entries in the config * file to. e.g. outDir */ - function parseJsonConfigFileContent(json, host, basePath) { - var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), options = _a.options, errors = _a.errors; + function parseJsonConfigFileContent(json, host, basePath, existingOptions) { + if (existingOptions === void 0) { existingOptions = {}; } + var _a = convertCompilerOptionsFromJson(json["compilerOptions"], basePath), optionsFromJsonConfigFile = _a.options, errors = _a.errors; + var options = ts.extend(existingOptions, optionsFromJsonConfigFile); return { options: options, fileNames: getFileNames(), @@ -38705,23 +39638,31 @@ var ts; } } else { + var filesSeen = {}; var exclude = json["exclude"] instanceof Array ? ts.map(json["exclude"], ts.normalizeSlashes) : undefined; - var sysFiles = host.readDirectory(basePath, ".ts", exclude).concat(host.readDirectory(basePath, ".tsx", exclude)); - for (var i = 0; i < sysFiles.length; i++) { - var name_31 = sysFiles[i]; - if (ts.fileExtensionIs(name_31, ".d.ts")) { - var baseName = name_31.substr(0, name_31.length - ".d.ts".length); - if (!ts.contains(sysFiles, baseName + ".tsx") && !ts.contains(sysFiles, baseName + ".ts")) { - fileNames.push(name_31); + var supportedExtensions = ts.getSupportedExtensions(options); + ts.Debug.assert(ts.indexOf(supportedExtensions, ".ts") < ts.indexOf(supportedExtensions, ".d.ts"), "Changed priority of extensions to pick"); + // Get files of supported extensions in their order of resolution + for (var _i = 0, supportedExtensions_1 = supportedExtensions; _i < supportedExtensions_1.length; _i++) { + var extension = supportedExtensions_1[_i]; + var filesInDirWithExtension = host.readDirectory(basePath, extension, exclude); + for (var _a = 0, filesInDirWithExtension_1 = filesInDirWithExtension; _a < filesInDirWithExtension_1.length; _a++) { + var fileName = filesInDirWithExtension_1[_a]; + // .ts extension would read the .d.ts extension files too but since .d.ts is lower priority extension, + // lets pick them when its turn comes up + if (extension === ".ts" && ts.fileExtensionIs(fileName, ".d.ts")) { + continue; } - } - else if (ts.fileExtensionIs(name_31, ".ts")) { - if (!ts.contains(sysFiles, name_31 + "x")) { - fileNames.push(name_31); + // If this is one of the output extension (which would be .d.ts and .js if we are allowing compilation of js files) + // do not include this file if we included .ts or .tsx file with same base name as it could be output of the earlier compilation + if (extension === ".d.ts" || (options.allowJs && ts.contains(ts.supportedJavascriptExtensions, extension))) { + var baseName = fileName.substr(0, fileName.length - extension.length); + if (ts.hasProperty(filesSeen, baseName + ".ts") || ts.hasProperty(filesSeen, baseName + ".tsx")) { + continue; + } } - } - else { - fileNames.push(name_31); + filesSeen[fileName] = true; + fileNames.push(fileName); } } } @@ -38845,7 +39786,7 @@ var ts; } } function autoCollapse(node) { - return ts.isFunctionBlock(node) && node.parent.kind !== 174 /* ArrowFunction */; + return ts.isFunctionBlock(node) && node.parent.kind !== 176 /* ArrowFunction */; } var depth = 0; var maxDepth = 20; @@ -38857,7 +39798,7 @@ var ts; addOutliningForLeadingCommentsForNode(n); } switch (n.kind) { - case 192 /* Block */: + case 194 /* Block */: if (!ts.isFunctionBlock(n)) { var parent_7 = n.parent; var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); @@ -38865,18 +39806,18 @@ var ts; // Check if the block is standalone, or 'attached' to some parent statement. // If the latter, we want to collaps the block, but consider its hint span // to be the entire span of the parent. - if (parent_7.kind === 197 /* DoStatement */ || - parent_7.kind === 200 /* ForInStatement */ || - parent_7.kind === 201 /* ForOfStatement */ || - parent_7.kind === 199 /* ForStatement */ || - parent_7.kind === 196 /* IfStatement */ || - parent_7.kind === 198 /* WhileStatement */ || - parent_7.kind === 205 /* WithStatement */ || - parent_7.kind === 244 /* CatchClause */) { + if (parent_7.kind === 199 /* DoStatement */ || + parent_7.kind === 202 /* ForInStatement */ || + parent_7.kind === 203 /* ForOfStatement */ || + parent_7.kind === 201 /* ForStatement */ || + parent_7.kind === 198 /* IfStatement */ || + parent_7.kind === 200 /* WhileStatement */ || + parent_7.kind === 207 /* WithStatement */ || + parent_7.kind === 246 /* CatchClause */) { addOutliningSpan(parent_7, openBrace, closeBrace, autoCollapse(n)); break; } - if (parent_7.kind === 209 /* TryStatement */) { + if (parent_7.kind === 211 /* TryStatement */) { // Could be the try-block, or the finally-block. var tryStatement = parent_7; if (tryStatement.tryBlock === n) { @@ -38903,23 +39844,23 @@ var ts; break; } // Fallthrough. - case 219 /* ModuleBlock */: { + case 221 /* ModuleBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n.parent, openBrace, closeBrace, autoCollapse(n)); break; } - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 165 /* ObjectLiteralExpression */: - case 220 /* CaseBlock */: { + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 167 /* ObjectLiteralExpression */: + case 222 /* CaseBlock */: { var openBrace = ts.findChildOfKind(n, 15 /* OpenBraceToken */, sourceFile); var closeBrace = ts.findChildOfKind(n, 16 /* CloseBraceToken */, sourceFile); addOutliningSpan(n, openBrace, closeBrace, autoCollapse(n)); break; } - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: var openBracket = ts.findChildOfKind(n, 19 /* OpenBracketToken */, sourceFile); var closeBracket = ts.findChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); addOutliningSpan(n, openBracket, closeBracket, autoCollapse(n)); @@ -38949,12 +39890,12 @@ var ts; ts.forEach(program.getSourceFiles(), function (sourceFile) { cancellationToken.throwIfCancellationRequested(); var nameToDeclarations = sourceFile.getNamedDeclarations(); - for (var name_32 in nameToDeclarations) { - var declarations = ts.getProperty(nameToDeclarations, name_32); + for (var name_28 in nameToDeclarations) { + var declarations = ts.getProperty(nameToDeclarations, name_28); if (declarations) { // First do a quick check to see if the name of the declaration matches the // last portion of the (possibly) dotted name they're searching for. - var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_32); + var matches = patternMatcher.getMatchesForLastSegmentOfPattern(name_28); if (!matches) { continue; } @@ -38967,14 +39908,14 @@ var ts; if (!containers) { return undefined; } - matches = patternMatcher.getMatches(containers, name_32); + matches = patternMatcher.getMatches(containers, name_28); if (!matches) { continue; } } var fileName = sourceFile.fileName; var matchKind = bestMatchKind(matches); - rawItems.push({ name: name_32, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); + rawItems.push({ name: name_28, fileName: fileName, matchKind: matchKind, isCaseSensitive: allMatchesAreCaseSensitive(matches), declaration: declaration }); } } } @@ -39013,7 +39954,7 @@ var ts; containers.unshift(text); } else if (declaration.name.kind === 136 /* ComputedPropertyName */) { - return tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion:*/ true); + return tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ true); } else { // Don't know how to add this. @@ -39033,12 +39974,12 @@ var ts; } return true; } - if (expression.kind === 166 /* PropertyAccessExpression */) { + if (expression.kind === 168 /* PropertyAccessExpression */) { var propertyAccess = expression; if (includeLastPortion) { containers.unshift(propertyAccess.name.text); } - return tryAddComputedPropertyName(propertyAccess.expression, containers, /*includeLastPortion:*/ true); + return tryAddComputedPropertyName(propertyAccess.expression, containers, /*includeLastPortion*/ true); } return false; } @@ -39047,7 +39988,7 @@ var ts; // First, if we started with a computed property name, then add all but the last // portion into the container array. if (declaration.name.kind === 136 /* ComputedPropertyName */) { - if (!tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion:*/ false)) { + if (!tryAddComputedPropertyName(declaration.name.expression, containers, /*includeLastPortion*/ false)) { return undefined; } } @@ -39108,7 +40049,7 @@ var ts; (function (ts) { var NavigationBar; (function (NavigationBar) { - function getNavigationBarItems(sourceFile) { + function getNavigationBarItems(sourceFile, compilerOptions) { // If the source file has any child items, then it included in the tree // and takes lexical ownership of all other top-level items. var hasGlobalNode = false; @@ -39120,17 +40061,17 @@ var ts; var current = node.parent; while (current) { switch (current.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // If we have a module declared as A.B.C, it is more "intuitive" // to say it only has a single layer of depth do { current = current.parent; - } while (current.kind === 218 /* ModuleDeclaration */); + } while (current.kind === 220 /* ModuleDeclaration */); // fall through - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: indent++; } current = current.parent; @@ -39141,21 +40082,21 @@ var ts; var childNodes = []; function visit(node) { switch (node.kind) { - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: ts.forEach(node.declarationList.declarations, visit); break; - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: ts.forEach(node.elements, visit); break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -39167,7 +40108,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 226 /* NamespaceImport */) { childNodes.push(importClause.namedBindings); } else { @@ -39176,21 +40117,21 @@ var ts; } } break; - case 163 /* BindingElement */: - case 211 /* VariableDeclaration */: + case 165 /* BindingElement */: + case 213 /* VariableDeclaration */: if (ts.isBindingPattern(node.name)) { visit(node.name); break; } // Fall through - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: - case 218 /* ModuleDeclaration */: - case 213 /* FunctionDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 226 /* ImportSpecifier */: - case 230 /* ExportSpecifier */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: + case 220 /* ModuleDeclaration */: + case 215 /* FunctionDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 228 /* ImportSpecifier */: + case 232 /* ExportSpecifier */: childNodes.push(node); break; } @@ -39238,17 +40179,17 @@ var ts; for (var _i = 0, nodes_4 = nodes; _i < nodes_4.length; _i++) { var node = nodes_4[_i]; switch (node.kind) { - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 217 /* InterfaceDeclaration */: topLevelNodes.push(node); break; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: var moduleDeclaration = node; topLevelNodes.push(node); addTopLevelNodes(getInnermostModule(moduleDeclaration).body.statements, topLevelNodes); break; - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: var functionDeclaration = node; if (isTopLevelFunctionDeclaration(functionDeclaration)) { topLevelNodes.push(node); @@ -39259,12 +40200,12 @@ var ts; } } function isTopLevelFunctionDeclaration(functionDeclaration) { - if (functionDeclaration.kind === 213 /* FunctionDeclaration */) { + if (functionDeclaration.kind === 215 /* FunctionDeclaration */) { // A function declaration is 'top level' if it contains any function declarations // within it. - if (functionDeclaration.body && functionDeclaration.body.kind === 192 /* Block */) { + if (functionDeclaration.body && functionDeclaration.body.kind === 194 /* Block */) { // Proper function declarations can only have identifier names - if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 213 /* FunctionDeclaration */ && !isEmpty(s.name.text); })) { + if (ts.forEach(functionDeclaration.body.statements, function (s) { return s.kind === 215 /* FunctionDeclaration */ && !isEmpty(s.name.text); })) { return true; } // Or if it is not parented by another function. i.e all functions @@ -39341,7 +40282,7 @@ var ts; return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberSetAccessorElement); case 149 /* IndexSignature */: return createItem(node, "[]", ts.ScriptElementKind.indexSignatureElement); - case 247 /* EnumMember */: + case 249 /* EnumMember */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); case 147 /* CallSignature */: return createItem(node, "()", ts.ScriptElementKind.callSignatureElement); @@ -39350,18 +40291,18 @@ var ts; case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.memberVariableElement); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.functionElement); - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: var variableDeclarationNode; - var name_33; - if (node.kind === 163 /* BindingElement */) { - name_33 = node.name; + var name_29; + if (node.kind === 165 /* BindingElement */) { + name_29 = node.name; variableDeclarationNode = node; // binding elements are added only for variable declarations // bubble up to the containing variable declaration - while (variableDeclarationNode && variableDeclarationNode.kind !== 211 /* VariableDeclaration */) { + while (variableDeclarationNode && variableDeclarationNode.kind !== 213 /* VariableDeclaration */) { variableDeclarationNode = variableDeclarationNode.parent; } ts.Debug.assert(variableDeclarationNode !== undefined); @@ -39369,24 +40310,24 @@ var ts; else { ts.Debug.assert(!ts.isBindingPattern(node.name)); variableDeclarationNode = node; - name_33 = node.name; + name_29 = node.name; } if (ts.isConst(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.constElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.constElement); } else if (ts.isLet(variableDeclarationNode)) { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.letElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.letElement); } else { - return createItem(node, getTextOfNode(name_33), ts.ScriptElementKind.variableElement); + return createItem(node, getTextOfNode(name_29), ts.ScriptElementKind.variableElement); } case 144 /* Constructor */: return createItem(node, "constructor", ts.ScriptElementKind.constructorImplementationElement); - case 230 /* ExportSpecifier */: - case 226 /* ImportSpecifier */: - case 221 /* ImportEqualsDeclaration */: - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: + case 232 /* ExportSpecifier */: + case 228 /* ImportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: return createItem(node, getTextOfNode(node.name), ts.ScriptElementKind.alias); } return undefined; @@ -39416,17 +40357,17 @@ var ts; } function createTopLevelItem(node) { switch (node.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: return createSourceFileItem(node); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: return createClassItem(node); - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: return createEnumItem(node); - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return createIterfaceItem(node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return createModuleItem(node); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: return createFunctionItem(node); } return undefined; @@ -39438,7 +40379,7 @@ var ts; // Otherwise, we need to aggregate each identifier to build up the qualified name. var result = []; result.push(moduleDeclaration.name.text); - while (moduleDeclaration.body && moduleDeclaration.body.kind === 218 /* ModuleDeclaration */) { + while (moduleDeclaration.body && moduleDeclaration.body.kind === 220 /* ModuleDeclaration */) { moduleDeclaration = moduleDeclaration.body; result.push(moduleDeclaration.name.text); } @@ -39450,7 +40391,7 @@ var ts; return getNavigationBarItem(moduleName, ts.ScriptElementKind.moduleElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } function createFunctionItem(node) { - if (node.body && node.body.kind === 192 /* Block */) { + if (node.body && node.body.kind === 194 /* Block */) { var childItems = getItemsWorker(sortNodes(node.body.statements), createChildItem); return getNavigationBarItem(!node.name ? "default" : node.name.text, ts.ScriptElementKind.functionElement, ts.getNodeModifiers(node), [getNodeSpan(node)], childItems, getIndent(node)); } @@ -39504,13 +40445,13 @@ var ts; return ts.filter(node.members, function (member) { return !ts.hasDynamicName(member); }); } function getInnermostModule(node) { - while (node.body.kind === 218 /* ModuleDeclaration */) { + while (node.body.kind === 220 /* ModuleDeclaration */) { node = node.body; } return node; } function getNodeSpan(node) { - return node.kind === 248 /* SourceFile */ + return node.kind === 250 /* SourceFile */ ? ts.createTextSpanFromBounds(node.getFullStart(), node.getEnd()) : ts.createTextSpanFromBounds(node.getStart(), node.getEnd()); } @@ -39542,12 +40483,11 @@ var ts; } function createPatternMatcher(pattern) { // We'll often see the same candidate string many times when searching (For example, when - // we see the name of a module that is used everywhere, or the name of an overload). As - // such, we cache the information we compute about the candidate for the life of this + // we see the name of a module that is used everywhere, or the name of an overload). As + // such, we cache the information we compute about the candidate for the life of this // pattern matcher so we don't have to compute it multiple times. var stringToWordSpans = {}; pattern = pattern.trim(); - var fullPatternSegment = createSegment(pattern); var dotSeparatedSegments = pattern.split(".").map(function (p) { return createSegment(p.trim()); }); var invalidPattern = dotSeparatedSegments.length === 0 || ts.forEach(dotSeparatedSegments, segmentIsInvalid); return { @@ -39587,7 +40527,7 @@ var ts; // So far so good. Now break up the container for the candidate and check if all // the dotted parts match up correctly. var totalMatch = candidateMatch; - for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i--, j--) { + for (var i = dotSeparatedSegments.length - 2, j = candidateContainers.length - 1; i >= 0; i -= 1, j -= 1) { var segment = dotSeparatedSegments[i]; var containerName = candidateContainers[j]; var containerMatch = matchSegment(containerName, segment); @@ -39626,7 +40566,7 @@ var ts; if (index > 0) { // c) If the part is entirely lowercase, then check if it is contained anywhere in the // candidate in a case insensitive manner. If so, return that there was a substring - // match. + // match. // // Note: We only have a substring match if the lowercase part is prefix match of some // word part. That way we don't match something like 'Class' when the user types 'a'. @@ -39666,8 +40606,8 @@ var ts; if (isLowercase) { // f) Is the pattern a substring of the candidate starting on one of the candidate's word boundaries? // We could check every character boundary start of the candidate for the pattern. However, that's - // an m * n operation in the wost case. Instead, find the first instance of the pattern - // substring, and see if it starts on a capital letter. It seems unlikely that the user will try to + // an m * n operation in the wost case. Instead, find the first instance of the pattern + // substring, and see if it starts on a capital letter. It seems unlikely that the user will try to // filter the list based on a substring that starts on a capital letter and also with a lowercase one. // (Pattern: fogbar, Candidate: quuxfogbarFogBar). if (chunk.text.length < candidate.length) { @@ -39719,7 +40659,7 @@ var ts; // // c) If the word is entirely lowercase, then check if it is contained anywhere in the // candidate in a case insensitive manner. If so, return that there was a substring - // match. + // match. // // Note: We only have a substring match if the lowercase part is prefix match of // some word part. That way we don't match something like 'Class' when the user @@ -39733,7 +40673,7 @@ var ts; // e) If the word was not entirely lowercase, then attempt a camel cased match as // well. // - // f) The word is all lower case. Is it a case insensitive substring of the candidate starting + // f) The word is all lower case. Is it a case insensitive substring of the candidate starting // on a part boundary of the candidate? // // Only if all words have some sort of match is the pattern considered matched. @@ -39783,7 +40723,7 @@ var ts; // Note: we may have more pattern parts than candidate parts. This is because multiple // pattern parts may match a candidate part. For example "SiUI" against "SimpleUI". // We'll have 3 pattern parts Si/U/I against two candidate parts Simple/UI. However, U - // and I will both match in UI. + // and I will both match in UI. var currentCandidate = 0; var currentChunkSpan = 0; var firstMatch = undefined; @@ -39812,13 +40752,13 @@ var ts; // Consider the case of matching SiUI against SimpleUIElement. The candidate parts // will be Simple/UI/Element, and the pattern parts will be Si/U/I. We'll match 'Si' // against 'Simple' first. Then we'll match 'U' against 'UI'. However, we want to - // still keep matching pattern parts against that candidate part. + // still keep matching pattern parts against that candidate part. for (; currentChunkSpan < chunkCharacterSpans.length; currentChunkSpan++) { var chunkCharacterSpan = chunkCharacterSpans[currentChunkSpan]; if (gotOneMatchThisCandidate) { // We've already gotten one pattern part match in this candidate. We will // only continue trying to consumer pattern parts if the last part and this - // part are both upper case. + // part are both upper case. if (!isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan - 1].start)) || !isUpperCaseLetter(chunk.text.charCodeAt(chunkCharacterSpans[currentChunkSpan].start))) { break; @@ -39848,42 +40788,6 @@ var ts; } } ts.createPatternMatcher = createPatternMatcher; - // Helper function to compare two matches to determine which is better. Matches are first - // ordered by kind (so all prefix matches always beat all substring matches). Then, if the - // match is a camel case match, the relative weights of the match are used to determine - // which is better (with a greater weight being better). Then if the match is of the same - // type, then a case sensitive match is considered better than an insensitive one. - function patternMatchCompareTo(match1, match2) { - return compareType(match1, match2) || - compareCamelCase(match1, match2) || - compareCase(match1, match2) || - comparePunctuation(match1, match2); - } - function comparePunctuation(result1, result2) { - // Consider a match to be better if it was successful without stripping punctuation - // versus a match that had to strip punctuation to succeed. - if (result1.punctuationStripped !== result2.punctuationStripped) { - return result1.punctuationStripped ? 1 : -1; - } - return 0; - } - function compareCase(result1, result2) { - if (result1.isCaseSensitive !== result2.isCaseSensitive) { - return result1.isCaseSensitive ? -1 : 1; - } - return 0; - } - function compareType(result1, result2) { - return result1.kind - result2.kind; - } - function compareCamelCase(result1, result2) { - if (result1.kind === PatternMatchKind.camelCase && result2.kind === PatternMatchKind.camelCase) { - // Swap the values here. If result1 has a higher weight, then we want it to come - // first. - return result2.camelCaseWeight - result1.camelCaseWeight; - } - return 0; - } function createSegment(text) { return { totalTextChunk: createTextChunk(text), @@ -39902,7 +40806,7 @@ var ts; if (ch < 127 /* maxAsciiCharacter */ || !ts.isUnicodeIdentifierStart(ch, 2 /* Latest */)) { return false; } - // TODO: find a way to determine this for any unicode characters in a + // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. var str = String.fromCharCode(ch); return str === str.toUpperCase(); @@ -39915,19 +40819,11 @@ var ts; if (ch < 127 /* maxAsciiCharacter */ || !ts.isUnicodeIdentifierStart(ch, 2 /* Latest */)) { return false; } - // TODO: find a way to determine this for any unicode characters in a + // TODO: find a way to determine this for any unicode characters in a // non-allocating manner. var str = String.fromCharCode(ch); return str === str.toLowerCase(); } - function containsUpperCaseLetter(string) { - for (var i = 0, n = string.length; i < n; i++) { - if (isUpperCaseLetter(string.charCodeAt(i))) { - return true; - } - } - return false; - } function startsWith(string, search) { for (var i = 0, n = search.length; i < n; i++) { if (string.charCodeAt(i) !== search.charCodeAt(i)) { @@ -39964,7 +40860,7 @@ var ts; if (ch < 127 /* maxAsciiCharacter */) { return ch; } - // TODO: find a way to compute this for any unicode characters in a + // TODO: find a way to compute this for any unicode characters in a // non-allocating manner. return String.fromCharCode(ch).toLowerCase().charCodeAt(0); } @@ -39982,9 +40878,10 @@ var ts; for (var i = 0; i < pattern.length; i++) { var ch = pattern.charCodeAt(i); if (isWordChar(ch)) { - if (wordLength++ === 0) { + if (wordLength === 0) { wordStart = i; } + wordLength++; } else { if (wordLength > 0) { @@ -40115,7 +41012,7 @@ var ts; var currentIsUpper = isUpperCaseLetter(identifier.charCodeAt(index)); // See if the casing indicates we're starting a new word. Note: if we're breaking on // words, then just seeing an upper case character isn't enough. Instead, it has to - // be uppercase and the previous character can't be uppercase. + // be uppercase and the previous character can't be uppercase. // // For example, breaking "AddMetadata" on words would make: Add Metadata // @@ -40305,7 +41202,7 @@ var ts; } return createSignatureHelpItems(candidates, resolvedSignature, argumentInfo); function createJavaScriptSignatureHelpItems(argumentInfo) { - if (argumentInfo.invocation.kind !== 168 /* CallExpression */) { + if (argumentInfo.invocation.kind !== 170 /* CallExpression */) { return undefined; } // See if we can find some symbol with the call expression name that has call signatures. @@ -40313,7 +41210,7 @@ var ts; var expression = callExpression.expression; var name = expression.kind === 69 /* Identifier */ ? expression - : expression.kind === 166 /* PropertyAccessExpression */ + : expression.kind === 168 /* PropertyAccessExpression */ ? expression.name : undefined; if (!name || !name.text) { @@ -40346,7 +41243,7 @@ var ts; * in the argument of an invocation; returns undefined otherwise. */ function getImmediatelyContainingArgumentInfo(node) { - if (node.parent.kind === 168 /* CallExpression */ || node.parent.kind === 169 /* NewExpression */) { + if (node.parent.kind === 170 /* CallExpression */ || node.parent.kind === 171 /* NewExpression */) { var callExpression = node.parent; // There are 3 cases to handle: // 1. The token introduces a list, and should begin a sig help session @@ -40399,25 +41296,25 @@ var ts; }; } } - else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 170 /* TaggedTemplateExpression */) { + else if (node.kind === 11 /* NoSubstitutionTemplateLiteral */ && node.parent.kind === 172 /* TaggedTemplateExpression */) { // Check if we're actually inside the template; // otherwise we'll fall out and return undefined. if (ts.isInsideTemplateLiteral(node, position)) { return getArgumentListInfoForTemplate(node.parent, /*argumentIndex*/ 0); } } - else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 170 /* TaggedTemplateExpression */) { + else if (node.kind === 12 /* TemplateHead */ && node.parent.parent.kind === 172 /* TaggedTemplateExpression */) { var templateExpression = node.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 183 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 185 /* TemplateExpression */); var argumentIndex = ts.isInsideTemplateLiteral(node, position) ? 0 : 1; return getArgumentListInfoForTemplate(tagExpression, argumentIndex); } - else if (node.parent.kind === 190 /* TemplateSpan */ && node.parent.parent.parent.kind === 170 /* TaggedTemplateExpression */) { + else if (node.parent.kind === 192 /* TemplateSpan */ && node.parent.parent.parent.kind === 172 /* TaggedTemplateExpression */) { var templateSpan = node.parent; var templateExpression = templateSpan.parent; var tagExpression = templateExpression.parent; - ts.Debug.assert(templateExpression.kind === 183 /* TemplateExpression */); + ts.Debug.assert(templateExpression.kind === 185 /* TemplateExpression */); // If we're just after a template tail, don't show signature help. if (node.kind === 14 /* TemplateTail */ && !ts.isInsideTemplateLiteral(node, position)) { return undefined; @@ -40535,7 +41432,7 @@ var ts; // // This is because a Missing node has no width. However, what we actually want is to include trivia // leading up to the next token in case the user is about to type in a TemplateMiddle or TemplateTail. - if (template.kind === 183 /* TemplateExpression */) { + if (template.kind === 185 /* TemplateExpression */) { var lastSpan = ts.lastOrUndefined(template.templateSpans); if (lastSpan.literal.getFullWidth() === 0) { applicableSpanEnd = ts.skipTrivia(sourceFile.text, applicableSpanEnd, /*stopAfterLineBreak*/ false); @@ -40544,7 +41441,7 @@ var ts; return ts.createTextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); } function getContainingArgumentInfo(node) { - for (var n = node; n.kind !== 248 /* SourceFile */; n = n.parent) { + for (var n = node; n.kind !== 250 /* SourceFile */; n = n.parent) { if (ts.isFunctionBlock(n)) { return undefined; } @@ -40744,25 +41641,25 @@ var ts; return false; } switch (n.kind) { - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 165 /* ObjectLiteralExpression */: - case 161 /* ObjectBindingPattern */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 167 /* ObjectLiteralExpression */: + case 163 /* ObjectBindingPattern */: case 155 /* TypeLiteral */: - case 192 /* Block */: - case 219 /* ModuleBlock */: - case 220 /* CaseBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: + case 222 /* CaseBlock */: return nodeEndsWith(n, 16 /* CloseBraceToken */, sourceFile); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return isCompletedNode(n.block, sourceFile); - case 169 /* NewExpression */: + case 171 /* NewExpression */: if (!n.arguments) { return true; } // fall through - case 168 /* CallExpression */: - case 172 /* ParenthesizedExpression */: + case 170 /* CallExpression */: + case 174 /* ParenthesizedExpression */: case 160 /* ParenthesizedType */: return nodeEndsWith(n, 18 /* CloseParenToken */, sourceFile); case 152 /* FunctionType */: @@ -40771,13 +41668,13 @@ var ts; case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 148 /* ConstructSignature */: case 147 /* CallSignature */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: if (n.body) { return isCompletedNode(n.body, sourceFile); } @@ -40787,19 +41684,19 @@ var ts; // Even though type parameters can be unclosed, we can get away with // having at least a closing paren. return hasChildOfKind(n, 18 /* CloseParenToken */, sourceFile); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return n.body && isCompletedNode(n.body, sourceFile); - case 196 /* IfStatement */: + case 198 /* IfStatement */: if (n.elseStatement) { return isCompletedNode(n.elseStatement, sourceFile); } return isCompletedNode(n.thenStatement, sourceFile); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: return isCompletedNode(n.expression, sourceFile) || hasChildOfKind(n, 23 /* SemicolonToken */); - case 164 /* ArrayLiteralExpression */: - case 162 /* ArrayBindingPattern */: - case 167 /* ElementAccessExpression */: + case 166 /* ArrayLiteralExpression */: + case 164 /* ArrayBindingPattern */: + case 169 /* ElementAccessExpression */: case 136 /* ComputedPropertyName */: case 157 /* TupleType */: return nodeEndsWith(n, 20 /* CloseBracketToken */, sourceFile); @@ -40808,16 +41705,16 @@ var ts; return isCompletedNode(n.type, sourceFile); } return hasChildOfKind(n, 20 /* CloseBracketToken */, sourceFile); - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: // there is no such thing as terminator token for CaseClause/DefaultClause so for simplicitly always consider them non-completed return false; - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 198 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 200 /* WhileStatement */: return isCompletedNode(n.statement, sourceFile); - case 197 /* DoStatement */: + case 199 /* DoStatement */: // rough approximation: if DoStatement has While keyword - then if node is completed is checking the presence of ')'; var hasWhileKeyword = findChildOfKind(n, 104 /* WhileKeyword */, sourceFile); if (hasWhileKeyword) { @@ -40826,25 +41723,25 @@ var ts; return isCompletedNode(n.statement, sourceFile); case 154 /* TypeQuery */: return isCompletedNode(n.exprName, sourceFile); - case 176 /* TypeOfExpression */: - case 175 /* DeleteExpression */: - case 177 /* VoidExpression */: - case 184 /* YieldExpression */: - case 185 /* SpreadElementExpression */: + case 178 /* TypeOfExpression */: + case 177 /* DeleteExpression */: + case 179 /* VoidExpression */: + case 186 /* YieldExpression */: + case 187 /* SpreadElementExpression */: var unaryWordExpression = n; return isCompletedNode(unaryWordExpression.expression, sourceFile); - case 170 /* TaggedTemplateExpression */: + case 172 /* TaggedTemplateExpression */: return isCompletedNode(n.template, sourceFile); - case 183 /* TemplateExpression */: + case 185 /* TemplateExpression */: var lastSpan = ts.lastOrUndefined(n.templateSpans); return isCompletedNode(lastSpan, sourceFile); - case 190 /* TemplateSpan */: + case 192 /* TemplateSpan */: return ts.nodeIsPresent(n.literal); - case 179 /* PrefixUnaryExpression */: + case 181 /* PrefixUnaryExpression */: return isCompletedNode(n.operand, sourceFile); - case 181 /* BinaryExpression */: + case 183 /* BinaryExpression */: return isCompletedNode(n.right, sourceFile); - case 182 /* ConditionalExpression */: + case 184 /* ConditionalExpression */: return isCompletedNode(n.whenFalse, sourceFile); default: return true; @@ -40900,7 +41797,7 @@ var ts; // for the position of the relevant node (or comma). var syntaxList = ts.forEach(node.parent.getChildren(), function (c) { // find syntax list that covers the span of the node - if (c.kind === 271 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { + if (c.kind === 273 /* SyntaxList */ && c.pos <= node.pos && c.end >= node.end) { return c; } }); @@ -41006,7 +41903,7 @@ var ts; function findPrecedingToken(position, sourceFile, startNode) { return find(startNode || sourceFile); function findRightmostToken(n) { - if (isToken(n) || n.kind === 236 /* JsxText */) { + if (isToken(n) || n.kind === 238 /* JsxText */) { return n; } var children = n.getChildren(); @@ -41014,7 +41911,7 @@ var ts; return candidate && findRightmostToken(candidate); } function find(n) { - if (isToken(n) || n.kind === 236 /* JsxText */) { + if (isToken(n) || n.kind === 238 /* JsxText */) { return n; } var children = n.getChildren(); @@ -41028,10 +41925,10 @@ var ts; // if no - position is in the node itself so we should recurse in it. // NOTE: JsxText is a weird kind of node that can contain only whitespaces (since they are not counted as trivia). // if this is the case - then we should assume that token in question is located in previous child. - if (position < child.end && (nodeHasTokens(child) || child.kind === 236 /* JsxText */)) { + if (position < child.end && (nodeHasTokens(child) || child.kind === 238 /* JsxText */)) { var start = child.getStart(sourceFile); var lookInPreviousChild = (start >= position) || - (child.kind === 236 /* JsxText */ && start === child.end); // whitespace only JsxText + (child.kind === 238 /* JsxText */ && start === child.end); // whitespace only JsxText if (lookInPreviousChild) { // actual start of the node is past the position - previous token should be at the end of previous child var candidate = findRightmostChildNodeWithTokens(children, /*exclusiveStartPosition*/ i); @@ -41043,8 +41940,8 @@ var ts; } } } - ts.Debug.assert(startNode !== undefined || n.kind === 248 /* SourceFile */); - // Here we know that none of child token nodes embrace the position, + ts.Debug.assert(startNode !== undefined || n.kind === 250 /* SourceFile */); + // Here we know that none of child token nodes embrace the position, // the only known case is when position is at the end of the file. // Try to find the rightmost token in the file without filtering. // Namely we are skipping the check: 'position < node.end' @@ -41065,7 +41962,7 @@ var ts; ts.findPrecedingToken = findPrecedingToken; function isInString(sourceFile, position) { var token = getTokenAtPosition(sourceFile, position); - return token && token.kind === 9 /* StringLiteral */ && position > token.getStart(); + return token && (token.kind === 9 /* StringLiteral */ || token.kind === 162 /* StringLiteralType */) && position > token.getStart(); } ts.isInString = isInString; function isInComment(sourceFile, position) { @@ -41169,10 +42066,10 @@ var ts; } ts.getNodeModifiers = getNodeModifiers; function getTypeArgumentOrTypeParameterList(node) { - if (node.kind === 151 /* TypeReference */ || node.kind === 168 /* CallExpression */) { + if (node.kind === 151 /* TypeReference */ || node.kind === 170 /* CallExpression */) { return node.typeArguments; } - if (ts.isFunctionLike(node) || node.kind === 214 /* ClassDeclaration */ || node.kind === 215 /* InterfaceDeclaration */) { + if (ts.isFunctionLike(node) || node.kind === 216 /* ClassDeclaration */ || node.kind === 217 /* InterfaceDeclaration */) { return node.typeParameters; } return undefined; @@ -41195,6 +42092,7 @@ var ts; ts.isComment = isComment; function isStringOrRegularExpressionOrTemplateLiteral(kind) { if (kind === 9 /* StringLiteral */ + || kind === 162 /* StringLiteralType */ || kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(kind)) { return true; @@ -41431,7 +42329,7 @@ var ts; ts.getDeclaredName = getDeclaredName; function isImportOrExportSpecifierName(location) { return location.parent && - (location.parent.kind === 226 /* ImportSpecifier */ || location.parent.kind === 230 /* ExportSpecifier */) && + (location.parent.kind === 228 /* ImportSpecifier */ || location.parent.kind === 232 /* ExportSpecifier */) && location.parent.propertyName === location; } ts.isImportOrExportSpecifierName = isImportOrExportSpecifierName; @@ -41488,6 +42386,7 @@ var ts; advance: advance, readTokenInfo: readTokenInfo, isOnToken: isOnToken, + getCurrentLeadingTrivia: function () { return leadingTrivia; }, lastTrailingTriviaWasNewLine: function () { return wasNewLine; }, close: function () { ts.Debug.assert(scanner !== undefined); @@ -41553,10 +42452,10 @@ var ts; function shouldRescanJsxIdentifier(node) { if (node.parent) { switch (node.parent.kind) { - case 238 /* JsxAttribute */: - case 235 /* JsxOpeningElement */: - case 237 /* JsxClosingElement */: - case 234 /* JsxSelfClosingElement */: + case 240 /* JsxAttribute */: + case 237 /* JsxOpeningElement */: + case 239 /* JsxClosingElement */: + case 236 /* JsxSelfClosingElement */: return node.kind === 69 /* Identifier */; } } @@ -41763,7 +42662,7 @@ var ts; return false; }; return FormattingContext; - })(); + }()); formatting.FormattingContext = FormattingContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41802,7 +42701,7 @@ var ts; "flag=" + this.Flag + "]"; }; return Rule; - })(); + }()); formatting.Rule = Rule; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41849,7 +42748,7 @@ var ts; return new RuleDescriptor(left, right); }; return RuleDescriptor; - })(); + }()); formatting.RuleDescriptor = RuleDescriptor; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41891,7 +42790,7 @@ var ts; return result; }; return RuleOperation; - })(); + }()); formatting.RuleOperation = RuleOperation; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -41926,7 +42825,7 @@ var ts; }; RuleOperationContext.Any = new RuleOperationContext(); return RuleOperationContext; - })(); + }()); formatting.RuleOperationContext = RuleOperationContext; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42030,6 +42929,7 @@ var ts; // Treat string literals in module names as identifiers, and add a space between the literal and the opening Brace braces, e.g.: module "m2" { this.SpaceAfterModuleName = new formatting.Rule(formatting.RuleDescriptor.create1(9 /* StringLiteral */, 15 /* OpenBraceToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsModuleDeclContext), 2 /* Space */)); // Lambda expressions + this.SpaceBeforeArrow = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 34 /* EqualsGreaterThanToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceAfterArrow = new formatting.Rule(formatting.RuleDescriptor.create3(34 /* EqualsGreaterThanToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // Optional parameters and let args this.NoSpaceAfterEllipsis = new formatting.Rule(formatting.RuleDescriptor.create1(22 /* DotDotDotToken */, 69 /* Identifier */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); @@ -42055,72 +42955,68 @@ var ts; this.SpaceBetweenAsyncAndOpenParen = new formatting.Rule(formatting.RuleDescriptor.create1(118 /* AsyncKeyword */, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsArrowFunctionContext, Rules.IsSameLineTokenContext), 2 /* Space */)); this.SpaceBetweenAsyncAndFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(118 /* AsyncKeyword */, 87 /* FunctionKeyword */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // template string - this.SpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(69 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); - this.NoSpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12 /* TemplateHead */, 13 /* TemplateMiddle */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); - this.NoSpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13 /* TemplateMiddle */, 14 /* TemplateTail */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + this.NoSpaceBetweenTagAndTemplateString = new formatting.Rule(formatting.RuleDescriptor.create3(69 /* Identifier */, formatting.Shared.TokenRange.FromTokens([11 /* NoSubstitutionTemplateLiteral */, 12 /* TemplateHead */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // These rules are higher in priority than user-configurable rules. - this.HighPriorityCommonRules = - [ - this.IgnoreBeforeComment, this.IgnoreAfterLineComment, - this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, - this.NoSpaceAfterQuestionMark, - this.NoSpaceBeforeDot, this.NoSpaceAfterDot, - this.NoSpaceAfterUnaryPrefixOperator, - this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, - this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, - this.SpaceAfterPostincrementWhenFollowedByAdd, - this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, - this.SpaceAfterPostdecrementWhenFollowedBySubtract, - this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, - this.NoSpaceAfterCloseBrace, - this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, - this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, - this.NoSpaceBetweenFunctionKeywordAndStar, this.SpaceAfterStarInGeneratorDeclaration, - this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, - this.NoSpaceBetweenYieldKeywordAndStar, this.SpaceBetweenYieldOrYieldStarAndOperand, - this.NoSpaceBetweenReturnAndSemicolon, - this.SpaceAfterCertainKeywords, - this.SpaceAfterLetConstInVariableDeclaration, - this.NoSpaceBeforeOpenParenInFuncCall, - this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, - this.SpaceAfterVoidOperator, - this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, - this.SpaceBetweenTagAndTemplateString, this.NoSpaceAfterTemplateHeadAndMiddle, this.NoSpaceBeforeTemplateMiddleAndTail, - // TypeScript-specific rules - this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, - this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, - this.SpaceAfterModuleName, - this.SpaceAfterArrow, - this.NoSpaceAfterEllipsis, - this.NoSpaceAfterOptionalParameters, - this.NoSpaceBetweenEmptyInterfaceBraceBrackets, - this.NoSpaceBeforeOpenAngularBracket, - this.NoSpaceBetweenCloseParenAndAngularBracket, - this.NoSpaceAfterOpenAngularBracket, - this.NoSpaceBeforeCloseAngularBracket, - this.NoSpaceAfterCloseAngularBracket, - this.NoSpaceAfterTypeAssertion, - this.SpaceBeforeAt, - this.NoSpaceAfterAt, - this.SpaceAfterDecorator, - ]; + this.HighPriorityCommonRules = [ + this.IgnoreBeforeComment, this.IgnoreAfterLineComment, + this.NoSpaceBeforeColon, this.SpaceAfterColon, this.NoSpaceBeforeQuestionMark, this.SpaceAfterQuestionMarkInConditionalOperator, + this.NoSpaceAfterQuestionMark, + this.NoSpaceBeforeDot, this.NoSpaceAfterDot, + this.NoSpaceAfterUnaryPrefixOperator, + this.NoSpaceAfterUnaryPreincrementOperator, this.NoSpaceAfterUnaryPredecrementOperator, + this.NoSpaceBeforeUnaryPostincrementOperator, this.NoSpaceBeforeUnaryPostdecrementOperator, + this.SpaceAfterPostincrementWhenFollowedByAdd, + this.SpaceAfterAddWhenFollowedByUnaryPlus, this.SpaceAfterAddWhenFollowedByPreincrement, + this.SpaceAfterPostdecrementWhenFollowedBySubtract, + this.SpaceAfterSubtractWhenFollowedByUnaryMinus, this.SpaceAfterSubtractWhenFollowedByPredecrement, + this.NoSpaceAfterCloseBrace, + this.SpaceAfterOpenBrace, this.SpaceBeforeCloseBrace, this.NewLineBeforeCloseBraceInBlockContext, + this.SpaceAfterCloseBrace, this.SpaceBetweenCloseBraceAndElse, this.SpaceBetweenCloseBraceAndWhile, this.NoSpaceBetweenEmptyBraceBrackets, + this.NoSpaceBetweenFunctionKeywordAndStar, this.SpaceAfterStarInGeneratorDeclaration, + this.SpaceAfterFunctionInFuncDecl, this.NewLineAfterOpenBraceInBlockContext, this.SpaceAfterGetSetInMember, + this.NoSpaceBetweenYieldKeywordAndStar, this.SpaceBetweenYieldOrYieldStarAndOperand, + this.NoSpaceBetweenReturnAndSemicolon, + this.SpaceAfterCertainKeywords, + this.SpaceAfterLetConstInVariableDeclaration, + this.NoSpaceBeforeOpenParenInFuncCall, + this.SpaceBeforeBinaryKeywordOperator, this.SpaceAfterBinaryKeywordOperator, + this.SpaceAfterVoidOperator, + this.SpaceBetweenAsyncAndOpenParen, this.SpaceBetweenAsyncAndFunctionKeyword, + this.NoSpaceBetweenTagAndTemplateString, + // TypeScript-specific rules + this.NoSpaceAfterConstructor, this.NoSpaceAfterModuleImport, + this.SpaceAfterCertainTypeScriptKeywords, this.SpaceBeforeCertainTypeScriptKeywords, + this.SpaceAfterModuleName, + this.SpaceBeforeArrow, this.SpaceAfterArrow, + this.NoSpaceAfterEllipsis, + this.NoSpaceAfterOptionalParameters, + this.NoSpaceBetweenEmptyInterfaceBraceBrackets, + this.NoSpaceBeforeOpenAngularBracket, + this.NoSpaceBetweenCloseParenAndAngularBracket, + this.NoSpaceAfterOpenAngularBracket, + this.NoSpaceBeforeCloseAngularBracket, + this.NoSpaceAfterCloseAngularBracket, + this.NoSpaceAfterTypeAssertion, + this.SpaceBeforeAt, + this.NoSpaceAfterAt, + this.SpaceAfterDecorator, + ]; // These rules are lower in priority than user-configurable rules. - this.LowPriorityCommonRules = - [ - this.NoSpaceBeforeSemicolon, - this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, - this.NoSpaceBeforeComma, - this.NoSpaceBeforeOpenBracket, - this.NoSpaceAfterCloseBracket, - this.SpaceAfterSemicolon, - this.NoSpaceBeforeOpenParenInFuncDecl, - this.SpaceBetweenStatements, this.SpaceAfterTryFinally - ]; + this.LowPriorityCommonRules = [ + this.NoSpaceBeforeSemicolon, + this.SpaceBeforeOpenBraceInControl, this.SpaceBeforeOpenBraceInFunction, this.SpaceBeforeOpenBraceInTypeScriptDeclWithBlock, + this.NoSpaceBeforeComma, + this.NoSpaceBeforeOpenBracket, + this.NoSpaceAfterCloseBracket, + this.SpaceAfterSemicolon, + this.NoSpaceBeforeOpenParenInFuncDecl, + this.SpaceBetweenStatements, this.SpaceAfterTryFinally + ]; /// /// Rules controlled by user options /// // Insert space after comma delimiter - this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24 /* CommaToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.SpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24 /* CommaToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsNextTokenNotCloseBracket), 2 /* Space */)); this.NoSpaceAfterComma = new formatting.Rule(formatting.RuleDescriptor.create3(24 /* CommaToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); // Insert space before and after binary operators this.SpaceBeforeBinaryOperator = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.BinaryOperators), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext, Rules.IsBinaryOpContext), 2 /* Space */)); @@ -42152,15 +43048,20 @@ var ts; this.NoSpaceBetweenBrackets = new formatting.Rule(formatting.RuleDescriptor.create1(19 /* OpenBracketToken */, 20 /* CloseBracketToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); this.NoSpaceAfterOpenBracket = new formatting.Rule(formatting.RuleDescriptor.create3(19 /* OpenBracketToken */, formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); this.NoSpaceBeforeCloseBracket = new formatting.Rule(formatting.RuleDescriptor.create2(formatting.Shared.TokenRange.Any, 20 /* CloseBracketToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + // Insert space after opening and before closing template string braces + this.NoSpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12 /* TemplateHead */, 13 /* TemplateMiddle */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + this.SpaceAfterTemplateHeadAndMiddle = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.FromTokens([12 /* TemplateHead */, 13 /* TemplateMiddle */]), formatting.Shared.TokenRange.Any), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); + this.NoSpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13 /* TemplateMiddle */, 14 /* TemplateTail */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 8 /* Delete */)); + this.SpaceBeforeTemplateMiddleAndTail = new formatting.Rule(formatting.RuleDescriptor.create4(formatting.Shared.TokenRange.Any, formatting.Shared.TokenRange.FromTokens([13 /* TemplateMiddle */, 14 /* TemplateTail */])), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsSameLineTokenContext), 2 /* Space */)); // Insert space after function keyword for anonymous functions this.SpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(87 /* FunctionKeyword */, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 2 /* Space */)); this.NoSpaceAfterAnonymousFunctionKeyword = new formatting.Rule(formatting.RuleDescriptor.create1(87 /* FunctionKeyword */, 17 /* OpenParenToken */), formatting.RuleOperation.create2(new formatting.RuleOperationContext(Rules.IsFunctionDeclContext), 8 /* Delete */)); } Rules.prototype.getRuleName = function (rule) { var o = this; - for (var name_34 in o) { - if (o[name_34] === rule) { - return name_34; + for (var name_30 in o) { + if (o[name_30] === rule) { + return name_30; } } throw new Error("Unknown rule"); @@ -42169,39 +43070,39 @@ var ts; /// Contexts /// Rules.IsForContext = function (context) { - return context.contextNode.kind === 199 /* ForStatement */; + return context.contextNode.kind === 201 /* ForStatement */; }; Rules.IsNotForContext = function (context) { return !Rules.IsForContext(context); }; Rules.IsBinaryOpContext = function (context) { switch (context.contextNode.kind) { - case 181 /* BinaryExpression */: - case 182 /* ConditionalExpression */: - case 189 /* AsExpression */: + case 183 /* BinaryExpression */: + case 184 /* ConditionalExpression */: + case 191 /* AsExpression */: case 150 /* TypePredicate */: case 158 /* UnionType */: case 159 /* IntersectionType */: return true; // equals in binding elements: function foo([[x, y] = [1, 2]]) - case 163 /* BindingElement */: + case 165 /* BindingElement */: // equals in type X = ... - case 216 /* TypeAliasDeclaration */: + case 218 /* TypeAliasDeclaration */: // equal in import a = module('a'); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: // equal in let a = 0; - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: // equal in p = 0; case 138 /* Parameter */: - case 247 /* EnumMember */: + case 249 /* EnumMember */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return context.currentTokenSpan.kind === 56 /* EqualsToken */ || context.nextTokenSpan.kind === 56 /* EqualsToken */; // "in" keyword in for (let x in []) { } - case 200 /* ForInStatement */: + case 202 /* ForInStatement */: return context.currentTokenSpan.kind === 90 /* InKeyword */ || context.nextTokenSpan.kind === 90 /* InKeyword */; // Technically, "of" is not a binary operator, but format it the same way as "in" - case 201 /* ForOfStatement */: + case 203 /* ForOfStatement */: return context.currentTokenSpan.kind === 134 /* OfKeyword */ || context.nextTokenSpan.kind === 134 /* OfKeyword */; } return false; @@ -42210,7 +43111,7 @@ var ts; return !Rules.IsBinaryOpContext(context); }; Rules.IsConditionalOperatorContext = function (context) { - return context.contextNode.kind === 182 /* ConditionalExpression */; + return context.contextNode.kind === 184 /* ConditionalExpression */; }; Rules.IsSameLineTokenOrBeforeMultilineBlockContext = function (context) { //// This check is mainly used inside SpaceBeforeOpenBraceInControl and SpaceBeforeOpenBraceInFunction. @@ -42254,17 +43155,17 @@ var ts; return true; } switch (node.kind) { - case 192 /* Block */: - case 220 /* CaseBlock */: - case 165 /* ObjectLiteralExpression */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 222 /* CaseBlock */: + case 167 /* ObjectLiteralExpression */: + case 221 /* ModuleBlock */: return true; } return false; }; Rules.IsFunctionDeclContext = function (context) { switch (context.contextNode.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: //case SyntaxKind.MemberFunctionDeclaration: @@ -42272,75 +43173,75 @@ var ts; case 146 /* SetAccessor */: ///case SyntaxKind.MethodSignature: case 147 /* CallSignature */: - case 173 /* FunctionExpression */: + case 175 /* FunctionExpression */: case 144 /* Constructor */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: //case SyntaxKind.ConstructorDeclaration: //case SyntaxKind.SimpleArrowFunctionExpression: //case SyntaxKind.ParenthesizedArrowFunctionExpression: - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: return true; } return false; }; Rules.IsFunctionDeclarationOrFunctionExpressionContext = function (context) { - return context.contextNode.kind === 213 /* FunctionDeclaration */ || context.contextNode.kind === 173 /* FunctionExpression */; + return context.contextNode.kind === 215 /* FunctionDeclaration */ || context.contextNode.kind === 175 /* FunctionExpression */; }; Rules.IsTypeScriptDeclWithBlockContext = function (context) { return Rules.NodeIsTypeScriptDeclWithBlockContext(context.contextNode); }; Rules.NodeIsTypeScriptDeclWithBlockContext = function (node) { switch (node.kind) { - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: case 155 /* TypeLiteral */: - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return true; } return false; }; Rules.IsAfterCodeBlockContext = function (context) { switch (context.currentTokenParent.kind) { - case 214 /* ClassDeclaration */: - case 218 /* ModuleDeclaration */: - case 217 /* EnumDeclaration */: - case 192 /* Block */: - case 244 /* CatchClause */: - case 219 /* ModuleBlock */: - case 206 /* SwitchStatement */: + case 216 /* ClassDeclaration */: + case 220 /* ModuleDeclaration */: + case 219 /* EnumDeclaration */: + case 194 /* Block */: + case 246 /* CatchClause */: + case 221 /* ModuleBlock */: + case 208 /* SwitchStatement */: return true; } return false; }; Rules.IsControlDeclContext = function (context) { switch (context.contextNode.kind) { - case 196 /* IfStatement */: - case 206 /* SwitchStatement */: - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 198 /* WhileStatement */: - case 209 /* TryStatement */: - case 197 /* DoStatement */: - case 205 /* WithStatement */: + case 198 /* IfStatement */: + case 208 /* SwitchStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 200 /* WhileStatement */: + case 211 /* TryStatement */: + case 199 /* DoStatement */: + case 207 /* WithStatement */: // TODO // case SyntaxKind.ElseClause: - case 244 /* CatchClause */: + case 246 /* CatchClause */: return true; default: return false; } }; Rules.IsObjectContext = function (context) { - return context.contextNode.kind === 165 /* ObjectLiteralExpression */; + return context.contextNode.kind === 167 /* ObjectLiteralExpression */; }; Rules.IsFunctionCallContext = function (context) { - return context.contextNode.kind === 168 /* CallExpression */; + return context.contextNode.kind === 170 /* CallExpression */; }; Rules.IsNewContext = function (context) { - return context.contextNode.kind === 169 /* NewExpression */; + return context.contextNode.kind === 171 /* NewExpression */; }; Rules.IsFunctionCallOrNewContext = function (context) { return Rules.IsFunctionCallContext(context) || Rules.IsNewContext(context); @@ -42348,8 +43249,11 @@ var ts; Rules.IsPreviousTokenNotComma = function (context) { return context.currentTokenSpan.kind !== 24 /* CommaToken */; }; + Rules.IsNextTokenNotCloseBracket = function (context) { + return context.nextTokenSpan.kind !== 20 /* CloseBracketToken */; + }; Rules.IsArrowFunctionContext = function (context) { - return context.contextNode.kind === 174 /* ArrowFunction */; + return context.contextNode.kind === 176 /* ArrowFunction */; }; Rules.IsSameLineTokenContext = function (context) { return context.TokensAreOnSameLine(); @@ -42370,14 +43274,14 @@ var ts; return node.kind === 139 /* Decorator */; }; Rules.IsStartOfVariableDeclarationList = function (context) { - return context.currentTokenParent.kind === 212 /* VariableDeclarationList */ && + return context.currentTokenParent.kind === 214 /* VariableDeclarationList */ && context.currentTokenParent.getStart(context.sourceFile) === context.currentTokenSpan.pos; }; Rules.IsNotFormatOnEnter = function (context) { return context.formattingRequestKind !== 2 /* FormatOnEnter */; }; Rules.IsModuleDeclContext = function (context) { - return context.contextNode.kind === 218 /* ModuleDeclaration */; + return context.contextNode.kind === 220 /* ModuleDeclaration */; }; Rules.IsObjectTypeContext = function (context) { return context.contextNode.kind === 155 /* TypeLiteral */; // && context.contextNode.parent.kind !== SyntaxKind.InterfaceDeclaration; @@ -42388,20 +43292,20 @@ var ts; } switch (parent.kind) { case 151 /* TypeReference */: - case 171 /* TypeAssertionExpression */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 173 /* TypeAssertionExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 147 /* CallSignature */: case 148 /* ConstructSignature */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 188 /* ExpressionWithTypeArguments */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 190 /* ExpressionWithTypeArguments */: return true; default: return false; @@ -42412,16 +43316,16 @@ var ts; Rules.IsTypeArgumentOrParameterOrAssertion(context.nextTokenSpan, context.nextTokenParent); }; Rules.IsTypeAssertionContext = function (context) { - return context.contextNode.kind === 171 /* TypeAssertionExpression */; + return context.contextNode.kind === 173 /* TypeAssertionExpression */; }; Rules.IsVoidOpContext = function (context) { - return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 177 /* VoidExpression */; + return context.currentTokenSpan.kind === 103 /* VoidKeyword */ && context.currentTokenParent.kind === 179 /* VoidExpression */; }; Rules.IsYieldOrYieldStarWithOperand = function (context) { - return context.contextNode.kind === 184 /* YieldExpression */ && context.contextNode.expression !== undefined; + return context.contextNode.kind === 186 /* YieldExpression */ && context.contextNode.expression !== undefined; }; return Rules; - })(); + }()); formatting.Rules = Rules; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42489,7 +43393,7 @@ var ts; return null; }; return RulesMap; - })(); + }()); formatting.RulesMap = RulesMap; var MaskBitSize = 5; var Mask = 0x1f; @@ -42541,7 +43445,7 @@ var ts; this.rulesInsertionIndexBitmap = temp; }; return RulesBucketConstructionState; - })(); + }()); formatting.RulesBucketConstructionState = RulesBucketConstructionState; var RulesBucket = (function () { function RulesBucket() { @@ -42576,7 +43480,7 @@ var ts; state.IncreaseInsertionIndex(position); }; return RulesBucket; - })(); + }()); formatting.RulesBucket = RulesBucket; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42604,7 +43508,7 @@ var ts; return this.tokens.indexOf(token) >= 0; }; return TokenRangeAccess; - })(); + }()); Shared.TokenRangeAccess = TokenRangeAccess; var TokenValuesAccess = (function () { function TokenValuesAccess(tks) { @@ -42617,7 +43521,7 @@ var ts; return this.tokens.indexOf(token) >= 0; }; return TokenValuesAccess; - })(); + }()); Shared.TokenValuesAccess = TokenValuesAccess; var TokenSingleValueAccess = (function () { function TokenSingleValueAccess(token) { @@ -42630,7 +43534,7 @@ var ts; return tokenValue === this.token; }; return TokenSingleValueAccess; - })(); + }()); Shared.TokenSingleValueAccess = TokenSingleValueAccess; var TokenAllAccess = (function () { function TokenAllAccess() { @@ -42649,7 +43553,7 @@ var ts; return "[allTokens]"; }; return TokenAllAccess; - })(); + }()); Shared.TokenAllAccess = TokenAllAccess; var TokenRange = (function () { function TokenRange(tokenAccess) { @@ -42691,7 +43595,7 @@ var ts; TokenRange.Comments = TokenRange.FromTokens([2 /* SingleLineCommentTrivia */, 3 /* MultiLineCommentTrivia */]); TokenRange.TypeNames = TokenRange.FromTokens([69 /* Identifier */, 128 /* NumberKeyword */, 130 /* StringKeyword */, 120 /* BooleanKeyword */, 131 /* SymbolKeyword */, 103 /* VoidKeyword */, 117 /* AnyKeyword */]); return TokenRange; - })(); + }()); Shared.TokenRange = TokenRange; })(Shared = formatting.Shared || (formatting.Shared = {})); })(formatting = ts.formatting || (ts.formatting = {})); @@ -42777,6 +43681,14 @@ var ts; rules.push(this.globalRules.NoSpaceBeforeCloseBracket); rules.push(this.globalRules.NoSpaceBetweenBrackets); } + if (options.InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces) { + rules.push(this.globalRules.SpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.SpaceBeforeTemplateMiddleAndTail); + } + else { + rules.push(this.globalRules.NoSpaceAfterTemplateHeadAndMiddle); + rules.push(this.globalRules.NoSpaceBeforeTemplateMiddleAndTail); + } if (options.InsertSpaceAfterSemicolonInForStatements) { rules.push(this.globalRules.SpaceAfterSemicolonInFor); } @@ -42802,7 +43714,7 @@ var ts; return rules; }; return RulesProvider; - })(); + }()); formatting.RulesProvider = RulesProvider; })(formatting = ts.formatting || (ts.formatting = {})); })(ts || (ts = {})); @@ -42903,17 +43815,17 @@ var ts; // i.e. parent is class declaration with the list of members and node is one of members. function isListElement(parent, node) { switch (parent.kind) { - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: return ts.rangeContainsRange(parent.members, node); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: var body = parent.body; - return body && body.kind === 192 /* Block */ && ts.rangeContainsRange(body.statements, node); - case 248 /* SourceFile */: - case 192 /* Block */: - case 219 /* ModuleBlock */: + return body && body.kind === 194 /* Block */ && ts.rangeContainsRange(body.statements, node); + case 250 /* SourceFile */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return ts.rangeContainsRange(parent.statements, node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return ts.rangeContainsRange(parent.block.statements, node); } return false; @@ -43011,17 +43923,17 @@ var ts; */ function getOwnOrInheritedDelta(n, options, sourceFile) { var previousLine = -1 /* Unknown */; - var childKind = 0 /* Unknown */; + var child; while (n) { var line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; if (previousLine !== -1 /* Unknown */ && line !== previousLine) { break; } - if (formatting.SmartIndenter.shouldIndentChildNode(n.kind, childKind)) { + if (formatting.SmartIndenter.shouldIndentChildNode(n, child)) { return options.IndentSize; } previousLine = line; - childKind = n.kind; + child = n; n = n.parent; } return 0; @@ -43051,6 +43963,13 @@ var ts; var delta = getOwnOrInheritedDelta(enclosingNode, options, sourceFile); processNode(enclosingNode, enclosingNode, startLine, undecoratedStartLine, initialIndentation, delta); } + if (!formattingScanner.isOnToken()) { + var leadingTrivia = formattingScanner.getCurrentLeadingTrivia(); + if (leadingTrivia) { + processTrivia(leadingTrivia, enclosingNode, enclosingNode, undefined); + trimTrailingWhitespacesForRemainingRange(); + } + } formattingScanner.close(); return edits; // local functions @@ -43062,7 +43981,8 @@ var ts; * to inherited indentation from its predecessors. */ function tryComputeIndentationForListItem(startPos, endPos, parentStartLine, range, inheritedIndentation) { - if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos)) { + if (ts.rangeOverlapsWithStartEnd(range, startPos, endPos) || + ts.rangeContainsStartEnd(range, startPos, endPos) /* Not to miss zero-range nodes e.g. JsxText */) { if (inheritedIndentation !== -1 /* Unknown */) { return inheritedIndentation; } @@ -43079,32 +43999,7 @@ var ts; } function computeIndentation(node, startLine, inheritedIndentation, parent, parentDynamicIndentation, effectiveParentStartLine) { var indentation = inheritedIndentation; - if (indentation === -1 /* Unknown */) { - if (isSomeBlock(node.kind)) { - // blocks should be indented in - // - other blocks - // - source file - // - switch\default clauses - if (isSomeBlock(parent.kind) || - parent.kind === 248 /* SourceFile */ || - parent.kind === 241 /* CaseClause */ || - parent.kind === 242 /* DefaultClause */) { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - else { - indentation = parentDynamicIndentation.getIndentation(); - } - } - else { - if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - indentation = parentDynamicIndentation.getIndentation(); - } - else { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - } - } - var delta = formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0 /* Unknown */) ? options.IndentSize : 0; + var delta = formatting.SmartIndenter.shouldIndentChildNode(node) ? options.IndentSize : 0; if (effectiveParentStartLine === startLine) { // if node is located on the same line with the parent // - inherit indentation from the parent @@ -43112,7 +44007,15 @@ var ts; 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 === -1 /* Unknown */) { + if (formatting.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { + indentation = parentDynamicIndentation.getIndentation(); + } + else { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(node); + } } return { indentation: indentation, @@ -43124,10 +44027,10 @@ var ts; return node.modifiers[0].kind; } switch (node.kind) { - case 214 /* ClassDeclaration */: return 73 /* ClassKeyword */; - case 215 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; - case 213 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; - case 217 /* EnumDeclaration */: return 217 /* EnumDeclaration */; + case 216 /* ClassDeclaration */: return 73 /* ClassKeyword */; + case 217 /* InterfaceDeclaration */: return 107 /* InterfaceKeyword */; + case 215 /* FunctionDeclaration */: return 87 /* FunctionKeyword */; + case 219 /* EnumDeclaration */: return 219 /* EnumDeclaration */; case 145 /* GetAccessor */: return 123 /* GetKeyword */; case 146 /* SetAccessor */: return 129 /* SetKeyword */; case 143 /* MethodDeclaration */: @@ -43142,7 +44045,7 @@ var ts; } function getDynamicIndentation(node, nodeStartLine, indentation, delta) { return { - getIndentationForComment: function (kind, tokenIndentation) { + getIndentationForComment: function (kind, tokenIndentation, container) { switch (kind) { // preceding comment to the token that closes the indentation scope inherits the indentation from the scope // .. { @@ -43151,11 +44054,11 @@ var ts; case 16 /* CloseBraceToken */: case 20 /* CloseBracketToken */: case 18 /* CloseParenToken */: - return indentation + delta; + return indentation + getEffectiveDelta(delta, container); } return tokenIndentation !== -1 /* Unknown */ ? tokenIndentation : indentation; }, - getIndentationForToken: function (line, kind) { + getIndentationForToken: function (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 @@ -43176,20 +44079,20 @@ var ts; 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: function () { return indentation; }, - getDelta: function () { return delta; }, + getDelta: function (child) { return getEffectiveDelta(delta, child); }, recomputeIndentation: function (lineAdded) { - if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent.kind, node.kind)) { + if (node.parent && formatting.SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { indentation += options.IndentSize; } else { indentation -= options.IndentSize; } - if (formatting.SmartIndenter.shouldIndentChildNode(node.kind, 0 /* Unknown */)) { + if (formatting.SmartIndenter.shouldIndentChildNode(node)) { delta = options.IndentSize; } else { @@ -43198,6 +44101,10 @@ var ts; } } }; + function getEffectiveDelta(delta, child) { + // Delta value should be zero when the node explicitly prevents indentation of the child node + return formatting.SmartIndenter.nodeWillIndentChild(node, child, true) ? delta : 0; + } } function processNode(node, contextNode, nodeStartLine, undecoratedNodeStartLine, indentation, delta) { if (!ts.rangeOverlapsWithStartEnd(originalRange, node.getStart(sourceFile), node.getEnd())) { @@ -43269,7 +44176,7 @@ var ts; // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules var tokenInfo = formattingScanner.readTokenInfo(child); ts.Debug.assert(tokenInfo.token.end === child.end); - consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } var effectiveParentStartLine = child.kind === 139 /* Decorator */ ? childStartLine : undecoratedParentStartLine; @@ -43323,7 +44230,7 @@ var ts; } } } - function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation) { + function consumeTokenAndAdvanceScanner(currentTokenInfo, parent, dynamicIndentation, container) { ts.Debug.assert(ts.rangeContainsRange(parent, currentTokenInfo.token)); var lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); var indentToken = false; @@ -43358,10 +44265,10 @@ var ts; } if (indentToken) { var tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? - dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind, container) : -1 /* Unknown */; if (currentTokenInfo.leadingTrivia) { - var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + var commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation, container); var indentNextTokenOrTrivia = true; for (var _i = 0, _a = currentTokenInfo.leadingTrivia; _i < _a.length; _i++) { var triviaItem = _a[_i]; @@ -43450,9 +44357,7 @@ var ts; } } // We need to trim trailing whitespace between the tokens if they were on different lines, and no rule was applied to put them on the same line - trimTrailingWhitespaces = - (rule.Operation.Action & (4 /* NewLine */ | 2 /* Space */)) && - rule.Flag !== 1 /* CanDeleteNewLines */; + trimTrailingWhitespaces = !(rule.Operation.Action & 8 /* Delete */) && rule.Flag !== 1 /* CanDeleteNewLines */; } else { trimTrailingWhitespaces = true; @@ -43535,16 +44440,36 @@ var ts; if (range && (ts.isComment(range.kind) || ts.isStringOrRegularExpressionOrTemplateLiteral(range.kind)) && range.pos <= lineEndPosition && range.end > lineEndPosition) { continue; } - var pos = lineEndPosition; - while (pos >= lineStartPosition && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { - pos--; - } - if (pos !== lineEndPosition) { - ts.Debug.assert(pos === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))); - recordDelete(pos + 1, lineEndPosition - pos); + var whitespaceStart = getTrailingWhitespaceStartPosition(lineStartPosition, lineEndPosition); + if (whitespaceStart !== -1) { + ts.Debug.assert(whitespaceStart === lineStartPosition || !ts.isWhiteSpace(sourceFile.text.charCodeAt(whitespaceStart - 1))); + recordDelete(whitespaceStart, lineEndPosition + 1 - whitespaceStart); } } } + /** + * @param start The position of the first character in range + * @param end The position of the last character in range + */ + function getTrailingWhitespaceStartPosition(start, end) { + var pos = end; + while (pos >= start && ts.isWhiteSpace(sourceFile.text.charCodeAt(pos))) { + pos--; + } + if (pos !== end) { + return pos + 1; + } + return -1; + } + /** + * Trimming will be done for lines after the previous range + */ + function trimTrailingWhitespacesForRemainingRange() { + var startPosition = previousRange ? previousRange.end : originalRange.pos; + var startLine = sourceFile.getLineAndCharacterOfPosition(startPosition).line; + var endLine = sourceFile.getLineAndCharacterOfPosition(originalRange.end).line; + trimTrailingWhitespacesForLines(startLine, endLine + 1, previousRange); + } function newTextChange(start, len, newText) { return { span: ts.createTextSpan(start, len), newText: newText }; } @@ -43598,8 +44523,8 @@ var ts; } function isSomeBlock(kind) { switch (kind) { - case 192 /* Block */: - case 219 /* ModuleBlock */: + case 194 /* Block */: + case 221 /* ModuleBlock */: return true; } return false; @@ -43607,11 +44532,11 @@ var ts; function getOpenTokenForList(node, list) { switch (node.kind) { case 144 /* Constructor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: if (node.typeParameters === list) { return 25 /* LessThanToken */; } @@ -43619,8 +44544,8 @@ var ts; return 17 /* OpenParenToken */; } break; - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: if (node.typeArguments === list) { return 25 /* LessThanToken */; } @@ -43744,7 +44669,7 @@ var ts; var lineStart = ts.getLineStartPositionForPosition(current_1, sourceFile); return SmartIndenter.findFirstNonWhitespaceColumn(lineStart, current_1, sourceFile, options); } - if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 181 /* BinaryExpression */) { + if (precedingToken.kind === 24 /* CommaToken */ && precedingToken.parent.kind !== 183 /* BinaryExpression */) { // previous token is comma that separates items in list - find the previous item and try to derive indentation from it var actualIndentation = getActualIndentationForListItemBeforeComma(precedingToken, sourceFile, options); if (actualIndentation !== -1 /* Unknown */) { @@ -43758,7 +44683,7 @@ var ts; var currentStart; var indentationDelta; while (current) { - if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : 0 /* Unknown */)) { + if (ts.positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current, previous)) { currentStart = getStartLineAndCharacterForNode(current, sourceFile); if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { indentationDelta = 0; @@ -43825,7 +44750,7 @@ var ts; } } // 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; } current = parent; @@ -43863,7 +44788,7 @@ var ts; // - parent is SourceFile - by default immediate children of SourceFile are not indented except when user indents them manually // - parent and child are not on the same line var useActualIndentation = (ts.isDeclaration(current) || ts.isStatement(current)) && - (parent.kind === 248 /* SourceFile */ || !parentAndChildShareLine); + (parent.kind === 250 /* SourceFile */ || !parentAndChildShareLine); if (!useActualIndentation) { return -1 /* Unknown */; } @@ -43896,7 +44821,7 @@ var ts; return sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)); } function childStartsOnTheSameLineWithElseInIfStatement(parent, child, childStartLine, sourceFile) { - if (parent.kind === 196 /* IfStatement */ && parent.elseStatement === child) { + if (parent.kind === 198 /* IfStatement */ && parent.elseStatement === child) { var elseKeyword = ts.findChildOfKind(parent, 80 /* ElseKeyword */, sourceFile); ts.Debug.assert(elseKeyword !== undefined); var elseKeywordStartLine = getStartLineAndCharacterForNode(elseKeyword, sourceFile).line; @@ -43914,13 +44839,13 @@ var ts; return node.parent.typeArguments; } break; - case 165 /* ObjectLiteralExpression */: + case 167 /* ObjectLiteralExpression */: return node.parent.properties; - case 164 /* ArrayLiteralExpression */: + case 166 /* ArrayLiteralExpression */: return node.parent.elements; - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 147 /* CallSignature */: @@ -43935,8 +44860,8 @@ var ts; } break; } - case 169 /* NewExpression */: - case 168 /* CallExpression */: { + case 171 /* NewExpression */: + case 170 /* CallExpression */: { var start = node.getStart(sourceFile); if (node.parent.typeArguments && ts.rangeContainsStartEnd(node.parent.typeArguments, start, node.getEnd())) { @@ -43966,8 +44891,8 @@ var ts; if (node.kind === 18 /* CloseParenToken */) { return -1 /* Unknown */; } - if (node.parent && (node.parent.kind === 168 /* CallExpression */ || - node.parent.kind === 169 /* NewExpression */) && + if (node.parent && (node.parent.kind === 170 /* CallExpression */ || + node.parent.kind === 171 /* NewExpression */) && node.parent.expression !== node) { var fullCallOrNewExpression = node.parent.expression; var startingExpression = getStartingExpression(fullCallOrNewExpression); @@ -43985,10 +44910,10 @@ var ts; function getStartingExpression(node) { while (true) { switch (node.kind) { - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 166 /* PropertyAccessExpression */: - case 167 /* ElementAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 168 /* PropertyAccessExpression */: + case 169 /* ElementAccessExpression */: node = node.expression; break; default: @@ -44052,34 +44977,35 @@ var ts; SmartIndenter.findFirstNonWhitespaceColumn = findFirstNonWhitespaceColumn; function nodeContentIsAlwaysIndented(kind) { switch (kind) { - case 195 /* ExpressionStatement */: - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 164 /* ArrayLiteralExpression */: - case 192 /* Block */: - case 219 /* ModuleBlock */: - case 165 /* ObjectLiteralExpression */: + case 197 /* ExpressionStatement */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 166 /* ArrayLiteralExpression */: + case 194 /* Block */: + case 221 /* ModuleBlock */: + case 167 /* ObjectLiteralExpression */: case 155 /* TypeLiteral */: case 157 /* TupleType */: - case 220 /* CaseBlock */: - case 242 /* DefaultClause */: - case 241 /* CaseClause */: - case 172 /* ParenthesizedExpression */: - case 166 /* PropertyAccessExpression */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: - case 193 /* VariableStatement */: - case 211 /* VariableDeclaration */: - case 227 /* ExportAssignment */: - case 204 /* ReturnStatement */: - case 182 /* ConditionalExpression */: - case 162 /* ArrayBindingPattern */: - case 161 /* ObjectBindingPattern */: - case 233 /* JsxElement */: - case 234 /* JsxSelfClosingElement */: + case 222 /* CaseBlock */: + case 244 /* DefaultClause */: + case 243 /* CaseClause */: + case 174 /* ParenthesizedExpression */: + case 168 /* PropertyAccessExpression */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: + case 195 /* VariableStatement */: + case 213 /* VariableDeclaration */: + case 229 /* ExportAssignment */: + case 206 /* ReturnStatement */: + case 184 /* ConditionalExpression */: + case 164 /* ArrayBindingPattern */: + case 163 /* ObjectBindingPattern */: + case 237 /* JsxOpeningElement */: + case 236 /* JsxSelfClosingElement */: + case 242 /* JsxExpression */: case 142 /* MethodSignature */: case 147 /* CallSignature */: case 148 /* ConstructSignature */: @@ -44087,34 +45013,43 @@ var ts; case 152 /* FunctionType */: case 153 /* ConstructorType */: case 160 /* ParenthesizedType */: - case 170 /* TaggedTemplateExpression */: - case 178 /* AwaitExpression */: + case 172 /* TaggedTemplateExpression */: + case 180 /* AwaitExpression */: + case 227 /* NamedImports */: return true; } return false; } - function shouldIndentChildNode(parent, child) { - if (nodeContentIsAlwaysIndented(parent)) { - return true; - } - switch (parent) { - case 197 /* DoStatement */: - case 198 /* WhileStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 199 /* ForStatement */: - case 196 /* IfStatement */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + /* @internal */ + function nodeWillIndentChild(parent, child, indentByDefault) { + var childKind = child ? child.kind : 0 /* Unknown */; + switch (parent.kind) { + case 199 /* DoStatement */: + case 200 /* WhileStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 201 /* ForStatement */: + case 198 /* IfStatement */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 143 /* MethodDeclaration */: - case 174 /* ArrowFunction */: + case 176 /* ArrowFunction */: case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - return child !== 192 /* Block */; - default: - return false; + return childKind !== 194 /* Block */; + case 235 /* JsxElement */: + return childKind !== 239 /* JsxClosingElement */; } + // No explicit rule for given nodes so the result will follow the default value argument + return indentByDefault; + } + SmartIndenter.nodeWillIndentChild = nodeWillIndentChild; + /* + Function returns true when the parent node should indent the given child by an explicit rule + */ + function shouldIndentChildNode(parent, child) { + return nodeContentIsAlwaysIndented(parent.kind) || nodeWillIndentChild(parent, child, false); } SmartIndenter.shouldIndentChildNode = shouldIndentChildNode; })(SmartIndenter = formatting.SmartIndenter || (formatting.SmartIndenter = {})); @@ -44157,7 +45092,7 @@ var ts; return undefined; }; return StringScriptSnapshot; - })(); + }()); function fromString(text) { return new StringScriptSnapshot(text); } @@ -44256,7 +45191,7 @@ var ts; return pos; }; NodeObject.prototype.createSyntaxList = function (nodes) { - var list = createNode(271 /* SyntaxList */, nodes.pos, nodes.end, 2048 /* Synthetic */, this); + var list = createNode(273 /* SyntaxList */, nodes.pos, nodes.end, 2048 /* Synthetic */, this); list._children = []; var pos = nodes.pos; for (var _i = 0, nodes_7 = nodes; _i < nodes_7.length; _i++) { @@ -44333,7 +45268,7 @@ var ts; return child.kind < 135 /* FirstNode */ ? child : child.getLastToken(sourceFile); }; return NodeObject; - })(); + }()); var SymbolObject = (function () { function SymbolObject(flags, name) { this.flags = flags; @@ -44355,7 +45290,7 @@ var ts; return this.documentationComment; }; return SymbolObject; - })(); + }()); function getJsDocCommentsFromDeclarations(declarations, name, canUseParsedParamTagComments) { var documentationComment = []; var docComments = getJsDocCommentsSeparatedByNewLines(); @@ -44373,7 +45308,7 @@ var ts; // Make sure we are collecting doc comment from declaration once, // In case of union property there might be same declaration multiple times // which only varies in type parameter - // Eg. let a: Array | Array; a.length + // Eg. const a: Array | Array; a.length // The property length will have two declarations of property length coming // from Array - Array and Array if (ts.indexOf(declarations, declaration) === indexOfDeclaration) { @@ -44388,15 +45323,15 @@ var ts; }); } // If this is left side of dotted module declaration, there is no doc comments associated with this node - if (declaration.kind === 218 /* ModuleDeclaration */ && declaration.body.kind === 218 /* ModuleDeclaration */) { + if (declaration.kind === 220 /* ModuleDeclaration */ && declaration.body.kind === 220 /* ModuleDeclaration */) { return; } // If this is dotted module name, get the doc comments from the parent - while (declaration.kind === 218 /* ModuleDeclaration */ && declaration.parent.kind === 218 /* ModuleDeclaration */) { + while (declaration.kind === 220 /* ModuleDeclaration */ && declaration.parent.kind === 220 /* ModuleDeclaration */) { declaration = declaration.parent; } // Get the cleaned js doc comment text from the declaration - ts.forEach(getJsDocCommentTextRange(declaration.kind === 211 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { + ts.forEach(getJsDocCommentTextRange(declaration.kind === 213 /* VariableDeclaration */ ? declaration.parent.parent : declaration, sourceFileOfDeclaration), function (jsDocCommentTextRange) { var cleanedJsDocComment = getCleanedJsDocComment(jsDocCommentTextRange.pos, jsDocCommentTextRange.end, sourceFileOfDeclaration); if (cleanedJsDocComment) { ts.addRange(jsDocCommentParts, cleanedJsDocComment); @@ -44444,7 +45379,8 @@ var ts; } function pushDocCommentLineText(docComments, text, blankLineCount) { // Add the empty lines in between texts - while (blankLineCount--) { + while (blankLineCount) { + blankLineCount--; docComments.push(ts.textPart("")); } docComments.push(ts.textPart(text)); @@ -44670,7 +45606,7 @@ var ts; : undefined; }; return TypeObject; - })(); + }()); var SignatureObject = (function () { function SignatureObject(checker) { this.checker = checker; @@ -44696,7 +45632,7 @@ var ts; return this.documentationComment; }; return SignatureObject; - })(); + }()); var SourceFileObject = (function (_super) { __extends(SourceFileObject, _super); function SourceFileObject(kind, pos, end) { @@ -44742,7 +45678,7 @@ var ts; } if (declaration.name.kind === 136 /* ComputedPropertyName */) { var expr = declaration.name.expression; - if (expr.kind === 166 /* PropertyAccessExpression */) { + if (expr.kind === 168 /* PropertyAccessExpression */) { return expr.name.text; } return getTextOfIdentifierOrLiteral(expr); @@ -44762,7 +45698,7 @@ var ts; } function visit(node) { switch (node.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: var functionDeclaration = node; @@ -44784,31 +45720,31 @@ var ts; ts.forEachChild(node, visit); } break; - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: - case 217 /* EnumDeclaration */: - case 218 /* ModuleDeclaration */: - case 221 /* ImportEqualsDeclaration */: - case 230 /* ExportSpecifier */: - case 226 /* ImportSpecifier */: - case 221 /* ImportEqualsDeclaration */: - case 223 /* ImportClause */: - case 224 /* NamespaceImport */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: + case 219 /* EnumDeclaration */: + case 220 /* ModuleDeclaration */: + case 223 /* ImportEqualsDeclaration */: + case 232 /* ExportSpecifier */: + case 228 /* ImportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 225 /* ImportClause */: + case 226 /* NamespaceImport */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 155 /* TypeLiteral */: addDeclaration(node); // fall through case 144 /* Constructor */: - case 193 /* VariableStatement */: - case 212 /* VariableDeclarationList */: - case 161 /* ObjectBindingPattern */: - case 162 /* ArrayBindingPattern */: - case 219 /* ModuleBlock */: + case 195 /* VariableStatement */: + case 214 /* VariableDeclarationList */: + case 163 /* ObjectBindingPattern */: + case 164 /* ArrayBindingPattern */: + case 221 /* ModuleBlock */: ts.forEachChild(node, visit); break; - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionBlock(node)) { ts.forEachChild(node, visit); } @@ -44819,25 +45755,25 @@ var ts; break; } // fall through - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: if (ts.isBindingPattern(node.name)) { ts.forEachChild(node.name, visit); break; } - case 247 /* EnumMember */: + case 249 /* EnumMember */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: addDeclaration(node); break; - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: // Handle named exports case e.g.: // export {a, b as B} from "mod"; if (node.exportClause) { ts.forEach(node.exportClause.elements, visit); } break; - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: var importClause = node.importClause; if (importClause) { // Handle default import case e.g.: @@ -44849,7 +45785,7 @@ var ts; // import * as NS from "mod"; // import {a, b as B} from "mod"; if (importClause.namedBindings) { - if (importClause.namedBindings.kind === 224 /* NamespaceImport */) { + if (importClause.namedBindings.kind === 226 /* NamespaceImport */) { addDeclaration(importClause.namedBindings); } else { @@ -44862,12 +45798,12 @@ var ts; } }; return SourceFileObject; - })(NodeObject); + }(NodeObject)); var TextChange = (function () { function TextChange() { } return TextChange; - })(); + }()); ts.TextChange = TextChange; var HighlightSpanKind; (function (HighlightSpanKind) { @@ -44957,7 +45893,7 @@ var ts; // enum E ScriptElementKind.enumElement = "enum"; // Inside module and script only - // let v = .. + // const v = .. ScriptElementKind.variableElement = "var"; // Inside function ScriptElementKind.localVariableElement = "local var"; @@ -45026,7 +45962,7 @@ var ts; ClassificationTypeNames.jsxCloseTagName = "jsx close tag name"; ClassificationTypeNames.jsxSelfClosingTagName = "jsx self closing tag name"; return ClassificationTypeNames; - })(); + }()); ts.ClassificationTypeNames = ClassificationTypeNames; (function (ClassificationType) { ClassificationType[ClassificationType["comment"] = 1] = "comment"; @@ -45065,16 +46001,16 @@ var ts; } return ts.forEach(symbol.declarations, function (declaration) { // Function expressions are local - if (declaration.kind === 173 /* FunctionExpression */) { + if (declaration.kind === 175 /* FunctionExpression */) { return true; } - if (declaration.kind !== 211 /* VariableDeclaration */ && declaration.kind !== 213 /* FunctionDeclaration */) { + if (declaration.kind !== 213 /* VariableDeclaration */ && declaration.kind !== 215 /* FunctionDeclaration */) { return false; } // If the parent is not sourceFile or module block it is local variable for (var parent_8 = declaration.parent; !ts.isFunctionBlock(parent_8); parent_8 = parent_8.parent) { // Reached source file or module block - if (parent_8.kind === 248 /* SourceFile */ || parent_8.kind === 219 /* ModuleBlock */) { + if (parent_8.kind === 250 /* SourceFile */ || parent_8.kind === 221 /* ModuleBlock */) { return false; } } @@ -45157,7 +46093,7 @@ var ts; return file && file.scriptSnapshot; }; return HostCache; - })(); + }()); var SyntaxTreeCache = (function () { function SyntaxTreeCache(host) { this.host = host; @@ -45172,7 +46108,7 @@ var ts; var sourceFile; if (this.currentFileName !== fileName) { // This is a new file, just parse it - sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2 /* Latest */, version, /*setNodeParents:*/ true); + sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, 2 /* Latest */, version, /*setNodeParents*/ true); } else if (this.currentFileVersion !== version) { // This is the same file, just a newer version. Incrementally parse the file. @@ -45189,7 +46125,7 @@ var ts; return this.currentSourceFile; }; return SyntaxTreeCache; - })(); + }()); function setSourceFileFields(sourceFile, scriptSnapshot, version) { sourceFile.version = version; sourceFile.scriptSnapshot = scriptSnapshot; @@ -45234,7 +46170,7 @@ var ts; sourceMapText = text; } else { - ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: " + name); + ts.Debug.assert(outputText === undefined, "Unexpected multiple outputs for the file: '" + name + "'"); outputText = text; } }, @@ -45244,7 +46180,8 @@ var ts; getCurrentDirectory: function () { return ""; }, getNewLine: function () { return newLine; }, fileExists: function (fileName) { return fileName === inputFileName; }, - readFile: function (fileName) { return ""; } + readFile: function (fileName) { return ""; }, + directoryExists: function (directoryExists) { return true; } }; var program = ts.createProgram([inputFileName], options, compilerHost); var diagnostics; @@ -45326,7 +46263,7 @@ var ts; } } // Otherwise, just create a new source file. - return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, /*setNodeParents:*/ true); + return createLanguageServiceSourceFile(sourceFile.fileName, scriptSnapshot, sourceFile.languageVersion, version, /*setNodeParents*/ true); } ts.updateLanguageServiceSourceFile = updateLanguageServiceSourceFile; function createGetCanonicalFileName(useCaseSensitivefileNames) { @@ -45342,7 +46279,7 @@ var ts; var buckets = {}; var getCanonicalFileName = createGetCanonicalFileName(!!useCaseSensitiveFileNames); function getKeyFromCompilationSettings(settings) { - return "_" + settings.target + "|" + settings.module + "|" + settings.noResolve + "|" + settings.jsx; + return "_" + settings.target + "|" + settings.module + "|" + settings.noResolve + "|" + settings.jsx + +"|" + settings.allowJs; } function getBucketForCompilationSettings(settings, createIfMissing) { var key = getKeyFromCompilationSettings(settings); @@ -45353,7 +46290,7 @@ var ts; return bucket; } function reportStats() { - var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === '_'; }).map(function (name) { + var bucketInfoArray = Object.keys(buckets).filter(function (name) { return name && name.charAt(0) === "_"; }).map(function (name) { var entries = ts.lookUp(buckets, name); var sourceFiles = []; entries.forEachValue(function (key, entry) { @@ -45369,13 +46306,13 @@ var ts; sourceFiles: sourceFiles }; }); - return JSON.stringify(bucketInfoArray, null, 2); + return JSON.stringify(bucketInfoArray, undefined, 2); } function acquireDocument(fileName, compilationSettings, scriptSnapshot, version) { - return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring:*/ true); + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring*/ true); } function updateDocument(fileName, compilationSettings, scriptSnapshot, version) { - return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring:*/ false); + return acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, /*acquiring*/ false); } function acquireOrUpdateDocument(fileName, compilationSettings, scriptSnapshot, version, acquiring) { var bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ true); @@ -45384,7 +46321,7 @@ var ts; if (!entry) { ts.Debug.assert(acquiring, "How could we be trying to update a document that the registry doesn't have?"); // Have never seen this file with these settings. Create a new source file for it. - var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, /*setNodeParents:*/ false); + var sourceFile = createLanguageServiceSourceFile(fileName, scriptSnapshot, compilationSettings.target, version, /*setNodeParents*/ false); entry = { sourceFile: sourceFile, languageServiceRefCount: 0, @@ -45411,7 +46348,7 @@ var ts; return entry.sourceFile; } function releaseDocument(fileName, compilationSettings) { - var bucket = getBucketForCompilationSettings(compilationSettings, false); + var bucket = getBucketForCompilationSettings(compilationSettings, /*createIfMissing*/ false); ts.Debug.assert(bucket !== undefined); var path = ts.toPath(fileName, currentDirectory, getCanonicalFileName); var entry = bucket.get(path); @@ -45507,7 +46444,7 @@ var ts; } } else if (token === 56 /* EqualsToken */) { - if (tryConsumeRequireCall(/* skipCurrentToken */ true)) { + if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; } } @@ -45599,7 +46536,7 @@ var ts; if (token === 69 /* Identifier */ || ts.isKeyword(token)) { token = scanner.scan(); if (token === 56 /* EqualsToken */) { - if (tryConsumeRequireCall(/* skipCurrentToken */ true)) { + if (tryConsumeRequireCall(/*skipCurrentToken*/ true)) { return true; } } @@ -45686,7 +46623,7 @@ var ts; if (tryConsumeDeclare() || tryConsumeImport() || tryConsumeExport() || - (detectJavaScriptImports && (tryConsumeRequireCall(/* skipCurrentToken */ false) || tryConsumeDefine()))) { + (detectJavaScriptImports && (tryConsumeRequireCall(/*skipCurrentToken*/ false) || tryConsumeDefine()))) { continue; } else { @@ -45705,7 +46642,7 @@ var ts; /// Helpers function getTargetLabel(referenceNode, labelName) { while (referenceNode) { - if (referenceNode.kind === 207 /* LabeledStatement */ && referenceNode.label.text === labelName) { + if (referenceNode.kind === 209 /* LabeledStatement */ && referenceNode.label.text === labelName) { return referenceNode.label; } referenceNode = referenceNode.parent; @@ -45714,12 +46651,12 @@ var ts; } function isJumpStatementTarget(node) { return node.kind === 69 /* Identifier */ && - (node.parent.kind === 203 /* BreakStatement */ || node.parent.kind === 202 /* ContinueStatement */) && + (node.parent.kind === 205 /* BreakStatement */ || node.parent.kind === 204 /* ContinueStatement */) && node.parent.label === node; } function isLabelOfLabeledStatement(node) { return node.kind === 69 /* Identifier */ && - node.parent.kind === 207 /* LabeledStatement */ && + node.parent.kind === 209 /* LabeledStatement */ && node.parent.label === node; } /** @@ -45727,7 +46664,7 @@ var ts; * Note: 'node' cannot be a SourceFile. */ function isLabeledBy(node, labelName) { - for (var owner = node.parent; owner.kind === 207 /* LabeledStatement */; owner = owner.parent) { + for (var owner = node.parent; owner.kind === 209 /* LabeledStatement */; owner = owner.parent) { if (owner.label.text === labelName) { return true; } @@ -45741,22 +46678,22 @@ var ts; return node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node; } function isRightSideOfPropertyAccess(node) { - return node && node.parent && node.parent.kind === 166 /* PropertyAccessExpression */ && node.parent.name === node; + return node && node.parent && node.parent.kind === 168 /* PropertyAccessExpression */ && node.parent.name === node; } function isCallExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 168 /* CallExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 170 /* CallExpression */ && node.parent.expression === node; } function isNewExpressionTarget(node) { if (isRightSideOfPropertyAccess(node)) { node = node.parent; } - return node && node.parent && node.parent.kind === 169 /* NewExpression */ && node.parent.expression === node; + return node && node.parent && node.parent.kind === 171 /* NewExpression */ && node.parent.expression === node; } function isNameOfModuleDeclaration(node) { - return node.parent.kind === 218 /* ModuleDeclaration */ && node.parent.name === node; + return node.parent.kind === 220 /* ModuleDeclaration */ && node.parent.name === node; } function isNameOfFunctionDeclaration(node) { return node.kind === 69 /* Identifier */ && @@ -45765,22 +46702,22 @@ var ts; /** Returns true if node is a name of an object literal property, e.g. "a" in x = { "a": 1 } */ function isNameOfPropertyAssignment(node) { return (node.kind === 69 /* Identifier */ || node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) && - (node.parent.kind === 245 /* PropertyAssignment */ || node.parent.kind === 246 /* ShorthandPropertyAssignment */) && node.parent.name === node; + (node.parent.kind === 247 /* PropertyAssignment */ || node.parent.kind === 248 /* ShorthandPropertyAssignment */) && node.parent.name === node; } function isLiteralNameOfPropertyDeclarationOrIndexAccess(node) { if (node.kind === 9 /* StringLiteral */ || node.kind === 8 /* NumericLiteral */) { switch (node.parent.kind) { case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 245 /* PropertyAssignment */: - case 247 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 249 /* EnumMember */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: return node.parent.name === node; - case 167 /* ElementAccessExpression */: + case 169 /* ElementAccessExpression */: return node.parent.argumentExpression === node; } } @@ -45854,17 +46791,17 @@ var ts; return undefined; } switch (node.kind) { - case 248 /* SourceFile */: + case 250 /* SourceFile */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 217 /* EnumDeclaration */: - case 218 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 219 /* EnumDeclaration */: + case 220 /* ModuleDeclaration */: return node; } } @@ -45872,18 +46809,18 @@ var ts; ts.getContainerNode = getContainerNode; /* @internal */ function getNodeKind(node) { switch (node.kind) { - case 218 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; - case 214 /* ClassDeclaration */: return ScriptElementKind.classElement; - case 215 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; - case 216 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; - case 217 /* EnumDeclaration */: return ScriptElementKind.enumElement; - case 211 /* VariableDeclaration */: + case 220 /* ModuleDeclaration */: return ScriptElementKind.moduleElement; + case 216 /* ClassDeclaration */: return ScriptElementKind.classElement; + case 217 /* InterfaceDeclaration */: return ScriptElementKind.interfaceElement; + case 218 /* TypeAliasDeclaration */: return ScriptElementKind.typeElement; + case 219 /* EnumDeclaration */: return ScriptElementKind.enumElement; + case 213 /* VariableDeclaration */: return ts.isConst(node) ? ScriptElementKind.constElement : ts.isLet(node) ? ScriptElementKind.letElement : ScriptElementKind.variableElement; - case 213 /* FunctionDeclaration */: return ScriptElementKind.functionElement; + case 215 /* FunctionDeclaration */: return ScriptElementKind.functionElement; case 145 /* GetAccessor */: return ScriptElementKind.memberGetAccessorElement; case 146 /* SetAccessor */: return ScriptElementKind.memberSetAccessorElement; case 143 /* MethodDeclaration */: @@ -45897,13 +46834,13 @@ var ts; case 147 /* CallSignature */: return ScriptElementKind.callSignatureElement; case 144 /* Constructor */: return ScriptElementKind.constructorImplementationElement; case 137 /* TypeParameter */: return ScriptElementKind.typeParameterElement; - case 247 /* EnumMember */: return ScriptElementKind.variableElement; + case 249 /* EnumMember */: return ScriptElementKind.variableElement; case 138 /* Parameter */: return (node.flags & 56 /* AccessibilityModifier */) ? ScriptElementKind.memberVariableElement : ScriptElementKind.parameterElement; - case 221 /* ImportEqualsDeclaration */: - case 226 /* ImportSpecifier */: - case 223 /* ImportClause */: - case 230 /* ExportSpecifier */: - case 224 /* NamespaceImport */: + case 223 /* ImportEqualsDeclaration */: + case 228 /* ImportSpecifier */: + case 225 /* ImportClause */: + case 232 /* ExportSpecifier */: + case 226 /* NamespaceImport */: return ScriptElementKind.alias; } return ScriptElementKind.unknown; @@ -45922,7 +46859,7 @@ var ts; } }; return CancellationTokenObject; - })(); + }()); function createLanguageService(host, documentRegistry) { if (documentRegistry === void 0) { documentRegistry = createDocumentRegistry(host.useCaseSensitiveFileNames && host.useCaseSensitiveFileNames(), host.getCurrentDirectory()); } var syntaxTreeCache = new SyntaxTreeCache(host); @@ -45985,7 +46922,8 @@ var ts; (oldSettings.target !== newSettings.target || oldSettings.module !== newSettings.module || oldSettings.noResolve !== newSettings.noResolve || - oldSettings.jsx !== newSettings.jsx); + oldSettings.jsx !== newSettings.jsx || + oldSettings.allowJs !== newSettings.allowJs); // Now create a new compiler var compilerHost = { getSourceFile: getOrCreateSourceFile, @@ -46005,6 +46943,10 @@ var ts; // stub missing host functionality var entry = hostCache.getOrCreateEntry(fileName); return entry && entry.scriptSnapshot.getText(0, entry.scriptSnapshot.getLength()); + }, + directoryExists: function (directoryName) { + ts.Debug.assert(!host.resolveModuleNames); + return ts.directoryProbablyExists(directoryName, host); } }; if (host.resolveModuleNames) { @@ -46074,8 +47016,11 @@ var ts; return documentRegistry.acquireDocument(fileName, newSettings, hostFileInformation.scriptSnapshot, hostFileInformation.version); } function sourceFileUpToDate(sourceFile) { + if (!sourceFile) { + return false; + } var path = sourceFile.path || ts.toPath(sourceFile.fileName, currentDirectory, getCanonicalFileName); - return sourceFile && sourceFile.version === hostCache.getVersion(path); + return sourceFile.version === hostCache.getVersion(path); } function programUpToDate() { // If we haven't create a program yet, then it is not up-to-date @@ -46124,12 +47069,6 @@ var ts; function getSemanticDiagnostics(fileName) { synchronizeHostData(); var targetSourceFile = getValidSourceFile(fileName); - // 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 (ts.isSourceFileJavaScript(targetSourceFile)) { - return getJavaScriptSemanticDiagnostics(targetSourceFile); - } // Only perform the action per file regardless of '-out' flag as LanguageServiceHost is expected to call this function per file. // Therefore only get diagnostics for given file. var semanticDiagnostics = program.getSemanticDiagnostics(targetSourceFile, cancellationToken); @@ -46140,151 +47079,6 @@ var ts; var declarationDiagnostics = program.getDeclarationDiagnostics(targetSourceFile, cancellationToken); return ts.concatenate(semanticDiagnostics, declarationDiagnostics); } - function getJavaScriptSemanticDiagnostics(sourceFile) { - var diagnostics = []; - walk(sourceFile); - return diagnostics; - function walk(node) { - if (!node) { - return false; - } - switch (node.kind) { - case 221 /* ImportEqualsDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.import_can_only_be_used_in_a_ts_file)); - return true; - case 227 /* ExportAssignment */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.export_can_only_be_used_in_a_ts_file)); - return true; - case 214 /* ClassDeclaration */: - var classDeclaration = node; - if (checkModifiers(classDeclaration.modifiers) || - checkTypeParameters(classDeclaration.typeParameters)) { - return true; - } - break; - case 243 /* HeritageClause */: - var heritageClause = node; - if (heritageClause.token === 106 /* ImplementsKeyword */) { - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 215 /* InterfaceDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 218 /* ModuleDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 216 /* TypeAliasDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file)); - return true; - case 143 /* MethodDeclaration */: - case 142 /* MethodSignature */: - case 144 /* Constructor */: - case 145 /* GetAccessor */: - case 146 /* SetAccessor */: - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: - case 213 /* FunctionDeclaration */: - var functionDeclaration = node; - if (checkModifiers(functionDeclaration.modifiers) || - checkTypeParameters(functionDeclaration.typeParameters) || - checkTypeAnnotation(functionDeclaration.type)) { - return true; - } - break; - case 193 /* VariableStatement */: - var variableStatement = node; - if (checkModifiers(variableStatement.modifiers)) { - return true; - } - break; - case 211 /* VariableDeclaration */: - var variableDeclaration = node; - if (checkTypeAnnotation(variableDeclaration.type)) { - return true; - } - break; - case 168 /* CallExpression */: - case 169 /* NewExpression */: - var expression = node; - if (expression.typeArguments && expression.typeArguments.length > 0) { - var start = expression.typeArguments.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, expression.typeArguments.end - start, ts.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 138 /* Parameter */: - var parameter = node; - if (parameter.modifiers) { - var start = parameter.modifiers.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, parameter.modifiers.end - start, ts.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file)); - return true; - } - if (parameter.questionToken) { - diagnostics.push(ts.createDiagnosticForNode(parameter.questionToken, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, '?')); - return true; - } - if (parameter.type) { - diagnostics.push(ts.createDiagnosticForNode(parameter.type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); - return true; - } - break; - case 141 /* PropertyDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.property_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 217 /* EnumDeclaration */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file)); - return true; - case 171 /* TypeAssertionExpression */: - var typeAssertionExpression = node; - diagnostics.push(ts.createDiagnosticForNode(typeAssertionExpression.type, ts.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file)); - return true; - case 139 /* Decorator */: - diagnostics.push(ts.createDiagnosticForNode(node, ts.Diagnostics.decorators_can_only_be_used_in_a_ts_file)); - return true; - } - return ts.forEachChild(node, walk); - } - function checkTypeParameters(typeParameters) { - if (typeParameters) { - var start = typeParameters.pos; - diagnostics.push(ts.createFileDiagnostic(sourceFile, start, typeParameters.end - start, ts.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file)); - return true; - } - return false; - } - function checkTypeAnnotation(type) { - if (type) { - diagnostics.push(ts.createDiagnosticForNode(type, ts.Diagnostics.types_can_only_be_used_in_a_ts_file)); - return true; - } - return false; - } - function checkModifiers(modifiers) { - if (modifiers) { - for (var _i = 0, modifiers_1 = modifiers; _i < modifiers_1.length; _i++) { - var modifier = modifiers_1[_i]; - switch (modifier.kind) { - case 112 /* PublicKeyword */: - case 110 /* PrivateKeyword */: - case 111 /* ProtectedKeyword */: - case 122 /* DeclareKeyword */: - diagnostics.push(ts.createDiagnosticForNode(modifier, ts.Diagnostics._0_can_only_be_used_in_a_ts_file, ts.tokenToString(modifier.kind))); - return true; - // These are all legal modifiers. - case 113 /* StaticKeyword */: - case 82 /* ExportKeyword */: - case 74 /* ConstKeyword */: - case 77 /* DefaultKeyword */: - case 115 /* AbstractKeyword */: - } - } - } - return false; - } - } function getCompilerOptionsDiagnostics() { synchronizeHostData(); return program.getOptionsDiagnostics(cancellationToken).concat(program.getGlobalDiagnostics(cancellationToken)); @@ -46301,7 +47095,7 @@ var ts; // First check of the displayName is not external module; if it is an external module, it is not valid entry if ((symbol.flags & 1536 /* Namespace */) && (firstCharCode === 39 /* singleQuote */ || firstCharCode === 34 /* doubleQuote */)) { // If the symbol is external module, don't show it in the completion list - // (i.e declare module "http" { let x; } | // <= request completion here, "http" should not be there) + // (i.e declare module "http" { const x; } | // <= request completion here, "http" should not be there) return undefined; } } @@ -46324,20 +47118,14 @@ var ts; // e.g "b a" is valid quoted name but when we strip off the quotes, it is invalid. // We, thus, need to check if whatever was inside the quotes is actually a valid identifier name. if (performCharacterChecks) { - if (!ts.isIdentifierStart(name.charCodeAt(0), target)) { + if (!ts.isIdentifier(name, target)) { return undefined; } - for (var i = 1, n = name.length; i < n; i++) { - if (!ts.isIdentifierPart(name.charCodeAt(i), target)) { - return undefined; - } - } } return name; } function getCompletionData(fileName, position) { var typeChecker = program.getTypeChecker(); - var syntacticStart = new Date().getTime(); var sourceFile = getValidSourceFile(fileName); var isJavaScriptFile = ts.isSourceFileJavaScript(sourceFile); var isJsDocTagName = false; @@ -46349,7 +47137,7 @@ var ts; var insideComment = isInsideComment(sourceFile, currentToken, position); log("getCompletionData: Is inside comment: " + (new Date().getTime() - start)); if (insideComment) { - // The current position is next to the '@' sign, when no tag name being provided yet. + // The current position is next to the '@' sign, when no tag name being provided yet. // Provide a full list of tag names if (ts.hasDocComment(sourceFile, position) && sourceFile.text.charCodeAt(position - 1) === 64 /* at */) { isJsDocTagName = true; @@ -46364,9 +47152,9 @@ var ts; isJsDocTagName = true; } switch (tag.kind) { - case 269 /* JSDocTypeTag */: - case 267 /* JSDocParameterTag */: - case 268 /* JSDocReturnTag */: + case 271 /* JSDocTypeTag */: + case 269 /* JSDocParameterTag */: + case 270 /* JSDocReturnTag */: var tagWithExpression = tag; if (tagWithExpression.typeExpression) { insideJsDocTagExpression = tagWithExpression.typeExpression.pos < position && position < tagWithExpression.typeExpression.end; @@ -46378,7 +47166,7 @@ var ts; return { symbols: undefined, isMemberCompletion: false, isNewIdentifierLocation: false, location: undefined, isRightOfDot: false, isJsDocTagName: isJsDocTagName }; } if (!insideJsDocTagExpression) { - // Proceed if the current position is in jsDoc tag expression; otherwise it is a normal + // Proceed if the current position is in jsDoc tag expression; otherwise it is a normal // comment or the plain text part of a jsDoc comment, so no completion should be available log("Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment."); return undefined; @@ -46393,9 +47181,9 @@ var ts; // Check if the caret is at the end of an identifier; this is a partial identifier that we want to complete: e.g. a.toS| // Skip this partial identifier and adjust the contextToken to the token that precedes it. if (contextToken && position <= contextToken.end && ts.isWord(contextToken.kind)) { - var start_3 = new Date().getTime(); + var start_6 = new Date().getTime(); contextToken = ts.findPrecedingToken(contextToken.getFullStart(), sourceFile); - log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_3)); + log("getCompletionData: Get previous token 2: " + (new Date().getTime() - start_6)); } // Find the node where completion is requested on. // Also determine whether we are trying to complete with members of that node @@ -46413,7 +47201,7 @@ var ts; } var parent_9 = contextToken.parent, kind = contextToken.kind; if (kind === 21 /* DotToken */) { - if (parent_9.kind === 166 /* PropertyAccessExpression */) { + if (parent_9.kind === 168 /* PropertyAccessExpression */) { node = contextToken.parent.expression; isRightOfDot = true; } @@ -46432,7 +47220,7 @@ var ts; isRightOfOpenTag = true; location = contextToken; } - else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 237 /* JsxClosingElement */) { + else if (kind === 39 /* SlashToken */ && contextToken.parent.kind === 239 /* JsxClosingElement */) { isStartingCloseTag = true; } } @@ -46475,7 +47263,7 @@ var ts; // Right of dot member completion list isMemberCompletion = true; isNewIdentifierLocation = false; - if (node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 166 /* PropertyAccessExpression */) { + if (node.kind === 69 /* Identifier */ || node.kind === 135 /* QualifiedName */ || node.kind === 168 /* PropertyAccessExpression */) { var symbol = typeChecker.getSymbolAtLocation(node); // This is an alias, follow what it aliases if (symbol && symbol.flags & 8388608 /* Alias */) { @@ -46531,7 +47319,7 @@ var ts; } if (jsxContainer = tryGetContainingJsxElement(contextToken)) { var attrsType; - if ((jsxContainer.kind === 234 /* JsxSelfClosingElement */) || (jsxContainer.kind === 235 /* JsxOpeningElement */)) { + if ((jsxContainer.kind === 236 /* JsxSelfClosingElement */) || (jsxContainer.kind === 237 /* JsxOpeningElement */)) { // Cursor is inside a JSX self-closing element or opening element attrsType = typeChecker.getJsxElementAttributesType(jsxContainer); if (attrsType) { @@ -46603,15 +47391,15 @@ var ts; return result; } function isInJsxText(contextToken) { - if (contextToken.kind === 236 /* JsxText */) { + if (contextToken.kind === 238 /* JsxText */) { return true; } if (contextToken.kind === 27 /* GreaterThanToken */ && contextToken.parent) { - if (contextToken.parent.kind === 235 /* JsxOpeningElement */) { + if (contextToken.parent.kind === 237 /* JsxOpeningElement */) { return true; } - if (contextToken.parent.kind === 237 /* JsxClosingElement */ || contextToken.parent.kind === 234 /* JsxSelfClosingElement */) { - return contextToken.parent.parent && contextToken.parent.parent.kind === 233 /* JsxElement */; + if (contextToken.parent.kind === 239 /* JsxClosingElement */ || contextToken.parent.kind === 236 /* JsxSelfClosingElement */) { + return contextToken.parent.parent && contextToken.parent.parent.kind === 235 /* JsxElement */; } } return false; @@ -46621,36 +47409,36 @@ var ts; var containingNodeKind = previousToken.parent.kind; switch (previousToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 168 /* CallExpression */ // func( a, | + return containingNodeKind === 170 /* CallExpression */ // func( a, | || containingNodeKind === 144 /* Constructor */ // constructor( a, | /* public, protected, private keywords are allowed here, so show completion */ - || containingNodeKind === 169 /* NewExpression */ // new C(a, | - || containingNodeKind === 164 /* ArrayLiteralExpression */ // [a, | - || containingNodeKind === 181 /* BinaryExpression */ // let x = (a, | + || containingNodeKind === 171 /* NewExpression */ // new C(a, | + || containingNodeKind === 166 /* ArrayLiteralExpression */ // [a, | + || containingNodeKind === 183 /* BinaryExpression */ // const x = (a, | || containingNodeKind === 152 /* FunctionType */; // var x: (s: string, list| case 17 /* OpenParenToken */: - return containingNodeKind === 168 /* CallExpression */ // func( | + return containingNodeKind === 170 /* CallExpression */ // func( | || containingNodeKind === 144 /* Constructor */ // constructor( | - || containingNodeKind === 169 /* NewExpression */ // new C(a| - || containingNodeKind === 172 /* ParenthesizedExpression */ // let x = (a| + || containingNodeKind === 171 /* NewExpression */ // new C(a| + || containingNodeKind === 174 /* ParenthesizedExpression */ // const x = (a| || containingNodeKind === 160 /* ParenthesizedType */; // function F(pred: (a| /* this can become an arrow function, where 'a' is the argument */ case 19 /* OpenBracketToken */: - return containingNodeKind === 164 /* ArrayLiteralExpression */ // [ | + return containingNodeKind === 166 /* ArrayLiteralExpression */ // [ | || containingNodeKind === 149 /* IndexSignature */ // [ | : string ] || containingNodeKind === 136 /* ComputedPropertyName */; // [ | /* this can become an index signature */ case 125 /* ModuleKeyword */: // module | case 126 /* NamespaceKeyword */: return true; case 21 /* DotToken */: - return containingNodeKind === 218 /* ModuleDeclaration */; // module A.| + return containingNodeKind === 220 /* ModuleDeclaration */; // module A.| case 15 /* OpenBraceToken */: - return containingNodeKind === 214 /* ClassDeclaration */; // class A{ | + return containingNodeKind === 216 /* ClassDeclaration */; // class A{ | case 56 /* EqualsToken */: - return containingNodeKind === 211 /* VariableDeclaration */ // let x = a| - || containingNodeKind === 181 /* BinaryExpression */; // x = a| + return containingNodeKind === 213 /* VariableDeclaration */ // const x = a| + || containingNodeKind === 183 /* BinaryExpression */; // x = a| case 12 /* TemplateHead */: - return containingNodeKind === 183 /* TemplateExpression */; // `aa ${| + return containingNodeKind === 185 /* TemplateExpression */; // `aa ${| case 13 /* TemplateMiddle */: - return containingNodeKind === 190 /* TemplateSpan */; // `aa ${10} dd ${| + return containingNodeKind === 192 /* TemplateSpan */; // `aa ${10} dd ${| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: @@ -46668,15 +47456,16 @@ var ts; } function isInStringOrRegularExpressionOrTemplateLiteral(contextToken) { if (contextToken.kind === 9 /* StringLiteral */ + || contextToken.kind === 162 /* StringLiteralType */ || contextToken.kind === 10 /* RegularExpressionLiteral */ || ts.isTemplateLiteralKind(contextToken.kind)) { - var start_4 = contextToken.getStart(); + var start_7 = contextToken.getStart(); var end = contextToken.getEnd(); // To be "in" one of these literals, the position has to be: // 1. entirely within the token text. // 2. at the end position of an unterminated token. // 3. at the end of a regular expression (due to trailing flags like '/foo/g'). - if (start_4 < position && position < end) { + if (start_7 < position && position < end) { return true; } if (position === end) { @@ -46697,14 +47486,14 @@ var ts; isMemberCompletion = true; var typeForObject; var existingMembers; - if (objectLikeContainer.kind === 165 /* ObjectLiteralExpression */) { + if (objectLikeContainer.kind === 167 /* ObjectLiteralExpression */) { // We are completing on contextual types, but may also include properties // other than those within the declared type. isNewIdentifierLocation = true; typeForObject = typeChecker.getContextualType(objectLikeContainer); existingMembers = objectLikeContainer.properties; } - else if (objectLikeContainer.kind === 161 /* ObjectBindingPattern */) { + else if (objectLikeContainer.kind === 163 /* ObjectBindingPattern */) { // We are *only* completing on properties from the type being destructured. isNewIdentifierLocation = false; var rootDeclaration = ts.getRootDeclaration(objectLikeContainer.parent); @@ -46750,9 +47539,9 @@ var ts; * @returns true if 'symbols' was successfully populated; false otherwise. */ function tryGetImportOrExportClauseCompletionSymbols(namedImportsOrExports) { - var declarationKind = namedImportsOrExports.kind === 225 /* NamedImports */ ? - 222 /* ImportDeclaration */ : - 228 /* ExportDeclaration */; + var declarationKind = namedImportsOrExports.kind === 227 /* NamedImports */ ? + 224 /* ImportDeclaration */ : + 230 /* ExportDeclaration */; var importOrExportDeclaration = ts.getAncestor(namedImportsOrExports, declarationKind); var moduleSpecifier = importOrExportDeclaration.moduleSpecifier; if (!moduleSpecifier) { @@ -46775,10 +47564,10 @@ var ts; function tryGetObjectLikeCompletionContainer(contextToken) { if (contextToken) { switch (contextToken.kind) { - case 15 /* OpenBraceToken */: // let x = { | + case 15 /* OpenBraceToken */: // const x = { | case 24 /* CommaToken */: var parent_10 = contextToken.parent; - if (parent_10 && (parent_10.kind === 165 /* ObjectLiteralExpression */ || parent_10.kind === 161 /* ObjectBindingPattern */)) { + if (parent_10 && (parent_10.kind === 167 /* ObjectLiteralExpression */ || parent_10.kind === 163 /* ObjectBindingPattern */)) { return parent_10; } break; @@ -46796,8 +47585,8 @@ var ts; case 15 /* OpenBraceToken */: // import { | case 24 /* CommaToken */: switch (contextToken.parent.kind) { - case 225 /* NamedImports */: - case 229 /* NamedExports */: + case 227 /* NamedImports */: + case 231 /* NamedExports */: return contextToken.parent; } } @@ -46811,12 +47600,12 @@ var ts; case 26 /* LessThanSlashToken */: case 39 /* SlashToken */: case 69 /* Identifier */: - case 238 /* JsxAttribute */: - case 239 /* JsxSpreadAttribute */: - if (parent_11 && (parent_11.kind === 234 /* JsxSelfClosingElement */ || parent_11.kind === 235 /* JsxOpeningElement */)) { + case 240 /* JsxAttribute */: + case 241 /* JsxSpreadAttribute */: + if (parent_11 && (parent_11.kind === 236 /* JsxSelfClosingElement */ || parent_11.kind === 237 /* JsxOpeningElement */)) { return parent_11; } - else if (parent_11.kind === 238 /* JsxAttribute */) { + else if (parent_11.kind === 240 /* JsxAttribute */) { return parent_11.parent; } break; @@ -46824,18 +47613,18 @@ var ts; // its parent is a JsxExpression, whose parent is a JsxAttribute, // whose parent is a JsxOpeningLikeElement case 9 /* StringLiteral */: - if (parent_11 && ((parent_11.kind === 238 /* JsxAttribute */) || (parent_11.kind === 239 /* JsxSpreadAttribute */))) { + if (parent_11 && ((parent_11.kind === 240 /* JsxAttribute */) || (parent_11.kind === 241 /* JsxSpreadAttribute */))) { return parent_11.parent; } break; case 16 /* CloseBraceToken */: if (parent_11 && - parent_11.kind === 240 /* JsxExpression */ && + parent_11.kind === 242 /* JsxExpression */ && parent_11.parent && - (parent_11.parent.kind === 238 /* JsxAttribute */)) { + (parent_11.parent.kind === 240 /* JsxAttribute */)) { return parent_11.parent.parent; } - if (parent_11 && parent_11.kind === 239 /* JsxSpreadAttribute */) { + if (parent_11 && parent_11.kind === 241 /* JsxSpreadAttribute */) { return parent_11.parent; } break; @@ -46845,9 +47634,9 @@ var ts; } function isFunction(kind) { switch (kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 213 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: @@ -46866,54 +47655,54 @@ var ts; var containingNodeKind = contextToken.parent.kind; switch (contextToken.kind) { case 24 /* CommaToken */: - return containingNodeKind === 211 /* VariableDeclaration */ || - containingNodeKind === 212 /* VariableDeclarationList */ || - containingNodeKind === 193 /* VariableStatement */ || - containingNodeKind === 217 /* EnumDeclaration */ || + return containingNodeKind === 213 /* VariableDeclaration */ || + containingNodeKind === 214 /* VariableDeclarationList */ || + containingNodeKind === 195 /* VariableStatement */ || + containingNodeKind === 219 /* EnumDeclaration */ || isFunction(containingNodeKind) || - containingNodeKind === 214 /* ClassDeclaration */ || - containingNodeKind === 186 /* ClassExpression */ || - containingNodeKind === 215 /* InterfaceDeclaration */ || - containingNodeKind === 162 /* ArrayBindingPattern */ || - containingNodeKind === 216 /* TypeAliasDeclaration */; // type Map, K, | + containingNodeKind === 216 /* ClassDeclaration */ || + containingNodeKind === 188 /* ClassExpression */ || + containingNodeKind === 217 /* InterfaceDeclaration */ || + containingNodeKind === 164 /* ArrayBindingPattern */ || + containingNodeKind === 218 /* TypeAliasDeclaration */; // type Map, K, | case 21 /* DotToken */: - return containingNodeKind === 162 /* ArrayBindingPattern */; // var [.| + return containingNodeKind === 164 /* ArrayBindingPattern */; // var [.| case 54 /* ColonToken */: - return containingNodeKind === 163 /* BindingElement */; // var {x :html| + return containingNodeKind === 165 /* BindingElement */; // var {x :html| case 19 /* OpenBracketToken */: - return containingNodeKind === 162 /* ArrayBindingPattern */; // var [x| + return containingNodeKind === 164 /* ArrayBindingPattern */; // var [x| case 17 /* OpenParenToken */: - return containingNodeKind === 244 /* CatchClause */ || + return containingNodeKind === 246 /* CatchClause */ || isFunction(containingNodeKind); case 15 /* OpenBraceToken */: - return containingNodeKind === 217 /* EnumDeclaration */ || - containingNodeKind === 215 /* InterfaceDeclaration */ || - containingNodeKind === 155 /* TypeLiteral */; // let x : { | + return containingNodeKind === 219 /* EnumDeclaration */ || + containingNodeKind === 217 /* InterfaceDeclaration */ || + containingNodeKind === 155 /* TypeLiteral */; // const x : { | case 23 /* SemicolonToken */: return containingNodeKind === 140 /* PropertySignature */ && contextToken.parent && contextToken.parent.parent && - (contextToken.parent.parent.kind === 215 /* InterfaceDeclaration */ || - contextToken.parent.parent.kind === 155 /* TypeLiteral */); // let x : { a; | + (contextToken.parent.parent.kind === 217 /* InterfaceDeclaration */ || + contextToken.parent.parent.kind === 155 /* TypeLiteral */); // const x : { a; | case 25 /* LessThanToken */: - return containingNodeKind === 214 /* ClassDeclaration */ || - containingNodeKind === 186 /* ClassExpression */ || - containingNodeKind === 215 /* InterfaceDeclaration */ || - containingNodeKind === 216 /* TypeAliasDeclaration */ || + return containingNodeKind === 216 /* ClassDeclaration */ || + containingNodeKind === 188 /* ClassExpression */ || + containingNodeKind === 217 /* InterfaceDeclaration */ || + containingNodeKind === 218 /* TypeAliasDeclaration */ || isFunction(containingNodeKind); case 113 /* StaticKeyword */: return containingNodeKind === 141 /* PropertyDeclaration */; case 22 /* DotDotDotToken */: return containingNodeKind === 138 /* Parameter */ || (contextToken.parent && contextToken.parent.parent && - contextToken.parent.parent.kind === 162 /* ArrayBindingPattern */); // var [...z| + contextToken.parent.parent.kind === 164 /* ArrayBindingPattern */); // var [...z| case 112 /* PublicKeyword */: case 110 /* PrivateKeyword */: case 111 /* ProtectedKeyword */: return containingNodeKind === 138 /* Parameter */; case 116 /* AsKeyword */: - return containingNodeKind === 226 /* ImportSpecifier */ || - containingNodeKind === 230 /* ExportSpecifier */ || - containingNodeKind === 224 /* NamespaceImport */; + return containingNodeKind === 228 /* ImportSpecifier */ || + containingNodeKind === 232 /* ExportSpecifier */ || + containingNodeKind === 226 /* NamespaceImport */; case 73 /* ClassKeyword */: case 81 /* EnumKeyword */: case 107 /* InterfaceKeyword */: @@ -46973,8 +47762,8 @@ var ts; if (element.getStart() <= position && position <= element.getEnd()) { continue; } - var name_35 = element.propertyName || element.name; - exisingImportsOrExports[name_35.text] = true; + var name_31 = element.propertyName || element.name; + exisingImportsOrExports[name_31.text] = true; } if (ts.isEmpty(exisingImportsOrExports)) { return exportsOfModule; @@ -46995,9 +47784,10 @@ var ts; for (var _i = 0, existingMembers_1 = existingMembers; _i < existingMembers_1.length; _i++) { var m = existingMembers_1[_i]; // Ignore omitted expressions for missing members - if (m.kind !== 245 /* PropertyAssignment */ && - m.kind !== 246 /* ShorthandPropertyAssignment */ && - m.kind !== 163 /* BindingElement */) { + if (m.kind !== 247 /* PropertyAssignment */ && + m.kind !== 248 /* ShorthandPropertyAssignment */ && + m.kind !== 165 /* BindingElement */ && + m.kind !== 143 /* MethodDeclaration */) { continue; } // If this is the current item we are editing right now, do not filter it out @@ -47005,7 +47795,7 @@ var ts; continue; } var existingName = void 0; - if (m.kind === 163 /* BindingElement */ && m.propertyName) { + if (m.kind === 165 /* BindingElement */ && m.propertyName) { // include only identifiers in completion list if (m.propertyName.kind === 69 /* Identifier */) { existingName = m.propertyName.text; @@ -47035,7 +47825,7 @@ var ts; if (attr.getStart() <= position && position <= attr.getEnd()) { continue; } - if (attr.kind === 238 /* JsxAttribute */) { + if (attr.kind === 240 /* JsxAttribute */) { seenNames[attr.name.text] = true; } } @@ -47074,10 +47864,10 @@ var ts; var entries = []; var target = program.getCompilerOptions().target; var nameTable = getNameTable(sourceFile); - for (var name_36 in nameTable) { - if (!uniqueNames[name_36]) { - uniqueNames[name_36] = name_36; - var displayName = getCompletionEntryDisplayName(name_36, target, /*performCharacterChecks:*/ true); + for (var name_32 in nameTable) { + if (!uniqueNames[name_32]) { + uniqueNames[name_32] = name_32; + var displayName = getCompletionEntryDisplayName(name_32, target, /*performCharacterChecks*/ true); if (displayName) { var entry = { name: displayName, @@ -47105,7 +47895,7 @@ var ts; // Try to get a valid display name for this symbol, if we could not find one, then ignore it. // We would like to only show things that can be added after a dot, so for instance numeric properties can // not be accessed with a dot (a.1 <- invalid) - var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true, location); + var displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks*/ true, location); if (!displayName) { return undefined; } @@ -47154,7 +47944,7 @@ var ts; // We don't need to perform character checks here because we're only comparing the // name against 'entryName' (which is known to be good), not building a new // completion entry. - var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks:*/ false, location_2) === entryName ? s : undefined; }); + var symbol = ts.forEach(symbols, function (s) { return getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks*/ false, location_2) === entryName ? s : undefined; }); if (symbol) { var _a = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location_2, location_2, 7 /* All */), displayParts = _a.displayParts, documentation = _a.documentation, symbolKind = _a.symbolKind; return { @@ -47183,7 +47973,7 @@ var ts; function getSymbolKind(symbol, location) { var flags = symbol.getFlags(); if (flags & 32 /* Class */) - return ts.getDeclarationOfKind(symbol, 186 /* ClassExpression */) ? + return ts.getDeclarationOfKind(symbol, 188 /* ClassExpression */) ? ScriptElementKind.localClassElement : ScriptElementKind.classElement; if (flags & 384 /* Enum */) return ScriptElementKind.enumElement; @@ -47248,7 +48038,7 @@ var ts; }); if (!unionPropertyKind) { // If this was union of all methods, - //make sure it has call signatures before we can label it as method + // make sure it has call signatures before we can label it as method var typeOfUnionProperty = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (typeOfUnionProperty.getCallSignatures().length) { return ScriptElementKind.memberFunctionElement; @@ -47285,7 +48075,7 @@ var ts; var signature; type = typeChecker.getTypeOfSymbolAtLocation(symbol, location); if (type) { - if (location.parent && location.parent.kind === 166 /* PropertyAccessExpression */) { + if (location.parent && location.parent.kind === 168 /* PropertyAccessExpression */) { var right = location.parent.name; // Either the location is on the right of a property access, or on the left and the right is missing if (right === location || (right && right.getFullWidth() === 0)) { @@ -47294,7 +48084,7 @@ var ts; } // try get the call/construct signature from the type if it matches var callExpression; - if (location.kind === 168 /* CallExpression */ || location.kind === 169 /* NewExpression */) { + if (location.kind === 170 /* CallExpression */ || location.kind === 171 /* NewExpression */) { callExpression = location; } else if (isCallExpressionTarget(location) || isNewExpressionTarget(location)) { @@ -47307,7 +48097,7 @@ var ts; // Use the first candidate: signature = candidateSignatures[0]; } - var useConstructSignatures = callExpression.kind === 169 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; + var useConstructSignatures = callExpression.kind === 171 /* NewExpression */ || callExpression.expression.kind === 95 /* SuperKeyword */; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); if (!ts.contains(allSignatures, signature.target) && !ts.contains(allSignatures, signature)) { // Get the first signature if there is one -- allSignatures may contain @@ -47341,16 +48131,16 @@ var ts; case ScriptElementKind.parameterElement: case ScriptElementKind.localVariableElement: // If it is call or construct signature of lambda's write type name - displayParts.push(ts.punctuationPart(ts.SyntaxKind.ColonToken)); + displayParts.push(ts.punctuationPart(54 /* ColonToken */)); displayParts.push(ts.spacePart()); if (useConstructSignatures) { - displayParts.push(ts.keywordPart(ts.SyntaxKind.NewKeyword)); + displayParts.push(ts.keywordPart(92 /* NewKeyword */)); displayParts.push(ts.spacePart()); } - if (!(type.flags & ts.TypeFlags.Anonymous)) { - ts.addRange(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, /*meaning*/ undefined, ts.SymbolFormatFlags.WriteTypeParametersOrArguments)); + if (!(type.flags & 65536 /* Anonymous */)) { + ts.addRange(displayParts, ts.symbolToDisplayParts(typeChecker, type.symbol, enclosingDeclaration, /*meaning*/ undefined, 1 /* WriteTypeParametersOrArguments */)); } - addSignatureDisplayParts(signature, allSignatures, ts.TypeFormatFlags.WriteArrowStyleSignature); + addSignatureDisplayParts(signature, allSignatures, 8 /* WriteArrowStyleSignature */); break; default: // Just signature @@ -47386,7 +48176,7 @@ var ts; } } if (symbolFlags & 32 /* Class */ && !hasAddedSymbolInfo) { - if (ts.getDeclarationOfKind(symbol, 186 /* ClassExpression */)) { + if (ts.getDeclarationOfKind(symbol, 188 /* ClassExpression */)) { // Special case for class expressions because we would like to indicate that // the class name is local to the class body (similar to function expression) // (local class) class @@ -47430,7 +48220,7 @@ var ts; } if (symbolFlags & 1536 /* Module */) { addNewLineIfDisplayPartsExist(); - var declaration = ts.getDeclarationOfKind(symbol, 218 /* ModuleDeclaration */); + var declaration = ts.getDeclarationOfKind(symbol, 220 /* ModuleDeclaration */); var isNamespace = declaration && declaration.name && declaration.name.kind === 69 /* Identifier */; displayParts.push(ts.keywordPart(isNamespace ? 126 /* NamespaceKeyword */ : 125 /* ModuleKeyword */)); displayParts.push(ts.spacePart()); @@ -47453,35 +48243,37 @@ var ts; } else { // Method/function type parameter - var container = ts.getContainingFunction(location); - if (container) { - var signatureDeclaration = ts.getDeclarationOfKind(symbol, 137 /* TypeParameter */).parent; - var signature = typeChecker.getSignatureFromDeclaration(signatureDeclaration); - if (signatureDeclaration.kind === 148 /* ConstructSignature */) { - displayParts.push(ts.keywordPart(92 /* NewKeyword */)); + var declaration = ts.getDeclarationOfKind(symbol, 137 /* TypeParameter */); + ts.Debug.assert(declaration !== undefined); + declaration = declaration.parent; + if (declaration) { + if (ts.isFunctionLikeKind(declaration.kind)) { + var signature = typeChecker.getSignatureFromDeclaration(declaration); + if (declaration.kind === 148 /* ConstructSignature */) { + displayParts.push(ts.keywordPart(92 /* NewKeyword */)); + displayParts.push(ts.spacePart()); + } + else if (declaration.kind !== 147 /* CallSignature */ && declaration.name) { + addFullSymbolName(declaration.symbol); + } + ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */)); + } + else { + // Type alias type parameter + // For example + // type list = T[]; // Both T will go through same code path + displayParts.push(ts.keywordPart(132 /* TypeKeyword */)); displayParts.push(ts.spacePart()); + addFullSymbolName(declaration.symbol); + writeTypeParametersOfSymbol(declaration.symbol, sourceFile); } - else if (signatureDeclaration.kind !== 147 /* CallSignature */ && signatureDeclaration.name) { - addFullSymbolName(signatureDeclaration.symbol); - } - ts.addRange(displayParts, ts.signatureToDisplayParts(typeChecker, signature, sourceFile, 32 /* WriteTypeArgumentsOfSignature */)); - } - else { - // Type aliash type parameter - // For example - // type list = T[]; // Both T will go through same code path - var declaration = ts.getDeclarationOfKind(symbol, 137 /* TypeParameter */).parent; - displayParts.push(ts.keywordPart(132 /* TypeKeyword */)); - displayParts.push(ts.spacePart()); - addFullSymbolName(declaration.symbol); - writeTypeParametersOfSymbol(declaration.symbol, sourceFile); } } } if (symbolFlags & 8 /* EnumMember */) { addPrefixForAnyFunctionOrVar(symbol, "enum member"); var declaration = symbol.declarations[0]; - if (declaration.kind === 247 /* EnumMember */) { + if (declaration.kind === 249 /* EnumMember */) { var constantValue = typeChecker.getConstantValue(declaration); if (constantValue !== undefined) { displayParts.push(ts.spacePart()); @@ -47497,7 +48289,7 @@ var ts; displayParts.push(ts.spacePart()); addFullSymbolName(symbol); ts.forEach(symbol.declarations, function (declaration) { - if (declaration.kind === 221 /* ImportEqualsDeclaration */) { + if (declaration.kind === 223 /* ImportEqualsDeclaration */) { var importEqualsDeclaration = declaration; if (ts.isExternalModuleImportEqualsDeclaration(importEqualsDeclaration)) { displayParts.push(ts.spacePart()); @@ -47630,9 +48422,10 @@ var ts; // Try getting just type at this position and show switch (node.kind) { case 69 /* Identifier */: - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 135 /* QualifiedName */: case 97 /* ThisKeyword */: + case 161 /* ThisType */: case 95 /* SuperKeyword */: // For the identifiers/this/super etc get the type at position var type = typeChecker.getTypeAtLocation(node); @@ -47712,7 +48505,7 @@ var ts; var definition; ts.forEach(signatureDeclarations, function (d) { if ((selectConstructors && d.kind === 144 /* Constructor */) || - (!selectConstructors && (d.kind === 213 /* FunctionDeclaration */ || d.kind === 143 /* MethodDeclaration */ || d.kind === 142 /* MethodSignature */))) { + (!selectConstructors && (d.kind === 215 /* FunctionDeclaration */ || d.kind === 143 /* MethodDeclaration */ || d.kind === 142 /* MethodSignature */))) { declarations.push(d); if (d.body) definition = d; @@ -47781,7 +48574,7 @@ var ts; // go to the declaration of the property name (in this case stay at the same position). However, if go-to-definition // is performed at the location of property access, we would like to go to definition of the property in the short-hand // assignment. This case and others are handled by the following code. - if (node.parent.kind === 246 /* ShorthandPropertyAssignment */) { + if (node.parent.kind === 248 /* ShorthandPropertyAssignment */) { var shorthandSymbol = typeChecker.getShorthandAssignmentValueSymbol(symbol.valueDeclaration); if (!shorthandSymbol) { return []; @@ -47857,10 +48650,11 @@ var ts; function getSemanticDocumentHighlights(node) { if (node.kind === 69 /* Identifier */ || node.kind === 97 /* ThisKeyword */ || + node.kind === 161 /* ThisType */ || node.kind === 95 /* SuperKeyword */ || isLiteralNameOfPropertyDeclarationOrIndexAccess(node) || isNameOfExternalModuleImportOrDeclaration(node)) { - var referencedSymbols = getReferencedSymbolsForNode(node, sourceFilesToSearch, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = getReferencedSymbolsForNode(node, sourceFilesToSearch, /*findInStrings*/ false, /*findInComments*/ false); return convertReferencedSymbols(referencedSymbols); } return undefined; @@ -47910,58 +48704,58 @@ var ts; switch (node.kind) { case 88 /* IfKeyword */: case 80 /* ElseKeyword */: - if (hasKind(node.parent, 196 /* IfStatement */)) { + if (hasKind(node.parent, 198 /* IfStatement */)) { return getIfElseOccurrences(node.parent); } break; case 94 /* ReturnKeyword */: - if (hasKind(node.parent, 204 /* ReturnStatement */)) { + if (hasKind(node.parent, 206 /* ReturnStatement */)) { return getReturnOccurrences(node.parent); } break; case 98 /* ThrowKeyword */: - if (hasKind(node.parent, 208 /* ThrowStatement */)) { + if (hasKind(node.parent, 210 /* ThrowStatement */)) { return getThrowOccurrences(node.parent); } break; case 72 /* CatchKeyword */: - if (hasKind(parent(parent(node)), 209 /* TryStatement */)) { + if (hasKind(parent(parent(node)), 211 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent.parent); } break; case 100 /* TryKeyword */: case 85 /* FinallyKeyword */: - if (hasKind(parent(node), 209 /* TryStatement */)) { + if (hasKind(parent(node), 211 /* TryStatement */)) { return getTryCatchFinallyOccurrences(node.parent); } break; case 96 /* SwitchKeyword */: - if (hasKind(node.parent, 206 /* SwitchStatement */)) { + if (hasKind(node.parent, 208 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent); } break; case 71 /* CaseKeyword */: case 77 /* DefaultKeyword */: - if (hasKind(parent(parent(parent(node))), 206 /* SwitchStatement */)) { + if (hasKind(parent(parent(parent(node))), 208 /* SwitchStatement */)) { return getSwitchCaseDefaultOccurrences(node.parent.parent.parent); } break; case 70 /* BreakKeyword */: case 75 /* ContinueKeyword */: - if (hasKind(node.parent, 203 /* BreakStatement */) || hasKind(node.parent, 202 /* ContinueStatement */)) { + if (hasKind(node.parent, 205 /* BreakStatement */) || hasKind(node.parent, 204 /* ContinueStatement */)) { return getBreakOrContinueStatementOccurrences(node.parent); } break; case 86 /* ForKeyword */: - if (hasKind(node.parent, 199 /* ForStatement */) || - hasKind(node.parent, 200 /* ForInStatement */) || - hasKind(node.parent, 201 /* ForOfStatement */)) { + if (hasKind(node.parent, 201 /* ForStatement */) || + hasKind(node.parent, 202 /* ForInStatement */) || + hasKind(node.parent, 203 /* ForOfStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; case 104 /* WhileKeyword */: case 79 /* DoKeyword */: - if (hasKind(node.parent, 198 /* WhileStatement */) || hasKind(node.parent, 197 /* DoStatement */)) { + if (hasKind(node.parent, 200 /* WhileStatement */) || hasKind(node.parent, 199 /* DoStatement */)) { return getLoopBreakContinueOccurrences(node.parent); } break; @@ -47977,8 +48771,8 @@ var ts; } break; default: - if (ts.isModifier(node.kind) && node.parent && - (ts.isDeclaration(node.parent) || node.parent.kind === 193 /* VariableStatement */)) { + if (ts.isModifierKind(node.kind) && node.parent && + (ts.isDeclaration(node.parent) || node.parent.kind === 195 /* VariableStatement */)) { return getModifierOccurrences(node.kind, node.parent); } } @@ -47994,10 +48788,10 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 208 /* ThrowStatement */) { + if (node.kind === 210 /* ThrowStatement */) { statementAccumulator.push(node); } - else if (node.kind === 209 /* TryStatement */) { + else if (node.kind === 211 /* TryStatement */) { var tryStatement = node; if (tryStatement.catchClause) { aggregate(tryStatement.catchClause); @@ -48025,12 +48819,12 @@ var ts; var child = throwStatement; while (child.parent) { var parent_12 = child.parent; - if (ts.isFunctionBlock(parent_12) || parent_12.kind === 248 /* SourceFile */) { + if (ts.isFunctionBlock(parent_12) || parent_12.kind === 250 /* SourceFile */) { return parent_12; } // A throw-statement is only owned by a try-statement if the try-statement has // a catch clause, and if the throw-statement occurs within the try block. - if (parent_12.kind === 209 /* TryStatement */) { + if (parent_12.kind === 211 /* TryStatement */) { var tryStatement = parent_12; if (tryStatement.tryBlock === child && tryStatement.catchClause) { return child; @@ -48045,7 +48839,7 @@ var ts; aggregate(node); return statementAccumulator; function aggregate(node) { - if (node.kind === 203 /* BreakStatement */ || node.kind === 202 /* ContinueStatement */) { + if (node.kind === 205 /* BreakStatement */ || node.kind === 204 /* ContinueStatement */) { statementAccumulator.push(node); } else if (!ts.isFunctionLike(node)) { @@ -48060,16 +48854,16 @@ var ts; function getBreakOrContinueOwner(statement) { for (var node_2 = statement.parent; node_2; node_2 = node_2.parent) { switch (node_2.kind) { - case 206 /* SwitchStatement */: - if (statement.kind === 202 /* ContinueStatement */) { + case 208 /* SwitchStatement */: + if (statement.kind === 204 /* ContinueStatement */) { continue; } // Fall through. - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 198 /* WhileStatement */: - case 197 /* DoStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 200 /* WhileStatement */: + case 199 /* DoStatement */: if (!statement.label || isLabeledBy(node_2, statement.label.text)) { return node_2; } @@ -48088,24 +48882,24 @@ var ts; var container = declaration.parent; // Make sure we only highlight the keyword when it makes sense to do so. if (ts.isAccessibilityModifier(modifier)) { - if (!(container.kind === 214 /* ClassDeclaration */ || - container.kind === 186 /* ClassExpression */ || + if (!(container.kind === 216 /* ClassDeclaration */ || + container.kind === 188 /* ClassExpression */ || (declaration.kind === 138 /* Parameter */ && hasKind(container, 144 /* Constructor */)))) { return undefined; } } else if (modifier === 113 /* StaticKeyword */) { - if (!(container.kind === 214 /* ClassDeclaration */ || container.kind === 186 /* ClassExpression */)) { + if (!(container.kind === 216 /* ClassDeclaration */ || container.kind === 188 /* ClassExpression */)) { return undefined; } } else if (modifier === 82 /* ExportKeyword */ || modifier === 122 /* DeclareKeyword */) { - if (!(container.kind === 219 /* ModuleBlock */ || container.kind === 248 /* SourceFile */)) { + if (!(container.kind === 221 /* ModuleBlock */ || container.kind === 250 /* SourceFile */)) { return undefined; } } else if (modifier === 115 /* AbstractKeyword */) { - if (!(container.kind === 214 /* ClassDeclaration */ || declaration.kind === 214 /* ClassDeclaration */)) { + if (!(container.kind === 216 /* ClassDeclaration */ || declaration.kind === 216 /* ClassDeclaration */)) { return undefined; } } @@ -48117,8 +48911,8 @@ var ts; var modifierFlag = getFlagFromModifier(modifier); var nodes; switch (container.kind) { - case 219 /* ModuleBlock */: - case 248 /* SourceFile */: + case 221 /* ModuleBlock */: + case 250 /* SourceFile */: // Container is either a class declaration or the declaration is a classDeclaration if (modifierFlag & 128 /* Abstract */) { nodes = declaration.members.concat(declaration); @@ -48130,8 +48924,8 @@ var ts; case 144 /* Constructor */: nodes = container.parameters.concat(container.parent.members); break; - case 214 /* ClassDeclaration */: - case 186 /* ClassExpression */: + case 216 /* ClassDeclaration */: + case 188 /* ClassExpression */: nodes = container.members; // If we're an accessibility modifier, we're in an instance member and should search // the constructor's parameter list for instance members as well. @@ -48214,7 +49008,7 @@ var ts; var keywords = []; if (pushKeywordIf(keywords, loopNode.getFirstToken(), 86 /* ForKeyword */, 104 /* WhileKeyword */, 79 /* DoKeyword */)) { // If we succeeded and got a do-while loop, then start looking for a 'while' keyword. - if (loopNode.kind === 197 /* DoStatement */) { + if (loopNode.kind === 199 /* DoStatement */) { var loopTokens = loopNode.getChildren(); for (var i = loopTokens.length - 1; i >= 0; i--) { if (pushKeywordIf(keywords, loopTokens[i], 104 /* WhileKeyword */)) { @@ -48235,13 +49029,13 @@ var ts; var owner = getBreakOrContinueOwner(breakOrContinueStatement); if (owner) { switch (owner.kind) { - case 199 /* ForStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: - case 197 /* DoStatement */: - case 198 /* WhileStatement */: + case 201 /* ForStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: + case 199 /* DoStatement */: + case 200 /* WhileStatement */: return getLoopBreakContinueOccurrences(owner); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: return getSwitchCaseDefaultOccurrences(owner); } } @@ -48295,7 +49089,7 @@ var ts; function getReturnOccurrences(returnStatement) { var func = ts.getContainingFunction(returnStatement); // If we didn't find a containing function with a block body, bail out. - if (!(func && hasKind(func.body, 192 /* Block */))) { + if (!(func && hasKind(func.body, 194 /* Block */))) { return undefined; } var keywords = []; @@ -48311,7 +49105,7 @@ var ts; function getIfElseOccurrences(ifStatement) { var keywords = []; // Traverse upwards through all parent if-statements linked by their else-branches. - while (hasKind(ifStatement.parent, 196 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { + while (hasKind(ifStatement.parent, 198 /* IfStatement */) && ifStatement.parent.elseStatement === ifStatement) { ifStatement = ifStatement.parent; } // Now traverse back down through the else branches, aggregating if/else keywords of if-statements. @@ -48324,7 +49118,7 @@ var ts; break; } } - if (!hasKind(ifStatement.elseStatement, 196 /* IfStatement */)) { + if (!hasKind(ifStatement.elseStatement, 198 /* IfStatement */)) { break; } ifStatement = ifStatement.elseStatement; @@ -48400,11 +49194,11 @@ var ts; return convertReferences(referencedSymbols); } function getReferencesAtPosition(fileName, position) { - var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings*/ false, /*findInComments*/ false); return convertReferences(referencedSymbols); } function findReferences(fileName, position) { - var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings:*/ false, /*findInComments:*/ false); + var referencedSymbols = findReferencedSymbols(fileName, position, /*findInStrings*/ false, /*findInComments*/ false); // Only include referenced symbols that have a valid definition. return ts.filter(referencedSymbols, function (rs) { return !!rs.definition; }); } @@ -48417,8 +49211,8 @@ var ts; } if (node.kind !== 69 /* Identifier */ && // TODO (drosen): This should be enabled in a later release - currently breaks rename. - //node.kind !== SyntaxKind.ThisKeyword && - //node.kind !== SyntaxKind.SuperKeyword && + // node.kind !== SyntaxKind.ThisKeyword && + // node.kind !== SyntaxKind.SuperKeyword && !isLiteralNameOfPropertyDeclarationOrIndexAccess(node) && !isNameOfExternalModuleImportOrDeclaration(node)) { return undefined; @@ -48441,7 +49235,7 @@ var ts; return getLabelReferencesInNode(node.parent, node); } } - if (node.kind === 97 /* ThisKeyword */) { + if (node.kind === 97 /* ThisKeyword */ || node.kind === 161 /* ThisType */) { return getReferencesForThisKeyword(node, sourceFiles); } if (node.kind === 95 /* SuperKeyword */) { @@ -48475,8 +49269,8 @@ var ts; } else { var internedName = getInternedName(symbol, node, declarations); - for (var _i = 0, sourceFiles_2 = sourceFiles; _i < sourceFiles_2.length; _i++) { - var sourceFile = sourceFiles_2[_i]; + for (var _i = 0, sourceFiles_3 = sourceFiles; _i < sourceFiles_3.length; _i++) { + var sourceFile = sourceFiles_3[_i]; cancellationToken.throwIfCancellationRequested(); var nameTable = getNameTable(sourceFile); if (ts.lookUp(nameTable, internedName)) { @@ -48504,7 +49298,7 @@ var ts; } function isImportOrExportSpecifierImportSymbol(symbol) { return (symbol.flags & 8388608 /* Alias */) && ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 226 /* ImportSpecifier */ || declaration.kind === 230 /* ExportSpecifier */; + return declaration.kind === 228 /* ImportSpecifier */ || declaration.kind === 232 /* ExportSpecifier */; }); } function getInternedName(symbol, location, declarations) { @@ -48531,14 +49325,14 @@ var ts; // If this is the symbol of a named function expression or named class expression, // then named references are limited to its own scope. var valueDeclaration = symbol.valueDeclaration; - if (valueDeclaration && (valueDeclaration.kind === 173 /* FunctionExpression */ || valueDeclaration.kind === 186 /* ClassExpression */)) { + if (valueDeclaration && (valueDeclaration.kind === 175 /* FunctionExpression */ || valueDeclaration.kind === 188 /* ClassExpression */)) { return valueDeclaration; } // If this is private property or method, the scope is the containing class if (symbol.flags & (4 /* Property */ | 8192 /* Method */)) { var privateDeclaration = ts.forEach(symbol.getDeclarations(), function (d) { return (d.flags & 16 /* Private */) ? d : undefined; }); if (privateDeclaration) { - return ts.getAncestor(privateDeclaration, 214 /* ClassDeclaration */); + return ts.getAncestor(privateDeclaration, 216 /* ClassDeclaration */); } } // If the symbol is an import we would like to find it if we are looking for what it imports. @@ -48551,7 +49345,7 @@ var ts; if (symbol.parent || (symbol.flags & 268435456 /* SyntheticProperty */)) { return undefined; } - var scope = undefined; + var scope; var declarations = symbol.getDeclarations(); if (declarations) { for (var _i = 0, declarations_8 = declarations; _i < declarations_8.length; _i++) { @@ -48564,7 +49358,7 @@ var ts; // Different declarations have different containers, bail out return undefined; } - if (container.kind === 248 /* SourceFile */ && !ts.isExternalModule(container)) { + if (container.kind === 250 /* SourceFile */ && !ts.isExternalModule(container)) { // This is a global variable and not an external module, any declaration defined // within this scope is visible outside the file return undefined; @@ -48730,7 +49524,7 @@ var ts; } } function getReferencesForSuperKeyword(superKeyword) { - var searchSpaceNode = ts.getSuperContainer(superKeyword, /*includeFunctions*/ false); + var searchSpaceNode = ts.getSuperContainer(superKeyword, /*stopOnFunctions*/ false); if (!searchSpaceNode) { return undefined; } @@ -48759,7 +49553,7 @@ var ts; if (!node || node.kind !== 95 /* SuperKeyword */) { return; } - var container = ts.getSuperContainer(node, /*includeFunctions*/ false); + var container = ts.getSuperContainer(node, /*stopOnFunctions*/ false); // If we have a 'super' container, we must have an enclosing class. // Now make sure the owning class is the same as the search-space // and has the same static qualifier as the original 'super's owner. @@ -48789,13 +49583,13 @@ var ts; staticFlag &= searchSpaceNode.flags; searchSpaceNode = searchSpaceNode.parent; // re-assign to be the owning class break; - case 248 /* SourceFile */: + case 250 /* SourceFile */: if (ts.isExternalModule(searchSpaceNode)) { return undefined; } // Fall through - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: break; // Computed properties in classes are not handled here because references to this are illegal, // so there is no point finding references to them. @@ -48804,7 +49598,7 @@ var ts; } var references = []; var possiblePositions; - if (searchSpaceNode.kind === 248 /* SourceFile */) { + if (searchSpaceNode.kind === 250 /* SourceFile */) { ts.forEach(sourceFiles, function (sourceFile) { possiblePositions = getPossibleSymbolReferencePositions(sourceFile, "this", sourceFile.getStart(), sourceFile.getEnd()); getThisReferencesInFile(sourceFile, sourceFile, possiblePositions, references); @@ -48830,13 +49624,13 @@ var ts; ts.forEach(possiblePositions, function (position) { cancellationToken.throwIfCancellationRequested(); var node = ts.getTouchingWord(sourceFile, position); - if (!node || node.kind !== 97 /* ThisKeyword */) { + if (!node || (node.kind !== 97 /* ThisKeyword */ && node.kind !== 161 /* ThisType */)) { return; } var container = ts.getThisContainer(node, /* includeArrowFunctions */ false); switch (searchSpaceNode.kind) { - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: if (searchSpaceNode.symbol === container.symbol) { result.push(getReferenceEntryFromNode(node)); } @@ -48847,16 +49641,16 @@ var ts; result.push(getReferenceEntryFromNode(node)); } break; - case 186 /* ClassExpression */: - case 214 /* ClassDeclaration */: + case 188 /* ClassExpression */: + case 216 /* ClassDeclaration */: // Make sure the container belongs to the same class // and has the appropriate static modifier from the original container. if (container.parent && searchSpaceNode.symbol === container.parent.symbol && (container.flags & 64 /* Static */) === staticFlag) { result.push(getReferenceEntryFromNode(node)); } break; - case 248 /* SourceFile */: - if (container.kind === 248 /* SourceFile */ && !ts.isExternalModule(container)) { + case 250 /* SourceFile */: + if (container.kind === 250 /* SourceFile */ && !ts.isExternalModule(container)) { result.push(getReferenceEntryFromNode(node)); } break; @@ -48883,8 +49677,8 @@ var ts; * property name and variable declaration of the identifier. * Like in below example, when querying for all references for an identifier 'name', of the property assignment, the language service * should show both 'name' in 'obj' and 'name' in variable declaration - * let name = "Foo"; - * let obj = { name }; + * const name = "Foo"; + * const obj = { name }; * In order to do that, we will populate the search set with the value symbol of the identifier as a value of the property assignment * so that when matching with potential reference symbol, both symbols from property declaration and variable declaration * will be included correctly. @@ -48894,6 +49688,14 @@ var ts; result.push(shorthandValueSymbol); } } + // If the symbol.valueDeclaration is a property parameter declaration, + // we should include both parameter declaration symbol and property declaration symbol + // Parameter Declaration symbol is only visible within function scope, so the symbol is stored in contructor.locals. + // Property Declaration symbol is a member of the class, so the symbol is stored in its class Declaration.symbol.members + if (symbol.valueDeclaration && symbol.valueDeclaration.kind === 138 /* Parameter */ && + ts.isParameterPropertyDeclaration(symbol.valueDeclaration)) { + result = result.concat(typeChecker.getSymbolsOfParameterPropertyDeclaration(symbol.valueDeclaration, symbol.name)); + } // If this is a union property, add all the symbols from all its source symbols in all unioned types. // If the symbol is an instantiation from a another symbol (e.g. widened symbol) , add the root the list ts.forEach(typeChecker.getRootSymbols(symbol), function (rootSymbol) { @@ -48910,11 +49712,11 @@ var ts; function getPropertySymbolsFromBaseTypes(symbol, propertyName, result) { if (symbol && symbol.flags & (32 /* Class */ | 64 /* Interface */)) { ts.forEach(symbol.getDeclarations(), function (declaration) { - if (declaration.kind === 214 /* ClassDeclaration */) { + if (declaration.kind === 216 /* ClassDeclaration */) { getPropertySymbolFromTypeReference(ts.getClassExtendsHeritageClauseElement(declaration)); ts.forEach(ts.getClassImplementsHeritageClauseElements(declaration), getPropertySymbolFromTypeReference); } - else if (declaration.kind === 215 /* InterfaceDeclaration */) { + else if (declaration.kind === 217 /* InterfaceDeclaration */) { ts.forEach(ts.getInterfaceBaseTypeNodes(declaration), getPropertySymbolFromTypeReference); } }); @@ -48975,19 +49777,19 @@ var ts; if (isNameOfPropertyAssignment(node)) { var objectLiteral = node.parent.parent; var contextualType = typeChecker.getContextualType(objectLiteral); - var name_37 = node.text; + var name_33 = node.text; if (contextualType) { if (contextualType.flags & 16384 /* Union */) { // This is a union type, first see if the property we are looking for is a union property (i.e. exists in all types) // if not, search the constituent types for the property - var unionProperty = contextualType.getProperty(name_37); + var unionProperty = contextualType.getProperty(name_33); if (unionProperty) { return [unionProperty]; } else { var result_4 = []; ts.forEach(contextualType.types, function (t) { - var symbol = t.getProperty(name_37); + var symbol = t.getProperty(name_33); if (symbol) { result_4.push(symbol); } @@ -48996,7 +49798,7 @@ var ts; } } else { - var symbol_1 = contextualType.getProperty(name_37); + var symbol_1 = contextualType.getProperty(name_33); if (symbol_1) { return [symbol_1]; } @@ -49054,10 +49856,10 @@ var ts; } var parent = node.parent; if (parent) { - if (parent.kind === 180 /* PostfixUnaryExpression */ || parent.kind === 179 /* PrefixUnaryExpression */) { + if (parent.kind === 182 /* PostfixUnaryExpression */ || parent.kind === 181 /* PrefixUnaryExpression */) { return true; } - else if (parent.kind === 181 /* BinaryExpression */ && parent.left === node) { + else if (parent.kind === 183 /* BinaryExpression */ && parent.left === node) { var operator = parent.operatorToken.kind; return 56 /* FirstAssignment */ <= operator && operator <= 68 /* LastAssignment */; } @@ -49069,9 +49871,6 @@ var ts; synchronizeHostData(); return ts.NavigateTo.getNavigateToItems(program, cancellationToken, searchValue, maxResultCount); } - function containErrors(diagnostics) { - return ts.forEach(diagnostics, function (diagnostic) { return diagnostic.category === ts.DiagnosticCategory.Error; }); - } function getEmitOutput(fileName) { synchronizeHostData(); var sourceFile = getValidSourceFile(fileName); @@ -49092,32 +49891,32 @@ var ts; function getMeaningFromDeclaration(node) { switch (node.kind) { case 138 /* Parameter */: - case 211 /* VariableDeclaration */: - case 163 /* BindingElement */: + case 213 /* VariableDeclaration */: + case 165 /* BindingElement */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: - case 245 /* PropertyAssignment */: - case 246 /* ShorthandPropertyAssignment */: - case 247 /* EnumMember */: + case 247 /* PropertyAssignment */: + case 248 /* ShorthandPropertyAssignment */: + case 249 /* EnumMember */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 144 /* Constructor */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: - case 213 /* FunctionDeclaration */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: - case 244 /* CatchClause */: + case 215 /* FunctionDeclaration */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: + case 246 /* CatchClause */: return 1 /* Value */; case 137 /* TypeParameter */: - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: case 155 /* TypeLiteral */: return 2 /* Type */; - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: return 1 /* Value */ | 2 /* Type */; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (node.name.kind === 9 /* StringLiteral */) { return 4 /* Namespace */ | 1 /* Value */; } @@ -49127,15 +49926,15 @@ var ts; else { return 4 /* Namespace */; } - case 225 /* NamedImports */: - case 226 /* ImportSpecifier */: - case 221 /* ImportEqualsDeclaration */: - case 222 /* ImportDeclaration */: - case 227 /* ExportAssignment */: - case 228 /* ExportDeclaration */: + case 227 /* NamedImports */: + case 228 /* ImportSpecifier */: + case 223 /* ImportEqualsDeclaration */: + case 224 /* ImportDeclaration */: + case 229 /* ExportAssignment */: + case 230 /* ExportDeclaration */: return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; // An external module can be a Value - case 248 /* SourceFile */: + case 250 /* SourceFile */: return 4 /* Namespace */ | 1 /* Value */; } return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; @@ -49145,8 +49944,9 @@ var ts; node = node.parent; } return node.parent.kind === 151 /* TypeReference */ || - (node.parent.kind === 188 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || - node.kind === 97 /* ThisKeyword */ && !ts.isExpression(node); + (node.parent.kind === 190 /* ExpressionWithTypeArguments */ && !ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)) || + (node.kind === 97 /* ThisKeyword */ && !ts.isExpression(node)) || + node.kind === 161 /* ThisType */; } function isNamespaceReference(node) { return isQualifiedNameNamespaceReference(node) || isPropertyAccessNamespaceReference(node); @@ -49154,16 +49954,16 @@ var ts; function isPropertyAccessNamespaceReference(node) { var root = node; var isLastClause = true; - if (root.parent.kind === 166 /* PropertyAccessExpression */) { - while (root.parent && root.parent.kind === 166 /* PropertyAccessExpression */) { + if (root.parent.kind === 168 /* PropertyAccessExpression */) { + while (root.parent && root.parent.kind === 168 /* PropertyAccessExpression */) { root = root.parent; } isLastClause = root.name === node; } - if (!isLastClause && root.parent.kind === 188 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 243 /* HeritageClause */) { + if (!isLastClause && root.parent.kind === 190 /* ExpressionWithTypeArguments */ && root.parent.parent.kind === 245 /* HeritageClause */) { var decl = root.parent.parent.parent; - return (decl.kind === 214 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || - (decl.kind === 215 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); + return (decl.kind === 216 /* ClassDeclaration */ && root.parent.parent.token === 106 /* ImplementsKeyword */) || + (decl.kind === 217 /* InterfaceDeclaration */ && root.parent.parent.token === 83 /* ExtendsKeyword */); } return false; } @@ -49191,13 +49991,13 @@ var ts; // import a = |b.c|.d; // Namespace if (node.parent.kind === 135 /* QualifiedName */ && node.parent.right === node && - node.parent.parent.kind === 221 /* ImportEqualsDeclaration */) { + node.parent.parent.kind === 223 /* ImportEqualsDeclaration */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } return 4 /* Namespace */; } function getMeaningFromLocation(node) { - if (node.parent.kind === 227 /* ExportAssignment */) { + if (node.parent.kind === 229 /* ExportAssignment */) { return 1 /* Value */ | 2 /* Type */ | 4 /* Namespace */; } else if (isInRightSideOfImport(node)) { @@ -49237,14 +50037,16 @@ var ts; return; } switch (node.kind) { - case 166 /* PropertyAccessExpression */: + case 168 /* PropertyAccessExpression */: case 135 /* QualifiedName */: case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: case 84 /* FalseKeyword */: case 99 /* TrueKeyword */: case 93 /* NullKeyword */: case 95 /* SuperKeyword */: case 97 /* ThisKeyword */: + case 161 /* ThisType */: case 69 /* Identifier */: break; // Cant create the text span @@ -49261,7 +50063,7 @@ var ts; // If this is name of a module declarations, check if this is right side of dotted module name // If parent of the module declaration which is parent of this node is module declaration and its body is the module declaration that this node is name of // Then this name is name from dotted module - if (nodeForStartPos.parent.parent.kind === 218 /* ModuleDeclaration */ && + if (nodeForStartPos.parent.parent.kind === 220 /* ModuleDeclaration */ && nodeForStartPos.parent.parent.body === nodeForStartPos.parent) { // Use parent module declarations name for start pos nodeForStartPos = nodeForStartPos.parent.parent.name; @@ -49285,7 +50087,7 @@ var ts; } function getNavigationBarItems(fileName) { var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); - return ts.NavigationBar.getNavigationBarItems(sourceFile); + return ts.NavigationBar.getNavigationBarItems(sourceFile, host.getCompilationSettings()); } function getSemanticClassifications(fileName, span) { return convertClassifications(getEncodedSemanticClassifications(fileName, span)); @@ -49302,10 +50104,10 @@ var ts; // That means we're calling back into the host around every 1.2k of the file we process. // Lib.d.ts has similar numbers. switch (kind) { - case 218 /* ModuleDeclaration */: - case 214 /* ClassDeclaration */: - case 215 /* InterfaceDeclaration */: - case 213 /* FunctionDeclaration */: + case 220 /* ModuleDeclaration */: + case 216 /* ClassDeclaration */: + case 217 /* InterfaceDeclaration */: + case 215 /* FunctionDeclaration */: cancellationToken.throwIfCancellationRequested(); } } @@ -49359,7 +50161,7 @@ var ts; */ function hasValueSideModule(symbol) { return ts.forEach(symbol.declarations, function (declaration) { - return declaration.kind === 218 /* ModuleDeclaration */ && + return declaration.kind === 220 /* ModuleDeclaration */ && ts.getModuleInstanceState(declaration) === 1 /* Instantiated */; }); } @@ -49433,8 +50235,8 @@ var ts; var spanStart = span.start; var spanLength = span.length; // Make a scanner we can get trivia from. - var triviaScanner = ts.createScanner(2 /* Latest */, /*skipTrivia:*/ false, sourceFile.languageVariant, sourceFile.text); - var mergeConflictScanner = ts.createScanner(2 /* Latest */, /*skipTrivia:*/ false, sourceFile.languageVariant, sourceFile.text); + var triviaScanner = ts.createScanner(2 /* Latest */, /*skipTrivia*/ false, sourceFile.languageVariant, sourceFile.text); + var mergeConflictScanner = ts.createScanner(2 /* Latest */, /*skipTrivia*/ false, sourceFile.languageVariant, sourceFile.text); var result = []; processElement(sourceFile); return { spans: result, endOfLineState: 0 /* None */ }; @@ -49517,16 +50319,16 @@ var ts; pushClassification(tag.tagName.pos, tag.tagName.end - tag.tagName.pos, 18 /* docCommentTagName */); pos = tag.tagName.end; switch (tag.kind) { - case 267 /* JSDocParameterTag */: + case 269 /* JSDocParameterTag */: processJSDocParameterTag(tag); break; - case 270 /* JSDocTemplateTag */: + case 272 /* JSDocTemplateTag */: processJSDocTemplateTag(tag); break; - case 269 /* JSDocTypeTag */: + case 271 /* JSDocTypeTag */: processElement(tag.typeExpression); break; - case 268 /* JSDocReturnTag */: + case 270 /* JSDocReturnTag */: processElement(tag.typeExpression); break; } @@ -49617,16 +50419,16 @@ var ts; if (token) { if (tokenKind === 56 /* EqualsToken */) { // the '=' in a variable declaration is special cased here. - if (token.parent.kind === 211 /* VariableDeclaration */ || + if (token.parent.kind === 213 /* VariableDeclaration */ || token.parent.kind === 141 /* PropertyDeclaration */ || token.parent.kind === 138 /* Parameter */) { return 5 /* operator */; } } - if (token.parent.kind === 181 /* BinaryExpression */ || - token.parent.kind === 179 /* PrefixUnaryExpression */ || - token.parent.kind === 180 /* PostfixUnaryExpression */ || - token.parent.kind === 182 /* ConditionalExpression */) { + if (token.parent.kind === 183 /* BinaryExpression */ || + token.parent.kind === 181 /* PrefixUnaryExpression */ || + token.parent.kind === 182 /* PostfixUnaryExpression */ || + token.parent.kind === 184 /* ConditionalExpression */) { return 5 /* operator */; } } @@ -49635,7 +50437,7 @@ var ts; else if (tokenKind === 8 /* NumericLiteral */) { return 4 /* numericLiteral */; } - else if (tokenKind === 9 /* StringLiteral */) { + else if (tokenKind === 9 /* StringLiteral */ || tokenKind === 162 /* StringLiteralType */) { return 6 /* stringLiteral */; } else if (tokenKind === 10 /* RegularExpressionLiteral */) { @@ -49649,7 +50451,7 @@ var ts; else if (tokenKind === 69 /* Identifier */) { if (token) { switch (token.parent.kind) { - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: if (token.parent.name === token) { return 11 /* className */; } @@ -49659,17 +50461,17 @@ var ts; return 15 /* typeParameterName */; } return; - case 215 /* InterfaceDeclaration */: + case 217 /* InterfaceDeclaration */: if (token.parent.name === token) { return 13 /* interfaceName */; } return; - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: if (token.parent.name === token) { return 12 /* enumName */; } return; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (token.parent.name === token) { return 14 /* moduleName */; } @@ -49679,17 +50481,17 @@ var ts; return 17 /* parameterName */; } return; - case 235 /* JsxOpeningElement */: + case 237 /* JsxOpeningElement */: if (token.parent.tagName === token) { return 19 /* jsxOpenTagName */; } return; - case 237 /* JsxClosingElement */: + case 239 /* JsxClosingElement */: if (token.parent.tagName === token) { return 20 /* jsxCloseTagName */; } return; - case 234 /* JsxSelfClosingElement */: + case 236 /* JsxSelfClosingElement */: if (token.parent.tagName === token) { return 21 /* jsxSelfClosingTagName */; } @@ -49818,7 +50620,6 @@ var ts; * be performed. */ function getDocCommentTemplateAtPosition(fileName, position) { - var start = new Date().getTime(); var sourceFile = syntaxTreeCache.getCurrentSourceFile(fileName); // Check if in a context where we don't want to perform any insertion if (ts.isInString(sourceFile, position) || ts.isInComment(sourceFile, position) || ts.hasDocComment(sourceFile, position)) { @@ -49837,19 +50638,19 @@ var ts; var commentOwner; findOwner: for (commentOwner = tokenAtPos; commentOwner; commentOwner = commentOwner.parent) { switch (commentOwner.kind) { - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 144 /* Constructor */: - case 214 /* ClassDeclaration */: - case 193 /* VariableStatement */: + case 216 /* ClassDeclaration */: + case 195 /* VariableStatement */: break findOwner; - case 248 /* SourceFile */: + case 250 /* SourceFile */: return undefined; - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // If in walking up the tree, we hit a a nested namespace declaration, // then we must be somewhere within a dotted namespace name; however we don't // want to give back a JSDoc template for the 'b' or 'c' in 'namespace a.b.c { }'. - if (commentOwner.parent.kind === 218 /* ModuleDeclaration */) { + if (commentOwner.parent.kind === 220 /* ModuleDeclaration */) { return undefined; } break findOwner; @@ -49891,7 +50692,7 @@ var ts; if (ts.isFunctionLike(commentOwner)) { return commentOwner.parameters; } - if (commentOwner.kind === 193 /* VariableStatement */) { + if (commentOwner.kind === 195 /* VariableStatement */) { var varStatement = commentOwner; var varDeclarations = varStatement.declarationList.declarations; if (varDeclarations.length === 1 && varDeclarations[0].initializer) { @@ -49909,14 +50710,14 @@ var ts; * @returns the parameters of a signature found on the RHS if one exists; otherwise 'emptyArray'. */ function getParametersFromRightHandSideOfAssignment(rightHandSide) { - while (rightHandSide.kind === 172 /* ParenthesizedExpression */) { + while (rightHandSide.kind === 174 /* ParenthesizedExpression */) { rightHandSide = rightHandSide.expression; } switch (rightHandSide.kind) { - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return rightHandSide.parameters; - case 186 /* ClassExpression */: + case 188 /* ClassExpression */: for (var _i = 0, _a = rightHandSide.members; _i < _a.length; _i++) { var member = _a[_i]; if (member.kind === 144 /* Constructor */) { @@ -50065,12 +50866,17 @@ var ts; if (declarations && declarations.length > 0) { // Disallow rename for elements that are defined in the standard TypeScript library. var defaultLibFileName = host.getDefaultLibFileName(host.getCompilationSettings()); + var canonicalDefaultLibName = getCanonicalFileName(ts.normalizePath(defaultLibFileName)); if (defaultLibFileName) { for (var _i = 0, declarations_10 = declarations; _i < declarations_10.length; _i++) { var current = declarations_10[_i]; var sourceFile_2 = current.getSourceFile(); + // TODO (drosen): When is there no source file? + if (!sourceFile_2) { + continue; + } var canonicalName = getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)); - if (sourceFile_2 && getCanonicalFileName(ts.normalizePath(sourceFile_2.fileName)) === getCanonicalFileName(ts.normalizePath(defaultLibFileName))) { + if (canonicalName === canonicalDefaultLibName) { return getRenameInfoError(ts.getLocaleSpecificMessage(ts.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library)); } } @@ -50080,10 +50886,10 @@ var ts; if (kind) { return { canRename: true, - localizedErrorMessage: undefined, - displayName: displayName, - fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kind: kind, + displayName: displayName, + localizedErrorMessage: undefined, + fullDisplayName: typeChecker.getFullyQualifiedName(symbol), kindModifiers: getSymbolModifiers(symbol), triggerSpan: ts.createTextSpan(node.getStart(), node.getWidth()) }; @@ -50168,7 +50974,7 @@ var ts; // then we want 'something' to be in the name table. Similarly, if we have // "a['propname']" then we want to store "propname" in the name table. if (ts.isDeclarationName(node) || - node.parent.kind === 232 /* ExternalModuleReference */ || + node.parent.kind === 234 /* ExternalModuleReference */ || isArgumentOfElementAccessExpression(node)) { nameTable[node.text] = node.text; } @@ -50181,7 +50987,7 @@ var ts; function isArgumentOfElementAccessExpression(node) { return node && node.parent && - node.parent.kind === 167 /* ElementAccessExpression */ && + node.parent.kind === 169 /* ElementAccessExpression */ && node.parent.argumentExpression === node; } /// Classifier @@ -50310,7 +51116,7 @@ var ts; // (and a newline). That way when we lex we'll think we're still in a multiline comment. switch (lexState) { case 3 /* InDoubleQuoteStringLiteral */: - text = '"\\\n' + text; + text = "\"\\\n" + text; offset = 3; break; case 2 /* InSingleQuoteStringLiteral */: @@ -50440,7 +51246,7 @@ var ts; var end = scanner.getTextPos(); addResult(start, end, classFromKind(token)); if (end >= text.length) { - if (token === 9 /* StringLiteral */) { + if (token === 9 /* StringLiteral */ || token === 162 /* StringLiteralType */) { // Check to see if we finished up on a multiline string literal. var tokenText = scanner.getTokenText(); if (scanner.isUnterminated()) { @@ -50579,6 +51385,7 @@ var ts; case 8 /* NumericLiteral */: return 4 /* numericLiteral */; case 9 /* StringLiteral */: + case 162 /* StringLiteralType */: return 6 /* stringLiteral */; case 10 /* RegularExpressionLiteral */: return 7 /* regularExpressionLiteral */; @@ -50645,7 +51452,7 @@ var ts; } var tokenAtLocation = ts.getTokenAtPosition(sourceFile, position); var lineOfPosition = sourceFile.getLineAndCharacterOfPosition(position).line; - if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart()).line > lineOfPosition) { + if (sourceFile.getLineAndCharacterOfPosition(tokenAtLocation.getStart(sourceFile)).line > lineOfPosition) { // Get previous token if the token is returned starts on new line // eg: let x =10; |--- cursor is here // let y = 10; @@ -50664,14 +51471,20 @@ var ts; // Get the span in the node based on its syntax return spanInNode(tokenAtLocation); function textSpan(startNode, endNode) { - return ts.createTextSpanFromBounds(startNode.getStart(), (endNode || startNode).getEnd()); + var start = startNode.decorators ? + ts.skipTrivia(sourceFile.text, startNode.decorators.end) : + startNode.getStart(sourceFile); + return ts.createTextSpanFromBounds(start, (endNode || startNode).getEnd()); } function spanInNodeIfStartsOnSameLine(node, otherwiseOnNode) { - if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart()).line) { + if (node && lineOfPosition === sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line) { return spanInNode(node); } return spanInNode(otherwiseOnNode); } + function spanInNodeArray(nodeArray) { + return ts.createTextSpanFromBounds(ts.skipTrivia(sourceFile.text, nodeArray.pos), nodeArray.end); + } function spanInPreviousNode(node) { return spanInNode(ts.findPrecedingToken(node.pos, sourceFile)); } @@ -50681,125 +51494,131 @@ var ts; function spanInNode(node) { if (node) { if (ts.isExpression(node)) { - if (node.parent.kind === 197 /* DoStatement */) { + if (node.parent.kind === 199 /* DoStatement */) { // Set span as if on while keyword return spanInPreviousNode(node); } - if (node.parent.kind === 199 /* ForStatement */) { + if (node.parent.kind === 139 /* Decorator */) { + // Set breakpoint on the decorator emit + return spanInNode(node.parent); + } + if (node.parent.kind === 201 /* ForStatement */) { // For now lets set the span on this expression, fix it later return textSpan(node); } - if (node.parent.kind === 181 /* BinaryExpression */ && node.parent.operatorToken.kind === 24 /* CommaToken */) { + if (node.parent.kind === 183 /* BinaryExpression */ && node.parent.operatorToken.kind === 24 /* CommaToken */) { // if this is comma expression, the breakpoint is possible in this expression return textSpan(node); } - if (node.parent.kind === 174 /* ArrowFunction */ && node.parent.body === node) { + if (node.parent.kind === 176 /* ArrowFunction */ && node.parent.body === node) { // If this is body of arrow function, it is allowed to have the breakpoint return textSpan(node); } } switch (node.kind) { - case 193 /* VariableStatement */: + case 195 /* VariableStatement */: // Span on first variable declaration return spanInVariableDeclaration(node.declarationList.declarations[0]); - case 211 /* VariableDeclaration */: + case 213 /* VariableDeclaration */: case 141 /* PropertyDeclaration */: case 140 /* PropertySignature */: return spanInVariableDeclaration(node); case 138 /* Parameter */: return spanInParameterDeclaration(node); - case 213 /* FunctionDeclaration */: + case 215 /* FunctionDeclaration */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 144 /* Constructor */: - case 173 /* FunctionExpression */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 176 /* ArrowFunction */: return spanInFunctionDeclaration(node); - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionBlock(node)) { return spanInFunctionBlock(node); } // Fall through - case 219 /* ModuleBlock */: + case 221 /* ModuleBlock */: return spanInBlock(node); - case 244 /* CatchClause */: + case 246 /* CatchClause */: return spanInBlock(node.block); - case 195 /* ExpressionStatement */: + case 197 /* ExpressionStatement */: // span on the expression return textSpan(node.expression); - case 204 /* ReturnStatement */: + case 206 /* ReturnStatement */: // span on return keyword and expression if present return textSpan(node.getChildAt(0), node.expression); - case 198 /* WhileStatement */: + case 200 /* WhileStatement */: // Span on while(...) return textSpan(node, ts.findNextToken(node.expression, node)); - case 197 /* DoStatement */: + case 199 /* DoStatement */: // span in statement of the do statement return spanInNode(node.statement); - case 210 /* DebuggerStatement */: + case 212 /* DebuggerStatement */: // span on debugger keyword return textSpan(node.getChildAt(0)); - case 196 /* IfStatement */: + case 198 /* IfStatement */: // set on if(..) span return textSpan(node, ts.findNextToken(node.expression, node)); - case 207 /* LabeledStatement */: + case 209 /* LabeledStatement */: // span in statement return spanInNode(node.statement); - case 203 /* BreakStatement */: - case 202 /* ContinueStatement */: + case 205 /* BreakStatement */: + case 204 /* ContinueStatement */: // On break or continue keyword and label if present return textSpan(node.getChildAt(0), node.label); - case 199 /* ForStatement */: + case 201 /* ForStatement */: return spanInForStatement(node); - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: // span on for (a in ...) return textSpan(node, ts.findNextToken(node.expression, node)); - case 206 /* SwitchStatement */: + case 208 /* SwitchStatement */: // span on switch(...) return textSpan(node, ts.findNextToken(node.expression, node)); - case 241 /* CaseClause */: - case 242 /* DefaultClause */: + case 243 /* CaseClause */: + case 244 /* DefaultClause */: // span in first statement of the clause return spanInNode(node.statements[0]); - case 209 /* TryStatement */: + case 211 /* TryStatement */: // span in try block return spanInBlock(node.tryBlock); - case 208 /* ThrowStatement */: + case 210 /* ThrowStatement */: // span in throw ... return textSpan(node, node.expression); - case 227 /* ExportAssignment */: + case 229 /* ExportAssignment */: // span on export = id return textSpan(node, node.expression); - case 221 /* ImportEqualsDeclaration */: + case 223 /* ImportEqualsDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleReference); - case 222 /* ImportDeclaration */: + case 224 /* ImportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 228 /* ExportDeclaration */: + case 230 /* ExportDeclaration */: // import statement without including semicolon return textSpan(node, node.moduleSpecifier); - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: // span on complete module if it is instantiated if (ts.getModuleInstanceState(node) !== 1 /* Instantiated */) { return undefined; } - case 214 /* ClassDeclaration */: - case 217 /* EnumDeclaration */: - case 247 /* EnumMember */: - case 168 /* CallExpression */: - case 169 /* NewExpression */: + case 216 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 249 /* EnumMember */: + case 170 /* CallExpression */: + case 171 /* NewExpression */: // span on complete node return textSpan(node); - case 205 /* WithStatement */: + case 207 /* WithStatement */: // span in statement return spanInNode(node.statement); + case 139 /* Decorator */: + return spanInNodeArray(node.parent.decorators); // No breakpoint in interface, type alias - case 215 /* InterfaceDeclaration */: - case 216 /* TypeAliasDeclaration */: + case 217 /* InterfaceDeclaration */: + case 218 /* TypeAliasDeclaration */: return undefined; // Tokens: case 23 /* SemicolonToken */: @@ -50829,11 +51648,11 @@ var ts; return spanInNextNode(node); default: // If this is name of property assignment, set breakpoint in the initializer - if (node.parent.kind === 245 /* PropertyAssignment */ && node.parent.name === node) { + if (node.parent.kind === 247 /* PropertyAssignment */ && node.parent.name === node) { return spanInNode(node.parent.initializer); } // Breakpoint in type assertion goes to its operand - if (node.parent.kind === 171 /* TypeAssertionExpression */ && node.parent.type === node) { + if (node.parent.kind === 173 /* TypeAssertionExpression */ && node.parent.type === node) { return spanInNode(node.parent.expression); } // return type of function go to previous token @@ -50846,12 +51665,12 @@ var ts; } function spanInVariableDeclaration(variableDeclaration) { // If declaration of for in statement, just set the span in parent - if (variableDeclaration.parent.parent.kind === 200 /* ForInStatement */ || - variableDeclaration.parent.parent.kind === 201 /* ForOfStatement */) { + if (variableDeclaration.parent.parent.kind === 202 /* ForInStatement */ || + variableDeclaration.parent.parent.kind === 203 /* ForOfStatement */) { return spanInNode(variableDeclaration.parent.parent); } - var isParentVariableStatement = variableDeclaration.parent.parent.kind === 193 /* VariableStatement */; - var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 199 /* ForStatement */ && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); + var isParentVariableStatement = variableDeclaration.parent.parent.kind === 195 /* VariableStatement */; + var isDeclarationOfForStatement = variableDeclaration.parent.parent.kind === 201 /* ForStatement */ && ts.contains(variableDeclaration.parent.parent.initializer.declarations, variableDeclaration); var declarations = isParentVariableStatement ? variableDeclaration.parent.parent.declarationList.declarations : isDeclarationOfForStatement @@ -50905,7 +51724,7 @@ var ts; } function canFunctionHaveSpanInWholeDeclaration(functionDeclaration) { return !!(functionDeclaration.flags & 2 /* Export */) || - (functionDeclaration.parent.kind === 214 /* ClassDeclaration */ && functionDeclaration.kind !== 144 /* Constructor */); + (functionDeclaration.parent.kind === 216 /* ClassDeclaration */ && functionDeclaration.kind !== 144 /* Constructor */); } function spanInFunctionDeclaration(functionDeclaration) { // No breakpoints in the function signature @@ -50928,18 +51747,18 @@ var ts; } function spanInBlock(block) { switch (block.parent.kind) { - case 218 /* ModuleDeclaration */: + case 220 /* ModuleDeclaration */: if (ts.getModuleInstanceState(block.parent) !== 1 /* Instantiated */) { return undefined; } // Set on parent if on same line otherwise on first statement - case 198 /* WhileStatement */: - case 196 /* IfStatement */: - case 200 /* ForInStatement */: - case 201 /* ForOfStatement */: + case 200 /* WhileStatement */: + case 198 /* IfStatement */: + case 202 /* ForInStatement */: + case 203 /* ForOfStatement */: return spanInNodeIfStartsOnSameLine(block.parent, block.statements[0]); // Set span on previous token if it starts on same line otherwise on the first statement of the block - case 199 /* ForStatement */: + case 201 /* ForStatement */: return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(block.pos, sourceFile, block.parent), block.statements[0]); } // Default action is to set on first statement @@ -50947,7 +51766,7 @@ var ts; } function spanInForStatement(forStatement) { if (forStatement.initializer) { - if (forStatement.initializer.kind === 212 /* VariableDeclarationList */) { + if (forStatement.initializer.kind === 214 /* VariableDeclarationList */) { var variableDeclarationList = forStatement.initializer; if (variableDeclarationList.declarations.length > 0) { return spanInNode(variableDeclarationList.declarations[0]); @@ -50967,13 +51786,13 @@ var ts; // Tokens: function spanInOpenBraceToken(node) { switch (node.parent.kind) { - case 217 /* EnumDeclaration */: + case 219 /* EnumDeclaration */: var enumDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), enumDeclaration.members.length ? enumDeclaration.members[0] : enumDeclaration.getLastToken(sourceFile)); - case 214 /* ClassDeclaration */: + case 216 /* ClassDeclaration */: var classDeclaration = node.parent; return spanInNodeIfStartsOnSameLine(ts.findPrecedingToken(node.pos, sourceFile, node.parent), classDeclaration.members.length ? classDeclaration.members[0] : classDeclaration.getLastToken(sourceFile)); - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: return spanInNodeIfStartsOnSameLine(node.parent.parent, node.parent.clauses[0]); } // Default to parent node @@ -50981,24 +51800,24 @@ var ts; } function spanInCloseBraceToken(node) { switch (node.parent.kind) { - case 219 /* ModuleBlock */: + case 221 /* ModuleBlock */: // If this is not instantiated module block no bp span if (ts.getModuleInstanceState(node.parent.parent) !== 1 /* Instantiated */) { return undefined; } - case 217 /* EnumDeclaration */: - case 214 /* ClassDeclaration */: + case 219 /* EnumDeclaration */: + case 216 /* ClassDeclaration */: // Span on close brace token return textSpan(node); - case 192 /* Block */: + case 194 /* Block */: if (ts.isFunctionBlock(node.parent)) { // Span on close brace token return textSpan(node); } // fall through. - case 244 /* CatchClause */: + case 246 /* CatchClause */: return spanInNode(ts.lastOrUndefined(node.parent.statements)); - case 220 /* CaseBlock */: + case 222 /* CaseBlock */: // breakpoint in last statement of the last clause var caseBlock = node.parent; var lastClause = ts.lastOrUndefined(caseBlock.clauses); @@ -51012,7 +51831,7 @@ var ts; } } function spanInOpenParenToken(node) { - if (node.parent.kind === 197 /* DoStatement */) { + if (node.parent.kind === 199 /* DoStatement */) { // Go to while keyword and do action instead return spanInPreviousNode(node); } @@ -51022,17 +51841,17 @@ var ts; function spanInCloseParenToken(node) { // Is this close paren token of parameter list, set span in previous token switch (node.parent.kind) { - case 173 /* FunctionExpression */: - case 213 /* FunctionDeclaration */: - case 174 /* ArrowFunction */: + case 175 /* FunctionExpression */: + case 215 /* FunctionDeclaration */: + case 176 /* ArrowFunction */: case 143 /* MethodDeclaration */: case 142 /* MethodSignature */: case 145 /* GetAccessor */: case 146 /* SetAccessor */: case 144 /* Constructor */: - case 198 /* WhileStatement */: - case 197 /* DoStatement */: - case 199 /* ForStatement */: + case 200 /* WhileStatement */: + case 199 /* DoStatement */: + case 201 /* ForStatement */: return spanInPreviousNode(node); // Default to parent node default: @@ -51041,19 +51860,19 @@ var ts; } function spanInColonToken(node) { // Is this : specifying return annotation of the function declaration - if (ts.isFunctionLike(node.parent) || node.parent.kind === 245 /* PropertyAssignment */) { + if (ts.isFunctionLike(node.parent) || node.parent.kind === 247 /* PropertyAssignment */) { return spanInPreviousNode(node); } return spanInNode(node.parent); } function spanInGreaterThanOrLessThanToken(node) { - if (node.parent.kind === 171 /* TypeAssertionExpression */) { + if (node.parent.kind === 173 /* TypeAssertionExpression */) { return spanInNode(node.parent.expression); } return spanInNode(node.parent); } function spanInWhileKeyword(node) { - if (node.parent.kind === 197 /* DoStatement */) { + if (node.parent.kind === 199 /* DoStatement */) { // Set span on while expression return textSpan(node, ts.findNextToken(node.parent.expression, node.parent)); } @@ -51082,6 +51901,9 @@ var ts; /// /* @internal */ var debugObjectHost = this; +// We need to use 'null' to interface with the managed side. +/* tslint:disable:no-null */ +/* tslint:disable:no-in-operator */ /* @internal */ var ts; (function (ts) { @@ -51093,7 +51915,6 @@ var ts; var ScriptSnapshotShimAdapter = (function () { function ScriptSnapshotShimAdapter(scriptSnapshotShim) { this.scriptSnapshotShim = scriptSnapshotShim; - this.lineStartPositions = null; } ScriptSnapshotShimAdapter.prototype.getText = function (start, end) { return this.scriptSnapshotShim.getText(start, end); @@ -51119,7 +51940,7 @@ var ts; } }; return ScriptSnapshotShimAdapter; - })(); + }()); var LanguageServiceShimHostAdapter = (function () { function LanguageServiceShimHostAdapter(shimHost) { var _this = this; @@ -51137,6 +51958,9 @@ var ts; }); }; } + if ("directoryExists" in this.shimHost) { + this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; + } } LanguageServiceShimHostAdapter.prototype.log = function (s) { if (this.loggingEnabled) { @@ -51174,11 +51998,6 @@ var ts; return this.files = JSON.parse(encoded); }; LanguageServiceShimHostAdapter.prototype.getScriptSnapshot = function (fileName) { - // Shim the API changes for 1.5 release. This should be removed once - // TypeScript 1.5 has shipped. - if (this.files && this.files.indexOf(fileName) < 0) { - return undefined; - } var scriptSnapshot = this.shimHost.getScriptSnapshot(fileName); return scriptSnapshot && new ScriptSnapshotShimAdapter(scriptSnapshot); }; @@ -51206,17 +52025,10 @@ var ts; return this.shimHost.getCurrentDirectory(); }; LanguageServiceShimHostAdapter.prototype.getDefaultLibFileName = function (options) { - // Wrap the API changes for 1.5 release. This try/catch - // should be removed once TypeScript 1.5 has shipped. - try { - return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); - } - catch (e) { - return ""; - } + return this.shimHost.getDefaultLibFileName(JSON.stringify(options)); }; return LanguageServiceShimHostAdapter; - })(); + }()); ts.LanguageServiceShimHostAdapter = LanguageServiceShimHostAdapter; /** A cancellation that throttles calls to the host */ var ThrottledCancellationToken = (function () { @@ -51238,23 +52050,17 @@ var ts; return false; }; return ThrottledCancellationToken; - })(); + }()); var CoreServicesShimHostAdapter = (function () { function CoreServicesShimHostAdapter(shimHost) { + var _this = this; this.shimHost = shimHost; + if ("directoryExists" in this.shimHost) { + this.directoryExists = function (directoryName) { return _this.shimHost.directoryExists(directoryName); }; + } } CoreServicesShimHostAdapter.prototype.readDirectory = function (rootDir, extension, exclude) { - // Wrap the API changes for 1.5 release. This try/catch - // should be removed once TypeScript 1.5 has shipped. - // Also consider removing the optional designation for - // the exclude param at this time. - var encoded; - try { - encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); - } - catch (e) { - encoded = this.shimHost.readDirectory(rootDir, extension); - } + var encoded = this.shimHost.readDirectory(rootDir, extension, JSON.stringify(exclude)); return JSON.parse(encoded); }; CoreServicesShimHostAdapter.prototype.fileExists = function (fileName) { @@ -51264,18 +52070,19 @@ var ts; return this.shimHost.readFile(fileName); }; return CoreServicesShimHostAdapter; - })(); + }()); ts.CoreServicesShimHostAdapter = CoreServicesShimHostAdapter; function simpleForwardCall(logger, actionDescription, action, logPerformance) { + var start; if (logPerformance) { logger.log(actionDescription); - var start = Date.now(); + start = Date.now(); } var result = action(); if (logPerformance) { var end = Date.now(); logger.log(actionDescription + " completed in " + (end - start) + " msec"); - if (typeof (result) === "string") { + if (typeof result === "string") { var str = result; if (str.length > 128) { str = str.substring(0, 128) + "..."; @@ -51308,7 +52115,7 @@ var ts; this.factory.unregisterShim(this); }; return ShimBase; - })(); + }()); function realizeDiagnostics(diagnostics, newLine) { return diagnostics.map(function (d) { return realizeDiagnostic(d, newLine); }); } @@ -51357,9 +52164,7 @@ var ts; * Update the list of scripts known to the compiler */ LanguageServiceShimObject.prototype.refresh = function (throwOnError) { - this.forwardJSONCall("refresh(" + throwOnError + ")", function () { - return null; - }); + this.forwardJSONCall("refresh(" + throwOnError + ")", function () { return null; }); }; LanguageServiceShimObject.prototype.cleanupSemanticCache = function () { var _this = this; @@ -51374,33 +52179,25 @@ var ts; }; LanguageServiceShimObject.prototype.getSyntacticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - var classifications = _this.languageService.getSyntacticClassifications(fileName, ts.createTextSpan(start, length)); - return classifications; - }); + return this.forwardJSONCall("getSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return _this.languageService.getSyntacticClassifications(fileName, ts.createTextSpan(start, length)); }); }; LanguageServiceShimObject.prototype.getSemanticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - var classifications = _this.languageService.getSemanticClassifications(fileName, ts.createTextSpan(start, length)); - return classifications; - }); + return this.forwardJSONCall("getSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { return _this.languageService.getSemanticClassifications(fileName, ts.createTextSpan(start, length)); }); }; LanguageServiceShimObject.prototype.getEncodedSyntacticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - // directly serialize the spans out to a string. This is much faster to decode - // on the managed side versus a full JSON array. - return convertClassifications(_this.languageService.getEncodedSyntacticClassifications(fileName, ts.createTextSpan(start, length))); - }); + return this.forwardJSONCall("getEncodedSyntacticClassifications('" + fileName + "', " + start + ", " + length + ")", + // directly serialize the spans out to a string. This is much faster to decode + // on the managed side versus a full JSON array. + function () { return convertClassifications(_this.languageService.getEncodedSyntacticClassifications(fileName, ts.createTextSpan(start, length))); }); }; LanguageServiceShimObject.prototype.getEncodedSemanticClassifications = function (fileName, start, length) { var _this = this; - return this.forwardJSONCall("getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", function () { - // directly serialize the spans out to a string. This is much faster to decode - // on the managed side versus a full JSON array. - return convertClassifications(_this.languageService.getEncodedSemanticClassifications(fileName, ts.createTextSpan(start, length))); - }); + return this.forwardJSONCall("getEncodedSemanticClassifications('" + fileName + "', " + start + ", " + length + ")", + // directly serialize the spans out to a string. This is much faster to decode + // on the managed side versus a full JSON array. + function () { return convertClassifications(_this.languageService.getEncodedSemanticClassifications(fileName, ts.createTextSpan(start, length))); }); }; LanguageServiceShimObject.prototype.getSyntacticDiagnostics = function (fileName) { var _this = this; @@ -51430,10 +52227,7 @@ var ts; */ LanguageServiceShimObject.prototype.getQuickInfoAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getQuickInfoAtPosition('" + fileName + "', " + position + ")", function () { - var quickInfo = _this.languageService.getQuickInfoAtPosition(fileName, position); - return quickInfo; - }); + return this.forwardJSONCall("getQuickInfoAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getQuickInfoAtPosition(fileName, position); }); }; /// NAMEORDOTTEDNAMESPAN /** @@ -51442,10 +52236,7 @@ var ts; */ LanguageServiceShimObject.prototype.getNameOrDottedNameSpan = function (fileName, startPos, endPos) { var _this = this; - return this.forwardJSONCall("getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", function () { - var spanInfo = _this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); - return spanInfo; - }); + return this.forwardJSONCall("getNameOrDottedNameSpan('" + fileName + "', " + startPos + ", " + endPos + ")", function () { return _this.languageService.getNameOrDottedNameSpan(fileName, startPos, endPos); }); }; /** * STATEMENTSPAN @@ -51453,18 +52244,12 @@ var ts; */ LanguageServiceShimObject.prototype.getBreakpointStatementAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", function () { - var spanInfo = _this.languageService.getBreakpointStatementAtPosition(fileName, position); - return spanInfo; - }); + return this.forwardJSONCall("getBreakpointStatementAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getBreakpointStatementAtPosition(fileName, position); }); }; /// SIGNATUREHELP LanguageServiceShimObject.prototype.getSignatureHelpItems = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getSignatureHelpItems('" + fileName + "', " + position + ")", function () { - var signatureInfo = _this.languageService.getSignatureHelpItems(fileName, position); - return signatureInfo; - }); + return this.forwardJSONCall("getSignatureHelpItems('" + fileName + "', " + position + ")", function () { return _this.languageService.getSignatureHelpItems(fileName, position); }); }; /// GOTO DEFINITION /** @@ -51473,9 +52258,7 @@ var ts; */ LanguageServiceShimObject.prototype.getDefinitionAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getDefinitionAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getDefinitionAtPosition(fileName, position); - }); + return this.forwardJSONCall("getDefinitionAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getDefinitionAtPosition(fileName, position); }); }; /// GOTO Type /** @@ -51484,29 +52267,20 @@ var ts; */ LanguageServiceShimObject.prototype.getTypeDefinitionAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getTypeDefinitionAtPosition(fileName, position); - }); + return this.forwardJSONCall("getTypeDefinitionAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getTypeDefinitionAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getRenameInfo = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getRenameInfo('" + fileName + "', " + position + ")", function () { - return _this.languageService.getRenameInfo(fileName, position); - }); + return this.forwardJSONCall("getRenameInfo('" + fileName + "', " + position + ")", function () { return _this.languageService.getRenameInfo(fileName, position); }); }; LanguageServiceShimObject.prototype.findRenameLocations = function (fileName, position, findInStrings, findInComments) { var _this = this; - return this.forwardJSONCall("findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", function () { - return _this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); - }); + return this.forwardJSONCall("findRenameLocations('" + fileName + "', " + position + ", " + findInStrings + ", " + findInComments + ")", function () { return _this.languageService.findRenameLocations(fileName, position, findInStrings, findInComments); }); }; /// GET BRACE MATCHING LanguageServiceShimObject.prototype.getBraceMatchingAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getBraceMatchingAtPosition('" + fileName + "', " + position + ")", function () { - var textRanges = _this.languageService.getBraceMatchingAtPosition(fileName, position); - return textRanges; - }); + return this.forwardJSONCall("getBraceMatchingAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getBraceMatchingAtPosition(fileName, position); }); }; /// GET SMART INDENT LanguageServiceShimObject.prototype.getIndentationAtPosition = function (fileName, position, options /*Services.EditorOptions*/) { @@ -51519,21 +52293,15 @@ var ts; /// GET REFERENCES LanguageServiceShimObject.prototype.getReferencesAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getReferencesAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getReferencesAtPosition(fileName, position); - }); + return this.forwardJSONCall("getReferencesAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getReferencesAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.findReferences = function (fileName, position) { var _this = this; - return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { - return _this.languageService.findReferences(fileName, position); - }); + return this.forwardJSONCall("findReferences('" + fileName + "', " + position + ")", function () { return _this.languageService.findReferences(fileName, position); }); }; LanguageServiceShimObject.prototype.getOccurrencesAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { - return _this.languageService.getOccurrencesAtPosition(fileName, position); - }); + return this.forwardJSONCall("getOccurrencesAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getOccurrencesAtPosition(fileName, position); }); }; LanguageServiceShimObject.prototype.getDocumentHighlights = function (fileName, position, filesToSearch) { var _this = this; @@ -51552,41 +52320,32 @@ var ts; */ LanguageServiceShimObject.prototype.getCompletionsAtPosition = function (fileName, position) { var _this = this; - return this.forwardJSONCall("getCompletionsAtPosition('" + fileName + "', " + position + ")", function () { - var completion = _this.languageService.getCompletionsAtPosition(fileName, position); - return completion; - }); + return this.forwardJSONCall("getCompletionsAtPosition('" + fileName + "', " + position + ")", function () { return _this.languageService.getCompletionsAtPosition(fileName, position); }); }; /** Get a string based representation of a completion list entry details */ LanguageServiceShimObject.prototype.getCompletionEntryDetails = function (fileName, position, entryName) { var _this = this; - return this.forwardJSONCall("getCompletionEntryDetails('" + fileName + "', " + position + ", " + entryName + ")", function () { - var details = _this.languageService.getCompletionEntryDetails(fileName, position, entryName); - return details; - }); + return this.forwardJSONCall("getCompletionEntryDetails('" + fileName + "', " + position + ", '" + entryName + "')", function () { return _this.languageService.getCompletionEntryDetails(fileName, position, entryName); }); }; LanguageServiceShimObject.prototype.getFormattingEditsForRange = function (fileName, start, end, options /*Services.FormatCodeOptions*/) { var _this = this; return this.forwardJSONCall("getFormattingEditsForRange('" + fileName + "', " + start + ", " + end + ")", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); - return edits; + return _this.languageService.getFormattingEditsForRange(fileName, start, end, localOptions); }); }; LanguageServiceShimObject.prototype.getFormattingEditsForDocument = function (fileName, options /*Services.FormatCodeOptions*/) { var _this = this; return this.forwardJSONCall("getFormattingEditsForDocument('" + fileName + "')", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsForDocument(fileName, localOptions); - return edits; + return _this.languageService.getFormattingEditsForDocument(fileName, localOptions); }); }; LanguageServiceShimObject.prototype.getFormattingEditsAfterKeystroke = function (fileName, position, key, options /*Services.FormatCodeOptions*/) { var _this = this; return this.forwardJSONCall("getFormattingEditsAfterKeystroke('" + fileName + "', " + position + ", '" + key + "')", function () { var localOptions = JSON.parse(options); - var edits = _this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); - return edits; + return _this.languageService.getFormattingEditsAfterKeystroke(fileName, position, key, localOptions); }); }; LanguageServiceShimObject.prototype.getDocCommentTemplateAtPosition = function (fileName, position) { @@ -51597,45 +52356,27 @@ var ts; /** Return a list of symbols that are interesting to navigate to */ LanguageServiceShimObject.prototype.getNavigateToItems = function (searchValue, maxResultCount) { var _this = this; - return this.forwardJSONCall("getNavigateToItems('" + searchValue + "', " + maxResultCount + ")", function () { - var items = _this.languageService.getNavigateToItems(searchValue, maxResultCount); - return items; - }); + return this.forwardJSONCall("getNavigateToItems('" + searchValue + "', " + maxResultCount + ")", function () { return _this.languageService.getNavigateToItems(searchValue, maxResultCount); }); }; LanguageServiceShimObject.prototype.getNavigationBarItems = function (fileName) { var _this = this; - return this.forwardJSONCall("getNavigationBarItems('" + fileName + "')", function () { - var items = _this.languageService.getNavigationBarItems(fileName); - return items; - }); + return this.forwardJSONCall("getNavigationBarItems('" + fileName + "')", function () { return _this.languageService.getNavigationBarItems(fileName); }); }; LanguageServiceShimObject.prototype.getOutliningSpans = function (fileName) { var _this = this; - return this.forwardJSONCall("getOutliningSpans('" + fileName + "')", function () { - var items = _this.languageService.getOutliningSpans(fileName); - return items; - }); + return this.forwardJSONCall("getOutliningSpans('" + fileName + "')", function () { return _this.languageService.getOutliningSpans(fileName); }); }; LanguageServiceShimObject.prototype.getTodoComments = function (fileName, descriptors) { var _this = this; - return this.forwardJSONCall("getTodoComments('" + fileName + "')", function () { - var items = _this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); - return items; - }); + return this.forwardJSONCall("getTodoComments('" + fileName + "')", function () { return _this.languageService.getTodoComments(fileName, JSON.parse(descriptors)); }); }; /// Emit LanguageServiceShimObject.prototype.getEmitOutput = function (fileName) { var _this = this; - return this.forwardJSONCall("getEmitOutput('" + fileName + "')", function () { - var output = _this.languageService.getEmitOutput(fileName); - // Shim the API changes for 1.5 release. This should be removed once - // TypeScript 1.5 has shipped. - output.emitOutputStatus = output.emitSkipped ? 1 : 0; - return output; - }); + return this.forwardJSONCall("getEmitOutput('" + fileName + "')", function () { return _this.languageService.getEmitOutput(fileName); }); }; return LanguageServiceShimObject; - })(ShimBase); + }(ShimBase)); function convertClassifications(classifications) { return { spans: classifications.spans.join(","), endOfLineState: classifications.endOfLineState }; } @@ -51654,17 +52395,17 @@ var ts; /// COLORIZATION ClassifierShimObject.prototype.getClassificationsForLine = function (text, lexState, classifyKeywordsInGenerics) { var classification = this.classifier.getClassificationsForLine(text, lexState, classifyKeywordsInGenerics); - var items = classification.entries; var result = ""; - for (var i = 0; i < items.length; i++) { - result += items[i].length + "\n"; - result += items[i].classification + "\n"; + for (var _i = 0, _a = classification.entries; _i < _a.length; _i++) { + var item = _a[_i]; + result += item.length + "\n"; + result += item.classification + "\n"; } result += classification.finalLexState; return result; }; return ClassifierShimObject; - })(ShimBase); + }(ShimBase)); var CoreServicesShimObject = (function (_super) { __extends(CoreServicesShimObject, _super); function CoreServicesShimObject(factory, logger, host) { @@ -51723,24 +52464,22 @@ var ts; return { options: {}, files: [], - errors: [realizeDiagnostic(result.error, '\r\n')] + errors: [realizeDiagnostic(result.error, "\r\n")] }; } var configFile = ts.parseJsonConfigFileContent(result.config, _this.host, ts.getDirectoryPath(ts.normalizeSlashes(fileName))); return { options: configFile.options, files: configFile.fileNames, - errors: realizeDiagnostics(configFile.errors, '\r\n') + errors: realizeDiagnostics(configFile.errors, "\r\n") }; }); }; CoreServicesShimObject.prototype.getDefaultCompilationSettings = function () { - return this.forwardJSONCall("getDefaultCompilationSettings()", function () { - return ts.getDefaultCompilerOptions(); - }); + return this.forwardJSONCall("getDefaultCompilationSettings()", function () { return ts.getDefaultCompilerOptions(); }); }; return CoreServicesShimObject; - })(ShimBase); + }(ShimBase)); var TypeScriptServicesFactory = (function () { function TypeScriptServicesFactory() { this._shims = []; @@ -51802,12 +52541,14 @@ var ts; throw new Error("Invalid operation"); }; return TypeScriptServicesFactory; - })(); + }()); ts.TypeScriptServicesFactory = TypeScriptServicesFactory; if (typeof module !== "undefined" && module.exports) { module.exports = ts; } })(ts || (ts = {})); +/* tslint:enable:no-in-operator */ +/* tslint:enable:no-null */ /// TODO: this is used by VS, clean this up on both sides of the interface /* @internal */ var TypeScript; @@ -51817,5 +52558,9 @@ var TypeScript; Services.TypeScriptServicesFactory = ts.TypeScriptServicesFactory; })(Services = TypeScript.Services || (TypeScript.Services = {})); })(TypeScript || (TypeScript = {})); +/* tslint:disable:no-unused-variable */ +// 'toolsVersion' gets consumed by the managed side, so it's not unused. +// TODO: it should be moved into a namespace though. /* @internal */ -var toolsVersion = "1.6"; +var toolsVersion = "1.8"; +/* tslint:enable:no-unused-variable */ From c5131e6730fc1ad16f732abc0b0f258b1edf4bab Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 8 Jan 2016 14:44:07 -0800 Subject: [PATCH 158/164] recognize Jsx attribute in syntactic classifier --- src/services/services.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/services/services.ts b/src/services/services.ts index 61dc342f9f0..2c8982f10ea 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1640,6 +1640,7 @@ namespace ts { jsxOpenTagName = 19, jsxCloseTagName = 20, jsxSelfClosingTagName = 21, + jsxAttribute = 22 } /// Language Service @@ -6903,9 +6904,12 @@ namespace ts { return ClassificationType.jsxSelfClosingTagName; } return; + case SyntaxKind.JsxAttribute: + if ((token.parent).name === token) { + return ClassificationType.jsxAttribute; + } } } - return ClassificationType.identifier; } } From 946cf63a38743d23bab9e7616a9dbe160a6f5f37 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 8 Jan 2016 17:18:02 -0800 Subject: [PATCH 159/164] classify jsx text and jsx attribute values --- src/services/services.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 2c8982f10ea..cf59e127a5e 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1640,7 +1640,9 @@ namespace ts { jsxOpenTagName = 19, jsxCloseTagName = 20, jsxSelfClosingTagName = 21, - jsxAttribute = 22 + jsxAttribute = 22, + jsxText = 23, + jsxAttributeStringValue = 24, } /// Language Service @@ -6783,12 +6785,12 @@ namespace ts { } } - function classifyToken(token: Node): void { + function classifyTokenOrJsxText(token: Node): void { if (nodeIsMissing(token)) { return; } - const tokenStart = classifyLeadingTriviaAndGetTokenStart(token); + const tokenStart = token.kind === SyntaxKind.JsxText ? token.pos : classifyLeadingTriviaAndGetTokenStart(token); const tokenWidth = token.end - tokenStart; Debug.assert(tokenWidth >= 0); @@ -6843,7 +6845,7 @@ namespace ts { return ClassificationType.numericLiteral; } else if (tokenKind === SyntaxKind.StringLiteral || tokenKind === SyntaxKind.StringLiteralType) { - return ClassificationType.stringLiteral; + return token.parent.kind === SyntaxKind.JsxAttribute ? ClassificationType.jsxAttributeStringValue : ClassificationType.stringLiteral; } else if (tokenKind === SyntaxKind.RegularExpressionLiteral) { // TODO: we should get another classification type for these literals. @@ -6853,6 +6855,9 @@ namespace ts { // TODO (drosen): we should *also* get another classification type for these literals. return ClassificationType.stringLiteral; } + else if (tokenKind === SyntaxKind.JsxText) { + return ClassificationType.jsxText; + } else if (tokenKind === SyntaxKind.Identifier) { if (token) { switch (token.parent.kind) { @@ -6926,8 +6931,8 @@ namespace ts { const children = element.getChildren(sourceFile); for (let i = 0, n = children.length; i < n; i++) { const child = children[i]; - if (isToken(child)) { - classifyToken(child); + if (isToken(child) || child.kind === SyntaxKind.JsxText) { + classifyTokenOrJsxText(child); } else { // Recurse into our child nodes. From 5c0d1a8afa7ab656535288b763d0b41e91598c7b Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 8 Jan 2016 22:30:26 -0800 Subject: [PATCH 160/164] added jsx classification support to fourslash and tests --- src/harness/fourslash.ts | 24 +++++++++++++++ src/services/services.ts | 13 ++++++-- tests/cases/fourslash/fourslash.ts | 30 +++++++++++++++++++ .../fourslash/syntacticClassificationsJsx1.ts | 27 +++++++++++++++++ 4 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 tests/cases/fourslash/syntacticClassificationsJsx1.ts diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 30626a83d62..ca0a5ad278d 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -3284,6 +3284,30 @@ namespace FourSlashInterface { export function typeAliasName(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { return getClassification("typeAliasName", text, position); } + + export function jsxOpenTagName(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { + return getClassification("jsxOpenTagName", text, position); + } + + export function jsxCloseTagName(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { + return getClassification("jsxCloseTagName", text, position); + } + + export function jsxSelfClosingTagName(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { + return getClassification("jsxSelfClosingTagName", text, position); + } + + export function jsxAttribute(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { + return getClassification("jsxAttribute", text, position); + } + + export function jsxText(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { + return getClassification("jsxText", text, position); + } + + export function jsxAttributeStringLiteralValue(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { + return getClassification("jsxAttributeStringLiteralValue", text, position); + } function getClassification(type: string, text: string, position?: number) { return { diff --git a/src/services/services.ts b/src/services/services.ts index cf59e127a5e..248965b2403 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1616,6 +1616,9 @@ namespace ts { public static jsxOpenTagName = "jsx open tag name"; public static jsxCloseTagName = "jsx close tag name"; public static jsxSelfClosingTagName = "jsx self closing tag name"; + public static jsxAttribute = "jsx attribute"; + public static jsxText = "jsx text"; + public static jsxAttributeStringLiteralValue = "jsx attribute string literal value"; } export const enum ClassificationType { @@ -1642,7 +1645,7 @@ namespace ts { jsxSelfClosingTagName = 21, jsxAttribute = 22, jsxText = 23, - jsxAttributeStringValue = 24, + jsxAttributeStringLiteralValue = 24, } /// Language Service @@ -6577,6 +6580,9 @@ namespace ts { case ClassificationType.jsxOpenTagName: return ClassificationTypeNames.jsxOpenTagName; case ClassificationType.jsxCloseTagName: return ClassificationTypeNames.jsxCloseTagName; case ClassificationType.jsxSelfClosingTagName: return ClassificationTypeNames.jsxSelfClosingTagName; + case ClassificationType.jsxAttribute: return ClassificationTypeNames.jsxAttribute; + case ClassificationType.jsxText: return ClassificationTypeNames.jsxText; + case ClassificationType.jsxAttributeStringLiteralValue: return ClassificationTypeNames.jsxAttributeStringLiteralValue; } } @@ -6826,7 +6832,8 @@ namespace ts { // the '=' in a variable declaration is special cased here. if (token.parent.kind === SyntaxKind.VariableDeclaration || token.parent.kind === SyntaxKind.PropertyDeclaration || - token.parent.kind === SyntaxKind.Parameter) { + token.parent.kind === SyntaxKind.Parameter || + token.parent.kind === SyntaxKind.JsxAttribute) { return ClassificationType.operator; } } @@ -6845,7 +6852,7 @@ namespace ts { return ClassificationType.numericLiteral; } else if (tokenKind === SyntaxKind.StringLiteral || tokenKind === SyntaxKind.StringLiteralType) { - return token.parent.kind === SyntaxKind.JsxAttribute ? ClassificationType.jsxAttributeStringValue : ClassificationType.stringLiteral; + return token.parent.kind === SyntaxKind.JsxAttribute ? ClassificationType.jsxAttributeStringLiteralValue : ClassificationType.stringLiteral; } else if (tokenKind === SyntaxKind.RegularExpressionLiteral) { // TODO: we should get another classification type for these literals. diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts index 0e83189dd8e..b69a757f01e 100644 --- a/tests/cases/fourslash/fourslash.ts +++ b/tests/cases/fourslash/fourslash.ts @@ -338,6 +338,36 @@ declare namespace FourSlashInterface { text: string; textSpan?: TextSpan; }; + function jsxOpenTagName(text: string, position?: number): { + classificationType: string; + text: string; + textSpan?: TextSpan; + }; + function jsxCloseTagName(text: string, position?: number): { + classificationType: string; + text: string; + textSpan?: TextSpan; + }; + function jsxSelfClosingTagName(text: string, position?: number): { + classificationType: string; + text: string; + textSpan?: TextSpan; + }; + function jsxAttribute(text: string, position?: number): { + classificationType: string; + text: string; + textSpan?: TextSpan; + }; + function jsxText(text: string, position?: number): { + classificationType: string; + text: string; + textSpan?: TextSpan; + }; + function jsxAttributeStringLiteralValue(text: string, position?: number): { + classificationType: string; + text: string; + textSpan?: TextSpan; + }; } } declare function verifyOperationIsCancelled(f: any): void; diff --git a/tests/cases/fourslash/syntacticClassificationsJsx1.ts b/tests/cases/fourslash/syntacticClassificationsJsx1.ts new file mode 100644 index 00000000000..a26e7f9c8f4 --- /dev/null +++ b/tests/cases/fourslash/syntacticClassificationsJsx1.ts @@ -0,0 +1,27 @@ +/// + +// @Filename: file1.tsx +////let x =
+//// some jsx text +////
; +//// +////let y = + +const c = classification; +verify.syntacticClassificationsAre( + c.keyword("let"), c.identifier("x"), c.operator("="), + c.punctuation("<"), + c.jsxOpenTagName("div"), + c.jsxAttribute("a"), c.operator("="), c.jsxAttributeStringLiteralValue(`"some-value"`), + c.jsxAttribute("b"), c.operator("="), c.punctuation("{"), c.numericLiteral("1"), c.punctuation("}"), + c.punctuation(">"), + c.jsxText(` + some jsx text +`), + c.punctuation("<"), c.punctuation("/"), c.jsxCloseTagName("div"), c.punctuation(">"), c.punctuation(";"), + c.keyword("let"), c.identifier("y"), c.operator("="), + c.punctuation("<"), + c.jsxSelfClosingTagName("element"), + c.jsxAttribute("attr"), c.operator("="), c.jsxAttributeStringLiteralValue(`"123"`), + c.punctuation("/"), c.punctuation(">") +) \ No newline at end of file From c1b031aa739ae88dff4d19c2517e8547b4ba9208 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 8 Jan 2016 22:43:21 -0800 Subject: [PATCH 161/164] fix linter issues --- src/harness/fourslash.ts | 2 +- src/services/services.ts | 2 +- tests/cases/fourslash/syntacticClassificationsJsx1.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index ca0a5ad278d..435acf548b2 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -3284,7 +3284,7 @@ namespace FourSlashInterface { export function typeAliasName(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { return getClassification("typeAliasName", text, position); } - + export function jsxOpenTagName(text: string, position?: number): { classificationType: string; text: string; textSpan?: FourSlash.TextSpan } { return getClassification("jsxOpenTagName", text, position); } diff --git a/src/services/services.ts b/src/services/services.ts index 248965b2403..61b504a25c0 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -6864,7 +6864,7 @@ namespace ts { } else if (tokenKind === SyntaxKind.JsxText) { return ClassificationType.jsxText; - } + } else if (tokenKind === SyntaxKind.Identifier) { if (token) { switch (token.parent.kind) { diff --git a/tests/cases/fourslash/syntacticClassificationsJsx1.ts b/tests/cases/fourslash/syntacticClassificationsJsx1.ts index a26e7f9c8f4..e9de07c759b 100644 --- a/tests/cases/fourslash/syntacticClassificationsJsx1.ts +++ b/tests/cases/fourslash/syntacticClassificationsJsx1.ts @@ -7,7 +7,7 @@ //// ////let y = -const c = classification; +const c = classification; verify.syntacticClassificationsAre( c.keyword("let"), c.identifier("x"), c.operator("="), c.punctuation("<"), From 356def91fadd0d9f43f9bf93bcc1b6d7bdf67e05 Mon Sep 17 00:00:00 2001 From: Yui T Date: Sun, 10 Jan 2016 06:04:07 -0800 Subject: [PATCH 162/164] update baseline from merging --- .../reference/reactNamespaceImportPresevation.symbols | 1 + tests/baselines/reference/reactNamespaceJSXEmit.symbols | 3 +++ 2 files changed, 4 insertions(+) diff --git a/tests/baselines/reference/reactNamespaceImportPresevation.symbols b/tests/baselines/reference/reactNamespaceImportPresevation.symbols index 8a4407c8160..e2f530d31ba 100644 --- a/tests/baselines/reference/reactNamespaceImportPresevation.symbols +++ b/tests/baselines/reference/reactNamespaceImportPresevation.symbols @@ -16,5 +16,6 @@ declare var foo: any; >foo : Symbol(foo, Decl(test.tsx, 1, 11)) ; +>foo : Symbol(unknown) >data : Symbol(unknown) diff --git a/tests/baselines/reference/reactNamespaceJSXEmit.symbols b/tests/baselines/reference/reactNamespaceJSXEmit.symbols index d79c1cf531e..3ca5b91e538 100644 --- a/tests/baselines/reference/reactNamespaceJSXEmit.symbols +++ b/tests/baselines/reference/reactNamespaceJSXEmit.symbols @@ -13,6 +13,7 @@ declare var x: any; >x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) ; +>foo : Symbol(unknown) >data : Symbol(unknown) ; @@ -21,6 +22,8 @@ declare var x: any; >x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) ; +>x-component : Symbol(unknown) + ; >Bar : Symbol(Bar, Decl(reactNamespaceJSXEmit.tsx, 3, 11)) >x : Symbol(x, Decl(reactNamespaceJSXEmit.tsx, 4, 11)) From 1c553dfd791aa091715decb9a0cb20582386017d Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Mon, 11 Jan 2016 09:34:49 -0800 Subject: [PATCH 163/164] Reverse order of Promise.all overloads. The highest arity overloads should come first -- Typescript chooses the first overload that matches, which currently means that the *shortest* tuple type gets chosen, not the longest matching one. --- src/lib/es6.d.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/es6.d.ts b/src/lib/es6.d.ts index 84128a01cf2..44e5e49f984 100644 --- a/src/lib/es6.d.ts +++ b/src/lib/es6.d.ts @@ -1281,15 +1281,15 @@ interface PromiseConstructor { * @param values An array of Promises. * @returns A new Promise. */ - all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; - all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike, T10 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike, T9 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike, T8 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike, T7 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6, T7]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike, T6 | PromiseLike]): Promise<[T1, T2, T3, T4, T5, T6]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike , T5 | PromiseLike]): Promise<[T1, T2, T3, T4, T5]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike, T4 | PromiseLike ]): Promise<[T1, T2, T3, T4]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike, T3 | PromiseLike]): Promise<[T1, T2, T3]>; + all(values: [T1 | PromiseLike, T2 | PromiseLike]): Promise<[T1, T2]>; all(values: Iterable>): Promise; /** From b811b9f94b23491f1549eb11c20e272bdb7acb3d Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Mon, 11 Jan 2016 14:48:57 -0800 Subject: [PATCH 164/164] report errors when re-exporting globals --- src/compiler/checker.ts | 11 +++- src/compiler/diagnosticMessages.json | 4 ++ .../exportSpecifierForAGlobal.errors.txt | 16 ++++++ .../exportSpecifierForAGlobal.symbols | 20 ------- .../reference/exportSpecifierForAGlobal.types | 20 ------- ...ierReferencingOuterDeclaration1.errors.txt | 11 ++++ ...cifierReferencingOuterDeclaration1.symbols | 14 ----- ...pecifierReferencingOuterDeclaration1.types | 14 ----- ...ierReferencingOuterDeclaration2.errors.txt | 11 ++++ ...cifierReferencingOuterDeclaration2.symbols | 14 ----- ...pecifierReferencingOuterDeclaration2.types | 14 ----- .../reExportGlobalDeclaration1.errors.txt | 57 +++++++++++++++++++ .../reference/reExportGlobalDeclaration1.js | 24 ++++++++ .../reExportGlobalDeclaration2.errors.txt | 35 ++++++++++++ .../reference/reExportGlobalDeclaration2.js | 20 +++++++ .../reExportGlobalDeclaration3.errors.txt | 35 ++++++++++++ .../reference/reExportGlobalDeclaration3.js | 20 +++++++ .../reExportGlobalDeclaration4.errors.txt | 35 ++++++++++++ .../reference/reExportGlobalDeclaration4.js | 20 +++++++ .../compiler/reExportGlobalDeclaration1.ts | 19 +++++++ .../compiler/reExportGlobalDeclaration2.ts | 16 ++++++ .../compiler/reExportGlobalDeclaration3.ts | 16 ++++++ .../compiler/reExportGlobalDeclaration4.ts | 16 ++++++ 23 files changed, 365 insertions(+), 97 deletions(-) create mode 100644 tests/baselines/reference/exportSpecifierForAGlobal.errors.txt delete mode 100644 tests/baselines/reference/exportSpecifierForAGlobal.symbols delete mode 100644 tests/baselines/reference/exportSpecifierForAGlobal.types create mode 100644 tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt delete mode 100644 tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.symbols delete mode 100644 tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.types create mode 100644 tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt delete mode 100644 tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.symbols delete mode 100644 tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.types create mode 100644 tests/baselines/reference/reExportGlobalDeclaration1.errors.txt create mode 100644 tests/baselines/reference/reExportGlobalDeclaration1.js create mode 100644 tests/baselines/reference/reExportGlobalDeclaration2.errors.txt create mode 100644 tests/baselines/reference/reExportGlobalDeclaration2.js create mode 100644 tests/baselines/reference/reExportGlobalDeclaration3.errors.txt create mode 100644 tests/baselines/reference/reExportGlobalDeclaration3.js create mode 100644 tests/baselines/reference/reExportGlobalDeclaration4.errors.txt create mode 100644 tests/baselines/reference/reExportGlobalDeclaration4.js create mode 100644 tests/cases/compiler/reExportGlobalDeclaration1.ts create mode 100644 tests/cases/compiler/reExportGlobalDeclaration2.ts create mode 100644 tests/cases/compiler/reExportGlobalDeclaration3.ts create mode 100644 tests/cases/compiler/reExportGlobalDeclaration4.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7ed9dbcd377..5a6c8e121f7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14364,7 +14364,16 @@ namespace ts { function checkExportSpecifier(node: ExportSpecifier) { checkAliasSymbol(node); if (!(node.parent.parent).moduleSpecifier) { - markExportAsReferenced(node); + const exportedName = node.propertyName || node.name; + // find immediate value referenced by exported name (SymbolFlags.Alias is set so we don't chase down aliases) + const symbol = resolveName(exportedName, exportedName.text, SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Alias, + /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); + if (symbol && isGlobalSourceFile(getDeclarationContainer(symbol.declarations[0]))) { + error(exportedName, Diagnostics.Cannot_re_export_name_that_is_not_defined_in_the_module); + } + else { + markExportAsReferenced(node); + } } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index a57c16e2cd6..28b10dd73b4 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1771,6 +1771,10 @@ "category": "Error", "code": 2660 }, + "Cannot re-export name that is not defined in the module.": { + "category": "Error", + "code": 2661 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", "code": 4000 diff --git a/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt b/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt new file mode 100644 index 00000000000..6df9c6de1ef --- /dev/null +++ b/tests/baselines/reference/exportSpecifierForAGlobal.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/b.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/a.d.ts (0 errors) ==== + + declare class X { } + +==== tests/cases/compiler/b.ts (1 errors) ==== + export {X}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export function f() { + var x: X; + return x; + } + \ No newline at end of file diff --git a/tests/baselines/reference/exportSpecifierForAGlobal.symbols b/tests/baselines/reference/exportSpecifierForAGlobal.symbols deleted file mode 100644 index b38fc7be270..00000000000 --- a/tests/baselines/reference/exportSpecifierForAGlobal.symbols +++ /dev/null @@ -1,20 +0,0 @@ -=== tests/cases/compiler/a.d.ts === - -declare class X { } ->X : Symbol(X, Decl(a.d.ts, 0, 0)) - -=== tests/cases/compiler/b.ts === -export {X}; ->X : Symbol(X, Decl(b.ts, 0, 8)) - -export function f() { ->f : Symbol(f, Decl(b.ts, 0, 11)) - - var x: X; ->x : Symbol(x, Decl(b.ts, 2, 7)) ->X : Symbol(X, Decl(a.d.ts, 0, 0)) - - return x; ->x : Symbol(x, Decl(b.ts, 2, 7)) -} - diff --git a/tests/baselines/reference/exportSpecifierForAGlobal.types b/tests/baselines/reference/exportSpecifierForAGlobal.types deleted file mode 100644 index e3d728ad0d0..00000000000 --- a/tests/baselines/reference/exportSpecifierForAGlobal.types +++ /dev/null @@ -1,20 +0,0 @@ -=== tests/cases/compiler/a.d.ts === - -declare class X { } ->X : X - -=== tests/cases/compiler/b.ts === -export {X}; ->X : typeof X - -export function f() { ->f : () => X - - var x: X; ->x : X ->X : X - - return x; ->x : X -} - diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt new file mode 100644 index 00000000000..7eb095b05f0 --- /dev/null +++ b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts(3,14): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts (1 errors) ==== + declare module X { export interface bar { } } + declare module "m" { + export { X }; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export function foo(): X.bar; + } \ No newline at end of file diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.symbols b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.symbols deleted file mode 100644 index 16abde86d32..00000000000 --- a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.symbols +++ /dev/null @@ -1,14 +0,0 @@ -=== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts === -declare module X { export interface bar { } } ->X : Symbol(X, Decl(exportSpecifierReferencingOuterDeclaration1.ts, 0, 0)) ->bar : Symbol(bar, Decl(exportSpecifierReferencingOuterDeclaration1.ts, 0, 18)) - -declare module "m" { - export { X }; ->X : Symbol(X, Decl(exportSpecifierReferencingOuterDeclaration1.ts, 2, 12)) - - export function foo(): X.bar; ->foo : Symbol(foo, Decl(exportSpecifierReferencingOuterDeclaration1.ts, 2, 17)) ->X : Symbol(X, Decl(exportSpecifierReferencingOuterDeclaration1.ts, 0, 0)) ->bar : Symbol(X.bar, Decl(exportSpecifierReferencingOuterDeclaration1.ts, 0, 18)) -} diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.types b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.types deleted file mode 100644 index be03554a1b0..00000000000 --- a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration1.types +++ /dev/null @@ -1,14 +0,0 @@ -=== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration1.ts === -declare module X { export interface bar { } } ->X : any ->bar : bar - -declare module "m" { - export { X }; ->X : any - - export function foo(): X.bar; ->foo : () => X.bar ->X : any ->bar : X.bar -} diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt new file mode 100644 index 00000000000..00118010785 --- /dev/null +++ b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts(1,10): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_A.ts (0 errors) ==== + declare module X { export interface bar { } } + +==== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts (1 errors) ==== + export { X }; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export declare function foo(): X.bar; \ No newline at end of file diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.symbols b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.symbols deleted file mode 100644 index 9a57645b1cb..00000000000 --- a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.symbols +++ /dev/null @@ -1,14 +0,0 @@ -=== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_A.ts === -declare module X { export interface bar { } } ->X : Symbol(X, Decl(exportSpecifierReferencingOuterDeclaration2_A.ts, 0, 0)) ->bar : Symbol(bar, Decl(exportSpecifierReferencingOuterDeclaration2_A.ts, 0, 18)) - -=== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts === -export { X }; ->X : Symbol(X, Decl(exportSpecifierReferencingOuterDeclaration2_B.ts, 0, 8)) - -export declare function foo(): X.bar; ->foo : Symbol(foo, Decl(exportSpecifierReferencingOuterDeclaration2_B.ts, 0, 13)) ->X : Symbol(X, Decl(exportSpecifierReferencingOuterDeclaration2_A.ts, 0, 0)) ->bar : Symbol(X.bar, Decl(exportSpecifierReferencingOuterDeclaration2_A.ts, 0, 18)) - diff --git a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.types b/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.types deleted file mode 100644 index fa59948c116..00000000000 --- a/tests/baselines/reference/exportSpecifierReferencingOuterDeclaration2.types +++ /dev/null @@ -1,14 +0,0 @@ -=== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_A.ts === -declare module X { export interface bar { } } ->X : any ->bar : bar - -=== tests/cases/compiler/exportSpecifierReferencingOuterDeclaration2_B.ts === -export { X }; ->X : any - -export declare function foo(): X.bar; ->foo : () => X.bar ->X : any ->bar : X.bar - diff --git a/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt new file mode 100644 index 00000000000..0ebeed05b28 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration1.errors.txt @@ -0,0 +1,57 @@ +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,12): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,13): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(4,12): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(5,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(5,12): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(8,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(9,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(10,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(11,9): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/file1.d.ts (0 errors) ==== + + declare var x: number; + declare var x1: number; + declare let {a, b}: {a: number, b: number}; + +==== tests/cases/compiler/file2.ts (12 errors) ==== + export {x, x as y}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {x1, x1 as y1}; + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + + export {a, a as a1}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {b, b as b1}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + + + export {x as z}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {x1 as z1}; + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {a as a2}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {b as b2}; + ~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration1.js b/tests/baselines/reference/reExportGlobalDeclaration1.js new file mode 100644 index 00000000000..c0db9a0eaf3 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration1.js @@ -0,0 +1,24 @@ +//// [tests/cases/compiler/reExportGlobalDeclaration1.ts] //// + +//// [file1.d.ts] + +declare var x: number; +declare var x1: number; +declare let {a, b}: {a: number, b: number}; + +//// [file2.ts] +export {x, x as y}; +export {x1, x1 as y1}; + +export {a, a as a1}; +export {b, b as b1}; + + +export {x as z}; +export {x1 as z1}; +export {a as a2}; +export {b as b2}; + + +//// [file2.js] +"use strict"; diff --git a/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt new file mode 100644 index 00000000000..17a3e2ad565 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration2.errors.txt @@ -0,0 +1,35 @@ +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,13): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,13): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/file1.d.ts (0 errors) ==== + + declare interface I1 { + x: number + } + + declare interface I2 { + x: number + } + +==== tests/cases/compiler/file2.ts (6 errors) ==== + export {I1, I1 as II1}; + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {I2, I2 as II2}; + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {I1 as III1}; + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {I2 as III2}; + ~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration2.js b/tests/baselines/reference/reExportGlobalDeclaration2.js new file mode 100644 index 00000000000..160a9b28f54 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration2.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reExportGlobalDeclaration2.ts] //// + +//// [file1.d.ts] + +declare interface I1 { + x: number +} + +declare interface I2 { + x: number +} + +//// [file2.ts] +export {I1, I1 as II1}; +export {I2, I2 as II2}; +export {I1 as III1}; +export {I2 as III2}; + +//// [file2.js] +"use strict"; diff --git a/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt new file mode 100644 index 00000000000..d99c184518c --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration3.errors.txt @@ -0,0 +1,35 @@ +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,14): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,14): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/file1.d.ts (0 errors) ==== + + declare namespace NS1 { + export var foo: number; + } + + declare namespace NS2 { + export var foo: number; + } + +==== tests/cases/compiler/file2.ts (6 errors) ==== + export {NS1, NS1 as NNS1}; + ~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {NS2, NS2 as NNS2}; + ~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {NS1 as NNNS1}; + ~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {NS2 as NNNS2}; + ~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration3.js b/tests/baselines/reference/reExportGlobalDeclaration3.js new file mode 100644 index 00000000000..e1b85b6b8d5 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration3.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reExportGlobalDeclaration3.ts] //// + +//// [file1.d.ts] + +declare namespace NS1 { + export var foo: number; +} + +declare namespace NS2 { + export var foo: number; +} + +//// [file2.ts] +export {NS1, NS1 as NNS1}; +export {NS2, NS2 as NNS2}; +export {NS1 as NNNS1}; +export {NS2 as NNNS2}; + +//// [file2.js] +"use strict"; diff --git a/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt b/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt new file mode 100644 index 00000000000..5e250a5fc57 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration4.errors.txt @@ -0,0 +1,35 @@ +tests/cases/compiler/file2.ts(1,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(1,15): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(2,15): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(3,9): error TS2661: Cannot re-export name that is not defined in the module. +tests/cases/compiler/file2.ts(4,9): error TS2661: Cannot re-export name that is not defined in the module. + + +==== tests/cases/compiler/file1.d.ts (0 errors) ==== + + declare class Cls1 { + x: number + } + declare class Cls2 { + x: number + } + + +==== tests/cases/compiler/file2.ts (6 errors) ==== + export {Cls1, Cls1 as CCls1}; + ~~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {Cls2, Cls2 as CCls2}; + ~~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + ~~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {Cls1 as CCCls1}; + ~~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. + export {Cls2 as CCCls2}; + ~~~~ +!!! error TS2661: Cannot re-export name that is not defined in the module. \ No newline at end of file diff --git a/tests/baselines/reference/reExportGlobalDeclaration4.js b/tests/baselines/reference/reExportGlobalDeclaration4.js new file mode 100644 index 00000000000..09d6b760790 --- /dev/null +++ b/tests/baselines/reference/reExportGlobalDeclaration4.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reExportGlobalDeclaration4.ts] //// + +//// [file1.d.ts] + +declare class Cls1 { + x: number +} +declare class Cls2 { + x: number +} + + +//// [file2.ts] +export {Cls1, Cls1 as CCls1}; +export {Cls2, Cls2 as CCls2}; +export {Cls1 as CCCls1}; +export {Cls2 as CCCls2}; + +//// [file2.js] +"use strict"; diff --git a/tests/cases/compiler/reExportGlobalDeclaration1.ts b/tests/cases/compiler/reExportGlobalDeclaration1.ts new file mode 100644 index 00000000000..9b3f0c030de --- /dev/null +++ b/tests/cases/compiler/reExportGlobalDeclaration1.ts @@ -0,0 +1,19 @@ +// @module: commonjs + +// @filename: file1.d.ts +declare var x: number; +declare var x1: number; +declare let {a, b}: {a: number, b: number}; + +// @filename: file2.ts +export {x, x as y}; +export {x1, x1 as y1}; + +export {a, a as a1}; +export {b, b as b1}; + + +export {x as z}; +export {x1 as z1}; +export {a as a2}; +export {b as b2}; diff --git a/tests/cases/compiler/reExportGlobalDeclaration2.ts b/tests/cases/compiler/reExportGlobalDeclaration2.ts new file mode 100644 index 00000000000..4dba4fd20fa --- /dev/null +++ b/tests/cases/compiler/reExportGlobalDeclaration2.ts @@ -0,0 +1,16 @@ +// @module: commonjs + +// @filename: file1.d.ts +declare interface I1 { + x: number +} + +declare interface I2 { + x: number +} + +// @filename: file2.ts +export {I1, I1 as II1}; +export {I2, I2 as II2}; +export {I1 as III1}; +export {I2 as III2}; \ No newline at end of file diff --git a/tests/cases/compiler/reExportGlobalDeclaration3.ts b/tests/cases/compiler/reExportGlobalDeclaration3.ts new file mode 100644 index 00000000000..dc188ac6fb5 --- /dev/null +++ b/tests/cases/compiler/reExportGlobalDeclaration3.ts @@ -0,0 +1,16 @@ +// @module: commonjs + +// @filename: file1.d.ts +declare namespace NS1 { + export var foo: number; +} + +declare namespace NS2 { + export var foo: number; +} + +// @filename: file2.ts +export {NS1, NS1 as NNS1}; +export {NS2, NS2 as NNS2}; +export {NS1 as NNNS1}; +export {NS2 as NNNS2}; \ No newline at end of file diff --git a/tests/cases/compiler/reExportGlobalDeclaration4.ts b/tests/cases/compiler/reExportGlobalDeclaration4.ts new file mode 100644 index 00000000000..7298aa682fe --- /dev/null +++ b/tests/cases/compiler/reExportGlobalDeclaration4.ts @@ -0,0 +1,16 @@ +// @module: commonjs + +// @filename: file1.d.ts +declare class Cls1 { + x: number +} +declare class Cls2 { + x: number +} + + +// @filename: file2.ts +export {Cls1, Cls1 as CCls1}; +export {Cls2, Cls2 as CCls2}; +export {Cls1 as CCCls1}; +export {Cls2 as CCCls2}; \ No newline at end of file
NX-M-un@+CyB^0BE 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%0Ala8P4enoM&4 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 delta 1343010 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 z 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 z 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

cD6sc(xDGlZ*bn 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

oG(U-AXb-n>&P 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%0AmI^L>ll4Bp8d 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Ξ;# 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

b?+hEQA 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

vlzuW0%SYn;*34}0i(RJVkMJEH%58^E;= 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

sT8wM#bGZ)DTo@ndZvo1w4`h-gb`^jCJc3EdI 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 delta 1282376 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
5Y2iUS~>wcx69`%yNGb5 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 z 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�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

FXt9Bj@b=obOZZcCr2Hh!^{x!YjWjO?t}; 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 z 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

KVb+CRgd$qsLv$ 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 z zpeLk?R(Q66jXDVv(ok?!26UnLA?bsUX(D`Q9bb(E2{;E;jjCw9sMKPx&%TbMWD%Je z4T&UI#EE`vY`FA(-IB`HiSETRO@My2g%Hwy%*n{6j+C%!W=zCOjCR#x05VC`MaI&b zU_@{EShDr*Nt3n0n4;l?VWKOsk(49=1jL76!VxHJZ!~@?e1e_@>P2Qg5guny4v|FP)w3wEP(+`3q zN3=YCLTpvzE5tG)n<2rgf=^cU5W)u(ErCy-i-!w_;vzoaP%_86WUNJYrhhd6Ze8*5 zJvH-mxt5zGM>#yFxXBUaKullE@wh+Src_qA{-Lk;V|tRRh?A(VQ%^iXJqFGK0x;MH51hX!(b!0Wnb>T#(s@C6&Vq zbSI-0u6ud=tY5=(WPp5KhN(+@_MA9%g3_dpVV3wbP)Tkrnt^z@dV#qS&QOJ ze)??ZEFv_4c#6!!-RNYQ3B}9VBut->UIAyT?W;Jo%!_y|MLqzYLB!)DLxY5aHEaJP=)R8O^TApfZ*A=!ysVK2>9ItwnL#^F_mA zkQKBuUE*6^pibvEs{5*ikj*`CIt2nKT9Ho6$PBc^gG%cFa$c!$>;}RE4S?$DS9f_mJ zY{#S{K9~pkEmT5KTO1zsizaGV(x6d&j(P5x{iKB@pj3l8HzTvQ`;e8}IIy)_P?m5u z{VS3#hax|aCT{W4!{^@8LcudD%E!XG89z2du^~Ho|5IitUj&vT0p8SO^d2yb&KGNJ zO$$P)7?mxOtcfo4MHWQ<>XL$f$Vm)|`RimhT#^AxN9x3YMJ>Vm|eoufaw!}s^Zwz(l)LmF^PUyssJem)FIq1>|zzY~EVQZX>26h0VgjfIU{VR44{EFej%6thhg+iC(!q=H-?`I$E zq^^al*;-8nR|gm%>9l8YmsaHdii+*mJM*;1r7`y+JH`xE)f{k)w0~MNbUDzL1%i`c zp#Ix5MLImMyI}sP-0wzJ)(&-n!MzCkuFy~MPYx4CE!8cp!Qm}T71OUArmh=sI`A(N za|#MmrBY>dctSUp4qmSZrmT&K?v4q@iMe%%MNQC8)h{#3J9AndgR{c)AoFp4g*nVU0j*1DP)YfftI!StcCP1Q@^P$6%_S z^#m7o20z9ONYr8jl)17FyG$1_E^Ga4M%3fZWVT?Q96^$`3%{OPaolL)e<&7qDx^OS zb_66{`W8lh&Nzw#O~vVxUkiycoUuid8CcDJA49cA-|YjH36L3_I$>k&Zk+C>Get0m zyJV4u#h>>LZuQd<%#4G%&Q+liU3Ehl?e+-K3>Mw-6m53Ttm{+_Z65_lqlO&#SZ6m? zej0;qP#mad{KY`Bxm->8eRUqo`lK(F+$Qbf{@bZRp-^@K((Hzc^kl*?DC44VPV!}Ep4nkF3RFac-OX7#{S-U{C8EJFBdztNA z_KcLOrwD^S0R2kyQ6LlI5k+>qiGXWxqX%p3F-!B(t!F6I&E8F~LSij+=;6G?-1*hO zsQn2zXX)3et(^cf`Fiev`!fI%p)=|tcKz<5@1qz*FMgFD+f@L-^4?jj0VsJjBv@L0 zJUFND^m#_uUrhK^QaRBTfT_G-=|{Ikr$F%3)kBVuUqOTLI6Zy%PZwmi2ym@;d`|>6 z8XB=i-0sr|p(0dyX;q8*A9Kx+Yc-2znLY$lXQRQmiTBIYN_09(6@$=tOUy8v=d`!T ztD*Y(@z1!5Z`9kj4+REYm{L3e*l|Qa=#@_}S*F-Tj{X#qRS=&vDgLg}- zXye>=@^Bl)sg~rlqsU8h!X*qm#Io1Up54V4qO9t!H|tmR`Kyn3l-U)<68Bs4E4WF* zR`?6#bdP{7SSzp_(0ELSh>pRYj+G$?I{ppR*eRlo(f)$r#7%!CQIbj4P*^)oe#g37 z4I8l5>Cz|hrVD?wjE@ijoP-*$&Wj=4VeL*n>ut)WTWgoi%|LQoMP6+4*E&+HVzPh1 zYTq^D-ObQaM5S-bDVSBrV7*z5|lbKT*X4mP8@F_CAJyoXR@J{{EbvIeNu|gibZ18+)rQnGPvfbxEs-n0&|nfv(cnNWD~2#lL`?BnuVZu@B`=ILKX>W%obBGmH?;l$^M2M0Bd z@1KD7Vs-3puBT2VJuh9Uwu)n%vfVLV((QFW+iyxC$+6J9*d?0 z@*lbsL}{6KQABlCC@wAgAp_PsU2hg>&)vBtc_C@ivFskT?O(9>*j`Mjw}Bw&z}%^d zxRAuDBvf!wV4O@p+PGa2mKBthn?3b}3XTGFs#!D@nHo+P(6;$>zB!S)_WbRe?DKu~ z+IUZ>xqJ{kxuyFH@V5cv%UE-*tjm@~^RNnIt@HhOCgK9(`{netv1$}{+TiQVs6R;O zE2sPY@U@Z94=te)jSJOdSJAKbHhI!xcktf4_qDd1g;6SAm9Dnfm;M%B?>ITEH~#bH zypoO=5Lo&MIIqn8&PG3if?4$p^irn56ck4Xx6gvsJPsbmnz4RyZ1w%Rc*_N*ndBXX zK~P%U5?UrlRtO&Tut7lS-QHX+{r(8T(`P)~tK&X~Ij(GO7RU(x0BI{QaO3PkR{oW$i^{*MyLjk0L>z;A`toQ3u4RGEE6PNx(uY ztfG+)m>4g;+t#F^lMp?GkG;S1{~}}#w45{`NxaDo4qsiddimEk!KD^XQya4d1+X5o zE=o|2V__5(0~CIjmQh;A_4i@mnesz=68A9+QsP2z@l|YsmrI&Gn(EaE9Z_zU%jRT|HVt!5#_JHImc zBaw1|w`DJtqbZeLN6D%@EOtX_J=hmu`m`J(^o`k!y*DFHDl=I9lw!S?+WG3FYhIM z{?dd+97w588RJM$>NFTNt~x~fUg6j!f!EPwm!44cKr#~~DSOm!NF<8!vt#TAB(~39 zT?WF#%&lHm4T6F)&l~6wJyD#P=(!)MQFP_g!|SI%%JP93;!RdrepHibWVRr4Gb0+? z{O3W0e!P|gkqM$2qnd@p$S1I^d41D(D~a6Cv_cz|_z1B~xYU!O`Uw*g_H^Bll`=On z9{t9)|6S%;C5t=t420HhaDxJ}N3ihcxw4E|0ySSSb|+KrjAOsSg6FM}{I72eMDmFU zRl`r{k5FVJrj{`O@)%L{&Iflcp<{Gz!6WqZNLgA{8(}hT$p(WNyrFMQG@wBNFUsA(PfZ zOb6CzBt;`i0XP=BqKg0`J}gC0y-o-C+`(}gD0?wjA^}tYAykFJg?V$IE{Q5^Kzqe< zK>P-HvvfnD#vxbGlnw4)Ai|e?&@5xh!YCy$ov?<5Ck4R_wAH{wR$*h@B1+ccgmK|G zesi#gUBq1D&3j|u;Cyp<(o20HY>X&hmb1UWYCAqo8J&7EcRQf+QAu!sLcz95qlq^x zs&aUXUqN0U3$IFkmvF9J1^(tpz=HkkZIw5R};8r8&QS_+KMQ?P(OLoRRf z+do+5s3vu3Z_wXle#;;3Dc%h{XobX~vmlOZEHg8ZEM23EqWp=7FW+>1yM^ra3*#?# zJ?eUeUv)+JookV)G5x2%Kp{&tsR|7ehdgR6dQnZI^5zxx*$cX4o5%#qHVI#;Os0~nOk zU0Hr)S2ihvj9+YDyrh9?Hf1BN)Vi-W&8ONdDIz?6Pho(l)Yszm?n1;Tsi;cVtL zmZVN5a2VSzeP0=Yb(9FaBqZ(rsPb}&=iRb9NcsFGZbf4mSQ1nr;7UCbODP3>B9dl$ z_!c-NJV(vXq3noC<{d$o?o?=Hi`0wC2@z+HXb`{^%#Uyg3)dCB=L{-wX}{lGlJyyI zw&YvX|5Obewt3_aS1_ZtPRqksnXRR%y=d^(MJ&5v4nvy2_L#@*ds?*rHkzAmeMj*WE_Xpfd=4F7;3 zPPFx=_uQ)$&a{IW%~2t+tAI0M=@`0aT?Pf0iHM|(RZl`>EkxQ$Y)5u@>cZeS?P#;y5ZW*a^P%g84GIMuf_$jBDt4@cgFW)}Bt+k!aizQRMze zJv7~7`M|21kpv=7RgWs0z$Bi0@coYq|S}KVs z%xu8-$zU`n*Mb}2wyPlKqI=`_;_o2!*k>P4epXWMits!2k7>V?$GxMDeR3yVA3dX0 z(Q?Arb;)u(KFsbemIQDWUvm=LoB_1qy^dmvkk`h}jPXHG^pZTdHA#dr$qQ3H>zxpz zsocm=#KE>A5#Xe$`BB112aMyTjH^-Z31fzVy`*xfJ~!dp#~lhNW1;H%!&a!|8L97A5j4C6KSd7ymrSb0xc!A_va@F(>)l&AnSzfG&j1aGx~2R^ ztI1TV#14+~MbEt?Z`0C>yw=&EoiCwMZ`uv#s+}RB1JmRd?r9S}CV*|;3nm)*F?vYF zeL>L=Kvl`J^B|I7L4(4Q^O+<6@+R!flAMW(8~C(AY9nh$Md+5CGby%;$r)bKf?KgU zIwTv;-c`$VOB$Kk=w_8Ol5+I@aPdt)2RYjhV zNc@@cX8-Ysb=fz8Ed{+Drw(76q^LO?(ZtomQh?_KQ5j)#sc+0yeupb<*_Mg^OjWy9IVn#ta&E)y~I(LlDX7T){pVZ=ia!&DaN zm|&8<-syzT0p63a7yveg{Dzb|Kbx+wH4TLz7gq6yhEBnn2O;m|BX9d6i#6i$4lN)= z{N%J6zUq)RcT|U3UjlHY5dwxq7QOY*GVYrkpK0-|Rzn{SCs@7i8v9S68in9VZURvP z-m$(r2YzbX99PT4Z>q1QWvxxV%+t9-C zR0NVSk?iuLqE}ir$Aj1TIuHJG)RD-;RhS~AEK^m#I&FeTof@2YK{&4VB7VHA+iyF> zSp$rs!0Y>{alonD-~dm#H6TTG$pFNac=)Q`o}E(ng$>=`?=flHYzo{$Ll7@J+{%C zwd5Nrbe78I!WVq;HOY3+;@72e804xG1J5_BNd@(xLFov3acX5hhpE{dw|ea4F)u;* ze3=LaeBi@dv_{_(Hm*PI?;wA3S+HUAu%({+pZA-_^ehjgEU9(N9EUc?mlTDhmBF3F z__scHb^@L!bc{)}T+rSX#18hJ)33*377CI|xC>!21|?k8{B*d`_2o(EFu9d&+g(Ki z=5ziog~^)uEVJx9&4-stNcgB9=Bv4;NLLt$j zvt~z?NL<_*rsz+7Q_vMptOQwwl}sGd$FCk*?CXQ|jAZb7G4bo9so!~F^e3jg;^!nbYmmcTcqtBEw87zb-+|{rhhrs87^s;z zTS1#9<{Z{HjY~@PyE140e|T<6}Rtm24=EbmLM*$3Zg>|A=)SThuL3l z%OrV}X-VyJoVkRPG`^pXu3DcdDqcn8zRI?|k^osZ6H&b16#lXqtZ%$R{!}($+(sQ3 zS91W*S;dr{>2!JW8Q+qVw|^A*@~RglLqRKrr!*X2$jY`KkWxV7U2gj;@~|vm0JoaL z4U4svecb|Pdu`Fle|ja+<*-BM!_dnCe~J9$*>~^p8Kg44{j#{wx$w)1%Q}j3JIL{q z{X_y+u5`M{h;B+#k*ICm=2lKp{Gb2LRVSYGRD&~de-&hKc-kpzDa~P~ac(+Bjq6L@a4R0Y^-+4pXN6@YS{zJu>^Z z1`GBkTlf{tIK5ENEBoS{%JPLU=~|@zzv~~VIwr6P|FvQSu(JIxgh96Yw%tAloG)VB zw@~cUELBQ1A;vO#+mq)Y#KtZHY)j}KLDrBhD485aW%pq(A@zEFvW6u`lf8-LheSNu ztH+z6otkJ1)4`MLTYuW0+XTk3g$G~jN!NQH9^Q+))0GPkRWq|@`k%S=G`yS-;GeB* zPj4sbGa=#V=O4ZdUn3D^`mrjkSgi1!*mw=v3@Z|FQ)v~%9gd~`&RHE2i zLa20KQ9B>smrK%cPX;c3rT7v_z=q%_x}3;OLMRE9Bv*J~RM%SWCrwt75QqM8KFkG- zOdVC31i{@-?k2|J6B9ZlL@V9pO^C@k``WQ6*Bo%bm4h3!HJwHfs_8L}kswdG;#6et zu*drsL`GvfI?z&sqAp4&SrNn3Bp5RkEQW2n%%3ZC-K^=*pYwLtczVhp}Xe^d9l74pz8K-hR*R4G{(K; z<{teSU12*?7Ly*uRG~$2H2FADvX(_q2Q3Lme{aiPEP+T}Yf}Brhn0^#i)m6FyWzxq#C`QXZ5?tO{tjr>UBe@})wf<)RsTSz9qL?TS>tspwscv<5U@}w zGhhxo?u*j;0I9fD)6s0jC_2I&S#5O%Z?v+)E)yUdv>^vwu+=o>fZ14e`m(KnnE+Pm zZSNoZek2b^PMrMyX1l>;&F+<~3>NzKg8DxJY=LpTRTZ;pvTEvK1zgJrbU0>@W|81M zwTOnw`fgryqzYu|bsomFwU!f3q9Nzk|FYS%0}g$2P%D{9#TUs|551hqI0JNDE4m7B zD6^FFH-D$d66b{d1GHuP)WQ}(iaL!4MeZ$?kuObdYCktMu&ib_plG4l$-{?^jgvcf z7M-Fj(W+cZUN*u#)6m|z7WoMF zgk0Az7B)LXIarqWD0;ple1+IHaM=XGfJdlg%i`}-!efkQJpi`Y*Oi1+QuNG}a@gAP zvYORbdn@mCzDM}`z~#BdR$_!#?-EtlNjWjNo6&$da3Eh7b{y65##ipIf)L4WfjhgD ztn$$nfBPZ*63f(~*s_yxyAY$AMJ)W{ys6|&Htrt;jS#~wOp$e>r|8o(iTdFQ;GV!^ zNn2M*Q#A-Q0)Rwz1$ue#^7&;f-liJq6yo&;RzCKR-%L_6S>tE7mcM?EqP(NbgBWdj zm1uf>)|BgLNk~$N#xuHWp>nFhYL?}Gq#OwoA)XUMN%K=2EifKYwATfV?B_*`%m$(4e#Xlk4v{cu zqr3w!=8S&gq)TRbX5Sw77~+_Wx-_X>f&(8Vax`yDIOJ%5@Fne=n{=oD44Dw?$uU}W z6~M6hKzo*3zN)G|oQESNPW`SZVztqSlpeWJbk=T`Iy@#Y{sI|KJWtB{Ce6r^u7`;x z-Y)l>R)GLJom^ZBmlrD+tA?8M{(LOa_OnFD%HD6_j!0A7c2){=!#V>Ga>FdG&`P1&3z)}HN zIoY`X|HP_pZB4sEYMq^NXF*Hg1$SsJsG`JFfpvFv~_t{3o2>KDN)duy1 zg=|2ts;F*~h-f-L6DX;JJ6fc^k4t^+FAUWdX%2L+@2@vwRq{-q4%6+LU)dFB&L1O> zpZDC|U-TZ6cSYlJfY-;(!~B6-Te(sidI4{P+#YYU+^g-L_8w%qBZs~#H@j`9qkcfZ ztHWqv8hA#eME(2zIwyfwP<`))=tcd|wy(!~h{r}E2!(A=bx_30x52aicF!yJ@{mhr zagoACV@g1+1I)SX%gQ<@pt&?y;Mse)X-CnZgg%Ryv?kdL0P+6%#A>|KoBz-D*Y{hn zM+yVk{jSQml32GrlBmwB7`D!f0N!>i$cqXyEdgcEhjw+LptzX0QC`70E_=N$n*FKf zx-8Wsy$zj*f%LnL%W)g-t|Y>MrZK0eYmL+j7`lUDETPmA!V*;&KZmCNYo#}Sb<4D7 z{m8!mL+iOcz~x^}?c$lE#)Rq_$~2-k!K4Idhv#hqHXA1)6#-Z_Hqu*f_0>xM*=tu1 zicxaS+|xh#>ug3WKt=++Twot!@3{9~L6zSP0Peb=JIu0JNH>ZhRQo$iVqvL@oK<$b>mY z$sSXpY3%PmU}X|b^UeNI{XxII0xzM9KXQ0WsF3a1(;N?RU@`KF_@97KJc`aJJK#P} zcM{~O#|{O7aocipK#&=6>krYY@iqFyTB7f)xuo);jKyK6YpVnQf zc2zWd0OEaqh{9|dR<+dM5m;?r$3ZGc_jSEY4GA@xr~8+frSxw)R9*zK9^#aw(L{JB zES3BLMfUkJyD?8|Sz#&yvBmr?zYh)#^d(>6+*A{Ml@>u_=-L-B!8dY|jfarF`ndBL zGhGpcNr3c@@kYu0u3nOivFyN8Xp)+jn&f|~($I27NVjudajj~B*imQ*g(AUqPwK&9 zOrh;!>|)wk}^UMi$9NANEu|V zHpJa&?-MO?1L9hzh@0^+K!1RKV{R1@7S5c@JF$eI@h!?3ijAsZumpx@K9TrQEC`M@ zG^ew_&I4UQR5JlR_QCJLZxR)ohOK~lX9M=qelZT9g6a3MEi)J^$cG<8lI5sLe46dm ziX)wSTMVR<3TN(NiAV+az~?0*JD)LL+e3Z1_V<}TiNGT4|CWdqJezo^7#uCzPiC|v zg}=&0(ozr{O^BLhsJx#w)sX&VjG-|iu<**%>^d!W2el1mI{miKmnJ@Y7g(9cxB#%X zRv1Z$?tNc~WP$*Ou4k4S&cofwE~@p(oxt*=zXn;hl}-YCZBGf#+9Q+j4XjKqe??Xr z5Z5Fjco3!jTRxvF!VG{$(G0_;x72fCMsj-Ft&Am}sslOn0goWUNu1xhR~>jGe%7nJ zUq?Ob=$}&J8IZM({>6>nrxi0kBNR6 zoPs@1l{k}6SH-3z)Zmf-VhMUI#Vi{N&6SkWuZ{DUEYUMn%ZdI^eHL?E3=%+Wc~wYI zLenJ0d>SsBYE=tZNtVw+(mWW|dhlW-WbdA#Nk&074r1?xUX{oG{kIVd3?25)1J5gc zwxpGIPvJ&y4W?mzKeNEH%5mf0g>+z5_)IQi3wLWvP&1r?87kWurM6W<=V(g7~5gOJPqxTIiFr4%7W)gU%ys z6?QaN!v2c=YLNdyK6`O(=^ozUY*HA3iiKtrS3rvn($nIW@FF zbYZsD8AxdZv&CXM3y$TIt7+s(>9><~iP>6$U9IifO>Rq{ot#t;Qx-q9Mx!Y{M7@Q4 zSpYpcZ6)g9Cq;Nsw(8|NOm2K$VR@D8fj$XNvB&C8{s7H9x2a|i>nr1>8yf-p83Q}9 zHmy9aW6cS)Oq|hK5E%g0qXsSIJwARae(8v8i8T9$)|X6vOe>}Wp-6;

7}sn`1%~ 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

wrEIBs6Bm(b;?Y|sp{)%WucQ64 zwVu7Po88W1uug_aLi!zcqm5|9K zgM1dJPE~)7SE$}S+%Xl(4x+(d}ewWf#-3k-HdP!q8jE4{ugnH_6Y&uQhR5-(H>_R zIKf2cVYv=@cAM+jhsxeB)PZ_zOZ=gL&=Gy@(4LrraBmoSrh&6e;~;&Chy8max!9xC z!VsNHvHR;qL(1!J0E_2A3N76Ys2>Y)$3tW+-1b4Iqu#j#$NgHZn0u~@5m};d@d}G) zA)<$5jq;0QM-uV`x6uKGCWhUc(awJXk~4nrPBpxPd6FyaSML@i6{NU1u6^AhyHz2p>@4mUyd!^F;tZCjbmvwQpgNe$O!OKzH{bwpekgc~ zDV*3soMrgVdf!;B|8~4_a>**Ffv43+9C1eiN%jecwE5lym8-4ie0OA zk7Pf^w>xLL-(aISchFith)D2Z9Vt%mDLu0C)D3F*UF?cx=UdNUdsT>>bFp0bo2>9P zAhC0C!eNS2kk)ad1J8=n`wPUf^M10idf@sZ{_8^|&Dxdj45MA5Dw`uLnSJ`jy7|&_ z@BGEx$l=vOBNl#+e>=`T#x&QF!>`Il!?>cO-HKZn(P34bO)^dJu*edGXK&VLa1VHz zSclY)mU(3ywqV;&n^u1vaq;IM?+%#_G78|AF2u-O9S>o?qB>3W;DG=aF>MlpMxoV1 zcuzhGRH$A^e>#K0ZtbfEkxc}%(Yz_=p1zz>ntc)l?t}HbzAKlV!M$5&RR(l?m;Hxx zS4D&<2F!nd4fF5FRP6WuJ;`g#C)f7W;%xE9)F-t@LA97pO=bz%l;Ba^?c_nS^qb%{ z2FzI)(K^eOmxAb?=M^+@v9N)RTCxbt-)I>Xi}TJCU}P^}-|CC$X!%1SmYRMdtq zW@~)lXD0k9H&>;Ty|%$vH4SQe{??kKK!%peyIH?$N3yGR4X4HK{&+^R6cA<#Jee; zvM=V=XR(Q#+>hMWFZi9}bkyc&-$BWk($TGYLkD}`m627Z3?mkjRMGyVuh8ix_8VUr z*NT9*zl+s`QSn=YI1b zSt;;r8gr9k{#cCAQ7e3>-sWLp;CxojQgOOO=JvK$HB7HVf#6QUE$^+I{^5U!}WZjocLWOuxx z281N+^YXgkrQCZBFVUTFtUGq?#S2vDb>ABSKG%&A)e_cO^qmT}+@*zAI3Aq^OWSb= zQ|UI}r3$g|W>_D(Zul7AJd*=PZa-V@KH>%3t%wSdBLel>@M#tdW?B>u)_m@8?xLTN zJr}w>S?R0YPfoHuKXY58-%0PP0K^|3WYniyh{}MH(1$1=?d;OoZr&h&74N{q>%}pU z!Sd~BnGl(Hg5`*(sg8g^o@Izf@}{^-Vth!;T+qIQ=Xky067v+@a&tFaMVED;P({}& zoKC?h$%OF@wF33$33yvH7nrB-M z0_!;Evw!21eT!+c)yLKGu$zE{NV zYF+>wN2MhH!v}9j!7r-rqolYlR+HG(rQ;j&Kra>TGb`07!P-xRYu9)t+1mjrfwcWO zsV?@B6sng|a)YdW8y6qe6Q=(gW#!Zj@2mv*B8ytBoB171i8h~7PVeg--p`tS0thIl z4_JZ=fQ3jom4cvw@_%%t47iGZtSO#$f6M)}fj&JV`X6FB-QraS?)5)ryg!T1f5FI$ zQT4;RlJYnyJ4Zf-byj2!5>pUS?JxcOWBp1u3Uwp~;&#ov{==?v|0JU(!0 z_YL->K6@X~XWwsqK6K=dHcqfPSDsF&v!X3Ssm^?TBUER<7N`%8TR-J)D&#xNwjZ)B zZ@&fY6WvJN6vX4Xc0V$KuHPkm$bfLIc$qo2P3Js~tZrWa19GwBj{o0%ehxO~|J~;| zzd|GcSh)TV(B($Guh5OHQU5tW^b@U5Cy*L?81)EEHGp!pS#YHW8!*4)n;0^^Ke-^W zVW?^0ppmIHb8U2JjrTCcz+g83>3W4*bvD6~H_A9&9{b8wDo+)YDOZ&+a#Q&BFMyyjxYDLz z$Anm+Qr{w-P?5zt2a=gbWkW~ncbncP)-D9vU&_&7i^0Z}$>9NM(O`B9Khck4E%9UN zMUWzy*^wGmCGDl7;YQNAVGxKd^C3ALoSILljUsxXRN)WD$u-6S{cwD|Pn?8h3%dxO z6$`jB4#hf$+SCa!njaTzl2ro&GCGNUt-t-3!3qtZmF)IY+e)kf$Tj__J``rHT-+|S zpd60SaC6_kg881!y^*Guh0XC3YJWBCFB?E9_X?#s^p8tg*ZB5wdTT!;RXX7!}*3Hc8)Z;p_!?vlrh4ck-}7k8seIF$67;V zX&tnV7urPY3|EDP>nQhvP1W}7U=&%9#7ZW_5&5W*VvPcJZoNqYcWo7YYFA1e8GP`i zV5y@k`>sXua*10x-)vU5S@z5@AwDrk{CV~b$o8!YIAvi0aRnJvFV~pF-?qQZ=0gAx z-V0Ibz?@q{#?K#TJJ0FZwHQE2SoBbLob|xZVf8V20?Act`wGbkZMFlF5}U?aBj++z zXW}HI?+iT}*6k<$rV|CRb&l)@B&Y+ob-T!Dwx7&KX!9lE_!j-FLgZ=9C<5`Rpo*sd5_Yh?panX~pf@HOTH#!cm}r`H0NL#0$0!_6&w$VcE_bu-JMl z(Ot`0Y!OPjzhLME*dZ+U^UM{b32LDU*H1+g?*SEvZ}yiCT(J~fnNabtT5;({G2=Vo zVzAz%9z7rA!TL(1&Xn7#1@w|**oDmCRb{HZK^%%8UTjtnBXIF3J+biZ=%R>UbNwG* zYjPH#7>pIHf*m%E9GZ^LNYD{I5C!4dmjV_K#ZR1e#M)M!e!EPJnOK7u)&)!y#-N8f za2gawKi-<$7Nmc!PN>y-6(y47G6<{JHURyN(KeJM4GtUU22tLC!s@Yak3^dSEyyaA zXKq;1XkZX?M1B10WFay#QE?)~@?gR?R25hc9NCbX#TurMmCm(DG{!x47cL4gt$~{r zD2TmikIf(@`7&A{#$f<^Q{uwem6VSUG9N)VM-h348?kORRaaLhi&eDE4P?6h@)|h| z*urRJA}{ZI7b)TyrN&Tq0qORIb3xgCq(Qgf{zX16{ACnM=M^0(RV$LM`73yVp9)av zRnB(Vp|0q{ih#zvvo(tehG8+J)tqEAK_ORz84IcL01vf9D*sN)EHS>Dy>J+b(S6=- z1y61_$-D(R@OL@4vfnaCJ)ZLnMp#U@2=UrpXiQX@nncGEglRgMoa~zvX(vqMM%|C) zBIZ>gi zBu~4TyazSbddo~lmHrh5ZecV7g_f2CKSvo)1v^K%YJI=1+8T3I43V6zI9)T4c;`C` zN9_2`BC)^f8>3FOVXG9q@Tiazng8&F{+|#{6!t$*VD)i9#j9U#2Imkbdl8Ba0Zv+%Bim3zACcg zjD)D+C`IMw@E{iQKwME%>q(bf3Qby{UsA=R{ z^sUx`P#LO)x*Jgix{W9KM-B(@QRq_e-Y_xL2I9^u=nUrzi^~0I4F<#s!JYBrwlFIR zPAIw~eeg5tsbRGF3@Ad%RgE&??-A;Nurebk61kmWXg~q88L)gNk5_@LCQC&*)JK>+ zXnV%bXn_ibAjWFwG^G4{6S;uHDe@x~zJSULp(TZ$gj-Ay>02jUBZn{?S2Hq-jY`7cwu9XNVS9SIN!Nlu-VUVQpB zE2hsN4r;yOG5|4trH{g#UU!PB%10Ot0L3OQw~|rqRi|>&0-xQdT%DG+|6?4DLf%N@ z%?R1oZ_NNVrd6>h0qQHs+Jo_JXfZSg3`ZzDP8Z#RvVe3zc=Z$wHH4e|v(A4=d!n}g zx3vxH#60C8JeZ{2A$*^-SskUD4-A7FU8Yv-gd~jU6d*YuhRB{I4i#@4&O*%olM=LV z8skRAIBY%8KbLqBj5c4)URX#I)dqBBAa8o*9ZjZS^&Kr$%+?PU!`QK~AKGY}B6*&= zsZ6~O?v#2%uB2z$68r`M3KQo#Ure$afq9|K( zyK6DTajtF|`Y%wMv`=ezfWqIhv(*2D_7I*la`jaN7EZcij4w_Ir;V6qoHHvi*yd;z zEoXO2b0E!_#42Ez&|PBj4nDS}c!S)Lk6tYSP;6ntY%Q$Cvuej1AI-v3T}ftdzfd}F zx0_LwHl)8ef2*&=cegSn+dZeZBep`CfhIqg?Oeemr@oKz`s1ix`jAzmN9AHs?!iVo908f(sJ| zq#XuSkmH~`bx$A#<&npkieiO{uawc1K}d`bVzv-S-nMg*X$gXavH$i&TM^!ylbkI| z&-%5H_vI=v27J5`0nfK*2Jc5tUooWC1Rd5RSDL>x08bKCMv|ZJU(m;}U5^`f)d|4c z&KUB)=ZP(cNWu5Jf1eNSz~^l>@Vo}_B{OZ=Gjtr4yLTCUoLm8(yKj%(FBq3)e!!Xr z%kr};I3YHjkJuz~xKs5@V-dQb0ja{m2BMYzUwl2{!juGjaVbcSoNiS^P) zYM{F>6XD|-S51Gr@IwHnpb&_htLq}}%1YyqAH%(RQJkY^Fu=*xR~VaZOqmbME-9q4 zKIu{NYNYA>`g0{WQ$6iJZl2d7tFe>Pd6cQW_5H!cQGF2+^4BG?^- zYfR0M4^cE9HVh{JPAFWWD$kS;_LLA=giT%Gmlxm@HDA7ztrA5N3< zwvjHWW&Z|$(e3U;L`Q0y8cG{BiZ)P;*xq5iT$tP|C7?^)R0MXv@D= zrwCRM6i|B*+8%^lkk%F_wwbVN3Z1jn`TRLwmOj)<1D4yx^;W8ws|=6HR4k0-A6;$3 zR7XCgS9$WW{|3SKk-hQen>^;5EM6`*C-`2x%$IAv5SAkCr_MXok`xeG&Qr?Qe7*0m z_bzyP^9VHJ7=3F1fwqZWUl+JVDcYJ z^I^P=B8)mL%iSGO&cquRRY)fX<0Uub#ooWvh@wda*gDSIQyPhc=KYA3iR4KIGch)s0|VNTYx&airF9*;dGO^>a}Tg>rgxwz z1^9tRvR`hd)7dktY}$=@gcc!hpn@hxNisuz78Lho{2f<3^+Udyy?jjA(u~0n`;{yLwzz-F6+xjhkWkco&+gRj-F@9OLi#?$aDKPcMlW%)JRnLCIpjW z_vV4sBrtBEnjS={SOK0FDNnwh?I}xMKnnQxf>OKBO=bK^7e~$%@^M}@*w0;_WY>*5 z+^gr7oOH?5g1mM#djfHttMb=+DE9)szz3KF6U+Pn39Q|iE=hs9%gM|EXh%QesjBWp zj+9b!tdPAn^E7KWC(cTn#k9lRx#hN@-koHVWTbqFzy$d5m1ZmEf}wMZ@p&n<<;PU~)uWkSO3U#j>LhXTo{O!~Z1bB?a0U~8 z5@1{cstsh~{P2FfQlOu>D-;;;w8j|IJgqvKuXE3nlsD^F%yC!PMHRgiaCL^ zAoPx^G0aJ#18RH_dJ+52?#w3-;vwwyC>r%BnW?@wbdRK=PN#Ka-YT9}^tG7SHYu z55^6C^6v#hZ25z4N4{h~2$AIflLJ(iv&}A-du!($rr+r1^{x)TI*H`fQhqyrS>-;~ zcF4PMUgdt)cF6g41l-Nk*bLyg7T4X}{~xa20XVRrX%~)dYh&By#@N`lxiL>{8yjO| z+s4MWcVpYRdEfir|JMDgx~8Uj>hzpB=$e}D=jpEXC619YbFO|Dy<7VJwF?IVlsId9$oRilE1WaP$YGL_=xh1uO}=Xy#kajk$xv{#>2(F_t~8=osn$_)zm&-r-MS=DtfF8j_F=+pV z%Mly&(?i(8>8k%~?VkInL~d|pxB1e1yqJBPTw|Yjlf`igH{UWTJ>UH^gx>Me^?@>( zd8?>BUskht?@CaRQR8)DbMGr4#%6H8uzXUZ_LU=7k@G$B_Q>w^@}Kqly{i^z>zhkR%eVhGg4hh{x;ycaeg++ke^R6Vpm$kxi zey{FAaK4xPLOvd^kiwrtu6L!@BY$J~_qUU|e`N~Q^EN3EU5M~ET+Z{%jesXo*#p4g zng)M;hdjqChqs<{metl_+?w_F`E2)CVO$n}jb8E0$Ut4%7HqtPD7V|i2;JfSSB93! z&Za1e!rUgGPuSg0^94r};a6#Y!JOYd#vaQCl|}FT-(PJi?{+VSZK@OU&p+OqNh%sZ zE07- zxPC7}Z1px{$c@xEzAo3>XncEGrirC4CDQ6Tx%CLVPUvcPL{H@q(&g|lf8?Kq-yW!n zJ_LQTaoi4^1-a2|zz2W7k|2sx%sG3Ei$Cd7Ig1OnoS*jK z`i;e=0V9SF&B=5QxSo&AarwoEvS}?EuKW~^9kHJzNIAW&?z)FJo4_(hR}zy&Xbej^ zkwmFHzJFS%$2$$eIrfjn%lC5mmyDxdS8xoC26^u4AJ2oqKv-nKRiHj}wIhT42f<0LKO&K~A_Vx>Km8s7V_6dTqp zwhRcC819M?+=Td>oqx9HKU#iey60*lZxg_9=Y$Eeyyvsm8Y3h)lEcU zZtP*8AG%6sjzmXhi%z*^ep!tHyFV4im}3^U|Hiq_baTdznCi<5TDrhN}HP(FQCqX7;pRVkD|GrxHX0fRmMtT~H7a&e`Rs znUNhLoX4*!z45Pt6i(UDS3*a~)tW<8h8~8!{z;rWp?nR*LFAkWhr2id0$1A>RdbBz z4bxcS5r^{j8mDJo@s-+YT#xYG!4KpD|9b5y-~crZMCG)q{b`0@}_;&R1x@b+9Qe^=>bn&`X zP83Xv67X>3TsHbzvoxzk$>QG;ifBtEXfOfH(@xr`(xyUMpj1l7T9dr`VHu`;h3%ng zjcrsmgO`?9FzWjIPtGpHL@rtUB8*dTgf!LprMxOFqP*w1a)EhqjRrWOrFcuL0g%XA zJIihvj&g?bER1MtvE`xKQ1MCH=%E5FR+`cAyZBl-$=rA7Ywg7x5lQs@e?;p0#ZRW4 zZ_+3q141*YKy5)oh!8C3C*5LBpYGz#lanb?us=Ymg8?Q+(PZ%?ZT*0t{Ik(wMoF$_ zhv>9|7)AR>v9SK+0|Md7U{3ykcAbTlbj2JPJBJgsa0&%vyG=Y?WFblsgR~qgFBJ_U zvZ1VXSE#U5!XEgWUGpK#);@x+jSW4vCta)oya5G>3r^y2&f=JuhvGi#QydnRl zW|mMJ5=hDE7*tH0A)7`cF`TS0$aJM?8pTModCe34Nh$sgzBB=AaNksC=s;j3 z0Gjv|^35+6XOVe;Z;#c%z6`&L-TjLD-_DHLJQ zxv4qBSGCEEWYeoTSSf>7bs0vtsw(JCQx~D&d%@NVF4{FZ%PMIE^JCK1zjP*&o7{~VIgb& zY6g1D|1(N@nbi0*jS%>{#JV^P&E5LP14d+k5oLZtku!}_A*2odb-rD;42YG^Z#3ad zk}9CrsNv?6^WjilZ@nrJ7{K3#xmku4A0O^8MGHJ&8qc6I18_7JZsI^k1)U2;u@mn% z)ul#AVCb>h^`W6KDQqT)j#>N3!f8!sY`dUNAIfb3Qj{2j9=u2?_U9Sgny%gnEFf5p za|%E3hfs1-u;F6RPbAP!PEL85!S-P1FybYOU(^syjJy0`M^c>f0g)KH0-{5ju4Fl`f59O@9j z6IEog`1;bMIlbX9AK2cKq*zZ`J`_bwz2V4a*#%=%ZPm!AkV@%cJf0w>)%z_8M)A&D z7M2EclmQ*Ohh&u%j`U!$`g90O**;xxy||yoO}{58yKN~!Ad2qE4IxuPemw7B5dUCA z2uLbT_{F5t9^=wxDi~3TFee{9!UzCOfuur16#z+$9W}-@gQH5M zFA@If*H;E-v6n1cIvU!OpqaS%5>T2@cn|)DL=MR2N-YTc6~cXov@L@BEHk6VJ8-|kxtGX12IP4_ZL>kEMn3R)Tfx6EttX0J}fE-OYas>oM z7;YYORBBEl2}HR75gxRN{MGN7F9AG_yXCek4h9ss6~D8zcihsL`j0swG#}$r=X0GqS9Lbb3`{0QT|SxI6B&Q)CfQHc5CIMA1 zfTgaO{`KRSHD?BaC6R+ufnxX<-Zemo3V%)B2+8Q-|Ccw3;g~$S`sbQR{m)tEHNb%+ zO`Lm7EHN)DxgydkNw~QaPnvW5gGQ-NEr>=*C*PaZ>L}F-1d*7h@cntZ=e?D|ta|*5 zhw1K|Yy0E*5_leH$^Cc%fY-R5kCUFyE1_+_C+rV_n@jRY^mCCs9^wzz=ZAeFt=AjC z?>Z{?JqY$d?pe25-{|8y-gEFCun{npRrzy+p`mrs-^NW@ukt2xu)+;!SMEq63Qz@# z|Lb2d{l`KPNHP)J$ox8`MdBJ;^`q{XcPMmL55-!~>A9b0bysn;D<7xsT^s3n zEtyyAaOH?9ci6{>gVQ2pN-N(e7I7b17=jQMI%Y|;;}f_UW%?@60SNtocBrgq_}F(sqP<~(?y5VLa?bqEHvD(O z0e=n8BL{NQ11FC6_E`xakLZc(^sP|moU=>d$?s*n=lwb6cI@UntXN>>OtRwtasC&Lbi$=uc7;gkQpmO0V~6HMtyruW^eHE zN9#N{ycKyo4^f}a<=$pNyp{e(Yr}S3L}#k^*)GDI#i$26#gHIM==CzXW?t3zN@uJo?ty!4~CHY(RZ2uGHT@K0WhwxlUrpxn;$RK1hVwrZxA>m^lNQ2wfNL&hq zn-mk~O>@z24JWR^_5EliWBLtbdR5qf*NFlb-U?$7jlq~_w1ZQBnBcFcM;MkzxK2N7 ziSPk))oEB~Th@^h=dY|&hRM4BlQ+Be*Rdwa=c{ND2H#?>Ao zE7cZCPz-IjWGf7wZXmQ_n7 zfL9^t)G*t)g9_5YcQI9mytw7$%_flvRk0?}yl<^yCZFvVW_;vd=;@&G6Bluz%=_TF z=<#9gy|L_hA^UbF+u35Jx>Qhnl3#3cgXksyL}g(@bYbGQJ3&Fw8E0^ejKjOg9QpLj zDEk%@azrGZkH@i*duGgltXcj7x6btj7s-&9x_(Ha5f$LR_3eX~TUjXdna>-y{G#;;bMao)6~8>y zYSB(WWiu4N#=DISy#h4FJ=f|=*YAk&P8^r?`0#p?lZ1#ZgJS| z#RsEaZ1l8O`^2*P1N@i?#MA_|WyE3Q2FY3G4UxhFTg?QN#4!7WOs z&#szJ*S*n+laSRL>Y@jwXKh`0{FFji1b9yq2eXJiyzE=&~!Px)6OF$;04!>jIFh> zGvYb@{g3x9Z+J@a{yu zdFhfybXbXtT%wB}xBl0*gwFT7!aJvar{mqxQa_j1wVKXKn;v|}E>EIc5j@7D6;u>t z_>BSm)ckEZPx~ns37(qY47lBYnp%o(m(ESr0O~H?%ikWRssNDpX6EAQ8S_au`O1Ad zIv_5@r@wC$Kqfp}gQzNC!nCjV%WCr9;OdC*&U?H7Ter{l)mFTd{R7EyXQt*}#E2fz zm6z#4#E2)~sg>}i<<>nmx@Y^JLWeH>%H4@b+O#Sd0TB6j{p$S_b8Moougtxn=2Au= zq>B$R`Se})8{qOz;pO>kosW;7jm&zuB6xY|<7M(OALiz6AS|?vl3UO1nrAWSc3If= zZg&i64Hw6$Ba@}9yUf#EdxgQKw?n{ROV8wp#8+cmhyDjEM|wDD1dEV26`PP-JppAwz2BsRswAJTrcwYo zi#vCdB^Dde{W{EkaRe4X)ivlQd6E$xJT>sIaM&yTlFQ68;BS6+Rbl%`bzxxcQPHdt z2`}wa*2PK1CZ2Oo0GX(BjlrJBr1@pqRHCBZD|qg3RD8#im#I3ilk~W7y7#Gp=i#d) zRT%f{Qsn3~b+`+R*EJI0tG_7+o@wN6#>jK!zmk;y-~43H|2(NQ{$nQ3IfI*`p1;z- zSkgx#)jNg4i)_wa+E?zf*_^?jqMl@FfF|ifnex3@?nO4^{|uZI^(;sOWnTkS@5S;j zve|cOyvIzga|YIj*^eWA+F@oRAzV}LU)5Oc7i-qvs+{ep?$4^Anoln~ZElSDJy|Xc z3dP*_U+J{8y%b`w6DMKz}Iny?De*(^9lN3D!7k3wG z1MbY)7Ch@nM!*%JL(#3+WA_R7huiKj6xw58YZ9Bo=~%K^eNL@*g z6%QS}(Of6FH~&U!{Q!+uR!g7v+FjWnogWXjcdn~Pr}Zqqsy+vq@7hmt6utDRe>x?{^?lg)-XG{0K*n`PfAhWPjl8SE$%$b$<`Zy!Bh)x?P1e0E zos#gK^c9NVHJ)eeBEWUsgBAp1I{h%P+PeSoa+HNM%VkyoID$o+Uq_kzJWr6(4@q zitXucNp*aM1PXGt#-(eFu0BEKEO2S_VsAlYp=OK=_{e?;;&wGzuq0KOtOD4e*fnj!o+bU zA#hX?JgWh_KmG{!=t$|}fAHm-oZnny&(D0{d0gzBuY7)$9+*yQ`TYd>5D=Lr_li27 zqxbim z=gp6yf|p{4h)125zgn_xwVm~ir`E?kHFz8-4+Z{q`u|#vxy^CfqMbS&^z`I*Ks+4U z=|uhY2;A;D=-&!h@G(gpOpbPIK65j9_5fvk_S3nE6C-Sv7a8!A8T-+^U+yWR ze)g~*Qf%v9yCR!Rv~(gA)l-XG7nMfV@Phg`3za4(`mPJ=M6!Fg@6zq^egMKfDQ!M@ z%MO>|G+Q63-|KQ>H_-LWJTd>o1FUht;~JTEZd{W15)tR2?De=A>LtO|@^b{g+S{b3 zc7Ubo*(_*Z@75#8MBkZz;qCM3#c}07(F$xZj{nVo1j?2~f{G7taA1=6Ul#*obIhz3knRdMem)G-ET{yxQYU}8{ z4NQib;IlRPY`wAVjGzoghNgZ4||5JkWtdi_Yq{<5~tPWmSlOFCU90 zI+QM%B+{u)eZfvJo$;t0nKKrTizwR{I2FN#Ubv!Jvv@tYwa*oiz}godr`TEV++Pob z63#b+ePAep729KL{JknjmyTkQ3#n+`=>*S+%Va)w`B3HGAM8KJ5WLw9>Cj6sa`wP5 zXqZc(Xq{_R&LfaFqyO->^kuQISBG0?RV4JRh?!d?^7?xyR3Wj372>MM(-aRdjYJt_ zMFIWcVvT`!|G)sv;<&&H&FQGlMkNS!f@bN{*lQ~xiatTo1%-+MNg)XbU~%Sxf6y<% zVWMfP9H3Ni>Aw|zCA6nLNZ~qdCr-MAj{c4G#cKXb_HQpYn1m`tSj!ug(jhgSg*;uq z8T%GWv@b|4 ze&Q z@XZpYkQpcn=ei9b1H(CE+k`kkf*WA0c@D{y#VDNlS??L-39pB^fb>TK(ORmGCB#Uk zE~BqE(sT-pUkhUx1zrvppqOT4fn0i5Nroy7!)yiOOtuCyabeT z;haw-`s%_>@|7M1GI3b6$GPJ-5mqaY6qwBQY~B_Dx<{9!L#|gMP{P-~_h9;mFA)k7 zl6uE27F`M|>U%EJm08Pp)ZYdfSsKMb5h$HrUEa58!5H!=UpUuaErR{G+3+RgJ0SUC z)YCNJNr={_!mP+NSBCK}ZD=%sqHu|%NV`z(13Ed3yx zFFQ34(f6~ynxGsYvwH^CG#|;)5xSPMFZz#tivqeddICM;TCy>-Ztc+o3iO=BA?5^Z zTgWa!j-;z$2yp}&WcW^Cn?_%B5WCJOhOTWMt9Urh*l@DB9!_--mJR6Kp8O#VLhURI z9!4IVR0(v55kDzLA_DoO3{I+v)Dli^Obs;gBp8R3#QhuK}}rQ&1Zo zt%7Y5flH#g00>a7#Db$XrNj~;dKy&H z0Mjh`^a}I=HWF%>SFpr6u@#b+PE8rwV7N^?a#*`|ov?5S>pVI!Fpe3_0x0v4xo`-) zK_Djt2@jVoM9SZshFfP&wi5e$h&j3lxnd}HJch0ubbI5Ru&{FGiXu8K3Jx`x{m!Fr zi$#iQ0g|wk`MfGxDd=1!#K5t;tUe00h&ClH2;@#_8PWoX)h7K!f6}qy%E~y5O#Q~j zT5+TC6fuSfa?CI19_PPTH25kF(E02XU#Lg(WitI*Y`JG#W-0T;RlF#< zo>pidZ4+HgF?=-2JAX2juye}2SVx|nbpHTT6DZ?;$N;kBfFkxfPZiD*P6k~n!<91L zc|QcPzc+BCdCY2u%6&Q)1-ghH3QVeuShd7P%J4qDVFYZDg2V?-6Y)mzf76v>!vLlA z2HOc`h#{3Drjh6}>b%+E=y7}ptwvs%26owR_znEB-@GJUP5aMB1AK zG^#M?fN51ihQp9(!iSLmkQcyj@R%Tn%{ClakSn|Tfj1J#>u&L@59vjgx>vbCa<3(vuXJJhOpV`=W0mxkVUiK_?RMxde7!bRy~!2V)ZiIAVb2yDcNy zqEc4W1XgluAqYyP$>fw_j9?bBlM|fsnU)JoKqRR@1u<-FX4?_Ro$4NVh)-6p zbP$W_mjX#7T^Nq`P+yRXeey4zbb}=hZ?jF)50C$Y6^^_&xdclW4*MWXVpSsNBP>;5 zNQwZ4u#^#O9)Cn4#c56=ZD$fNj_xC4HRIcW@CV+6LrR8>kusK~GZ%>3$%ZMkh5jP= z5}-r?BX7+tvFOtnlkicb{OzGGoe2XL{?iCKF-Cko0H#nE+JB;XR)lje=w~(*+6i^T z>0lMIVSNKuu&EI|1WGYeU=b1lS^NgcD*7r2u`u08H>i;?R-`|fh&baxn<;{(lp?f3 zA`P(=g;sP7KGT>Oggp@Hbby{lNX+IAH>AE zineKoZu8obq;QG26^<4o6E)ZqNd497;Ba_U#1$s6&iv|EfM24amExB|xYUqCl`g{dGU($L$_v1d_&zCwRA@wlfs2;{bz?8;8%~%!aNh4ey@U+sn_p;<2QE>oqM`<_%$fuNA<{$Jc57RWAPW z!&~=e`-Z(hbMnh1@OIp@_CAQx-5v(|=GmTx)a)GJa|*-cYI|yFvAk?Nr>nn5n`QgO z1KZlZOY6Qr7h;nc1CMP!jK3SuHaYy4gfYSh>U-~YI$(uD%n1foiLMTN=s!7ty92QS zyBWUU>t&zm5Y4%<-H+!e?U>BL**-BmDRE(H?`Y_S`$nh_`8I=i5ZJaSZ?w`XJ9^$1 zqvKakLXCZKVYe~8U$Q9|1YAvKNZX)ia$SJH#nGS)poF2Ov>CK;I&Hk~A8ZUy3T^ra z?m(B)0FN`A!KD9|RzjuzQ1C7v=q5XJbcay{*k4jxQ+;!A|5*HdTQ^vr$QEhXOys&1 zYR;}hxJD$oWdvyza7USXM6FJSK2J+E_Kl{))QkME)k~%``864p{iDmZG@VMcH(NoY zJt#T*=%Kzy^gaiTm7}$*K6JX0?fqX+TZqL=4}g)y(&98Uxv~b*J&2jwx`&31@?_3_ zI+<~y0uAE;eO0}`ckOb`H2L~E`I@Tj`-LUzj#cRhy{-(}eXymdqA5^snR6KtTn}B! z@Z}rss`5RNQ^1pp+j0uux5%x>?rqHISHKUHHE%8 zcO`qe>vo!7tV#qY>Vq$aBR?K=F+{iiMf0xM{3MSB>w&?y`C5rO7uHlZkYo4(9@i;4tV)d z$w)Bbw?BOTeB#$#LeX84osZ^pq^)HBRfpZkgjbUnExSZ`|7BDNJv+2Z{&td~htX>X zYu@k@8NTe3zg3kyB%$`*4i%fRUd(x38zjCzD-mEVsR2PXf(t0zUwO#ZoJe!7s5=c?l6 z+Tx2Z3%VPTAv7=O;F;0AGXyt@Tyh=ws4~`wup)K)yL*%2ie+~fG&v^ve*5jfZEbb7 zRbL3#WyxKODoIW7q6IJlYAWWsgQQ(+k^FUIIl3DKd)kzB;uwnCpOj9zZ@tHlEspft z>wk1nb;mi!%6I?ql_-~^qOI2Xw;qVJm^Q)osOtX6^`pC1UOnvcY2GYXGLIMNdP;pg zI6jDwv(wX&xu2Zxx=r5;<-E@Gw(q%_WD-bjU;X$ht0-(+H11LY%!O}GBd5nz-zA>R z<Q6^*>eAaeL2?C zDaOtP{^~TQn*w**0o2}&?5#Dsg`6XVqj`*>mt#;t)^^14w2)?#c}2&^QKN+GP{NKLEt$O z&oNG~Zf?bDlc*IvL2H^y)UcASHcZbn4E$L$ev{NO?_;J5(Q=shzCTgF#{n22QbbW{ zag66q6i1Jp zSZj%oXKJaB))S_N)Y5yKCD2vqXpR5*qn27(FP!qPv{KY;k;X<&OX-iYGFEK8+`^Vb zKbHeH7D9t^Iz@jaqPY@tMZgd(hgRActz4=>{Yv83m1U+Z6rmAAag|W9Wqu<8JTOpi_#X%vQ5_NcZP7D@fzc*xL7ded(t@Gx48qkF>Yko8dULqO$=Neofc ztLC2(JVEudI>ERQPx=9q*>4r+nmQItn%DHQCX?#5%MrE2u_=y~-X?wcgjcj(IKX?&2`&i^BTbZN7F;AokvT-Mdk4WmL}q2?sKJ& z-!FqMt!npTL5lc~m4eSTpG-Sk{me&(rWaV#^5?nxqSN25S09k0%F_cf45>ym-WoAl zGIu1j)f_BM(QcBwp)4lOHnvF<7nr_jnetXAxRVvLR+CyPS|&PK8(~9KLKG8^8`RTF z6MjGq7akuM=etw$wcp*^OXbR`?PgQ*NuijZfiU%QVSOmrW5?lTkeEO%-92|5#`5ys z*3e6sZkl4#ppY&-eG|8is-QM~WsEeoSL`5AwmILCTUQmcKOF$W)@L`7980t2ZF13` zFo+~aKxGnhU~#CNcAz3#B`CkpP)7QNDFdc?(=Wk87IY;}Qj`C7ylr3_FY3r%5$4=}@LlX_gcxh@_yZ)FBP@6h9l)C;y zwqvk&BdeQ+xrp`|rnaK(upeC|(9BpBF>Yh~l`}n1|I9$()UJ>20Wa8JjZoQ~CDoE%Bj))Pj56tqWuB&mH%M%wDxBWv;yJ6R3Y zwQ(YxRv7Urev^YIzY z2G3ANw~3Lo8zfwdD)FWTK2%3{EztbT2peU`=xwq+NUl36q8wG#)mrKfk9T8@_A#*C z6hot0+NQqGzLuc}&V8SXwN8$%sbNt5!mBJKuhJv>e%g08wmc>(ct$L=ET|40>sR{j zLg8v{pzYHjX3_=D@m;sV2Jc(?rV}rpW7mcE&E(v#d!*zwP+T{|$iEiQGC)+#W`Hxg zSsS>kjZXCv#f|;Vsy#Pt{E@XIOno0!}L5HQj<$UZ}Y2y<8QvNxsYl;KJmfLfa002Y*hZx zvif8FYFnODQyqU}ot3~OAb!8GcWP@v;P6*lsY_y?KYI9B5J%h>Ork7M$=4}sVR=NF zVJ1Nvk)nxFQjmbtN2ys3Tgzg&x#cPJQKMaX)3ns)IYf6me!LSpny5A8WThJRP$$BNKc*@2NmwxgwOu7qQK>s(vA$MY)VzD=~yBa6-#~% zPZy1VaV27)xhqv~V==B9S_YmE+K206S1hk9 z=fU!$PKt+?d4%}mz_3-B)b4i!#V!XjFBA-`2%Ea}ZkW#pdSlD@p!V){K!Tjykds{* zx*rIaJ;_?=JaVJm7&vEaNE8dRU-NaGqiO&m550RpRgEabK3g4EPjwl~;E*?Z(@K|#y#$V%m1R>tebK!p6r43vBhVBtPWG+O_I^*{8v$mqSduWC5 zG>!uR*E?=tLB^yQK%pS|)!TY%-yS<{xTS`4x~7pwkTY-;*=Q?;>&t>B9%1jV^9`O}@1OqH0Mze+9%K!k%8T?~6MD{9&w}da!__O~p3eay z;Otk{La{Y3=goS!w%VpNaM^@z7 zu==^ZEKFB-$lt4$%ki3_!dju>fV)J&$c>q0@xDnCTdV-~X_#@C)g~@fZqzsJ2!vS% z7d>l6PUNB3OLiCVRo%0dqKgs#Q--NF@MRULDhn@dWUX>@&^pzE6yyAo zM2@{E8&%^x;2zap+WyW;?8D#9}80I$T;(-6>D3>)4L9gn-^ z9CUsTIS&+jKdPV zd^Sk3tHQpz>S)6)SnZ4)*nGjA%-y*2(u^13-$b|GH#7+UVk}xA6$(rorLUNj#!dD3 zrF!St`qZYRYx|tn32fWXVe)s!8VeD8T=b$a?lU)9FDD(`Kt~k5qdjjrsVwiE8qjMk zKc(N~`%$yu)s7r_xX_jqB zga8*a$Nz-UOjgsk*=<3O@*N?{M-+X448W6tCQg75PE0V4_RB+wppCGAS?snT3#nJM zzY;{0m!B>=z9fq&lL{#p6lFEj8^K$R^Ar_)GU$XShzz1cy%$67g&S~RnFEQvUy%Te zU_2PRu2rrz$#P<4;EUU^C0<9lz&@Y6pNT`YeJaf($AH&#EI#tM&y-61%U{D0EeO1rEha}xsq8t9&n8^kNqnB1DvuenIQAE3K z+;v2wM(ZfasQqBE2E?y)R0&-N9I|8-;aiV46w#rI8)|8si>1nJfyn@}b%QA7$&XAh zmHM9M-e~CvUhav-4{h+M<9xWE{R@)Wrt;~pQt8KV($d~EqQzEF$K4e6g zu{LkZAUqi`YsgTKW6IJB_VQX~pyw#gBoTuRv5Q@Jj}j{^R~}kBagUf)*Q-i~!B-Ar z8UoI=e6{svK4fIf8r70$J0N%YwXG}{S%u`dlA zi#mDb$RH{!TQL2o$X=R=7k}?GcXbj+I3Fq^y}!^NTceHBKCfAm9e>b(g+qnJpb6n2 zJ@3wdr4|g9mq`1(bhlga`V@%eN(h$SS)lg+U*n zfjX})D2-^OgOSn}&{!SGqi*B-*WAg2NeCN&1*n71B0RI?ytIshTzL;K^R`_o;+Iagt#p= zWjmYmd(;$;1dZ&R^%IYeHb>?aJK^W7gSnsJJXtGD9P^`qP!;3*4wt8H(?bg{Kg_VZ zZn^>2ngWwVchrIrtp&Poy^ZCwJ`oLXYT1kOJz0aOw+2%LKVL`Mj3hL>2%sz#wi68I z7alzW-8ERD#JVKk}1~z9ZEMugeU-T#5_P}$XCi*G7QMwPb4tl?e1SE76U$e-V z$Y0$26@(tHB!tUFJ<``E13*ZIo+B+2X$YUfo5R(@w<-6b=xHDWA_DM=L1IuS*?CtHKsh4Kyb*$FQZHCQinO~&97nBTiNI}XmEkDV zTHtim(IUuvC_%S4s#oJdjM(8;Yt|f6Onb@^)Nau!K#5&*J$nr|EeJK08SYK;B$_tj zKjf(&1>lHt(%N$wA7X?~#r|&GCbb`LH)i8t03kSWY8a_2dgUN|`ihB~P^_F8ck@ zBw4X7r^P@#ZwnA#YujD_c3#&X9{K>6AcM!uqK?noummp1Y=~CL<>CQDjzyq3LtRGy z5KpdY89&)+2&jpKC&^I8&uG@35Kl;brz`-dUe&bDNTh2aNNzpFG%BsGL>m7g+J0-u z>r;z{XbE)mA5>riX?EzF#BxXLn`DMtDdK07HuEug zTdUVueX9C&RqyKB)u*cW=Zjt4GG(SjKS#oWgU*o>%J!?O20XHt7M2coTpqIdD1WQ~ zSSzAwIK_p~A1ok|9Z6$?Akp|&n(Py034yvI4$;j&Imt-0IY`jf+8eHH(J1J6Rh4GP zHZ|$B9B}7t#D7==KC9}I%&mWNCO}gc1t%0Lib|I@#@8t%m$6&mt}WME;NsA;-lNiY zr2ZI}k?a{7oU2RueM(;p40a6s3|+KaWNXznL*}5Haxi)Z^BdK|rOOmv&j6*pcUTIH zia8XMF;84;RDzx_p1(Y;-{qGN@$AQA2~R zjRZq(0bQ*PnCdY4#VqG;ifsbcug19u(x@(H_Omy_hAz#F4-JL|M4@~QTaR~bT0#U` zJ}}BgGH_DPm7N83pFQ;WM@2umo8$y!7lOG^$eZ+C38} zEp9e9NCG9Nl5lYNOv)sXs7Gry0i6a@Q7C3XZbl6ah=wVcr6r~YrCn5t74JbP3knrW zCgpSikIX2YlaiTeTTD(NztBt+8M6^Uw=2=^3AShs4T`0;{)FXpqpu)2(wKk8uzNKd z6dl5#h<>w>=z*v*9BLWr;=GYgdB!i}pAPu@XsGL7>?kb3?BUPe5>V<2{WLgR_P2#m3S%UUad53YRN zFJ=eLkt;h@Ysc4x{D7AcCi{GO!R~=`mqn+^M7w&PBORhxz*mQ|?Z)g9(ldfSg~jLT zZEjkg)uI!rz;c;Zm5D^ojcuPkoO6>jRwH$BI2ywr$q^lojyjQRTy)J49|Q2X;&4*{ z!XK^vbzq31!b_7C62tkiwekT3!+ph`INT-csw7x5f`hGcrEOm=ri%ewB=83ee|iVU zRqT@YyD=+m69pLVA)=F3+D1#^ZV$8qH)9JQ@96bQws7NN1cuG(w!BOOKqX3Ja21B} zeZ^MA*8bSC9d+YAEYCHzS*`mi$+-axK~_w%9lauN9^@Gfg{&ysW>%WgjzbKxcvrF< zU0;iiPwsOe+c6C7f_=B0`_fh0_9vP?TrRpd+XtEn+tvpviOz2@6dh9-cP*=m!;|-h z(#W4lEdyd;k4-XES9%8&)XW7$?kD3Fp_TNzv6Pq}fR|=uH)LYzVNqb)X9~#wIMt@L znLpw9&qN4+WVWtlXY_rT;>D-_H9nf-ap223M$lg4$xrJ0AYs&}dKmZ+a^y%mc3i%c z0)*i;*z>L)AkOLz>5#N|Hs77n2hQVQ_=in|u=b>7HA@(PHL92F18V|TgDvBhYQ%Ou zr%lG{ake>V#7vb$7||&Jltnb?=ju%9ga~RLl2YmmPi9FWP~jF-vFSe4m7c_^ z8Onh0ZaQ)~`kmsAd_)IBE|My))9lv)JNHD07(aJIh$;_vT}Uw-H+2Xb9e00l2s8JR ziIkz!ECiLFQyv7Awv!!1gqjmC#E6O$G=!9bQ|}KdS*N%kP|{9%KO)4OXn$A=JH47( zh(7^DXGgc5F8}U)9p?x9d%e2(W=rueWj*`$8<%s`HHt9W`5qzqwzVs3(v@;g{7i~^ zy3ARZ`GWdz$XU8uNwt3x-R@>`Yey%dc1lPPMWk2^1V00XGEqK*=YEZfokp$?MB?TS z2KVh#$bc~7i^GKIB}er8k+ak59Tvz&fEoutJyR>Ir_FIZ>o?z=oW^3ZaB?hS8+BiF zn5+Z7z0|HRdRyP73AwMUd}=E+Azv!?xN>g&7%dZgAu8g;aM}$fuxGcVZiHi=2Yaa8 zQ4dBzT`SW;Cy+KyDbTePCHNw?ff|5#w!mq_b@v$VQ_mBF7jLGlVP z410-1;QVyn4c11dqz93fc~&UAEqN6VyBm%TvHATTj^jmMj?N_&WGO_2E?svOCvi$X zVI$!8w7x%JiTJ=*c84AJnU})0e#ftJ%x}X*c!lbuUmM0cARARZ7dMY_dz(}g?MtzJ za-&me_{dYG&b7)J&(KD9)8Dd|WJ>`!EYi(vTZC!8Y;ec=X^uIr@aIYXyc0a#uP>-_ zMY%GaymDoNP=HX(pSs78;&J$tUk|9Rop&{Csw-w)sL+)@ZWGGKS|5=*cBendh{>NMXu_!7bm#<0@Hyv^v@B9Ug#nzuJ_+D?6Oaj)7coeUHyKXB@;w|7fx*_Ga|r+Qp)yL5^f>2$wYDF;K6r?$nee zmJQZPAIGG$Q%mWrY^Q(j{hu|5VGj$UG4*R3wU>QFgG_1l=$@iEowG^LR00pPtncB% zHqb>@{I+Iu{;523$_Fm{=>slhzpjTlr~cc&O@2Tjb8vw`DhUZ-I#psi<)?hXz7qR1 zdf6ecUP;ZxvR?>(JwGrHkIqNTv)&i8>TDUJW!Zs=9EMzsnnH{VZpw|v7aL1&lU(zqLq0vJVxJn* z18H$%0szSmC81SYT2>o2vmb61;q6&(G5#{#--HuM;*=UXZe# z42pW4qf9{O8RzwE)odEn;;QEaL~~7LM?`gY15_VK{c(UJ3ShHpP=EMCr=&K_QmixA zkX))zd0>p8XQqYL(MqWU(t!Qg%UJ(j2j7n~$4bfIhIV_IRFIW5&fsel%Z8F=NO@ol zLQ0QwaHuC;){Cn#p*9Swo+poqeIx~FKb=)E-Ouhde}vBmDNs1*x%to^|fAq-{4NYS{xzX!8{;>thk#i>?}yF7N;KBF8SDVz;jZM0?=5 zJ)Tgxh=jJR{sDj`qXzrR1aJ8uFfq>90Xqro?y_ww{WYnAzs=N&glJFTeP^h52=JCR zclLKbSGDbS5Y*cAODKC<=GZx3R~PK5lenA5?KVW-H?TeUA}4&g`W&$$I*0N_T}y1v z+xaY%{-5U}-_dzTMTIt|I8GNPnLoO9#ytjN&gTGCThPr`J%8b7V95{e2QID$_YY~O z?%h*OnBVejS(pZjx9$fG-(@)R7d2F`?;h@gP-QDvEGylcOpeZVP0l?}BcJ{}*F$XA zOUTbvtd{4_@d(4Fp8HxU_&lSaMiI{~HcaevFg=S0R+~-@?>ek{+snAk8-hC|7hNTE zU4TYsI$vFXbKx^%VP_54O?m6hPak(zHzFw$dAgwao0id!&ooEnTR#$|cgChilcY|8 zG!J`^JgESSso~~V{sz}r{q~j12Z5orgna7NM-n0Cvt)Sz1(Ns#;m=aujo3gkdVW*!`#(~t7K1prhjX^0CR`j z3#zfat(8PA*NaOono#|V&LSf|$6Wt(Z668A!<5`uMFRmvPQ9#Cw;93sle8ZAwJYl;Ud-@F{p7yjZsl{w{sH>s@4p`B+cU$Qe57Du4RAEtJ7k zR9i1YOI`lhk-G6FUvw){+4)j%+}PPEGVr#SoQVAC56Az+aQoN{fC%s|n%^izg@UDA z*i`-H@k{J_lwP@VTcQ+Q;6%o`joSW&r-OHdgK#^1A6-Bg2rPJajvBIEu8kgXUzd8( z_T|jqpC65*KjXD^sfkHr^h=5FZjPl}&a0->x$!Ug_?TQ9Jfo{)yK0zACTI$en*4NW zsTYwn{p3B0`8odtbF4G3NH;ekvmpsyZ5_HTC~fB&^|a-mYzYE=>-Eb=h{E43_a#L0 zGM@rdi#PgZ0r`wiHU{S_AgXo8r2*+wPyMFnT%IaInaMtYHj1Z(&&vF3#r^gu`nmU8 z^!H8n8p#`k-)Hlur7aDkjdxz(`x?~`GvYgF=l2Wq6I-#mE}b{OHqVQCF7a-eR)u!P z5WIc;-8u0Us|+s$n4WMQv+!G(nHoB{a-SD%saeor!^BYZ!@`T2RpZLZ#bOKR@1#vC zc+@y*aM7^=>(B42db1D<6ASiU0tif*d+IEmw_#Atw{}Y>Cl$A(=mwVkvNB#x&`i*K zp!vSfI8+A?-}E2aF$s$D3q>Uf+dp9qvrZm5q*i#MC%kh-H&1f(rzhZpZ(M5`Pt3tc zT6lW&8(-%;=^r8EbLmi{jU3>KV&gDV|*8G#a%Jw50Y@jtj5 zH`o7nRccCKwvN5cehX?8Pyx72-6sD}NhS~t@3uEtKS6>}a+e>U%n9@Bg(qUEs@uOq z?NVhY^UfmNaA#kP)LUHn{9HvxYq>O~NLKz8Fd~SxMk+3GDdq<}{?r$62Vl%A97gezv}qjGy%b%}aM7aE zTE^C)WIYK?Jg7eoHe6{SLYi|P%h0TRH8OmHxFd!%<64O@ z>p=N#Pl25Rog4duQCOS?4UV?@P@{-9#zMHzB4A2|TwMJqX29H@g9bXfIjbB6jKNH2 zX?~ubz*Zt$!osM=-nw$#)!cf`FZ9tqlSh@VqTz0zhqq15%&D4_v$bA?_`9kgWAKlQ zwFWAOveML7Rdh-!zEg28R!KkU@odyt z3V;ET_@`Sb1GMs-D9xyKXt*==9k|LbI$Zi;7GqrQ`|#U2D?w3atCDzJR&6vkkcYO4 zDcJ!d_5~t@#G0@#D>{(KKrmXctcJ6|!{Ig?Xk2?pC#MQn@V_LQ>Y6UZ9qLnHW~N%2 zs$jk%QPw04VRpgr*BPY@w+pQ>5cD;XB7p6LA>*kZe;_-AvvL#rqcXvILeR-*V(Q_O zqO2_n$wWADF=j9QgMj!C>j5;KR9l#68Pkvl<0 zvTY%^5-&miz#!3_wjh;R9YF=N@4IiLuqj5mqiG^RmQl$TC!>+Gn`XtR&Wy`|bq18y z;UyuIWX81y8H+b+6oB!_!AM&s#AIo_3bRkZV#TYSl8~$af=osbgdBqxP74&TcmS;; z?hHCSAMk=0v&@#MXhvm8u@(YGh?XMga;woUTW|_H1Y63OpbNYCHYbsLp<;+eVJfE1 zl*xnT%TFeT|3&4OAiT?$xLOSb=u6^W_xmj~P~l$`Rna`x&fZc}9#l?qsi z6Z+^&;4e0n)@B!NyFjpnVM;w`(~?AH-b3_CutYeO3T#(wPCLhbj!au7X)CeU_3}T) zA^(7oI(qijY0IPF<<{4eDg4@-p|rhWiJl+PY`S~NZy6H-GRLO1`xMz-danRk2Wwpr zQJS%3Fp|igLZd=vQg>qrWO~p$VUjU=bZDu`{x0G-8l^DuCT)M>Ug$;4F>^~^i1CB*d^Wk8@)+7>{x0wiY+e;=H=HZhc$7=i*>BcVA()(>QI)&LAzxc?AV zhLIU4-9E1j0s4bR3_~2@Fvb6;aWgcmNTK#LoO1EnK0Q#)nHmy?3@;W;W+;uDK3aG^ z5E|nan}|5j2oY^eI4KVc40_lmUlf8oDYgPsU>MTgE6UW=L$^w*#j$r$c!Qjrf8^g zwRad#oyj)2U_};JA}c^xlQI)zQ^aKp{fFP?GQAw=s1+d?6VP$=Gl0T+!lErtHBbI6 z>Pwyzlql`c!HLQwvkt)$RIow5}C^fhpre*O!xOXGWh~!b$g(LLu~9Icc%1QM1js_n$Jv3k)_shN~)w zJ3Ev$NYd^o0o-jEiIkft3ijoK@VwfO>qR@uGG<&^5-i$SHD#?L;#=V?aCQ~EE~q4z z8d&u}QMqcE=uN=sD(-{?IJs-yvnko&uF5VrC;4w$d37Hr~BEhov>)0F%lS;Ee zMaE$Wt(S|=K!6V)H|`p4Rf9DB>C->hm4|w8|(ja1gxzyy;$u7$uJQ?l*%C zajMy0MdLW92t%A1lxSQb3TkOqS7=zR8`?3^`AHILqexhCn)In(?K8%G*6b8h260yK zRL??|`I?vJk$#$K!!)p1?O7FMW+E>3#$=uufzad#femWA{OB1HyDCdrqg zzF8M`Y%c- zPHTe{4i6cwg?y8qanr|XqTY#U2F#U&_K%KM#))14W*Mh4_*)0FI}QY#Ypnlp7!0i8 z0BF0}GZdDYwgsJ&mF3;$>~OMam!)M!8@%_BGQ<4NUEMy{Fz1Ro{#AJS4z%nM_uJ zbi(Iu8+tWYzjd;nqT>&($%}iv#d&`jH`Za;TU<;WKO4v>Gf85j7J7nLyViz_wKMMz z^8C2|_(%3bclCV9{9n~R*st9-{!~Ajwb$(NBj=U~M6_4G?cruz+(ZB`p5Hj!?a}Aft2= zX=^Zo&^^}xbvHix`{z>rM9f35z9URVE22}uy%+o#ZK;nzPBcT4Kv60;m$)5+k_#__ z?3U!ywU75|I6;xYIXW6ZEM@?8x*E)`vFd3CvC%7E35cusc}fo3Gn>B*%~2ETo&4Ta)HsEE|9lm_;p)biHx&EE5r22Q{bg{s~;B7LsoRNYVn9x?b~ zwke+YuPv%)kGK%-df)z&QXl_SJO26?`HL68`-zYsOzU62501c_VN1o&XDq;XhhxuY z`nQ(XXA%;Al;g$4{zam8&)Wde_k)+-2Fa$!&U-ZEs^ERw235zWKU?9Ah7NDj&{Jwo zeamI|7%||&Kxu1StEr>-!m_j}KXu!VAg;tmVeITU#U0tL0cz{{RO;-#;nB%#k^8vh z<83eJdM$7z0?RP`-}-agmGO(y>FZb&mS(lBo_AEWobx9;UrL*`wX2<>hf2qdP1&WD zYcb)?Soz?m`emr#jZJ4F{CFZa7P7IUrNPkx3Oe8lD$kUf_C&g4E9UJMSl0D^yDXBF zWNe~_Bld_Rf`4x-6}SP>HblwNHlya5MkpHHdVt%hZX#qdet7ccv&C;F0V3d}`r$HO z{neh;W$s>TI#pXuCEZM}l_{M;r^b_+@9m8&e8g4GOtTX%dY^z|n)lS1+FxC&^UmY@ zC_sGN#9%htbK9DHuFG5Zi7#Of02wR1b1EA|Alv8rhy4z}0kHoZObO9%a23pSPDiRo zQw22CvHDa!be^l)wJWX%b`;C;!{~j~mU0EN-f;1#Um5aa7iX9A=GNr>TdpYg`4!iF z?p3uOzf8jaUZq&f@ixahC}sF0)A;_n3Ydrucwc)zJ7Exhaazl5Q9Kg-L&F>^#w_pP zHB6F0dEx@wW9_$JaT#ujA6!}Y&d&e0BNUi%d{`+MR&=>-6e-61q@JImMMP!ayG7UJ z7d5ta({m~DR#2{W&`QX-=l&nP(OE>#r#*E6>|z{bLrSoPx!!SjNAC1Ze|iouiSW1( zT>AQ=7tVcI#aM2vVz9$6Nf0W78zJMaJM$vH=3}I8TXUkJI56lqSWbfeQ8goVRqJmJJyd({VUWe6w8?i}^W-jr>v>C`oQOLsSa zPBVNde!9*7Ni@rEGG=8*@;n5*>dN`v1dMm{LMz1EGcpgKz^d-A=U@mu>i5tT_w!;I zG37~2j&;9~Fy4KxdVaSju3S4`8m8gg6AY;FTm038=b;l(5HkRrC1zzmJViE%UUj?EPrnc=<@YLaX~5k=B$m-9_Zg zTK7)BZ}vo{aH5_so^#@HCdJ>fwq~E};_KXZlyQ|B_MSAz8=>JIsIdU|G z!86$@pSi2iOWqkUL{kg&2k~u}2)5OK(|0(dU)W}6x}xlfe1Q@W`&aW9iOK^SVS^iG z@`Ulq+t>!aJbNWX-J8QLU4I>{!mwOfkCby&F(FYLnEHL)t3$YF*FQ5vfo6 zU*F3~Uy>Id%)fx1@(~k<5VHm6hNI_pFCJFg9J?-i%J|P0PsoZoD&1>$jqa!OlHaCm z2KrYMO>nq`D{n1KwKTG>2$T>FkBV`O*TZ6|1ZMI`da#ab`M}1c-PPG zNqz=}aPQ>gjDot!PT(hSW8-RrC`O4whd?~BUGq_;IKOLQC3{d{TL+~-E@crLQrmMa zv2H!9kF$H>DOTF!F8S_BD1IDL3pEgqU8f1i7_oacF}0j*DL(ngJ(v+>=upfr?bsn$ zD=i0BlQGqwQRvxV8^<7EtN7DgWPZn$5~)tM<1~A}K9{i0Ctu2pNj`xy#1Cz%CT+=;ycULcD#4mwL`z>+0$r+F{;f?=(!lyTkc*LU^{+} z!{ewD&E0OO8Z;nM_Jni^;TAL;Npy1?NbCI(ff6;r9oT;X`dAoo-}l@3M;M{V9(!;t zP_`R?CBW72gU*+IGGcZ+wr#i>Dnzbui=wvY{-spTPu9r>_t_EC!0bar@qy_b;2t4p z12Kaj`1>hiCLnY#?f4)ap_$|_z!ggWK+OCpQ{c@|S=(I46SlnFUn>Ri=f&=H`DRc2 zEB($^+~!fl)94?T>oVQFs!IPQWT_KyRE6+U4^_d@_?7SsM*)l}!{ecdC5ARGu&Wa( zhXp-elH6Gb1Aexd_&K-XywA@We>d;lUTzPgXD%<#Hy~9G4XRmC?A}}q@K0;k;zgJ5 znT?SP&!_)TmEUD6^&w-c!`n%0o#6SIcoT{Z;;IYGI-S$=FV~;4lrC4>i>$KG`DKab zHs`CCCc*kO#ZzwOt>@t(YR8AXmYIG1-L7aRV9PHwzce%j3~seRYC(b1AAo9LE#K^K z41szm)g4tsQrAJoeEKZ_%DMp7q90>n&xRkf5jVtoG13IFBfuDX!8}%O*VZO*q@fQc z&Gu*@Yc7^x*|4?*iAmGPHn1+A#|luF^!!45HsJqld)?M;oTajG-1|V~MP=E-Hd*+@ z(frnRnbQ3^)g;#3mwk87lK)AZiM79nx$iz}o#I=3s@c?7uX8`8*NIgk%n)hb!6LkT2$^?I*x`F{oKH6Ysb5-+AqJayWR(mF!gl~|3}1PJ{y zknJ_EZB<;qUCmFCRF*ttYr9S!9u$leqFhBeC?2~VyPrAdnD}5mPyo6n&$%h8Y;J(! zZ}o1XgV--Ddr`lxSC0V2uU)q~_@b47#8utK=NIVoKI_zgQ)yUSvQu7%&3-Sg569i`x0SHHD3@ zVud&3dgn{f@#?3E{5H%YiH1w8!X;=#`sfTuyU_pEv;#>Ve_vkb1PBLQRzWBfdE zk{iI^xPX|(hrDjFuDzExxeiD?#@%s-*^!v~oE(*CKCMTf&2pR6TsePPdEV*A4w{M3 zxUsyO+Bp>ZOdAc+HodhLxFA9b-p1L5xV83YTIYoo_}4k4{@s}P_H`q6pnn_wx^;(HwxQ%YEs#1mQHbUXx+Y z9iO&m{>=wBcw;^{WP-Au3%2PFw|C#e_Z151#yk*MU_7kpeZ+{A=@vH#1OQex&j0@k z$5;|_O#)RQg`8ZHn!seg z8DdP76aazq{zFBUB4|V(P*f#d6i)aggVc4Fj3TL4iz!Kg^#y_QP92QVFk8#M)W+X$iI(1}5UZEpAGwGq8E? z1ORn*%J`Dbz}d7{xxhks1_>#2&YlJ|+4=7NTXbs5R528ZAE9YFPud8j)<}i2f#T0_ z0o3{o_6b~}Nq9z! zpEO^C*a^7UCBvW1%DLFr{X$Z@saiB|i2(l|!cDvk8KRg)amteVk<^t%0XDp_;C8v) z*ibR}EtV9G_Qm}0RvT{gdyEWK(S4S9*+^9pX^l6aY;L%zV#*VPUcrGH6<8IJVa7io zA~2fC`ZBX;Rng#WqQ-u>X7hT8jx-O?ne1A{QY$dmxECUNx!@)8&gRPdlJzBjqyZ|x zg&t#blM5=)iVA)#767vq2OUI@7kCaYm$528wFN{juSr$A2CxC zs(}vO$=^OCvblpSB1;k6zAA_E0&WM8^~ps@0#TZaM$MS(Z~JuvS@Qy}_&QCcza5uF^MKX>XP9 zZi5%=l44$`$nbtEnz|w z#%lcKywyNKbC&g5LGw6q0%Vi*pj^oMdzm6l;a?H&;wX_;bINW0Reu~uk{xFL0#I^m zoCa8Fgjg#$X$ct6P=4`~v0e)4tUORRGtzcb3mc|bLE#9=JYv60Z-6kWOD0bje4L+! z%1DJ0_TP3p?R?23{e0Fsw&RdcPGhXVP|mryacBf-#hBtuZ3Fb4%t}M@b5&|g2}1?+ zvaV#bFzcczx$pT%LwInR@Q}%SVfGF)cp4WhD9!(5_>!`iH@}ir66JPHh2tqw@_@_tafP&C99`r zFnU{ti-n&_JoId81+7Iqq8MTrY}Ac~zluJ{012^zJ6sl0!vGTU$&z(m8A#-P#JAK) zS~k?p2JjBFlB{W^IgV-z$go;Qu-lMD9S$~XH)HS72F$YzXR3uc--TutW_S0;$%?rS z+_Bf$CcP}v zf0|15x2P6048BN(TR!NV5Yq%+&Z=+?3Q&xcw}?P+l_nf{+*Y}(=3X3&}2s|vf^ z65Pnwz^XtP+5vkJ)|Nlw!eIs5TW`Vdc*Qg}KX?(Nc#}f?MTm+Fc00@uev978YKkv1 z9%$SZc+F<^OJc}B(%7G}my6q6JYJ(#n#{t%LE`oS@=)-PNTuc3AmA$~v7_Mr;gSnf zi))?%zT{2#^F#$>Zgx||>6X?dw(a5m_{1*haB)tnmdqXz6rXhDO`fp+BD{pbpW zNy`Xf09VMy+;!L{^|B$AiXzS>Nmty9H5E6)hRSBSq=%ILH&GR2bOlo6`&2vfj&2aV z1`TtF&tM-ZC^&lvnN_rm3V*F}j8IqwCo7y_FzGVHWnSt~aT%)+!@nY;_UgX5Y#6Pi z7;qRbMJ|={2jJkG(pT<<`-KT1pQHP{!%jGl0M+^OSq%qC(zHM|@jjIlIoO%;wshuo zQ`o+-^mSbxB-?cpY4N4OSEXG@Y8Z5XY!)|OG2~-Ba-5@tL17mc4W6+dm0rRt#c3u+ zw6U%{x%^nnfohL^n##f~Uug<$xY96k3FaD>p4^JF6rN0c2yABdSw zfuXKv4ZE8VEnyeZ$NY#@0+BK1bwv%20#MqqSTa?dtil>=i3}OOrnumB=$w9Gd+7|n z2J*;~$=HX$gq>lTY1;pRr-@w0rsc%~rG?W?xMZ6~P=-Xc?0=orM$>?_Qwyc93>DnL z$rcfnSV1O_LCPqg#*^(Kv<6e^SAJK|Zr~tFr2}tzKvBjI1QDazA z2I&DCjYE2ztF72U<>2He;>2ypiI4iV9Cq6BCnf{K394=U1F5hL&LYOuydZk!t8VQ~ zdU~rm^H{uN*_>6g74)f5O@hgQpBN#xp;Qp)xpJ#+ObJ!kBA{X9Y$3$dfh8ZVxZ$F~ zbI=?lGVjRv$mG?83A32)^5VFf%Gi>$C&Sdb?jX2LFa){Akml8Ke#On>uf2L92?a_H zYK2csR1(BZM7Z|Y+1;}C#nuOX;WRu`K~8FacrlrAODjxJmBEMTO(Q`7M?7cb2E1$H zzNp{`DpwLp!XTReJZeF#sgL^!M0u()rcZ=v-$67}2J|R|ok+%TU|o5}jS1-8P;N^y z4t0#XpO`e^9uSg$ArWIF?@F{A(b4*0kh5rW)e4+F!n?Ce+e=6w1)9Ou;H8&fTe`{o zfN)=cREE$b1B%%=3TbfJKqnAfcNU}*H1ve z$JCDVkjnubIca1M(tr9m?@Zr!6NX<$hMnn;3q;?0NJQiUTHT+Nqq(tk>0Gr$&#A>L zj^n`DwULeci^ZtaR*aRp1wvg{nhVC-z5S@{c!u}Y`5)l)%rgKJ;$tpB{|nEa_w4^L zc0}I{PEWy1m(epPL+Jv4%ZN|bJNlz-Z(I`$Z3^UYwGeT=wj)fsR)O(G_=Zcp9_u%) zR{zQb@RVb%9K|=|;G?nNFOu`py=O+?W^sKjrhEl)8}~^X8QGcbPkaS+W~46Ow6;Lm z-@t|icvC&?6#y^WA4`DGhkQ@dsT6m%<(_Rvub(qh|9bN@vyu&6c^2vErq=4(ra6R$ zPg~HAUm+9Bq-9(rH?I@Yt?`Dd-dN4AqK{9mDh?h{?Uw4^knP&&^*cJ-JhDS;pP}`M zN>&!;Kk}3xMpGHsPrf9kd=YcK&w|@;J}iPtqxs|Hv;jzqg^p?N@Xcw1_N*%Yf-2^@ zX4m@%dD;(!v}tDJK{E!nMn127YU7 zwt^ZaK^lm~!>N!8HdDGX9M-$ub^etcGwidS8i=4yr9oGjb-5r1%xIis@Tn%Xq*t!D z{LoPsW&qn~b8xY4-&k!u#7kZIx%PPb)>Su0Vkh-@xY3|$Pd!F>z0!l9s-t?iFqu#$ zV4}Ri-VTiNndQc!dzI-*UegrBw;@WS&%XFxICV7kJm zP0(>rhyFMJv z*h+0ng%|Rk#oTzR?ncvQyU9lUue#bjl}`Z1wHqZ#M+{%?p#Ho7vnS1asIA^Y@*}+Q z?7}WT%`n<7Kk{&~2|w8|nlb-(>QgUa{K*}2o+4I!q`5%B$blEXAC{Jo>-p##b$L++ z?uXe!1vXOnT`$%Q;O-aJjK`f4mZIw&cDkI|Mc=e~u-(gAwiixydc8MJN4hgN&IRDu zJjP)7(0tNhc;EbywA?3AwQID};82apB@2sZDmv#_Lg9h5+&gihbJW`4kp2HnzLrpU zAuab!T<97-GdOf(a%son*^18jpJYp~M7GXR9D_r6CYNw5o`L9`J&EaC(*KfkMrE?m zc&uGXsq7UFOQs@o0F69}$(&R!^T*-}>;ISgKuYD4h}Jb4X>cgcSag;n+|C6dfxfWMm zVwQB3^YbSqPv)UnQnCy%&0|}IbF3L6y+NkAt2ITwfk0f^1DRxP?^lYv3os)jJqnm{ zXXbk_#(AmAGB!kxm8>V%aAiTcF(ua=kuylX@nzBQIrZ4y<86I+@NJcQ&sX#Nh7kgw zBNQVeBscw)<}cV~+~IO{cf4-jEMQ2~cM3>P{t#{vw3p!{2 zm2H9OUTnrJtzT+h*0-|@T}>DqemqWxDc+bm0?t95xzIc7W8Gx71k(**4GYeP`(wE8 zvPNL4Y_paw3@|0c6tua$J9_j({GwgLaFPRoRMcQ#zrVc~2Ws$bx)zQ^$t?$2m zKi;kh&>mxWeBQku`ByfPs*i8aAoByD^Wm;Kux@T}Gn&1@NA8t2#QfTqdyOH+q=7Ek zZ(F3DN16+&{zG)EmZ>y7T8yaUIM_J3ZFIx>+5Zl!fWp^;;IUK07GLz@CpchcMm$Mg z7`V-IV`M%54QJB(CsZr!FS3yC`YF*-+2NK(VotPS88KYiq(-!14&A!A*kJPEzI~MK z79Mb8estv_c+rjVDwreSu!xa&VOD`G%a3bZIS+@c8$p=KDNejult@|xa@Tw z{IOiz?6MP~FHg7G3jsaJPM`KoXIM1X&7ZKItkKHV%w7x79scle654eOu1ssEe+ zYU&HmsEO z&Y%n6{e5?20zSnzo*rAk|FDE{`Uq~zg=WXVw=wSCoO$cJ!z~rrM_UZPf$T(h&JG%R52#MRW7FGtKqb2c z!eu>5=6P&GgsKi09>nA;N#NEX@x|L+;hijBhkr7qyJOofTep&Bxsv6=H#i%1oV#;B zzJw~#w7+r9W8QI+vH@D90r&1dk)86y_Xf zoMY{)Y_r)SRyh=$M-;Tr_m0iGOhX~?$FH4~9;qU*?>;}PBk=b$PBIB~TXRvJY51)9 z00OoY-ex(l;B6JUuMhDAyUQKF^$wyHx(^St&0AQd?tvOT2FDuyv1WYmsfM0Zf}k00 zUvwU8&jo;ntE402Letg8@i;g04dt=s;w1Zsh(FZCl7x}db7*xpxcq(Jep^dGcViXP%Uv?)G-O3CV% zR6Tef#Yh_l-8UoK!GlfatMR`{`4K<6`>I2Lbe*r{)X4BM`@{q5Re2WITao@6VpdC4 zKOtcLqv?2!P?QELB%sp!fdA2MuXWYxMjH zB^|-o2yo9zR@C3NTo79O3;oh2=dHQd-4*(QbUE=(7H#Oxr`Gjb$mOY;P^#*q;R`VO z|FHEIV0AQ0{_w%w9TME#gL{DB?(XhxhoHedxVyVM1b26LcZcLVdGFrc``>S$n&;Pb z+NP(^Om$87bk#&<+mPtOSQ)8%_o+{b7g9Z_)v)zlL7J)0*LVw|%xBUmN#8zk<-eku z8N=1H!ckDE#6YAljJ24VW^DL)-3_+eug7@}P55G7`Fh#s(tY~*jZ4RGZgRlw5w#nx zy9us6yGW-l{&{(_ioU%do9 z73K;XBiF*czzn1FE%&lnJ-dLZnx3yGd=4Pi*j5PQ+PqdAlzo0rDcLd5?y^oTeW6I+|BD z*ws|_!OP+(^4slIDT6@IMU!+BoBw+DQiSiGl-}bOWAygL*p9b8*we_{^T9P6h&jl4 zEAFqxr(q>v(Nxch5yVyPjGP!-?u_god44~*wvL<`OX-MQ8Pn*9{72sb{#)VsZ_VZ( zg~$Anqy3hv=AML|p?mCs9*ARbS2o!-PI1AksAskNk`PR)*1qD_ybL-X+g0fJF3?k# zGdXLkx5Ips8QSXS&lN=p%AUzsgE$;e5KNNx;3TJcf1WtsOEV| zOQ`03$?*6l*FjFDcbOcvS%~cUDaPxH1N240prFsx&On9bVaemnURx)<2C&b5?j?pN z{6aR|w@mIlEq0lMq}E!*XesDd6hv7=VPBK02tqAbSSp!S6xs8>TRny&UHQjErVxNq3Sah(wY_XByOzEsly7XDF zLK-$sOhW_<-7$U-slXyyRF_>rx|3-apjD?Zm z_8{e_8bMeM>~BCEj-r6(S>8Yv=5hiJHK&4>6glvVa9x>8XVWWRHRIhIPj zxg%U*>=z1ly6d?_VO8&tCw4rj&sMkb^eh#RGQyh52I4Yw6Jua1ro3!kM@0 zSArX5Ftr*lmA_9aZFJd^Hl(dx5OdT`Psi+W+wG@L)9S%*hmfTi0nd(~F$|~y5;rn}FHwR#?a-lZIMrkB4j7e_7!<-X ze0_(9K*MxdZ^Muyt6cV;raW&8dB&>!+0Vc}{RbBnpPLWqro48U&0oImriTsy{nkLA zRw>Uyoi>m~5s=6~_chGd!BNso$Uk7;j3E@y>UnV*GRbU;Se`&Tj1l>4)Zpt-0;V@S zkWU-w8D9jKJTuw=Z82T=M{kW8k4WGhDc8hT)DB`>cG?5%Gl3va4LH0c4}wKAyMS02 z%T?OOZya#*MPjy*+^A27O0Y(;Vp-7U2qdbj{=_g`+U@B(4cw&SoI&yDG%W2U{K4Tu z9uRO?-#a5Ei{bk>DOC)&*HDQ_pd%nkfI)L9^*ytw316{8_D@tD_gPQ+DO@kbO%MpE*i+Enk`ygiLi7)76?&* zzBnd61jAX$5`hx2qezuxU4e}h&yy0zj<;g!sZ*)rFAQ&6RW2hwhPW^3LlsI%1!BN_ zCRfF^kjl}?J^GfzOi^-67F&e-*q@zJ2APXAdmfx_3^}3a6ZC6joPNfM+E5C$mW0aM zY`;CMlMMDxEStAPO0IJ*SvbYI(N7j_bLroG^BHiziIebBjY(uSQX$~tSA%*eW#%=H z8~S82ljP`R7EF-_)g;x71DnwEYJnW_6U#Z3VrTkdD3Z_}#M?XZh^)x$k}N)^nz7}s zaM?c%Y!o~^x%J6?CHj>KCN!`Q1wT>Rw+#@TU(;U!RQ&U)#K>J4H%s0e8-PtmS9a#@y4NrMJ3M#C$VN?k9T2= zs%Xq{g4RQTgvX)jcq=R^*uZ&_>BQ&D&a>^g`gVD|-IiG}V;ClB)of zQ3g&xl9PR=R>`xOS0Q}4uqB2hL4=gj_^{Lf?IR|wQ_XKEbbpZ9Y2hiOE@MsrtNrLR!^( zL^6NqGf>ls!_31;qA1eFdaZ@ZYOy84~WA8>jA=1oq1=%oY)tU#wwMmCgfp* z0YU4d;5g*LSS1$sX%=kTgPsNrr6`i42dDu-rfPTwv%*+n9I=VgOHd;?%Pdizi5Lo2 z#?NG7DV!9VrBRa8KPZT~H4i!vOvp69u^uXNr|Z<2l8gXT>=8f3_L?<`D?!m2#b#Ww zzI~ab6{ejaq0VVyi(fs4j4~!L`t25S=Xc*pHzf_8H-mEwG%V?y$|=! zAIAGT9gc%)yh;Cgya}-;=yr6PL{XBY{T2{VGi^6d7#xNLx?dI(#K09n`=fHt#iUD# z3EG36b7p|A-*W)-`9`E*%n?_s>)i< zslr{B$#e8eR;xAR9L2JxJeQ|aT&64`4$ca15tjvKLQOoyD#XWecXF+fuj|B^{p_*(xRike&voV+yPq|q@1Y8D!sv#>?W2K-1F z@z5NWCl(}#zeZAmu_XCV-+$YN7#1g+38j7}qv*-jd|PX85-{E?TKH+T%qxYZ<7x>R z7UU1ikCVd6kkLd6X$#53M|B~d0f24}7pQpJAK#+RSR@h8zsX#-K#MK)L`Ivi7%Ie# zzb%gt<8>T6#D<8|s|j;@k8<#<(Luuy4@kn(+3+Rs!!IV;#G$w31sALI1|#zoGEYL> zBp%jO*pJ(!@IiXxe`A$lG1QLjtc#oeX~_YUB>C1n^a;U)ywBkMTip~F)>qkHfxUP{ z$ycT#N8&qKT+E|@DbVr))7I8cw55YkrtY`fcEOK1qVD$(&_;~EzwiFMUkUzsvHyLC z^5@~;4Op1HOwbLM_UASk_@R#6b-HgYC*XKn8pBj6*R{R>&wKosoIr6md2x3E@RI3q z(H{8VF6i?DG85#xQxVU^xA{R#NaCsWUZw5(WDk6g!Rgw1@3%!Gs$R#w5q{sRv+qrU z7WkxMZT{w`-)^h*?y%O>f+p0+i^emhCk`S+V6O7F<<-+q`S|OI*X&zu{7Yhg0GFyIVVdF0D9ELRJJTHLM?2? z|LiajuWk5>UDe5`v$fZ@*+;=&wM4HouxHh0lyDIo%z31YAZ?C4i-2Ih=!TF$F-LEJ z1PfIIW=GtFrsKfRg$#|;8R6D<2vsP0STq(8fXPkRNZkV|7qpw}Kwv5i#0oo&YnMr( zF{BJUK{ew}p>XIKsq{X(~5SDxLQo(9W0}a)cdmrbBs|Yb!~-S?ic7u!}eS@ zpJ`r!pvvP{e6TSHF#Y{xgxj?&Lu1%+{+RtoH1AETyo{lqbqwvxFov<^=o8exe>7v) zq^opwaU)XP9Mz?{sCIHI=q-6u#Fh9y-2!3%T?{kBwHI&`@XQA!FNtA7{i8gcqsi|bb%hEvwHYJIa>{;oCXmLX@h^xX7aHo4)# zc_lYRQ@_w#f8aaYaX+43!Bl3hw7j=?ly0u8x`lkzwfNnwr-a1@nwEQz+MwF_^-VfW zzwaSXq$+txfPadDgCuObr!0ws>P!UNj6P1|@_HIZ-uv1HM&9Wf76!%U z+5;NJ`1%+MMe8~UYD)R~9x_JuIu)N*ej7s!4j(>!A0b5O!{AtU|fG^vk zfeFHDiYsl%Oy*bNzVVnq)A!=Fk-0fvjufXQE*EG*b}ojli&PF5Xglr|>T8RO?`%4j z+re-VMlpARPBitg@bv5L&z_PgH~T`W7WRjanjy9y7)r&A@2p=D<(53t;F zC3eOOF*k2^J)hoc4&>&QZ?I5~EcI=_HE<0TcTunaQ~Z{O0`|)9Um~s7GB(((KIz;D z>{-e4DqevmMCRKcY-<*q0iKsYivgRXUjwQk3|alY_BYg-3pf5ncONT{k@zSUr@m>s zJN{Yrn=dAdufI1seVZe2Ho;VJ)NzB3>FY$VOCywB->gGNiZ3l_cjKRtu0C{ig|0nU zTmVnN73fY|bX4;gue0If&A$rxL2CfV3ITcuPKeu2Aw%Sj(#2 z-|maMkn;1To@$$~X$7)zh@Qsr`?W7xKyE02fK99IV6EmWrwwh7c0q1-^j)xZOeUaJTFZb*i^u*8>G|Sg(Fy;M^~NO?xg9HL4B>piBqFD z&4`y7yPR^01Y=UU)UMv;n@L}8w-KM8;ji(O@7{tdO+$IF@PEyg$Y=P-0mJ^!BakloqL%6@fbt~ZS+^NK->S<#^ag=e0A_0U zg)Vxw`m@xQeNxvJt?!$1yD>w{C1I-*ov`&g^?#iEp}2r}4_k8EyOX z6vd3(t|O(=laA|(_3u~ZijPbE)nO$9P4dgy1g$DrS!15_B!R|)7qtWrw7)xs7HiBG zxy+=VDxGlIKn~u2FURa(#-1w_n4&oPOm=$ z?;{A^_sro3ao}__1ZS}e$9_%;@E)_~QBe`yHG3y)EM$$i`)9P)aLoaEQ+hf!ojyTU zRn46;*{gR+=vz_55SUfp7MCv*?T=*{_Jb#H^;_3gTjLG=9-z$9zXNR|cqqkKh!Q42 zaXL=4f2up38Boraw>{KtXYzUx3zeQ|()5YDn3IccneTR=pDC;xjkE>cXFIMGwi&m^ zykOjH9Sv)H`Xo&)Y1;#RmJ;Q+n)-iZW&5%{Aqu{!3kStWQ!U{JCbM|qB_xC1IwO)D zYk&+fYk5rhKMyspNV+fZIORHgVMMa42s@9sj-F~7?F%fnBxkzf@_fm@zKMrFMqyqM z(5!w@Vn3*T_#;0_n>9k%`8|1YuK6k(x9&5MUMs^T&>@7cGujMwRIeQ7g3egZhb_U+ZtV&Lh-?8%*$8p997=d zk`{4Btf6~LNb_{2$mk5Yo}mYGNpI}VIL9Uh`c@t!Y2KVqerT=65$IcNTeyqe=X{^* zoCr<=26$Ql(4m%ewRQpd(wjQ#B{1evD3bLYOrqA zFY`iCt$VIxPW|BAefM%ynra_p@}tAN-l&GE*mQlwu#LUtTQYzCV5ZL>O6E7P_9@HF zlMk*p8enJp?Q|GllTjPUIg5bJkyWU<5_FuEV4(Za20x`?_qO}AeT*^4H+i6iU@lLU zL|HQt6@EFP$e@lZp9(*}U&F-|uL@DikB`+I8P}Wgs?f3{JGGB8lnwgHjfz&)Vu&y4 zpCC_bo4@uQCZ{Lc7&kp^FJ{FJ+(pGBMK%Qv>jMKXj7?uv-(P}mcRFri>IW^-z0|%P zB;Y?ACON=2mm2$?@@FG|=9!S6M{;CqOjZAk?3hJZ8X>x#QRdfX@3N44)$G(3R;7Xk z)8lQ5P%hol^!j^bO^=bR$y-dc>7$MdY1O8CohKsM*4nK5^|Uz4Z6Nt%a!RxV^c4hj z&@8a``h;{s8>vG9co02Oh+{+%HIX8Fu1>VpeA^kuc-9PYi?ia_rhjvjWxO9JroPtq zcyPA#?3al2+D_42nLh`>dRjUEl1k<1@kcldr91hRW16qXvwF99>+TUX8+7|Y$X;-$ zeWcuiR26O%_C}mfjW|N`TX$}b9;d^voIt@JTOkZvQpdsz(|w9VjVIsUFVgWpm(As# zo>UfGtPy@L8%uS>pO>mEPFkd!D$ZtZ<2={)YaKr9_dnwvDLlkKcE!R0d9CoJn>HOP zq+44Ov!^Nwu?hUh*jC2zwaL~h)|u;Eput)3VSLhAYZ0^2hFDtWl(^3Fbiet6lMHNW zdF&E9H?ppesT^O9p2AUE5dmUMLcH!hM!N zFzkBdbBM?8yU85J&T694TWKHJ+ihKsIATuw%on}b8J^7u&iCtxzdocsa2m(Ff9_|W zHWEG2OHsrv!+r3sH=Ct2SA!{!nyc!#K)KG9UPGz?t5MfXZELgN1W)}R%j~@*-&Y1q z*EgjoUv-2SUjORZ;x*s&ze~EybC>3?+LAj7X~_b03$6JB6Wwid#U2);E;*}=Z-2mQ zG$^K%YsFx(!CBb;nqQ(yb}T~r1Z3f4XJP(-C;BTg*QzL59gD7DQrw5Xlnf|C!r?*> z8WY?O!w9o(BlP3gmWrRo&6_r8`+q!Q2;y{CY^a{q;ArD)VDaLR1%w(f%Z=YB-Z^sf zC3!u+H-Dy42XiAQ0)HPaggutHWHk6xSOhpdpw5Srl&}SgRKHjxzZ86$I81QUK<~8* z)x<$%53mN@Bu5y0mS7^qW%t7Ik{+Vo-MnQ9X=!#Uh)_^2myk+c;d@P4wb{yF!y$p3 zOO!=q_*|+(c?nw*)_g$LMtL{^k=9?Evpx<9Wjc1+IKb|asc?NPi;IoBM;e(@%5Eb- zAkj76>wyfkc-)wa<2d&}joZu3L7)EAnO>ya`Gh@oLD@S^_~FC)?Hy+z*$}H%_qcwb#MLe~hGBjQ4EoyGr`9%a zmMB}hWg0ZwFn6I3o?0+C+bXMbEhcBVMvl|3Qw2(=i6pXe>10dd4eYtwhR*v+009X? zUhc$kAM8J8#sUak##JJSlstk!q|Yu%ZK&B^HJsZaRhhL6j;L*u;j+!|7_?4pD)e9LsqaA z4TC!er_vhMjFg$x&LeXS&^c5_OGj6&YvHghQV0i2GofHN^=Is5&~zzYq}G%Nz9lY@ zwmFCXq_=a9kXjm=Nu>IMQF2lEIi)VT1dxxSsWsZz1@=nLiDDEcI-{6T46-p->*_PR z5NED#G!u%dSX;7t$ipIP46|HVCxx}Kxlm6#C>mb;%M8U+`tIaw&Qx)4p3Do1EYUWf zS|bWXMZGOEqbYLN$qxqS1LK=n;6p5R?a5wCQZyq^qjWl5wQ>8h$;_|iqh%L|!NP>mituVY!knV)QD)DfG^8Kx0<$3~&ry zw)12fW|Al{DY_($jTGI?WJgB$j0mi7vLO3O`(%FBn5x-7ILYbw~FzYqgOLJ*IfClvms;|8^G(TKz}VW$eN!IbY>01DsB69c9$R0=V7QPFg1pt6f~ z7A_wtKNJdyjJ&?mm!tTl$`35B`OwbXZfCs|3gJWrts017Fx%f**0x*oEbJ zP8Q+-Z{(B^&a23*hJAx$81&$-lNR#9om7F9QZ)Cg9678Pvpm`111jpOQn}jc^2S0N zg_7lN?%9W83y(3PTA+EOT`nbHA>6LTJaZw(YYN2dPr_uLY|8J(0!euEq6-vNhTNkm zu@6Ms=c$Q(vEp#dK!kZ3jY2r_ITi-#FNh;6u9gAQ*BG+vMWhS4_-?7>jZ!p`p3o`@ z!M-DRmS`ouI>su7##Tg2%V=Pe6p{QyJnoE!uwVV_&Fku!OyO-MHT;z=ijf3CZl%DB zm0}Y^U1@8R`SEgob;;3fnG>1J>ibmHp1&)I8`0cI4P+Iem$N?2sTip~`o;6J4seXGueh$fe6#vR0cUtSIe|)lw~z}*#@SPD z;ZkeCs(6Nqkl>M1Tao>s%su9UP^UFx)JKVS7B~ga)y_5an zPY5&7fii2|13+vP=H+&|rJ5L1y{3ru9C{XbZ62Xa6vj{%zwYs3Muod+Mxz;%m!=2} zb_OA7BSS5~h?2jS|Ic52jQ}1u@Oh`uI6{MJ3|acu6bqIdzRnnhxt;I2>?nqV2=jam z%OGdG)`VI%e*hdPxkC^clvWW8ggJ6`*q`Cr`64ua@&c)n2y=Y+E)*H77}wJV}zqFx%{Ga`-OLd}`+hQvqJyUP|%%B4`Xu_7piZDi?X z0+!Q&8p|f@zl_>6E5m}NQTxx}99Ah9nt&}x&R}URNSVJ`iA0HtUR3n1U9_=eVI5HrhPbDp7*$b%ad3Qau-mczN{_}ed_+UAgL{vwV_UO}MnXrt?rSA9oFgI=Gv}@~y zFYCQowHfu;F;a(A1J@9SO)n#%;LqqV8Ti=I$c?gkw|K~Bk-v5?;Zg_1btLTl`?Qne z;^oYfo&wDv-NJ~45!99t*@oQXK+J>=RVdQ<9s@_$BN>7X^XcJ+nc^Y*91$!an}dlX z?t$fZ=wtB0XITPYLSnG+V3j~?tXrKwCu_kGNk!>Y*mDDHwl3LYdCyAz0y9RK0?7jn zGrnzHMNyY?Ly9@1LZ8vY?}MZ%>n9s#swL_z^WC9R!4a{2p&bew!P#3?gqy}jrYnAN zqf29jY6^wZ4?Dr_B==)EVa?(JMG0%$NHUU7bVmBK2Y-l=lW5h!?XNbi%oXJRg4eeV zxPA(y@1P%|qSVsn;Un^Vw*{G!OOGyKzC8Glj;sRvg6BQ^xbra8FVS06GiGK%8$`N4 zRJ4i=ZyPPC_#;LAggO{Uq*AJ^I;#V*nqGntf`swd}xx|yVh9C4>BG%gDHV9+QHLuu<%Y9PG{0$AEKbxnIjn9+S zQ)~?n%r%+|%WPQ6wKZ%J#+qt;5X$WhqZlfbxki6FyyIF^l2%!CzsA^iy}{qHjfQ3u zdFD=t|G8KHbCgW<`(*3S7Ky~S?yVw$P1(-%)A=pn+s2i>^?c1x6%c=6mLTd?IYfPn zfo$|iCslvQed2umV!(UgjiQ2?Ali>Q!;@MmH)SbzIj|2u)Ckcj8f69dRvCE(ofQv- z8^-Z+K$y4b8N1Lvy5=ULj#VO~%`qe3-Btv<%Q7>=IP1~Aw-`LZqGGe&_wr9Q!utC70hR_?XtcKMYFlM z;>zaxQ%%#;c{{IKYOQxQg0tM*$_f8Wy}5-T9SWBBhY|YgK`C;%bZ8+jZ5vQ+MqhF2 zswm6e^|UMeQpW60oX>mEPSR8P@npQ-kh`pc;Aya6!mJn00x%2K@(P7pP+f8@W9R_w z=thNTMd0W?_DQ%tJed?u@wGDoo2Ic5Bqu$l+H(ub-;Gwj}NtTil z_dtRtpKnq1k^x_qq^j+@zDQxwRwc^SO2uB4hzi(n`$)3(Mq4==R&**tsm5BirT+ti zo?jDX{j;fSE)a}wUT$isj1OPRYviJM_V5Vd*Db%_=JF`YS&SAOIRDho=G0u7=^`;9pe*U_MZYy;JT-m!Drf(Z z!!Uag&3%J-5zTN-Z{hGuGWvQX+U?;}?ymk1=PLOD;7T%A4DT8TaI;EZvDsZ&K3Ti7 zty}kwM?m%BQJfms_pIb~bv{|wKJXbSd+5WCFA874;jo$dup{(Q^17MYZ%jM^*qla|555&Gl%;V{(d)iO}=I4de#;6MXvub zf9|>%ae9+!Cu*+75x>c?o4|gtcvFXH3nP>X2(hiL;ef%~3v}>{IEb0* z<{I182q!z7aJ*S1ZSJ%S^7xWO(xGah9i(93OLy>!ueRCOmP@&n{kU>=Wb1xJtLbg* zVPAHPFtTdIS;zu;RvBx9R@VvD?%Jkj-}sLlz8C-y%gG9+30tCm-z7Ms_j`o_-EmUd`uWUJl{gV?JK2k)9w zU6N7 zw|1;?;)sG_V{*2!f+4=TEM{p`-v{La7&f{>+Gbj8>)7U;w#kQQ{~D;RbCvC+z5i~> zWOs&7q<#K+z`5GN?BN;DE#vMub$)v>?DL{X{Xuts&%UyF$9a}WSm&3fd}^BQ+B)^B zDPUAN#La82|Mau-GPkj~&y($N`iawJYfa>15<4wfDjO0|rHVo1=Z6~ehqOl#C}4h6 zCA+0CC13AM_25#j?7l}3>~$KyMS0Y9+Jn$PcC{!$L1xbl(IC<3k@djkt#~QpBNs|Qxmkoba4r6Wa+v&oK?RLsj1ENP)bj% z{VWrBpw%Jvl#1jum9?xrTkP8btgIF!Akmis`lkI6EZn*>kr_LRJXzY`sup=W06l^B z_OmF30`s{{h&A1U##&YZydZM|DtQkdT18tluQUg}eBJsHk51*d?=> zm0UaJ4P}|U8ZORex{7%&xhg{SV4RlX)|FecGpCZT?YOe1Ur6aRvbLy!$NCG*J~ThF z6GZeAfOd83)CwMRm2UyVNnyA7bQpq`{!ALO7m0$8{V|s^_sOiG=98CS8`?r2-`_X$ z-d5J0coJY#mW=SzA5<)AVZ4A5t@VXI#9{9`KA<$RqkPU2av8*YUe` zg)Tl#4`OR=Vg$XbpcCR$bhUt+Crw41Kkn~m#52hpdwG_f4_S(A35=Z{)toNPXJ?sG z{cV~1RGk!g=WlANYvquq-}M#fQ~G=DT{ahXOq-rRHwN02wc7{A|7X;6k?6_JE#z2 zsEf)~KH>o<9C?6Ov&n04$37P5MzDkQ;#CgRenQc;Bb#pqyUyn9c{*C5-FcGY$?58h zx<0MD{Ps#C%3IywiAHB{_))OC_GRu?OC6}B`7}W%#q^ky#NU7;6{!cmwn6W|cDn09 z%a5|L&3pKV9&Yu(wfNlkG5y~1+ee>(o(&hAGFS# z{t~F^;l}pInd&s6-e4U3F!(`m&ZQ$K;@fn^L06Zu2N;sU`qfhX++0>J|E;p#uTyOe zV+6X5m87eCWxcOs-WH}Pm7ph`zkwf(`{)lxwgm#Hu}KUSZNUpoHUCy=T1T0nvgWWs zLX%co!xf?2)^G*;r@i3=1F)jDc{IJRmg=*mJl~{1ms_06|5bij`+$E3K-YKph8>26QSJ3aDkzsDcDq7<7m9wjsHJ-G0Twuk?qbpWaj_q zzW?sMh?Sa5=GBP*tm&zSTK9F}%hn$UWg)d$Z=G&Ej6X#W_IiJQKG^I2X?m!x1omD5 z&$g_=t~At*2Vb#=G>9Pad}mG~HlM@&*Y;__@%0J}s zNF~Y)B8SfJB*oyp{}AwBL9f)_U-D}DZfS~%b%_L`sKLJ^Zk%7+yRmI|KfP^-$_|SU z`8fbtI5bCe8ZTOOn&cSO1=j6fgzt`zf{(I_n1Y;w9KyEUMb2JbO$J*6KTr_Ov&?)rxjg#MjmYC=zD+$vP_ zmqbtv$6&SpDHT^cu4ML;wLUSmaGc)MjD}4*l^0|4#46Mvlz1#t^K#tj2uyg9zy9*T z2}}}zmjliYfN=0fu1UEC&)3no>~q4omlytn`45QY5d+aXaw&1d0@N2w^iJau%5^jj z`e<>~T62`(|C_HF?N}wbvkDzAr*sm&z*LbkY<*z3gvzkRwG8C73gz8@b>RTmPLo5) zD*X?{Mg`blf=+-A6-WI;jQcCNs)7O()L$^2&aS0ahYT~OQ=k6|{2EIepn_HqPV8t% zx#R+_AP%4fS3vU*mn-=sgq5kF**gla^f{vxc~XVW93IB`Yq@g8Pa3tc#Dx>GHGqN{ z^4b9;d=I{yu|9j->a=l`z?XXs(HIUFX;DA?+qq+T(eLa$i^m$gyo0-(*v+*?Q5?1v zmd3JC92|@DxH&9BKx4;$@x0J7oRqx^$RSS5iGjJF5DyHfVfwjPf_|Z*i(=uH^-Kdo zpqbhIbFVA20Q4yiqNxO<>&u5`R6W$OM52C(FDz!8OjHVB`2JvALNFTZnWfG}lc_xB zry2h+Earn5c+O2p^_3a62R3v}Q~=YW$rZK9CZN+lkteR~-$K8Jel_3WL0FoZ`uwpD zf>971tbiQ9b{$hsMc2uVn)u-u>vF^P%L(~fikVZii@SikDj+=-y3T+x#Cp=AT zf$EaNW1GP#m)DHju9Q9?r;M?sr4<4GZjSEXILFgHGR*ew;1)|?J5q* z@Rv$J0K1tQMtxd}s!myew5mfXJfmuFA#IBaR5C4qnjkUt{~upQz6icmwylljQ~s|K z*=+Qn{O+aO@K_mf0T_zUoKib$)WP7WBUc+O1@OP-zrjmIab znEY)=%#0tPb2yN~%Zc@d!2(9l5jw&Gz9?Q(!f%T0@Mjd}bitoS;BbL#&}umF!&gc4 zK2Wz1LM`QQLt%FK2jD1NgTq%R(zZYZtLr57DFLxLB@F}rod(~hkNSI7-ruf9&jSpK zDaT+r6hZ|++aoeW%(T1%#mkpbfRV%UmX~*Z#Jv=~L(SZ)$?rU#4wFd^+zl04ycoF>H$;GJYVVpKrpMnAc|6aPDP%i?t2N;+T zOc*QV$nqg@kaI|x+5;X+K6jfYD54wRI1h*ZG~lalO$kH}i>_HYLcZhv1K_R+I* zw4emw6PN>J4>x!Q*=5Ih2tbO2NTTHE;6hp#xXC{DH;9nLC#QH?P zF0_W&FhOmejtmfXTh9p%)Ero548$WtQILeh1hRrb8Mnt`P?JN!Ykn8e%8A9H*4PM+ z6zbHG>jC(HQ7{=ySPgJiEe~R?wHOho+w6I1k}9&q(}_C`NLJyFV3D={6B}-;QyWFs zIx13TYUMjwywOre}yP(psD|kli0mKE&7Y> ze(;!S3?L#HI1c@S_a6)f5iH!z!fML(V9*!JPx<9WE~=4L;WMf%ZM5R*1IOWC1;CDL zuv0X!Fv^XLRP);Z6^<8&zo@We(_$+Qkd`eAVmTKYRjK5MF3JPwAxDm5W{5-qk*aQL zz|?;(@blMwYElU_Zi2-X-XJ2nogn~X4;bBHt8X@b2Ya3O|tz>mdl(`E&8A^<2eeW+i~}c z+&ci#pEHv)kW>1Ab8>FbbM^LRjz=Ei7*Nhq+BP_|czsMz+6G`10?UyF=1pj2HZgX? z<~Z&Y_sJi;mx4Dyso<;si(1%>lkmzv-y?g$bOvtj4BR_4a6~sPF8bL&&m(2G?I^>< zg24+x0enjX0G|NZuu9G~i`aI@N8)W|aaHidU?%?H0PF-yX(Z@vKt#JLEbGo-5CMjr z4A)Dw`0w(a7fwFlR>;wsg9ib!Jpk3jk4p+a>mMfag(PP2I+|e9v7gt@W5}^bB-ZuI z;)aGh-!Z^ow9VOuBf1jAP?Dv>lY#Ip8=nZhmT)Evh4o?3II47Igdw!*B0VsU-A@^XGeV+l83x)qYReQ-;gs- zFxv5e*!!1cj5%SoI&&8YEPKVZm;v}?@1J+BV1W|PVbbio=!U^FxSo`ZGe4vudmLhq zqWKa65Xqtk>D}F1coSzp#&f1M?UZ7pFileY5JQ8{hONw@z6m$^RS~BFyYpXo(||gR z0Jt779zc}l6KEJG_o*rRWdfdqB+dOZ8B++#0ssvVPGmlE;+;C^)ry6)g*3-cofe-l zCj(ohzOtEj=Y;1YNXm?gl_M*dgFRsv;fW%*B-1fY=9mSr_Pi)VFauzY0mfj`HBpHr zX!~%0fZ)NT!6eQkPHA9P6md-4Iy*R*IADm`36bo71MD^~*e9|vOB3#kS(0UvWy`rK zPSj7=_zidsc;*BtjGj#m`zy2Y=42FBn05HAil8vD0J=y10y1a(J+_E_Hc>onR#F*1 zDH{~R65;KTk+GWug&>N~Fk>Q#&H$M)qo!lg@L5SkK+n|(xvZr|Qi$rmAkiN`j)JVo zm>eU@#0Y@w(4?6-LW{3C03dF8%!!j>j}H@{AC{!V9}y!XHA$qzMJiCbC&mv9?IbWV91j&?ySWez@SpRe?6&{Qd7V62n}AACQD86N2*N z9N5vL#rtMT7}%{4Aacqj?Trsd_@Dv3@V)TDkOb}{4#|jrA<`rd?F}S9ZG7?!#s4|` zx1MVhe1QBh+hzO?Bc5LT4h5bbNdK}vZ;=jZH~9xVgv2kW9D)&1hOhnq7l7xm)L9Le zk(7G~flY^e*qyr@XN7I!q4D+Gv#wM0>$375r3ON{k6inMal0hP|10l*r6Oj}T;m~S&p2Qqss9H^&fweS>_Fq&83361)$u08C8uHG z@CEXB*zie&$;d5&AfqI6(BRlV$@KSv00_biiT)V2cdq^z1OPVO4?`}O5F+zu$A3d& zJpPD9e=gf6p8nj3&!WbQ0clG89BexEfbGfq-F!TOw4MKiDoxN!7eEE1M}q{Kcf84$ zzvccZ%ocwxZnrU9NkHRDKo5phDgL#5=M0F~tI>bLmLZUz#{m%Ut&OfWfA#_s!c!e7 z6x>_PcD$H!Ktvjvc0i0O2Zk71aE1H>;#FJ24+O1#WJ~tzA8cg~QM5Yw@JkNN7cR^& zMxuuPj_T7b^cL&bF0`(hQo6-TOQrL!w5}g@1uW(PD=dwT$y{%*xRF&tfKGRx$tfI-~js>BiTR7TRTIWzj z#Iu9~!A0-|&{8k6F6weg!t;chS%-8)2+UKKKA%VTHiKhj%TD#Q;`>y+b@Q5uz6-Fh zF*j}-MMoud5P_8Y(G!Nq^)Ltu;m{xf!jHUPC^C0Vin&(8sJLz*sUo+7&@$3YiYZr0 zzq!$>W{jsLXgaf6%b87-syObV%N0ri6vShPySQr+sN8mbF=i|WD^Kh~vSbhgLoj|h zglA-unimhRgz0kq&CsiU{*daKLTa-f0MeHZY!HQmqRwJ{zP!EH)C>3^m_mkGgkVf; z@3p^jG1|rw<>5`LN*tBtJ1@+%o*rXz^M0L_i>p`OKL@cpXaY*5)snN&D>=VcN`Y>6 zQeMKGKQg$~DKqgci^W%4fix%Ui7s|hJSXZ@AEyQSnfK)w364grax#NqBU~(aUCKo$ zVKdMx#N)d`n&4an?tqs3M(Rzsf9G(O^?~`OPn*Yr{P7af_q?1?xsn(;{wwj2H-A-T2}VlBMg8=HzWd5o$m$tg8LH(h^eXqP{qjN zirsGK<+4`4$@89AQt@9D6ldNyBxJeKR%eXT72l4+iEJ=86Jrk zF;2URa(w?4iFgo{n*r`o3;=oPG5W4hbdYGt-Ah+2Ge$E94+xN?1Y@M?Ie=`*03>5< z1D(KiV=xgZE_LL70gFv3ftuj;2)^+o<$ z#KCghd|TRi0Ph8t{H+fZc>7@Or+@B?*K)Yz}ZqK5uSI z247N*T(n+$7No3?7p3g@nVHpEeNuJ{eH}@8y&jm9eEIG?F8}Hlx#3q7dUv-;b=}i* ze{Aku&*o3UjL;`f4%=J3EZA^JP!!= zyu8fh^}ODmZoRs_yd1i{`L-+8y93U?N(MjXrMNAb-pe(whrW(eNj@Ea?|GiNrJC1& zJ=Xx9CV?bj8vL~6%dO*ZQ2k^fm-O%XNtSx-w)}t)x{%u3Uf@tCq%pX*tb4lUbDqQ> z`CNUo<9?UjB8&+;y!B>RHEse;SRFlv z?$0doTyrd2L5zp+5?&P_%%iPl^6I_~ObN)t{+_SNBt^;(<~R#RW|}K{eu5j8btvC=P|GzUPm+!3fIM_502GVrw4#yC7Z%^Q0_wHNQ?P=qoQlWnhIv_(dFh!GuD;j(vqlxn9^o2 zXXZE`!y?||-peB1;oeIl-s8qeAwJ;xr2TG=t0|%d;vALaUvW>_wGg<^)o}rNSUkiu z?TI*W0yAm$=rap#HuLQ#UGB7f9c%8i(F_HR*`34RA1^Ldb+CkHOaE2Ye)^z6ds%Kp zoo1=ypg|j5eo-h_r^+A^*YshC0x#};0Yw~o_Et(9I@mHbPB&{SHO^3Jh!(FUS;QTe zOMF_d>CP%iH!wxn$Am=%U+4fZH24yxRiR7USZ4WU&_|g7pW(Mbd{B8Zxzh7FDL#cu z+*4*m@%hMuJZWl8CR!4%o5-~IH@WfRi2=E8T@~0(e*Q%= z3l;wdz18wRf&h|jPLTR9@MOLCEY(|Q^Mz_*O@K+Nk@uizbCH*|Q3tT6XfwAaTzjJb zW+N{Pybk*AJ%z6~f&=n_K=*F^1_$CN%Ln+GDSpP6eNr7W06od!S?em=z;q8!%tlpTCIXIJ;Wwh9d~E1)b&<}!!4Mjx=2`O34$BapmxokPk! zbYvCgR7!JCf~RoH%Ui6n7}j3sM(dU2fI)*|ql(`pN{_dpb0+!e50kz%T!=E9HEp0W zf;F78GLm&71_OepXl?KeH}%E?eEwTICkU>){+}o;7!_#n_`O`6CU`@8c#v~u3>G7u z_l&+>xolmUd<4oR?}p~QLjOHjaeR0?<(-r!w44FGVfXSV#ku&!iCbj?4EP>-aiMkB zGD_;;>CIoOFlCf4K+s+;g}@`Jj36g46)`^>;gec+gTFt!(xT_acXP}(;AhJ z$HXCS|M1|6L0*J?j=P=mFau}Eq4^qL)G0xYWaHb|9n<2NBd+Kv@D*xrzjipjN6tq% zLOOW9=Ei!fB9yaLqc|ZIToy6r4!4^)1`P8e|IC_c_sG{AO3oL%_C6ouq+E{D5L$Nx zI>~KTppm@2QKMO-Q<-fJiw^|yU(f$) z6M1}NTGdzKr_F?%PPdBDIyjKDsx?0^p}a99E)_Sx|6T7u6g(0n_~Wa$Bx<++*{%Ex zQ|nS;g@$wNjUiTZ)u2fX)jLV_NIIm`nfaG!F&O027~i}k~`=!QK7K9Ov9PJwDXFuwOhTBKV4nDnLl0mZS8rJqWbrp z&x=HAMcFzrbQKloNl+bIzdcVZcQSBLFUQ}{uFf9{GMw0jC!j4_KWGMYV$AXid7gSN zJ}(M_B^r}(;o8M)e1jP)46WW@=<~tN0jAbu)3zXFQdrBqQ&JpbECV{-!%=BEp~F(s z$anUMK6wly9sya{;UX&w#pT{qwf>6%BenkX_ZI@+$hv-g|H5sjK`JF>hicRqep$@l zN-#la8%YN)T9Zicatodn^;!svzL);~?zfj|C+w8xuafY=3y=c5=g$399a~%uEGhTu}+{vkuQzv z*nTn`lx5_g)x)be3ig)fVTw6s(A@(o=hKzY89WrD&MT1Icl{z+bjkvRC`xQ$_c`dj z)C~L$t#7%;5rW9mRG=1c<5`EPq-HCQzM!HmjMXckE{gSsN^-yNVf$I>ClToJ^h*L!+=Sx#D2MQ-h)cySI zEhyxYE%@WD*SCO;<#mH=Smp(F%d>X3_}8|0qZ3N0#_{E%eZK&-Uy-JJ42(b9)Vn52 z_MZm$CRV?DgD#mxUU=-hu=Kh!Gu(iRZ7=P#P2rV=Rf7|0oT1f7+6X~j20uSfG*y`L zmmfLopov8dI6+?!-a@6*;0UR?7pG>&||&O^$Su4j@n zHQlQP!K;ial{@H6zw=EIZP}2HH;2^^$|rL-=AQI~$o{nqh%+TH#P5;k zvUm7WH4_0Hcits!4U9jJ>Hgs{IneJh+HzSsWxpttM1P@6l~`F)(gnw59y8Sc{g_Vi#A(RDLzLWh}xYVCEzL3@Y)+{njtfb*XoQ zW&M5Ez*{7TTN_Uq^6s%U3XdWpB7!{b4Xpru|Y)Fli?L?Wt&Qd}T6A4Iro* z7YCT@a)UIZcyD2LRg%|fwbN5p`4E+yXV4MvoS=h|Ab^4t?r*&awzm*i+_&m%_i+?fX z9Z3hBn)u>sU9wLPCL1bma~UOu(kc^E8CauQktK|q8`GACS^TB?8}2Ym+0&ZX21M?< zlgK6tHauf3w^WL@?9E@@6y<6n_xKO1@5F~nPY{c%zZ6E7SZd1-VDq6% z|G+MNm$rcY3$2k0uZV>dvB6S1MaJNL)utrMOXM)#TD(`G)TjJ`vt%X|!o3YKbLv?0 z>R14^JDi#TMLYb?6u`xY!wDr2gKf;iuYrMmCYl0patWk>@Li&HLrXf=hDTcFilo`~ z8FJ?C(RGy0F5BYvGa_?zIYLEd5i|yeU_8^q^-_ZriajTkXt_DiOJlgqYm^NgsO+vDyXE}&`Y$FY?vgDbbsfTm`y zRjaDYhG*nnOh_xU2q#7phG+SS(^^)p(#Sp%#Ra?gmaX;FP(xE>qA!3Nm3E5AFuHCa zpeABrQ|#mBkvnB&FbWG+_zd=2P=z+xN-q=|Mc7qrSVJ5R>@+``J{o$VsEL?ZMie2C z<{b7?;?ne*IB>3If$w2f+{*TsIGWswG=HEHuM}G!n`WAZUPSIlhN(myMm9_#3KKN7 z`Sw6%uiBjxWUr#Ip;-*^34s=q8otCPm1<4NO<4HSEzz7Y$>hi~dzHTDW*qhvgwc!Q z0i~{EUy#XI$w-cepO!H_bX4Ay zkFptCP`MBhFJ8Ie{D!AX-51MIwjdfmUNY5%y{u@$KY{-xiXBhM03knzPY5}i#N#GR z8gI7bT`XT?CTY*)tyISQ1!g3&A@dSqXZ*+{OYA^2fq2+OMie>3&v{aqbku7I=T+1K z1W{M;0Is^`o2xFOIwCrV_AkCWLEF66zFx0`qO^YTK6$hiBAUVxTYOz4rhJ1|>CZdL zRxlg?3)?W(r@Gv~r%q3$v?AXhby1#863-uyG#Fi5`@ie0y&=Q#y!QOQIJM;F3e}!` z2|)UuC`wz18weM>E+V`&E1kU)nt06}I@1f=2y8qR_8pYcqBn@(n7$(jf%zr8m^kUw zK#ix>X-Bs<+8Yoi^ty!PhKdeDkhyEondi}+>k&c_>4FrHPOWjVH;h$8ePl^FY{%yw z@1D9gwsCC}nYd;aCio6FNZOJM`zO{Fg=GbNPP;QiG69Eb${uSwIq8KZ@toT=@%{tG zKCmYmOr_Q7vjyD{fb(8^CdS(qphfGXHx~~@jI2;h6pkg7?L))ncR2E)Xk3%>`Df8t z<3T0>(|yI=9UGoOD|}Xr9;{H6AvV)HlNu>Ca%>R{w~c(O@Nv(gvnU)Yor9EqJ>XB= zX5B!>Y=^|XkJ3Okbq?>60z>l*i}9pW4?Mn%A{i*d9KcG6M|3jORG?gBna{%?1!~UI zPRU~E62a*Q!8l=+8o~9=Lh9th{IRf4VaHiDbul2P(!vR0Umpa918KH{iF+K3UtO?M zLW%30_dj7g*?gdUNuPfGMNBo4{mMO&;%t0tlbU%C7xQ9qCW7sqj5d+wzvuCk3>4cD zYh9Fo@9c)?&Tx@Fizl9YB;IqIPUySY=L5FJW)sx%9sp7yR`3h5;L41H`77xvKUUwnJpKldgS$1lm()P<^h%Vx2+u zw3C*eCe|xPHxmvGYo!Y%+}A>$`y1(45`Jf(dBmV8{Z4l(A|6|s;Ww9!YU1-0b`wVF zhUJDUa{``HAELYgyjmNiGUVvXjTl?2YRSQ$^EuU_KT<6AGPF6QeyW z|8pyPmht%iVvT%YPfNUsLDI-c`C-svxp=8Aad|Rdncf=g`vse9HYmkl$ERm6=gIR4 ztBE%uR24cYbU({k@eqNscFPOpcs*&ekp&H2M zZCtjvKkA3H4I8pck@t`5!%}(=7o#R~t{p$Y-wK|m&P5ZxFsH*vE5o#!LI-v%4!a~j z`x;;^Ge27xIWg8=YuZ79f)Mdwn%p-wZ?Qfo+TA zz<|oKSy0Q6Qhe$3g&8#TJG3=(un~8p8q3FNyZH0I=*^90t7+?Cri~L}Xyv_^WtPej z!?F>lLF;t~P-?m`0;Sz1`G8*&5^2y9vpaV?AMVVfqyEU0T ze{x^lz`0$9bVjS3joZ#?+0P9vqm*tzf-a3VIz}V`2EWpJT){_|rjJTT%PAH=#J(Nv zkr!y~$~xWmxSSkA?ba2`64{qOW{t=E<=Fat^M3Tzj_7y*$7Y1Q^T!Yaz;?J;<&!6D zU%OX1Z+P=lVVtx2(Y$5)CbZr9)Auxts*oFsTXjmSo}m?7JN0x>>y3x0))vjrUooHO zZtgwDDyp4Kahm}nCrS6ruCjp1*k_5xTLU=>+g28~ghIMM3V&h#=8p>Ou&=x?qUC(F zlBWvjD?816b2P2-Tny8709>s+zQ00af9yoX88k_mJlgPH%zva~%kvtMXfDjTWVgGi z!D^h$bv7Lbpmt*dwVB`b7n`SpT(E?FZrY0g`V*{dJX^-y{K-(($Jf0SZDFAx(BjDH-SZI4-AEKFK&8`_%70-BH33*oP)07U_z_akkS9Co(r z(Jgx=f9qXd*Q;5oLW*vLnT5rJFcr3bj?I-AYs+|T;CeZx9R2I0z1URr{jliv*~Ums zcwaooPVTAg*>rJ|>EvFDPTtz>gTz#}cn2hfJfV@+rgBf$KU)~;_X{?s>^L*&Xtw17vlwC)84WVof(0e*F1Tc&Rv9OMc(Z zX<#$4*tos6$+oBXlC5K5Y^YLWbDDJ2tY-=RXx3!ov^>HhYOA6;^zCciQ;VtRQerx= z*Jk&c+%&K0wES-H#mOm%sr<)J#V`blQ1ZXB$XgtT6y;J^d>rqXYjhfP4q6129<4Nk6{=$k_ST+Vmi27nJxy~XnlH2P zyh`~_m%bgIX1v=j(>8So#pfl@RC@BQ;ItpYG7G=L5>1x6n9(Y~lUt}Q4d-Vc+ ziowvGa-|f}N9IeJ5tG*uV%mj$#uOhM^$kHbiK!+Lhj2jYB$do&AWTe=r{#^)}l7eHoc7ch5ORIm8=K!2W)b z6OQ1_IBLu298<+=OwdY3lK9fMPxW6izB9hl3OgWR-r$Fv-~~kWvrpj6^SJimk~$Yn z^GA;H5(`C!^Jeo#p7RiMMON_;Ge%nQWbvrvTq~t7&}N|WJ;1*p?&=+M; zt6w^ies!oRZ_Hh8Y3Ohp;Z=(iz?iOq{Z^5zfkHXuoNGJ7mnT8$UB9}**HMu)haTzF zt#KI=Gt#)1TMSU*a)0Rk#*%Gf@r66C|I|F+_T-ydn{dO2oL2goEbFB>)i0vQqU9kY z6l?EP^&dO@!tYS1r7lIDQNEZQd=pb$o_jtXfK}Y|X%B-Fz}{dlfkrg46TcCC9jHiS z4c;Tp9V~@?1m3U>i`kzz`8iIuyQT=PYTs#(uO{!Dkbt>X<|g?x4wZW}u#R;Ct21kg)E&Mxe$#?_8@fSSTWt9zV9f} zll`klcYSVYPK5J2EU5&a&wkvr8$n%&y;ONcHj*!^7=bBe0LizVG_ay+orp8kkQg_b zMl0FHkz-`hwjXBxYjR9x(Z`|p6v|r2Gr$*a4rLDq12@c(bH@mf)g->H>LOnviH<&3 z8LRO%0<QcYD{qLKgHmOB1$_Q8ICvt!r3Y7r4xmh_Y&PVpvPO)TVF`*|=<<_2Ya% zudunDQ-7lwxmKf&E5H;j-XW?P;5w(r2Q+gBW?8U4-N_lTDz=JUqc@?79!W*XFW?EP zn)9&GuUD?ZVLbH4(hShJ{94^J4+D3OESgPSMmpMl7_IWp#|`zG4$?(3s5U?Yn>X}|>30_;<-vn4 zNH&&K(AwD7&9KjGyGJ-r2{g|(w6%t|f(8Hl8LnB%)+2*jTje;jXN==^8n_Dv4U8Lh zBwdG^o2=UgC^nQXKDo|VTkAR3#Je02c5Ec+H8!%gUe1f(gGCmI=L*}J-m{XGh}hI8 zCOLW;Q#8zPd45#1@zJ$AZE4G=xDajoBW4CSqOW(OYBQMk|bRCtd=K0SxJG;-z-bE zNnPgbzkXb;U{(FVuUxIA-2<;7jDDw62_TaW_u7~HSvm0S z5sgQ=F$VK)k}a3y+$Swg=Z^_CP1QARG|-{QbE`!-;11Hqe!$M4X51vFA5}?BHjhPk zf1d>@*^e-1MJ&TUDuz%*XyLJg-?J8K{R8GJ;*YHNL|31t%%lOtXM)*} znnr!qz`F;w1(Ci#sH7bB-yqZdq-1NsF+&2Ka2SD{>^&Cu7*Myw%Uy2rhBfZQN%+83 zTwKCP^BRN}%Gp58L+M&%7fNrxsa0t|&(^>Jb5itqolqqv}|WmSvJo z?3Ml#=~yu9pbEiO8QQsaw11UMr!I|Ybr`3f6qq$wg`m3(?TqL+dK#?0gL7gi1>+3My=3BAzJ@PW2tK z-cuxk*Hl0Iku<>#1T83agD~sh6k)HvA0e!Apr0>)7zHNHoSeKJoz!AdWp#hY7LI)3DH6nKBk=J z@EG0@?irxz4)I7yGdqb(U6G)IPMSpEXgsQ6!$Kwkc zn^tsYWxukn1w(ZMF6#W(70?b(T!uZa4{pVWd^x+fdW7O8QXvh(H2P9IxCg$aDFZ1ig_VBh^iq|(k z5cg)M=h)1d5H8y^5>!Lb^faScD;1;Qyg=qC%Bc{Z@-_&9&-+e9hPOt=*uVayCGN)$ z7H9U;C*;&(I%u*DQHcdapD^ul-xW{cUdKL4kr@yU1>2K9ks-eh_es)7As>cqRa-eY zgTJ_IU7nkmZ~tAtyJ13y^aqMGjrHh$)cd3R--Pd)yEv?}5twid7YkK^bRvkE?=RW! zb)%*PbwHeC=VM$C!ShI~e|(JU{rt`R`NTU6rp6;&3B8*EbKB)p zsBh1P#XB>{@$_+_<-2O*gdYmGQ6204-_)9Y!RgisB|E(st`d{BIHXfN9hUAOc!yVX z01TV`I0w6uN3P>mzAVE(%My8dxEkk^acvH(w4LL+g3M~F1a$>;6+XRSuDtD`rfB0G zdO+IH+PzVR;FU9#okKl!NQ-n%6~iqI=Lsn(CNhMI!$V0Ak_eaVX-o%E>mYsthB2ZZ z%lr7IgGodl%l4^BNSmLYMmDsV!AYKr05j3rXp*4kHgxIkm4R8c-5tT19CmpVz9K_u zQK7B%WWw6f%FNwKMKe3ye{vVOCGH1Ac!j`ooUD0|Q zXVG6yfHEy9$b6e}p>4F~CwfgXTy&9gs3o&1Lu?~P zS?bQCRTf;~Sy8zA&P$CiNRd0EW)i?p&;cBoF+ELw?DMNgFw*+$9Q1Y$w5At8Au*HF#}V7eLU1 z0Ir3g{2H?L1BBy7wg)G7zg3-`B*0@^ZRHM=$sbMu-)+k%=BA}r zbJ;EwzHMUQeyKqMLx=|j8DUc>4D5drJhAJ&VBt>SW;{gp>3mpE%wm<0yFZ{tkn%7| zG+?`X^^TRv84`gcBIMd<(d3cs{6tR%NRF+r6$X9&WW9~Pcqhep$3&WqWxWl*_!sQ< z`=?-CO46RuwnG+#+h?W9N_d=XvUV8x>v^A}SRHA~*Wu~vvHVpbL;ip!GR6OD8LR%r z{9_Gd>s1I~QS5`gGw&p1-F~gqZJiAGA7g4OZ4Z1^QDorkVTSTC&n0VNH9&Lt0?JYT z0e|UkWCgw9orExcLzj5I#&&=p|C-u5-mo3g7lU~=_yV>rx9vS&kYrdOXkEHvfa1g* z)C0GhsMdGfcZXt5>h81QQ2==jCVLPwf4``Z)V5|B0wbie%}{9G<>NhM@`MSXSwma> z7cjiOYfK$Z=$WD%k5hMJ09SqpzfWgK!ZEwig!*y7)Y6ioFL>$H(oAn!9wbgJ)&1p0 zzBGbSTe{z)Dix6{`T}=B3K0WgpDX-akvrVZPoKYlLA~N5EjNAJ3bOyq`J8t!1EZ`= zu(S|kS{R;MZyW-}KVt`xPq+cJ#jkLj^@lxuZ+|%IpDFf3hbJ=tbFoEM4Om`K${Qk&vc4TUnFO|pA zglB(g{ED#7fwq!1RS4_o>;FtoerpJZay5h_Z4nWhzrZ=(a2gG!R!EO~PomBmztuIL z2%S%4n(~JWflC6IpiG)xdMQNf8WFj1_iqK}CBwZFYCMpVnA+dUcm~4pXROGJeae?~ z(f{j~*7FJ*(KfoC0fAp==z+hzP`>(bhERI*Vaka9@xv4)9EbO4hSVTpp?w4wpB7Rs zGdwEkX+b&+d=KLG2ikgR6e(lOICKlt2~Fv+mv@Qq@j#$*08-_>fAbw*+b5EqUJ-Mh z%ktgYXShPk%cJE7x61###1E=+wFq2Aidj~cczfXmFq{sHuyZ|X!tFFQDw&44AiJ6t z^RuR=aLeoAuK$)+S_14RnR~*%Dg+@Jvys1IiddKy!jeiJ^7gJ|Ka)VjpwRkX0ROjOZ8X<@O3xHx4Zyn*`ppcA=-wAhR{NeXw6TAv-`qQ%;2aqn$iEdK@#7t= zOZmKO3Wn2=u55QM+BBSeU`q8{TR}Z0f!JP5Y(FCWH7P<ps(dWQHK|XBdwazgcA{ zyUyB8$-o7{U1Klc?VE0md5E-qKo|?!O!$6+=`T(2*>)!6r2O$3+C03otUkS26E6yqk(zfP64SgPUNGJ zJMeByPL^kSgN9H#CLk7Zq+w%=0M`+TsQ!)rwtM4IRzH=BNZvMCD}H?A#?3M^qp_DD zDH=Aw+I<{tjM@$Rr(n!6gQg_Ds=|`a@YKe(ABYTe={SnP>yL&zvL5#<1?sDa^cjgZ2BX9!`JXN5Yd>D)?aPb>st3Uol*}S2rv-X4xdVYcW?e zEN0IBjSqm~Y9TmE#oyQE{I2W}y{@_l|G)`|l<-at1f@iVTDh-zUu<^|d`Bj`)xab~ z7{T)M_p3C+XRlt%>EybaMBo0n8GJ#l{vlQe*V7yn#z15KK}n)ugQdVuNs+=bC#rLn zhRY|`6<1pgw9iQM;{%E#Zj<5&&Z=C{@dP3tDy$l=u>}zu*juJ&;IZE)dsh%CW623f zo{#hd-6ARvJDn)vq{(>R5x>n}AQ4VEu*o^JhyEx@pRs%O)G1=DA~zSL5=*g3S>!HJ zi+yF>3$Ps+}}kUKl$K&JKOWPnFdze zBF*g14$(sk`sjH4G%7cN{W>xJmU$ttssivdc2j{-P@bq?YqBWT>fWI$--1V^aG$~ zKldBVy4AiCQGaiyw)n2`5z$?`prD7*&rsh8LkAYlAeZk8Ow(xnc|4B!o!<^dhPB2z7;^l_Bw{w8P6^3~t@cxVD8fA^}h$-Y9%t)qsU5`X{yM3cK7CXJ}ROzu*5RW-!1i;C?6u_-oeJEKxI#hi#Nr zFci_5S_&DBD0=ZOI*E(>6W1R6{L^8Z#iFqX`7wQ4ggj&R$B2Ht>u+s$`dymY(W&tv zbMik9whS3`A&LJu^7SIVsJ z+V#~+@V65m1+lDR@ zO-zA`puYA(u>T-fX4$~@+yWG0O z|7js2H!t`2yF8bgX0sJfqw*u6qpxY}Vn%{#E~HS1iUP$V@a?uD76Rc235KgKu(=8Z znIYCqcDv$FtSR3U`B=?&F0#A%TFBtsjtfYuZUG4Jhs+<{w>TL+h%(yT2!)Gd@$g$q zU9!FfwugCwxRCd(g5Q_-pd;*?!69XTNApIq(px#>Wb}_1u}BLwnc`qS{`tF(-KBA& z2V;uw25+uhdf~>@g*3{ghk`rWMX`Dugne#8eupsAY4R>eN;FY2`a<5~(a?P9Zsp6v ziVWcVYD(ooC4YVzam&>9IgQgFAS#xWw%{^g?a-=xL12wzV6g=vpcFCjBSnw~FY@qv zJTV6NCJ|1Y>YjIV>uf68?9Wkf|8u#8ZnGedCNL!A1dFG1~oXc$e#rKml$=*sQO!%@d|Foy+_eDVA+CARw z+CT7Fx*B(KOL~T*oK)LdDQoeL+Lj|-&Z_`*{f1|Sz z1*G5il73qOeawKMKe8>Dy=kb-eLHIfF@6}ZugQ*@j$ET_(aIj@$AAt$> z!j_?Os*vA#zTa0(xfX%{5jdgNzfN~%sLau$!gMQJRn}}SSu)=n5hnilQr2V_{wTDA zVH9=dVJmc!Sy%<~GP_U2KGn zo85#k3n3%PVuh;U*6&YaKKp&7ia~e5&T>erJ4gd=8`F$vSF!h@djndN5_56m{z9u; zUV92dD5A*4W8~vd2>hr~HF1TkQGD}8=D2`oXj{4edG?_41rmiMqPfr*FDGsCCST?? zZm!6+LO6{yBiK6ONRw4!bo?A5aaTr8yo9vCN|h?~pEt^Vx(F6@S2r=;kmQC#Ll)|x zpiK8r3nAwvkjn!`q+JsfJbE|~ZrYef;>$bWsu0sC+DQ&{@{$NdP+^o8&GQTlUykA^ zwmw{=o}3l*Rt=mXonW3~TF>@Px}RN&Qjgq}@CbI3Okr<}*qoeI_1_~7$I+g6M_t9`(dcy9kTfkqZK*Dt0M*=eSk(CAh0_rJf*nLZ1`^K3s~c+yj!dx7uTRi5%Sd#JvN zJ_%;uVaCuSXtYg~`xtFN9EDrj2h3nFHZ%9Z@RzGqf6N9JtIUP3(=|GwOlv!M8dD>t zNE{>DhkFT>nfHWV_Xu9XwdwwyDq?F4l)!7C=II$pFTO8pTYly$Wug&+3_z}#1l@r{ zTabc>Z>w%QSXgCZ4nF#fhrfouHrvS(?A#WEzAVdlK%?dzf%dh3WDmOi`&)a#S{jCM z_$%=iS)_#PaOb}xZtCKaer|=8&6vLI;kJR}zJKgNqst*6AY6UhPq{L0)g;B&2^iD# zXBHbBbf0sd%l?kCJ2VCR9jiImYC!_-*NKC8Vfp=$8NSjnJ*QU}%pVqFr5Bs4kI!^d zhbr~;FSuvShiSc3T#kwsU?SfDVF@l(`?o3m zqNh0bqZ+-Vt6^D1FQm(~PHP+^2e{fv`(Q@A7hPtkU;RdM4RdN3W=S1w2D6G3Y7PvV zqHA?!Y(A2cEP@92WF;=^k5qKx5~!P z)3_a^3i>F4MM_mDewSg6X@PVrWw&N%&i|$EdMi1K(DPHI=VE?P1C^Eovf4AZh=Gbea%gYee4iD|C(Y#Z$-uxA<-~?$Y2PJBO_Jqm9tm$e^h~4I`9NW^ z(6hOE)bPRPKfbBG@E1S8{GgFp0={NG+^c4dM&%Skrc2KrKz@Uz;aqln<^LrKHxu99 zwOFgNBUb7e%JNMEMPUSU+b67Hscwamy!j1%Krs4kQWJt&S&#AdQKa{&v88U!=u?oh zLoSGKTvlY;qm);oRE~9z9z#%>Z)%#aU+^adKN`df3u5~v4uUrY4T(T+3WJatHjW)0_|Ho{?Uj|stZ zTmL?$FUni)TsRzCSkm7HLUVL)gF-b&*%&y$s&|*lDn`>ym1<@5!wqJh#Y4g{iy%}9 zNs>O2D!s1udWzEMsMOvyM1vjDe#IV%A!eP0Uy<$sp$e+15>*6ha&pkmB7hni|F?jFdBJ zZGE%;2U-B@O4L1s>LY9O!9KHgt<7ufewH;Uu$-Fs#Mp(Zw92 z1zD%bHjN@2UlYux@&7Jx39v~d=TX2Up#vqR$pXWpG**98-+PV{3tRsuKbg*|lnhs3 zkrw2fCfhoS(30Nhf3;IXpDwFBir~UvR{HAbw$NoLRBH`fPLlI#DcTa5 zHkUL_7;|Dz&>&7ux_zGgPa%mZ3Yh!YwI_P+N~&P5qT^?p%kw(N0Gd{JZkz^IDNn>+ z7abdtgd2u}8om7ejvh7a`x4pDni3r<3#P5+B=tDBscfLy9l^ZnDi!y(ooeFT;n_O8 z)ic~znQ%rq@cs@P>chWlMRSl9*8eh8-LyPZzQq$9!Gy!Hj%|%Xlgq~ol%l7n9h<)W z+dCNwzOYFA#@)w;rs4eaa{0nKU3HsH=N_t?US*6UIv8WE-WL(^1|c@-^Ij=Z4hONS zLeBV_-ZdzGl-r=hmzNGF_U^RNEBuR?oWQHykr>U=L&d)*!%Jib8yvEeEC|6M942tG%KWxy8}5Eka;Qnhil^R|Ca&CAU#BqRh5m%^e^ zh;mAEXJ#a|2}kIQjgid@n?oQ%#4pPXBpizW1gUMAdua(V3bH>g!#mTnuPQT@|5|UD z64;{clv&OE(WMso@l|}1(tsPhFNH+`e9hgR5VPI-R3wgPd`l1evz2mYR!sa%*N3gG zFah?AF2zCI!nLN^le5hcdlVnuS3TCA7`;lu*PT)qUw&hbH1j_%2!-+J#E+DYzm-c0GFg2 zf_u-NFtxi^J9g}Oi&sY^y)Kk-FBy~jVt&GMG|4*@p!-F; ze4ovKcENX_h}^kc;qQtH5_F)PmHB?AOuZz_VUNboTk-`}#~FntaRK#1R~dv>QV>p0 z{D=1dajXAg{5wjCn(Y+*?jaZsKxNYSYN$ESOp+13j*1_)606W>!l9soYKERvM4f2>DTIJQ80&yuk@wj#zPtG22NIy*Gc@< z|6%H#qa%HSHqcG7vF&6xw(VqNXJgy8GqG*k8{4*R+vY?!zwi6*x%ZqoZ=d<6r=PB= zs;BGisJwarU&|tmSxGb~W_;Te2K_CmQgK zd;M#iT!o+IeZP@#`*5pFR;*fb9@Vbw{U#yn$JH~R&RdS>Cigv~I*)1s(%0`BPpDq| zo&Z>@(g13E*JKwaAjeJ+YKx`dPmvCZ%usbvW~onTj?F`5;S{>IpYJU%s(Mx)%pDGt zv>;5DHZ%|t4E$*{e65abrd0e+tpD&m$f;KA{se z&3j{PbDW_SW+&XFB;j3E>4>eD;4>QC{*jX49bWK@V&g|f;PVdJZF>ug9%?rLo-K@e z7Qk)gpj_Yy^4=H2`0lepvaG)`TqE&!2W@xn;_mkb9W*A)zJ8(`<-7FDkB++_c`_>j zR}8lx%RHPIL)hv<-N8eBwP4j(&NN%$8w2d?K+RX@nco{hRR~;KDZTnmA5<+#>wd%S z#NI!@ertCtdw|=J?)nGZw%|(uj@SIx>HP<*+JE`kFW<=pklOe$e8E!e>w-pn5o~^q zZk*r1YRL|M@PkD1{r<#WdcvT~Rdj*f&knA4l^dqrXf*~To-4ks##yTd>2C+shj$V# z8_t}0z)m+d@6;I_YoF~nUnp+#2lQfb?L5{ZR7YVJWCYoa38aMd>M>ve;2;A28^4EI z*OAT?KRU4g`ThraS(5>5Q+m%M;+RWM@G86EoUtXbczPqGm85;MLW{t2g1=syE{4zc zZ9C2fS=-vA)zRhl-t>E>AwA(2{7k+X=^Jng6*pJw~7g@~k-NkIb z*(8NfZ{t{>5dbb6=(*c2^g}=cG=Ilm@^g9TSQp@{0QTX1DOVG1LvX^xfI!nnYnOV1 z>O|P5?_fL>HhI(PN2khYuiVdZca`Brohi4qyU*4;dLld8shSetiK7CigpK`wdl(7k zr-hgSgWnC`MY)%%>DBOZy^jg@X{C0&r;iVSojCkNfcD|t2p^BAqwD=DBd@eOs{*WF zU4FgwajobYo8sZwvBNt-f6HQDuMZ#|`0tPdp@jy*$Ah61lB0j%kr9s_&YK6Gc`+Ti zwGeAM>M*hvVs(QB&X8u6#UB^k+-bI^bPkW$h_-DwQA>vp-Ee)7LJ~QqoTb;J0kRDa z4#Mz+;efsklDm};oEvkBj92=*TlV}9Peg55`>#>G3+jqHY{={jB+@DGbnU(ip7z49 zTu1yq`+a-$*=-`UN8cysV^pB~<~YLoFYZtS21#TO6xF9n5IxB+itg>0vSESG4npBC zHn?$O; zm>yUkB|>HXKzT4ESpbw^`R~x&;5<0i?`ET40@zBqqIoEdc;)iczmh+HQ03t?!dS=~ zGSGb3mKJM(HI~|AMRUQ4<}US(Jap@EL<-@96ex%Z5qWKH8ZHSC*{(5G&gD zBi=DvAl7HHAeNT6_ASt(I-8vdC7` zW39q#8@K;02uP~m`fW&?Q9eLzh3u`RUD zL~|h?mFR|`>Vup~*fE_Q@1QNPm0#Lf00|igxfC$vd9h`sYy+nMz&xU<1$t0rX8XW% z?Z7R_s`jsI`z&$!~;6B1}Ksqzh$bI1__h8DW^kFJY2RbTD`_mWc z`Wf31oUJNN``s&~^aFxQbp<|fy^!fdc~j0{UYO2O^o)VV9Efy+yo4%wI=(>F7NjnJ z59GxNeb%#-U6_R=J7W)OEl|}w9T?SuDu2s4`d;IiARxM0ga@Y=x-+X6?FVKH=p$(h zN>}u`YHwqyYQJ;oau54FAein2;|!;TPsRs*C-@=aM)`&946wW-x=`IOQ@Whr^<&%j zI#&mBTjYbx3-M9&=Hubsj&~!{1ML0BV6@V`gcA;b^r3U%Y@$*H&S<-(-P%*Y%XY@2jt~ z)V0^U)U_Y16jwgSH|plsS+ySQS@rJk1(_Q=p#2N{JIEtJd3TVQ0($`;M0dcj{B_W< z!gYZMKTq5zzuS*&VQ-{tp$}f3s5bCy34R#F-W++tV1TK@*N^EuKG5kBLO-!xk%g}U zAl5tfqy38%5b@@xmBNbZLIsP0Dlfy4v3E}s*! ztni(_B(E#H2?_|lECu*A%j@R1p}Q0U5CK81^18vU^N4-hrCp%cd7t=OV&3SVK|mZY z-!}M10LTlZS16FnD-Z~=$iAEK@KKX>rWq^hov|qKqao;rN_0{6e40&j1!5-Iu_+OrUthsqw42{{0z^G~ur(#a|I7EI3i!9muvH zksnf3a`w>f4!c1*L%Bi(C!h?$zy9`ekjl~P^DZOcRg33S>@tW9?7~K?+xZenQ3XHN z1E9dx2qoex%sv#y=pcM>;2x{W3Vr}_bzcgn~WH+ z0wDY4Lp$YvO3b?nBB9UK@EOx983nDtD(l3OYAYKnCmV?@F$W7;&?nwK3GtfJCn_nR zfa_3nb0v2Cl+lLlPK#B)GC8JfW!Q(GQ3# z4Csgd3M&^Hq8ZRB)wko1V95PIMyPk{vD}Qg9ZjDkUf8&R=DTc(zeMN)y2!4WOUXnU&&uQZw_eJQ;L!mMXD8sfA2zM zSI-bTBxft%AnDO)5T*xqKseDBvIzq)REt4&bY4nrx-o#~@K>0_6DuWNy*N>{CQB>J zWe~>%Q{*RHm75HD>1p6&2_SNAP=KV;7G7YlNarFbwfB>HtE*Ror~u8boz;Lo@y8p1 z4jO3`3k@mawB8ab}{3U9V$@cdnXcH`!BcNYU!Zj9`iCy1jWr%Me5k+v(p?DS`_iBd9s zk4_^h{8f*0O5!o6 z2#Z(mm@~0~G~;`b_WYgoot<0j3DJ_ZJDvmz-&2YW_CUsn66V4T1vQLNq z*YX(5OyEpo37K)o&NgnIkX9V8#d*t&Avsn{l)<>mNS^P+8;`Qd~LO3dudfnEr2)oyPPmSK^9e<9WMkV?Ru5X4YOl#^2B z=N}`BjMpjEz|B`$CTsqMn>1Yywmxe!295?6ga_WXHmQ`;gDr~_z#pR*&kqfqD5+cMOjmlr_5M^<%hR`i@+OkKZAGIw^ER-(<;nE zpUYtvMIg>zbn*T!4ae~jzSD#`I7&|aKec!g5(Q8qA*}Dj8>35i%f%Z{4w)3Cy9>`Y zS>tacuNz`DiT$PJJ$X#m8E3I}onfL?PqK!GlWLY8tRoqX1$EK^k*S44blI#USs$dX zOeseWzIgZZv@vFB`xe#de+CQd&e1D@(*WXs*>BI5DDTMVBPD2B01Y#&I+>ONETA(| za4x_h~f>YrY?FBV^umq6}N^nXID-(Z&XGg|=bs5sd{fFKo_?JU%9 zy%&#PK42f)33*mPT~^T`dkw4=-1p6RUyTT?b^Cd+UhG+ApdDmS09 zOaF;Ov%Qr(FR>8Ow}lW4?-({~+;&BE)gS2&2zVShqBZz-C2&t{XM(a-a>%SQi%LK) zeKM^@m~U)Byfff>aDp3Y_Th(g|BHe)>i5L33_LTZ-wk;P>GExh%o z!2SJ{zR=U>XUfXoxbeRwjBHr$1o9LAKj~4*E9`>lC^*&h|5jIq z=VzndoFbO+>E8aCGkor<`RSYQUQwqvgW$1Y)6ITX%UfOrgts%?K3CywqS161cyi-O z2js1)^fX8-tGq4czX|)6w}U>JAQjG>=(PW-jN$M7#D;VC{JpdvTMY&gV85gH)c2pc zCOT^?wtR5zlWr;gAHO5W42xz6rEfY!Y11D2Z8)~1r#i?EZ^z1we|qbTTViwAK)1eq zFqeJ1dUu|!y1LH}`LdrMFsxZMpMXS#w#45m3^OGS!B%@>$(0k6w46EpKGd6heKgPC zT89Dqqq>~TZEVa)hB;uR0#1%V9RVT$<7dZbt~KPJ@+(Kx!2Ye8>3wJ*wYN^SiJ2g( zRnGeHte1{RZIVOv^zl6HW(0oi`W#y2x9$a(t}*_ndifWO8rS=BH2?^J$UAz<+|Tp4 zNzDO01_Ugtr?&q=h#hPbOF(u`eh&V>x(7OlCFEw8x%cR1CHK2C5Zm2q{YkxexjJ^a z5Y%VgHY0hOuKxcZzIuJ$-F2l&xro4rC|Pjne{0$4U%!=I`J6e8a9sZIy{V0j_7+nPMS-l`|ZtiV=6HDYSmbeBx*H@&F`e!D3M zDk|VTLom+oCm{o3;}6OLqcY(OzAlB#dd#)7Z2|c^&Wq-`OX3NKX$o))%l=>vexmR8^*!dCRBF=j@gul3H_~7D z>UJKyyWox{e87V;kmn=Iz+2$0K!8C>dou@mrQwcATVcdeZ^8M<$;zFK4x$+k?o@l=@x}ShZ(G|j5i0WWp ztvG|40vizuOh%LXuAjgFCUkmSO)+?b{;oKHWba8sA5b)X&CFW={SQ@9fR7Z-L(REv zO`82r30=Fl`BuQ&vC(2(f4ooR>b2Eh%PlX3v6NyDUmv0%CeSVu z1tG{k@0)a-x4QfU^$T6brJJAhCC8w>PXX`P63-=@877o@VFBaHu;9>A(bU`m#K1qQ z73Gy1p@95HXOnlubIWbzpgf#&j^Qx|@0j4_>q~Nq!vDxS{gvFEn`Jew7C4J#0I{rSJesh_X4CctcdVPUdp~;6KC#7-0>-eR!A8qvMV#}5m7XC>8O2ftaSo@`I zMP6dpb`Sfh3yfKnos$mHZF1Vle#C{#i==5Q*kB_WSZ_4fS?OJZ zSsAcpgQWC$tqz9T5nOpO6%Ab`2qOl9htmyoL$$Hmi^=5QM#OI7ZblEBaKs^T0`wWc zx%9Pr*+eH&Hci~EL@wqo*xt#-O6E_W=KBLW4n+?=uIvsm4pk1x$E?TX zl5!~dRekc_|F-hF@1d80->)A}a_+vU4>#g*I}S0y-M2Qj1$^%{s`w_A@ z^xs?BYC|F=A^`-f4g)u9`nTz4YRbkU?hQ032;g8oIm?FawBNNgmE%YicC_&#cl%`B zG&Jx3k~3BIGw#XQb01+1U#BV``?71`KM#;CH4?_l9EL(edeKIAH&)`tKVC*BuJDfD zBIsIv)#I>dqeroF3(lNAR|6B=d7!d~jg@x_lnb!_LSu6Cg9D#*63u`PwqQj$EBp(s@& zs)*0)+y)?4ELg0qQd`bsn-CEATOxu`4?j{&dn3w%`Z*c;zdTWttGj9E;c# z8d1}LgbP;<*%Ggb<#=XtmNgpShNgroPVT))_yQ@ktY6Vyi=JQY*)lhX4LOD9Sou$VeG#TcXJiX-g)+ z$*!(FDv}w9gTK89LA5`BwVsUFpXB8p02@Z{a(TA?_b*G_-)d!XQ967jt#8gWJQA7r zkldOmeW!+JKJ$R5&DZ^byN8#IJ7cY0aP=qPe$<4dxS*`Flk2|I@UK`^rz9S3jB^~` zp~i4d&A;p6mdTJv^R)S;4YVS$>z3k1{6=29&FFL5%2&PbyNGRPO=8T>3ry@=Ox%tb zG*c489nxSfhu!Yd=`wPT-Yj_DXv-zTC9Y1+GBLx&uFg)*HsaM9STU=&RW|)68e1Cx z2a$;3{OF-Em=1b=w6W1#k z^NA!@m9^81Up2eyPl9)&AxVGgRZ2j7PcB!{`j6Pt1)V^p2~3>!>SKi=3V*mi!eq{~ z!`>kT%YJn&>TE0>OCs#f$c6&a2Hu^XPJqdL+dOY7t92$M)@hE%P)?O9lIjG0ZH_ zb;xFx*>TpF75RRGBq{tu&f6)4;oT?UyV!4ZMWl`}5EYZXk$Xy;x1Ad>s?F=_gZpHs z$iDWY_TO=1rK5e7Ilkh0dx*Z*`Vf{td~lmM1vE)E)~x_+2xpZeC5yL{A&MS)6uQ}u z$DAfVFr4CpJ`N7+0BTedQx}%ZD+*}3NMt6)Q7sFQ{zT~&Djd;M2#0qG8EGmBR`V8V z)rJgW!E=TK)ffJ}v0e{A0CTGuyA5jygzb)s^S@CuvOy~8xQWD@GgMC(@4fe?M~EF0 zC3`VNXtm9MHGP`3w7Yy59Bi*Bx7*a@Do^qa<76q8CA@-k<^b~LUQ)Mor)3A#W(N=59RU zY$MBJmJ)w4kZ#en^ePv~ws@(eTLL6nJTBvtdXy-S`Rg5c)~`gE-xhQhpmbg0LBBYu z1o*?MSZ7o2Dz7c&48KTMzARr^;=!@Fs6=1lLAfYZT2y=_WxggUSVJyuQvcNRk`xJ9r z#cPz1g5QvG>{Ln~gZ4=bleTLQ);P{F08=JHNjLOr1VS9ouWA>Ft?Zl;sG28x&`Wyv z-JY?$@)_!D$lJCE2i2v5ofm!-zVH0p3D7_EV6uDpIGYX#9#xdy<&FGmyP-R4spyg! z@38K)VUK)+cO?RAC~1M5UePABjxrAFrC_Hf-MNCfz4@yt0sSgwN4wbOnsFGm9gZZSy^bhE1Z>OZQIss@JX&BCHK zX0`UYXnwJkIV<<$)Vx+`hPgW!E>|C+#u%=@>e9W^U}U4Ib#@mw{dT9vNW~jEs-sZf z>Rf$d;{ifZ4j;7>_F1^Q!D`Dvxavi9_=Hh2+T`hr&$nIMkzTcsD1yngb+SZkM`Eqk zgtY@us(Pj5{M!w*Q$(9-bT!pi?POA7Pc$k?m-IO4+7qQJI)ufw>bM+R6fyQ@X|*Ov zt3+MV+o)%>yEMe#4Icq2?a38Kq7_H^A&`9upnm!ChrnOH!}9Rb z*i-o9jRHS3TK8|>)u!+xOec^x;@pZC9N__a_6aThy`WkDLWpM@bKk(YK>m>FkC3SO zMnh(BgEl8D-JX_HE@lp$wsiKDwR8@QwtS>z`nR5!isf4hK3h83=DtB?1v26s753sd z@sN{RG8F6*SHux-gviv9$vVWysu`kOrMIxsTvb)n87SMl(6SS_aud)8@7Mn5iIM_T z?Ip)-ajk(zW%AN+TD{g}gh1P@8z5tyFqE$ z$SarE4t0I|_wMY&H>RAb-#P)e@_U~8WwMQez1ZGqe`IJksvpM^$1o}>YIexZFn4zS z#6}6XNVE$XN0WSNAI}!HVIt$~rA88&AHL}zw>)KcAOSi0Ya z^VaAdZO7_jd~f%{0uWq>pcBfk4z(Fb|5;MBA70%=j)E>5{vOa+p1+wUpi)(7HVgl&H#@{v9#p=DtwWg<)BR;D9giKZJ_G{m1g<0WkJy@02nPXj;aUI(G|1u zjoE5Kir(;)SLrLtosOI(WiWIHoF$Qy|tT`WA$9v33Yjuoeiv!!{{ zJxCty&hi$L7Xr%O6rYRPN_-O9m>09!h#T1&$rh8^$Qrqv-OuJ0NXwGSg36W_A`_F& zEM*>Mx~?-wQ1&v6g3WHp?i{v+4^?-$$%8xY$gRolU&0sfEIJ$oHr>osheb>pXZnk`ES9@kcb(~~zau87A#rH!N) z5Vs#!{XhloMnLJtn)78^9`1=Ln3C+s~xgaemf1WD|RJuuKoDQ9T!|X z!uhMo3)?dZ9whZAzvngqp@{p(N2a@piRpEHyOoRMG#LpJyHSD_U7!>bv;!g%7&r#h zuU`(R$gRY=phTf5dIF&;6+}_t;^36I6itbe==7D9Ybw-Z)1UzQUyV(F^~k#&O~`kj zJo&GWy}vxZ?E0sextZG?>9&tEuQ{hz>L^Q#69T}L%QJ*G;#p(LB%hyG z$n$+NO)u<^9e{OrGyT4sdA9jVeuN#>#l5|ed~ za>Oe1(@;`%_%I+<%qN(kfcc4NecXf*=Xv)9_|^H#S~>@>o470Y^0O&vj`GyN#e=Tuo}8@5eWEfB-G{a^6~n30p33DpMUi)OHLF_Rugfm=+#SkV zksq!40L{#aOb!-b*r!H1_)Rn74Dn3m>U&3iJT+u>9063b`@FpIut)U{-2U9w_cR%* z=#bL(tc~^kWoZX*8EGL=7s22>s*J?z&jYI2D=eVi9R%~_UA{+*dj@sh3eNdQoTm@w zy}){|P4z+;VP&?eHzp6Z>dgzUSJmbtmd(~l6YPSzcGdNPmXnSXsXaAjZCoaXs1fb9 zMh)|4djdM@;*~?xCFQ-l+ghO95T1>Xlai9fq~hPRjMPpv_wlvW6ctx0n^Y`XofH!3 zqi0}F1%5kEX72-#uUN0F^*J@jn^P%82bu>Eg(c7`wJ>Nh>(5SVQ9^U+qF&yz@svo0 z!HQ&V+!Ge^mwPlHOkQB8n?zp39C*j|S}(|+ngGcblVF^vR;RySYtiidG(nZyD93w) z4-AyMaK*m5nh+b~T8Pni$(UEuP4~MB3oCNzS5Oo?)8$O+s7y!kjN{tXS{q4+eiAg4 zcO6X7F;!p&vY5sn-PE)d7B)0e-~En9eEmDMMnld)95svx*jRaq`4d+I8N^Q@z>Oaf z%nP8wffprY6GfZq*f4rwhUW%a&FX}!*58huMEeTjgIr4 zc}*RTmzluTdYs|u)G0CT>?aBUQMLOruAH^c?am+6YX$_^>rY^-YD{OV;V@)hUq}j_ zPW@;0prxoT9=Ub98sKGBm7n9`4j@Gc1-rCeZ#UU5l~N%jO=rbTswz=k$7h9B_axWQ zFx#)Eg@3c6XNLFl5q(A;!7z(KyuSW-^UlN^UP}Vs&p_##2r6|OJc3vVgvanE@#puc zW|6{%jCmaP!8zgeNnArV!gFu3AunDCAy>+?DMB@d4ep1gDFX_mkEUM_mw=P7Z3xf; z*cQ)dh;%mZ7XK&wDh{)NA^fg6e9maLqO?Q!UqYwT0iH&>9^^EcZk`=9@?qleNRrU` z`cSCixY!2DV{~Y3Ep7-1f%8H-DjKB1QcOP^>PQ11$2!gS=w=HG1;|r;A!m-zeblFD z%TR6%-ix~xgMSnS3CT8D^#V2p+*=>K4od~S@7rX%T^+5KvOV9fH_~UR<8?R>d-eZZ zTheH^H(h5!!)x1`*HCGq(;b-ehaEhesBf|sP%XHx91fpfWwEw7UayzX<7x03iVKdG zy3cSo*XceLzQ%4;sy^L$f~F zGhy|fTi|Cy9ejE6)9KT4Rt54r@BDr2K2(;zgg;2}rO)NgfQ2YRKA}{?D$pKmq2-8j<0j#iPb@eEWWF>Am zkToYvfg>6zF4}(cA;1O9tF*$b>6m#H+0meVzy0u+Q>L=whBaKs?+|yT&^=MCTEQ>; zMD}yB2QUVS8Yq?2%IZ1VwydkPK*(;UD^4^1g!QTGA>2A|>tj~#DU+EK4=JRA0oy2F#Y8$UK5i6>h)e*j>2bZ-b-#J0b$mVOep zxn|v9yY6&qU$|7JM&vrsQL>dpgoQ7b!^N~#x{aLe`1fcbs5eo&6saIv%Oc1Q|KJY4 z!zm)j;6;fFo=#5uNrgzv1mahgT^d<))*mX3T7EVh5)pAjEDj<~q)p{OO+s+kx{;UT z>G-55H|?XyKM#OE=xO_*HUPZ(ssQ`<`Dc^AojwCj1Q?Pav6NsHv_ccih=Q;nv_VQm z7hwW6Yk<5R*-E=}fH6UtuSC5{V<*qT6wV_o{7*@R05-rQ6I(xfpsZrx!A*rXqB#Em zoeI{SfiPkcSg{Dizj?7R!{}(Z|G`tW?dN)xuj{L$<_>UNQkAMckRKJ8dHF{)-p5^2 zbpq#7o$DSC3H7!nJFjhCXh$tfVphnJ<^b2954=t^Jjfc-%H9vqnV!f22wnd)6>lEi z$-gPDLA#DEE(3*&fkzb>$!~=F5z1m<7sV1Ru~8R$WAP6A8<%cNY&&D#1?OzF-7JA+ zvj0HaFbyybl=LSO&U8C(M~Z&w>`~T#vQ4}oZfulj3<~lFqG2rUT{mQz-QU>^y^Akp z!h)oR>qiqvpc0*krc>^U_P9;951uzeaTg_j(Zmx9cQMpmUcWO9DJFrdcO98p@@Aub zX-pnHHRj3{3P?#yvK3(bB&IY)E;4$Q^`|*DItCo-yWJ(Hh}E~?jNR>I=vJw>d0tgu z9zB-p+^u=NIRE=>^?_>>?79iz1)esO$*sUHrEK|D=*mTV22$P@znq%|po+KiB_sR_ zo@XtY?_2US5adw%6)hLT;_o7PCEEMNyg$&Bf9mmlq=j?(sn^$MOqKYy#b|bWz1CbQmdJ{=rsT6f6>Pj(RjDL2unjJ!QLnDTX#Q*6)FK@nw7@N8$poAU zS;rBIFh(VolCB}{d+vY$T>z>En$am3gHPk6XytJd+f zn+P^f0;+;tW1|MiG~0CkvpA`0bq6c9ht<&-&DD4wW1{2^y%^9;vq$ zJ-Dl7H3wDDZ z-!faC;{j9P8$goF4JX8}0YtMH=Z%YsZLMTgnRg~c1d;FY7n;J0XSAED!(U{5 z?!~X^a1Ud$O`Ny;{Ob{+^O~uML3gX>28cFwpdKzGv#VDmKF)J_T3cCDC=tjGg=Ho$ zqew|eQ9F2cW^H6eN@zPR76RA`OEwhKQnyK2dU=yB|6-=2cKkGF8oi9cA<~=(6J!Z! z*aJ>RG;MR87X>NzH+!|Uxld$CkvC0TQOfc$euky-YTN_m{$27`(s?OvI#pVn`BvSm zpSE9J@*f3VH+LWm=FpA+>KqQ_y4~!W*}hgq0x+XaR5+|WrUjp6DgdF8sd8OufsU`- z4^b)3>(ewhzDJ82;X+?xY!Cd&jig6$=>B4F52W*|#j&f}sSh-qhdT6AN^tG(?ehB# z>icj1+B*WsCsLVsICUln6FgM9UT&X(#vi)Ro3Jjvj@MSu?24Dn#g~c5n2u`TOTmVX z;?Iqemt55c&r~nNe*sGv7zn2wDuzCkYwfNLq)Y9tUChh?DH`V0)o#+Gh8l!qu~3G; zDq`;sNb90M$eB`Oh@cmVRhfCZ%|Bq~dyI>Fy_dZS=3A!^&W2VyO<7~`7J2?HU(_lm z0G+zrPo$NC1*As75C@F zV7*hvgb-eavi!F~$Y5EYDwY+7!>h4dxlMIt=VQfs;6(X&cbScfb@l0E(C%;MAT=i? z85^C+()hVqoah2*?|o!%)2dwhfh8&sWm?4QMbNE$T1H`=Y+(lJ`V9u#HCiR?E~-0G zZWQUa!qGTXd4P243B*GdcH8N^bIgQB%h3`ob6do|Y@}tH;-c#*tfI+>mrb>9;CZp? zVfEs7zKQNZrVlM(!h8feeZIP z2*wPAlqK7Ye5WD9Ueu(gl`v@^8Y}N_x2)(lJ^WN<0&F5T?+mp?h=WB5<7~tk1+Z)w zC*KK%ZB1k#%QEu$& zli@U5_)a#$AF##y{yeuyTkJEHMN#iD7Lu3*^xFq)#uf_nURc8W7`yrp_;ZPxGf0;hVb2RVF+kKp0Z=_ymB;J&RwH-_BWoh>?}wJcZ6plP1j2o@ z;x7yl!g0Sz!=HwTRe^U;T2?r7}d+n3>C z0BX=%+yI;4T$C>nS)Z^c==A|gEg#~|1)W=+zdx79GEqOnKWYv3V!HHyQK21n)5+G( zh#N}L;l3mcpYsJtNB_CXTyRWUknuJ^@Qci=`S z;p_Ux{^MuD>CN(>4|&3!KQOtfqrszS@5PZ3K@lTt3i)YJ%0&GK7IyR>?ZScX01mGe zOQj>VByuisO9Xree6GT(-YBONq{Xv5Jc2z=q{rJ1I?lQvsV%UK{b?RxTWquAxqUl+ zL`8QmM3&ibLEk~-+7{<+&R-LEFn771)_X&t@uQ#RoE5UMmwF2}L=x(uW{Um|QOqX=n<$>tj40G7&>B13(N%Rh!rB%-wbC3EwnZPFS|pr$B`?O|21 z{09dq4i_^yLP{Zo7xQXlJ=|(`~+4zSAZbi28f*U*9_$IhfmIqWjHjS$?*AwOUa&9I3-a%CURjpa>SFbtpm$g# z$?JvaPezvFEd<#c>W1kJ0IV3V0vKH(M?Z|h)M(#YRuIZWm`edE`W~>-^zr#|c*nfd zutSM>eE5N^eVU{0`tyNk2{e4ksS2K)rC`Uv>4TbtGIf~+fD}(X1-DC1Pk@~< zS8+JDv7Kv{p2dYb9>;uqWKzA5sx8S$w7ClNvodC}+2@^H+>hY4^RHA#b(dK89~3%k zf1w*#?U{&D?CpT`)m6MoB~fo9kb`2oI4jhiU=Me2=*^(DFc?GGRZ-A&aXnmUD@}xA z7Y-ekJE$lZ;v6kOfF+CMp)I74J-NR@2*bnMB>Oh1YM|UcA&kR&zC3-S)skcOjCHZs zq^Rn#OQo-oJ?zLkxL~awy6?>BBXuCc0-fP(WuX?Ryuxo(b3&_&A>~m<$cvLE04^3PCSdFk@S{Cmasyrr zGib07=u6Q~&Ajt;D^+^DNH_mnxKT&PiCR;CnvC0rXA%pVFVsb0#d%yx=St{FLq4vh z>75xYATG;=l{U}SurlYHR^b5&iv!|(r@hK`XJStO?Yf^hdYn%=e$8wLL;@P=7Gru; z6Owy8P9Xp60E*hc>X8L8AMSy(d^P%xef)c_5Iz`|U}$h3;WU(?gg25pxGAkkaR|~~ z`6nLY;!dRlgrCT1;ShMpM5i9kh2~=QoB`xnofx$Qv-w(7P?8zOOC8 zY&XEf3>*_35TZl^!4Cr|MNLIF$CJVK()Z;A4q9#jj}+48)`RsuT#Z?1eJ#g&u4W(} zNVvY~uJJU~c*mU2tF6MdSsuXn0kb*g^ap9i#CmXZpVZX;TO$1_6GzTTQ9z%fe!*WN z{zkbi(ZV&d*(bMrp_ln((ZrOP_cmpuwTCYln`_YLTa5X&>3kM~gzCQ55~$FEs9 zF59VJ(tlWj&&m#@RqhjPF(XYanGx+w_<+;NEyt(RvEcr3|mz(7v!S`eok#LrgE`~g< z>n4%9S4}wkziG|J@qS4pY^pELT4#E%(s!G zB(71T;?8|dDeUngJa`@R?%N;{XQH{ZV(;p8p)#YV1Sk2Y_~g-{L$~!K9gQni=-z(@ z0QM`xK9OrN_KNro@+NTFU76>X_rf8;LcqgqYUsT@wBMd;axR^cJc}s&AQdVd(KA+- z;zMjn1L!FVR<`6_LiI07JvXWBH^&sLhf@i7kDeS7s%amPw|pDUOi@SO}`{pgD zQ{`IS*@L+5u1L{VypDDUK|~)SeQf9$00W_?x+9%aj}|u#iXOIamI>UP?{AyIhH-Eb zv4P*6zrs{-oBiL0ICeo0SNr#WE4rU>kGl2kH%q~2|C?$2e$X_hyVNupvc}1-e`u&1 zX!O7M1_}0IiE=lARjEeCsvd<&uD#txvQ$?ze5$*3XDBu_hQs#9^^wzg(>H1XJnD2M z7ezm{^UwGwJ40K2spj7r;EqH@cM|YZ#Rkt4-k7?f^}E%<=FDOTXaI4#H*X1>5Af{X z{W9Bj^!sQOoFYDs-XyP*cT5~J&e8&sfv$$ICSE0#x#xr@GBrOeeiNFUoj=BO&vk=r zADap+(*M*4BOnBmJ9T^r08T#u%>Rb@2z-HjAqY_>1I*=Z9DXqpc3K+hJf$XY%R%(Q zBh2=u8z4Ypc5FoN#%V&0V-yi<(I`#^IpZ|K`O}%_muKM#tdaG|uJt+eW@d5t*t#ho zMIC*yc05xBoiZ1*6+}qBrmN90pH|}Z#Uh+{g`ESwo_4CTx))rbv2UvZg~{~Wo^stZ znW5LKYd_6{zse7_9(2i<(vmDG`IH|x@bZjiOPEA%aW_~xDUU>?RS8djF)Rr8wUiJr zhD%ZYlgbvWq(C$VkLM`|Cs(FWJzB+BEr4LiR!#I=pmRU*Lwx?adt}drXuI0<%+38t zAeQ3AZg{1N$lu|zd2C7m@UmMh-?LL&tuRkb>GN!*<3#i;QZp$|(F_BrjC zs8{nP{n5voMl`)5g~~%z1W7D=Xu2Wr*ZRn+J}q|v9>2HG(DzV=xsrw7OU$9L@iL$SEjMh~6bw8!}uPH0iSjR8TM{=akLQ6nSU0b*f8K zPpf*QMbwi^=geM?(#|qUy&-l13m2hr8dh+wph)M*W9 z$ke0kBcW0k7yDj@g-}?Eb>t^;kzj@iz8k*V-U6EYcv?D@TR6L9PR6fW-W#?Ebq-wf z26P(E*dc~}#Oi4q`+4H-sKW1dZ6M)lQE%x_j6lGpdiRn9?|Jqdsj2D`Ss#9K+>%1K0ife z+3&U&!K8&uCTnA3c97Rl&BVzVg6q&BFEZ~JpD#hnyZSjYO7Z%{OqFG+#)OqvGykgH z$nC4phGR~D4H{xJ}%-?I%ff-I;q!yKzD@Hk{&Nuy*+i99pVojQCr4{CduTqpc$El zV?`95{|7uk!@s*=_{2sYGM?FR<0qhV?qEB|Hu9HY*-WQdBa?MStDRf@HhU*y6`rwx z-D=bfjELb8!srnXHKW@NceT+>Tbb0*u+>$@5?hYxd);2q7SwmV4`1s2-iO@uBrz)p z#eZ+>y@lN5!az~{FTzK{QC%r1sm+7$?M zASYs=*#V+aOESWsTQ>BTr7SlhAxd-Yl&3u!63-`Ebc_~n(9`r>PRBHxsCQ}A zqi;ctoX%}&P>u93+##k5z( z`Z6q^eJqFZ9?~F5a7bxVfy4t`0#SsfnCNASMX^wOMm9W19-;6ew=+9%ILuF-DD^o= zKZ^zAL_0^MwmLn#6=|==65OHs3U?qNhr<*}ft~}Pg#>ZR<$b*L(nq`|E{IH;dw(f! zb42{ZW{My0=m&)EMqaAaJc9IDOyD4Y7K1F2$)|x9Y!XG`$%Jr9dr^4&^TSuVY}6OR z3PI?uKL&HY_(DG*f4T6Yi$U8rZ7R=bf9hiqV7w%}3D-RJA>m}>8BfF~Jb7MThZ2?P z2Vk2aQJI!1qeL%h!Q-;yV;Y0z1*rvazxM`EVN7mnc9Jbd8 zbA*}kjhz0YU8aA+8`_4_bF_O65gDLb5p(s1H(cJy8}v^WA}1Y#3~QwrM1L-w$zIeN zWEGedR8cls{dWJRm|Zn;Xqp%NJWWd57?YCRXz>AVx6|v~81t%G?jpC~wr5_SfLDQ# zaM1T=kMW!qARj@VOHooxmnn!mwH%n*Y z6W`O%{#|d=-xUTvy5bin-hJs;zeT)EL=;Ry6!_U{ZR}_cR(G;nuroiBW~2MRF(xD# z&Crc8MP*r-O>xGP3xDkbiarOK79F!+-|JW@(ZjY9T`1*T)c_@S6{fYzs}{4(4rp-^ z)flNauixwrog z?2mt#i2mHReAABSA6om;&LiMEt3%0lVacVhpSWkoUw`$BV@DEN^Uu+TUY5*WdChG> zrDf`?b+fw$(0`gMlC)TIvgo#oh~Xr65+Yh%febT=C?&biVqq(N#+o5o%4c#ZpGksz z6lkdo@cB}cjl2L#N7!BIATv0q=ix}F`EXtNA3jw=P2d|Byo^>bRh6M6a$sdqknCMHH+pw>w`~TI)5;?WfBD9-$FP2^54rId3yT; z6idqx0?)_-MznSNnTiJJLF-w5JgPV(r_-@9=5%`nj9h>U6ErEjI+#OpSxGG`sbwX# ztgCEhAH*0FMe{evbf`O=W1Ir36)f;4WpP{6ix~GB#r)rul$C-m_CI#I7bYJ?$m`@e`$w@bqNUN-p*?%MD zjQTcAdRx1QS#)U@U7AIgX024o!zuw?C7`R3E`L{mepTcSMBA4$u8CUY=EMpgo6wl6 zhK#OxmdAv@>LvJ>T@U~Gi8mj4`KPc%od3VxI(6yKA56hX@ch!vJDz`V-OCN}_Xcd6 z2pi@c2G2JjLFx8K;vYP*WasC`{0mx!G4p+n>-(3htU|(gx@kOpuhG8rUAt6ueGsp1Up)xrcvMo>?6{*f z_=Rof7U4V>7yKE<2tz^J-xPlXL-vec=@SqQkD*#qrO%A#ScYmjOrAWJx!g|cB<^(Z zNo_^f=cH9mQ#Pk5o73r06M&^Yh51-;^?#A;p0M$uJQoY9stUSQSLbZoCW*ZY3w!r2 zEU3D8nf~Kzp{<9WVaVY?T+Y-=1py7~^i3Y?w7ZQ3myI!=mNW_NtD;cy4MtvJ1Dh$B z%@oXLOG!=$)<}{aNr={-8jhH&rMXwHwp{%j5Da?vV87ZywO?+lH{}jr*1yf#(ti!6 z^7GIk|JA5)U|vv{IAEcjDw}0CSPtN5uO-1KJ?PVallLX?Q5D(VRd?&|+xwn9opfg- zflha))9DcC%N9ad4T}T_i>QDgvI!yxvWNx|kxd8;gBlq{Mv+Cp6;W{uj{Ay=qsCE* z4|T?InB?Z2s(U+|!I^pQee=EF_kW?k?z(-Kx^?PoRp*?4GRX!8Bl6hEJ4LgAM7UqK1NNSi86*_-AP_RjT(lD5!XhI#LxgZS-_}) z7+46fKR3!{#GK=Y-;=ZOdD+3AZ;s)2WScS`TnXc0QK%BWtEpHt$$(l!nHF2 z&6%gMv`U!j^U4#2F`#qO(Z`PsG2kH_PJ+K;=%@wce;`}V*)q@ zsR;AlyLi#s}HnG3MN-ngL3$5fr>slMxqzMoY$wWM)LNq9}2}{B=^-FqV5IUQIoF(Q?gb0Ym-Bo zqv>)JVHC#H&ssifOa0e#HURCfePh<{)CGUURm`ycJ5H`^InGSQy^h}1a-2i=K7Rd_ zw?RPT+(j)g(K*(3ogKtXPPJg0wmfZtGTy*w< zLreuOKXC^c)&5f-oKZcgQ7|GBDXEpbiIScfj%?eikxKwODp!tgKtQqBu)qFSUJU1eJ+2GlP-LT zvHb1FdyYT8`?n80lz)KJn=pej<;IJDkw0Mfz4z2(Z@%{Q$=8XuFXwTD*E@Op$#HL= zGYhJ}|F3!bwyxU(|Dw0w$$G}U{k9qV6>tCaCl^0>abBCZ-?EK=??^Y^KJhE^s9!eDH2hCH$L`QC#+*;|UkA_l7k{n+Ebe}M_G^sZe{(W% z3RZ4Cuy4(#hvYow)|bFJZp8s`2hMC;@$g44KKk+tiexfRayA%o^$BDEm7PO|tZ{11 z2#Jh|2G)^H?3$6XR&%`dN6ADsUdiUEhVL9qkCIjDnPAW#i@SJjqD9@iC-X0xbq7q1 zcT=^L$xg^P{eMu)PaJw{&QcT67Bj(LH^VISLib3CnrzIvFsn0Q9f_-g-pHrxe;c81 zn6$(a>g(m2(>O;@ccLS4TeZW2$VLxl^(#Ev^8ck%3VWZ>vRvw!x!=l z&le&x8z@ChOtR9j1&LX-1uRZ00Sjo5NCoxS=%&pS5`U@yy8pvK#msg0yq^^t8yGla zkhlNbJBHpeYyOsAmEqLXl2M_7bB5&&n74Vo?3Q-VdJqa;Y~{?C@eQ|0Q0;lfJa2;Itpx>V#cU_6$ZCjE86-Yvwm3r+Fnq@@S zqRgt&De{j857uKwmdh{e+f(%50%r1ti(&bV4K2^i7@tXNn_!Or2yT-V=D2u>fZ>1E zNGI0JVuOI4tbsQWnX{O+X8cQE$&Ae;45Ms9H-D>{(#=%h%w~Jn#ICg(u`Rs8P*$~f z6}a|997WdJOd?WOqe_H>=oWCY{#egl{jR+EzMpT{Re$f}_y}`l%VYABkKW0QfUyA+ zv#*k!KeS9TE~Spt5{wsfm*E`WdZg@l zA%7!hP=gdSq{qU{(C9=kpVqQOXynoS9w<4?^pg?HZhJD) zhEn|M25Q_P@N7xr_$$+-(jTQu1)ZCmE$qBQZ8qHxhL(7iNN%m!SywHS~8h`L2 z5ieu$^)xb|yi)vX2P00p?5_2$F zXigOUWR>g`Xjw@_M<8yv6B?{wwR3u-S&tZ_o?*a_k@%y5Wa0u9iDY+7B^)iW>KlQ_P|nWu1#e1GVf(=I26342|X1w1U>uNx#E!9Ovgd~Z%3ewfhA zB&V_OaO5vL?vg~K10y3A80;X7P(YK86!GxTXcpmCv%zekY+wN&A-nT=lK5vdC6tONP2Eoqb$RE(WUowdT7Dx;tL1lC$ z+Vc;?3Q~NG{~%bgt(tSvV8ym-t-0F}#3h3d%D+w_2zFk}z0COLW6b21k60J`M)MOJ zLTtYcFs4cJ<20`@0Zow#tbe>9@Kx1<9tp!7g?hv2YCVe*Mpq+`&B+@Q5}dqQ>->gE zP;z0;s->`hJsi)5`79cJ&2q{ggvFQY%F;|oHSODHwHD=sLFrnuoZv(_G)@uZ@M^B#i^X4fXT%`< zjI<~c&JL4Nb5^Uv&3{;S%dcHNWZSmAIJg^M5MPnsmS5vmFjME^jJJAng>T}lQ!rln z75VIIB**v-e4N|Qd7EjuE)lhs zl8ptr>+w9z%V?lg3sezcS~CSMjmArTH{xbSxc!H@jU(zT%wY*^$dQ{Ff6~_|Mhgr{5%|0fi?8Dk$^G%u@L>5R@X!y@c%11d zVi}tfha>ABF!0Qw=6##kiAs(Eitl@Hq$VUFxmYuDc7MC^@R*^)e#bAiJ2)xTGqZN*abhFEra#jt{Mrh+-uYjEyxEUCC^tajvJHl1y(PR~mejc45Mlm$KLC=lDVDBoMFi9*igRYLV6!()|jiRH5|+8PZ1$b*t~LoDa|Z!@^s)u9d_1xr0l`l6aFJ=59aD zKewVvDZ!xEGYv*T=h88ti|p2s!b*V=IDdQ`kCV&>!E8)7GDag~5_1@s#TeN=uL*^k zU>a*kJ5&R0YY67j>-2^*!o@b=osgIC5wm~pT6xK=$4Bg*`$ONG`?HRQhDl4YeNW3* zc;WoRBgvST!F;Xf_aGmNNNHS(BZaZ0HE6Zjjs|QN8xs>Pm~BMfJX@nBhj36xDSun; zz(L9^kUYM&YHLj}USLaBc`N2$-eXW8slibg2-pkpG5Khs#_4tm(xP#p;)#o6H!+hp zmnZb-?cIS{7USoazXS#-bHG&tDrOJ%!W#|;YVGCgk%)RoPF4^bh#o|SbRP3!u7+*o z$%_R+d}=7Rj-`pv!VXjb9pe-j&41yNo%7^sX7tiWLQKVJeEmai-q^1V5oQ|wuT6!?k&IU93^$uDyYDxlQ z`*^*5#{{A^9&4y~KTq$;{k`7)lLuD}8Cvcs$#Y+ZdnfhEbT~45B_$VlY<5piFpOlk zo@hz~Dup#z`wo4_jrp~rs(&ooiXK2&o^FfH1`0cEy|-_-ci3hJDX0MI-w)I$xyI>| zMc*jom>W@^wgJq$v4Qnd2BQ>i!$tB~NkuPNZdxt)+S}{y*@?aP-TL6ZdZy^3H@^H@ z9{f=w%gT?)r?G^G5=k2Zee8oivQaVUNiSz{SeTqf`em^MghpRZpnowb594%aLs3yl zfuSMYAFs>zw@)rvKRSD{B)ljH%4SWRx#OkMF1D>on(i!4H|6FR*rH=I(tC2Lb4Qd- z>F@11a(18Cf^or;t2T_uuX;AKtRTsmSDH0+>~Q|}RXU47eGKlNO8(7S^nvSU4@)-m9>%DkIt>p=yw)k3TiBpp4lcnt!xnXo^3>o(*gqyJlFA z&{f;7oONV%rQ5YqZ#Qe1jqdzd?yzyL>`-ct!9kL%J&`$sdEr|cwMvnUMjw)dn@z0F zaEdkhpKo~{9D=h+XJWsMK|PY?_h)4n7AD?&voIzzX2c=g4zkjS^r!X7oFF&Zitb}V;3TNS$3+gWw>{RA{a*g&5^%p-}vtKyPXqXc9 zmlg1w^};LgOH}=32;8-g-nCKvWjNfmS9l$+Ded}Xrgz(2Q`Ecej9(*PWbS7cv9$N* z)5vrTqp4^f&u>=XHGiDnOrAhS-Oc$`^52+^^!yLq zp7+E3`-dV-sEF*uif5Duj3cx>-Ay zApB&(wSOPMwI(!BGH772h;^dTpw*+}-1m~5$D&SSFlzNYW8yhh(BNcvO6V*>bP8IY zC*D;{F#1Ul4#)>}5HvZFoQON(*0?n}zKV5$haL*--%mc*$ul(rZVNp406BQz!2rQX zA@7PGf&N8Qcudr>;3P8|==ul;Bj-p%s}p(J>3_#9QR2=ueG)tqjgr1F^hDF5b0YYW z4+6FFPZhYTHo&*O8(97G2F(+z1K>MfrqV)0!DFmW;5m&}gvTCb1RcjSqywE+gVYWh zKp#R6XJII3NZ1iZlL4cEv1IrvQ9i0;>_SpsUdYZX!2=*3y#N z>wg^NM-dc5gV9KIIhulIpzF{Qv=VzypafojD5cPHoYx;IayTSJ8r(pxLQ5KkVTP$5 z((qmBo0m%(1&a!9C?SoqkU;6+;+WyJwgP^a26nD$v z%_M)zFGu~htKV+*JAPi%<+$s2*Yg@z=i{s{&yV-VzFk;URJfIV{52E^1$?9>M}LCw z@AsiVAjDLW&z2>+Lnh4i-JKP4ipsy@QdW6Jc)e%m0Z1*wAk(N0Zw5^elHXX zdUKlfSk$bt{P`SZ8u zJ~$wMedq4GHf`9(aBE&(KNt(G*ntz}3-Vv^mRDbY=A|>le_jfm&*##hGoR8cfh}4E zO3FxpwJf*|Pl@#08CYxnfp%c6a<+FzU@eSx!eaF;E*U(Rq7x_?uRCfJMSqm#JC4^q zhFHb)mLSW8?I08~Trk3E$aPAC_o;7#Y=-`bra>iah zCadD;jEU;#a{vrOX!S;b-ePH6W6`E?5-y&Zye{B=PP(vLpSxm?dge|XO_sH4P9Ox zWTsL)tc5uQ4=dqztotz(+FKQzxMHZ>IGWQ$s&4>Z3Cc6MUK~U5uzv!FEGGUqzD2T` zb%Nm5Sv4k$4qNItO@e^@WW5uN*_0P1csZeNA+Q#AhQKOcvupv!G_Sb@^!SdOuKfI) zuV*)}VQQ~`a@T5tfF%!SUj`4`i^3;R3clqqfxv=!J!IC}fL_Pa)5YYS31;yGUWwZ1 z2HfLU5#h4_+aOmd|9=9;Rqez%6C+_ ztkM5Xm{x=2tLdJ)4P`2rR)#pF)lREf3o}f(F)lT~0J3_g8z3w8p6-CGy5d+3ma@9V zu|m8vRM)4EF>hyj!r(fi5ckLF3iAI=%qn>Vdmc11;iiz}YJbP9au@D2+iZMxU5cdx zvs+b0`gZ_S;r0J4Ko$6ys)b<$!wIBdY$E2|e@*kByQJoaepJm5{XBt)Z>#EBIDV2I z$F-MWc#0mY`UK8DO^;RSh2v-F@l=q23m^f4;bby7R{0dpKTFT6^8?4HC@ObHoJx;m zQE@6od!1S1u74wVVu}_0pNFRe0*;0k7(nqUb0xcJJ>BUsTQobdK@bcYV(DU(qGZdP z?)3m&+sJCgzr7Sv<;C*OSe3mbcRN;P1~R4Yq&Ssz1f;Sl=qFs*#)AKM(J9AD!H(#Z z1e`LOg#Af4DJh{Y)n}`-+dE=XYPF&=M?rs0O^m1&3x92PvAF+E07|g82yx?7{K;OD z%VOfzYcy`Nj??bcVY6AVs<@MMHJ&pO1hv?s z#hnSKnp~A;{|;!$&Q>=frL-eUg2j!)N`ed)#$`|egQ42xe;Je{SY42`cPNsiPqJ!i z%}5LXIe#p~=qebJO%xVCN)|!?tljM%K=PlqyG}lCcN4+xYW_d4yB)A1!%}j0c30DZ z>;Ju$_g{d9Bo^sUbcV@J@oiF)xeg`j>jZdtk}gQ`#c5JatyN7Xh3|7@d%DnyNmC*v zCLXI~WysDlxyeXwGScjlT2=)VgzxtcD<$dYNPm{BUnzC&P=Vf-SW35~`Ao(Nt4A<) z3`;E@G?L!=kH3A3PswK#Q3Hb;toer%y znk^Iy49#}vNz%?}wgac(waiYOz=JcvW4Hl#9qxKo%_?PS=?(pU_pp*bbKx>2xCzsD-+l32QtJh8 zdIqTPM)w`QL5rOvb*7jgCI~S3@P>N54(z6$CgC8O!GTa0Bns<#k5H%#@vxH0LCa$V z`l2LxGLhh;OSJml<aK-1-P zFd7VM`egH7eDB`cjcZOGeBjfQXLr0HA7yrJ#`o=gXX*0W>JO}W{gL(Z-=33C(Cno( zz;P#G%o*rQsdRA)UgW|zB5boFoT#f4MMn|FYAPkhY@H{uw-x(=*{tR|hbECE0DlkH z&7;hBL5dMdxJlf^O(M~HN(h!p2$o6+mRh?~z=E3g^0P{- zpA}kpky>Sh2*(=KZ#7Lb-`Y+eveTqYy+6OkPwIwM<3>KI>a$WPy&5%Nv$(4x;39s2 zf+v`{X3L4~hv}kwy8Qj!>()Pc^nU~S+^%Etx1TqJA6>M4rDFSM?5#SvomhVJ6C0jw z>WDo}WOu#fifWc>n8gCt!8t*16oxVD^%_>4Yr?=s^af!Vs}|(5N`4&h1Is#W6jI0u zOft;R$M}&v%VWMyC)jK(sS7_w%EdJTOC5>)Hcz64=H2GgqPnkvWx$(5HGjAUD^3Ll z0%WKtNt{R)@yv?T$K`z-XUdZY$Hq2`&)oc>k5%9gp*qxcj15{xJjJt_rn zB$5dNV6z!KxRCr!TDC4B(Y(_jn2^ayCa?n_B%M?>jjf&clRIES5;Opk&qhlkNeY+c zc2X><(nsH(0;eR%=?O%Eo_~&x%y>x6+Ek^(ueu3zu7h-@)p@4UL32|T34!^o-?C%J z<4-?Yc0co2%a{F28k^c*=o|ckD3`KV=g4)yuETFr#x}{KQXjp-l9!)cZyU zUM%7~M-+^O+3Bv+>71!`=0rjWrv?*94~!N3P(lcr2x+MGcnUp?M}HlbM-_4S{(|Ox zdOW@)h55-X0=Y$~wHL%UHUF3lo2cv4&K=K-vT- z4|k{uVE0|O?3pjQE5CU16Z!e~f5QE-cDww;%00hXy?n=JzIInsJ|KVo>i4g_CI1DF z#}T{~pK2L+;QB4EAAh}l#{po5aVmzkfS#1}3o&LA5Vw;Th;>o2IdQIW%Z0A|+dOypV#k~W z*cXpM@=nf5s?FuV5F8Sg7tWYnu8 zxns{tc}pF5k&`4*_vHF;43$EyMXXCpv&_So$e=4Rq0XYoKm>-2VA>!%p^Kf+#ZKsw zVXy6AmgB1FPqd^+G1@{FN+$OtlY5fMJ;}93m6k@8mPVD9#*QVP)OiZg>g`Ud$f`;s z(2(jQn}1cvp|$z6ke5hgW=DxUaKpOiK46$hUmQP=*;n3fk{jgjHeq4OZ+G9a=$^d^ zdj{fCoPqI)i!Z#1jq;=NNqM1M#m5e>zx(%l7Tot5$uwv^&)m;mO>K}zvcxkC^j``2 z=C4rC&N~|XKS(ujbdzb&+KNUYj8Cz%Fpb5woPR)?LkJb17>!QOM3~vk&QRj8$~hcA zw+h~EBR%&+{9JlZ^_(B>+s}^1H2w)nUiX?ou5{d>Cl3m#tCa z!+%}q+OM^V`8}Z>i4DU!{SgK$)C;Rr_?A+Eggm{fh5Teun)TmLj+j60(#a85{Nvn+g1((|Bj6v$aUrAu&6^|HoLZ+A z@raE&oxE8HV?IP&`;ZzfpsQ=L?HGs7?tjJRz-Tlq#~q$8_qpaUez<<}4o0KZV3rXy z8g?^Ik{h{D%R*eoyHiv2hSbyqjXWFl{XtOr_dvf+lm@gclQJwmV~NWpppx`tUqrBY zOZ~~QWF|RTNGjEYeWgOELt+%+toQ<3-Jr-&ao_|31IL24^b$Bfd%VHk(|g9oDu4Md zJY(4M%l&hv^_e~}>#O+-*34hHy6nzPYxXX?6^92cxU44^^7fk;nYb>E6?zPuh);|t zm7kj+&zU+_-Zcg+@%Yvz_6cqfN=3<%(N&@`BWu)9oE&9}RDloCXiA4gZHF2qf*$e2 znip<*X+!0hUGJ}b@VXnfPv3KGX@Bw6TPOeirh?e;4X2mh{PvD91$(4E^Y&a(v;CTA z1>rcL6gLJaC4zoVkxZyWZ;J@ls3vTSszm7+e*`*s5KGq4UJ8ZBjj4I?KQ_ys<9u9( z`#e;(_~8X>Zk&5?S$`(yrdKzOEkbNKAaH@8qp1t@0vJy=bTcP3+r!J>B>bZ zU2`P6mW%K@6v1p%tL4S6f<}`5f?e>5qxZL*tgmOJ`|*#m5vFY@K7Xn{6%+2D_{0&+ zgvpG=;?aQ+9#dZrXECz2HsLR!WkoJYL=m&b0<*_cDv&T>*Ud<{^UF}pnvvxN1r`2s ze?mQ8b=8img7&)9xYa&{Vki#bE^;(NAjJ5GW5v(yB zBGN(YOzB^P!rARuzkd`Ri#^{UPt_#~q>_|R6!Bfh+cwPJbQCvO7P-gPh5Npii^n z^7ojh^QZOom1Z|Lvs`vbw&#i=EdxLk_U%#WP95%Jo>4jCMtGwHlq4B2int8Ah^TLy zK~Qn+gi>E1jdh2z3C=8c3LdS*m;5p+Y+tt1{}AO`D>4UcJKU_bm)pp^d?w% z_lPL-BGDs6Du1?tRFH}msz)3tC89fOF3wQ-K+z+G0o=(nlU=!vg1~L7y6fd7H=N!$ zV(6W(-*V$~w+(sd*s;quTu~I5a@*y{Pck{{-rh2NiQ?O`y$uk`0xZ9l$k0sl%bQm+HdW4u29)2%z$19OqNhrq4IW7Tz~~ zT|FK;ZO6>wht}P?ZgK5a=DXpmCl|>JxlqBFrB$;h$XCsxa==%?YQ;Rin7bEC@YJlELps7Z=_oC;=!K$L{T2fg>ouq4Je&HENoW+` zYD;Ept?`T)*3XtyK76DvI=VQ~5w58me0Bfy=+$?O-dj0kOK@aKs>wgDV&rw@9-KUI z-pG8t)nz!~^d*^Gxh0wD!NTG!Z~3tCVQJ=&-0b`NJF`P+ss2E5X7=D=#9k)?b>~p; zCVx#bF%gypodK3h2(uwIVBl9{jwZ}{TNm^FmT#0PUi4`yUO$|5$*D1QpTuN0mrLQk{~=adKBCl5V=4HmaqWLVCV ziEUiy?`J^Rr5;kyXL3)woN5*xA>m4RVm3T6NlXeSwm;FX>M(l<6aL8|?i=yt)K2W| zs!vmsIF?WGy#1)W;l58b7K@n^ELMx=!~5h72j8=}OgiW~DfJWRb@GJy?v(jgFn`+vEjIE~A(4a%9;Ob4++n z%cle$1^W9PrD>{U6v@;JyczMz#D8Od&>tewL?}$L4%>QVeGj{>;MyhYy% zBbgvC#Os*{eB70^+1P|;CG9Y;rJbQJ%%eChygzH?8KHh+cch@Ugx zeBZRU`Q^U*?mhS1bIv{YzL)pzbqV%h-ZQUQ%O1m-ON3q|5Dr0|H4c0}BM_4{j96^%)$PWxg6;r&H-_(tBkyH3 zx()1}__X%$tO8en!fP++mgaux8O)mY494s^bV$GQ`IUxcp|Q(zOP5zf^A@u6u5V)J zZSt%+c6*tF!+owUy4tlxE|!(9I0pIA=>44B)_AzPxVtbSxW1qM#(kI@ z^YdgdNwo4}t=nc@Dl=Cc^RRbCOzEP+@UOoHmXa5pS~+fOHNTw`VC9>JIdZac!uPe~ z!IfNzxI8>0BwWt=Mf=G@qq}1q{T==7q{0}taJgq-w-4jeZAZ|L zQ5H4U2`st>e5}&_oPWmh_+*?)JVIo4p61``EuPKV2D5bkqO93GEq=0}q*T>5n|VuB zxiDv946e1cXE1utA&z*~>|c?G!aVYz%ih8jlQp9I{NH^L+l6g2x5;iHNLNGZ^a&FC zH4ZKgYHm%CH{SsQ<0J<$$8?7?N951S|14*{<=%2vlzx`#xdMdTWhgfNUepo=FrH-j&42{h1s-vbbGS2c#>Wz7q9W~ z@c^re3ULR+a&h-y880*~6%!KT9o{V=B3G|&xs$h>JL7RfQ7p&M3*6^dBzVBMtYI&Xc< zB)VUUZhnmJpYBebVA-A8^JjLa7LVASnmek@OHT<3t$&!gY~qxj*3?aFeN_?Os?yo% z`qqNz#zt*L-gt>7-d?cV-p(UR9}}ohXo7vT{*v?oX>z?WGa#y{qCQPgm?VvuQ1vI@ z$T*+O62>Dq%DcK)C<@g`{o^9MqDtmZoV#1=9-WX8nL2sARGM0*tzHo2kzy!~F2B$j zsP^@Zk$>pdtzM>+M*BHAJFIne+Tw`B`=+ZOYaZAD$&WiM8F*z*jR-{W~VZx~sv4ub*EZm{^e_VFeC$5Ay|lHmQCM zf7#7D9MC=H|Hi)?pL5cYY|^4n2pixmCo;c;OB~iD7!D zgp>fz+a>&e!o1f+Y1g>8M1`>qFe@|YS3BS<(3(-VgU3!scYs%#7u64j3x;6qRN)b} z_x1!ZwZJFzAi@ki;NYDghFOofGilWPyFcCj{NUy0eGAf=oE?dcw;KzVRmTPAFMpZb ze6rkIE)_97%mI(}gW3R9dbqkcNwRscF8h`BS<_SfV+v-Zz5if;Qq!Fk1N&awL?571 z6u0Xq%$ioAXgggNJf(T2a`2mXJl1oZEJGCl6Z_b<2W}fs87|!wnl-UZom?{^4D7DY z^c8bAzWeMAb7eP{<%y3th#4MP%71c)U6mibiMwGAyf7Z$oMy#0Tq80IJmz@x2_=!< z-g1dh1m9kf5)pshh|3cah zFVM($BUxb|^OgsRL_umBtmTeB*W^R9fA)> zNBfdBB2j{`b&p8gA`&D&K!5j2_Mp!QdWPa7f(Z#Dc8I*G9dQ@qGNVMDZsBQ)%BtYB za_#;l+a4|5Fgm-02Sy zH>?>I!KWTs5U&$zn0QJmoMJqUqqB}j#19J}CKUZQ=4CA38cRH$9>a%~_H5cz`y@&R0|j$Pf$G&?|+vj75R%CTzx}4)M|faT1bf2%gN8*&spd%c69cXh<)V}H-F{0 zkT5;(&x2R0COCL3pjz3yQ7oP%}wCsE0Ot!se)XbxrvOEI6q==E4%5-@}8dZFMF?LcXQq9dFgE%Y--5oymYwEUTnNj{liH3qlF@0xe=9|=veEFT zx1iv~(>b2KU1L!*=fHB6cTRHT^Xwfa-F`jt*7eKlwN>q4{Vl1M=gTlrYME&8eJ0ph zHD2`Ng^TPB#KOa!YklOW{uuO?kgrF$lZZuUF4xO z#mUYk$XDzT;mAsTo@ADta9=KF#4-nnJ^@tdy&dIjdckd;Dbtlb@b;4ix17O?@NiHa z{k6$UBg8p^4pc)gy=6k|%&ZW%Q4kBE$Ma%qo_|{uf1>Ec`NwXrIhr|j+cUQx{4u}E zaPqL=+%ts_D#tOeO@Fw3%^C3{57{ZU8|(&ys~(%R;xO;`%wD${6AKy!O@mDlJxdAU z)2BB0kMm`?PLe;75e?}$?&Ig<$A+I~R+Bj50O(1gnbrM4o)FkLx08^<5)rfXIIhp> z{C^~~^n{(=a(~7@5~4>#LSpGxK!6|JHJtu#2Mwp+vxo0=(Mxc5^P}KHt4>%pk{^B| zC7cOm#6NM4X5H>6(+w8WKaMGiy$GiweV7?_f~&u}N}%B7K|DDc5^aZtf&+)-9%#rn`lS3PIy~ zXL)WSpL1+fHYzixLc-C2v`n-FN3$iEZ#&VKM9e?2SnkMN#yb+;^x61xj zf=&@WvzFKqhFN=@X9wfnb=75N8UwX2Uu zhU%xkxYK30st&DK@sEMO@_+nrT`gWNE8+c#uEN#F5M~>X;Lrb-ZDS+@8+Z$Ox!pA9 zZKltd4)Q1H%`V3rSUXA-IrX;bN8f33ax@x)!N;K1@4Qh3EwpwktUO!X;)Ii%i8*6YQet&vLXJ=Oj*45R` zQVEr(lKv(zV!aU%#1E9L+F($DJcdaRbfIYIjyn6}=aTIdWHz7x4=B8cS4H@K{|Akj_-a|75KFC3c9yf@Dg4c~EO7Ofol0wFV z@5zBHyjgH{umom`r+>&ghSK^iEb-P+YS6&I9WV zl~t9e`;NEGoAT6iwX727eSY#&W9WKvu6OP_oEhIhg_v^_`2@sp z&Qfin9mffRBprKG%w2Tz#Cqm0!Zd?|-UD=oa%8odd?JLbZ;JU7|cC zi)n5O^i>_26XfqF8A!gRDdAoBF^4v$7r(YHBZI(P=9l)trDQ!^yWLOvm`eQ_+W$PT z?>(ke>gwv|Yh(7@b=Ouy)xE5+XG>Il1yJ5x5N(0tR-m{QcXy|S;!>cvySr;}Dems> z?(Y8K?(XjX_@B<3xwF}1b~efG&1CM*-gC_7=H2%b5AQ8BI`qczCm$OAt|`3c`08#MoHZXz6$jlxZWryy z+#CO1!)eUj+%8CVJJvH&;&E@3n>gS9MHrvsL_uws)k_chW!R3cfqsp>?dftKjIEvF zk$JNQKCfCY?7T;E%evUKakBC+#?CRGPQvw`hSRWp`~&En${!Z)GP)K0BE2rDV;?}R zZD_UX_NQ2Zdk0RSjO39km#{1w5u`z81cAK;hZ-MDz;e))J31Pj4B_1;8R>1hcShh3 zuUPBx;P#J;FXT3tLe3$P$Y{cCfo{sYx4907zajJd<6^0s=qt#=Z47xm7Ot(DF!*IM zh!_|hpMlz1$z}KzoExKgMMW%%$ESYOt?XXoSUaUk^$o!2!Y5XAf_}wgVL#)Hr^mk< z>EYDNz`2CT_-#GbnB(Fb_bEG;6Az5D1;4x9#WP-ETLIUNLQ|RlelvU%>`tk<)eaoF zta{nObpb5FGdkc$g{QO|K9u-xkd(-jGf(@=IXX;6xXh_LAZ;M84)KF+QY#Lw7 z&ABFf%k<2eX$Zp%aZi6ExEsDEVR?kPsNglV$Zp4r%Qcy;Lrv@Q)_NO{mLmPQ@)hQQT^i{l zrUmTGkXlVbhyndI{UyJF=aR(zj~8c9=8SD@Gvunm>fo#GEC0Jh@`Qd(dCa2DDXICk!t`QK0WWu7 z_H3$b8ePSngwOVCq+?<3VwwC_?FXYA=4vuq=j|2owmjdw0C8thd_eY@e2J`?*wy~p zoC=95R{lO8PJXX=uDDb|TYP7_&UEH|Jo~1Toi~}CvBGsVb1?DP^FvzKjXSo3*ELAVubH&g13UNF;#vJ-*jOboeezx}I6 zYR(%@0ZpgDlt%|C2aE}MDp&>TP~=(KRv0Epq$fDklq(B&_-ot`ktBY|uwQ?pa0J-~ z91GaHgu^J3*}=$DWxf=o;Cz`8gVQ0)C}#%RAyvY!s0tpwyh!hebN*R`NPykw$N30Cl~N{X=IT=r%02+9k;+FeRa+8{*d(n zT5yM?!5k<9e};Y+gEs50ZI2>=XO07t_(me-4wm~3JrCzkxGkL?oEQ-XsffK1M1aa9 z=5Gi+f*h1;gzD*AZXI+n9*jIUFdH~AA=s8s2n3(y_#Z*vyI?jYVDIGrMnMVIADIf$ z<$xS8b#jgvy#M-1Om6<}`Wuyp%2p(d2vBF!OVr{VNr634{`4CS!P%{X{u7J^#WnXM z=mN|!DF!@74x+vjOdh}ZC$oESU=t!gBBd|_%N&@!oSs6Qsx&GoE-FyrE zIV#@8^_!$1POlANXAi4zodK4!@Jefw2>WsAs~FwqfeTFRL}CC~Pe*Xn{5tlN^~XLD z4$A1a;()v?3MsIQq_1M-WRS~uTsq%#e5IiO>T84+k#u{vJ8-yfW@CLK`mv#(@uH7t zfrtIdBOpN^nQp>}9w9}4l7i%?3b2T>r@j=Q@=gkMy=K(1NP$=JHR+3!4@=Z-!`ngM z+>`&w%(@PrmIpQghzP1l;vC+BV+ZAmU_4jQW_|E&8XVRxMX})eBGD4zo_0oJ!E87P zWRd95+mfe(6)PT~IuFH$PJr?kf`JeO}<|{VNQbSmIkP(2WB>1z`C0nehJiB?lhG z7tnaOM|FNx|LaS~{HqOO5+zy!qUlSguCOUq_YNIdev;O|qfY^Mge#7HIWIi&6UWi} zyvvnKEEhcLS}CF}KG&K-bbVy1F;VEn;D4rC6PorXtDXe59%Pur-jC|<9=$=+#Ug28 zR0@pz0Q%9bUig~<%C1w;x*Dv0H>9ANHQBs6?41_a=lmm1Ad-QSq44=C1Hlchq>Ehg zD_!Yl=?27D;JZ4cL&X;y#*82nVcK4Yl6o`BR?Mh~$hkkq)H+CuifnN?NkN~)D9lpX zB>M(Ku8@q-pZWMS&buw_Dx>)J`Cbt{3Ryrxyf=|frh<3RgEv<&)F<>9gcKMztCcXV zP#LL{cl)0PCIl3| zUa*7R6Q_GAV0Vz94oq_7Vn+ltN3alK9SE)BgNLu^wtU|Kmx}Ce;u}z4I{&hlA_jDj zfdrrBB-74i9YLtZKL6O#YlnL&_;(Q{SCOti)=)8{xOPP)R|$-`<`SCFsPv80w(03n z#!Mww9VyqQ3g~3wWEW%^&n;rlC3Y${bXU`_j|Ox#5NxAUVRi`EpZKcV_nQ)>TNn}$ zdz%F24GXYMVkw5m2?C$yu#|N)WPzPe*07b8N#_P}=Z0%-F>XP2%e;iT7^g#3{JaQS zJq7KrxfqW2|g^PttS~Y}qIpox+(Dsm2Dw^=c zK_2)9^d2c$WpM^S>Sg-W#Ins->v~^hB&L15XgqL<%9F>u?d`9MP&#ml9srLns4-Qz zY9q=87~5mrvF4OvUP{@glCD>Ky1M)>Nm>t9_B|6Sb!s{lWjc?Rs7fd?OChz|AK}+B z6JuR%x%DO3kq19p%bHKNS`j0P>(r_cs}~FC#U!D$D@oxQ`+im69`&n9&=7UN7|w-h zID!ZKj#~CV%enS(rJ1MsZ3SR)RKgJz03G9Y^cIk2r(Pf0ozW+V}NS8VOigk@Hu)U3tFXUV2a*TcOx3MHriE z(qX{eVW@=%&qC#K)Tiy6^sA7@#rAT{>8}0J%)OfPLOau@&(}Rh6a$K}r}wi8TBB~B ziB1UG@Aj9i_i6e?pz6r>8ys{!=e>lEQdgG0P{CL2;hQw(HqO!>Eu+X=3XeOfOs-Pf zdl0A{@zRPnr$?5X;^he0H{_Imq(x}xAmnB;hqh62ln)*F61mo^Q8wnz4P=FxGp*}P z6~oYYh7cKz=gWy;D? z@=dK;<5P+AR*~{Cb*11~&8FN__U8Y!C&=TU|3=$v0`&lN&)g7kWkRK@f_c;4xF);m zreY95r*`Cd$z)b@0EwH3n)U$<51Sr-`XUXYiQHeIyThrndmtW~isjD;RNYv!(E4IY z`*yY$NET%V)e5q4wJ4p*B`jG{m79bB^q*p4(x*dQ}?R!(j*YK9sg${9Aaw`W60b0`9Wq zo;fI(X>~QwRmgL-q!;UU9bZLqX3{n{Jm3$5!Th8~76uEeT2ga`kk%O20n#4ck?a`v zUo}>KOm~TsZ^-i`aUM9mGZOlgD_ESdL1_68uBgz&oxoM=B6bYv4e*F1G4mfiBn5 zb9{9Eeop6S{}^cceoAy|Idk$jjR&?8p%c+c|>ojDal6cAH zFKjI(2~aTkRPep67zOmVOOCvq5R8g>NY0FlK`2~tJITP?V~=w^*%S+G>zKfZPd<;X zU*C-t@0%oes4 zh90c;YEVbh*%%SK)R^XVc1mAFMY61`(xeC7Nr5M^Qn-_e0hg_BnM)WlGjbwv%=yW> z$w4?w^>`hjMA}sInGu%k_UgfwLj&&Ab#$sjVC7u%(@OUI)R}Oj*d-(*+Wh`oO8L16 z2t(slugsgRSQk>e;EoUp1+Ld}q5ElQRlJrYmX`bkh>as<#RwLN@zn7@$@}1KEMsX? zTY!JGZCI8?;c=Q|8H6B1EA19YmOpmCT@2<$pa|l#D-M^iLg~X7BXG^jg(b&&G>#Ux zr-|T)MNZi4t?Om%@qe?YC7tB9)bI71%}r+>kr+|W-|S&XZ_r{=-#Ns=?v*+e?PuoT zncIh}hwA&^J(9HTTjJRwu5xZuV^-R8!2+0r(z|v|tX-r-n(!HspoZd3i6A`tF3F^W zFJ-RP2ns|lK~wKoL%PTrzofpBquKU;hjOO&jogs*uK)`Jye5j3p7`_+zSV=O&Y>|y zx>o8(F20fSf%KC&DdPR`1(xIYo~}Yl=0Qx$5nD-$+yuR6)Qa&%dKU8F1PNs@KY(Ja zf0HOqIwVJ3ToF);RftR=AMQYLpDJphQaEA$R2cp>`QhanK2rMaI{kY+b*qB6;&Q*5lMG@ zWl{IE){%H}xIS=weIa#GccC<409{Z4uRjBl?#`Zj--*>xoP~Se!D+1c%*+S1yX1#k z2Koy^CWE=D`QJFFxdumxP?l*$RO`ehmw1u#e=}f3rCW?Y;~5=_)Lc)sdy+#(LNc6D z?IC~n4{#<^uX<3LPM92}O>v5*sHTvOQ`1R-{ur90<0$I+60^|oFwtwE17=ooT}5=% zmT4@V`5kig|6r@*8G9*CsRzOZTS%$k)nRp!Jja*sQk4MLG z&l7@9merphgXZs1%x76`jVJkGXS5Xwkl70$<@D-z*;_jtDd9xc z@zLKs2#j$yy1ncZ(3S4Jz8~nQ_GECp=|O=Sv{fHDo)%;c`FUCaSyzx}>@cse6AS+vS|nUGqB4||VqlDnA3K4`h>%!0qJUjCNWI?jR}vB)gBGjY zcYsSks9BP%;5E=5L@i1qKK~wwG%QcERFLzK6y|kd>mb7QKTtZ z-7xba1ui%;PmkRXns?V&5ZyUmJ8oXycs_0|kJ?SsYeSB1F(oTfPfym!6aL~~-mXoP zF{OL#Up?ZRB72>jU(H)?K)-G6xNfY^?AcA8XifqBYdlCDM9)0puy+m}Fjl9MHu~1f zP1T9&8}gys6P|w~tRDAp*A{btkXjf;$W)&8%(JIJ5mQr1d!9e|b_QzkO65=!@pBH)AbAA*1uQL+)s`NmH$qA$(=YP5E-V@Pmnxo?Yfb zCgXKBPqfu+=3(REzz-$hsnwm^-jGc)MVmfmOe@xt+GaZ>at+k^!(IGxVFi!yj=bY3 zT{Yxiyk~!8rnT4GagM@)_7b1*p!3%93jol*{E3UBls`|tJG?h!m~Vf7?;kZ?Cd_*z24#5uNZRE7)?DrJv%s4 z)RZ*4e|Tuqq)e=c(mS>Zz29PY8HJBFJ&X{}+QX}zS=}i}3!{3m{C-~4R{);40m*|m zZ5KD04-hZp9;q{~<8j!IvLVjPNgWKACXBm{e@30OrS3n{ zMi<$Z9EX}GoJ2fb%tj}>G457z*;0#}o-_@1djb)LF%eT=$d4pn$_|&?v@WlIngjPpmR0XwwNY^W zHMnRVW>5DtPhI7AHBKF-fjm3=2pDPQK~l;Ts^>u-iKZau*Gr`eq$c$nH@p*(K7e~ z;rJ{}Mi!^6QbuO=)&LE|khZ0|cq_BD+HJx=z%b*@7@L;ENYKUeZb&Fx3DMr}_|{Ql zqX-ERBt2_(t{etb_jKInho0$m+APj7ue~@a9!<$~ONZ(O7dr~Pm-d{=@DZ%z#@^XZ zJmDfqop8B2as*sGxnnMPq+ItVP-z;af2`i#_&{4S%LX{p0mJL_?=dS$=t!yTeNwQk z+8p(-t|zlexAwL|_=QeydJ&ax$y9!{4-w}qfYAA3!oYJ0rlekKVt+kCyG|j&<>TpV z@Ii`#5JcOrd)8XI2j!1%Gi?p2HxGng8)YA?I>j16%KQ|(oV3H^Yt!z^6F2Q58UicC z+g=Oz3$<~(fLvEgy#P|m!SaJhPeK&XICBVbQ9^wNH!%BiEhIlEwnwUX6^t*`DZs0#_SquuI;-lR7cYnfOz zT&isVe|bm@4E18WRnOF+&c+w<5}XXDJJy~e3(;?bpX!Bv52^+vmLEsVS%}%2UHwJ3 z7^>35#lDKy&liQo@ne>P><_oqz{21y8W_NE#E}BQUdfK!A zw680h_be&SvY}5`2Sq(3jTGef!#Wyp!4vkokC&(wFH`TbytEN*m=fmbqgp0gs zO}*9*)3N-`H|k5G+;H{`v-J2+Hrq#E{5sCZO$QC1o;P^u*)v+%LqEnFl0O=*DH1!= z(W_*c%G7rmKQ_~38vQPI`=x32J)2+wM6`CCMA&T1ii(#rv&Q8Wk%}_7>W4Jjp&IdD zOEnSW0|e?VHcQ1%{iUfEmFO8x4EpZZNepEJ^^2Gs8LVm@XFhMYqW9WOr{Yh#tNT`3 zbjtA>$*b?Y$=Fk8gELfxP7ChTePaSO9iHqb0u^Sb$9snL91Eb2AHuHZD(;Rzj0V`# z%lYW5rN996jdO1&F;FV-=cR~9ztJk+ie}H6fwn-ByGvp=g zD&vlUkh1l9ZJ|9i(1OP^TdOKmff)#xufXiteKcIn%=nz5$5-S zTZqO^`QT2tn)ru~Y4-U#yC*wf+%G5>*Nr#Ti!WcU|8Dc{B!cx!o%6$Vfv|~1sAgi< zA;yq*39H`W*0nLlyMt@kxS|Epg?&`w{7#&()DAv!V}MRAFXH|B0PL7e);L2w+BtXl zUvlKc@_X6pob#{D*NV`NBN_14@EWUmkJ)|nJ-4R=A8c78>zZ?;K{8K(#gL>J z{wvO2%+j$dT{B-A;vU}`#+ZVkQ3+W-joXd*wBYv(Kf)rh~G zKvt?UW<;tsxNEM|P0@9n(ESzm2Mju|31tZ5sqoq|P1?bC+Lk*BbGcQSiaqD>*6+9F zydHhs51bd;(O)A~H|o8Bp=Y7Sd!XQ$b#0QPKs>+2M%%;S@kar@HANcRa`|h&^+eIT zE1jAaz)YdK0`Qy;q=*;GsapCWL>AyL%QFz=JgtSzjeG7Y;1kQ#JEu)@9%UT6M|ui4 zfLfn-?~NgqnK=d<*70B0b_>`mY^gi>Z^)4m4lNo57#I$ArYJg({>F2bi*GM;AIouY zFCo}+HqSQ?CxbXPI-4(aoy&u=7kQY5=Gt3FCwF-m5$%{ z-T|$nsTy=cRCv*Zgl49PhuAUkDYZmi=339!viM$V*ZF6KAi8!An%o)aarcWq&udEo z(xA`2t5ZiaMZ-wRPUdK|PI*r!yVGIwDfCpOw0koxG7k>Qw#OZ)lYf~F8ZXfY6!$x_ zOBKL*Jn2e-OpNC!a~Mv~S>*~t=i3T-Wk*Qb`xC5btH@ho?PX2LJHDAoS82?M|OoW%~piD(KrJ@mc0Ho)7S7g?x;(DhXlRZQ~s7iQDN6oB;U-{*m0LH+2;dkb=}M&?@x5j ze*#E#Jh|q-E!!(PuQo)cEUwVq4>%V?9aM+D?9G~E=Bu|=@0m*bj>EevCKNk6*zVK- z_ZX44PoPyrUD;5@b&@d5d8ttx?YV)+s;rW`!x)jz&bC+jNa>~?Dx=5~1y=5yRhir&kE&LO65GRcOLzD*okUHJVO5FD85#k zOHil)Pr^HQftN5EO{?7a17dosv+El$~p*-!C`sV{P5_fD7bkW|pDW(vqy?mO%GVq)$Wf|7G)_DbL-Z{sdo z(H~-LE_Sj13`AC^DCQ8?>JjNB3|d&YN4W4sgHAuQXFMaJVx<= z=CYmf+cp)&bA@iN#dPO#J1}-zq~N3I1ez%!gJvJB$M4V)pIS%kMdr@$I9Rspb)T8; zFhx;l$!$F|9JOC+oN&ZpeMy`Q9j@l+sQ;Itej44U!k5uuw>0NANKA1CCr?mvkooAT zs_u058km_jMq>FA+ko$Zmx<6WK>t&@+Qcr)`4y{ivYlf&b1~_rALs`STRNw)Ta7=t zJRx%c>Icr2!^M18avLAd8cH4}>uoiQnH|!L1ZtDJuBW+INZR#`A8nyxorWX4dRpHS zZpr=6q_7&`aYbksy=u1nqkj+8gaptIUSsRhW{#@r5j94MqKfcK5J0&7^FTkGyPnIM z*GzlaGVw7G}nA$XCLb^-zN3%b!OL=_%(3duupnIBEFHvj+yrm!$d|4m{)gFaK|l zZoYrOo)c`~Z!Lk;cmHZ^9f8=Sb-5SnBv@7vv5(XAuR>G?ocNDxcN47(x*rnMKZylCs zC&g=)x)=;YeP|3yy-N+vH!WIdA)2%r2+Wuble0L6*nNO?+7)oOQrgg=F8fW(Lzc1} z{O4YZe_mNHG*BqX#2P3_&k;GOx0?N$J-z}S2nb40XvsC0k5Hqob{UMFT4|W+wt=aT z_T!gGZ4e++G#!N`)j;GeA#b#&5Ke_e9Rh}%#E>wCol!w;pXOND2*#c;MuLHa>bt4{ zrfN&m6;xnxq=9X6VIK3)_yqcOXg>4(Ymzawp{H2-7E>>Yn4a*hiM2eFo|@EmS59VT zP^w%60p`v)XJkYO-o#?q`}exRq@iG}g7HTtG`*zFt0|K9WO}(?3T~#i+`vH*78JA` zau*hRqSgo_c?u~%^Ld%D^)#SEf}B0gVvth$wHV`KP>$V+e-*V z_32_^E}HE-r-?V3>4R-0zYJ-XwGAf4^g%3t7m@#8#Vy%tOEIAmE%L2>=v~xnoNM;$?qG2R^5{WSYz)(Y zIzmEhv~f?wp-m$ei#!v*MXyB@4cUZwr8Z83?^gosVfO+Grx)0}YqStIkN@s~1&ryB4(N=B z3reNuO#E(ks11`Z9qTZ!EliI#XqTXZO~MNl<>|1d=>5L*Hd$UV_~7(}#|7l|JoGD~ za&g>iu&V$Hn@8H=+PEy&V929J-Z<-7iHkD$^^eL$wQmeD*5VCrnlQsZUWU2s!g&F` z-7vnLkvd)QBu1m}XoI9Iqsif8GW%ccBbo#R zpJr)gWk}L~*V~1WY%L}ls$`)W`o}8LP$&WfE>{*EMy{abg^_`Ukq5I50j^-c#%14- z3w#vg&>FEigEm$8jM$7rxfPn&s9Cd~xz5&5aQyoCPg>)~AgiVRxN|{ayOP(Ra)b+Y z?I)vD=DFEtxs~>P7G_KxRVXb>WTr#24zpfCGf{a-_Xb^ZEluQ{N(k5=-J}TfWpbn` zebLFJ$+SO4ht+DLEhu<~f7$~VMslsG%V@J1*$r`O&uQWQ zYCdYBW_-nWg$>B{xkcgmPVDu?vsQTt9YAivvYuI`Ze_aok0T+d?TgoesIM`?`!Qq& z=)1mjq=~0wqT)ncl3{saf1{vxsd|}t^?NxPL18>Q<8}JnOg>|y7 zAP|dOuUUkc%kHbjO_+*WtSLx`KPAmIOOSWZTAx^yPttr8uw+#sU5-}2J`42+SAy;? zXxw(T;7_WEC4IeUG20(^zvV%r7dqK;eQE30dsXR3(0yMGx?914dK<`Nj?rvT?xiLJ zWY3PDeyTWYRgloYo*Dtjv!_3t+RrAmW6N@_73Y)0=z}1rIWNFZ;v#Ps7D$8rV{DjX zgs038-R=I@kSNN}jlCJNa2_hI&rSf1AmNPiysl%^@|aXQo#rKoOhxFmJqt1WjgjAo zQHzr#lZNj0!a1dxg!sfo+1aJ?l1^Y@>-R4*A!1_=_+0_IuSxV$-_S<QLRn3Y& z&YFxHnptD)i$C_b6(rvT5+j`G$3>eRgzbwr4yIv1YroF4%#L6VrpKZsHxemw8wl!I z^>-a}5(WTO0#8{j)cRTb>qGbdZ>XA?Y8*UcK(-yH zM9J}{wYMfCSL6@1rTpb%IGPP01Bp$!hwsKL;eosZJLIJ(@-$b!g`sGl?**yDb;2tJ z`+mlCtrMm)y4Pw5?7Efblzt_70xyfe)qCBwD_re)9^$qf+IJlz6q>m>-}Uhe{sIJr zc|`9|$8mPT)yIZH{G4^KV7Eb{j)ATHVu%n_RpUDa{mdTKLePrsrv zo^XMdkfH1ow5I+)%HRjDmg)v7HEui#p4nOzt` zXB#biGhYXu>kr<(ES3Fqex>~mUTh&*&#;J0X}!Wu+Ptkh$=31RcucziG5>~CxyET7 zReN5kb9+yb;i6ow;(h>V+)zKmMkw@`rPPffQy*3uP$({c&O1iSM=}+}AetazAQ_EP zj^>DJjB<{OA8H+PA9@)In#PTj{Uh*ONqiS853g8|IvOuVRE@}-2r@6YEWA!+S#09K zBHC$)Tg5uEEVL}BEYd-cU65Uv{TDYe?haa76i8*q*Wq^yQ7Q?r7JWhD8Ra#EBnB9W zddN^1D3`$sIte+6-U~tz`(2Lc%=$%b4RsF@4e1V{3`Gx#?V1>Tw*$9hW=2W&m-^`y zkQSO2loqMstr2Xg;_n7)N5zcZjL?kN3|^@bq7kkUsu46MZ1u~k`=pV$Hfklhc}R0; zZHRB^v(!HHHUt3-`3(sT^$w8?k70D9I62V6w9^gH5Ib#%yW{6^t0Kage z$qity!E3&|qJ-FX>uT62N9~D)p`3H0k_5DdlnJhj=(X8kQLRE)unfRFe7}RA#iHW< zsn>Q%I}J`Hq(;o->k@{e70_3-HRb;F5Ovt=!IGDHi$MT*CW%Jw^+vr#Lqs3ydmz}s zX%U8UBXOadZ_CLFrF*+^A7d8@2=Sra(HaoXd-zBVq%cGuCiA+HM`jFvKve#m*qx$y z>Mu&n5fRv3__07d6MYhO5{(<38kHKoLEN~F){qSn$sxRc8Uo*yA$2Q&y9wO%w+OO` ze1%y;S;7WFZ0T;JG8k@!-(*;jyT|8~!|^glJJ~ z3?8h;Q7)6JNQx``p;ftY?$D``C*-<@9BLkC_s?1s_Hl zw`L9SlIuaCF*%3)6dThdHX>re;erj(BF*^-UK9mT_(X*>QKr;|Z_!Y0;)9qadHQ67I4hN zaLhFf#UyW*e=m^TJm2h_DR}l5Wn7Fmuck?F@F}F!CUOz#kY`1kMF`lBCFhRg8SlfC z5&(+(O-!O;pD42%#mXsfQ>P)ouBcHZ(@XFY&zP5P27squaJ13t{}Jf~3v>uP%AUfG zwfb~EfPI8`c5U!@cRGKuKL7H5u<-uTaObtfQ?9>XU%FiK-!qKdoSTDME9vHx;{~+& z-c1aPI>?2IH(u*ZK+hj6PwxWh&7~JW<~!wq;)MN2CG#rbUW4u~ z=Bo9i%rZiF2EOqseEGSGW|H7FEqiSbt>_4S-?;Q_{Ag&uZS@#D19qI3uA`cIx8Od- zll#J3!bJz4=-UI*tLA+9M+W|*_8ni-M}sG)Bo3u4wJb_b*)~>>9kYxGEx<)Kh{C0u zSSlK)p5eOqBra+|h7}o?t)`NZ-Zr;PT9r8Yj3cUTKYd~K?wZ0O% z61x00Oye<0vz(>;n4?@LRC%a7u4YgAZFw1Q+3g?W$S;#>$Oe@_x&+-&Y!fDA&p$s~ z>8jRf8`OQy8oZq_1vi}Rc(ScqvykCV{lH(cy!lm7Bo*lt>4=qKCkY{M2Qkb}|2q9q zfPOCM>Zo4iz<3$Z+W=HfaYH?0^*6r%?+XTt9N72LP@XR-D*sCR=4=d89uW^6m>_Q5 zZ21nQ4x7Q0S+aHkf^>xt8GE-~HyTWr6d)LVy=^HQWmskKXK-gQ2P$Q_XJTiRTf=ke!xIh2 zOLk{mGit6&uyX?F+6g{y{NyzE9zLIYfq?%s5MNM2+a?`sFO3Ui)PZ7`8t)kA1<=z8 z?XZ`MlHly88Sm?Su=dk=ljj?munbn(*~CLoiqEUyCXCnD*}hArtirAe3DDqmb=J-! z=jPu<#o;Fxeu7)p|CF!%V7CtcDcG+FlbPM0b`!hCz8U?JKzj^KD>c^#B>*Rti2PvjikChnxa_^_$?)p#si||KD7d9c<#WBu; zKMmZiYH9It!d&wq$bp_ja}u(XqbvF8{-61C@HbCA+(pFU-`Z1{4m{QPld`uYZHqro zzuX3;M{Aq{#7;iXUzoluYMvq?d?zC4|G@-QI6Wb@=g~bGgMKb`t zBYc>P#V`PY*7tQ2!4}GK3AJ@a9c2& z=q8vZVGVGpfX|z0(9=VEs_;rBEi;&P{s^nTEyP3s45Tn9YZJis=A&lH;^(W_Rc_{^ z#>>jfx*N-Xo1*}uL+BqRzs2!_(W2jT_VW$nE}LOYdeG%7cq@646W{V)VUH!^F^LG= zZQFlL-0r)5GSl0>T~^x6KGyw+fl*TO#3$eFPf$*YA!ByQLCG-p(zC8$;Jrd~Nw@_< zDX-Fi+Xnf~-%UN>6^9VEtC$t~TihntZK}_fxn4Grw?M+>qKt@Y4sEt`%|1_jVqBt0 zDmMN1bAwBnc@K((Og~EUuyLW4FGtQ#Nq(gNqVT`fyV5RV--?wu<+Uj#L_p3KOzSJw z+aK9j_>+V(2EO^Pt#5ejQf+<9;>Rq*$3vO}kSN^3PfAZVoZ5IZ55R&r@H##@qa8IT zQ&y@{8(x0UNnRibkM9Rep7fT~KXJwpx!n*8_P(18V*jd(9UF{5b=y^%nLDv7O?NLI z-E8`~!2uO=?p+&4hQ#EX1x@GHWssC3O z$X;K^Qg9L3n8ea{k-4x)Q&q`vUU5sUk-9KV({vHK&`(oWDYiD&`1|VB2M3YIHX#CZ)vXQRY=mD*C{QJaB%hH2-imOuHz z7D<`DnF3QzbJ&}r8+bn1qZ_Cbn{~(N58fW#5$H3(Y6;yd7z<&Dxrt@@!;D1;p*Jju z3g0`jPIt(rmr|il#5^h$TsI;Ms9%N=ilb6OV_3_lp;A*t&EhgY&+Uc_=9?zR-A~y! zJ;26DPB0n7(v#AxlSHu8DHv16z_pMfN~sNW%aTNl$htvfXC&W)!rUR24(RUxUeIi8 z1FdQG2ZFHs(W0{3csf|I&?#S+>lWWrs&zifNUeCB)j&|Y0gF9Vqn;}eI2*7#lM#BK ze>3Ww6T#hRF-nc8e?fE)uhqpvN{w624MdwHxD=mJOM8<# z6Zf0PLe`H*-mzcKVzZpWL3k>_J9aeAx6NWPnO&eqh7;x@}nQxgxMifn(clRTNvDgA^Aq^T2leYVeY_Q3YvcMTtRNb5b|S} zEQQ{nl8=YRSxPN92>tsdC9x)k72e!p`&)NFel0J@X2w!eL(c!m$11RUtxi6X^tTWF z?`z66@Y!N0w%N)UfcSS}g|+fw2-jA%mHt#xtZ9ne@2LPPc`K&&sB57RsYJ!^>OGP> z+Vbi+AE@qBe#sT$%{jv4M=^mh>|957Qy)wPtdW0qG{ln2`&37W$gGSeSR*^FoaKIn z6rStI5$~ee6WH|I^1n+cAP-(8Uh9TL#<@x?AHjvjg!i|w0KadfI%Z?z1CvmJwdNc$ z@~tt1qtj&4BMZcIU$>w2t$Lw@f*m!~YVgtM+Ht0Koas(hfpYHLI~u6M-yUs_mRX9Q zo2EZE45oPEGFPb|VH`SYm?GUD`Y*XVzUj)yCLR1$(85E!;wj^tCl#albtGe&Cix(_ z)NxxBr!OgM1`zl-Pszo&DZ8m1YZhm>EQl`=tOvNFFSorJrjD!jr|FW)cBl}$UiUL= zs!k=uWXNItIw9a)@cQ=gi7yFXS>?Z7v)LSXir9wl2`sg@Zm)7OHyZ`}0* z+5X8~_C`tCcrN@7%`RHzL$iZ+&B37ucG8Gg%q(G?V+g&B)M{+AC)aM_6Lwpk_Zis2 zF?DY{6%P~kl@m|r_WNm`9WOU;9uMor^R{A$>qd9(gm>-_dSQB8C&xUQ=xNUQJR1af zf$TK}h5%>bTdyK(;)hAWffPkk#EuIyU&NEIPT!D2I`0OnM#R0nXkc&hIS!6CSNd^{ z`wF@10@oNg3SX;+R(NOc-WAR(p9505)*f7%bvnqd*+wSlBxd2*xpt>{wsBZWtx-GY z?uadJ<>*cqv9*FoXuKlzz*^5>h+mtxz1#7i4fu{%=$4Vte4d$Dz~M{7g%ud%S2z&- zAZX)3YsHJj3n{So_ z0mfB29uU+h^GMLgQ;ytH*d`ImIi{YMo+4|zbWaXnAES>v9Sj0LQb8+)D*`f?NHb&C z+~oEH5^cS)4b}2W41-VLJR4Z^2P$OvdqqZF5OZODw=<*1pA@n21IL3sDR`y)7b*N5 ze=~y}=Nzt85F;=n=UfNh&ZkH#32DH}0L221NyYBl;c6)Bp$mNTf@TqAh8ZD;bVf@; z1-Hs)KmC{X+SuPk7lwChvA=Vn!ipwYMhAVa-Zv(uquIL#hz;PBzRw(}ys^71a-8K% zeb~&Y1U=mE9@{vH?$@|n@O^|cP4NhvVXwJ&V^F?4E(f6b{EM{K;zTd%iDu!n0}gs@ zbd+~zUNG@|)S#Og35uNiG%sZvI8hn=UnK@d;FTeyBkJI5eU#E%dH(DVHQ6v!O+YyfTo!j*yo<-(?qVHkKB&`|CCj z?S?;>f#}088g5K-?3l6L#U$z{3J`Ffo7~4i%5cYJ{OgL+?<}O&advQVf&_61%UX8r zF}fd9ti10P6jE)5lp!xkjM?_h5WsLg^ZnY4(eKhn(6C2v%j=RJG?lg9L@M2IPP@C6 zMj0$RSp1vTd&b2de|YI8BU2t$M$mgw7k1OHV5*W`o;iZW@?tQ>l^vbMq+Ne>= zY%K-^<~G+)_=POSpVA3_qhaNONFucj?QA(7=?DEKav>|w?O#@QoIs}~vRS`igU zE83)!svSF(G^}a|slBcV3HLf_^xb#Msz3)j>9t%5`>>N!>FS^D7IwA6?}LqmE6|feRuoypqD=)hUl(Vi{@O3j&vv%+lXyN5#rk!~Sh-~weP%CLZD- zG4@+kyh}e^J~xV9IiJiHzj0oMbQv8dpX4S^oi^@L^j2S#13QV$*RM77R(rCf&ZjpBx45ra z&?#2Py&{GdS$HdqI(Kh)o~eth|480#47-`M*BVo0zsk-!ooJ-#X7l9?{4<#={xi!n0;8R*{kw$se#>Ts zE4vq|H{L6}H=K@m#tXX(MCOopl#Kzw9=B`w=D`PG%Vt&MF~$S_9_5V!2z>tXZvMu6 zkM^Sf;Bn@~rUQKcdapXBVYFb+(kFoPqwh5G(f2#`z1G;IQ5tX3*q7G6SF|OyrEH$2 z6VM4CH*+gp`aW}CWteWaZj^i^)7~5QbFU_EHqP_TVuiQsN#o*o^ZkRHI(CJ7 zv_?g9^EPIc9$VcumR{@j?1Sbyb|-~UsBp%GPLETY;1&STL|y^ko8#?+g|jb;f`qSk z5Zo}&E)o#3zj%+plg@Smv{n>>|`z(1llv{a873ec04};?@;rU1W{7Wy)Dgc(BL0WJRUkDBT#^ zH+*DzdqT9Dv`WP-^T{o^RgC9MaW(tXr-F<#&b8xK z?r%U@EBAI9JTP#_7H7XdZ}6i`+&V zpI3~vjW)hi4ItL=UDav&l#?zEQ)ioQoOFsQIEt?#>-Uj`4@Z>5944&&mWw+6X&9~O zLA4cE5z{E(xhsbvb1Kul>*|QPKhakpw2YY|d(6YaNrzuCy;Cm`AG1)ls)(HV%$&W_ie+rGwlx)a~~_+q}x5)KkHd$$Z|R;YHGmhxblb zjdQ71WNK4DG|1LdibWA2zhI=J67H^%HQ=vCdf=@lVud(|<}yHkfY@&}7=+-qC&hUs%Ck%RtBf{oaidqcLuM)KcjxQr+{-|Du*Zw#4)_BhFhF~eIg=JWFnSQ4BdQ17a$Jc z4&53zT-{>TBJBAiuB0{5^QoB-Qjv1g0ERd+=biH4{nL|hfNxCB2Iay1rzdV8;4LZ# zpgh?4^u!k68<|5!c`*3ti8Vkdva1v0fXl19+uNPc75ZW(`9I7XKaeHlPj(Lj1%ivrC1aYF9 zw%qxb-H~6N|7Ppm%trWz;N1R_5X@$!=9wm=dD@g9Yh(OPh$~3Q%M!7ef^WQ`SM7r# z9&w_?<;uKBi+$uw)2%l4BWezK zCF-In1`t8yl9ZG`OVq3}u!NMA6DAq1d+IZQ7sy6|`|V?a_3?$r zGadGsX%XIdnBCxz;LL+73pt>GoRtH{HKc2dnU(#MI$SOf?8oW}udyt@=27>zDb!?7 z9-L(lynUCD>a$2()*d+M0n;}>v< zrEt&n!vi`E-3mSQ+gKrj(L}bOl^!6lg+3m;h+x~4y|>&i;3i7o*I@|#q&AsyVBLu< zV0}@71`%OB^Zl;irzrnRLGU>zkj0)5rKBR0*m0NQ-2*Z1#9r7Bm=~Oz9>hgE2rs+4 zB6QU_ew|A95Q%~iaK6xLXd=_l2kjJm6CyxA^lo}Kd*$1{!~2IfEZj#2g8%4}*zyQC&|l7_x}YT$h#Ri`gC&<_5Tm_PA?YWS$u{iLuGn$coPlqB#|M%TFRE5*c zxoF})uvK^c>uuHc1gp#46(k=3RFJed5WFnMk)?FkknlPZ2&}}>C{ik#bvKZ-d`0Rw zja!-y)k%fjaJ^X$y?n(n*;kx;9|@M*E$VW0zoBRScpw*=~N`|6uL!o!gd>Fubq7tCc_4k5A{BuNwZA z+u+!r+aE3m<4*zyS;3o&=%wKF>t)O!n|gGlBZEJ6O%!& zcA4I|!M%l;e*#Fhz0n<*Ki@mNuAO6`drAX373 zK=G9ZM<-6jVe+YniOX6H!J#bWkW+I=41S~L;DA6ui9>V+Up!gj9sSpaT)+NnLtxXz z0PO;z z$O5NAQJ(BY$Yc+CA$@3bV?M-vT6PcUmHpjI|GO9Q_cKZap)UV|7|}<)(922`XX3ja z5;M5r87OgeVN2*tAijEXF)oRLkfB9%0wRFISlq-qED|NIhWzXQ&0VSe zpR)g3q+CNz&n3|xVzG#hLiE=V`kIT?7J7xN+UEZYtTx&v_a1Xw!uSpT%0&MIi}n68 zM4I)2eH7ksR$K$gh>a)~@O<{?RbngP+*9B<)hRZvTG0@v7U}MX0cxs#bF`-Z;2PNn zNi$Yax`Hv9j>DE*BCqGeCSCgW_|7hPcsdn+b-QqCHRhTUd3kC!4Yd=mj&}bCY)>Hx*x)S{%Y4;x(d_w%!ekBCY}AD7hT_ zq@w>%ZcJpgW1mEH>JSDNuMvfG<5cqyM#`_g0>ULD@y4l#A&l%_eMSGnEXFc%nT)O& z1Py$Tw)P+zn_3+1MvclQzD%I>oe%p+%cNd*|4To3N7iq~w9<_n6xxJwOm-~c=A7Gf z@O2!8j(w^?bm|Dk58l*5honFoLTz6BqRS*;FZ|G@9>IrV!BHY$Ks%bzQX;vHB;1R0 zn^}7GUl@8+JMqs;uE($2dIJ=7B*zFN3!hJDkjR)k@24`q5m=p)c&~?FyO-D0IWQS^ zzA}nyZ;(4!?EDlUKkp)ZFWcQW;g+Fx3kR`_g=1emTVVwjUfA>~zs>%qx2gA8 zay4QVh}i9PU~yoHi&`CB9o>CiRk-oSx}RJXPS|f=TeYqIv(kG?KIwF;BS^PL*bH|C zRkVqnA7lk3EWDZ4Vpbb$wWT$L)}mgSG{j3?L?yg^XY_^P-<=`pGh0#5k8brd-80=Q zilXilwE=|GR=sVBF`a)Ikk<>NFLf_aA@ z!=AZ?@E@{0!E7CRohF2=Go>Q z=4Iw%M=JS>97_aB{f^>~(vAv`qK|xuEF-MsthJYt7m}xw*OI}FjTNAZ+KT#$Hm1%B zpxWk#HiFN}53|@mOWMTSsK@1$Q& zy#Phx5Psj0*w;}sPRZ~I1Jge#$csDtr#km~m#@Ouef@outv`OdSOyy{6`^@h(g2ZI z+GTRAVH<-9(SDEs7E3v2Khk3%Rqj+GKw6A^)fxJ{7TSk;i*`tW$5QLS0uAp(%iv(bksjuL6n8 z3hCv@^}Y+vBKVvnW-d*Kw5`!u`; zv+dF9Sc+8<0e94h1324%t=R0QfKy52u9(X4`gBLpost!siFuq&(i=Svy-k%OQER$v zjz-QcD}4P;QS&g(G7rjGxQB49HOP9mMV+={tdSoIeWbx?Ty+_bjy*a9Cv;A*|FRwN z8s>nJ^fP3RKzEfgA}$R{pCZB;-m%tol28(EaIKJvULMy>ljJcs_*iTY__C(vbo@6v zB=q@;KtGSGr)Pg8Xzy9jsnvF!G3;xd@^@A_quLgY@0|B+Z#h35 zk{5;fBWGh{XBYQDf6E9%-EUpYGK{acizUFmhuhOmBFlNiW?GOn#Qq z`{Lj|6myWup{4=;nO6TDiSAEEJXS9J0X8=Sofs{ylrE{kkjY)y;a=l`t7hf_Fc~TM zFBe}UOfTa*|(zwn{zK>ODEFyp3pCym)Mpt=P&s zj0_p{{v_s~;Uw4n+sN%6h(~jJE9l%RxbeL1DnUAMEt1CBg z(x>V$YNeLPW+eDK9WTEU5pDk0WEjhf$*NySPN?;qP0p~W+)CVB3@qg^q$0cT|4-nz zt6YowgbE#qaekT;>NNeJW-bg;F4K1k)WY6UrrBmZ_WBq z$AoCh%z?^;Ock(_xm}7+OLEFYM5d4Ke)1%sDx5h8fOMvH3hoQp&IQ*0<-Qz)wG^b! z+ZWB8Uk3StqKG)8xS3=xqfI;AH)e8aaN`25@?z>zZ^M&GUu8$hebWAYib@jdolz7n z0w2{eK|cwMer`v*run*Yc+F&f8=S2C`XxeJ-{`XTSdK~5r^PhnpC|Uss_ZC=Ps2al zTX}tBpylJk#}0|g+d7t3M|0{2>bzlZo-1UYP_1O0D+=){4n6BQe{2|!Pm|SFE|Aq! z=H-B9?zNGM?~3(`eJy+s6t$ZUCbgQ5q$^f#Y>!-p zZk-mmpzY@Iw=3YdaAz-thn**5jT#7ND&X+}={PIoKMTDf#K+3Lzskm|Cp>$U3gs+ha%`Cbsw^k}o@#bFZfX5Xyz$AQn zuAZQ?x*7!DX@b~Kw9b6|c zEaw(kTB4xi!929E-E~QCr<6-xwf6`=FX^AteVWu)jo#r|&)+Xsgt=|DFki{O)rO#PZB*L5Si)3)*T<;&V8*OwEZA`{)q zY9I6ChWohRrPWyIeKG-+^js~o{vI zO=ibFFVCTEdIMjqWtnHiz4cOWr%kNzn-UfGGImK9y<{>)(`BMjlu^48Gy@S%KVr+@ z@5;HwDkmy)^hY@Iztw?$A<0%T3xQl#dMe4Pzlsj!myz4e+xbS{3^g*W1iD8Eu!$Io zG;_UZ@GVGk>=K8x&`YFK1n(O^t8{+p?8Z8Ord6yn-$dz?pV*oXB{|2Zs9iFSjH?+n4p0j_aXn%gmQp>5Q*K!yqOhg3s@_xT2m0M$rIWBI{ z4N2xAj#9FjaQ=>b?XT3l!)sOF^l0}JfXe1dV2LwIq*4jEGOdNB{xhUZN?EWwcyS}C zBBhekj~FkDO?#M+@b6e6y!Q8rf*aIkYn?WR&-`%0@ zW-jR;`M8`iY2#^32d9=9?Yec)ufjc3F|M8*t(;z6(w%&Yc~kW{!I1Tvx)LaDdBwe# zW+y*#ZlmeP^%nNM-R1mSYxo;2IS8R`+%B2x`)P~O{00!U1Jvd4)7M!!;5kA$rMF&- zK|02>8B;*{LPk&fcp7_}p)0T#xCe3k;Uxt6VlDS<>Y~2MB4Xihj`Y#u>v?Hi1I}2} z6+^vL#ZBzHoQUwOwYpbB`?Am}+v%kwT8fC53jfU?W7kvO3M6lqOCiJx>9r~p z3l_F)$jf+ld7mb>N~Rx+FxjhNv*f3or}C#Hr?0@qEn?7seAtilUx#H-s?6s8m zAyZh&K|gt@h%ugmCvSe%{lw4zR0cZ@6*SxPlaSL;)xPdv8l>@Qh8B^%2W2bSUL$q( z666l(#xqN%MEiy*E5wF6iFGiu6D#VX)?-YH@CIx(M}mbLR){|LYCWo+swVW-v^2ZrVWG;3ySxNGY2ZMNyQt+t_{PBw)m?Ivl418flPnx4C}78od; zJwWCwdpbGS0YNWwf_l@wuPJBByNS8Ux=C@D3zaz?40Jc@r{p0WRvvvQ)GqfIk8QMA zSbZjJYC6p+=V3S1T}Pl~4WcqcqSal&xda&h3%{b=ppjivH4T1c{tV~Le}nR5b`u%RkTeym zT{VYz;2?Y>FTF$1fcG1VjSKnU{+R#f?|S+9G?~ieLCitp(eo{|XXNJ7>{H#7ayyaq zSdrh+JS`- zv6u|s|1fn0xx+5p4O!Bf**dTD_4<8(1o3r4{%DE&q~wMLcfk~^vNAM(&h+nYPI+bB zLWMY8F~5>VP%VL}+{d)aw%xVNmSKd8cqO_P+LU{Q6dP6+X+$rv5!CCF#s~VfW9ntv z*)M1`e7y_H`U-s|Ue4hgbPI?PdmwlVA@1o@>yztjTW{;`DZ@Rt#`*Se_IHOEU>SGZ z@3~_|Ly~XOvm&j+ok3p9=ZnHoK@5w~S0fHVIr?*Aw304DSi}5=IIyjHkuHl(c7aiCwa!PG51NJ(E zGE{Jbl-^!Fm)6Y$;r3kUJ zd-AK7M}M=z;3~_^Bi_ur?l013` z9gH4I9&JnbfIl6jVze_)_vR+#%#>ZjdFhtGnfn()Jj z`c3$yb==p~lka5s?$1erf0zh0DFY9KZAj4f6^&PDkE@xwF{;mNY?5618%e&wel^Lg zH|5>st?Wvs>}>*S{|(1(k0Yt?qx3dfR2iOKy@Sc8pp@7}c@>Z{d%*QnL}CJ%Sz-sd<4i>Zb`ZM_+F3zLmUVKcdl&yOtC0XJo zfQg%4hM4fzu#9!z?`L^_SEVE|XRS%Ke~|AW3xtajuOgsa2BMu^lg|>3C=qwrwmtnj z8jaC@30IWcO&LG)&U-7}DcsQ&2xPA_@L6@z-G^od|6IG2O`~XOcjd~i8aAy?SLqJ# z-q_?WcoPPi6txe1?%q-ezhROmGk%s91+owqOec~15gX`=Rr*`}J#!E&G~5McdD};v zo@=k3{K+?|SW69bL|f_0KTdXSdvDcs<*V$~U!C+avKDQY1`r|Qev5x>e9U_Em#hxb zL{9!DS8p0+nn^uTI~@n@`9n{-MS8f9rpaTpb7%4A`@ zCp>?R;E-I>r2X3Q#M8604puEFAFK@a9xFw_nIt4fl6>b8^Z_-x{vGuV{ zLwm7J;_F`!o;D7u;=wl`*AO@G9>l3ks1WhM9l~}+L2gDv?qzP8YUMALgL9y=RgAf@ zulOu;(Vq_QkJa^wweVts))|VYD#-kQ#sME|RgXYT72o%xdFi-b+N5lp?Tjq2i zk6?cBR!y(|I{Qk-dH)B#n}IdEYc|XSnQrXm5&7QKoJ&yz*B?I!3_fuUcLz^EWi*2-p8kIzLR)Ilq1QY$~9UxmBkU$v9u!m}(4X_iQ4Ir{bXFc?m#>*820R{Hd}o5DMhTOSxOky;=4 zujo6aGrG<(ItR`%0GcbWK7AS_d+i6CZM#_E*k==lPWg;JJ1ih# z_nhQ>_deR~(rfU~%lhTVF>ME2>pLqG?oJ=;-KLoPDeglcohtn-hkr=#3D+lLcdF@d zg(_u3mg`b``1zs2gndok4GU>a{61CylyXLWKBJQ+cXcQPit$d-Dh|fJNFNP;*{e<3 z(0LS?3>`+Vqo<>MRSA>7&j0__{olDc8!8?#}=yw#M7cA-61@Pg|^(AjUj)0BGp zf?F5(Q34d9)cdPmw2mdcFgxLNj(W##m{#t&{Xvsq`No27-c^iv!wvPN>EibVVmMM5 z#<1e%r>MNk)M4R5GR(NQpsX*L+Y68k->`Jp?zb%PPJ0qIYV2w;_k_p|?V$!d8Kw=& z6O?KZ6y(P2Mf1^^Q*U~MW67^DrsE8+G=@CVUIG9C*l_ju`M2}LC1Z($M%Vqz`=Q4Z zrlJeEEvQ_@HB+FUr0fs8X?&xN2x9K|kDNo1Ld*&EO}QTsC(^61Qz}ytaso5zkX=R% z-75c=#2QE>L8G$GF+Y~QQJm3lzR;E{6a6nSDzCsiG&LhTl4|C2Y36Zh0(p%LvJby0 zVvv`;@vzlPQ5H%*=rjxSUc?gqsvb#J4;K{@nf{ju=$SbG83z92XS^0$w*9GxwvOn^ zMOXV6PY{oaFga`py4QGorMS7u-eILg&oKknKmEa|0}d>l{9 zEB%+Ym!E4+Q%TLO;jA~1-f`%ujUT%~3{IXSMghgmQcUgc9o#jHzn&iZFYo<~e%zbB zTj>hl>%a5LLG!EG>yNgG$uf=#AXiiw%%IsI+99xr_ysz1acA}_69oIZSI`mPuAk|w z#UGB_A;QaBVx?EQRoX4h)VKVDF>w-;D!LbwqfMxBvKci~GCu~aXA!D~ooZYvE%R@G z&3;OWgZ$b^Vmo1R4fSKZ-v%!&Vnu_y$w`$%(UI6jZxcUgjB-3eURz6w51F*aIFF{0 zavm$jvbLM(-=*h{VDCD`q~v*j^2bgOrWHTuAB$gk&-aerzL9j;sp2-sPGPJjG}!Y_30uxpEM9ER2nZpKy$qW;=2{KGowr zxyR4m=HQIaP7SxX(hM|XfR;kpgaX;J{Dct4^GL`ch|EJ=vRF}Zqv4{|dyWN^iAy_9 z7ZKYRQGxGXuC8OAk#aj}JK^U%2x;(qh-u3l(`<9jlicehYB}ah58UIMyaX?O(GGp! zK;c6fBjXK+`Gmx!w^e+oNLRz9}u6h4-InR34 znHJpR9_Vfg`PtJz2Kd=9EoIU%Y4gppt^Y~Yt^rcD8JS!AS1oPnAlA^dMxLDopH$C! z%dGY4v-h2z$oFo<$3iJd)Q3e< zA)tx7_sh7*x*R>fGwjy!TaEr(dE`Ak>igoLbA4W>wGM$NhMDnbZ1(^-VPI1i_8I+{ zK%|p6P@X^f^3V3QC(Qs2>D~AzP{|=5(GQ`@YM(K6)>oU>k|AXNqdMgbK>2J`an?(J zeIkkJ*if45!UK_YWytzVUHDiCd-~7`56~1Lq&;!Mb1aTFaPrLwt}1)UQ4-Y_?~mZU z@{-iLay7R4iVPQgb7qjdd1L&_?bcq@I_5zS-6T_C`j{Sl^Y{sMQ+D+aA)=!?X`8ao zG@Et7*;Xmo>Ca(4My}yYge~I;vONCA5H|N+XYK}8(e@@67p%nrG__1V2MIz2ihy^R zs1+i@O$4q7f`t{pAkr~%HZts%Shk+`|G=sb`IfA7q?A=2KbDOV(?*lrm9 zJ|*Z!zlGew54AYP6}M~sEVNx-f($Z7z`RM-Ik{0ary>qHGnc81w?})yF{6u6IG{l< zm!9_rLGtc0TuUR}bt*Zmq2F=5Vz%Exg1k>fUYGmq=P9tKI;2+?OlI99#0a z)gyzl{gF|64|9Nb?3=NA0gF<#zGz8+`q&?l)y)I3<_O_QHs{sLM2P5U$tlUH&>S>D z)T#qINaCMSAeu}($vMR z!R@wQ=;TQE@2jpjF-`gok5oF|+ySd|lw0O$+HR_pd!tq5F?|m*qj#RwmO<%0YiwVS zt{Vu~D%t}MU$gnxuxYX492NR6NW*2&d2pMT)G$QeUExH*=tA#A0WdpII9?x~;sek3 zUPCah?h!2ZP3f`4>>T4*9dz$wLokQNiKf=@EZ3#t*Y&HZwS{ad!By<4m`gdL;!N zj5xdgolQC(ktv=iaf&OtVYtCC2^Nxlm&7d5uK=TKu}ADp zV@NpR<3tAeE}BWE!W6>pD9B(ff=d0~MVHS*u1UHnRMXkZMLoV~rHbJTHAqF5j&4@% zxHMdTe}M_J^{iuE#P$$;q@PdtD)*F9oWD`}{sqPK+^$3v$S&EC(>S<4ygsOVQhA*` zz$;L)q;9}pz;B!}>SYcL<|6uyQgBn;ZT5ikTC)WX@enoE)VyrGIQiX%15gr2e#X$p z@Fk*?g0l*sbcs_YM4+)7QJiAqiP<5R*E2SM$8liLqcG_Y!C|T6-U&JyNuH5pIK*5c z&?YNK`-yuFC~bE}XBd*dV_zvAWCBv1O6!yX%&K^@9H83+Jmr+q7103aC=gjZdOI%l z;VtH}orss-=PjL(Z_MIzzvUS^q|~L#e``wqrOb-a6z{;lEC^$X+fM}1WnyzZDL$U> zLwE#{_Q>4$FesG=*&voCa@gjOI`BYtZoqhYg-fpkcK^+~Ad0~Ep?(Qnv@>fzdUi5q z#L+}1F^~G_9$#e)2vcGA{K_^%?Fn`Txcy)^QLBrC@Nhg#lxP&@&V{M+rC@GEQi(ON z3hJRfeyP)W{KPlbz$*J&LrWPS$no8As+YD5(($J>y3`+(*eb{?9P553e7{<>ys?n7 zP3q4;WG$iXg*&f&dAzy*R7fasTN_+`o}uyt*oTk@Uj7rgGF7q#>Uz1J$A$XsQJ`BH z81r&d?6x$}Y5pltqpTNoy*L_58sRdPf1VAP`NQz8?;!F1;R2QEud`I~roJHNFshi& zlp~nXfCL@hS~WJOFIPin#a~s82YLvKRizRTfJoc#DQ>k!tWcrl7=uM|;)I;~idR22 zUpCjfoomBvk&d*yO{mtBC)+M0a;;+y8ChwiwKYy}xsN^Kr|ht%q?}W!2YJLo3mc5= z61$~q;XtzMj<>7}W)XHGjUbDk1&bDflzDZ{IhDj+Rllq0lsD@*pxl`CSNv|pxn}@m zOqEP6Ox^#DjLaulF@SqFlv-N0)&C`r*xQAU(#Aq^Qf<_a;(0Bai_F@W*DTOR8>&Ts>)a*eRPk06)v8l)?{1La3Nw{Cd$>I z0GEBP)aag~rC~&!r9~jTg~cp<-;M|L1oL912V>21HS7|Sp3X&Dvv!sn;Fi_CzkSz- zB8do&7L;BPAN>7I!1+Y->Q|o}#^r897zzf_Fqo1{x=prGstxzjB_8`SDy(9v%T5$c zf8X=r3%GagT{=I%PaOBLbwS_?nH;A9k3Z=dTj!+eVJ}vRT zn-lS}%4z4ET2Ir9HYbkycluB8U;Dq;E_8d$$@YJF8)fRBK1!!-Cto2*>4D_G~ct{1Tl>?QPOkRy~(&l$uRIRq{S#Z2rt#H zRQnh(^eIEag2G^~ocof)n5YDR?Q{$os%=G0ta+X#eKhjRe7~_7Y*FlAf5eN`EkgOB zzFQD~jVX+U!tE972|9_5;m^ubkB043S76}BWcGRA368;|BDybYKHq+OUbWkOLu=U> zd&NC#a_UTf7F>OgSrzViHC}yZS$&r~d)L@Y_*Bpc4fOD3r*zz3-VDwHDj4_oPMxW* ze`P&mLgj=yZZ4@yBA;C+9PB#-o|7_w*w8YM2lQ~NI2DxrddJSFYkv2|(N~4D_poQ- zJzrr(_O4#Cs|!W<2TD?*iC*D>hteWfxlc#~-l=f`1dcOY_ zy82&r|2(q9&+D${PGhx|dR}W4E#(VJ<>yy5no3UDv=*vzMK5g#$hth-Ne}L+@EPq&%*}(bJ46Bh$a>zcGtliAykW%4Jf8DH*CXD@e@s z_zHe&G{F#sz5AXbs#Gi$j0}#n3S?_%?spk(Xz{IOUUQ+o_I-8MEj$KU$-P?Z-sLKT z8=qSE>a5n2YFD&1HbJMdZdGL~=boD*l}-z4&El>&V1Q+A9)waE@Wk&D)#2`zZw0&> z>6Y;?t7*MgSB|z1s7-%fAXzhY;eBr_shpHvJ4Th~Iyi<~bEsSfRf4e2qAI1p)629w zI2u;E`fFicWycocnrj62t{VE{s%t^~^PG#-rDrevIF(o~lrCm&Ay&In^B@AZ51lF` z6(n~C5Q8!ZUJS-uMZ$L z{ddOmn0y4VL}ts`)72fDhpR@}uF~!k$J62~Fq!ldXsDcHY971gKFW}LJ=*~kI$6&5 z|Ghppzk>4Nf49lqJ`N0n?XqW3^?6U^>g$1z=(`n@Nsi$PPc1i2f6+FuI#PgeR28!z zoa;o{(A>vKV|7w;mXE-a1MS2eECMn4Tjd{~vaJ|}8*B|bAAIXoxq9<`W`yjK3d9oc zkq+@v4fm-sT=P2<-caLpVts=NTxCEKR0XQ)3$Aa+hGHGL7eG*l$?>Rv88r_DTg_R{|w5tMhvKTzxgR9rW zjk8XFVH6Yuq4#O}6P#gtwfcC0TbKx5@Hk`}gM@h1jy)k(SO25#C$!B-iZyD0Phk?y zJ_aK$E0`!}5c(lBJQ>wtKX=^^zuc)lY58NzDmcusv>2fp_9CHcGElCN7xG0jF&hyN z%^EF??XwxQTby${U&t!8=t&4_6vh2kC~TiDRJ&s3lp5q}9e&-hNxV*xDC7(I#bj?L zRTI?1>7sH>*DVAdv=KeJQxHEuL+~NT(8t*+1?>j5kL`4XMjle2P?x|S2U4d{H+=OU z-HXVn5xW51a=&$ifZO{Kn{#x*@y;8(qadLs{y3LBN)@HdRzGHxnG#kN9qMKXmhvoW zlZvtGb@1~yc@Ak#A4r`ORF21@H!&`ZNytG}b)2g+(Z%kX+!lh(i*xO)s%s z>i}#5Ymb(9f-WDnIZXw7A;&6BoMtcY4Z)or){|j?OKPDGchQ7VVUNo!*<48u$!5`s z&hi}r2~ww?jHWoLC(K@Xyy#w80f!hP8nFo4sM5%6Rb>1as`&>kO_CnEN^mvA8|%mt zt#y8pU%y`}>DV8=xeS07ralD}7dYj~1rA>HONAPXB(i^22Eq(Jg~ z4Ste`fzpb4%qx)IGV)vU!?z$p$>pri&MIO*!gs`K&>m*`RS@NznuQp~uNYuSC{M|L z5n+iZNQmwQr6mkS6f1fUf6=O>fzA8-XO;*%v{5PB%A#N=;T7OlSr`uKV3w#ZQmNu! ziLzN_aHh~Rq8RT%NQjOVGo#RD1H~N6FXvD$Zyj}i7;aZFE%z?}L^Rg)&Ma>rpBZ1s z3Oy;eU$gRFa3fdVfmaZ*c>S(uiQ4M7VZ89!?fPo5ycgb85fr~p}5YjbBZm|9WfJ+tsb zSyeA7`81XG*in!1xbz5cf}ZIo!FSW+XZ5wbhIp)uFhUM^*bWn_apy?9!J^RQ19<2kCGI zXX)@d!dieBm2uW#h3mA9a6qDlu9b~O8T`+Yndin}aka+a-@Wi=r|BxFD`z~lHg2dH^<+(G ziJ^P| z+Lta{yfbnoRG496x`E2PTyUW(`ya33-)w%=6;B3RDC&Q<&kBPcE9lNf#ny#w!&zj- zasB{Zwg@G(%SB!N8T-wNzD(VO$X}#JUvpoN_O*k9IyGL!l~S&tr2VBGk`(KmiRZ@4 zUrrt|Ys$=vw#^GGwyJ1+6Du*il_%d^3sUsud3&@}N!xec{4YuFGY3Z}lWkm)mya^{ zt#A1;MK6~{tw)(T3p>&Z! ziMT-tAdkGN5-O8oDBs({8MV7`LomM*r^u`J4Pbc{l-XH$WGcslQZSkJ?xd;0-|+02 zMc^0BiktYnRz;2%ERjMGlj2Ggdk?>YjXF`YNWJlCQ~vVx+~+G+7fCmW1iR}{yaixi zlqvHdotm}RfNr)1Jjwlj__gWoIz!meSfH#bL8N5bMZ?%Ho+H){Z$ao`(>{Btas`i0 z)R<4b4W2g){=|8FJu5o);7P4IwH8!_oAGGh*b{Ko&-6iSjHAclM(jF7_ImLSKGx>- ziGQnMc%rESe^0QjVMlNkuKi*IuLy{X4-pfu1U|M<+%dQf@$$&xs(Skqn_CW-gJ8b; zvya1MO~NGFV^+c$&``J_NDA0^i6AskMIi4i5hy{mW@bw)R!$Hqi7^`P_eMhKQMuZE z=k{(JBr#vmn0+}NU=~`oRuHDfF&IN>+vs^15+0ZKg_c^E(0l8P0~=sRd;{W2O{=cC z@)N$_h<(}6eR|ZYC8({v`JR5Q#wI!yj_(^Xy2+Oe!oD}DdyBEedt##{w_wN>h3$f< z;{MaXMEk{p{!>vv4swo5I19{Sp#9k=SrH4yVzHzSMK5WjR?K=hR+h{DoPivv(+u3k z&$KY#l>gCAXHAQ-)Hf-q%P0YD^or_A$*v+^#13^~qlmw6_Gh@@Z05vBPwD!oe&MOL zELg||sQ)4fJBF=f?6(NKP)slIDenJ1y8yNS(o%oDEOE-ov{#LL4X+sZ=Dlp$Jim;< zboZ{c2rt0-=p_~r&>bUfA>}p9lI#9sh2ChwG7p`-P;h6GTp@x7Ivfp{LM*yVRi9s3 z_I8jU7GLGuEzy{#`1PZqWE06WrY=xCAG- zySuvvmxH_8!R_F3mjCWvY}HmxP1SobQ*+Vtc2Cc*p9gn`3ccAtr)(69iC3aQihr_i z1;sXr)}Vz`cO0WK%vQpt#VvtTiE`J?Q6y;os~mb)dDKkR^&uuxc^FswHgB_Wf`4mI>yQH<^C;5`@mg<`2eDtelvJM_bVMcH`I!lY=hx0 z{A~l9oth&*tk;TSAxwbQF9v?MH1$Kbbj5wM$S$@ChsQ#O@VLUlOkv8$>6~7~pSu$B z0V$=lbU*4bd@?xL(FW#ssMNBo)1uNo4W!0NVdlS9&dB#w&Q(b2vdX65gwrlMZu`Si z8vzqu*bDO3s-3x(^9@KEa24hFu*NzZ{b@4Y6n$F$oht27DauhA&dO>uqwMSpO#R=DUl%$-#0%=#^pKWVnOa&9&%pj?h2C;nw(uq-M9fza z#r#PAUVGn$K5Zk0M#S>(>N*hu;j#34B~I|u^iQ#!ECug11I0ky-BUp>q6-~xC;|j? zCsMGuMD)EWEeZW6o2WgtfvLPC#4AZsHgj)u8^nnKD5yk-;Tr7^g?Lq%_1#?u2!*)_P+>-E4Ikj2EcCIxczSP(Zy0ZTT3c<)??`V`ZjBzN^qo9z1D>~!bjXL5 zc)`t;Ji+%Bp4B`R3or8vJADX`I$hTFD@f)QYU;hmO(A>ccIdu_`;IyMAul%84IJf{ zoXMeMMjVYz&XyK-G_qG?LU~_NJbqlph>RD4@w7GVlMmb5D8I|?A z+Fd?yKuWm_FP2qhRJrSBgc`9aAkmuHOqukPl_Wl3p>ALyi~1F0FyaHwbZ;>y8d za-UFTvN0o*M}>#Wf0xxM@NQ$cHPQLML&hxoeckca?t4kbcl~c**3I&P>ECj4u=0LT zQ(*Nl9N6RzZoFWpZniY}zAff{&$s2z)VhqtZSjN+?U{Gp?6w`F794c5FPbjC&{1Eo z7ZKLni-QUFP`k@DM(G7G=hkAP1e|eNy<2>5EZ_ zFaa;Q=V5@afCtD=qT$;SvPPdf;(FhyUdXJd)E`~~#AxpNm)>{?wIfi*v-$5yaauBu zQG=@)L-hHu`$e%ux3G=eOM(AbqrV{sd5^|SueITcIT^};VeFw4+iVLREdFh zOCycPdf`w`;r9*Xc$uI$W*IR6x)UTY%RSHbOf+6_fq2*yC0%_=Np|t=|MoB}LL|BY z5oR>4zH9giYG?0jg}pmT!e!?v{xrP|E@NVVhQr>*K-SKF1Mg;7 z4(EpP3@_nvSzyrQ`H8-~j?0XIo~0Fexio1>*WI-8G~KyQ_C88;=cX#;nvs0(+nNw$-LBoB3L}a?hvPsu}&2sD5e=P4s-K2kKIO#btI7P)gWiJao z&)iUrCnS}0;N4WLv9TVicuUR`9Q!?-632S$B#AJpOj0&OluGw>v%R`c9T(#OmAyy< zgZ>x?)4j>VjmgeXq8LM)%}l!rESCZi^kpUt&l&HphTbJB@ThO+ZW|I6%t8Ao06l`ylrOw8ho_f1bcVRCiny)&5J zq8R3p=NSOX&m33r974~IjN)s7<~OL_eNgfBF9wu$Vb;iv7KA}^$8`60_l1sxj+?%S z+;#I!8O|?5Nw|uYxU5-z)I4s*R~e49cdRde2FC_x2aR?)b}QZEQ^h=%JVrf`a!Xqf zDo`jlYp$@B*G+#WW@CHf6&8;a5-8Tkd$!6I;>QrgobeiU81gqhhg_uqj)vwd7|qPl ztB!@ibartdz1{ZP_WTd8f5<HwW05i@RwP6eko|puEyc}%oq-uox`y_zJxXb) z={@^F1*zjc=HZ}|8>{-saA1j}l%UfX2mFUP!b18@7QM76>@O{uC}u+6%z6JSUdkDrVmOjnnm9k-b^Z%hL-!|Fjl&PI2zScl@+* zAo8Yrqru+Mkk@~Sj+Ge_Qx0b7sLPwWl)-upRV>A2_VN0+wOvmq3xqON;0pN2{NsM> zF3NLyh=`Esx27vfDPviIG&(V<%ae2!8ZTTDVbzCTl$C_|l^btgzGBIRkg&5J-y2Cx zT!utoN%}#A-Ub%4AxDb*N3jA1D_8SZ6m�xAWc8SUC94&Tk`cT3EsT<#dvU?cnMa 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≻ajpkM7q`&ah}eelh8_~z*{ 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�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

Q3+SRRcS%2(+)|7 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 x;6H#s<9Tn}2z)tfg!iqkP`vV4e%rlucZ> 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